From e7e8c0f0b22f6327ff96502cda7429433460718c Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Thu, 28 May 2026 10:24:01 +0100 Subject: [PATCH 1/5] feat: add notice for Lambda compatibility deprecation --- eslint_temporary_suppressions.js | 6 ++ packages/build/src/core/build.ts | 1 + .../log/messages/lambda_compat_deprecation.ts | 92 +++++++++++++++++++ .../build/src/plugins_core/functions/index.ts | 10 ++ packages/build/src/steps/core_step.ts | 2 + packages/build/src/steps/run_step.ts | 2 + packages/build/src/steps/run_steps.js | 2 + 7 files changed, 115 insertions(+) create mode 100644 packages/build/src/log/messages/lambda_compat_deprecation.ts diff --git a/eslint_temporary_suppressions.js b/eslint_temporary_suppressions.js index 2ed0c0edec..935d9de79c 100644 --- a/eslint_temporary_suppressions.js +++ b/eslint_temporary_suppressions.js @@ -707,6 +707,12 @@ export default [ 'n/no-missing-import': 'off', }, }, + { + files: ['packages/build/src/log/messages/lambda_compat_deprecation.ts'], + rules: { + 'n/no-missing-import': 'off', + }, + }, { files: ['packages/build/src/log/messages/mutations.js'], rules: { diff --git a/packages/build/src/core/build.ts b/packages/build/src/core/build.ts index 2a43602e87..95f98474d2 100644 --- a/packages/build/src/core/build.ts +++ b/packages/build/src/core/build.ts @@ -704,6 +704,7 @@ const runBuild = async function ({ explicitSecretKeys, enhancedSecretScan, edgeFunctionsBootstrapURL, + pluginsOptions, }) return { diff --git a/packages/build/src/log/messages/lambda_compat_deprecation.ts b/packages/build/src/log/messages/lambda_compat_deprecation.ts new file mode 100644 index 0000000000..c852b1fbdd --- /dev/null +++ b/packages/build/src/log/messages/lambda_compat_deprecation.ts @@ -0,0 +1,92 @@ +import path from "path"; + +import type { FunctionResult } from "@netlify/zip-it-and-ship-it"; +import semver from "semver"; + +import type { PluginsOptions } from "../../plugins/node_version.js"; +import { isRuntime } from "../../utils/runtime.js"; +import { log, logArray, logWarningSubHeader, type Logs } from "../logger.js"; + +const LEGACY_NEXTJS_RUNTIME_RANGE = "4.x"; + +interface LegacyNextjsRuntime { + name: string; + version: string; +} + +const detectLegacyNextjsRuntime = (pluginsOptions: PluginsOptions[] | undefined): LegacyNextjsRuntime | null => { + const runtime = pluginsOptions?.find(isRuntime); + const version: unknown = runtime?.pluginPackageJson?.version; + + if (runtime && typeof version === "string" && semver.satisfies(version, LEGACY_NEXTJS_RUNTIME_RANGE)) { + return { name: runtime.packageName, version }; + } + + return null; +}; + +interface LogLambdaCompatibilityDeprecationOptions { + logs: Logs | undefined; + results: FunctionResult[]; + functionsSrc: string | undefined; + pluginsOptions: PluginsOptions[] | undefined; +} + +/** + * Warns about JavaScript/TypeScript functions still using Lambda compatibility + * mode (V1) after bundling. Functions are split into two buckets — ones from + * the user's own repository and ones generated by frameworks — because the + * action the user can take differs. + */ +export const logLambdaCompatibilityDeprecation = ({ + logs, + results, + functionsSrc, + pluginsOptions, +}: LogLambdaCompatibilityDeprecationOptions): void => { + // Lambda compatibility mode only exists for JavaScript/TypeScript functions. + // Go functions are intentionally not flagged — they remain Lambda-style and + // are not affected by the V1 deprecation. + const v1JsFunctions = results.filter((result) => result.runtime === "js" && result.runtimeAPIVersion !== 2); + + if (v1JsFunctions.length === 0) { + return; + } + + const userFns: string[] = []; + const generatedFns: string[] = []; + + for (const fn of v1JsFunctions) { + if (functionsSrc && fn.mainFile.startsWith(`${functionsSrc}${path.sep}`)) { + userFns.push(fn.name); + } else { + generatedFns.push(fn.name); + } + } + + logWarningSubHeader( + logs, + "Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.", + ); + + if (userFns.length > 0) { + log(logs, "\n These functions in your project use Lambda compatibility mode:"); + logArray(logs, userFns); + log(logs, "\n Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate."); + } + + if (generatedFns.length > 0) { + log(logs, "\n These functions were generated by a framework adapter and use Lambda compatibility mode:"); + logArray(logs, generatedFns); + + const legacyNextjsRuntime = detectLegacyNextjsRuntime(pluginsOptions); + if (legacyNextjsRuntime) { + log( + logs, + `\n Your project is using ${legacyNextjsRuntime.name} v${legacyNextjsRuntime.version}. Upgrade to the latest Netlify Next.js Adapter to emit modern Netlify Functions. Refer to https://ntl.fyi/nextjs-adapter-upgrade for upgrade guidance.`, + ); + } else { + log(logs, "\n Update the framework adapter to a version that emits modern Netlify Functions."); + } + } +}; diff --git a/packages/build/src/plugins_core/functions/index.ts b/packages/build/src/plugins_core/functions/index.ts index 34f80ebe6f..3dd7414ac4 100644 --- a/packages/build/src/plugins_core/functions/index.ts +++ b/packages/build/src/plugins_core/functions/index.ts @@ -7,6 +7,7 @@ import { addErrorInfo } from '../../error/info.js' import { log } from '../../log/logger.js' import { type GeneratedFunction, getGeneratedFunctions } from '../../steps/return_values.js' import { logBundleResults, logFunctionsNonExistingDir, logFunctionsToBundle } from '../../log/messages/core_steps.js' +import { logLambdaCompatibilityDeprecation } from '../../log/messages/lambda_compat_deprecation.js' import { FRAMEWORKS_API_FUNCTIONS_PATH } from '../../utils/frameworks_api.js' import { getZipError } from './error.js' @@ -77,6 +78,7 @@ const zipFunctionsAndLogResults = async ({ repositoryRoot, userNodeVersion, systemLog, + pluginsOptions, }) => { const zisiParameters = getZisiParameters({ branch, @@ -115,6 +117,12 @@ const zipFunctionsAndLogResults = async ({ const bundlers = Array.from(getBundlers(results)) logBundleResults({ logs, results }) + logLambdaCompatibilityDeprecation({ + logs, + results, + functionsSrc, + pluginsOptions, + }) return { bundlers } } catch (error) { @@ -142,6 +150,7 @@ const coreStep = async function ({ userNodeVersion, systemLog, returnValues, + pluginsOptions, }) { const functionsSrc = relativeFunctionsSrc === undefined ? undefined : resolve(buildDir, relativeFunctionsSrc) const functionsDist = resolve(buildDir, relativeFunctionsDist) @@ -206,6 +215,7 @@ const coreStep = async function ({ userNodeVersion, systemLog, generatedFunctions: generatedFunctions.map((func) => func.path), + pluginsOptions, }) const metrics = getMetrics(internalFunctions, userFunctions) diff --git a/packages/build/src/steps/core_step.ts b/packages/build/src/steps/core_step.ts index e037783dd5..e29c7f089e 100644 --- a/packages/build/src/steps/core_step.ts +++ b/packages/build/src/steps/core_step.ts @@ -44,6 +44,7 @@ export const fireCoreStep = async function ({ outputFlusher, api, returnValues, + pluginsOptions, }) { const logsA = outputFlusher ? addOutputFlusher(logs, outputFlusher) : logs @@ -87,6 +88,7 @@ export const fireCoreStep = async function ({ edgeFunctionsBootstrapURL, deployId, returnValues, + pluginsOptions, }) const { netlifyConfig: netlifyConfigA, diff --git a/packages/build/src/steps/run_step.ts b/packages/build/src/steps/run_step.ts index 53c6c8c5b4..6199252a03 100644 --- a/packages/build/src/steps/run_step.ts +++ b/packages/build/src/steps/run_step.ts @@ -367,6 +367,7 @@ const tFireStep = function ({ extensionMetadata, api, returnValues, + pluginsOptions, }) { if (coreStep !== undefined) { return fireCoreStep({ @@ -408,6 +409,7 @@ const tFireStep = function ({ deployId, api, returnValues, + pluginsOptions, }) } diff --git a/packages/build/src/steps/run_steps.js b/packages/build/src/steps/run_steps.js index 50a012dcc8..aa77b8c2c2 100644 --- a/packages/build/src/steps/run_steps.js +++ b/packages/build/src/steps/run_steps.js @@ -47,6 +47,7 @@ export const runSteps = async function ({ explicitSecretKeys, enhancedSecretScan, edgeFunctionsBootstrapURL, + pluginsOptions, }) { const { index: stepsCount, @@ -164,6 +165,7 @@ export const runSteps = async function ({ explicitSecretKeys, enhancedSecretScan, edgeFunctionsBootstrapURL, + pluginsOptions, }) const statusesA = addStatus({ newStatus, statuses, event, packageName, pluginPackageJson }) From 85c43c9893cd0d65b6c11f67d180ed2b0427303e Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Thu, 28 May 2026 10:30:17 +0100 Subject: [PATCH 2/5] fmt --- .../log/messages/lambda_compat_deprecation.ts | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/packages/build/src/log/messages/lambda_compat_deprecation.ts b/packages/build/src/log/messages/lambda_compat_deprecation.ts index c852b1fbdd..006ddd516f 100644 --- a/packages/build/src/log/messages/lambda_compat_deprecation.ts +++ b/packages/build/src/log/messages/lambda_compat_deprecation.ts @@ -1,35 +1,35 @@ -import path from "path"; +import path from 'path' -import type { FunctionResult } from "@netlify/zip-it-and-ship-it"; -import semver from "semver"; +import type { FunctionResult } from '@netlify/zip-it-and-ship-it' +import semver from 'semver' -import type { PluginsOptions } from "../../plugins/node_version.js"; -import { isRuntime } from "../../utils/runtime.js"; -import { log, logArray, logWarningSubHeader, type Logs } from "../logger.js"; +import type { PluginsOptions } from '../../plugins/node_version.js' +import { isRuntime } from '../../utils/runtime.js' +import { log, logArray, logWarningSubHeader, type Logs } from '../logger.js' -const LEGACY_NEXTJS_RUNTIME_RANGE = "4.x"; +const LEGACY_NEXTJS_RUNTIME_RANGE = '4.x' interface LegacyNextjsRuntime { - name: string; - version: string; + name: string + version: string } const detectLegacyNextjsRuntime = (pluginsOptions: PluginsOptions[] | undefined): LegacyNextjsRuntime | null => { - const runtime = pluginsOptions?.find(isRuntime); - const version: unknown = runtime?.pluginPackageJson?.version; + const runtime = pluginsOptions?.find(isRuntime) + const version: unknown = runtime?.pluginPackageJson?.version - if (runtime && typeof version === "string" && semver.satisfies(version, LEGACY_NEXTJS_RUNTIME_RANGE)) { - return { name: runtime.packageName, version }; + if (runtime && typeof version === 'string' && semver.satisfies(version, LEGACY_NEXTJS_RUNTIME_RANGE)) { + return { name: runtime.packageName, version } } - return null; -}; + return null +} interface LogLambdaCompatibilityDeprecationOptions { - logs: Logs | undefined; - results: FunctionResult[]; - functionsSrc: string | undefined; - pluginsOptions: PluginsOptions[] | undefined; + logs: Logs | undefined + results: FunctionResult[] + functionsSrc: string | undefined + pluginsOptions: PluginsOptions[] | undefined } /** @@ -47,46 +47,46 @@ export const logLambdaCompatibilityDeprecation = ({ // Lambda compatibility mode only exists for JavaScript/TypeScript functions. // Go functions are intentionally not flagged — they remain Lambda-style and // are not affected by the V1 deprecation. - const v1JsFunctions = results.filter((result) => result.runtime === "js" && result.runtimeAPIVersion !== 2); + const v1JsFunctions = results.filter((result) => result.runtime === 'js' && result.runtimeAPIVersion !== 2) if (v1JsFunctions.length === 0) { - return; + return } - const userFns: string[] = []; - const generatedFns: string[] = []; + const userFns: string[] = [] + const generatedFns: string[] = [] for (const fn of v1JsFunctions) { if (functionsSrc && fn.mainFile.startsWith(`${functionsSrc}${path.sep}`)) { - userFns.push(fn.name); + userFns.push(fn.name) } else { - generatedFns.push(fn.name); + generatedFns.push(fn.name) } } logWarningSubHeader( logs, - "Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.", - ); + 'Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.', + ) if (userFns.length > 0) { - log(logs, "\n These functions in your project use Lambda compatibility mode:"); - logArray(logs, userFns); - log(logs, "\n Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate."); + log(logs, '\n These functions in your project use Lambda compatibility mode:') + logArray(logs, userFns) + log(logs, '\n Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.') } if (generatedFns.length > 0) { - log(logs, "\n These functions were generated by a framework adapter and use Lambda compatibility mode:"); - logArray(logs, generatedFns); + log(logs, '\n These functions were generated by a framework adapter and use Lambda compatibility mode:') + logArray(logs, generatedFns) - const legacyNextjsRuntime = detectLegacyNextjsRuntime(pluginsOptions); + const legacyNextjsRuntime = detectLegacyNextjsRuntime(pluginsOptions) if (legacyNextjsRuntime) { log( logs, `\n Your project is using ${legacyNextjsRuntime.name} v${legacyNextjsRuntime.version}. Upgrade to the latest Netlify Next.js Adapter to emit modern Netlify Functions. Refer to https://ntl.fyi/nextjs-adapter-upgrade for upgrade guidance.`, - ); + ) } else { - log(logs, "\n Update the framework adapter to a version that emits modern Netlify Functions."); + log(logs, '\n Update the framework adapter to a version that emits modern Netlify Functions.') } } -}; +} From bab13ba45afc653bec5f02b095e8e54d2ffced9a Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Thu, 28 May 2026 10:31:54 +0100 Subject: [PATCH 3/5] simplify --- .../build/src/log/messages/lambda_compat_deprecation.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/build/src/log/messages/lambda_compat_deprecation.ts b/packages/build/src/log/messages/lambda_compat_deprecation.ts index 006ddd516f..62acda3f78 100644 --- a/packages/build/src/log/messages/lambda_compat_deprecation.ts +++ b/packages/build/src/log/messages/lambda_compat_deprecation.ts @@ -34,9 +34,7 @@ interface LogLambdaCompatibilityDeprecationOptions { /** * Warns about JavaScript/TypeScript functions still using Lambda compatibility - * mode (V1) after bundling. Functions are split into two buckets — ones from - * the user's own repository and ones generated by frameworks — because the - * action the user can take differs. + * mode (V1) after bundling. */ export const logLambdaCompatibilityDeprecation = ({ logs, @@ -44,9 +42,6 @@ export const logLambdaCompatibilityDeprecation = ({ functionsSrc, pluginsOptions, }: LogLambdaCompatibilityDeprecationOptions): void => { - // Lambda compatibility mode only exists for JavaScript/TypeScript functions. - // Go functions are intentionally not flagged — they remain Lambda-style and - // are not affected by the V1 deprecation. const v1JsFunctions = results.filter((result) => result.runtime === 'js' && result.runtimeAPIVersion !== 2) if (v1JsFunctions.length === 0) { From 17422de5c271a8f9077d7e78839941c61a735714 Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Thu, 28 May 2026 10:44:12 +0100 Subject: [PATCH 4/5] oof --- packages/build/src/steps/run_step.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/build/src/steps/run_step.ts b/packages/build/src/steps/run_step.ts index 6199252a03..57a7fffd2e 100644 --- a/packages/build/src/steps/run_step.ts +++ b/packages/build/src/steps/run_step.ts @@ -73,6 +73,7 @@ export const runStep = async function ({ edgeFunctionsBootstrapURL, extensionMetadata, returnValues, + pluginsOptions, }) { // Add relevant attributes to the upcoming span context const attributes: StepExecutionAttributes = { @@ -195,6 +196,7 @@ export const runStep = async function ({ api, returnValues, deployEnvVars, + pluginsOptions, }) const newValues = await getStepReturn({ From 89169834146b055b4e664cb9dd217bc282eb1c41 Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Thu, 28 May 2026 11:24:44 +0100 Subject: [PATCH 5/5] update snapshots --- .../build/tests/core/snapshots/tests.js.md | 38 ++++++++++++ .../build/tests/core/snapshots/tests.js.snap | Bin 5617 -> 5794 bytes .../tests/functions/snapshots/tests.js.md | 21 +++++++ .../tests/functions/snapshots/tests.js.snap | Bin 1230 -> 1380 bytes .../build/tests/install/snapshots/tests.js.md | 56 ++++++++++++++++++ .../tests/install/snapshots/tests.js.snap | Bin 2665 -> 2840 bytes .../build/tests/plugins/snapshots/tests.js.md | 19 ++++++ .../tests/plugins/snapshots/tests.js.snap | Bin 5893 -> 6090 bytes 8 files changed, 134 insertions(+) diff --git a/packages/build/tests/core/snapshots/tests.js.md b/packages/build/tests/core/snapshots/tests.js.md index b960cebcb0..bfc6ebffd8 100644 --- a/packages/build/tests/core/snapshots/tests.js.md +++ b/packages/build/tests/core/snapshots/tests.js.md @@ -1292,6 +1292,13 @@ Generated by [AVA](https://avajs.dev). - test.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - test␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -1761,6 +1768,14 @@ Generated by [AVA](https://avajs.dev). - function_two.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - function_one␊ + - function_two␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -1827,6 +1842,13 @@ Generated by [AVA](https://avajs.dev). - function_one.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - function_one␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -1966,6 +1988,15 @@ Generated by [AVA](https://avajs.dev). - function_with_dynamic_require.zip␊ - function_with_native.zip␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - function_simple␊ + - function_with_dynamic_require␊ + - function_with_native␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -2021,6 +2052,13 @@ Generated by [AVA](https://avajs.dev). > Failed to bundle functions with selected bundler (fallback used):␊ - function_with_module.zip␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - function_with_module␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ diff --git a/packages/build/tests/core/snapshots/tests.js.snap b/packages/build/tests/core/snapshots/tests.js.snap index 82c05655b429f21ff74d4327d3236d24683a1863..8e7fbc8e2713991b3866d9fd24d35dc682254204 100644 GIT binary patch literal 5794 zcmV;T7G3EnTlo8sT~$nL~t8 zn7)Bf^B;={00000000B+T}zB3Nm{mNrh8^QpqbI~7_^9uEgJfvw%t`d47(PLwz|sQ zT~J+B)MIy=*2oji4BOG2j>w6KtSZlHwCqZ7LI}hh=DK^~0LR@65;u-q5aPm1sI?q` z1qs0otw8a}bf%ql*;!88RUKBf+Rn^~`16m5@B8BY-B#11&NKdb`FluU;h|Q!+(Dj? zIe|X!P{F_bUDt&IK7Qlq<-)54`6*s0y#3PsHwY3QZuQE|0DCTYvb%S5J zmG%PycJzI4Pu=G|E>IVE)PbJYtCUK+zQB}l;6MVP$7!jF0QZrDTNt?ja)8J&W|VXh z5#Sgy44WR}z-Oq1Pmv2wu;`R_>WAA~_a8Uz9c^uIHY(sgWdNPRuJ56e=%Ca%Kr+zg z{^MU4EI`r_X+yw~3ozjVK^M>#kkM>xZ-G|HgKbbQyDVmXtptE}7>IoiI`jk#UL5~< z(xlWwkbI~jbSP=zcK_}k6dfR_vPItu7?cKp7WPo3losPAYQex0T!w?B2TXQV1nqjM z0RSc{fi@O^A)j(ADC+@6sQ@l!$WcEjQx7#ENByhm@n!ft;euh(HeNV!6E`;k#$-lD z$yUIT%q&3xLxN#+j7EBBoQrC}8H{;C3;S-`mtF!7#<}hcYf~+pFq3Nl27-2>z^ZnE zc7V7{>+Co1q4Ny3kt$&F^NkK7AmEs^0R&x2sC=EJ|>*v)v-`d*7N8G8p2 z8N1A@bW;vHebiY$I(*nT-2Kh^PI|3Lg)9k@AvQq{PLStSMp(_UKwGib3#~rD0)ef~ zN@}9x+yEVi21G=0MsCp8CyFx>p^JQv_WCx45pJsMGQNEBQxR3nHA#ZXEm?;Wflm7+ zSSM$$o{{EtpHVk(WXZZd(z$7`${=w%{hRy!YN&7J^sX-J-PZq=SwH}gIsg;kvL5JC z7u^Q9f-1mgm&Ex?M{_ zt!Y1{=b!z~h5jp*-UnaTt}X%aHKS^)x^k{o?o{r`C+>T&%}W3{CvGhi8(cqB6|%5a z9m-I(g-=Dm5U=_{)5E+|0>DMhpj`v9MNk4jKD+A+rSk#sb=BU+TpTg4rtYd69D9g} zZA{uoR@FU59f_FS#8Y~ISi6?MGCr4`lG?<9K7HETwu17F7~h^d*Z$Q(;jOS&~i1iK-6j`l7c4prq}{ z0!b?5bbvGswuBBELKas`2n#KXfR;|!pOu0r?<5fAb&Dv|sT<|i$*V?npbv0iT4!G1 zk)~$Gp^C+hCBqI%5SJH6L&(*yCLrY2RSO|GL5QqzRp|S?sxxIgnq<&7CZ0vhn-E#1 z2B`54It!~z$5IU-r=xpUe8`0CggPPd2L@V8W6*4zlc$F{6=fyt{!*R(@%Ov@)#_Sm z&J6r4-AMXrLNFX3$Z|}c97B|_7)LSRN>Ge%DJGXbxIy^5WR#M4wfWP_#2tGn*)Ugf z8cN#|)s&Uf64e5opCeJ7z9YxZRp~e2q2?udFom2c0}DN7BO8pc%)OAT{%caGG+hT9z}&5dgbdiZJE+<5Vt8s^mh2;zSe1o0zF5K|F^cB|!w%gqnA;Sj4HmL3-3_8jTK zE0^W!sD0#ZVm3?>C7Pg!k4oPx0kC3rMdT|r@Z`hW@`}d7m0I*oUzI6uVkWOoP&K6? z40$eQ>Z^`JSM!w`_@=6|I?m{)ydWRVo`8zOlsy?uynqiqppim8X3UBni0xb{jr%mZ z;cGa?q#ZL_#>jc%K>$`dqU#M_!(I7KgIAyGE9OEhF%4)_yJKZAhS4v|5j(~XiWy*% zUugwI;Utge&aL6+ItaRm^$U+oRdZYX5<{A;^u>}1Zp@J#d(-E69IK-o zgL{t~hxP6Hqx#|gSZh#HZ`(Lv?t@P7F# z!|@-jKd8?tjT#y#;@caI_3c^Y{>WDdw|(B;-B_PRLV6NbGKCKg=TeaNj<&ZO`}N;C zsvpb(cGPyRCWVOG3^8USw?;^-Dk@9_YHJ}FQ)v;WW=x{b$tJpZ<2IYycu)dmOX6mwBBH73}hDThC#Y&&>8QF-36+YZim z_8FmM88%l|W(;-gMP*2rv=hi>rx+&4t(k){OdlCgOvWoS-NMwk#_mEmbqUU~gGi_o z4b(XWfD#1Iu{`i&7*_r@0V{uJVdWgK;z-u$fXVkVavIVMJH&=PVj1?s7U>= z9}pt3_ak#hNB0pp!JcOh4v{fpZqjLa^hAbx{@L$mD!YG{DbydT6u$%N@-1UESzghpfUfNQ&2*|b^3EL zWaQ{rw)jjI55wcD|B-;le|puz6tK?rIdg6y=wGvogTM4+M`5i_qcMi9A~am8uRu4(GQibS3bblu9a{FyPlzDIFdK zwgfTaZ}|x#yGO!zTde>}_88I`|NQsJsH zzME?F{SXg8Ga#;qN&9?u&Q>De=rp*L2GhSM6v02(2GeC|Fr9myxNS07MqDCBoN<%s zcC5*i)}m?(ep6dO_iIMh%Q1 z89aVN$7Pblr`Pl;#AS7SI_COV?`AJa2Pvzf-%LP%!LEuv2lR)>K&Q+B$iM{ZPNToj zchQuPv?q&_PQ;M0hfVspe_ZkmyV(ZaZI>}jU30Dt=FYLHFn0YyF8js~ z*a{pGk8J56=;{U(Y|=mg8K{d1?gm}J(8mF0$c;i_qVBgS3%VT0bOYibxdsT_2%A-q z@Ds#%G#g&FuY}H}vhi*i5w}cRWghrGWun}oOk>(pUS55-|Mk7<>fQI=z4I$K&m5bo zJmsT@r{Z3|5gV;gjl-KS0LYXe$_U6%1b)BN$9&0?>7lYU3Ixt32g2Wen%Faza4- z!fRGQEQ^3Jk1V5v7-?D-5iu&V{A9!!&*mm1%*zs&j9XYRG)M_PAR%KOn z+(=CTyG<7=K!XA|v4=$ubY&kpmLuyvLk^TUC#gTwR}6KjEIO2c-v|f-tGB`0owZ-B zfPK_LOj2N|WQg!8tsbs=DwT2+pVU9VMFL_^j?gPH#!<{*Otkp&8GS1GHQ;EpsWq)+ zv~~pG5ti$t)d*!*8Y4$4gUdp`AN`j)lWao9-(?)YYZFD}zhFZ+Y5p#ZV zB<5hE$Z2DHD+O)tB+%x|7Huvl+FY!o?k(P2c)a=fG`tCWBCM>rv_NBJjfI&x!pzNb z8T$Akwm^sS*q$Qa2{GqS5}5P3#hj@y$N0SlRDG#(>O4ckJCwV~ z_h@g+jld(*`A5V-(=4cWI;e|ksv{-m?oe%6wj+>a&>Xu&L#Hiz`c?LsM5gMi7tzBP z@hL7ZKy}n5zGU#K_&CC=*NQLQE))uDg+k#A#j9@@udFi$d&Oe-?aepeEEG$HVzE$s zqged4FwhlRC=`N1q3}nALgD`kg~CeFL~wPtDZ4m}FGXM9dh4x1@h1z#R|>^93tuR{ z^i#!`3&ksM7hh>ow`YD72JXFTHi-;>??A^vz5x2aG9nIDMF9q)LmB==FPU*DA;<~8 z3PeQNL!>P_3b!SwvodTWA_h{s+C`#6-N>-L-Gjq{M_vw?7k>X@75cb(yjsdS+Kjz1RzL(8X%QZCzwd&*Kb{$#q=_Ysf)Ymurm)63Sc&Zh8&y1?AufGvx~%#|L9OqN z)lBoiP~GfrVPCPrJXc}9w;66D>Q4fx^1-QL^>-7ndTe2J(XeXj=TgFIXxnUH)x$=&nu1Q5_B;cvpU8$-)1qyo!D12(6aM4h>B>VM@Fl;t3D5IJu2&(if1TH584s;dD zxuhY?4FI5AexjH1Kp>B&83$}v-b(=6b-M-GqJd53*ir(UG)x_LG$VA2;+qcQWQcRP zwrc!)Uaag}Z@V3r`Y&HpUQZdoF@sXshj0ElfysYu#pYr#+2rFA4&Dq}b{;?;h%0}+ zIhf!%@iROp(4yzXL(g~nYlF=GrZWE^H`A&kbA0${zXMVGpPhj@5X z&WBow3WYq89TUiUW&K#060|belj4L<`ecWpC{|1yFL06DkhzesD$3&WYUr6kyex@RNN)C+aP>kUfeh8u}X;)Gtp zHN5dR9=IY-s9oK=@KSv4O0Z-iYAr=Xz5exth7QESU6qSj_3qSodpqSmsC zDBLELA@`gbY8tgOO0o2#zzL1>6nwSinm6ltxT5bYBJhzs+ z%)-sev_%)tbC>TWlWBKTWLoK$5;E;)26JuN&n3vU#mcn1%P7WsHb1$}YcK0jR4N z?IO-$TO!%|keC83h&|1tX76D@2?DeQuuz&Za$%(ez@CTXtf(%0h5!%b*>WOf+>m2| zu5%!$U-r;3^1w=b6W|r4AvNWi#MO+eRh=z0LkiPWt?EGLgZlpd?tTqy(7n+;u(A9=fkisFh^3+jLBVft9i(hz z`r6%uLb_%Z(n1x|GK{4TnKT21l;b#RiU*faA=z=eNvd9Ug{0_Hw{dgTIVOoqEMQ`< zX@$tb>%_UMRGvcQ-aS=wc&z9}i`YL34@iq;J0`m0>Z5V1imv`;LXrI7s#PQl8aNEI zYY8+-icv$VWQT?W)@p^#3FP7FfHe@Pg)~M6fMe(dvWq>Ral)9}W`FL|a5B}QdS(U2 z$eJ`#V2nYlQIbPVPE%rIWUNDxW*J$t6q$3O$de-L(S|VLfZr74C`A-H#qmA5BbNMw z1WSI)vgD#!vSF5ME+tz=#w|T-#@sj$_6(D=EILI^vwU}f|MKO#CmHyTGWC$$&pfT8 zXABFza++X4YLTy82%Sh)OrIN(rw&dyTd-KXd80@M4T;g$-c3sAt2I~ouB zTZ5#u3kLS&vF(CIA>z^k;duPZ9MwFg;7^K$GiV?rUd=WN&aP&M9h5R6#E}rv7Xq?2 z5*$E4C@E_>C%LqrJ24;6vX{=bG!|GU@?_rqJ~hfyG&}GZ0T^mGHNflQRtqVt^dW;? zB;;my<5sez(CNSgVoRszpi?#4tVy6rGah+2G?!d1a#$*QjoY=ft&61d^5oH2O16(} gifT5~kt#!YGwZjr)R}w!=RuwS58}tT7kMKA05U8Ht^fc4 literal 5617 zcmVv__tEX4sDIbVN=>WIbjzT6QHkAp~Nio$GRd103Ok#El~tgt+k1YP1(% z0U?fP1&T+eGwig>&dRi1-C=@4N(TZKKo@lp^nk+v#K(vd zJb;*kV}~NA<3k1l3cKhOdf)`{er31W+Sz{asD1xvduOX%0}luV@YERuKCJLQOqBu5 zL|X@sewEV@3PpqtA%h-3m~rTMfOLTnv$?Ykx)tB)foj#G3GEvd0F=Q%;&a$1Ct&pA z^v~lCAwG2Q2U4I*a2NH4clRCM2b@S<)V+{8LIKc4KCD&JByPd36Z)KqbPhfPy0~hb z4E)pt0AZOy4{<5&L=E7MN}f@}p_vYZmB72xOm~j9sT$5$$PM6xoD3X} zWa|RG5HgY1`EL+7?o+1+Wd#$TZ}cGsAw#$a955i5h}XFtH%ul~rqFjdI))$+$-0yb z#N|{4N3EeNvCbBBpvXxe2%n&!6QGBL4ev&%va!DnAoc=+FfYh9oIHg%aWk2HjjSEbb-qRz%q>tVaK_iN4F^j4D!Spp;@Y;qVlfxcgxpfy7rZYN$Z()ti_ z2)4IsshLhQgX6j+#5|T6n?YTlNv0vtgMm-ZhB`(9x8!vpubA?bM3pd&Nl=Al>k`c2 z>97W??DW-h^1L2U;)SlLS=T2TH|}Q|N~BI`6~5d6?aGdLPS zF7aUP2?HI39eO6Nh73l$*wN)S7&zDi;$M)ep&#}TX6G0<;)NZWtH!xryHmR(o_OFpJyrq0J@Fcmv%%Cu zbuKDv-6a&(yXcgM6ta2{c6`M86#zWg340A7dIS{!#It(=mwr9~foj@2i18!pH{@M; zgCQSczJqWNil(|xi7OD3X*rd5#(mccm`5)mLG=lQFF04)y5aa&-T?=Y5&sx^+ViXc zg>32-gglsE2SP(nr0kAV=|@G5=LYYW^k>y*xe}AUqp2|AuJ+S6e`I zSHb##-K^-YHirT5bpNLTrYF+)^HH)hQx&dy3KrE2Ec&v=qPeihL>9B_I8)PsgMgo{ z04OOvvOtndIUgX+gDsJP#*oERE`)`aWk5?m8qZ2Wls64T`7w(q^LaPYtg|o7lTkIIQhUxZ)pmeO*8WRFegRUqTw$&=%0MQ zXTMopOD&m^pOqV?on{2X>4_}I6v;7IIu_F?=355E1eRh78G{>z&u5HMj8|Jcz05qY zmr@K1C8x2xEm6(cI4w~v(f9=t)#;mJ?p)S>4IXk`lJBH&)|DR^ob~rtEN5NLvD!7E z!`fvTtu=W<|I!nskhzN-OZt*Y6LJ;&WU9FOO9oZ^ zjGY3RZwh3@(hX3DryNr3_;s;|N=?KI#EEgyVX0xE<}Q#L=y<;)rMq#>pogEb-Hqq3yI~o{GD?B%$ui19 z&0Qd)pg6=vNM8_$jLJW%du=33c0BbrbB3o;K#~<7lR}>bmHR5mTs>pc@QE`2S zrYRJm(Dx9PUzH5i%-0&=o3hC&nek6?K|Gp011Uq-Js~Dp!N(p@NFg56YQ+yEB3BCK zK8bGx3XT!(C6pEt88aRPV6D#w{^&I{5brd4^@+NoFC;QkfHt=|)+x- z0iFF?H^dSrS+aC)jX&3ijtA+m@`zj&w}tzu^YYf+tdf*@6keDl9EQ`YZp zv<~k-YPXs@&G(wEgGcSH?Zb`xJIy?7y>4dpu(^?k)U;;1v$6Yb4x%A$A05_?S`VsU z9hZN!@oqD(JQ{GMitlW;H+J$U{fVy-g?--H+uX<_Bee+2%;EjkLMqb!(aui$p!w@Z z&BHukM}~9NImFzii7^|wwIf=Uq7de=ryRkAmlkts#w>=Mti>fex7nPIH5sxScZu>7 zKGAOJlOqNxfRvIHr}V`iH=NQRyJvV=Vvn-?u4B-*BNAb~8==c{M{Xv&u!K*pS& zu&g|1fXaao5pdZZj;)NBiD^Fhj7K1o0S@3PV!WbTOt?!@4u41qJ9yn_Ja5{tgNt2# zh6!GU;L1{sv4Op~4yl@U;xI8NhA{LR`d|z_Mg}C4v0APnOtooj6vDY{aDf9vT%Kqk z&nW-|LjaG(fgj_r@~;N0{DXy+3&4s;&n^NnqM`b$05V#UEb|8{X>s9_V;jwnHt&Ej zyb)uAq8P;yTmwSIu^C-L2a1OY*2ibaro#Y(>hL3vxC}%+=N{tyupqb=({=-3t zvB2IB^&KVdLvVt8UmqMIBqFBs>H6eEr2G8S-_2Ba|149g-b|Tn!z!2k%{~J;D0x>X8S_r0gTjo`nw6h4+cuE|X=%6=KAkyG*we zT_%%nIw1#`7>tv$VD&Ez%=}ZkV0C$z`J9bo8$GAAPE&>eewoL+Eu3CbIL)bpG3EwO z59qi`F7fF#bqaA+9-oewI@Y^$X3{~*uISec=r7q_(HDUJ=osjfH2@iyK;CH&H~KD{ z5=?!vc+!T1j3aEq#>3;1a~x(HHMiZyFn7zjHd;Ezy204}3x(Lb$XI?iM)*W5jEOkK zC$8g12$V7@^FxDE{@G5-tPH2fl4}c@Z6Tx`Vo|0mKrRy$%fd40qKX^8nP}4~(>3|b zvDBWhX`PvGI8^j5jOSI?q5~sO(o=&5yTpUyt_E&hDFJBpq1F|+4i*?Nmh_B-H0lLT zkRy6J(D76U%IT1h1CeNeFdBpdK;cIrqR@*|AuR8A2@MAfhy#$D#TuubgL{30z!GUOQ^!MC#<^u*6{1w_4Rvizjf!AZ=O3hReQoF zPfsPSd?PViAv=dRp97GCrvY@itR6D-D<@!guLa;oq2q&A^RU(4-P>xm_cvM(Yv5hN z!F2%|*DIA9Nz)}PHzT3VnA$oFg*psho#HU)#snPCgR+mSp{(|Vk(4={SE_~s@$;`( z2Vzwm2>r+^x)2jp%i=^#5>}iWF~zclITHG1G+|a{8O`EQq@=TsMHa^*#gLO63?Mqe zN!+Yd(u!er&*K?D#q1tOn(5~EJm!>QJ&-~@kn2-C5P`LmM=Y-1G#rjE+EMV8aX7@U z6>u)38rcH&&;r+vXzS#^FjW1DSA|Y=3dR?TJ!kD?U)oZ<_s|rQyJO=Gt6HN1soUoR3Ia z;P75#v}G?P%DyT_H+}gcYA8OrT;n-tj;h92G+vb-#d!5f`Gwo1Qt57~RQf{s>Ko-N z8h0P(G^lEmBLb~^arI<>HkWl(pp&yxVqPQ0$pBy zA^!UM>#vu}KT#^bR4Tt#`a=1IpDe#vDqne{{8EQ_XZlBJN8*Ku7KaG?IH zLhKS*6`YXw2}K{P?H?||7`o9{4l%F#5char;yaEpIWZklm%0y|!@yz5bwUjgpGLFGZVT}#2 zmWXT`H@tvCCTy&StcF!V?o~~+O#Q%E+Z={tuUW^uP{(|KD+-Aj%mS(6!MS1ew+&c5 zwy?TvSk>)wC1EwvEgx9b(iRD;QI;2gRf~89BHr$Nh-aW(yeD@m-hJD^J8JQ6*?8x4 zRu=BGYWbj@61GUN(>YqKTTQGRWW%}+;r)q#Cl@KFdhIDtcxFK16AOjQhQbwzJu^YE zd|*(BS|kX{{44~nCIpTQ6?R3C9}ROO04TOnsBI|@5J#;{1GXz~8^CtmhSOR$u!#~| zNnjI-$)kI6Lbq7nd=Mv6T)?z-ZQqMx(y=;4`8iB4tNIuPRm7_f z_NuHezk?g=H&cQ*{jmX<-?c%U77Lj1_OZ4q#rFCNU}cI@SzvNpOmPUAYR6gjORB8I zLEC!GRJ55@MQ9ihFZ3acZi@9#YjLFzr;8)((6g#~tV%Fko9#({LS}ukPhl(-Vb>2m z=(R;D7+S?eTwPDSdbci;Ot^Wke(P5KR_#d;EgX~YF83Tl+5nKLAf%bMnWoePyXo|N zB$|8EX>`3!um~PuT;eCh?nhlnv8@>G-%X+YSH5V_{;M|h(voTa?kdv$-F#^O?gDB5 zZdTeyJxnO{F39@x@be^&9ctOWm4{O@w*xWa4J1h=7k!4V&n(&`9GASjkGt0Um;n$k z?0r~Qqwq3XF<0YWimOriMZ?wj>CsY~_wx*t+Hzfud#mVb+{?$+xVJ!81`vA?y9hFXFyoHztIcDOQbM17vjWhRFFJsX zIX!`78!_WXh6Y^+`HDw%^in`D1f&ZP7l&;PO<1b{uZ(g@A?PbSj=QTf-2C z*BRg>sQU02`d}>?MpR7508P0%bGgoCT@_11lfpbrt3Fcrpm}hxchCTvB=kMG;*cuv zJr^%zfLDvt&ofTPYqbvh+s5Re&oo$u*`@rbs3uLJACOGH$_4pqBH@&X@tL<8^-1%kFqFB>L*3zLy~K zws(e|0dm{gpGbWMI~*PBv6*+kgV+aA^&yeHbPX8vp)1A(baeqYx{mL69QUb=-g2{{ z;zLYV<6{)0J*G7gckL)q(eYVe>iO|{MElU*z_+fn=WhOB`U5J;L{YP#u#;%L=%2;UHFN^qVt&= zAe76$HHCp=#}CC2Wij(C3A5#Y^2K;I^|5wl$#G&!nn;dQ&}tH0$^|NtC?`rC6KWSe zuH0X-6xoc!7(^2$bC9F(yWlBGMwX3P^7jmu{FY_OWwT^kZ!%g*wv3fqdDcvraS`kp zWoKD*j+SQm?h^kM%Xg16@ExJ@ArXZ)ZIEIL3%+z}upqMgrkBowq7+w~3JnccpASb2 zYEOq)DZKmS;zM96dJpQ#G^zrH;#la3csSh9p3*NEi6mkB1@kVAQvH;rtJhuq0_%H==85FonC-W2gHL7 zMFJg?@t~%$wYXxD_)5`hQm>WmU6{rzl1CFc*)g^`npv(hRhsZ}8@IF6S$O#uL7o2( Lj Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - test␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -223,6 +230,13 @@ Generated by [AVA](https://avajs.dev). - test.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - test␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -321,6 +335,13 @@ Generated by [AVA](https://avajs.dev). - test.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - test␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ diff --git a/packages/build/tests/functions/snapshots/tests.js.snap b/packages/build/tests/functions/snapshots/tests.js.snap index d0bfc0a82f8e58e82bad6824bcead51d0fb8138a..655f2685565631b99043d78dc81a2eb8a44ec498 100644 GIT binary patch literal 1380 zcmV-q1)KUoRzVK%10|#zJdWa$gsq0P30ck-I^hYGB&_)qd z;zY;xvv->D%xY%bWF-zDaX}p6j8yLYQ~V`p#`fCI+PleCPPfUd_O$cEZ@zEl`@gPLlFXP+EoJk(ThHG-5XMR@{BWHLmEsKihUIi-q|i5d&7eti{1M3W!4 z?!ULOyYL6Zy%naR8(*e;A@_%F$}C4 zd;YG!YkC|ok|+-#!XQgVpk;<0fW(PV)ChengdV|!geN3Hm5&~3R9X$=GEKvnp6N`Y z8W!pD08E#s6Rk#`5p%+_gmQIAmHt7pk!`gNiZbN-kn#j2<;js0Au5Hch{W562bq+} zb(MM#E**}UM(~&>5L1SipI}&s=WCHNGutsL!Cqnnp`F$PuoD%F%>qW%coo%VgP%&8 zP(FePW0EnW)ok3uQiw}G;G7;B&&F>W#-I&VdD-JcFltSLDQw8wIE;>b}NMbUy z7+h*BG8Ps50#fbayVly8zBYoERKPXdV5QxET(kR-@Z9OuGz|o!Au!5M=B<8PH>@7F zoz-8x)vIZ0va>EOUxu@?!50(s?Cq6mJ)OF88MCHAO%_*m%%7YiE38>}B}FVn3QYxT zg@y+Mn0d3e4~HZTB4RJJMALvWs;7{O2!Seya3V1z=AKJ<1gDfS<8cyGVK$ZE@HpcL zdw1d9?!7O3IK~(yXaQrbCu%eta?SjBN{7roWiXo$Vj&?yO(;{oms3b#6}7omPemq8 zwqIbVAye2Ls@=}{vdmoH(L|bO=rN`y7(GVYP4X7deRK5fg19Rg(|l6j6==P0>OKp! z+cjbrp0()R;H}3ESburT!TRc9U9n{?U|oi@GOUXUdWLnSS|_YKx#}#aKMOjoIgp~J ziz&9UNlT@G4fA>CDup*uDcBUPi}w`KtX?PB@qL#GrDT0o3Hc&sEv`Q3JTJ@Z16LZj z(%^0RUKy9UsPWRm80glGYPstNe zv-wk$hIJXYKGecvhm+nD(&w9|k7_&_3~J{~>4#LdRC|9msPdbu_FjW3=j9&3P^XhY zM5PD$y)gIFKxkJRy4vtY(#X|@t~R_*`?*h;e^rAy6C_f#J(nOyX*c^R)nmJD4kStO zRLB#%QCe7kr@{IU9qU(NeN33@q~?tGb380t=1AAh2^)hSiZnG|W(~4F@cL)w4she^ zxelrE|DC2L^C!*0wGFP7Q3TT*Q*r4NmahusOO(09op3IXMi-=3?5J$o#B>W$qq~{sxJOBVpk(KBG literal 1230 zcmV;<1Tp(TRzVq3^6C-G6GVG_7MWE(KkxZIZ1CuQ)TG4*FoSJ@27(Y@9iD# z+0Q%sdmp^}xZ#>@FQyCN-}`^GE-wTN!2(W-W}ex zGfspT5d#Qtl0;)LIza}Yai)k{p`R;d#xV2zGcQ8QR*wvlp;1_bX%zAclW3$-9xeu8 zr#zb(8Z#^AOe7JP^n{c7L5p!Znhp>bD9sZtBh*|*r&{?)gp{9z-GhgT)+kLCdIpz1 zj@?GdkVg=5ftTN4l#4esDi(IP=SWJt!T|hqTLzGBlwUTP2u{;&R4W%h(>&sG3;~8- zBCJ;Bx<`c&mwv&59tJP$#xt#gBwfK+nRzftWFTzj-K>=Peu_}|MkNNJF;)xX=?D#h z2U5uaUT{jk4yuTh3Lmvd>8p4q&|m;u!f{NWv&@>v;0%I9dv^X9Hdx6P%8u$4T0#MD;Sa2^`;TjO?|U+HdYZ=*CAbfQ%d?ht<9@^Hk6pWQ4OUO{ z*hXhpT)sHY)&`$%(6hH!s`Zq0#Wl*IK}{Cdbu4GjX)3I}cO^xrRSZo9YmEkj0hHeC znvK2#)MvACyGEZp|5p9ab?dtZc)q&jz;pHBseE!Lz*8J&Yw+Y7^bDR#wNCJKGQwF< ze-?CJb0Fe&iftT{SxeP>+%TU{T-AFWRc{)iUGbj$G~3s_>H5A)-a@jzD&Fi8<%p|w zJM(3It?SC%>x#`4F-EE?*e#5?-C)f7jxpE37^&pW5GFm#)_k$6d!|b+R!?k6FW|_s zK1-gen$4f1MhI0RQy*$!i^ECp0qOH!laFdV84POqMdlILEmV2YpvtME${SE+QSLE} zOgtL|Tr+@J1vt+9bfS#wb6lTuBWdLNoLznT1=H6xFbU-aR10{7618X7oO3e;GetPj zUX15TpAmd>`t35e4(~L$_2Hr8))w3fJwcrWDA~2-?ZwEFYqxt|dWNB|;@FcxmhAO~ zZ+~R&fK&ly1RKWI%Z{3wEN7YnMH?t8qnONLt`ZGl;S(t<2=yz}nZ%u-DN>^gI0>O1 zn$3a39tRP&5#|PlYC(!r?_nW01`!UrRL?@k*io07Ey6osuK{)e-^mL2rZKX}eK}mp zi~*Mhwe-ZxDq3I-YZF8t{Lw)4FRrz8h~Cl1A$lv(IuX0VNfvCs Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - function␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -110,6 +117,13 @@ Generated by [AVA](https://avajs.dev). - test.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - test␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -171,6 +185,13 @@ Generated by [AVA](https://avajs.dev). - index.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - index␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -232,6 +253,13 @@ Generated by [AVA](https://avajs.dev). - index.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - index␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -295,6 +323,13 @@ Generated by [AVA](https://avajs.dev). - index.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - index␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -344,6 +379,13 @@ Generated by [AVA](https://avajs.dev). - index.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - index␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -534,6 +576,13 @@ Generated by [AVA](https://avajs.dev). - index.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - index␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -583,6 +632,13 @@ Generated by [AVA](https://avajs.dev). - index.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - index␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ diff --git a/packages/build/tests/install/snapshots/tests.js.snap b/packages/build/tests/install/snapshots/tests.js.snap index f205564e3d7f8f4dd0d9c77964e6cadb9fc14c2e..53ba03010ad76d1c0bf788fcc0234e7017fa321c 100644 GIT binary patch literal 2840 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 literal 2665 zcmV-v3YPUjRzV8@(3sy$<^BEe^XFA#1>95^CzM;y2U2P6(i95`@CoKW@uvOQzB+uiOs zW%VJkyI#L~uipFpUU$EmH^aWm2Cu{~e~l%PF24NUqks-1VN}>asF28Y!NESJ4yFTw z1yC#`c8H+J7h@*HFWxu~lIZLAzx?)%n>WJOmNKL71|ven6C&g@?%Lt6 z;SYkin93)FjxZ;5bjsNP3xP$fgLNN{0?sj&;1G@nN*4phyqtxW|*x1hsm@Hi0-DN ztE@6R+$Eoi6TcL{ayW#^@^ zEbCx_8CP`T3L~u_|JXC!q;75!`=%NEBvEEfjuH>Al&56&s)VZ~Q)m!hF(_J9tQSU6 zwP*}>*5aEgvGZVAEq_7e7^v?psOBdcVvbBTUpr!^!P%p}*9_d$Raz50H6fK^=&S`R zK~jA>4Z>4X|C{=M`(7yL!NSbNl>PNNr%LK_cO~lbHR2RpHbAaBUBF>pYaE6e4zooL zGew+kg2c3xKCMmBm{6hRBp4G7k1#Hht{apyOR{Kr8@{IoOVny3gc>cuyp{fz(GSwh{Kz z8;}|aP-M>M;80VK zYH{fEwQ&dz!b%;BFbZ$a!_uw4X|VLCTLzZ41xxMNOU;6(RI8FOmB^_Du5zYa1-7DV zwZ7l7j>Cz1SO_#y z0ehIjO=3uS^qq!^Z3uxtEif;kpIJ^W3B=e9Y;S=)gS{)1Ee2h5`PZW59Idb6wO$A5>Lvjgn zOoWP`zKgx&cGns9*hI~5$^w4f#i;|xanzY|jP*H47Jlb*_7V@|zWTy%yLf`#St&|c zjGPXfD^-XH#|@ECIU&4+KtuIU!Q4RU(MhxnC=H!JeJ`1D3mAu%x}(=htQgK=-i0*! zp`TC)4^bzPe3;E?$Xu6QsQ*QHqUIG2Y~?d@%U1q;{yfH<7ca6z51$se9SAXh7$Tw; zO2|U)MxkfN09PnWrp+;Me0FwnX2TH+Tqj&GJOYs15>}Ug*I^~$j?Xv59q)jL=u{iA zfKFPkG&=dy*}|acX9x1|*65`2S3^0ardnBInHN?MyPUCX({h1k5W_Q-9MvbApzZI}$5$*!znHKYujv zQ#<@LW|NH)TWeIkp~li}G&bBI5ysNY-Kn)CcVdZM4-pz>+p7@lKID1~^07SAXAo+! zNbD1aoa{#36(>FjmvDp(y2EDAysDXFXXE~E=ZBVcFlUD1?HWZy7;vl<9DlGXI8LwK z&|&ZI8cP1zpk(bR*`#e8%52_H`IZgKH)=3gX|S?n^c$?)j@>KW@VF3GUa@1q-hVZu z{I@~M5=gnBJpmfF6F|xS|2n$XOr?vn{|D^%x zUk#AfUUJ4>YR1jkM42^FGag_7`{-Y*%+n!_5EP zG?-cY!%WtTPizKk=JZ+j(Pk>4+9#ZO!|gbJmIT1lC^@udN2rzui8)2?bzM6<5Y+R{ zI$5s)@qET*Y+5@#_4)DHS?|k}htHlI_nw}d_a2=*d;0K&4M&KoQA0wVv}0pGX@=O3 zrC}#>L*am#T@nDNNn)3XxXSaV$pVT$bL$9_43?e}B`(!Nkz}aorxB4Kj-~X4-R+Ku z90&c*fTiyxL`ru?M8-q81R_MB@(e5+){V~0Ot0cbMrrk{F>x`t@tR(+D(9E*kIxT} zzJT+y!=vL&q|cd;xs0geH!uiq{_QXF+djPBbPvg{rJsaXe7qX3;7q;5do8)x`#>WX z@0o&pgXE$sJ-=PUUlC5PGe-uJU)BWq+yvhG=qno-W`DwXOFiG|eABa&IL zGH5i_XMJJV?CMir-1Qcq5xnneiMX|3PGI({u&uJ)9z=otse>nX(oL`;=v5&&ioiRv zDaw+p(vMK=z=WVB;Ct)$8u)v^wj7^ZlMy1qcu&%3ancZ4bCNSUcWU1Z%X0KyJmZ`une`B{K_KF33H z*}KKF4X-x5rVT#RVim`X!3ZAIxx^b46m%b&AIO7b%5F2wChWIud Xh9Me;xbsWA3WoT9y)^d|d71zKI_VV2 diff --git a/packages/build/tests/plugins/snapshots/tests.js.md b/packages/build/tests/plugins/snapshots/tests.js.md index bf32664143..8e97b511bc 100644 --- a/packages/build/tests/plugins/snapshots/tests.js.md +++ b/packages/build/tests/plugins/snapshots/tests.js.md @@ -1809,6 +1809,13 @@ Generated by [AVA](https://avajs.dev). - test/test.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions were generated by a framework adapter and use Lambda compatibility mode:␊ + - test␊ + ␊ + Update the framework adapter to a version that emits modern Netlify Functions.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ @@ -1955,6 +1962,18 @@ Generated by [AVA](https://avajs.dev). - user_1.js␊ ␊ ␊ + > Lambda compatibility mode is deprecated and will be removed on June 1, 2027. Refer to https://ntl.fyi/lambda-deprecate for details.␊ + ␊ + These functions in your project use Lambda compatibility mode:␊ + - user_1␊ + ␊ + Migrate them to the modern Netlify Functions API. Refer to https://ntl.fyi/functions-migrate.␊ + ␊ + These functions were generated by a framework adapter and use Lambda compatibility mode:␊ + - internal_1␊ + ␊ + Update the framework adapter to a version that emits modern Netlify Functions.␊ + ␊ (Functions bundling completed in 1ms)␊ Build step duration: Functions bundling completed in 1ms␊ ␊ diff --git a/packages/build/tests/plugins/snapshots/tests.js.snap b/packages/build/tests/plugins/snapshots/tests.js.snap index 27ccf55412f3befc1fe9d6789b47807da0c690e2..b9dc6880cef4871056f00a2a10d3a5e09b7e2770 100644 GIT binary patch literal 6090 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 Q@lnG62mQ4>wX;wG07qh$=>Px# literal 5893 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