@unieojs/unio-evjs-adapter 0.1.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 ADDED
@@ -0,0 +1,151 @@
1
+ # @unieojs/unio-evjs-adapter
2
+
3
+ EVJS adapter for emitting Unio Build Output API (`uboa`) manifests.
4
+
5
+ ## Usage
6
+
7
+ Preferred integration is the EVJS plugin hook:
8
+
9
+ ```ts
10
+ import { defineConfig } from "@evjs/ev";
11
+ import { unio } from "@unieojs/unio-evjs-adapter";
12
+
13
+ export default defineConfig({
14
+ plugins: [unio()],
15
+ });
16
+ ```
17
+
18
+ After a production `ev build`, the plugin writes `.unio/output` with `unio.json`,
19
+ `routes.json`, `middleware.json`, `artifacts.json`, static assets, and an
20
+ `evjs` serverFunction when the EVJS `buildEnd` server manifest has an entry.
21
+
22
+ `build()` and `emitUboa()` are lower-level APIs used by the plugin and expect
23
+ manifest objects supplied by `@evjs/ev` build hooks. They do not invoke `ev build`,
24
+ modify user config, or parse EVJS manifest files from `dist`.
25
+
26
+ ## Extension Hooks
27
+
28
+ The emitter stays platform-neutral. Deployment integrations that need
29
+ platform-specific metadata or sidecar files can extend the generic uboa output
30
+ through `unio()` or `emitUboa()` options instead of forking the EVJS adapter.
31
+
32
+ The available hooks are:
33
+
34
+ - `extendServerFunctionDescriptor`: called when a server function is emitted.
35
+ It receives the generated `serverFunction.json` descriptor and must return an
36
+ object. Use this to add generic deployment metadata, `x-*` extension records,
37
+ environment variables, or runtime bindings.
38
+ - `extendArtifacts`: called after built-in artifacts are collected and before
39
+ `artifacts.json` is written. It receives the current artifact list and must
40
+ return the final artifact list. Use this to register sidecars such as
41
+ `apiSchema` artifacts.
42
+ - `afterEmit`: called after the adapter writes the uboa manifests. Use this to
43
+ write files referenced by extra artifacts or descriptor metadata.
44
+
45
+ Example:
46
+
47
+ ```ts
48
+ import fs from "node:fs/promises";
49
+ import path from "node:path";
50
+ import { defineConfig } from "@evjs/ev";
51
+ import { unio } from "@unieojs/unio-evjs-adapter";
52
+
53
+ export default defineConfig({
54
+ plugins: [
55
+ unio({
56
+ extendServerFunctionDescriptor({ descriptor, serverFunctionName }) {
57
+ return {
58
+ ...descriptor,
59
+ deployment: { mode: "dedicated" },
60
+ "x-example-platform": {
61
+ resourceName: serverFunctionName,
62
+ manifest: `api-schemas/${serverFunctionName}/metadata.json`,
63
+ },
64
+ };
65
+ },
66
+ extendArtifacts({ artifacts, serverFunctionName }) {
67
+ return [
68
+ ...artifacts,
69
+ {
70
+ id: `${serverFunctionName}-api-schema`,
71
+ resourceKind: "apiSchema",
72
+ schemaFormat: "oneapi",
73
+ path: `api-schemas/${serverFunctionName}/metadata.json`,
74
+ describes: {
75
+ resourceKind: "serverFunction",
76
+ id: serverFunctionName,
77
+ },
78
+ },
79
+ ];
80
+ },
81
+ async afterEmit({ outputDir, serverFunctionName }) {
82
+ await fs.mkdir(
83
+ path.join(outputDir, "api-schemas", serverFunctionName),
84
+ { recursive: true },
85
+ );
86
+ await fs.writeFile(
87
+ path.join(outputDir, "api-schemas", serverFunctionName, "metadata.json"),
88
+ `${JSON.stringify({ oneapi: "1.0.0" }, null, 2)}\n`,
89
+ "utf8",
90
+ );
91
+ },
92
+ }),
93
+ ],
94
+ });
95
+ ```
96
+
97
+ Hooks should keep platform-specific fields namespaced, for example under an
98
+ `x-*` key, so the base adapter contract remains framework-neutral.
99
+
100
+ The generated output is:
101
+
102
+ ```text
103
+ .unio/output/
104
+ unio.json
105
+ routes.json
106
+ middleware.json
107
+ artifacts.json
108
+ features.json
109
+ observability.json
110
+ static/
111
+ index.html
112
+ assets/
113
+ app.js
114
+ app.css
115
+ server-functions/
116
+ evjs/
117
+ serverFunction.json
118
+ main.js
119
+ chunks/
120
+ dep.js
121
+ api-schemas/
122
+ evjs/
123
+ metadata.json
124
+ ```
125
+
126
+ `apiSchema` entries in `artifacts.json` describe schema sidecars:
127
+
128
+ ```json
129
+ {
130
+ "id": "evjs-api-schema",
131
+ "resourceKind": "apiSchema",
132
+ "schemaFormat": "oneapi",
133
+ "path": "api-schemas/evjs/metadata.json",
134
+ "describes": {
135
+ "resourceKind": "serverFunction",
136
+ "id": "evjs"
137
+ }
138
+ }
139
+ ```
140
+
141
+ `describes` is optional. When present, validation checks that the referenced
142
+ artifact exists in the same `artifacts.json`.
143
+
144
+ ## P0 Behavior
145
+
146
+ - CSR-only EVJS builds emit static-only uboa output.
147
+ - Fullstack EVJS builds map the whole server bundle to one Fetch-style
148
+ `serverFunction` named `evjs`.
149
+ - `POST /api/fn` is the default EVJS server function route.
150
+ - REST route handlers are bound through `/api/:path*` and marked degraded until
151
+ EVJS exposes stable server route metadata.
@@ -0,0 +1,2 @@
1
+ import type { AdapterBuildResult, BuildOptions } from "./types.js";
2
+ export declare function build(options: BuildOptions): Promise<AdapterBuildResult>;
package/dist/build.js ADDED
@@ -0,0 +1,5 @@
1
+ import { emitUboa } from "./emit.js";
2
+ export async function build(options) {
3
+ return emitUboa(options);
4
+ }
5
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB;IAC/C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DetectResult } from "./types.js";
2
+ export declare function detect(options: {
3
+ cwd: string;
4
+ }): Promise<DetectResult>;
package/dist/detect.js ADDED
@@ -0,0 +1,56 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { isRecord, pathExists, readJson } from "./utils.js";
4
+ const CONFIG_FILES = ["ev.config.ts", "ev.config.js", "ev.config.mjs"];
5
+ function hasDependency(pkg, name) {
6
+ return Boolean(pkg.dependencies?.[name] ??
7
+ pkg.devDependencies?.[name] ??
8
+ pkg.peerDependencies?.[name]);
9
+ }
10
+ function asPackageField(value) {
11
+ return isRecord(value) ? value : undefined;
12
+ }
13
+ function toPackageJson(value) {
14
+ if (!isRecord(value))
15
+ return {};
16
+ return {
17
+ scripts: asPackageField(value.scripts),
18
+ dependencies: asPackageField(value.dependencies),
19
+ devDependencies: asPackageField(value.devDependencies),
20
+ peerDependencies: asPackageField(value.peerDependencies),
21
+ };
22
+ }
23
+ export async function detect(options) {
24
+ const cwd = path.resolve(options.cwd);
25
+ const signals = [];
26
+ const configFiles = [];
27
+ for (const file of CONFIG_FILES) {
28
+ if (await pathExists(path.join(cwd, file))) {
29
+ configFiles.push(file);
30
+ signals.push(`config:${file}`);
31
+ }
32
+ }
33
+ const packageJsonPath = path.join(cwd, "package.json");
34
+ if (await pathExists(packageJsonPath)) {
35
+ const pkg = toPackageJson(await readJson(packageJsonPath));
36
+ for (const dep of ["@evjs/ev", "@evjs/cli"]) {
37
+ if (hasDependency(pkg, dep)) {
38
+ signals.push(`dependency:${dep}`);
39
+ }
40
+ }
41
+ for (const [name, script] of Object.entries(pkg.scripts ?? {})) {
42
+ if (/\bev\s+build\b/.test(script) || /\bevjs\s+build\b/.test(script)) {
43
+ signals.push(`script:${name}`);
44
+ }
45
+ }
46
+ }
47
+ else {
48
+ await fs.stat(cwd);
49
+ }
50
+ return {
51
+ detected: signals.length > 0,
52
+ signals,
53
+ configFiles,
54
+ };
55
+ }
56
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
package/dist/emit.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import type { AdapterBuildResult, EmitUboaOptions } from "./types.js";
2
+ export declare function emitUboa(options: EmitUboaOptions): Promise<AdapterBuildResult>;
package/dist/emit.js ADDED
@@ -0,0 +1,262 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { assertClientManifest, assertServerManifest, } from "./manifest.js";
4
+ import { isRecord, normalizeRoutePath, pathExists, routeId, toPosix, writeJson, } from "./utils.js";
5
+ const ADAPTER_PACKAGE = "@unieojs/unio-evjs-adapter";
6
+ const UBOA_VERSION = "1.0.0";
7
+ const DEFAULT_SERVER_FUNCTION = "evjs";
8
+ const DEFAULT_SERVER_ENDPOINT = "/api/fn";
9
+ function outputRoot(cwd, outputDir) {
10
+ return path.resolve(cwd, outputDir ?? ".unio/output");
11
+ }
12
+ async function resolveBuildInputs(options) {
13
+ const cwd = path.resolve(options.cwd ?? process.cwd());
14
+ const clientManifest = options.clientManifest;
15
+ const serverManifest = options.serverManifest;
16
+ if (!clientManifest) {
17
+ throw new Error("EVJS client manifest must be provided from @evjs/ev buildEnd metadata.");
18
+ }
19
+ assertClientManifest(clientManifest);
20
+ if (serverManifest) {
21
+ assertServerManifest(serverManifest);
22
+ }
23
+ return {
24
+ clientManifest,
25
+ serverManifest,
26
+ clientRoot: await resolveClientRoot(cwd, clientManifest, serverManifest),
27
+ serverRoot: path.join(cwd, "dist/server"),
28
+ };
29
+ }
30
+ async function resolveClientRoot(cwd, clientManifest, serverManifest) {
31
+ const fullstackClientRoot = path.join(cwd, "dist/client");
32
+ const flatClientRoot = path.join(cwd, "dist");
33
+ if (serverManifest ||
34
+ (clientManifest.pages &&
35
+ Object.keys(clientManifest.pages).length > 0)) {
36
+ return fullstackClientRoot;
37
+ }
38
+ if (await pathExists(path.join(flatClientRoot, "index.html"))) {
39
+ return flatClientRoot;
40
+ }
41
+ return await pathExists(fullstackClientRoot)
42
+ ? fullstackClientRoot
43
+ : flatClientRoot;
44
+ }
45
+ async function copyIfExists(source, dest) {
46
+ if (!(await pathExists(source)))
47
+ return false;
48
+ await fs.mkdir(path.dirname(dest), { recursive: true });
49
+ await fs.cp(source, dest, { recursive: true });
50
+ return true;
51
+ }
52
+ function buildContentVersion() {
53
+ const parts = [
54
+ process.env.SPRINT_ID ? `SPRINT=${process.env.SPRINT_ID}` : undefined,
55
+ process.env.COMMIT_ID ? `COMMIT=${process.env.COMMIT_ID}` : undefined,
56
+ ].filter(Boolean);
57
+ return parts.length > 0 ? parts.join(", ") : "local";
58
+ }
59
+ function hasServerEntry(manifest) {
60
+ return Boolean(manifest?.entry);
61
+ }
62
+ function hasRscMetadata(manifest) {
63
+ if (!isRecord(manifest) || !isRecord(manifest.rsc))
64
+ return false;
65
+ return Object.keys(manifest.rsc).length > 0;
66
+ }
67
+ function buildCapabilities(clientManifest, serverManifest) {
68
+ const serverEnabled = hasServerEntry(serverManifest);
69
+ const hasFns = serverEnabled && Object.keys(serverManifest.fns).length > 0;
70
+ let serverFunctionIntrospection = "unsupported";
71
+ if (serverEnabled) {
72
+ serverFunctionIntrospection = hasFns ? "supported" : "degraded";
73
+ }
74
+ const rsc = hasRscMetadata(serverManifest)
75
+ ? "partial"
76
+ : "unsupported";
77
+ return {
78
+ static: clientManifest ? "supported" : "unsupported",
79
+ routes: "supported",
80
+ serverlessFunction: serverEnabled ? "supported" : "unsupported",
81
+ serverFunctionIntrospection,
82
+ restRouteIntrospection: serverEnabled ? "degraded" : "unsupported",
83
+ edgeMiddleware: "unsupported",
84
+ rsc,
85
+ imageOptimization: "unsupported",
86
+ };
87
+ }
88
+ function staticRoutesForRoutes(routes, entry) {
89
+ const sourceRoutes = routes && routes.length > 0 ? routes : [{ path: "/" }, { path: "*" }];
90
+ const seen = new Set();
91
+ const result = [];
92
+ for (const route of sourceRoutes) {
93
+ const match = normalizeRoutePath(route.path);
94
+ const key = `${match}:${entry}`;
95
+ if (seen.has(key))
96
+ continue;
97
+ seen.add(key);
98
+ result.push({
99
+ id: routeId("static", match),
100
+ match,
101
+ type: "static",
102
+ entry,
103
+ });
104
+ }
105
+ return result;
106
+ }
107
+ function pageEntry(pageName) {
108
+ return `static/${pageName}.html`;
109
+ }
110
+ function pageRoutes(pages) {
111
+ const routes = [];
112
+ for (const pageName of Object.keys(pages)) {
113
+ const match = pageName === "index" ? "/" : normalizeRoutePath(pageName);
114
+ routes.push({
115
+ id: routeId("static", match),
116
+ match,
117
+ type: "static",
118
+ entry: pageEntry(pageName),
119
+ });
120
+ }
121
+ return routes;
122
+ }
123
+ function buildStaticRoutes(clientManifest) {
124
+ if (clientManifest.pages && Object.keys(clientManifest.pages).length > 0) {
125
+ return pageRoutes(clientManifest.pages);
126
+ }
127
+ return staticRoutesForRoutes(clientManifest.routes, "static/index.html");
128
+ }
129
+ function serverRoutes(serverFunctionName, endpoint) {
130
+ return [
131
+ {
132
+ id: "server-evjs-rpc",
133
+ match: endpoint,
134
+ type: "serverFunction",
135
+ serverFunction: serverFunctionName,
136
+ methods: ["POST"],
137
+ },
138
+ {
139
+ id: "server-evjs-api-fallback",
140
+ match: "/api/:path*",
141
+ type: "serverFunction",
142
+ serverFunction: serverFunctionName,
143
+ },
144
+ ];
145
+ }
146
+ async function emitServerFunction(root, serverRoot, serverManifest, serverFunctionName, endpoint, extendDescriptor) {
147
+ const functionDir = path.join(root, "server-functions", serverFunctionName);
148
+ const sourceEntry = path.join(serverRoot, serverManifest.entry);
149
+ if (!(await pathExists(sourceEntry))) {
150
+ throw new Error(`EVJS server entry not found: ${toPosix(sourceEntry)}`);
151
+ }
152
+ await fs.mkdir(path.dirname(functionDir), { recursive: true });
153
+ await fs.cp(serverRoot, functionDir, { recursive: true });
154
+ const descriptor = {
155
+ name: serverFunctionName,
156
+ runtime: "nodejs22",
157
+ entry: toPosix(serverManifest.entry),
158
+ handler: "default",
159
+ handlerProtocol: "fetch",
160
+ memory: 512,
161
+ maxDuration: 10,
162
+ environment: {},
163
+ bindings: {},
164
+ framework: {
165
+ name: "evjs",
166
+ serverFunctionEndpoint: endpoint,
167
+ serverManifest: "dist/server/manifest.json",
168
+ serverFunctions: Object.keys(serverManifest.fns),
169
+ },
170
+ source: {
171
+ entry: `dist/server/${serverManifest.entry}`,
172
+ },
173
+ };
174
+ const extendedDescriptor = extendDescriptor
175
+ ? await extendDescriptor({ descriptor, serverFunctionName })
176
+ : descriptor;
177
+ if (!isRecord(extendedDescriptor)) {
178
+ throw new Error("extendServerFunctionDescriptor must return an object.");
179
+ }
180
+ await writeJson(path.join(functionDir, "serverFunction.json"), extendedDescriptor);
181
+ }
182
+ export async function emitUboa(options) {
183
+ const cwd = path.resolve(options.cwd ?? process.cwd());
184
+ const root = outputRoot(cwd, options.outputDir);
185
+ const serverFunctionName = options.serverFunctionName ?? DEFAULT_SERVER_FUNCTION;
186
+ const serverEndpoint = options.serverFunctionEndpoint ?? DEFAULT_SERVER_ENDPOINT;
187
+ const { clientManifest, serverManifest, clientRoot, serverRoot } = await resolveBuildInputs({ ...options, cwd });
188
+ const warnings = [];
189
+ await fs.rm(root, { recursive: true, force: true });
190
+ await fs.mkdir(root, { recursive: true });
191
+ await copyIfExists(clientRoot, path.join(root, "static"));
192
+ const routes = buildStaticRoutes(clientManifest);
193
+ const middleware = [];
194
+ let artifacts = [
195
+ { id: "static", resourceKind: "assets", path: "static" },
196
+ ];
197
+ if (hasServerEntry(serverManifest)) {
198
+ await emitServerFunction(root, serverRoot, serverManifest, serverFunctionName, serverEndpoint, options.extendServerFunctionDescriptor);
199
+ routes.push(...serverRoutes(serverFunctionName, serverEndpoint));
200
+ artifacts.push({
201
+ id: serverFunctionName,
202
+ resourceKind: "serverFunction",
203
+ path: `server-functions/${serverFunctionName}`,
204
+ });
205
+ if (Object.keys(serverManifest.fns).length === 0) {
206
+ warnings.push("EVJS serverManifest.fns is empty; server function introspection is degraded.");
207
+ }
208
+ }
209
+ if (options.extendArtifacts) {
210
+ const extendedArtifacts = await options.extendArtifacts({
211
+ artifacts,
212
+ serverFunctionName,
213
+ });
214
+ if (!Array.isArray(extendedArtifacts)) {
215
+ throw new Error("extendArtifacts must return an array.");
216
+ }
217
+ artifacts = extendedArtifacts;
218
+ }
219
+ const capabilities = buildCapabilities(clientManifest, serverManifest);
220
+ await writeJson(path.join(root, "unio.json"), {
221
+ version: UBOA_VERSION,
222
+ framework: {
223
+ name: "evjs",
224
+ version: "unknown",
225
+ adapter: ADAPTER_PACKAGE,
226
+ },
227
+ build: {
228
+ contentVersion: buildContentVersion(),
229
+ buildId: process.env.BUILD_ID || process.env.TASK_ID || "local",
230
+ },
231
+ capabilities,
232
+ warnings,
233
+ });
234
+ await writeJson(path.join(root, "routes.json"), routes);
235
+ await writeJson(path.join(root, "middleware.json"), middleware);
236
+ await writeJson(path.join(root, "artifacts.json"), { artifacts });
237
+ await writeJson(path.join(root, "features.json"), {
238
+ features: [],
239
+ evjs: {
240
+ serverFunctions: serverManifest ? Object.keys(serverManifest.fns) : [],
241
+ routeHandlers: hasServerEntry(serverManifest) ? "degraded" : "unsupported",
242
+ },
243
+ });
244
+ await writeJson(path.join(root, "observability.json"), {
245
+ adapter: ADAPTER_PACKAGE,
246
+ framework: "evjs",
247
+ buildId: process.env.BUILD_ID || process.env.TASK_ID || "local",
248
+ });
249
+ await options.afterEmit?.({
250
+ outputDir: root,
251
+ serverFunctionName,
252
+ });
253
+ return {
254
+ outputDir: root,
255
+ routes,
256
+ middleware,
257
+ artifacts,
258
+ capabilities,
259
+ warnings,
260
+ };
261
+ }
262
+ //# sourceMappingURL=emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../src/emit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { build } from "./build.js";
2
+ export { detect } from "./detect.js";
3
+ export { emitUboa } from "./emit.js";
4
+ export { unio } from "./plugin.js";
5
+ export { validate } from "./validate.js";
6
+ export type { AdapterBuildResult, AfterEmitContext, BuildOptions, CapabilityStatus, ClientManifest, DetectResult, EmitUboaOptions, EvBuildResult, EvPlugin, EvPluginContext, EvPluginHooks, ExtendArtifactsContext, ExtendServerFunctionDescriptorContext, PageManifestEntry, RouteEntry, ServerFnEntry, ServerManifest, UboaApiSchemaArtifact, UboaApiSchemaFormat, UboaArtifact, UboaArtifactReference, UboaArtifactResourceKind, UboaAssetsArtifact, UboaCapabilities, UboaEdgeBundleArtifact, UboaEdgeFunctionRoute, UboaEdgeMiddleware, UboaMiddleware, UboaRoute, UboaServerFunctionDescriptor, UboaServerFunctionArtifact, UboaServerFunctionRoute, UboaServerlessMiddleware, UboaStaticRoute, UnioEvjsAdapterOptions, ValidationResult, } from "./types.js";
7
+ export { unio as default } from "./plugin.js";
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { build } from "./build.js";
2
+ export { detect } from "./detect.js";
3
+ export { emitUboa } from "./emit.js";
4
+ export { unio } from "./plugin.js";
5
+ export { validate } from "./validate.js";
6
+ export { unio as default } from "./plugin.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAwCzC,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ClientManifest, ServerManifest } from "./types.js";
2
+ export declare function assertClientManifest(value: unknown): asserts value is ClientManifest;
3
+ export declare function assertServerManifest(value: unknown): asserts value is ServerManifest;
@@ -0,0 +1,80 @@
1
+ import { isRecord, isStringArray } from "./utils.js";
2
+ function invalidManifest(kind, reason) {
3
+ return new Error(`Invalid EVJS ${kind} manifest: ${reason}`);
4
+ }
5
+ function assertRouteEntry(value, label) {
6
+ if (!isRecord(value) || typeof value.path !== "string") {
7
+ throw invalidManifest("client", `${label}.path must be a string`);
8
+ }
9
+ }
10
+ function assertRoutes(value, label) {
11
+ if (!Array.isArray(value)) {
12
+ throw invalidManifest("client", `${label} must be an array`);
13
+ }
14
+ value.forEach((route, index) => {
15
+ assertRouteEntry(route, `${label}[${index}]`);
16
+ });
17
+ }
18
+ function assertPageManifestEntry(value, label) {
19
+ if (!isRecord(value)) {
20
+ throw invalidManifest("client", `${label} must be an object`);
21
+ }
22
+ assertAssets(value.assets, `${label}.assets`);
23
+ if (value.routes !== undefined) {
24
+ assertRoutes(value.routes, `${label}.routes`);
25
+ }
26
+ }
27
+ function assertAssets(value, label) {
28
+ if (!isRecord(value)) {
29
+ throw invalidManifest("client", `${label} must be an object`);
30
+ }
31
+ if (!isStringArray(value.js)) {
32
+ throw invalidManifest("client", `${label}.js must be an array`);
33
+ }
34
+ if (!isStringArray(value.css)) {
35
+ throw invalidManifest("client", `${label}.css must be an array`);
36
+ }
37
+ }
38
+ export function assertClientManifest(value) {
39
+ if (!isRecord(value)) {
40
+ throw invalidManifest("client", "manifest must be an object");
41
+ }
42
+ if (value.version !== 1) {
43
+ throw invalidManifest("client", "version must be 1");
44
+ }
45
+ assertAssets(value.assets, "assets");
46
+ if (value.routes !== undefined) {
47
+ assertRoutes(value.routes, "routes");
48
+ }
49
+ if (value.pages !== undefined) {
50
+ if (!isRecord(value.pages)) {
51
+ throw invalidManifest("client", "pages must be an object");
52
+ }
53
+ for (const [pageName, page] of Object.entries(value.pages)) {
54
+ assertPageManifestEntry(page, `pages.${pageName}`);
55
+ }
56
+ }
57
+ }
58
+ function assertServerFnEntry(value, label) {
59
+ if (!isRecord(value)) {
60
+ throw invalidManifest("server", `${label} must be an object`);
61
+ }
62
+ }
63
+ export function assertServerManifest(value) {
64
+ if (!isRecord(value)) {
65
+ throw invalidManifest("server", "manifest must be an object");
66
+ }
67
+ if (value.version !== 1) {
68
+ throw invalidManifest("server", "version must be 1");
69
+ }
70
+ if (value.entry !== undefined && typeof value.entry !== "string") {
71
+ throw invalidManifest("server", "entry must be a string when present");
72
+ }
73
+ if (!isRecord(value.fns)) {
74
+ throw invalidManifest("server", "fns must be an object");
75
+ }
76
+ for (const [fnId, fnEntry] of Object.entries(value.fns)) {
77
+ assertServerFnEntry(fnEntry, `fns.${fnId}`);
78
+ }
79
+ }
80
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AdapterBuildResult, EvPlugin, UnioEvjsAdapterOptions } from "./types.js";
2
+ export declare const UNIO_PLUGIN_NAME = "@unieojs/unio-evjs-adapter";
3
+ export declare function createUnioPlugin(options?: UnioEvjsAdapterOptions, onResult?: (result: AdapterBuildResult) => void): EvPlugin;
4
+ export declare function unio(options?: UnioEvjsAdapterOptions): EvPlugin;
package/dist/plugin.js ADDED
@@ -0,0 +1,28 @@
1
+ import { emitUboa } from "./emit.js";
2
+ export const UNIO_PLUGIN_NAME = "@unieojs/unio-evjs-adapter";
3
+ export function createUnioPlugin(options = {}, onResult) {
4
+ return {
5
+ name: UNIO_PLUGIN_NAME,
6
+ setup(ctx) {
7
+ const cwd = options.cwd ?? ctx.cwd;
8
+ const isProductionBuild = ctx.mode === "production";
9
+ return {
10
+ async buildEnd(result) {
11
+ if (!isProductionBuild)
12
+ return;
13
+ const adapterResult = await emitUboa({
14
+ ...options,
15
+ cwd,
16
+ clientManifest: result.clientManifest,
17
+ serverManifest: result.serverManifest,
18
+ });
19
+ onResult?.(adapterResult);
20
+ },
21
+ };
22
+ },
23
+ };
24
+ }
25
+ export function unio(options = {}) {
26
+ return createUnioPlugin(options);
27
+ }
28
+ //# sourceMappingURL=plugin.js.map