@blinkk/root 3.0.6 → 3.1.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.
Files changed (42) hide show
  1. package/dist/build-worker.js +108 -0
  2. package/dist/build-worker.js.map +7 -0
  3. package/dist/chunk-3PWR4F2R.js +77 -0
  4. package/dist/chunk-3PWR4F2R.js.map +7 -0
  5. package/dist/{chunk-3EFECH2D.js → chunk-GK3TDYUY.js} +727 -611
  6. package/dist/chunk-GK3TDYUY.js.map +7 -0
  7. package/dist/{chunk-7HK6F5RQ.js → chunk-I3RCAIW7.js} +1 -75
  8. package/dist/chunk-I3RCAIW7.js.map +7 -0
  9. package/dist/chunk-KHO3HMX6.js +291 -0
  10. package/dist/chunk-KHO3HMX6.js.map +7 -0
  11. package/dist/chunk-M3E4RKS7.js +374 -0
  12. package/dist/chunk-M3E4RKS7.js.map +7 -0
  13. package/dist/{chunk-6NBKAR5Y.js → chunk-TM6QRBGS.js} +31 -1
  14. package/dist/chunk-TM6QRBGS.js.map +7 -0
  15. package/dist/chunk-WX62JK5E.js +81 -0
  16. package/dist/chunk-WX62JK5E.js.map +7 -0
  17. package/dist/{chunk-7PSEEE6C.js → chunk-YU22SAIG.js} +31 -317
  18. package/dist/chunk-YU22SAIG.js.map +7 -0
  19. package/dist/cli/build-page.d.ts +57 -0
  20. package/dist/cli/build-progress.d.ts +82 -0
  21. package/dist/cli/build-worker-pool.d.ts +46 -0
  22. package/dist/cli/build-worker.d.ts +4 -0
  23. package/dist/cli/build.d.ts +14 -0
  24. package/dist/cli.js +8 -4
  25. package/dist/core/config.d.ts +41 -3
  26. package/dist/core/security.d.ts +14 -0
  27. package/dist/core.js.map +2 -2
  28. package/dist/functions.js +8 -4
  29. package/dist/functions.js.map +1 -1
  30. package/dist/middleware/common.d.ts +18 -0
  31. package/dist/middleware/compression.d.ts +12 -0
  32. package/dist/middleware/middleware.d.ts +1 -0
  33. package/dist/middleware.js +6 -1
  34. package/dist/node.js +7 -5
  35. package/dist/render/render.d.ts +15 -9
  36. package/dist/render.js +42 -95
  37. package/dist/render.js.map +2 -2
  38. package/package.json +2 -2
  39. package/dist/chunk-3EFECH2D.js.map +0 -7
  40. package/dist/chunk-6NBKAR5Y.js.map +0 -7
  41. package/dist/chunk-7HK6F5RQ.js.map +0 -7
  42. package/dist/chunk-7PSEEE6C.js.map +0 -7
@@ -0,0 +1,108 @@
1
+ import {
2
+ BuildAssetMap,
3
+ ElementGraph,
4
+ buildPage
5
+ } from "./chunk-M3E4RKS7.js";
6
+ import {
7
+ loadBundledConfig,
8
+ loadJson
9
+ } from "./chunk-KHO3HMX6.js";
10
+ import "./chunk-3PWR4F2R.js";
11
+
12
+ // src/cli/build-worker.ts
13
+ import path from "node:path";
14
+ import { parentPort, workerData } from "node:worker_threads";
15
+ async function main() {
16
+ if (!parentPort) {
17
+ throw new Error("build-worker.js must be run as a worker thread");
18
+ }
19
+ const port = parentPort;
20
+ const { rootDir, mode } = workerData;
21
+ process.env.NODE_ENV = mode;
22
+ const rootConfig = await loadBundledConfig(rootDir, { command: "build" });
23
+ const distDir = path.join(rootDir, "dist");
24
+ const buildDir = path.join(distDir, "html");
25
+ const render = await import(path.join(distDir, "server/render.js"));
26
+ const rootManifest = await loadJson(
27
+ path.join(distDir, ".root/manifest.json")
28
+ );
29
+ const assetMap = BuildAssetMap.fromRootManifest(rootConfig, rootManifest);
30
+ const elementGraphJson = await loadJson(
31
+ path.join(distDir, ".root/elements.json")
32
+ );
33
+ const elementGraph = ElementGraph.fromJson(elementGraphJson);
34
+ const renderer = new render.Renderer(rootConfig, { assetMap, elementGraph });
35
+ const routesByKey = /* @__PURE__ */ new Map();
36
+ const routeKey = (src, locale, isDefaultLocale) => {
37
+ return `${src}|${isDefaultLocale ? "x-default" : locale}`;
38
+ };
39
+ await renderer.walkRoutes(async (_urlPathFormat, route) => {
40
+ routesByKey.set(
41
+ routeKey(route.src, route.locale, route.isDefaultLocale),
42
+ route
43
+ );
44
+ });
45
+ function findRoute(task) {
46
+ if (task.routeSrc && task.locale) {
47
+ const route = routesByKey.get(
48
+ routeKey(task.routeSrc, task.locale, task.locale === "x-default")
49
+ );
50
+ if (route) {
51
+ return route;
52
+ }
53
+ }
54
+ const matches = renderer.getRouteMatches(task.urlPath);
55
+ for (const [route] of matches) {
56
+ if (!task.routeSrc || route.src === task.routeSrc) {
57
+ return route;
58
+ }
59
+ }
60
+ return void 0;
61
+ }
62
+ port.on("message", async (msg) => {
63
+ if (msg.type !== "render") {
64
+ return;
65
+ }
66
+ const task = msg.task;
67
+ try {
68
+ const route = findRoute(task);
69
+ if (!route) {
70
+ throw new Error(`could not find route for ${task.urlPath}`);
71
+ }
72
+ const result = await buildPage(
73
+ renderer,
74
+ rootConfig,
75
+ buildDir,
76
+ route,
77
+ task
78
+ );
79
+ const res = { type: "result", id: msg.id, result };
80
+ port.postMessage(res);
81
+ } catch (e) {
82
+ const res = {
83
+ type: "error",
84
+ id: msg.id,
85
+ urlPath: task.urlPath,
86
+ params: task.params,
87
+ routeSrc: task.routeSrc,
88
+ error: String(e?.stack || e)
89
+ };
90
+ port.postMessage(res);
91
+ }
92
+ });
93
+ const readyRes = { type: "ready" };
94
+ port.postMessage(readyRes);
95
+ }
96
+ main().catch((e) => {
97
+ const res = {
98
+ type: "fatal",
99
+ error: String(e?.stack || e)
100
+ };
101
+ if (parentPort) {
102
+ parentPort.postMessage(res);
103
+ } else {
104
+ console.error(res.error);
105
+ process.exit(1);
106
+ }
107
+ });
108
+ //# sourceMappingURL=build-worker.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cli/build-worker.ts"],
4
+ "sourcesContent": ["import path from 'node:path';\nimport {parentPort, workerData} from 'node:worker_threads';\n\nimport {Route} from '../core/types.js';\nimport {ElementGraph} from '../node/element-graph.js';\nimport {loadBundledConfig} from '../node/load-config.js';\nimport {\n BuildAssetManifest,\n BuildAssetMap,\n} from '../render/asset-map/build-asset-map.js';\nimport {loadJson} from '../utils/fsutils.js';\nimport {\n buildPage,\n BuildPageTask,\n BuildWorkerRequest,\n BuildWorkerResponse,\n} from './build-page.js';\n\ntype RenderModule = typeof import('../render/render.js');\n\nexport interface BuildWorkerData {\n rootDir: string;\n mode: string;\n}\n\nasync function main() {\n if (!parentPort) {\n throw new Error('build-worker.js must be run as a worker thread');\n }\n const port = parentPort;\n const {rootDir, mode} = workerData as BuildWorkerData;\n process.env.NODE_ENV = mode;\n\n const rootConfig = await loadBundledConfig(rootDir, {command: 'build'});\n const distDir = path.join(rootDir, 'dist');\n const buildDir = path.join(distDir, 'html');\n\n // Load the site's pre-built server bundle and asset manifests, mirroring\n // the prod server (`root start`) bootstrapping.\n const render: RenderModule = await import(\n path.join(distDir, 'server/render.js')\n );\n const rootManifest = await loadJson<BuildAssetManifest>(\n path.join(distDir, '.root/manifest.json')\n );\n const assetMap = BuildAssetMap.fromRootManifest(rootConfig, rootManifest);\n const elementGraphJson = await loadJson<any>(\n path.join(distDir, '.root/elements.json')\n );\n const elementGraph = ElementGraph.fromJson(elementGraphJson);\n const renderer = new render.Renderer(rootConfig, {assetMap, elementGraph});\n\n // Build a map of routes keyed by src + locale. The main thread's sitemap\n // identifies each page's route by its src file and locale, which uniquely\n // identifies a route registered with the router. (Url matching is not used\n // here since some routes, e.g. `[slug].json.ts`, are not resolvable from\n // their generated url paths.)\n const routesByKey = new Map<string, Route>();\n const routeKey = (src: string, locale: string, isDefaultLocale: boolean) => {\n return `${src}|${isDefaultLocale ? 'x-default' : locale}`;\n };\n await renderer.walkRoutes(async (_urlPathFormat: string, route: Route) => {\n routesByKey.set(\n routeKey(route.src, route.locale, route.isDefaultLocale),\n route\n );\n });\n\n /**\n * Resolves the route for a task using the route src and locale provided by\n * the main thread's sitemap. Falls back to url matching.\n */\n function findRoute(task: BuildPageTask): Route | undefined {\n if (task.routeSrc && task.locale) {\n const route = routesByKey.get(\n routeKey(task.routeSrc, task.locale, task.locale === 'x-default')\n );\n if (route) {\n return route;\n }\n }\n const matches = renderer.getRouteMatches(task.urlPath);\n for (const [route] of matches) {\n if (!task.routeSrc || route.src === task.routeSrc) {\n return route;\n }\n }\n return undefined;\n }\n\n port.on('message', async (msg: BuildWorkerRequest) => {\n if (msg.type !== 'render') {\n return;\n }\n const task = msg.task;\n try {\n const route = findRoute(task);\n if (!route) {\n throw new Error(`could not find route for ${task.urlPath}`);\n }\n const result = await buildPage(\n renderer,\n rootConfig,\n buildDir,\n route,\n task\n );\n const res: BuildWorkerResponse = {type: 'result', id: msg.id, result};\n port.postMessage(res);\n } catch (e: any) {\n const res: BuildWorkerResponse = {\n type: 'error',\n id: msg.id,\n urlPath: task.urlPath,\n params: task.params,\n routeSrc: task.routeSrc,\n error: String(e?.stack || e),\n };\n port.postMessage(res);\n }\n });\n\n const readyRes: BuildWorkerResponse = {type: 'ready'};\n port.postMessage(readyRes);\n}\n\nmain().catch((e) => {\n const res: BuildWorkerResponse = {\n type: 'fatal',\n error: String(e?.stack || e),\n };\n if (parentPort) {\n parentPort.postMessage(res);\n } else {\n console.error(res.error);\n process.exit(1);\n }\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,77 @@
1
+ // src/utils/elements.ts
2
+ var ELEMENT_RE = /^[a-z][\w-]*-[\w-]*$/;
3
+ var HTML_ELEMENTS_REGEX = /<([a-z][\w-]*-[\w-]*)/g;
4
+ function isValidTagName(tagName) {
5
+ return ELEMENT_RE.test(tagName);
6
+ }
7
+ function parseTagNames(src) {
8
+ if (!src) {
9
+ return [];
10
+ }
11
+ const tagNames = /* @__PURE__ */ new Set();
12
+ const matches = Array.from(String(src).matchAll(HTML_ELEMENTS_REGEX));
13
+ for (const match of matches) {
14
+ const tagName = match[1];
15
+ tagNames.add(tagName);
16
+ }
17
+ return Array.from(tagNames);
18
+ }
19
+
20
+ // src/render/html-minify.ts
21
+ import { createRequire } from "module";
22
+ var require2 = createRequire(import.meta.url);
23
+ var { minify } = require2("html-minifier-terser");
24
+ async function htmlMinify(html, options) {
25
+ const minifyOptions = options || {
26
+ collapseWhitespace: true,
27
+ removeComments: true,
28
+ preserveLineBreaks: true
29
+ };
30
+ try {
31
+ const min = await minify(html, minifyOptions);
32
+ return min.trimStart();
33
+ } catch (e) {
34
+ console.error("failed to minify html:", e);
35
+ return html;
36
+ }
37
+ }
38
+
39
+ // src/render/html-pretty.ts
40
+ import { createRequire as createRequire2 } from "module";
41
+ var require3 = createRequire2(import.meta.url);
42
+ var beautify = require3("js-beautify");
43
+ async function htmlPretty(html, options) {
44
+ const prettyOptions = options || {
45
+ indent_size: 0,
46
+ end_with_newline: true,
47
+ extra_liners: []
48
+ };
49
+ try {
50
+ const output = beautify.html(html, prettyOptions);
51
+ return output.trimStart();
52
+ } catch (e) {
53
+ console.error("failed to pretty html:", e);
54
+ return html;
55
+ }
56
+ }
57
+
58
+ // src/render/html-transform.ts
59
+ async function transformHtml(html, rootConfig) {
60
+ if (rootConfig.jsxRenderer?.mode) {
61
+ return html;
62
+ }
63
+ if (rootConfig.prettyHtml) {
64
+ return htmlPretty(html, rootConfig.prettyHtmlOptions);
65
+ }
66
+ if (rootConfig.minifyHtml) {
67
+ return htmlMinify(html, rootConfig.minifyHtmlOptions);
68
+ }
69
+ return html;
70
+ }
71
+
72
+ export {
73
+ isValidTagName,
74
+ parseTagNames,
75
+ transformHtml
76
+ };
77
+ //# sourceMappingURL=chunk-3PWR4F2R.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/elements.ts", "../src/render/html-minify.ts", "../src/render/html-pretty.ts", "../src/render/html-transform.ts"],
4
+ "sourcesContent": ["export const ELEMENT_RE = /^[a-z][\\w-]*-[\\w-]*$/;\nexport const HTML_ELEMENTS_REGEX = /<([a-z][\\w-]*-[\\w-]*)/g;\n\n/**\n * Returns true if the tagName is a valid custom element tag.\n */\nexport function isValidTagName(tagName: string) {\n return ELEMENT_RE.test(tagName);\n}\n\n/**\n * Returns a list of custom elements used in a src string (e.g. HTML, jsx, lit).\n * NOTE: the impl uses a simple regex, so tagNames used in comments and attr\n * values may be included.\n */\nexport function parseTagNames(src: string): string[] {\n if (!src) {\n return [];\n }\n const tagNames = new Set<string>();\n const matches = Array.from(String(src).matchAll(HTML_ELEMENTS_REGEX));\n for (const match of matches) {\n const tagName = match[1];\n tagNames.add(tagName);\n }\n return Array.from(tagNames);\n}\n", "import {createRequire} from 'module';\n\nconst require = createRequire(import.meta.url);\nimport type {Options} from 'html-minifier-terser';\n\nconst {minify} = require('html-minifier-terser');\n\nexport type HtmlMinifyOptions = Options;\n\nexport async function htmlMinify(\n html: string,\n options?: HtmlMinifyOptions\n): Promise<string> {\n const minifyOptions = options || {\n collapseWhitespace: true,\n removeComments: true,\n preserveLineBreaks: true,\n };\n try {\n const min = await minify(html, minifyOptions);\n return min.trimStart();\n } catch (e) {\n console.error('failed to minify html:', e);\n return html;\n }\n}\n", "import {createRequire} from 'module';\n\nconst require = createRequire(import.meta.url);\nimport type {HTMLBeautifyOptions} from 'js-beautify';\n\nconst beautify = require('js-beautify');\n\nexport type HtmlPrettyOptions = HTMLBeautifyOptions;\n\nexport async function htmlPretty(\n html: string,\n options?: HtmlPrettyOptions\n): Promise<string> {\n const prettyOptions = options || {\n indent_size: 0,\n end_with_newline: true,\n extra_liners: [],\n };\n try {\n const output = beautify.html(html, prettyOptions);\n return output.trimStart();\n } catch (e) {\n console.error('failed to pretty html:', e);\n return html;\n }\n}\n", "import {RootConfig} from '../core/config.js';\nimport {htmlMinify} from './html-minify.js';\nimport {htmlPretty} from './html-pretty.js';\n\n/**\n * Applies optional HTML post-processing (pretty-printing or minification) to\n * rendered HTML, based on the project's `root.config.ts`. Shared by both the SSR\n * render path and the SSG build so the two stay in sync.\n *\n * Behavior:\n * - When the built-in Root.js JSX renderer is enabled (`jsxRenderer.mode`), the\n * renderer already controls output formatting, so `prettyHtml` and\n * `minifyHtml` are ignored entirely and the html is returned unchanged.\n * - Otherwise (i.e. `preact-render-to-string`), formatting is strictly opt-in:\n * `prettyHtml: true` pretty-prints via js-beautify, and `minifyHtml: true`\n * minifies via html-minifier-terser. Neither runs by default.\n */\nexport async function transformHtml(\n html: string,\n rootConfig: RootConfig\n): Promise<string> {\n if (rootConfig.jsxRenderer?.mode) {\n return html;\n }\n if (rootConfig.prettyHtml) {\n return htmlPretty(html, rootConfig.prettyHtmlOptions);\n }\n if (rootConfig.minifyHtml) {\n return htmlMinify(html, rootConfig.minifyHtmlOptions);\n }\n return html;\n}\n"],
5
+ "mappings": ";AAAO,IAAM,aAAa;AACnB,IAAM,sBAAsB;AAK5B,SAAS,eAAe,SAAiB;AAC9C,SAAO,WAAW,KAAK,OAAO;AAChC;AAOO,SAAS,cAAc,KAAuB;AACnD,MAAI,CAAC,KAAK;AACR,WAAO,CAAC;AAAA,EACV;AACA,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,UAAU,MAAM,KAAK,OAAO,GAAG,EAAE,SAAS,mBAAmB,CAAC;AACpE,aAAW,SAAS,SAAS;AAC3B,UAAM,UAAU,MAAM,CAAC;AACvB,aAAS,IAAI,OAAO;AAAA,EACtB;AACA,SAAO,MAAM,KAAK,QAAQ;AAC5B;;;AC1BA,SAAQ,qBAAoB;AAE5B,IAAMA,WAAU,cAAc,YAAY,GAAG;AAG7C,IAAM,EAAC,OAAM,IAAIA,SAAQ,sBAAsB;AAI/C,eAAsB,WACpB,MACA,SACiB;AACjB,QAAM,gBAAgB,WAAW;AAAA,IAC/B,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,EACtB;AACA,MAAI;AACF,UAAM,MAAM,MAAM,OAAO,MAAM,aAAa;AAC5C,WAAO,IAAI,UAAU;AAAA,EACvB,SAAS,GAAG;AACV,YAAQ,MAAM,0BAA0B,CAAC;AACzC,WAAO;AAAA,EACT;AACF;;;ACzBA,SAAQ,iBAAAC,sBAAoB;AAE5B,IAAMC,WAAUD,eAAc,YAAY,GAAG;AAG7C,IAAM,WAAWC,SAAQ,aAAa;AAItC,eAAsB,WACpB,MACA,SACiB;AACjB,QAAM,gBAAgB,WAAW;AAAA,IAC/B,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,cAAc,CAAC;AAAA,EACjB;AACA,MAAI;AACF,UAAM,SAAS,SAAS,KAAK,MAAM,aAAa;AAChD,WAAO,OAAO,UAAU;AAAA,EAC1B,SAAS,GAAG;AACV,YAAQ,MAAM,0BAA0B,CAAC;AACzC,WAAO;AAAA,EACT;AACF;;;ACRA,eAAsB,cACpB,MACA,YACiB;AACjB,MAAI,WAAW,aAAa,MAAM;AAChC,WAAO;AAAA,EACT;AACA,MAAI,WAAW,YAAY;AACzB,WAAO,WAAW,MAAM,WAAW,iBAAiB;AAAA,EACtD;AACA,MAAI,WAAW,YAAY;AACzB,WAAO,WAAW,MAAM,WAAW,iBAAiB;AAAA,EACtD;AACA,SAAO;AACT;",
6
+ "names": ["require", "createRequire", "require"]
7
+ }