Skip to content

Commit 0730f5f

Browse files
feat!: extract dev logic into new @netlify/functions-dev package (#475)
BREAKING CHANGE: The `/dev` export, introduced in version 3.1.0, has been removed. The local development functionality has been extracted into a new `@netlify/functions-dev` package. If your application relies on that logic, you should `npm install @netlify/functions-dev` and update your import: ```diff -import { FunctionsHandler } from "@netlify/functions/dev" +import { FunctionsHandler } from "@netlify/functions-dev" ``` No other changes are needed.
1 parent ef34aad commit 0730f5f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+262
-112
lines changed

.github/workflows/release-please.yaml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,24 @@ jobs:
119119
env:
120120
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
121121
- if:
122-
${{ steps.release.outputs['packages/functions--release_created'] || github.event_name == 'workflow_dispatch'
123-
}}
122+
${{ steps.release.outputs['packages/functions/prod--release_created'] || github.event_name ==
123+
'workflow_dispatch' }}
124+
run: |
125+
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
126+
npm publish packages/functions/prod/ --provenance --access=public || true
127+
else
128+
npm publish packages/functions/prod/ --provenance --access=public
129+
fi
130+
env:
131+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
132+
- if:
133+
${{ steps.release.outputs['packages/functions/dev--release_created'] || github.event_name ==
134+
'workflow_dispatch' }}
124135
run: |
125136
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
126-
npm publish packages/functions/ --provenance --access=public || true
137+
npm publish packages/functions/dev/ --provenance --access=public || true
127138
else
128-
npm publish packages/functions/ --provenance --access=public
139+
npm publish packages/functions/dev/ --provenance --access=public
129140
fi
130141
env:
131142
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}

.release-please-manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"packages/dev": "4.6.0",
66
"packages/dev-utils": "4.3.0",
77
"packages/edge-functions": "2.19.0",
8-
"packages/functions": "4.3.0",
8+
"packages/functions/prod": "4.3.0",
9+
"packages/functions/dev": "0.0.0",
910
"packages/headers": "2.1.0",
1011
"packages/images": "1.3.0",
1112
"packages/nuxt-module": "0.2.0",

eslint_temporary_suppressions.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -363,13 +363,13 @@ export default [
363363
},
364364
},
365365
{
366-
files: ['packages/functions/dev/events.ts'],
366+
files: ['packages/functions/dev/src/events.ts'],
367367
rules: {
368368
'@typescript-eslint/no-empty-object-type': 'off',
369369
},
370370
},
371371
{
372-
files: ['packages/functions/dev/function.ts'],
372+
files: ['packages/functions/dev/src/function.ts'],
373373
rules: {
374374
'@typescript-eslint/no-explicit-any': 'off',
375375
'@typescript-eslint/no-unsafe-assignment': 'off',
@@ -382,14 +382,14 @@ export default [
382382
},
383383
},
384384
{
385-
files: ['packages/functions/dev/main.test.ts'],
385+
files: ['packages/functions/dev/src/main.test.ts'],
386386
rules: {
387387
'@typescript-eslint/no-non-null-assertion': 'off',
388388
'@typescript-eslint/no-unnecessary-condition': 'off',
389389
},
390390
},
391391
{
392-
files: ['packages/functions/dev/main.ts'],
392+
files: ['packages/functions/dev/src/main.ts'],
393393
rules: {
394394
'@typescript-eslint/prefer-nullish-coalescing': 'off',
395395
'@typescript-eslint/no-misused-spread': 'off',
@@ -398,7 +398,7 @@ export default [
398398
},
399399
},
400400
{
401-
files: ['packages/functions/dev/registry.ts'],
401+
files: ['packages/functions/dev/src/registry.ts'],
402402
rules: {
403403
'@typescript-eslint/no-explicit-any': 'off',
404404
'@typescript-eslint/no-unsafe-assignment': 'off',
@@ -412,14 +412,14 @@ export default [
412412
},
413413
},
414414
{
415-
files: ['packages/functions/dev/runtimes/index.ts'],
415+
files: ['packages/functions/dev/src/runtimes/index.ts'],
416416
rules: {
417417
'@typescript-eslint/no-unused-vars': 'off',
418418
'@typescript-eslint/no-explicit-any': 'off',
419419
},
420420
},
421421
{
422-
files: ['packages/functions/dev/runtimes/nodejs/builder.ts'],
422+
files: ['packages/functions/dev/src/runtimes/nodejs/builder.ts'],
423423
rules: {
424424
'@typescript-eslint/no-unused-vars': 'off',
425425
'n/no-missing-import': 'off',
@@ -431,13 +431,13 @@ export default [
431431
},
432432
},
433433
{
434-
files: ['packages/functions/dev/runtimes/nodejs/config.ts'],
434+
files: ['packages/functions/dev/src/runtimes/nodejs/config.ts'],
435435
rules: {
436436
'@typescript-eslint/prefer-reduce-type-parameter': 'off',
437437
},
438438
},
439439
{
440-
files: ['packages/functions/dev/runtimes/nodejs/index.ts'],
440+
files: ['packages/functions/dev/src/runtimes/nodejs/index.ts'],
441441
rules: {
442442
'@typescript-eslint/no-unsafe-member-access': 'off',
443443
'@typescript-eslint/no-unsafe-assignment': 'off',
@@ -447,40 +447,40 @@ export default [
447447
},
448448
},
449449
{
450-
files: ['packages/functions/dev/runtimes/nodejs/lambda.ts'],
450+
files: ['packages/functions/dev/src/runtimes/nodejs/lambda.ts'],
451451
rules: {
452452
'@typescript-eslint/no-unnecessary-condition': 'off',
453453
'@typescript-eslint/require-await': 'off',
454454
},
455455
},
456456
{
457-
files: ['packages/functions/internal.d.ts'],
457+
files: ['packages/functions/prod/internal.d.ts'],
458458
rules: {
459459
'n/no-missing-import': 'off',
460460
},
461461
},
462462
{
463-
files: ['packages/functions/src/function/handler.ts'],
463+
files: ['packages/functions/prod/src/function/handler.ts'],
464464
rules: {
465465
'@typescript-eslint/prefer-function-type': 'off',
466466
'@typescript-eslint/no-explicit-any': 'off',
467467
'@typescript-eslint/no-invalid-void-type': 'off',
468468
},
469469
},
470470
{
471-
files: ['packages/functions/src/function/handler_context.ts'],
471+
files: ['packages/functions/prod/src/function/handler_context.ts'],
472472
rules: {
473473
'@typescript-eslint/no-explicit-any': 'off',
474474
},
475475
},
476476
{
477-
files: ['packages/functions/src/function/handler_response.ts'],
477+
files: ['packages/functions/prod/src/function/handler_response.ts'],
478478
rules: {
479479
'@typescript-eslint/no-explicit-any': 'off',
480480
},
481481
},
482482
{
483-
files: ['packages/functions/src/lib/builder.test.ts'],
483+
files: ['packages/functions/prod/src/lib/builder.test.ts'],
484484
rules: {
485485
'n/no-missing-import': 'off',
486486
'@typescript-eslint/no-unsafe-assignment': 'off',
@@ -490,51 +490,51 @@ export default [
490490
},
491491
},
492492
{
493-
files: ['packages/functions/src/lib/builder.ts'],
493+
files: ['packages/functions/prod/src/lib/builder.ts'],
494494
rules: {
495495
'@typescript-eslint/no-unnecessary-condition': 'off',
496496
'@typescript-eslint/prefer-nullish-coalescing': 'off',
497497
'@typescript-eslint/no-confusing-void-expression': 'off',
498498
},
499499
},
500500
{
501-
files: ['packages/functions/src/lib/purge_cache.test.ts'],
501+
files: ['packages/functions/prod/src/lib/purge_cache.test.ts'],
502502
rules: {
503503
'n/no-missing-import': 'off',
504504
'@typescript-eslint/no-unsafe-assignment': 'off',
505505
'@typescript-eslint/no-unsafe-member-access': 'off',
506506
},
507507
},
508508
{
509-
files: ['packages/functions/src/lib/purge_cache.ts'],
509+
files: ['packages/functions/prod/src/lib/purge_cache.ts'],
510510
rules: {
511511
'@typescript-eslint/no-unnecessary-condition': 'off',
512512
'@typescript-eslint/prefer-nullish-coalescing': 'off',
513513
'@typescript-eslint/restrict-template-expressions': 'off',
514514
},
515515
},
516516
{
517-
files: ['packages/functions/src/lib/schedule.ts'],
517+
files: ['packages/functions/prod/src/lib/schedule.ts'],
518518
rules: {
519519
'@typescript-eslint/no-unused-vars': 'off',
520520
},
521521
},
522522
{
523-
files: ['packages/functions/src/lib/system_logger.test.ts'],
523+
files: ['packages/functions/prod/src/lib/system_logger.test.ts'],
524524
rules: {
525525
'@typescript-eslint/no-unsafe-assignment': 'off',
526526
'@typescript-eslint/no-unsafe-member-access': 'off',
527527
'@typescript-eslint/no-unsafe-call': 'off',
528528
},
529529
},
530530
{
531-
files: ['packages/functions/src/lib/system_logger.ts'],
531+
files: ['packages/functions/prod/src/lib/system_logger.ts'],
532532
rules: {
533533
'@typescript-eslint/no-unnecessary-condition': 'off',
534534
},
535535
},
536536
{
537-
files: ['packages/functions/test/types/Handler.test-d.ts'],
537+
files: ['packages/functions/prod/test/types/Handler.test-d.ts'],
538538
rules: {
539539
'@typescript-eslint/no-unused-vars': 'off',
540540
},

package-lock.json

Lines changed: 56 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"packages/blobs",
1010
"packages/cache",
1111
"packages/edge-functions",
12-
"packages/functions",
12+
"packages/functions/prod",
13+
"packages/functions/dev",
1314
"packages/headers",
1415
"packages/images",
1516
"packages/redirects",

packages/dev/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"@netlify/config": "^23.2.0",
5757
"@netlify/dev-utils": "4.3.0",
5858
"@netlify/edge-functions": "2.19.0",
59-
"@netlify/functions": "4.3.0",
59+
"@netlify/functions-dev": "0.0.0",
6060
"@netlify/headers": "2.1.0",
6161
"@netlify/images": "1.3.0",
6262
"@netlify/redirects": "3.1.0",

packages/dev/src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
HTTPServer,
1515
} from '@netlify/dev-utils'
1616
import { EdgeFunctionsHandler } from '@netlify/edge-functions/dev'
17-
import { FunctionsHandler } from '@netlify/functions/dev'
17+
import { FunctionsHandler } from '@netlify/functions-dev'
1818
import { HeadersHandler, type HeadersCollector } from '@netlify/headers'
1919
import { ImageHandler } from '@netlify/images'
2020
import { RedirectsHandler } from '@netlify/redirects'

packages/functions/.gitignore

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
dist
2-
dist-dev
3-
node_modules
1+
dist/
2+
node_modules/

0 commit comments

Comments
 (0)