@demiurgejs/core 0.1.1 → 0.2.0-beta.2
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 +5 -0
- package/bin/demiurge.mjs +51 -0
- package/dist/adapter/testing.d.ts +33 -0
- package/dist/adapter/testing.d.ts.map +1 -0
- package/dist/adapter/testing.js +251 -0
- package/dist/adapter/testing.js.map +1 -0
- package/dist/browser/file-router.d.ts.map +1 -1
- package/dist/chunks/document-shell-D1xo6cEA.js +35 -0
- package/dist/chunks/document-shell-D1xo6cEA.js.map +1 -0
- package/dist/chunks/image-codec-BGTx_t5K.js +141 -0
- package/dist/chunks/image-codec-BGTx_t5K.js.map +1 -0
- package/dist/chunks/images-B9MqcjSA.js +339 -0
- package/dist/chunks/images-B9MqcjSA.js.map +1 -0
- package/dist/chunks/request-metadata-D5NrT8ks.js +642 -0
- package/dist/chunks/request-metadata-D5NrT8ks.js.map +1 -0
- package/dist/chunks/streaming-BQ1bykDo.js +469 -0
- package/dist/chunks/streaming-BQ1bykDo.js.map +1 -0
- package/dist/chunks/{testing-DR3eQAvY.js → testing-B_iMFYz_.js} +2376 -1927
- package/dist/chunks/testing-B_iMFYz_.js.map +1 -0
- package/dist/cli.d.ts +42 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +173 -0
- package/dist/cli.js.map +1 -0
- package/dist/document/deferred-scripts.d.ts +11 -0
- package/dist/document/deferred-scripts.d.ts.map +1 -0
- package/dist/document/index.d.ts +4 -2
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/render.d.ts +1 -1
- package/dist/document/render.d.ts.map +1 -1
- package/dist/document/scripts.d.ts +34 -1
- package/dist/document/scripts.d.ts.map +1 -1
- package/dist/edge/assets.d.ts +14 -0
- package/dist/edge/assets.d.ts.map +1 -0
- package/dist/edge/index.d.ts +19 -0
- package/dist/edge/index.d.ts.map +1 -0
- package/dist/edge/index.js +286 -0
- package/dist/edge/index.js.map +1 -0
- package/dist/edge/stores.d.ts +8 -0
- package/dist/edge/stores.d.ts.map +1 -0
- package/dist/edge/streaming.d.ts +7 -0
- package/dist/edge/streaming.d.ts.map +1 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +894 -1043
- package/dist/index.js.map +1 -1
- package/dist/internal/testing.js +12 -11
- package/dist/internal/testing.js.map +1 -1
- package/dist/kv/index.d.ts +3 -0
- package/dist/kv/index.d.ts.map +1 -0
- package/dist/kv/index.js +103 -0
- package/dist/kv/index.js.map +1 -0
- package/dist/kv/store.d.ts +28 -0
- package/dist/kv/store.d.ts.map +1 -0
- package/dist/node/font.d.ts +5 -0
- package/dist/node/font.d.ts.map +1 -0
- package/dist/node/image.d.ts +15 -0
- package/dist/node/image.d.ts.map +1 -0
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +25 -23
- package/dist/node/index.js.map +1 -1
- package/dist/node/streaming.d.ts +2 -0
- package/dist/node/streaming.d.ts.map +1 -1
- package/dist/platform/analytics.d.ts +58 -5
- package/dist/platform/analytics.d.ts.map +1 -1
- package/dist/platform/font-assets.d.ts +19 -0
- package/dist/platform/font-assets.d.ts.map +1 -0
- package/dist/platform/fonts.d.ts +14 -4
- package/dist/platform/fonts.d.ts.map +1 -1
- package/dist/platform/image-codec.d.ts +15 -0
- package/dist/platform/image-codec.d.ts.map +1 -0
- package/dist/platform/image-url.d.ts +17 -0
- package/dist/platform/image-url.d.ts.map +1 -0
- package/dist/platform/image.d.ts +8 -0
- package/dist/platform/image.d.ts.map +1 -0
- package/dist/platform/images.d.ts +15 -0
- package/dist/platform/images.d.ts.map +1 -1
- package/dist/platform/index.d.ts +8 -5
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/redis/index.d.ts +3 -0
- package/dist/redis/index.d.ts.map +1 -0
- package/dist/redis/index.js +171 -0
- package/dist/redis/index.js.map +1 -0
- package/dist/redis/store.d.ts +8 -0
- package/dist/redis/store.d.ts.map +1 -0
- package/dist/route/action.d.ts +11 -11
- package/dist/route/action.d.ts.map +1 -1
- package/dist/route/index.d.ts +2 -1
- package/dist/route/index.d.ts.map +1 -1
- package/dist/route/middleware.d.ts +7 -0
- package/dist/route/middleware.d.ts.map +1 -0
- package/dist/route/page.d.ts +2 -2
- package/dist/route/page.d.ts.map +1 -1
- package/dist/route/response.d.ts +19 -19
- package/dist/route/response.d.ts.map +1 -1
- package/dist/route/types.d.ts +55 -31
- package/dist/route/types.d.ts.map +1 -1
- package/dist/route/webhook.d.ts +1 -1
- package/dist/router/manifest.d.ts +1 -0
- package/dist/router/manifest.d.ts.map +1 -1
- package/dist/routing/generate.d.ts +2 -0
- package/dist/routing/generate.d.ts.map +1 -1
- package/dist/routing/index.d.ts +1 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/types.d.ts +2 -0
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/security/cors.d.ts.map +1 -1
- package/dist/security/index.d.ts +4 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/policy.d.ts +5 -1
- package/dist/security/policy.d.ts.map +1 -1
- package/dist/security/types.d.ts +34 -13
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/verification.d.ts +8 -0
- package/dist/security/verification.d.ts.map +1 -0
- package/dist/server/document-shell.d.ts +12 -0
- package/dist/server/document-shell.d.ts.map +1 -0
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/not-found.d.ts.map +1 -1
- package/dist/server/render-tree.d.ts +6 -1
- package/dist/server/render-tree.d.ts.map +1 -1
- package/dist/server/request-handler.d.ts +4 -1
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/ssr.d.ts +1 -0
- package/dist/server/ssr.d.ts.map +1 -1
- package/dist/static/images.d.ts +13 -0
- package/dist/static/images.d.ts.map +1 -0
- package/dist/static/index.d.ts +18 -0
- package/dist/static/index.d.ts.map +1 -1
- package/dist/static/index.js +677 -129
- package/dist/static/index.js.map +1 -1
- package/dist/static/preview.d.ts +8 -0
- package/dist/static/preview.d.ts.map +1 -0
- package/dist/static/vercel.d.ts +34 -0
- package/dist/static/vercel.d.ts.map +1 -0
- package/dist/vite/index.d.ts +3 -2
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +782 -329
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/plugin.d.ts +20 -0
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/vite/policy-verification.d.ts +10 -0
- package/dist/vite/policy-verification.d.ts.map +1 -0
- package/package.json +38 -2
- package/dist/chunks/index-BnX9Qxbm.js +0 -44
- package/dist/chunks/index-BnX9Qxbm.js.map +0 -1
- package/dist/chunks/ssr-BJejKlkZ.js +0 -275
- package/dist/chunks/ssr-BJejKlkZ.js.map +0 -1
- package/dist/chunks/streaming-DN1DnbRE.js +0 -343
- package/dist/chunks/streaming-DN1DnbRE.js.map +0 -1
- package/dist/chunks/testing-DR3eQAvY.js.map +0 -1
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { InlineConfig } from "vite";
|
|
2
|
+
import { type GenerateStaticOutputOptions, type StaticOutputManifest } from "./static";
|
|
3
|
+
type CliEnvironment = Record<string, string | undefined>;
|
|
4
|
+
export type CliOptions = {
|
|
5
|
+
command: "build" | "help" | "preview";
|
|
6
|
+
host: string;
|
|
7
|
+
origin?: string;
|
|
8
|
+
outDir: string;
|
|
9
|
+
port: number;
|
|
10
|
+
};
|
|
11
|
+
type StaticBuildRuntime = {
|
|
12
|
+
build: (config: InlineConfig) => Promise<unknown>;
|
|
13
|
+
generate: (options: GenerateStaticOutputOptions) => Promise<StaticOutputManifest>;
|
|
14
|
+
importModule: (specifier: string) => Promise<Record<string, unknown>>;
|
|
15
|
+
now: () => number;
|
|
16
|
+
readText: (file: string) => Promise<string>;
|
|
17
|
+
resolveConfig: () => Promise<{
|
|
18
|
+
plugins?: Array<{
|
|
19
|
+
api?: unknown;
|
|
20
|
+
name: string;
|
|
21
|
+
}>;
|
|
22
|
+
publicDir: false | string;
|
|
23
|
+
root: string;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
export declare function parseCliArguments(arguments_: string[], environment?: CliEnvironment): CliOptions;
|
|
27
|
+
export declare const helpText = "Usage: demiurge <command> [options]\n\nCommands:\n build Build static production output\n preview Serve static output with its declared headers\n\nOptions:\n --host <host> Set the preview host (default: localhost)\n --origin <origin> Set the build origin (default: SITE_ORIGIN)\n --out-dir <directory> Set the output directory (default: dist)\n --port <port> Set the preview port (default: 4173)\n -h, --help Show this help";
|
|
28
|
+
export declare function buildStaticSite(options: CliOptions, runtime?: StaticBuildRuntime): Promise<{
|
|
29
|
+
deploymentOutDir: string | undefined;
|
|
30
|
+
manifest: StaticOutputManifest;
|
|
31
|
+
outDir: string;
|
|
32
|
+
}>;
|
|
33
|
+
export declare function resolvePreviewOutputDirectory(outDir: string, resolveConfig?: () => Promise<{
|
|
34
|
+
root: string;
|
|
35
|
+
}>): Promise<string>;
|
|
36
|
+
export declare function validateBuildOutputDirectory(root: string, outDir: string, publicDir: false | string, serverOutDir: string): Promise<void>;
|
|
37
|
+
export declare function parseClientManifest(source: string): {
|
|
38
|
+
clientEntry: string;
|
|
39
|
+
styles: string[];
|
|
40
|
+
};
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,OAAO,EAGL,KAAK,2BAA2B,EAEhC,KAAK,oBAAoB,EAE1B,MAAM,UAAU,CAAC;AAElB,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAIzD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,EAAE,CACR,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,OAAO,CAAC;QAC3B,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,GAAG,CAAC,EAAE,OAAO,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;QACH,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,GAAE,cAAmB,GAC/B,UAAU,CA8CZ;AAED,eAAO,MAAM,QAAQ,gfAWkB,CAAC;AAExC,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,kBAAkB;;;;GA2E7B;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,mBAMhD;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,MAAM,EACzB,YAAY,EAAE,MAAM,iBAqCrB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM;;;EAmBjD"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { readFile as b, readdir as E } from "node:fs/promises";
|
|
2
|
+
import { resolve as c, relative as d, sep as g, isAbsolute as v } from "node:path";
|
|
3
|
+
import { pathToFileURL as O } from "node:url";
|
|
4
|
+
import { generateStaticOutput as S, generateVercelStaticOutput as D } from "./static/index.js";
|
|
5
|
+
const T = /* @__PURE__ */ new Set(["--host", "--origin", "--out-dir", "--port"]);
|
|
6
|
+
function B(t, e = {}) {
|
|
7
|
+
const r = t[0];
|
|
8
|
+
if (!r || r === "--help" || r === "-h" || r === "help")
|
|
9
|
+
return {
|
|
10
|
+
command: "help",
|
|
11
|
+
host: "localhost",
|
|
12
|
+
outDir: "dist",
|
|
13
|
+
port: 4173
|
|
14
|
+
};
|
|
15
|
+
if (r !== "build" && r !== "preview")
|
|
16
|
+
throw new Error(`Unknown command: ${r}`);
|
|
17
|
+
const i = {
|
|
18
|
+
command: r,
|
|
19
|
+
host: "localhost",
|
|
20
|
+
origin: e.SITE_ORIGIN,
|
|
21
|
+
outDir: "dist",
|
|
22
|
+
port: 4173
|
|
23
|
+
};
|
|
24
|
+
for (let n = 1; n < t.length; n += 1) {
|
|
25
|
+
const o = t[n], [s, l] = o.split("=", 2);
|
|
26
|
+
if (!T.has(s))
|
|
27
|
+
throw new Error(`Unknown option: ${o}`);
|
|
28
|
+
const u = l ?? t[++n];
|
|
29
|
+
if (!u || u.startsWith("--"))
|
|
30
|
+
throw new Error(`Option ${s} requires a value.`);
|
|
31
|
+
if (s === "--host" && (i.host = u), s === "--origin" && (i.origin = u), s === "--out-dir" && (i.outDir = u), s === "--port") {
|
|
32
|
+
const a = Number(u);
|
|
33
|
+
if (!Number.isSafeInteger(a) || a < 0 || a > 65535)
|
|
34
|
+
throw new Error("Preview port must be an integer from 0 through 65535.");
|
|
35
|
+
i.port = a;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return i;
|
|
39
|
+
}
|
|
40
|
+
const H = `Usage: demiurge <command> [options]
|
|
41
|
+
|
|
42
|
+
Commands:
|
|
43
|
+
build Build static production output
|
|
44
|
+
preview Serve static output with its declared headers
|
|
45
|
+
|
|
46
|
+
Options:
|
|
47
|
+
--host <host> Set the preview host (default: localhost)
|
|
48
|
+
--origin <origin> Set the build origin (default: SITE_ORIGIN)
|
|
49
|
+
--out-dir <directory> Set the output directory (default: dist)
|
|
50
|
+
--port <port> Set the preview port (default: 4173)
|
|
51
|
+
-h, --help Show this help`;
|
|
52
|
+
async function W(t, e) {
|
|
53
|
+
const r = e ? void 0 : await import("vite"), i = e ? await e.resolveConfig() : await r.resolveConfig({}, "build", "production"), n = i.root, o = c(n, t.outDir), s = c(n, ".demiurge/server"), l = e?.build ?? r.build;
|
|
54
|
+
await j(
|
|
55
|
+
n,
|
|
56
|
+
o,
|
|
57
|
+
i.publicDir,
|
|
58
|
+
s
|
|
59
|
+
), await l({
|
|
60
|
+
build: {
|
|
61
|
+
emptyOutDir: !0,
|
|
62
|
+
outDir: o,
|
|
63
|
+
rollupOptions: { input: "virtual:demiurge/client-entry" }
|
|
64
|
+
}
|
|
65
|
+
}), await l({
|
|
66
|
+
build: {
|
|
67
|
+
copyPublicDir: !1,
|
|
68
|
+
emptyOutDir: !0,
|
|
69
|
+
outDir: s,
|
|
70
|
+
rollupOptions: {
|
|
71
|
+
input: "virtual:demiurge/server-entry",
|
|
72
|
+
output: { entryFileNames: "server-entry.js" }
|
|
73
|
+
},
|
|
74
|
+
ssr: !0
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const u = N(
|
|
78
|
+
e ? await e.readText(c(o, "demiurge-manifest.json")) : await b(c(o, "demiurge-manifest.json"), "utf8")
|
|
79
|
+
), a = `${O(c(s, "server-entry.js")).href}?build=${e?.now() ?? Date.now()}`, f = e ? await e.importModule(a) : await import(a);
|
|
80
|
+
if (!I(f.routes))
|
|
81
|
+
throw new Error("The framework server bundle does not export routes.");
|
|
82
|
+
const h = await (e?.generate ?? S)({
|
|
83
|
+
fonts: A(i.plugins),
|
|
84
|
+
images: F(i.plugins),
|
|
85
|
+
origin: t.origin,
|
|
86
|
+
outDir: o,
|
|
87
|
+
root: n,
|
|
88
|
+
routes: f.routes,
|
|
89
|
+
ssr: u,
|
|
90
|
+
staticFileHeaders: R(i.plugins)
|
|
91
|
+
}), m = P(i.plugins);
|
|
92
|
+
return { deploymentOutDir: m ? await D({
|
|
93
|
+
deployment: m,
|
|
94
|
+
manifest: h,
|
|
95
|
+
outDir: o,
|
|
96
|
+
projectRoot: process.cwd()
|
|
97
|
+
}) : void 0, manifest: h, outDir: o };
|
|
98
|
+
}
|
|
99
|
+
async function G(t, e) {
|
|
100
|
+
const r = e ? await e() : await (await import("vite")).resolveConfig({}, "serve", "production");
|
|
101
|
+
return c(r.root, t);
|
|
102
|
+
}
|
|
103
|
+
async function j(t, e, r, i) {
|
|
104
|
+
const n = d(t, e);
|
|
105
|
+
if (!n || n === ".." || n.startsWith(`..${g}`) || v(n))
|
|
106
|
+
throw new Error("The static output directory must be inside the Vite root.");
|
|
107
|
+
if (r && w(e, r))
|
|
108
|
+
throw new Error("The static output directory must not overlap the Vite public directory.");
|
|
109
|
+
if (w(e, i))
|
|
110
|
+
throw new Error("The static output directory must not overlap the framework server directory.");
|
|
111
|
+
let o;
|
|
112
|
+
try {
|
|
113
|
+
o = await E(e);
|
|
114
|
+
} catch (s) {
|
|
115
|
+
if ($(s)) return;
|
|
116
|
+
throw s;
|
|
117
|
+
}
|
|
118
|
+
if (o.length && !o.includes("demiurge-manifest.json") && !o.includes("demiurge-static-manifest.json"))
|
|
119
|
+
throw new Error(
|
|
120
|
+
"The static output directory contains files that a Demiurge build did not create."
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
function N(t) {
|
|
124
|
+
let e;
|
|
125
|
+
try {
|
|
126
|
+
e = JSON.parse(t);
|
|
127
|
+
} catch {
|
|
128
|
+
throw new Error("The client build manifest is not valid JSON.");
|
|
129
|
+
}
|
|
130
|
+
if (!e || typeof e != "object" || !("clientEntry" in e) || typeof e.clientEntry != "string" || !("styles" in e) || !Array.isArray(e.styles) || !e.styles.every((r) => typeof r == "string"))
|
|
131
|
+
throw new Error("The client build manifest has an unsupported format.");
|
|
132
|
+
return { clientEntry: e.clientEntry, styles: e.styles };
|
|
133
|
+
}
|
|
134
|
+
function I(t) {
|
|
135
|
+
return !t || typeof t != "object" || Array.isArray(t) ? !1 : Object.values(t).every((e) => typeof e == "function");
|
|
136
|
+
}
|
|
137
|
+
function P(t) {
|
|
138
|
+
return p(t)?.staticDeployment;
|
|
139
|
+
}
|
|
140
|
+
function A(t) {
|
|
141
|
+
return p(t)?.fonts;
|
|
142
|
+
}
|
|
143
|
+
function F(t) {
|
|
144
|
+
return p(t)?.images;
|
|
145
|
+
}
|
|
146
|
+
function R(t) {
|
|
147
|
+
return p(t)?.staticFileHeaders ?? [];
|
|
148
|
+
}
|
|
149
|
+
function p(t) {
|
|
150
|
+
return t?.filter((e) => e.name === "demiurge").map((e) => e.api).find(C);
|
|
151
|
+
}
|
|
152
|
+
function C(t) {
|
|
153
|
+
return !!t && t !== null && typeof t == "object" && "demiurge" in t && t.demiurge === !0;
|
|
154
|
+
}
|
|
155
|
+
function w(t, e) {
|
|
156
|
+
const r = d(t, e), i = d(e, t);
|
|
157
|
+
return y(r) || y(i);
|
|
158
|
+
}
|
|
159
|
+
function y(t) {
|
|
160
|
+
return !t || t !== ".." && !t.startsWith(`..${g}`) && !v(t);
|
|
161
|
+
}
|
|
162
|
+
function $(t) {
|
|
163
|
+
return t instanceof Error && "code" in t && t.code === "ENOENT";
|
|
164
|
+
}
|
|
165
|
+
export {
|
|
166
|
+
W as buildStaticSite,
|
|
167
|
+
H as helpText,
|
|
168
|
+
B as parseCliArguments,
|
|
169
|
+
N as parseClientManifest,
|
|
170
|
+
G as resolvePreviewOutputDirectory,
|
|
171
|
+
j as validateBuildOutputDirectory
|
|
172
|
+
};
|
|
173
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourcesContent":["import { readFile, readdir } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { InlineConfig } from \"vite\";\nimport type { FontContribution, ImagePolicy } from \"./platform\";\nimport type { RouteImporter } from \"./route\";\nimport {\n generateVercelStaticOutput,\n generateStaticOutput,\n type GenerateStaticOutputOptions,\n type StaticFileHeaderPatternRule,\n type StaticOutputManifest,\n type VercelStaticDeployment,\n} from \"./static\";\n\ntype CliEnvironment = Record<string, string | undefined>;\n\nconst cliOptionNames = new Set([\"--host\", \"--origin\", \"--out-dir\", \"--port\"]);\n\nexport type CliOptions = {\n command: \"build\" | \"help\" | \"preview\";\n host: string;\n origin?: string;\n outDir: string;\n port: number;\n};\n\ntype StaticBuildRuntime = {\n build: (config: InlineConfig) => Promise<unknown>;\n generate: (\n options: GenerateStaticOutputOptions,\n ) => Promise<StaticOutputManifest>;\n importModule: (specifier: string) => Promise<Record<string, unknown>>;\n now: () => number;\n readText: (file: string) => Promise<string>;\n resolveConfig: () => Promise<{\n plugins?: Array<{\n api?: unknown;\n name: string;\n }>;\n publicDir: false | string;\n root: string;\n }>;\n};\n\nexport function parseCliArguments(\n arguments_: string[],\n environment: CliEnvironment = {},\n): CliOptions {\n const command = arguments_[0];\n if (!command || command === \"--help\" || command === \"-h\" || command === \"help\") {\n return {\n command: \"help\",\n host: \"localhost\",\n outDir: \"dist\",\n port: 4173,\n };\n }\n if (command !== \"build\" && command !== \"preview\") {\n throw new Error(`Unknown command: ${command}`);\n }\n\n const options: CliOptions = {\n command,\n host: \"localhost\",\n origin: environment.SITE_ORIGIN,\n outDir: \"dist\",\n port: 4173,\n };\n\n for (let index = 1; index < arguments_.length; index += 1) {\n const argument = arguments_[index]!;\n const [name, inlineValue] = argument.split(\"=\", 2);\n if (!cliOptionNames.has(name!)) {\n throw new Error(`Unknown option: ${argument}`);\n }\n const value = inlineValue ?? arguments_[++index];\n if (!value || value.startsWith(\"--\")) {\n throw new Error(`Option ${name} requires a value.`);\n }\n\n if (name === \"--host\") options.host = value;\n if (name === \"--origin\") options.origin = value;\n if (name === \"--out-dir\") options.outDir = value;\n if (name === \"--port\") {\n const port = Number(value);\n if (!Number.isSafeInteger(port) || port < 0 || port > 65_535) {\n throw new Error(\"Preview port must be an integer from 0 through 65535.\");\n }\n options.port = port;\n }\n }\n\n return options;\n}\n\nexport const helpText = `Usage: demiurge <command> [options]\n\nCommands:\n build Build static production output\n preview Serve static output with its declared headers\n\nOptions:\n --host <host> Set the preview host (default: localhost)\n --origin <origin> Set the build origin (default: SITE_ORIGIN)\n --out-dir <directory> Set the output directory (default: dist)\n --port <port> Set the preview port (default: 4173)\n -h, --help Show this help`;\n\nexport async function buildStaticSite(\n options: CliOptions,\n runtime?: StaticBuildRuntime,\n) {\n const vite = runtime ? undefined : await import(\"vite\");\n const config = runtime\n ? await runtime.resolveConfig()\n : await vite!.resolveConfig({}, \"build\", \"production\");\n const root = config.root;\n const outDir = resolve(root, options.outDir);\n const serverOutDir = resolve(root, \".demiurge/server\");\n const build = runtime?.build ?? vite!.build;\n\n await validateBuildOutputDirectory(\n root,\n outDir,\n config.publicDir,\n serverOutDir,\n );\n\n await build({\n build: {\n emptyOutDir: true,\n outDir,\n rollupOptions: { input: \"virtual:demiurge/client-entry\" },\n },\n });\n await build({\n build: {\n copyPublicDir: false,\n emptyOutDir: true,\n outDir: serverOutDir,\n rollupOptions: {\n input: \"virtual:demiurge/server-entry\",\n output: { entryFileNames: \"server-entry.js\" },\n },\n ssr: true,\n },\n });\n\n const clientManifest = parseClientManifest(\n runtime\n ? await runtime.readText(resolve(outDir, \"demiurge-manifest.json\"))\n : await readFile(resolve(outDir, \"demiurge-manifest.json\"), \"utf8\"),\n );\n const serverEntryUrl = `${\n pathToFileURL(resolve(serverOutDir, \"server-entry.js\")).href\n }?build=${runtime?.now() ?? Date.now()}`;\n const serverEntry = runtime\n ? await runtime.importModule(serverEntryUrl)\n : await import(serverEntryUrl);\n if (!isRouteImporterRecord(serverEntry.routes)) {\n throw new Error(\"The framework server bundle does not export routes.\");\n }\n\n const manifest = await (runtime?.generate ?? generateStaticOutput)({\n fonts: findFontContribution(config.plugins),\n images: findImagePolicy(config.plugins),\n origin: options.origin,\n outDir,\n root,\n routes: serverEntry.routes,\n ssr: clientManifest,\n staticFileHeaders: findStaticFileHeaderPatterns(config.plugins),\n });\n\n const deployment = findVercelStaticDeployment(config.plugins);\n const deploymentOutDir = deployment\n ? await generateVercelStaticOutput({\n deployment,\n manifest,\n outDir,\n projectRoot: process.cwd(),\n })\n : undefined;\n\n return { deploymentOutDir, manifest, outDir };\n}\n\nexport async function resolvePreviewOutputDirectory(\n outDir: string,\n resolveConfig?: () => Promise<{ root: string }>,\n) {\n const config = resolveConfig\n ? await resolveConfig()\n : await (await import(\"vite\")).resolveConfig({}, \"serve\", \"production\");\n return resolve(config.root, outDir);\n}\n\nexport async function validateBuildOutputDirectory(\n root: string,\n outDir: string,\n publicDir: false | string,\n serverOutDir: string,\n) {\n const pathFromRoot = relative(root, outDir);\n if (\n !pathFromRoot ||\n pathFromRoot === \"..\" ||\n pathFromRoot.startsWith(`..${sep}`) ||\n isAbsolute(pathFromRoot)\n ) {\n throw new Error(\"The static output directory must be inside the Vite root.\");\n }\n\n if (publicDir && pathsOverlap(outDir, publicDir)) {\n throw new Error(\"The static output directory must not overlap the Vite public directory.\");\n }\n\n if (pathsOverlap(outDir, serverOutDir)) {\n throw new Error(\"The static output directory must not overlap the framework server directory.\");\n }\n\n let entries: string[];\n try {\n entries = await readdir(outDir);\n } catch (error) {\n if (isMissingPath(error)) return;\n throw error;\n }\n\n if (\n entries.length &&\n !entries.includes(\"demiurge-manifest.json\") &&\n !entries.includes(\"demiurge-static-manifest.json\")\n ) {\n throw new Error(\n \"The static output directory contains files that a Demiurge build did not create.\",\n );\n }\n}\n\nexport function parseClientManifest(source: string) {\n let value: unknown;\n try {\n value = JSON.parse(source);\n } catch {\n throw new Error(\"The client build manifest is not valid JSON.\");\n }\n if (\n !value ||\n typeof value !== \"object\" ||\n !(\"clientEntry\" in value) ||\n typeof value.clientEntry !== \"string\" ||\n !(\"styles\" in value) ||\n !Array.isArray(value.styles) ||\n !value.styles.every((style) => typeof style === \"string\")\n ) {\n throw new Error(\"The client build manifest has an unsupported format.\");\n }\n return { clientEntry: value.clientEntry, styles: value.styles };\n}\n\nfunction isRouteImporterRecord(\n value: unknown,\n): value is Record<string, RouteImporter> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n\n return Object.values(value).every((load) => typeof load === \"function\");\n}\n\nfunction findVercelStaticDeployment(\n plugins: ReadonlyArray<{ api?: unknown; name: string }> | undefined,\n): VercelStaticDeployment | undefined {\n return findDemiurgePluginApi(plugins)?.staticDeployment;\n}\n\nfunction findFontContribution(\n plugins: ReadonlyArray<{ api?: unknown; name: string }> | undefined,\n): FontContribution | undefined {\n return findDemiurgePluginApi(plugins)?.fonts;\n}\n\nfunction findImagePolicy(\n plugins: ReadonlyArray<{ api?: unknown; name: string }> | undefined,\n): ImagePolicy | undefined {\n return findDemiurgePluginApi(plugins)?.images;\n}\n\nfunction findStaticFileHeaderPatterns(\n plugins: ReadonlyArray<{ api?: unknown; name: string }> | undefined,\n): readonly StaticFileHeaderPatternRule[] {\n return findDemiurgePluginApi(plugins)?.staticFileHeaders ?? [];\n}\n\nfunction findDemiurgePluginApi(\n plugins: ReadonlyArray<{ api?: unknown; name: string }> | undefined,\n) {\n return plugins\n ?.filter((plugin) => plugin.name === \"demiurge\")\n .map((plugin) => plugin.api)\n .find(isDemiurgePluginApi);\n}\n\nfunction isDemiurgePluginApi(value: unknown): value is {\n demiurge: true;\n fonts?: FontContribution;\n images?: ImagePolicy;\n staticDeployment?: VercelStaticDeployment;\n staticFileHeaders?: readonly StaticFileHeaderPatternRule[];\n} {\n return Boolean(value) &&\n value !== null &&\n typeof value === \"object\" &&\n \"demiurge\" in value &&\n value.demiurge === true;\n}\n\nfunction pathsOverlap(left: string, right: string) {\n const fromLeft = relative(left, right);\n const fromRight = relative(right, left);\n return isSameOrChildPath(fromLeft) || isSameOrChildPath(fromRight);\n}\n\nfunction isSameOrChildPath(pathname: string) {\n return !pathname ||\n (pathname !== \"..\" && !pathname.startsWith(`..${sep}`) &&\n !isAbsolute(pathname));\n}\n\nfunction isMissingPath(error: unknown) {\n return error instanceof Error && \"code\" in error && error.code === \"ENOENT\";\n}\n"],"names":["cliOptionNames","parseCliArguments","arguments_","environment","command","options","index","argument","name","inlineValue","value","port","helpText","buildStaticSite","runtime","vite","config","root","outDir","resolve","serverOutDir","build","validateBuildOutputDirectory","clientManifest","parseClientManifest","readFile","serverEntryUrl","pathToFileURL","serverEntry","isRouteImporterRecord","manifest","generateStaticOutput","findFontContribution","findImagePolicy","findStaticFileHeaderPatterns","deployment","findVercelStaticDeployment","generateVercelStaticOutput","resolvePreviewOutputDirectory","resolveConfig","publicDir","pathFromRoot","relative","sep","isAbsolute","pathsOverlap","entries","readdir","error","isMissingPath","source","style","load","plugins","findDemiurgePluginApi","plugin","isDemiurgePluginApi","left","right","fromLeft","fromRight","isSameOrChildPath","pathname"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ScriptStrategy } from "./scripts";
|
|
2
|
+
export declare const DEFERRED_SCRIPT_TYPE = "text/demiurge-script";
|
|
3
|
+
export declare const DEFERRED_SCRIPT_ATTRIBUTE = "data-demiurge-script";
|
|
4
|
+
export declare const DEFERRED_SCRIPT_SRC_ATTRIBUTE = "data-demiurge-script-src";
|
|
5
|
+
export declare const DEFERRED_SCRIPT_TYPE_ATTRIBUTE = "data-demiurge-script-type";
|
|
6
|
+
export declare const DEFERRED_SCRIPT_STARTED_ATTRIBUTE = "data-demiurge-script-started";
|
|
7
|
+
export type DeferredScriptStrategy = "idle" | "worker";
|
|
8
|
+
export declare function isDeferredScriptStrategy(strategy: ScriptStrategy): strategy is DeferredScriptStrategy;
|
|
9
|
+
export declare function startDeferredScripts(target?: Document): void;
|
|
10
|
+
export declare function getScriptWorker(src: string): Worker | undefined;
|
|
11
|
+
//# sourceMappingURL=deferred-scripts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-scripts.d.ts","sourceRoot":"","sources":["../../src/document/deferred-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMhD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAChE,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AACxE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,iCAAiC,CAAC;AAehF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAIvD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,sBAAsB,CAEpC;AAID,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,QA2BrD;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,sBAE1C"}
|
package/dist/document/index.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
export { HYDRATION_DATA_ELEMENT_ID, HYDRATION_FALLBACK_ATTRIBUTE, HYDRATION_ROOT_ATTRIBUTE, readInitialRouteData, serializeInitialRouteData, } from "./hydration";
|
|
2
|
+
export { getScriptWorker, startDeferredScripts, } from "./deferred-scripts";
|
|
2
3
|
export { defineLinks, modulePreload, preconnect, preload, resolveLinks, } from "./links";
|
|
3
4
|
export { defineMetadata, link, meta, resolveMetadata, structuredData, } from "./metadata";
|
|
4
5
|
export { renderDocument, } from "./render";
|
|
5
|
-
export { defineScripts, resolveScripts, script, } from "./scripts";
|
|
6
|
+
export { defineScripts, Script, resolveScripts, script, } from "./scripts";
|
|
6
7
|
export { defineOgImage, defineRobots, defineSitemap, renderOgImageResponse, renderOgImageSvg, renderRobots, renderSitemap, } from "./seo";
|
|
8
|
+
export type { DeferredScriptStrategy } from "./deferred-scripts";
|
|
7
9
|
export type { InitialRouteData } from "./hydration";
|
|
8
10
|
export type { LinkContribution, PreconnectOptions, PreloadOptions, } from "./links";
|
|
9
11
|
export type { DocumentMetadataTag, LinkTag, Metadata, MetadataTitle, MetaTag, OpenGraphMetadata, ResolvedMetadata, RobotsMetadata, StructuredDataTag, StructuredDataValue, } from "./metadata";
|
|
10
12
|
export type { DocumentBody, RenderDocumentOptions, } from "./render";
|
|
11
|
-
export type { ScriptContribution, ScriptStrategy, ScriptTag, } from "./scripts";
|
|
13
|
+
export type { ScriptContribution, ScriptCspNeeds, ScriptProps, ScriptStrategy, ScriptTag, } from "./scripts";
|
|
12
14
|
export type { OgImage, Robots, RobotsDirective, Sitemap, SitemapAlternate, SitemapChangeFrequency, SitemapEntry, } from "./seo";
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,cAAc,EACd,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,OAAO,EACP,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACb,MAAM,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,MAAM,EACN,cAAc,EACd,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,OAAO,EACP,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACb,MAAM,OAAO,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LinkTag, ResolvedMetadata } from "./metadata";
|
|
2
|
-
import type
|
|
2
|
+
import { type ScriptTag } from "./scripts";
|
|
3
3
|
export declare const STRUCTURED_DATA_ATTRIBUTE = "data-demiurge-structured-data";
|
|
4
4
|
export type DocumentBody = {
|
|
5
5
|
data: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/document/render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,OAAO,EACP,gBAAgB,EAEjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/document/render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,OAAO,EACP,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5D,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG;IAC7E,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,UAS5D;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,EACR,IAAW,EACX,KAAU,EACV,QAAQ,EACR,KAAK,EACL,OAAY,EACZ,MAAW,EACX,KAAsB,GACvB,EAAE,0BAA0B;;;EAwB5B"}
|
|
@@ -1,24 +1,57 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
1
2
|
import type { HttpRouteContext, MaybePromise } from "../route";
|
|
2
|
-
export type ScriptStrategy = "afterInteractive" | "beforeInteractive" | "module";
|
|
3
|
+
export type ScriptStrategy = "afterInteractive" | "beforeInteractive" | "idle" | "module" | "worker";
|
|
4
|
+
export declare const scriptPlacement: unique symbol;
|
|
5
|
+
/**
|
|
6
|
+
* Directives a script needs at runtime beyond its own `script-src` entry. A
|
|
7
|
+
* beacon or an API call needs `connect-src`. A tracking pixel needs `img-src`.
|
|
8
|
+
* The build reads these and fails when the effective policy omits a source.
|
|
9
|
+
*/
|
|
10
|
+
export type ScriptCspNeeds = {
|
|
11
|
+
connect?: readonly string[];
|
|
12
|
+
img?: readonly string[];
|
|
13
|
+
};
|
|
3
14
|
export type ScriptTag = {
|
|
4
15
|
async?: boolean;
|
|
16
|
+
crossOrigin?: "anonymous" | "use-credentials";
|
|
5
17
|
dataApi?: string;
|
|
6
18
|
dataDomain?: string;
|
|
7
19
|
defer?: boolean;
|
|
8
20
|
id?: string;
|
|
9
21
|
integrity?: string;
|
|
10
22
|
kind: "script";
|
|
23
|
+
needs?: ScriptCspNeeds;
|
|
11
24
|
nonce?: string;
|
|
12
25
|
purpose?: string;
|
|
13
26
|
referrerPolicy?: ReferrerPolicy;
|
|
14
27
|
src: string;
|
|
15
28
|
strategy: ScriptStrategy;
|
|
16
29
|
type?: "module" | "text/javascript";
|
|
30
|
+
[scriptPlacement]?: "hoisted" | "in-place";
|
|
17
31
|
};
|
|
18
32
|
export type ScriptContribution = readonly ScriptTag[] | ((context: HttpRouteContext) => MaybePromise<readonly ScriptTag[]>);
|
|
33
|
+
export type ScriptProps = Omit<ScriptTag, "kind" | "nonce" | "strategy" | typeof scriptPlacement> & {
|
|
34
|
+
strategy?: ScriptStrategy;
|
|
35
|
+
};
|
|
36
|
+
export type ScriptRenderContext = {
|
|
37
|
+
dev: boolean;
|
|
38
|
+
headFlushed: boolean;
|
|
39
|
+
flushHead: () => void;
|
|
40
|
+
nonce?: string;
|
|
41
|
+
register: (scriptTag: ScriptTag) => "hoist" | "render" | "skip";
|
|
42
|
+
scripts: () => ScriptTag[];
|
|
43
|
+
};
|
|
44
|
+
export declare const ScriptContext: import("react").Context<ScriptRenderContext | undefined>;
|
|
45
|
+
export declare function createScriptRenderContext(options?: {
|
|
46
|
+
dev?: boolean;
|
|
47
|
+
nonce?: string;
|
|
48
|
+
scripts?: readonly ScriptTag[];
|
|
49
|
+
}): ScriptRenderContext;
|
|
50
|
+
export declare function Script(props: ScriptProps): ReactNode;
|
|
19
51
|
export declare function defineScripts(contribution: ScriptContribution): ScriptContribution;
|
|
20
52
|
export declare function script(options: Omit<ScriptTag, "kind" | "strategy"> & {
|
|
21
53
|
strategy?: ScriptStrategy;
|
|
22
54
|
}): ScriptTag;
|
|
55
|
+
export declare function withScriptContext(context: ScriptRenderContext, children: ReactNode): import("react").FunctionComponentElement<import("react").ProviderProps<ScriptRenderContext | undefined>>;
|
|
23
56
|
export declare function resolveScripts(contributions: Array<ScriptContribution | false | undefined>, context: HttpRouteContext): Promise<ScriptTag[]>;
|
|
24
57
|
//# sourceMappingURL=scripts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../src/document/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../src/document/scripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type EdgeAsset = {
|
|
2
|
+
body: ArrayBuffer | ArrayBufferView | string;
|
|
3
|
+
contentType?: string;
|
|
4
|
+
immutable?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type EdgeAssetMap = Readonly<Record<string, EdgeAsset>>;
|
|
7
|
+
export type EdgeAssetHandler = (request: Request) => Promise<Response | null>;
|
|
8
|
+
export type EdgeAssetHandlerOptions = {
|
|
9
|
+
assets: EdgeAssetMap;
|
|
10
|
+
immutable?: (fileName: string) => boolean;
|
|
11
|
+
prefix?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function createEdgeAssetHandler(options: EdgeAssetHandlerOptions): EdgeAssetHandler;
|
|
14
|
+
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/edge/assets.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAE9E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAqCF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAyDlB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type RequestCacheStoreOptions, type RequestHandler, type RequestHandlerOptions } from "../server";
|
|
2
|
+
import type { RateLimitStore } from "../security";
|
|
3
|
+
import type { EdgeAssetHandler, EdgeAssetHandlerOptions } from "./assets";
|
|
4
|
+
export { createEdgeAssetHandler } from "./assets";
|
|
5
|
+
export { renderEdgePageResponse, renderEdgeStreamingPageResponse, } from "./streaming";
|
|
6
|
+
export { createUnavailableCacheStore, createUnavailableRateLimitStore, EdgeSharedStoreError, } from "./stores";
|
|
7
|
+
export type { EdgeAsset, EdgeAssetHandler, EdgeAssetHandlerOptions, EdgeAssetMap, } from "./assets";
|
|
8
|
+
export declare const edgeAdapter: import("..").Adapter;
|
|
9
|
+
export declare const EDGE_SHARED_STORE_UNAVAILABLE = "unavailable";
|
|
10
|
+
export type EdgeCacheStoreOption = RequestCacheStoreOptions | typeof EDGE_SHARED_STORE_UNAVAILABLE;
|
|
11
|
+
export type EdgeRateLimitStoreOption = RateLimitStore | typeof EDGE_SHARED_STORE_UNAVAILABLE;
|
|
12
|
+
export type EdgeRequestHandlerOptions = Omit<RequestHandlerOptions, "adapter" | "cacheStore" | "rateLimitStore"> & {
|
|
13
|
+
assets?: EdgeAssetHandler | EdgeAssetHandlerOptions;
|
|
14
|
+
cacheStore: EdgeCacheStoreOption;
|
|
15
|
+
clientIp?: (request: Request) => string | undefined | null;
|
|
16
|
+
rateLimitStore: EdgeRateLimitStoreOption;
|
|
17
|
+
};
|
|
18
|
+
export declare function createEdgeRequestHandler(options: EdgeRequestHandlerOptions): RequestHandler;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edge/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAO1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,GACb,MAAM,UAAU,CAAC;AASlB,eAAO,MAAM,WAAW,sBAOtB,CAAC;AAEH,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAE3D,MAAM,MAAM,oBAAoB,GAC5B,wBAAwB,GACxB,OAAO,6BAA6B,CAAC;AAEzC,MAAM,MAAM,wBAAwB,GAChC,cAAc,GACd,OAAO,6BAA6B,CAAC;AAEzC,MAAM,MAAM,yBAAyB,GACjC,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,YAAY,GAAG,gBAAgB,CAAC,GACxE;IACA,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IAIpD,UAAU,EAAE,oBAAoB,CAAC;IAIjC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3D,cAAc,EAAE,wBAAwB,CAAC;CAC1C,CAAC;AAkBJ,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,yBAAyB,GACjC,cAAc,CAkChB"}
|