@unieojs/unio-nextjs-adapter 0.1.0 → 0.2.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/dist/uboa.js CHANGED
@@ -59,6 +59,20 @@ function routeFunctionName(group, route) {
59
59
  function isRecord(value) {
60
60
  return typeof value === "object" && value !== null && !Array.isArray(value);
61
61
  }
62
+ function isStringRecord(value) {
63
+ return isRecord(value) &&
64
+ Object.values(value).every((entry) => typeof entry === "string");
65
+ }
66
+ function isSafeRelativePath(value) {
67
+ if (!value)
68
+ return false;
69
+ if (path.isAbsolute(value) || path.win32.isAbsolute(value))
70
+ return false;
71
+ return !value.split(/[\\/]+/).includes("..");
72
+ }
73
+ function buildId(ctx) {
74
+ return ctx.buildId || process.env.BUILD_ID || process.env.TASK_ID || "local";
75
+ }
62
76
  function routeConfig(route) {
63
77
  return isRecord(route.config) ? route.config : {};
64
78
  }
@@ -66,6 +80,13 @@ function routeMaxDuration(route) {
66
80
  const maxDuration = routeConfig(route).maxDuration;
67
81
  return typeof maxDuration === "number" ? maxDuration : 10;
68
82
  }
83
+ function edgeRuntimeModulePath(route) {
84
+ const edgeRuntime = route.edgeRuntime;
85
+ if (isRecord(edgeRuntime) && typeof edgeRuntime.modulePath === "string") {
86
+ return edgeRuntime.modulePath;
87
+ }
88
+ return route.filePath;
89
+ }
69
90
  function matcherSource(matcher) {
70
91
  if (typeof matcher === "string")
71
92
  return matcher;
@@ -97,23 +118,71 @@ async function copyEntryFile(source, dest) {
97
118
  await fs.mkdir(path.dirname(dest), { recursive: true });
98
119
  await fs.copyFile(source, dest);
99
120
  }
100
- async function emitServerFunction(root, name, route) {
121
+ function routeSourceRoot(ctx) {
122
+ return ctx.repoRoot ?? ctx.projectDir;
123
+ }
124
+ function relativeRouteFile(ctx, filePath) {
125
+ const relativePath = path.relative(routeSourceRoot(ctx), filePath);
126
+ if (!relativePath || relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
127
+ return path.basename(filePath);
128
+ }
129
+ return toPosix(relativePath);
130
+ }
131
+ function assetTargetPath(ctx, assetKey, assetPath) {
132
+ return isSafeRelativePath(assetKey)
133
+ ? toPosix(assetKey)
134
+ : relativeRouteFile(ctx, assetPath);
135
+ }
136
+ async function copyRoutePayload(functionDir, ctx, route) {
137
+ const entry = relativeRouteFile(ctx, route.filePath);
138
+ await copyEntryFile(route.filePath, path.join(functionDir, entry));
139
+ for (const assetMap of [route.assets, route.wasmAssets]) {
140
+ if (!isStringRecord(assetMap))
141
+ continue;
142
+ for (const [assetKey, assetPath] of Object.entries(assetMap)) {
143
+ await copyEntryFile(assetPath, path.join(functionDir, assetTargetPath(ctx, assetKey, assetPath)));
144
+ }
145
+ }
146
+ return entry;
147
+ }
148
+ async function emitServerFunction(root, ctx, name, route, routeGroup, options) {
101
149
  const functionDir = path.join(root, "server-functions", name);
102
- await copyEntryFile(route.filePath, path.join(functionDir, "index.js"));
103
- await writeJson(path.join(functionDir, "serverFunction.json"), {
150
+ const entry = await copyRoutePayload(functionDir, ctx, route);
151
+ const descriptor = {
104
152
  name,
105
153
  runtime: "nodejs",
106
- entry: "index.js",
107
- handler: "default",
154
+ entry,
155
+ handler: "handler",
108
156
  memory: 512,
109
157
  maxDuration: routeMaxDuration(route),
110
158
  environment: {},
111
159
  bindings: {},
160
+ framework: {
161
+ name: "next",
162
+ version: ctx.nextVersion ?? "unknown",
163
+ routeGroup,
164
+ outputType: route.type,
165
+ },
112
166
  source: {
167
+ id: route.id,
113
168
  type: route.type,
114
169
  pathname: route.pathname,
170
+ filePath: relativeRouteFile(ctx, route.filePath),
115
171
  },
116
- });
172
+ };
173
+ const extendedDescriptor = options.extendServerFunctionDescriptor
174
+ ? await options.extendServerFunctionDescriptor({
175
+ descriptor,
176
+ name,
177
+ route,
178
+ routeGroup,
179
+ ctx,
180
+ })
181
+ : descriptor;
182
+ if (!isRecord(extendedDescriptor)) {
183
+ throw new Error("extendServerFunctionDescriptor must return an object.");
184
+ }
185
+ await writeJson(path.join(functionDir, "serverFunction.json"), extendedDescriptor);
117
186
  }
118
187
  function buildContentVersion() {
119
188
  const parts = [
@@ -126,24 +195,35 @@ function buildCapabilities(ctx) {
126
195
  const { outputs } = ctx;
127
196
  const nodeRoutes = ROUTE_GROUPS.some(([, key]) => outputs[key].some((route) => route.runtime === "nodejs"));
128
197
  const nodeMiddleware = outputs.middleware?.runtime === "nodejs";
198
+ const edgeMiddleware = outputs.middleware?.runtime === "edge";
199
+ const hasServerFunction = nodeRoutes || nodeMiddleware;
129
200
  return {
130
201
  static: outputs.staticFiles.length > 0 || outputs.prerenders.length > 0 ?
131
202
  "supported" : "unsupported",
132
203
  routes: "supported",
133
- serverlessFunction: nodeRoutes || nodeMiddleware ? "supported" : "unsupported",
134
- edgeMiddleware: "unsupported",
204
+ serverlessFunction: hasServerFunction ? "supported" : "unsupported",
205
+ serverFunctionIntrospection: hasServerFunction ? "supported" : "unsupported",
206
+ restRouteIntrospection: nodeRoutes ? "supported" : "unsupported",
207
+ edgeMiddleware: edgeMiddleware ? "supported" : "unsupported",
135
208
  isr: outputs.prerenders.length > 0 ? "degraded" : "unsupported",
136
209
  imageOptimization: "unsupported",
137
210
  };
138
211
  }
212
+ function buildWarnings(ctx) {
213
+ return ctx.outputs.prerenders.length > 0
214
+ ? ["Next.js prerenders are emitted as static assets; ISR metadata is degraded."]
215
+ : [];
216
+ }
139
217
  function assertSupportedOutputs(ctx) {
140
218
  const unsupported = [];
141
- if (ctx.outputs.middleware && ctx.outputs.middleware.runtime !== "nodejs") {
219
+ if (ctx.outputs.middleware &&
220
+ ctx.outputs.middleware.runtime !== "nodejs" &&
221
+ ctx.outputs.middleware.runtime !== "edge") {
142
222
  unsupported.push(`middleware (${ctx.outputs.middleware.runtime})`);
143
223
  }
144
224
  for (const [, key] of ROUTE_GROUPS) {
145
225
  for (const route of ctx.outputs[key]) {
146
- if (route.runtime !== "nodejs") {
226
+ if (route.runtime !== "nodejs" && route.runtime !== "edge") {
147
227
  unsupported.push(`${key}:${route.pathname || route.id} (${route.runtime})`);
148
228
  }
149
229
  }
@@ -152,21 +232,32 @@ function assertSupportedOutputs(ctx) {
152
232
  return;
153
233
  throw new Error("[unio-nextjs-adapter] Unsupported Next.js outputs: " +
154
234
  `${unsupported.join(", ")}. ` +
155
- "This adapter currently supports static assets and nodejs serverless functions only.");
235
+ "This adapter currently supports static assets, nodejs serverless functions, and edge functions only.");
156
236
  }
157
- async function emitCoreManifest(root, ctx) {
237
+ async function emitCoreManifest(root, ctx, capabilities, warnings) {
158
238
  await writeJson(path.join(root, "unio.json"), {
159
239
  version: UBOA_VERSION,
160
240
  framework: {
161
241
  name: "next",
162
- version: "unknown",
242
+ version: ctx.nextVersion ?? "unknown",
163
243
  adapter: ADAPTER_PACKAGE,
164
244
  },
165
245
  build: {
166
246
  contentVersion: buildContentVersion(),
167
- buildId: process.env.BUILD_ID || process.env.TASK_ID || "local",
247
+ buildId: buildId(ctx),
168
248
  },
169
- capabilities: buildCapabilities(ctx),
249
+ capabilities,
250
+ warnings,
251
+ });
252
+ }
253
+ async function emitFeaturesManifest(root) {
254
+ await writeJson(path.join(root, "features.json"), { features: [] });
255
+ }
256
+ async function emitObservabilityManifest(root, ctx) {
257
+ await writeJson(path.join(root, "observability.json"), {
258
+ adapter: ADAPTER_PACKAGE,
259
+ framework: "next",
260
+ buildId: buildId(ctx),
170
261
  });
171
262
  }
172
263
  async function emitStaticFiles(root, files) {
@@ -179,19 +270,42 @@ async function emitStaticFiles(root, files) {
179
270
  routes.push({
180
271
  id: `static-${slugify(file.pathname || file.id, "index")}`,
181
272
  match: normalizeStaticMatch(file),
182
- type: "static",
273
+ type: "assets",
183
274
  entry: staticEntryFor(file),
184
275
  });
185
276
  }
186
277
  return routes;
187
278
  }
188
- async function emitRouteOutputs(root, ctx) {
279
+ function sourceForRoute(ctx, route) {
280
+ return {
281
+ id: route.id,
282
+ type: route.type,
283
+ pathname: route.pathname,
284
+ filePath: relativeRouteFile(ctx, route.filePath),
285
+ };
286
+ }
287
+ async function emitRouteOutputs(root, ctx, options) {
189
288
  const routes = [];
190
289
  const artifacts = [];
191
290
  for (const [group, key] of ROUTE_GROUPS) {
192
291
  for (const route of ctx.outputs[key]) {
193
292
  const name = routeFunctionName(group, route);
194
- await emitServerFunction(root, name, route);
293
+ if (route.runtime === "edge") {
294
+ await emitEdgeBundle(root, ctx, name, route, key);
295
+ routes.push({
296
+ id: `edge-${name}`,
297
+ match: routeMatch(route),
298
+ type: "edgeFunction",
299
+ edgeFunction: name,
300
+ });
301
+ artifacts.push({
302
+ id: name,
303
+ resourceKind: "edgeBundle",
304
+ path: `edge/${name}`,
305
+ });
306
+ continue;
307
+ }
308
+ await emitServerFunction(root, ctx, name, route, key, options);
195
309
  routes.push({
196
310
  id: `server-${name}`,
197
311
  match: routeMatch(route),
@@ -207,17 +321,55 @@ async function emitRouteOutputs(root, ctx) {
207
321
  }
208
322
  return { routes, artifacts };
209
323
  }
210
- async function emitMiddleware(root, middleware) {
324
+ async function emitEdgeBundle(root, ctx, name, route, routeGroup) {
325
+ const entry = `edge/${name}/index.js`;
326
+ await copyEntryFile(edgeRuntimeModulePath(route), path.join(root, entry));
327
+ await writeJson(path.join(root, "edge", name, "edge.json"), {
328
+ name,
329
+ runtime: "edge",
330
+ entry: "index.js",
331
+ handlerProtocol: "fetch",
332
+ framework: {
333
+ name: "next",
334
+ version: ctx.nextVersion ?? "unknown",
335
+ routeGroup,
336
+ outputType: route.type,
337
+ },
338
+ source: sourceForRoute(ctx, route),
339
+ });
340
+ }
341
+ async function emitMiddleware(root, ctx, middleware, options) {
211
342
  if (!middleware)
212
343
  return { middleware: [], artifacts: [] };
213
344
  const name = "middleware";
214
- await emitServerFunction(root, name, middleware);
345
+ if (middleware.runtime === "edge") {
346
+ const entry = `edge/${name}/index.js`;
347
+ await emitEdgeBundle(root, ctx, name, middleware, "middleware");
348
+ return {
349
+ middleware: [
350
+ {
351
+ name,
352
+ match: middlewareMatchers(middleware),
353
+ runtime: "edge",
354
+ entry,
355
+ },
356
+ ],
357
+ artifacts: [
358
+ {
359
+ id: name,
360
+ resourceKind: "edgeBundle",
361
+ path: `edge/${name}`,
362
+ },
363
+ ],
364
+ };
365
+ }
366
+ await emitServerFunction(root, ctx, name, middleware, "middleware", options);
215
367
  return {
216
368
  middleware: [
217
369
  {
218
370
  name,
219
371
  match: middlewareMatchers(middleware),
220
- runtime: "serverless",
372
+ runtime: "nodejs",
221
373
  serverFunction: name,
222
374
  },
223
375
  ],
@@ -230,16 +382,24 @@ async function emitMiddleware(root, middleware) {
230
382
  ],
231
383
  };
232
384
  }
233
- export async function emitUboaOutput(ctx) {
385
+ async function emitDynamicServerOutput(root, ctx, options) {
386
+ const routeOutput = await emitRouteOutputs(root, ctx, options);
387
+ const middlewareOutput = await emitMiddleware(root, ctx, ctx.outputs.middleware, options);
388
+ return {
389
+ routes: routeOutput.routes,
390
+ middleware: middlewareOutput.middleware,
391
+ artifacts: [...routeOutput.artifacts, ...middlewareOutput.artifacts],
392
+ };
393
+ }
394
+ export async function emitUboaOutput(ctx, options = {}) {
234
395
  assertSupportedOutputs(ctx);
235
396
  const root = path.join(ctx.projectDir, ".unio", "output");
236
397
  await fs.rm(root, { recursive: true, force: true });
237
398
  await fs.mkdir(root, { recursive: true });
238
399
  const staticFiles = [...ctx.outputs.staticFiles, ...ctx.outputs.prerenders];
239
400
  const staticRoutes = await emitStaticFiles(root, staticFiles);
240
- const routeOutput = await emitRouteOutputs(root, ctx);
241
- const middlewareOutput = await emitMiddleware(root, ctx.outputs.middleware);
242
- const artifacts = [];
401
+ const dynamicOutput = await emitDynamicServerOutput(root, ctx, options);
402
+ let artifacts = [];
243
403
  if (staticFiles.length > 0) {
244
404
  artifacts.push({
245
405
  id: "static",
@@ -247,13 +407,42 @@ export async function emitUboaOutput(ctx) {
247
407
  path: "static",
248
408
  });
249
409
  }
250
- artifacts.push(...routeOutput.artifacts, ...middlewareOutput.artifacts);
251
- const routes = [...staticRoutes, ...routeOutput.routes];
252
- const middleware = middlewareOutput.middleware;
253
- await emitCoreManifest(root, ctx);
410
+ artifacts.push(...dynamicOutput.artifacts);
411
+ const routes = [...staticRoutes, ...dynamicOutput.routes];
412
+ const middleware = dynamicOutput.middleware;
413
+ const capabilities = buildCapabilities(ctx);
414
+ const warnings = buildWarnings(ctx);
415
+ if (options.extendArtifacts) {
416
+ const extendedArtifacts = await options.extendArtifacts({
417
+ artifacts,
418
+ routes,
419
+ middleware,
420
+ ctx,
421
+ });
422
+ if (!Array.isArray(extendedArtifacts)) {
423
+ throw new Error("extendArtifacts must return an array.");
424
+ }
425
+ artifacts = extendedArtifacts;
426
+ }
427
+ const generated = {
428
+ outputDir: root,
429
+ routes,
430
+ middleware,
431
+ artifacts,
432
+ capabilities,
433
+ warnings,
434
+ };
435
+ await emitCoreManifest(root, ctx, capabilities, warnings);
254
436
  await writeJson(path.join(root, "routes.json"), routes);
255
437
  await writeJson(path.join(root, "middleware.json"), middleware);
256
438
  await writeJson(path.join(root, "artifacts.json"), { artifacts });
257
- return { routes, middleware, artifacts };
439
+ await emitFeaturesManifest(root);
440
+ await emitObservabilityManifest(root, ctx);
441
+ await options.afterEmit?.({
442
+ outputDir: root,
443
+ generated,
444
+ ctx,
445
+ });
446
+ return generated;
258
447
  }
259
448
  //# sourceMappingURL=uboa.js.map
package/dist/uboa.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"uboa.js","sourceRoot":"","sources":["../src/uboa.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uboa.js","sourceRoot":"","sources":["../src/uboa.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unieojs/unio-nextjs-adapter",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Next.js adapter that emits Unio Build Output API manifests.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { modifyConfig } from "./modify-config.js";
2
2
  import { onBuildComplete } from "./on-build-complete.js";
3
- import type { NextAdapter } from "./types.js";
3
+ import type { NextAdapter, UnioNextjsAdapterOptions } from "./types.js";
4
4
 
5
5
  /**
6
6
  * Adapter name. Exported at top level so Next.js can read it when loading
@@ -10,27 +10,56 @@ import type { NextAdapter } from "./types.js";
10
10
  */
11
11
  export const name = "unio-nextjs-adapter";
12
12
 
13
- export const adapter: NextAdapter = {
14
- name,
15
- modifyConfig,
16
- onBuildComplete,
17
- };
13
+ export function createUnioNextjsAdapter(
14
+ options: UnioNextjsAdapterOptions = {},
15
+ ): NextAdapter {
16
+ return {
17
+ name,
18
+ modifyConfig,
19
+ onBuildComplete: (ctx) => onBuildComplete(ctx, options),
20
+ };
21
+ }
22
+
23
+ export const adapter: NextAdapter = createUnioNextjsAdapter();
18
24
 
19
25
  export default adapter;
20
26
 
21
27
  export { modifyConfig } from "./modify-config.js";
22
28
  export { onBuildComplete } from "./on-build-complete.js";
23
29
  export { emitUboaOutput } from "./uboa.js";
24
- export { assertSsgOnly } from "./assert-ssg.js";
25
30
  export type {
31
+ AfterEmitContext,
26
32
  BuildContext,
33
+ CapabilityStatus,
34
+ ExtendArtifactsContext,
35
+ ExtendServerFunctionDescriptorContext,
36
+ GeneratedUboa,
27
37
  ModifyConfigContext,
28
38
  NextAdapter,
29
39
  NextConfigLike,
30
40
  NextPhase,
41
+ NextRouteOutputGroup,
31
42
  Outputs,
32
43
  PrerenderOutput,
33
44
  RouteOutput,
34
45
  RoutingInfo,
35
46
  StaticFileOutput,
47
+ UboaApiSchemaArtifact,
48
+ UboaApiSchemaFormat,
49
+ UboaArtifact,
50
+ UboaArtifactReference,
51
+ UboaArtifactResourceKind,
52
+ UboaAssetsRoute,
53
+ UboaAssetsArtifact,
54
+ UboaCapabilities,
55
+ UboaEdgeBundleArtifact,
56
+ UboaEdgeFunctionRoute,
57
+ UboaEdgeMiddleware,
58
+ UboaMiddleware,
59
+ UboaNodejsMiddleware,
60
+ UboaRoute,
61
+ UboaServerFunctionDescriptor,
62
+ UboaServerFunctionArtifact,
63
+ UboaServerFunctionRoute,
64
+ UnioNextjsAdapterOptions,
36
65
  } from "./types.js";
@@ -2,7 +2,7 @@ import { promises as fs } from "node:fs";
2
2
  import path from "node:path";
3
3
 
4
4
  import { emitUboaOutput } from "./uboa.js";
5
- import type { BuildContext } from "./types.js";
5
+ import type { BuildContext, UnioNextjsAdapterOptions } from "./types.js";
6
6
 
7
7
  const LOG_PREFIX = "[unio-nextjs-adapter]";
8
8
 
@@ -30,6 +30,7 @@ async function cleanIntermediate(
30
30
  }
31
31
 
32
32
  try {
33
+ await fs.access(target);
33
34
  await fs.rm(target, { recursive: true, force: true });
34
35
  return true;
35
36
  } catch {
@@ -37,10 +38,21 @@ async function cleanIntermediate(
37
38
  }
38
39
  }
39
40
 
40
- export async function onBuildComplete(ctx: BuildContext): Promise<void> {
41
+ export async function onBuildComplete(
42
+ ctx: BuildContext,
43
+ options: UnioNextjsAdapterOptions = {},
44
+ ): Promise<void> {
41
45
  const { projectDir, distDir } = ctx;
42
46
 
43
- const uboa = await emitUboaOutput(ctx);
47
+ const uboa = await emitUboaOutput(ctx, options);
48
+ await logAndClean(uboa, projectDir, distDir);
49
+ }
50
+
51
+ async function logAndClean(
52
+ uboa: Awaited<ReturnType<typeof emitUboaOutput>>,
53
+ projectDir: string,
54
+ distDir: string,
55
+ ): Promise<void> {
44
56
  const uboaOutputDir = path.resolve(projectDir, ".unio", "output");
45
57
 
46
58
  const intermediates = new Set<string>();
@@ -50,7 +62,8 @@ export async function onBuildComplete(ctx: BuildContext): Promise<void> {
50
62
  for (const dir of intermediates) {
51
63
  const cleaned = await cleanIntermediate(dir, [projectDir, uboaOutputDir]);
52
64
  if (cleaned) {
53
- console.log(`${LOG_PREFIX} cleaned intermediate ${path.relative(projectDir, dir) || dir}/`);
65
+ const label = path.relative(projectDir, dir) || dir;
66
+ console.log(`${LOG_PREFIX} cleaned intermediate ${label}/`);
54
67
  }
55
68
  }
56
69