@webflow/cloud-app 0.1.0-beta.9 → 0.1.1-beta.bad4bbe.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -91
- package/dist/assetVersionToken.d.ts +9 -0
- package/dist/assetVersionToken.d.ts.map +1 -0
- package/dist/assetVersionToken.js +37 -0
- package/dist/assetVersionToken.js.map +1 -0
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +3 -2
- package/dist/bindings.js.map +1 -1
- package/dist/config/package-json.d.ts +2 -2
- package/dist/diagnostics.d.ts +23 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +31 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.d.ts +3 -3
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.js +3 -3
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.d.ts +34 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.d.ts.map +1 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.js +89 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.js.map +1 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.d.ts +39 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.d.ts.map +1 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.js +93 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.js.map +1 -0
- package/dist/frameworks/astro/astro5.d.ts +1 -0
- package/dist/frameworks/astro/astro5.d.ts.map +1 -1
- package/dist/frameworks/astro/astro5.js +5 -0
- package/dist/frameworks/astro/astro5.js.map +1 -1
- package/dist/frameworks/astro/astro6.d.ts +1 -0
- package/dist/frameworks/astro/astro6.d.ts.map +1 -1
- package/dist/frameworks/astro/astro6.js +16 -9
- package/dist/frameworks/astro/astro6.js.map +1 -1
- package/dist/frameworks/astro/astro7.d.ts +1 -0
- package/dist/frameworks/astro/astro7.d.ts.map +1 -1
- package/dist/frameworks/astro/astro7.js +17 -9
- package/dist/frameworks/astro/astro7.js.map +1 -1
- package/dist/frameworks/astro/session-check.d.ts +27 -0
- package/dist/frameworks/astro/session-check.d.ts.map +1 -0
- package/dist/frameworks/astro/session-check.js +173 -0
- package/dist/frameworks/astro/session-check.js.map +1 -0
- package/dist/frameworks/astro/templates/astro.config.webflow.ts +124 -2
- package/dist/frameworks/astro/templates/v5/astro.config.mjs.template +1 -0
- package/dist/frameworks/astro/templates/v5/webflow-loader.ts +4 -1
- package/dist/frameworks/astro/templates/v6/astro.config.mjs.template +1 -0
- package/dist/frameworks/astro/templates/v6/webflow-loader.ts +4 -1
- package/dist/frameworks/astro/templates/v7/astro.config.mjs.template +1 -0
- package/dist/frameworks/astro/templates/v7/webflow-loader.ts +4 -1
- package/dist/frameworks/base.d.ts +19 -1
- package/dist/frameworks/base.d.ts.map +1 -1
- package/dist/frameworks/base.js +24 -0
- package/dist/frameworks/base.js.map +1 -1
- package/dist/frameworks/nextjs/index.d.ts +13 -0
- package/dist/frameworks/nextjs/index.d.ts.map +1 -1
- package/dist/frameworks/nextjs/index.js +41 -1
- package/dist/frameworks/nextjs/index.js.map +1 -1
- package/dist/frameworks/nextjs/supportPolicy.d.ts +28 -0
- package/dist/frameworks/nextjs/supportPolicy.d.ts.map +1 -0
- package/dist/frameworks/nextjs/supportPolicy.js +127 -0
- package/dist/frameworks/nextjs/supportPolicy.js.map +1 -0
- package/dist/frameworks/nextjs/templates/next.config.ts.template +1 -0
- package/dist/frameworks/nextjs/templates/next.config.webflow.ts +6 -1
- package/dist/frameworks/static/templates/wrangler.json +2 -1
- package/dist/frameworks/types.d.ts +14 -0
- package/dist/frameworks/types.d.ts.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -2
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +25 -0
- package/dist/pipeline.js.map +1 -1
- package/dist/static-base-href.d.ts +31 -0
- package/dist/static-base-href.d.ts.map +1 -0
- package/dist/static-base-href.js +183 -0
- package/dist/static-base-href.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wrangler.d.ts.map +1 -1
- package/dist/wrangler.js +126 -5
- package/dist/wrangler.js.map +1 -1
- package/package.json +4 -4
- package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.d.ts +0 -36
- package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.d.ts.map +0 -1
- package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.js +0 -94
- package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-check.js","sourceRoot":"","sources":["../../../src/frameworks/astro/session-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ type AstroIntegration = { name?: string; [key: string]: any };
|
|
|
6
6
|
type AstroUserConfig = Record<string, any>;
|
|
7
7
|
|
|
8
8
|
export type WebflowOverridesOptions = {
|
|
9
|
+
assetVersionToken?: string;
|
|
9
10
|
mountPath: string;
|
|
10
11
|
deployUrl: string;
|
|
11
12
|
/** The result of `cloudflare({ ... })` from `@astrojs/cloudflare`. */
|
|
@@ -16,6 +17,122 @@ export type WebflowOverridesOptions = {
|
|
|
16
17
|
reactDomServerAlias: Record<string, string> | undefined;
|
|
17
18
|
};
|
|
18
19
|
|
|
20
|
+
interface AdapterRegistration {
|
|
21
|
+
client?: { assetQueryParams?: URLSearchParams; [key: string]: unknown };
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface AdapterConfigDone {
|
|
26
|
+
setAdapter: (registration: AdapterRegistration) => void;
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Keep Cloudflare's adapter hooks while extending its client build metadata. */
|
|
31
|
+
function withAssetVersion(adapter: AstroIntegration, token: string | undefined): AstroIntegration {
|
|
32
|
+
if (!token) return adapter;
|
|
33
|
+
const originalHook = adapter.hooks?.['astro:config:done'];
|
|
34
|
+
if (typeof originalHook !== 'function')
|
|
35
|
+
throw new Error('Cloudflare adapter has no astro:config:done hook');
|
|
36
|
+
return {
|
|
37
|
+
...adapter,
|
|
38
|
+
hooks: {
|
|
39
|
+
...adapter.hooks,
|
|
40
|
+
'astro:config:done': (context: AdapterConfigDone) =>
|
|
41
|
+
originalHook.call(adapter, {
|
|
42
|
+
...context,
|
|
43
|
+
setAdapter: (registration: AdapterRegistration) => {
|
|
44
|
+
const params = new URLSearchParams(registration.client?.assetQueryParams);
|
|
45
|
+
params.set('dpl', token);
|
|
46
|
+
context.setAdapter({
|
|
47
|
+
...registration,
|
|
48
|
+
client: { ...registration.client, assetQueryParams: params },
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Merge our injected `resolve.alias` into the user's instead of overwriting it.
|
|
58
|
+
*
|
|
59
|
+
* `injected` is the production + React 19 `react-dom/server -> .edge` alias, or
|
|
60
|
+
* `undefined` when no injection is needed. Vite matches `resolve.alias` in array
|
|
61
|
+
* order (first match wins) and turns an object into an array in key order, so:
|
|
62
|
+
*
|
|
63
|
+
* - nothing to inject: return the user's alias untouched (including `undefined`);
|
|
64
|
+
* - no user alias: return ours as a plain object (nothing can shadow it);
|
|
65
|
+
* - user alias (object or array): normalize to `{ find, replacement }` entries
|
|
66
|
+
* and PREPEND ours, so our `react-dom/server` override always wins -- even over
|
|
67
|
+
* a broad user alias like `react-dom` that would otherwise match
|
|
68
|
+
* `react-dom/server` first and shadow it. Object form is converted to array
|
|
69
|
+
* form (equivalent matching semantics in Vite), giving both forms the same
|
|
70
|
+
* precedence.
|
|
71
|
+
*/
|
|
72
|
+
function mergeViteResolveAlias(
|
|
73
|
+
userAlias: unknown,
|
|
74
|
+
injected: Record<string, string> | undefined,
|
|
75
|
+
): unknown {
|
|
76
|
+
if (!injected || Object.keys(injected).length === 0) {
|
|
77
|
+
return userAlias;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const injectedEntries = Object.entries(injected).map(([find, replacement]) => ({
|
|
81
|
+
find,
|
|
82
|
+
replacement,
|
|
83
|
+
}));
|
|
84
|
+
|
|
85
|
+
if (userAlias == null) {
|
|
86
|
+
return { ...injected };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const userEntries = Array.isArray(userAlias)
|
|
90
|
+
? userAlias
|
|
91
|
+
: Object.entries(userAlias as Record<string, string>).map(([find, replacement]) => ({
|
|
92
|
+
find,
|
|
93
|
+
replacement,
|
|
94
|
+
}));
|
|
95
|
+
|
|
96
|
+
return [...injectedEntries, ...userEntries];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* `build.*` keys that move where Astro writes its output.
|
|
101
|
+
*
|
|
102
|
+
* Each Astro builder hardcodes the paths packaging reads back --
|
|
103
|
+
* `getOutputDeployMetadata()` returns `dist/client` + `dist/server/entry.mjs`
|
|
104
|
+
* (`dist` + `dist/_worker.js/index.js` on Astro 5). Honouring a user's
|
|
105
|
+
* override would build into paths the deploy step never looks at: a packaging
|
|
106
|
+
* failure, or static assets silently missing from the deploy.
|
|
107
|
+
*
|
|
108
|
+
* These are dropped rather than pinned to Webflow values, so Astro's own
|
|
109
|
+
* resolution -- and the Cloudflare adapter's overrides of it -- stay exactly
|
|
110
|
+
* as they were before any user build option was preserved.
|
|
111
|
+
*/
|
|
112
|
+
const OUTPUT_RELOCATING_BUILD_KEYS = ['client', 'server', 'serverEntry'] as const;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The user's `build` options minus anything that would relocate output.
|
|
116
|
+
*
|
|
117
|
+
* Warns per dropped key. This module runs inside the user's project during
|
|
118
|
+
* `astro build`, so the notice lands in the build log they can already read --
|
|
119
|
+
* without it, a dropped `build.client` would fail exactly the way the silent
|
|
120
|
+
* config clobber this function replaced used to fail.
|
|
121
|
+
*/
|
|
122
|
+
function preservableBuildOptions(userBuild: AstroUserConfig['build']): AstroUserConfig['build'] {
|
|
123
|
+
const preserved = { ...userBuild };
|
|
124
|
+
for (const key of OUTPUT_RELOCATING_BUILD_KEYS) {
|
|
125
|
+
if (key in preserved) {
|
|
126
|
+
console.warn(
|
|
127
|
+
`[webflow] Ignoring build.${key}: Webflow Cloud packages build output ` +
|
|
128
|
+
`from Astro's default paths, so a custom location would not be deployed.`,
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
delete preserved[key];
|
|
132
|
+
}
|
|
133
|
+
return preserved;
|
|
134
|
+
}
|
|
135
|
+
|
|
19
136
|
/**
|
|
20
137
|
* Wrap the user's Astro config with Webflow Cloud's required overrides.
|
|
21
138
|
* `userExport` is always provided — `{}` when the user ships no astro.config.*.
|
|
@@ -35,16 +152,21 @@ export function withWebflowOverrides(
|
|
|
35
152
|
...userExport,
|
|
36
153
|
base: opts.mountPath,
|
|
37
154
|
output: 'server',
|
|
38
|
-
adapter: opts.adapter,
|
|
155
|
+
adapter: withAssetVersion(opts.adapter, opts.assetVersionToken),
|
|
39
156
|
integrations,
|
|
40
157
|
vite: {
|
|
41
158
|
...userExport.vite,
|
|
42
159
|
resolve: {
|
|
43
160
|
...userExport.vite?.resolve,
|
|
44
|
-
alias: opts.reactDomServerAlias,
|
|
161
|
+
alias: mergeViteResolveAlias(userExport.vite?.resolve?.alias, opts.reactDomServerAlias),
|
|
45
162
|
},
|
|
46
163
|
},
|
|
47
164
|
build: {
|
|
165
|
+
// Preserve the user's build options -- `assetsPrefix` is the only key we
|
|
166
|
+
// need to own. Replacing the whole object silently dropped everything
|
|
167
|
+
// else they set, notably `format`, which decides whether a prerendered
|
|
168
|
+
// route is written as `foo/index.html` or `foo.html`.
|
|
169
|
+
...preservableBuildOptions(userExport.build),
|
|
48
170
|
assetsPrefix: opts.deployUrl + (opts.mountPath === '/' ? '' : opts.mountPath),
|
|
49
171
|
},
|
|
50
172
|
image: {
|
|
@@ -8,6 +8,7 @@ import { withWebflowOverrides } from './astro.config.webflow';
|
|
|
8
8
|
export default defineConfig(
|
|
9
9
|
withWebflowOverrides(userConfig, {
|
|
10
10
|
mountPath: '${COSMIC_MOUNT_PATH}',
|
|
11
|
+
assetVersionToken: '${WEBFLOW_ASSET_VERSION_TOKEN}',
|
|
11
12
|
deployUrl: '${COSMIC_DEPLOY_URL}',
|
|
12
13
|
adapter: cloudflare({
|
|
13
14
|
imageService: 'custom',
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { ExternalImageService, ImageTransform, AstroConfig } from 'astro';
|
|
15
|
-
|
|
15
|
+
// The '.ts' extension is required: Astro's SSR module-runner resolves this
|
|
16
|
+
// file's imports under strict ESM during prerender, where an extensionless
|
|
17
|
+
// relative import fails with "Cannot find module './webflow-image-url'".
|
|
18
|
+
import { normalizeSrc, isRemote, buildImageUrl, computeSrcSetWidths } from './webflow-image-url.ts';
|
|
16
19
|
|
|
17
20
|
// Default implementation copied from Astro's baseService
|
|
18
21
|
function getTargetDimensions(options: ImageTransform) {
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { ExternalImageService, ImageTransform, AstroConfig } from 'astro';
|
|
15
|
-
|
|
15
|
+
// The '.ts' extension is required: Astro's SSR module-runner resolves this
|
|
16
|
+
// file's imports under strict ESM during prerender, where an extensionless
|
|
17
|
+
// relative import fails with "Cannot find module './webflow-image-url'".
|
|
18
|
+
import { normalizeSrc, isRemote, buildImageUrl, computeSrcSetWidths } from './webflow-image-url.ts';
|
|
16
19
|
|
|
17
20
|
// Default implementation copied from Astro's baseService
|
|
18
21
|
function getTargetDimensions(options: ImageTransform) {
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import type { ExternalImageService, ImageTransform, AstroConfig } from 'astro';
|
|
14
|
-
|
|
14
|
+
// The '.ts' extension is required: Astro's SSR module-runner resolves this
|
|
15
|
+
// file's imports under strict ESM during prerender, where an extensionless
|
|
16
|
+
// relative import fails with "Cannot find module './webflow-image-url'".
|
|
17
|
+
import { normalizeSrc, isRemote, buildImageUrl, computeSrcSetWidths } from './webflow-image-url.ts';
|
|
15
18
|
|
|
16
19
|
// Default implementation copied from Astro's baseService
|
|
17
20
|
function getTargetDimensions(options: ImageTransform) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildContext, BuildOutput, FrameworkInfo, PackageJson, WebflowJson, DetectionResult, AdapterPackage, IntegrationPackage, WebflowLoaderConfig, NodeVersionRequirement } from './types';
|
|
1
|
+
import type { BuildContext, BuildOutput, FrameworkInfo, FrameworkSupportStatus, PackageJson, WebflowJson, DetectionResult, AdapterPackage, IntegrationPackage, WebflowLoaderConfig, NodeVersionRequirement } from './types';
|
|
2
2
|
export declare abstract class FrameworkBuilder {
|
|
3
3
|
/**
|
|
4
4
|
* Canonical framework name (e.g. 'nextjs', 'astro', 'vite').
|
|
@@ -83,6 +83,12 @@ export declare abstract class FrameworkBuilder {
|
|
|
83
83
|
* specific version is required.
|
|
84
84
|
*/
|
|
85
85
|
abstract getNodeVersionRequirement(): NodeVersionRequirement | null;
|
|
86
|
+
/**
|
|
87
|
+
* Validate requirements that depend on the resolved, installed dependencies.
|
|
88
|
+
* Hosts driving builders directly must await this after the final dependency
|
|
89
|
+
* install and before executing the build command.
|
|
90
|
+
*/
|
|
91
|
+
validateInstalledDependencies(): Promise<void>;
|
|
86
92
|
/**
|
|
87
93
|
* Post-build hook for any cleanup or modifications. Called after the build
|
|
88
94
|
* command succeeds.
|
|
@@ -109,6 +115,18 @@ export declare abstract class FrameworkBuilder {
|
|
|
109
115
|
* the deploy contract).
|
|
110
116
|
*/
|
|
111
117
|
getFrameworkVersion(): string | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* Optional framework support status (e.g. Next.js EOL window). Default null;
|
|
120
|
+
* frameworks that track support override. Called after dependencies are
|
|
121
|
+
* installed so the concrete installed version is available.
|
|
122
|
+
*/
|
|
123
|
+
getFrameworkSupport(): FrameworkSupportStatus | null;
|
|
124
|
+
/**
|
|
125
|
+
* Emit an out-of-support warning (via `log`) and record version / supported
|
|
126
|
+
* tags (via `telemetry`) when {@link getFrameworkSupport} returns a status.
|
|
127
|
+
* Default no-op; Next.js overrides.
|
|
128
|
+
*/
|
|
129
|
+
reportFrameworkSupport(): FrameworkSupportStatus | null;
|
|
112
130
|
/** Check if a dependency exists in package.json (deps or devDeps). */
|
|
113
131
|
protected hasDependency(name: string): boolean;
|
|
114
132
|
/** Get a dependency version from package.json (deps or devDeps). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,8BAAsB,gBAAgB;IACpC;;;OAGG;IACH,MAAM,CAAC,aAAa,SAAM;IAE1B,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC;gBAEhB,GAAG,EAAE,YAAY;IAQ7B;;OAEG;IACH,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrF;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInD;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,IAAI,WAAW;IAI7C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM,GAAG,IAAI;IAEzC;;;OAGG;IACH,uBAAuB,IAAI,WAAW;IAItC,yDAAyD;IACzD,QAAQ,CAAC,uBAAuB,IAAI,MAAM;IAM1C;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,IAAI,cAAc,GAAG,IAAI;IAEtD;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,IAAI,kBAAkB,EAAE;IAExD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,IAAI,mBAAmB,GAAG,IAAI;IAEvD;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,IAAI,sBAAsB,GAAG,IAAI;IAMnE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;OAGG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;;OAGG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;;;;;;OASG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,8BAAsB,gBAAgB;IACpC;;;OAGG;IACH,MAAM,CAAC,aAAa,SAAM;IAE1B,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC;gBAEhB,GAAG,EAAE,YAAY;IAQ7B;;OAEG;IACH,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrF;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInD;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,IAAI,WAAW;IAI7C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM,GAAG,IAAI;IAEzC;;;OAGG;IACH,uBAAuB,IAAI,WAAW;IAItC,yDAAyD;IACzD,QAAQ,CAAC,uBAAuB,IAAI,MAAM;IAM1C;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,IAAI,cAAc,GAAG,IAAI;IAEtD;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,IAAI,kBAAkB,EAAE;IAExD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,IAAI,mBAAmB,GAAG,IAAI;IAEvD;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,IAAI,sBAAsB,GAAG,IAAI;IAMnE;;;;OAIG;IACG,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;OAGG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;;OAGG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;;;;;;OASG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;;;OAIG;IACH,mBAAmB,IAAI,sBAAsB,GAAG,IAAI;IAIpD;;;;OAIG;IACH,sBAAsB,IAAI,sBAAsB,GAAG,IAAI;IAQvD,sEAAsE;IACtE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK9C,oEAAoE;IACpE,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhE;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMtE,gCAAgC;IAChC,SAAS,KAAK,GAAG,wBAEhB;IAED,wCAAwC;IACxC,SAAS,KAAK,UAAU,+BAEvB;IAED,mCAAmC;IACnC,SAAS,KAAK,SAAS,2BAEtB;IAED,oCAAoC;IACpC,SAAS,KAAK,EAAE,gCAEf;IAED,4DAA4D;IAC5D,SAAS,KAAK,GAAG,WAEhB;CACF"}
|
package/dist/frameworks/base.js
CHANGED
|
@@ -91,6 +91,14 @@ class FrameworkBuilder {
|
|
|
91
91
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
92
92
|
// OPTIONAL METHODS WITH DEFAULT IMPLEMENTATIONS
|
|
93
93
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
94
|
+
/**
|
|
95
|
+
* Validate requirements that depend on the resolved, installed dependencies.
|
|
96
|
+
* Hosts driving builders directly must await this after the final dependency
|
|
97
|
+
* install and before executing the build command.
|
|
98
|
+
*/
|
|
99
|
+
async validateInstalledDependencies() {
|
|
100
|
+
// Default: no-op
|
|
101
|
+
}
|
|
94
102
|
/**
|
|
95
103
|
* Post-build hook for any cleanup or modifications. Called after the build
|
|
96
104
|
* command succeeds.
|
|
@@ -125,6 +133,22 @@ class FrameworkBuilder {
|
|
|
125
133
|
getFrameworkVersion() {
|
|
126
134
|
return undefined;
|
|
127
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Optional framework support status (e.g. Next.js EOL window). Default null;
|
|
138
|
+
* frameworks that track support override. Called after dependencies are
|
|
139
|
+
* installed so the concrete installed version is available.
|
|
140
|
+
*/
|
|
141
|
+
getFrameworkSupport() {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Emit an out-of-support warning (via `log`) and record version / supported
|
|
146
|
+
* tags (via `telemetry`) when {@link getFrameworkSupport} returns a status.
|
|
147
|
+
* Default no-op; Next.js overrides.
|
|
148
|
+
*/
|
|
149
|
+
reportFrameworkSupport() {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
128
152
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
129
153
|
// PROTECTED HELPER METHODS
|
|
130
154
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,+CAAiC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FrameworkBuilder } from '../base';
|
|
2
2
|
import type { BuildOutput, FrameworkInfo, PackageJson, WebflowJson, DetectionResult, AdapterPackage, IntegrationPackage, WebflowLoaderConfig, NodeVersionRequirement } from '../types';
|
|
3
|
+
import type { FrameworkSupportStatus } from '../types';
|
|
3
4
|
export declare class NextJsBuilder extends FrameworkBuilder {
|
|
4
5
|
static frameworkName: string;
|
|
5
6
|
get info(): FrameworkInfo;
|
|
@@ -25,8 +26,20 @@ export declare class NextJsBuilder extends FrameworkBuilder {
|
|
|
25
26
|
*/
|
|
26
27
|
private ensureOpenNextConfig;
|
|
27
28
|
prepareConfig(): Promise<void>;
|
|
29
|
+
validateInstalledDependencies(): Promise<void>;
|
|
28
30
|
getBuildCommand(): string;
|
|
29
31
|
getNodeVersionRequirement(): NodeVersionRequirement | null;
|
|
32
|
+
/**
|
|
33
|
+
* Read the installed Next.js version from node_modules and classify it
|
|
34
|
+
* against Webflow's support table. Call only after dependencies are installed.
|
|
35
|
+
*/
|
|
36
|
+
getFrameworkSupport(): FrameworkSupportStatus | null;
|
|
37
|
+
/**
|
|
38
|
+
* Warn (log port) when the installed Next.js major is out of support.
|
|
39
|
+
* Telemetry tags are applied by the host on the build span (see pipeline).
|
|
40
|
+
* Safe to call when support is unknown (no-op).
|
|
41
|
+
*/
|
|
42
|
+
reportFrameworkSupport(): FrameworkSupportStatus | null;
|
|
30
43
|
static getOutputDeployMetadata(): BuildOutput;
|
|
31
44
|
/**
|
|
32
45
|
* Detect Next.js from built output: presence of `./worker.js` (the bundled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frameworks/nextjs/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frameworks/nextjs/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAYvD,qBAAa,aAAc,SAAQ,gBAAgB;IACjD,OAAgB,aAAa,SAAY;IAMzC,IAAI,IAAI,IAAI,aAAa,CAOxB;IAEQ,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAQlD;;OAEG;WACa,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,eAAe;IA2BtF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B,oBAAoB,IAAI,cAAc;IAStC,uBAAuB,IAAI,kBAAkB,EAAE;IAKzC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC1C,gBAAgB,IAAI,mBAAmB;IAQvC,qBAAqB,IAAI,MAAM,EAAE;IAIjC,uBAAuB,IAAI,MAAM;IAIjC,wBAAwB,IAAI,MAAM,EAAE;IAKpC,4CAA4C;IAC5C,OAAO,CAAC,kBAAkB;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAwBtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA8DrB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7D,eAAe,IAAI,MAAM;IAOzB,yBAAyB,IAAI,sBAAsB,GAAG,IAAI;IAO1D;;;OAGG;IACM,mBAAmB,IAAI,sBAAsB,GAAG,IAAI;IAY7D;;;;OAIG;IACM,sBAAsB,IAAI,sBAAsB,GAAG,IAAI;WAchD,uBAAuB,IAAI,WAAW;IAUtD;;;;OAIG;WACa,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAG5D"}
|
|
@@ -45,11 +45,13 @@ exports.NextJsBuilder = void 0;
|
|
|
45
45
|
* - Build output: .open-next/assets (static) + .open-next/worker.js (worker)
|
|
46
46
|
*/
|
|
47
47
|
const path = __importStar(require("node:path"));
|
|
48
|
+
const assetVersionToken_1 = require("../../assetVersionToken");
|
|
48
49
|
const fs = __importStar(require("node:fs"));
|
|
49
50
|
const base_1 = require("../base");
|
|
50
51
|
const errors_1 = require("../errors");
|
|
51
52
|
const utils_1 = require("../../utils");
|
|
52
53
|
const adapter_resolver_1 = require("./adapter-resolver");
|
|
54
|
+
const supportPolicy_1 = require("./supportPolicy");
|
|
53
55
|
/** Base path for Next.js templates. */
|
|
54
56
|
const TEMPLATE_BASE = path.join(__dirname, 'templates');
|
|
55
57
|
class NextJsBuilder extends base_1.FrameworkBuilder {
|
|
@@ -217,6 +219,7 @@ class NextJsBuilder extends base_1.FrameworkBuilder {
|
|
|
217
219
|
await (0, utils_1.envsubst)(log, templatePath, destPath, {
|
|
218
220
|
...process.env,
|
|
219
221
|
...userEnv,
|
|
222
|
+
...(0, assetVersionToken_1.assetVersionTemplateEnvironment)(this.ctx.assetVersionToken),
|
|
220
223
|
});
|
|
221
224
|
// Copy webflow-loader.ts.
|
|
222
225
|
const loader = this.getWebflowLoader();
|
|
@@ -234,8 +237,14 @@ class NextJsBuilder extends base_1.FrameworkBuilder {
|
|
|
234
237
|
// ───────────────────────────────────────────────────────────────────────────
|
|
235
238
|
// BUILD
|
|
236
239
|
// ───────────────────────────────────────────────────────────────────────────
|
|
240
|
+
async validateInstalledDependencies() {
|
|
241
|
+
(0, assetVersionToken_1.assertAssetVersionFrameworkSupport)(this.ctx.assetVersionToken, 'nextjs', this.ctx.cwd);
|
|
242
|
+
}
|
|
237
243
|
getBuildCommand() {
|
|
238
|
-
|
|
244
|
+
// Always pass OpenNext's override so out-of-support majors (e.g. Next 15
|
|
245
|
+
// after 2026-10-21) still build. We warn + track separately via
|
|
246
|
+
// reportFrameworkSupport — see supportPolicy.ts.
|
|
247
|
+
return 'opennextjs-cloudflare build --dangerouslyUseUnsupportedNextVersion';
|
|
239
248
|
}
|
|
240
249
|
getNodeVersionRequirement() {
|
|
241
250
|
return {
|
|
@@ -243,6 +252,37 @@ class NextJsBuilder extends base_1.FrameworkBuilder {
|
|
|
243
252
|
severity: 'error',
|
|
244
253
|
};
|
|
245
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Read the installed Next.js version from node_modules and classify it
|
|
257
|
+
* against Webflow's support table. Call only after dependencies are installed.
|
|
258
|
+
*/
|
|
259
|
+
getFrameworkSupport() {
|
|
260
|
+
const installed = (0, supportPolicy_1.readInstalledNextVersion)(this.cwd);
|
|
261
|
+
if (!installed)
|
|
262
|
+
return null;
|
|
263
|
+
const status = (0, supportPolicy_1.getNextSupportStatus)(installed);
|
|
264
|
+
if (!status)
|
|
265
|
+
return null;
|
|
266
|
+
return {
|
|
267
|
+
version: status.version,
|
|
268
|
+
supported: status.supported,
|
|
269
|
+
supportEndedOn: status.supportEndedOn,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Warn (log port) when the installed Next.js major is out of support.
|
|
274
|
+
* Telemetry tags are applied by the host on the build span (see pipeline).
|
|
275
|
+
* Safe to call when support is unknown (no-op).
|
|
276
|
+
*/
|
|
277
|
+
reportFrameworkSupport() {
|
|
278
|
+
const status = this.getFrameworkSupport();
|
|
279
|
+
if (!status)
|
|
280
|
+
return null;
|
|
281
|
+
if (!status.supported) {
|
|
282
|
+
this.log.warn((0, supportPolicy_1.formatNextOutOfSupportWarning)(status));
|
|
283
|
+
}
|
|
284
|
+
return status;
|
|
285
|
+
}
|
|
246
286
|
// ───────────────────────────────────────────────────────────────────────────
|
|
247
287
|
// OUTPUT
|
|
248
288
|
// ───────────────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/frameworks/nextjs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,gDAAkC;AAClC,4CAA8B;AAE9B,kCAA2C;AAY3C,sCAAqD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/frameworks/nextjs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** End-of-support dates (UTC calendar day) keyed by Next.js major. */
|
|
2
|
+
export declare const NEXT_SUPPORT_ENDS: Record<number, string>;
|
|
3
|
+
export type NextSupportStatus = {
|
|
4
|
+
version: string;
|
|
5
|
+
major: number;
|
|
6
|
+
supported: boolean;
|
|
7
|
+
/** ISO date string from {@link NEXT_SUPPORT_ENDS} when unsupported; otherwise null. */
|
|
8
|
+
supportEndedOn: string | null;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Classify an installed Next.js version against {@link NEXT_SUPPORT_ENDS}.
|
|
12
|
+
* - Majors newer than the table (e.g. 17) count as supported.
|
|
13
|
+
* - Majors older than the oldest table entry (e.g. 11) count as unsupported.
|
|
14
|
+
* - Unparseable versions return null (caller skips warning / telemetry fields).
|
|
15
|
+
*/
|
|
16
|
+
export declare function getNextSupportStatus(installedVersion: string, now?: Date): NextSupportStatus | null;
|
|
17
|
+
/**
|
|
18
|
+
* Read the concrete installed Next.js version from
|
|
19
|
+
* `node_modules/next/package.json` under `cwd`. Returns null when missing or
|
|
20
|
+
* unreadable — never falls back to the package.json range string.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readInstalledNextVersion(cwd: string): string | null;
|
|
23
|
+
/** User-facing warning when a Next.js major is past its support window. */
|
|
24
|
+
export declare function formatNextOutOfSupportWarning(status: {
|
|
25
|
+
version: string;
|
|
26
|
+
supportEndedOn: string | null;
|
|
27
|
+
}): string;
|
|
28
|
+
//# sourceMappingURL=supportPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supportPolicy.d.ts","sourceRoot":"","sources":["../../../src/frameworks/nextjs/supportPolicy.ts"],"names":[],"mappings":"AAYA,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC;AAMF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,MAAM,EACxB,GAAG,GAAE,IAAiB,GACrB,iBAAiB,GAAG,IAAI,CAkC1B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASnE;AAED,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,MAAM,CAOT"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.NEXT_SUPPORT_ENDS = void 0;
|
|
40
|
+
exports.getNextSupportStatus = getNextSupportStatus;
|
|
41
|
+
exports.readInstalledNextVersion = readInstalledNextVersion;
|
|
42
|
+
exports.formatNextOutOfSupportWarning = formatNextOutOfSupportWarning;
|
|
43
|
+
/**
|
|
44
|
+
* Webflow's Next.js major support window.
|
|
45
|
+
*
|
|
46
|
+
* Mirrors OpenNext's date-based cutoff (2 years after each major's release) so
|
|
47
|
+
* we can warn and track out-of-support builds while still allowing them via
|
|
48
|
+
* `--dangerouslyUseUnsupportedNextVersion`. Owned here so CLI and server builds
|
|
49
|
+
* share one table.
|
|
50
|
+
*/
|
|
51
|
+
const fs = __importStar(require("node:fs"));
|
|
52
|
+
const path = __importStar(require("node:path"));
|
|
53
|
+
const semver_1 = __importDefault(require("semver"));
|
|
54
|
+
/** End-of-support dates (UTC calendar day) keyed by Next.js major. */
|
|
55
|
+
exports.NEXT_SUPPORT_ENDS = {
|
|
56
|
+
16: '2027-10-21',
|
|
57
|
+
15: '2026-10-21',
|
|
58
|
+
14: '2025-10-26',
|
|
59
|
+
13: '2024-10-26',
|
|
60
|
+
12: '2023-10-26',
|
|
61
|
+
};
|
|
62
|
+
const NEXT_SUPPORT_MAJORS = Object.keys(exports.NEXT_SUPPORT_ENDS).map(Number);
|
|
63
|
+
const OLDEST_NEXT_MAJOR = Math.min(...NEXT_SUPPORT_MAJORS);
|
|
64
|
+
const NEWEST_NEXT_MAJOR = Math.max(...NEXT_SUPPORT_MAJORS);
|
|
65
|
+
/**
|
|
66
|
+
* Classify an installed Next.js version against {@link NEXT_SUPPORT_ENDS}.
|
|
67
|
+
* - Majors newer than the table (e.g. 17) count as supported.
|
|
68
|
+
* - Majors older than the oldest table entry (e.g. 11) count as unsupported.
|
|
69
|
+
* - Unparseable versions return null (caller skips warning / telemetry fields).
|
|
70
|
+
*/
|
|
71
|
+
function getNextSupportStatus(installedVersion, now = new Date()) {
|
|
72
|
+
const parsed = semver_1.default.parse(semver_1.default.coerce(installedVersion)?.version ?? null);
|
|
73
|
+
if (!parsed)
|
|
74
|
+
return null;
|
|
75
|
+
const major = parsed.major;
|
|
76
|
+
const supportEndedOn = exports.NEXT_SUPPORT_ENDS[major];
|
|
77
|
+
if (supportEndedOn === undefined) {
|
|
78
|
+
if (major > NEWEST_NEXT_MAJOR) {
|
|
79
|
+
return {
|
|
80
|
+
version: parsed.version,
|
|
81
|
+
major,
|
|
82
|
+
supported: true,
|
|
83
|
+
supportEndedOn: null,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// major < OLDEST_NEXT_MAJOR — left support at least as early as the oldest entry.
|
|
87
|
+
return {
|
|
88
|
+
version: parsed.version,
|
|
89
|
+
major,
|
|
90
|
+
supported: false,
|
|
91
|
+
supportEndedOn: exports.NEXT_SUPPORT_ENDS[OLDEST_NEXT_MAJOR],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const endMs = Date.parse(`${supportEndedOn}T00:00:00.000Z`);
|
|
95
|
+
const supported = now.getTime() < endMs;
|
|
96
|
+
return {
|
|
97
|
+
version: parsed.version,
|
|
98
|
+
major,
|
|
99
|
+
supported,
|
|
100
|
+
supportEndedOn: supported ? null : supportEndedOn,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Read the concrete installed Next.js version from
|
|
105
|
+
* `node_modules/next/package.json` under `cwd`. Returns null when missing or
|
|
106
|
+
* unreadable — never falls back to the package.json range string.
|
|
107
|
+
*/
|
|
108
|
+
function readInstalledNextVersion(cwd) {
|
|
109
|
+
const pkgPath = path.join(cwd, 'node_modules', 'next', 'package.json');
|
|
110
|
+
try {
|
|
111
|
+
if (!fs.existsSync(pkgPath))
|
|
112
|
+
return null;
|
|
113
|
+
const raw = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
114
|
+
return typeof raw.version === 'string' && raw.version.length > 0 ? raw.version : null;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** User-facing warning when a Next.js major is past its support window. */
|
|
121
|
+
function formatNextOutOfSupportWarning(status) {
|
|
122
|
+
const ended = status.supportEndedOn ?? 'unknown';
|
|
123
|
+
return (`⚠ Next.js ${status.version} is out of support since ${ended} and no longer ` +
|
|
124
|
+
`gets security fixes. Webflow Cloud will still build it for now. Upgrade to ` +
|
|
125
|
+
`Next.js 16: https://nextjs.org/docs/app/guides/upgrading/version-16`);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=supportPolicy.js.map
|