@zhin.js/pagemanager 0.0.0 → 1.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.
Files changed (57) hide show
  1. package/README.md +86 -0
  2. package/lib/client-build/index.d.ts +6 -0
  3. package/lib/client-build/index.d.ts.map +1 -0
  4. package/lib/client-build/index.js +6 -0
  5. package/lib/client-build/index.js.map +1 -0
  6. package/lib/client-build/manifest-loader.d.ts +9 -0
  7. package/lib/client-build/manifest-loader.d.ts.map +1 -0
  8. package/lib/client-build/manifest-loader.js +47 -0
  9. package/lib/client-build/manifest-loader.js.map +1 -0
  10. package/lib/client-build/module-runtime.d.ts +17 -0
  11. package/lib/client-build/module-runtime.d.ts.map +1 -0
  12. package/lib/client-build/module-runtime.js +28 -0
  13. package/lib/client-build/module-runtime.js.map +1 -0
  14. package/lib/client-build/static-metadata.d.ts +9 -0
  15. package/lib/client-build/static-metadata.d.ts.map +1 -0
  16. package/lib/client-build/static-metadata.js +126 -0
  17. package/lib/client-build/static-metadata.js.map +1 -0
  18. package/lib/client-build/types.d.ts +26 -0
  19. package/lib/client-build/types.d.ts.map +1 -0
  20. package/lib/client-build/types.js +2 -0
  21. package/lib/client-build/types.js.map +1 -0
  22. package/lib/client-build/typescript-builder.d.ts +9 -0
  23. package/lib/client-build/typescript-builder.d.ts.map +1 -0
  24. package/lib/client-build/typescript-builder.js +272 -0
  25. package/lib/client-build/typescript-builder.js.map +1 -0
  26. package/lib/node/esmForBrowser.d.ts.map +1 -1
  27. package/lib/node/esmForBrowser.js +4 -1
  28. package/lib/node/esmForBrowser.js.map +1 -1
  29. package/lib/node/index.d.ts +2 -0
  30. package/lib/node/index.d.ts.map +1 -1
  31. package/lib/node/index.js +2 -0
  32. package/lib/node/index.js.map +1 -1
  33. package/lib/node/pageManager.d.ts +1 -1
  34. package/lib/node/pageManager.d.ts.map +1 -1
  35. package/lib/node/pageManager.js +1 -1
  36. package/lib/node/pageManager.js.map +1 -1
  37. package/lib/plugin-runtime/access.d.ts +8 -0
  38. package/lib/plugin-runtime/access.d.ts.map +1 -0
  39. package/lib/plugin-runtime/access.js +11 -0
  40. package/lib/plugin-runtime/access.js.map +1 -0
  41. package/lib/plugin-runtime/console-catalog.d.ts +28 -0
  42. package/lib/plugin-runtime/console-catalog.d.ts.map +1 -0
  43. package/lib/plugin-runtime/console-catalog.js +102 -0
  44. package/lib/plugin-runtime/console-catalog.js.map +1 -0
  45. package/lib/plugin-runtime/console-runtime.d.ts +10 -0
  46. package/lib/plugin-runtime/console-runtime.d.ts.map +1 -0
  47. package/lib/plugin-runtime/console-runtime.js +26 -0
  48. package/lib/plugin-runtime/console-runtime.js.map +1 -0
  49. package/lib/plugin-runtime/index.d.ts +5 -0
  50. package/lib/plugin-runtime/index.d.ts.map +1 -0
  51. package/lib/plugin-runtime/index.js +5 -0
  52. package/lib/plugin-runtime/index.js.map +1 -0
  53. package/lib/plugin-runtime/navigation.d.ts +4 -0
  54. package/lib/plugin-runtime/navigation.d.ts.map +1 -0
  55. package/lib/plugin-runtime/navigation.js +57 -0
  56. package/lib/plugin-runtime/navigation.js.map +1 -0
  57. package/package.json +40 -8
@@ -0,0 +1,272 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
3
+ import { basename, dirname, join, relative, resolve, sep } from 'node:path';
4
+ import { build as esbuild } from 'esbuild';
5
+ import { pageRoute } from '@zhin.js/console-contract';
6
+ import { rootPluginId } from '@zhin.js/plugin-runtime';
7
+ import { assertLayoutModule, extractPageMetadata, } from './static-metadata.js';
8
+ import { ALLOWED_ESM_CANONICAL, rewriteBareImportsForBrowser, } from '../node/esmForBrowser.js';
9
+ const pageFeature = 'zhin.page';
10
+ const layoutFeature = 'zhin.layout';
11
+ /** Host-shared React/router graph — never bundle (single instance via `/esm/*`). */
12
+ const BROWSER_EXTERNALS = [...ALLOWED_ESM_CANONICAL];
13
+ /**
14
+ * Browser-only stubs for build-time contracts. Page `meta` is already extracted by
15
+ * static-metadata; the runtime only needs `definePage`/`defineLayout` as identity so
16
+ * we never leave a bare `@zhin.js/*` import for the browser to resolve.
17
+ */
18
+ const CONSOLE_CONTRACT_STUB = [
19
+ 'export function definePage(metadata = {}) { return metadata; }',
20
+ 'export function defineLayout(metadata = {}) { return metadata; }',
21
+ 'export function normalizePageMetadata(_name, metadata) { return metadata; }',
22
+ 'export function normalizeClientModuleArtifact(value) { return value; }',
23
+ ].join('\n');
24
+ export class TypeScriptClientBuilder {
25
+ #outDir;
26
+ #projectRoot;
27
+ #publicBase;
28
+ /** Console public base for rewritten bare imports (`/esm/…`); defaults to `/`. */
29
+ #consoleBasePath;
30
+ #manifestFile;
31
+ constructor(options) {
32
+ this.#outDir = resolve(options.outDir);
33
+ this.#projectRoot = resolve(options.projectRoot ?? process.cwd());
34
+ this.#publicBase = `/${trimSlashes(options.publicBase ?? '@zhin/client')}`;
35
+ this.#consoleBasePath = options.consoleBasePath ?? '/';
36
+ this.#manifestFile = resolve(options.manifestFile ?? join(this.#outDir, 'pages.manifest.json'));
37
+ }
38
+ async load(source, request) {
39
+ const absSource = resolve(source);
40
+ const text = await readFile(absSource, 'utf8');
41
+ const metadata = metadataFor(text, absSource, request);
42
+ const hash = contentHash(text);
43
+ const fileName = `${safe(request.owner)}-${safe(request.localName)}-${hash}.js`;
44
+ const output = join(this.#outDir, fileName);
45
+ // Bundle page TSX (inlines `@zhin.js/console-contract` stubs) + wrap with
46
+ // `export function register(api)` so Remote Console loadConsoleEntries can mount it.
47
+ // Then rewrite React bare imports to Host `/esm/<enc>.mjs`.
48
+ const bundled = await bundlePageEntry(absSource, this.#projectRoot, request, metadata);
49
+ const code = rewriteBareImportsForBrowser(bundled, this.#consoleBasePath, '');
50
+ await atomicWrite(output, code);
51
+ return Object.freeze({
52
+ module: `${this.#publicBase}/${fileName}`,
53
+ hash,
54
+ metadata,
55
+ });
56
+ }
57
+ async build(entries) {
58
+ const records = [];
59
+ for (const entry of [...entries].sort(compareEntry)) {
60
+ const artifact = await this.load(entry.source, entry);
61
+ records.push(Object.freeze({
62
+ ...entry,
63
+ source: manifestSource(this.#projectRoot, entry.source),
64
+ ...artifact,
65
+ }));
66
+ }
67
+ const manifest = Object.freeze({
68
+ protocol: 1,
69
+ entries: Object.freeze(records),
70
+ });
71
+ await atomicWrite(this.#manifestFile, `${JSON.stringify(manifest, null, 2)}\n`);
72
+ return manifest;
73
+ }
74
+ }
75
+ async function bundlePageEntry(absSource, projectRoot, request, metadata) {
76
+ // Layout modules stay bare components (no Console shell register contract).
77
+ if (String(request.feature) === layoutFeature) {
78
+ return bundleSource(absSource, projectRoot);
79
+ }
80
+ const meta = (metadata && typeof metadata === 'object' ? metadata : {});
81
+ const route = safePageRoute(request.owner, request.localName);
82
+ const title = meta.title ?? request.localName;
83
+ const icon = meta.icon;
84
+ const hideInNav = meta.hideInNav === true;
85
+ const wrapperSource = buildPageRegisterWrapper(absSource, {
86
+ route,
87
+ title,
88
+ icon,
89
+ hideInNav,
90
+ localName: request.localName,
91
+ });
92
+ const result = await esbuild({
93
+ stdin: {
94
+ contents: wrapperSource,
95
+ resolveDir: dirname(absSource),
96
+ sourcefile: `${request.localName}.register.tsx`,
97
+ loader: 'tsx',
98
+ },
99
+ bundle: true,
100
+ write: false,
101
+ format: 'esm',
102
+ platform: 'browser',
103
+ target: 'es2022',
104
+ jsx: 'automatic',
105
+ sourcemap: false,
106
+ logLevel: 'silent',
107
+ absWorkingDir: projectRoot,
108
+ nodePaths: [
109
+ join(dirname(absSource), 'node_modules'),
110
+ join(projectRoot, 'node_modules'),
111
+ ],
112
+ external: BROWSER_EXTERNALS,
113
+ plugins: [consoleContractStubPlugin()],
114
+ });
115
+ const file = result.outputFiles?.[0];
116
+ if (!file)
117
+ throw new Error(`esbuild produced no output for ${absSource}`);
118
+ return file.text;
119
+ }
120
+ async function bundleSource(absSource, projectRoot) {
121
+ const result = await esbuild({
122
+ entryPoints: [absSource],
123
+ bundle: true,
124
+ write: false,
125
+ format: 'esm',
126
+ platform: 'browser',
127
+ target: 'es2022',
128
+ jsx: 'automatic',
129
+ sourcemap: false,
130
+ logLevel: 'silent',
131
+ absWorkingDir: projectRoot,
132
+ nodePaths: [
133
+ join(dirname(absSource), 'node_modules'),
134
+ join(projectRoot, 'node_modules'),
135
+ ],
136
+ external: BROWSER_EXTERNALS,
137
+ plugins: [consoleContractStubPlugin()],
138
+ });
139
+ const file = result.outputFiles?.[0];
140
+ if (!file)
141
+ throw new Error(`esbuild produced no output for ${absSource}`);
142
+ return file.text;
143
+ }
144
+ /**
145
+ * Wrap a convention page (default export component + optional meta) into the
146
+ * Remote Console entry contract: `export function register(api)`.
147
+ */
148
+ function buildPageRegisterWrapper(absSource, options) {
149
+ // abs path import so esbuild resolves the real page regardless of stdin dir.
150
+ const pageImport = JSON.stringify(absSource);
151
+ const route = JSON.stringify(options.route);
152
+ const title = JSON.stringify(options.title);
153
+ const icon = options.icon === undefined ? 'undefined' : JSON.stringify(options.icon);
154
+ const hideInNav = options.hideInNav ? 'true' : 'false';
155
+ const toolId = JSON.stringify(options.localName);
156
+ // Re-export `meta` only when present via namespace — a hard
157
+ // `export { meta } from page` fails esbuild for pages that only
158
+ // export a default component (no meta).
159
+ return `
160
+ import Page, * as pageNs from ${pageImport};
161
+ export { default } from ${pageImport};
162
+ export const meta = pageNs.meta;
163
+
164
+ export function register(api) {
165
+ const Component = Page?.default ?? Page;
166
+ if (typeof Component !== 'function' && (typeof Component !== 'object' || Component == null)) {
167
+ throw new Error('Page module default export is not a React component');
168
+ }
169
+ const m = pageNs.meta && typeof pageNs.meta === 'object' ? pageNs.meta : {};
170
+ const route = ${route};
171
+ const name = typeof m.title === 'string' && m.title ? m.title : ${title};
172
+ const icon = m.icon ?? ${icon};
173
+ const element = api.React.createElement(Component);
174
+ api.addRoute({
175
+ path: route,
176
+ name,
177
+ element,
178
+ ...(icon != null ? { icon } : {}),
179
+ meta: { hideInMenu: m.hideInNav === true || ${hideInNav} },
180
+ });
181
+ if (typeof api.addTool === 'function') {
182
+ api.addTool({
183
+ id: ${toolId},
184
+ name,
185
+ path: route,
186
+ ...(icon != null ? { icon } : {}),
187
+ });
188
+ }
189
+ }
190
+ `;
191
+ }
192
+ /** Safe pageRoute — adversarial/invalid localName falls back to a sanitized path. */
193
+ function safePageRoute(owner, localName) {
194
+ try {
195
+ return pageRoute(owner, rootPluginId(), localName);
196
+ }
197
+ catch {
198
+ const slug = safe(localName) || 'page';
199
+ return `/p-${slug}`;
200
+ }
201
+ }
202
+ function consoleContractStubPlugin() {
203
+ return {
204
+ name: 'zhin-console-contract-stub',
205
+ setup(build) {
206
+ build.onResolve({ filter: /^@zhin\.js\/console-contract$/ }, () => ({
207
+ path: 'zhin-console-contract-stub',
208
+ namespace: 'zhin-virtual',
209
+ }));
210
+ build.onLoad({ filter: /.*/, namespace: 'zhin-virtual' }, () => ({
211
+ contents: CONSOLE_CONTRACT_STUB,
212
+ loader: 'js',
213
+ }));
214
+ },
215
+ };
216
+ }
217
+ function manifestSource(root, source) {
218
+ const result = relative(root, resolve(source));
219
+ if (!result || result === '..' || result.startsWith(`..${sep}`)) {
220
+ throw new Error(`Client source is outside project Root: ${source}`);
221
+ }
222
+ return result.split(sep).join('/');
223
+ }
224
+ function metadataFor(source, fileName, request) {
225
+ if (request.feature === pageFeature)
226
+ return extractPageMetadata(source, fileName);
227
+ if (request.feature === layoutFeature) {
228
+ assertLayoutModule(source, fileName);
229
+ return undefined;
230
+ }
231
+ throw new Error(`Unsupported client Feature: ${request.feature}`);
232
+ }
233
+ function contentHash(source) {
234
+ return createHash('sha256').update(source).digest('hex').slice(0, 16);
235
+ }
236
+ function safe(value) {
237
+ const result = trimDashes(value.replace(/[^a-z0-9-]+/giu, '-')).toLowerCase();
238
+ return result || 'root';
239
+ }
240
+ /** 线性裁剪首尾 `/`(等价于 /^\/+|\/+$/gu,无回溯 — js/polynomial-redos)。 */
241
+ function trimSlashes(value) {
242
+ let start = 0;
243
+ let end = value.length;
244
+ while (start < end && value[start] === '/')
245
+ start += 1;
246
+ while (end > start && value[end - 1] === '/')
247
+ end -= 1;
248
+ return value.slice(start, end);
249
+ }
250
+ /** 线性裁剪首尾 `-`(等价于 /^-+|-+$/gu,无回溯 — js/polynomial-redos)。 */
251
+ function trimDashes(value) {
252
+ let start = 0;
253
+ let end = value.length;
254
+ while (start < end && value[start] === '-')
255
+ start += 1;
256
+ while (end > start && value[end - 1] === '-')
257
+ end -= 1;
258
+ return value.slice(start, end);
259
+ }
260
+ function compareEntry(left, right) {
261
+ return left.owner.localeCompare(right.owner)
262
+ || String(left.feature).localeCompare(String(right.feature))
263
+ || left.localName.localeCompare(right.localName)
264
+ || left.source.localeCompare(right.source);
265
+ }
266
+ async function atomicWrite(path, content) {
267
+ await mkdir(dirname(path), { recursive: true });
268
+ const temporary = join(dirname(path), `.${basename(path)}.${process.pid}.tmp`);
269
+ await writeFile(temporary, content);
270
+ await rename(temporary, path);
271
+ }
272
+ //# sourceMappingURL=typescript-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-builder.js","sourceRoot":"","sources":["../../src/client-build/typescript-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"esmForBrowser.d.ts","sourceRoot":"","sources":["../../src/node/esmForBrowser.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,aAQhC,CAAC;AAsDH,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO/E;AAGD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AA6CD,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAWR"}
1
+ {"version":3,"file":"esmForBrowser.d.ts","sourceRoot":"","sources":["../../src/node/esmForBrowser.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,aAQhC,CAAC;AAsDH,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO/E;AAGD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAgDD,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAWR"}
@@ -97,7 +97,10 @@ function resolveNamedExports(canonical, resolveDir) {
97
97
  function buildHostProxyModule(canonical, namedExports) {
98
98
  const lines = [
99
99
  `const _m = globalThis[${JSON.stringify(CONSOLE_SHARED_MODULES_KEY)}]?.get(${JSON.stringify(canonical)});`,
100
- `if (!_m) throw new Error("[zhin-console] Host module not registered: ${canonical}");`,
100
+ // Prefer Host-registered React (single instance with shell). If the shell has not
101
+ // populated SHARED_MODULES yet, fall through is not possible at static ESM time —
102
+ // throw a clear error pointing operators at the shell/Host contract.
103
+ `if (!_m) throw new Error("[zhin-console] Host module not registered: ${canonical}. Remote Console must set globalThis.${CONSOLE_SHARED_MODULES_KEY} before loading plugin entries.");`,
101
104
  `export default _m;`,
102
105
  ...namedExports.map((n) => `export const ${n} = _m.${n};`),
103
106
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"esmForBrowser.js","sourceRoot":"","sources":["../../src/node/esmForBrowser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esmForBrowser.js","sourceRoot":"","sources":["../../src/node/esmForBrowser.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,6 @@ export { attachConsoleClientHost } from "./startHost.js";
7
7
  export type { EntryStore } from "./entryStore.js";
8
8
  export { createInMemoryEntryStore } from "./entryStore.js";
9
9
  export { PageManager, mountConsoleRouter } from "./pageManager.js";
10
+ /** Browser ESM bare-import rewrite + Host React/router proxies (for Plugin Runtime client chunks). */
11
+ export { ALLOWED_ESM_CANONICAL, decodeSpecifierSegment, encodeSpecifierSegment, getOrBuildCanonicalEsmBundle, joinConsolePublicPath, rewriteBareImportsForBrowser, } from "./esmForBrowser.js";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,sGAAsG;AACtG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC"}
package/lib/node/index.js CHANGED
@@ -4,4 +4,6 @@ export { serverRuntimeEnv } from "./env.js";
4
4
  export { attachConsoleClientHost } from "./startHost.js";
5
5
  export { createInMemoryEntryStore } from "./entryStore.js";
6
6
  export { PageManager, mountConsoleRouter } from "./pageManager.js";
7
+ /** Browser ESM bare-import rewrite + Host React/router proxies (for Plugin Runtime client chunks). */
8
+ export { ALLOWED_ESM_CANONICAL, decodeSpecifierSegment, encodeSpecifierSegment, getOrBuildCanonicalEsmBundle, joinConsolePublicPath, rewriteBareImportsForBrowser, } from "./esmForBrowser.js";
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,sGAAsG;AACtG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import Router from "@koa/router";
2
2
  import type Koa from "koa";
3
- import type { ConsoleFileAddEntryInput } from "@zhin.js/contract";
3
+ import { type ConsoleFileAddEntryInput } from '@zhin.js/contract';
4
4
  import { type EntryStore } from "./entryStore.js";
5
5
  import type { ConsoleServerOptions, ConsoleClientHostAttachment } from "./consoleServerOptions.js";
6
6
  export declare function mountConsoleRouter(router: Router): Koa.Middleware;
@@ -1 +1 @@
1
- {"version":3,"file":"pageManager.d.ts","sourceRoot":"","sources":["../../src/node/pageManager.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAK3B,OAAO,KAAK,EAAgB,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EACV,oBAAoB,EAEpB,2BAA2B,EAC5B,MAAM,2BAA2B,CAAC;AAInC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,CAEjE;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAEzC,OAAO,EAAE,oBAAoB;IAmBzC,OAAO,CAAC,wBAAwB;YAUlB,0BAA0B;YA0B1B,wBAAwB;IAOhC,KAAK,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAgCnD,QAAQ,CAAC,KAAK,EAAE,wBAAwB;CAqBzC"}
1
+ {"version":3,"file":"pageManager.d.ts","sourceRoot":"","sources":["../../src/node/pageManager.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAK3B,OAAO,EAAgD,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEhH,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EACV,oBAAoB,EAEpB,2BAA2B,EAC5B,MAAM,2BAA2B,CAAC;AAInC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,CAEjE;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAEzC,OAAO,EAAE,oBAAoB;IAmBzC,OAAO,CAAC,wBAAwB;YAUlB,0BAA0B;YA0B1B,wBAAwB;IAOhC,KAAK,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAgCnD,QAAQ,CAAC,KAAK,EAAE,wBAAwB;CAqBzC"}
@@ -2,7 +2,7 @@ import Router from "@koa/router";
2
2
  import compose from "koa-compose";
3
3
  import { createHash } from "node:crypto";
4
4
  import * as path from "node:path";
5
- import { DEFAULT_CONSOLE_BASE_PATH } from "@zhin.js/contract";
5
+ import { DEFAULT_CONSOLE_BASE_PATH } from '@zhin.js/contract';
6
6
  import { createInMemoryEntryStore } from "./entryStore.js";
7
7
  import { registerConsoleApiRoutes } from "./consoleApiRouter.js";
8
8
  import { attachConsoleClientHost } from "./startHost.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pageManager.js","sourceRoot":"","sources":["../../src/node/pageManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pageManager.js","sourceRoot":"","sources":["../../src/node/pageManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AccessSnapshot, PageManifest } from '@zhin.js/console-contract';
2
+ export interface AccessIndex {
3
+ readonly permissions: ReadonlySet<string>;
4
+ readonly roles: ReadonlySet<string>;
5
+ }
6
+ export declare function createAccessIndex(access: AccessSnapshot): AccessIndex;
7
+ export declare function allowsPage(page: PageManifest, access: AccessIndex): boolean;
8
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/plugin-runtime/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CAKrE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAG3E"}
@@ -0,0 +1,11 @@
1
+ export function createAccessIndex(access) {
2
+ return Object.freeze({
3
+ permissions: new Set(access.permissions),
4
+ roles: new Set(access.roles),
5
+ });
6
+ }
7
+ export function allowsPage(page, access) {
8
+ return page.requiredPermissions.every((permission) => access.permissions.has(permission))
9
+ && page.requiredRoles.every((role) => access.roles.has(role));
10
+ }
11
+ //# sourceMappingURL=access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/plugin-runtime/access.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QACxC,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAkB,EAAE,MAAmB;IAChE,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;WACpF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { AccessSnapshot, ConsoleTopology, LayoutManifest, LayoutSlot, NavNode, PageManifest } from '@zhin.js/console-contract';
2
+ import type { PluginId, RuntimeSnapshot } from '@zhin.js/plugin-runtime';
3
+ export type RouteMatch = {
4
+ readonly status: 'found';
5
+ readonly page: Readonly<PageManifest>;
6
+ } | {
7
+ readonly status: 'forbidden';
8
+ readonly page: Readonly<PageManifest>;
9
+ } | {
10
+ readonly status: 'missing';
11
+ };
12
+ export declare class ConsoleCatalog {
13
+ #private;
14
+ readonly generation: number;
15
+ constructor(snapshot: RuntimeSnapshot, access: AccessSnapshot, active?: () => boolean);
16
+ pages(): readonly Readonly<PageManifest>[];
17
+ match(path: string): RouteMatch;
18
+ navigation(): readonly Readonly<NavNode>[];
19
+ /**
20
+ * Return the complete Console view for this generation. Pages, navigation,
21
+ * and layout resolution all retain the same snapshot through the caller's
22
+ * ConsoleRuntime lease, including while a later generation is prepared.
23
+ */
24
+ topology(): Readonly<ConsoleTopology>;
25
+ layouts(owner: PluginId, slot: LayoutSlot): readonly Readonly<LayoutManifest>[];
26
+ fallback(owner: PluginId): string | undefined;
27
+ }
28
+ //# sourceMappingURL=console-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-catalog.d.ts","sourceRoot":"","sources":["../../src/plugin-runtime/console-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,eAAe,EACf,cAAc,EACd,UAAU,EACV,OAAO,EACP,YAAY,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAa,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAMpF,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;CAAE,GACvE;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEnC,qBAAa,cAAc;;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAQ1B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,MAAM,OAAoB;IAUpC,KAAK,IAAI,SAAS,QAAQ,CAAC,YAAY,CAAC,EAAE;IAK1C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAS/B,UAAU,IAAI,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE;IAK1C;;;;OAIG;IACH,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC;IAWrC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,SAAS,QAAQ,CAAC,cAAc,CAAC,EAAE;IAM/E,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;CAkC9C"}
@@ -0,0 +1,102 @@
1
+ import { LayoutIndex, layoutFeatureId } from '@zhin.js/layout';
2
+ import { PageIndex, pageFeatureId } from '@zhin.js/page';
3
+ import { allowsPage, createAccessIndex } from './access.js';
4
+ import { buildNavigation } from './navigation.js';
5
+ export class ConsoleCatalog {
6
+ generation;
7
+ #snapshot;
8
+ #pages;
9
+ #layouts;
10
+ #access;
11
+ #active;
12
+ constructor(snapshot, access, active = () => true) {
13
+ this.generation = snapshot.generation;
14
+ this.#snapshot = snapshot;
15
+ this.#pages = projection(snapshot, pageFeatureId, PageIndex);
16
+ this.#layouts = projection(snapshot, layoutFeatureId, LayoutIndex);
17
+ this.#access = createAccessIndex(access);
18
+ this.#active = active;
19
+ }
20
+ pages() {
21
+ this.#assertActive();
22
+ return Object.freeze((this.#pages?.list() ?? []).filter((page) => allowsPage(page, this.#access)));
23
+ }
24
+ match(path) {
25
+ this.#assertActive();
26
+ const page = this.#pages?.route(path);
27
+ if (!page)
28
+ return Object.freeze({ status: 'missing' });
29
+ return allowsPage(page, this.#access)
30
+ ? Object.freeze({ status: 'found', page })
31
+ : Object.freeze({ status: 'forbidden', page });
32
+ }
33
+ navigation() {
34
+ this.#assertActive();
35
+ return buildNavigation(this.#snapshot, this.pages());
36
+ }
37
+ /**
38
+ * Return the complete Console view for this generation. Pages, navigation,
39
+ * and layout resolution all retain the same snapshot through the caller's
40
+ * ConsoleRuntime lease, including while a later generation is prepared.
41
+ */
42
+ topology() {
43
+ this.#assertActive();
44
+ const pages = this.pages();
45
+ return Object.freeze({
46
+ generation: this.generation,
47
+ pages,
48
+ navigation: buildNavigation(this.#snapshot, pages),
49
+ resolve: (path) => this.#resolveTopology(path),
50
+ });
51
+ }
52
+ layouts(owner, slot) {
53
+ this.#assertActive();
54
+ if (!this.#snapshot.tree.has(owner))
55
+ throw new Error(`Unknown Layout owner: ${owner}`);
56
+ return this.#layouts?.chain(owner, slot) ?? Object.freeze([]);
57
+ }
58
+ fallback(owner) {
59
+ this.#assertActive();
60
+ if (!this.#snapshot.tree.has(owner))
61
+ throw new Error(`Unknown Page fallback owner: ${owner}`);
62
+ let current = owner;
63
+ while (current) {
64
+ const page = this.#pages?.ownedBy(current).find((candidate) => allowsPage(candidate, this.#access));
65
+ if (page)
66
+ return page.route;
67
+ current = this.#snapshot.tree.get(current)?.parent;
68
+ }
69
+ return undefined;
70
+ }
71
+ #resolveTopology(path) {
72
+ const match = this.match(path);
73
+ if (match.status !== 'found')
74
+ return Object.freeze({ status: match.status });
75
+ return Object.freeze({
76
+ status: 'found',
77
+ page: match.page,
78
+ layouts: this.#nearestLayouts(match.page.owner),
79
+ });
80
+ }
81
+ #nearestLayouts(owner) {
82
+ const nav = this.#layouts?.resolve(owner, 'nav');
83
+ const footer = this.#layouts?.resolve(owner, 'footer');
84
+ return Object.freeze({
85
+ ...(nav ? { nav } : {}),
86
+ ...(footer ? { footer } : {}),
87
+ });
88
+ }
89
+ #assertActive() {
90
+ if (!this.#active())
91
+ throw new Error('Console catalog view scope has ended');
92
+ }
93
+ }
94
+ function projection(snapshot, id, constructor) {
95
+ const value = snapshot.projections.get(id);
96
+ return value
97
+ && typeof value === 'object'
98
+ && Object.prototype.isPrototypeOf.call(constructor.prototype, value)
99
+ ? value
100
+ : undefined;
101
+ }
102
+ //# sourceMappingURL=console-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-catalog.js","sourceRoot":"","sources":["../../src/plugin-runtime/console-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type SnapshotReader } from '@zhin.js/plugin-runtime';
2
+ import type { AccessSnapshot } from '@zhin.js/console-contract';
3
+ import { ConsoleCatalog } from './console-catalog.js';
4
+ export declare const consoleRuntimeToken: import("@zhin.js/plugin-runtime").Token<ConsoleRuntime>;
5
+ export declare class ConsoleRuntime {
6
+ #private;
7
+ attach(snapshots: SnapshotReader): void;
8
+ runView<TResult>(access: AccessSnapshot, operation: (catalog: ConsoleCatalog) => TResult | Promise<TResult>): Promise<TResult>;
9
+ }
10
+ //# sourceMappingURL=console-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-runtime.d.ts","sourceRoot":"","sources":["../../src/plugin-runtime/console-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,yDAAsD,CAAC;AAEvF,qBAAa,cAAc;;IAGzB,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAOjC,OAAO,CAAC,OAAO,EACnB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GACjE,OAAO,CAAC,OAAO,CAAC;CAWpB"}
@@ -0,0 +1,26 @@
1
+ import { createToken } from '@zhin.js/plugin-runtime';
2
+ import { ConsoleCatalog } from './console-catalog.js';
3
+ export const consoleRuntimeToken = createToken('zhin.console.runtime');
4
+ export class ConsoleRuntime {
5
+ #snapshots;
6
+ attach(snapshots) {
7
+ if (this.#snapshots && this.#snapshots !== snapshots) {
8
+ throw new Error('ConsoleRuntime is already attached to another Root');
9
+ }
10
+ this.#snapshots = snapshots;
11
+ }
12
+ async runView(access, operation) {
13
+ if (!this.#snapshots)
14
+ throw new Error('ConsoleRuntime is not attached to a Root');
15
+ const lease = this.#snapshots.acquire();
16
+ let active = true;
17
+ try {
18
+ return await operation(new ConsoleCatalog(lease.value, access, () => active));
19
+ }
20
+ finally {
21
+ active = false;
22
+ lease.release();
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=console-runtime.js.map