@noego/forge 0.0.10 → 0.0.12

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 (54) hide show
  1. package/dist/client.cjs +1 -1
  2. package/dist/client.cjs.map +1 -1
  3. package/dist/client.mjs +224 -219
  4. package/dist/client.mjs.map +1 -1
  5. package/dist/options/ServerOptions.cjs +28 -0
  6. package/dist/options/ServerOptions.cjs.map +1 -0
  7. package/dist/options/ServerOptions.d.ts +19 -0
  8. package/dist/options/ServerOptions.mjs +21 -0
  9. package/dist/options/ServerOptions.mjs.map +1 -0
  10. package/dist/options/assets.cjs +42 -0
  11. package/dist/options/assets.cjs.map +1 -0
  12. package/dist/options/assets.d.ts +46 -0
  13. package/dist/options/assets.mjs +38 -0
  14. package/dist/options/assets.mjs.map +1 -0
  15. package/dist/plugins/serverOnlyStub.d.ts +6 -0
  16. package/dist/plugins-cjs/index.plugins.js +9 -0
  17. package/dist/plugins-cjs/index.plugins.js.map +1 -0
  18. package/dist/plugins-cjs/options/ServerOptions.js +28 -0
  19. package/dist/plugins-cjs/options/ServerOptions.js.map +1 -0
  20. package/dist/plugins-cjs/options/assets.js +42 -0
  21. package/dist/plugins-cjs/options/assets.js.map +1 -0
  22. package/dist/plugins-cjs/plugins/serverOnlyStub.js +226 -0
  23. package/dist/plugins-cjs/plugins/serverOnlyStub.js.map +1 -0
  24. package/dist/plugins-cjs/routing/html_render/html_render.js +62 -0
  25. package/dist/plugins-cjs/routing/html_render/html_render.js.map +1 -0
  26. package/dist/plugins-cjs/stubs/server-only.js +10 -0
  27. package/dist/plugins-cjs/stubs/server-only.js.map +1 -0
  28. package/dist/plugins-es/index.plugins.d.ts +2 -0
  29. package/dist/plugins-es/index.plugins.js +2 -0
  30. package/dist/plugins-es/index.plugins.js.map +1 -0
  31. package/dist/plugins-es/options/ServerOptions.d.ts +19 -0
  32. package/dist/plugins-es/options/ServerOptions.js +21 -0
  33. package/dist/plugins-es/options/ServerOptions.js.map +1 -0
  34. package/dist/plugins-es/options/assets.d.ts +46 -0
  35. package/dist/plugins-es/options/assets.js +38 -0
  36. package/dist/plugins-es/options/assets.js.map +1 -0
  37. package/dist/plugins-es/plugins/serverOnlyStub.d.ts +6 -0
  38. package/dist/plugins-es/plugins/serverOnlyStub.js +200 -0
  39. package/dist/plugins-es/plugins/serverOnlyStub.js.map +1 -0
  40. package/dist/plugins-es/routing/html_render/html_render.d.ts +19 -0
  41. package/dist/plugins-es/routing/html_render/html_render.js +53 -0
  42. package/dist/plugins-es/routing/html_render/html_render.js.map +1 -0
  43. package/dist/plugins-es/stubs/server-only.d.ts +3 -0
  44. package/dist/plugins-es/stubs/server-only.js +7 -0
  45. package/dist/plugins-es/stubs/server-only.js.map +1 -0
  46. package/dist/routing/html_render/html_render.d.ts +19 -0
  47. package/dist/routing/html_render/html_render.js +53 -0
  48. package/dist/routing/html_render/html_render.js.map +1 -0
  49. package/dist-ssr/server.cjs +179 -23
  50. package/dist-ssr/server.cjs.map +1 -1
  51. package/dist-ssr/server.js +179 -23
  52. package/dist-ssr/server.js.map +1 -1
  53. package/package.json +11 -4
  54. package/src/components/RecursiveRender.svelte +55 -14
@@ -0,0 +1,200 @@
1
+ // src/plugins/serverOnlyStub.ts
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ import { init, parse } from 'es-module-lexer';
5
+ const DEFAULT_STUB = `export const __server_only__ = true;
6
+
7
+ const __serverOnlyThrow = (name) => {
8
+ throw new Error('[server-only] Client tried to access: ' + name);
9
+ };
10
+
11
+ const __serverOnlyProxy = new Proxy(() => {
12
+ __serverOnlyThrow('default export');
13
+ }, {
14
+ get(_t, prop) {
15
+ if (prop === Symbol.toStringTag) return 'ServerOnlyStub';
16
+ if (prop === 'toString') return () => 'ServerOnlyStub';
17
+ __serverOnlyThrow('default export.' + String(prop));
18
+ },
19
+ apply() {
20
+ __serverOnlyThrow('default export');
21
+ },
22
+ construct() {
23
+ __serverOnlyThrow('default export');
24
+ }
25
+ });
26
+
27
+ export default __serverOnlyProxy;
28
+ `;
29
+ const stubCache = new Map();
30
+ function toArray(value) {
31
+ return Array.isArray(value) ? value : [value];
32
+ }
33
+ function resolvePath(root, input) {
34
+ return path.isAbsolute(input) ? input : path.resolve(root, input);
35
+ }
36
+ function normalise(realPathCandidate) {
37
+ return fs.realpathSync(realPathCandidate);
38
+ }
39
+ function categoriseTargets(root, include) {
40
+ const files = new Set();
41
+ const dirs = [];
42
+ for (const entry of toArray(include)) {
43
+ const abs = resolvePath(root, entry);
44
+ if (!fs.existsSync(abs)) {
45
+ throw new Error(`[serverOnlyStub] include path not found: ${entry}`);
46
+ }
47
+ const stat = fs.statSync(abs);
48
+ const real = normalise(abs);
49
+ if (stat.isDirectory()) {
50
+ dirs.push(real);
51
+ }
52
+ else if (stat.isFile()) {
53
+ files.add(real);
54
+ }
55
+ else {
56
+ throw new Error(`[serverOnlyStub] include must be a file or directory: ${entry}`);
57
+ }
58
+ }
59
+ return { files, dirs };
60
+ }
61
+ function pickStub(root, stubFile) {
62
+ if (!stubFile)
63
+ return null;
64
+ const abs = resolvePath(root, stubFile);
65
+ if (!fs.existsSync(abs)) {
66
+ throw new Error(`[serverOnlyStub] stubFile not found: ${stubFile}`);
67
+ }
68
+ return fs.readFileSync(abs, 'utf8');
69
+ }
70
+ function normaliseLoadedId(root, id) {
71
+ const base = id.split('?')[0];
72
+ const withoutFsPrefix = base.startsWith('/@fs/') ? base.slice(4) : base;
73
+ const candidate = path.isAbsolute(withoutFsPrefix) ? withoutFsPrefix : path.resolve(root, withoutFsPrefix);
74
+ try {
75
+ return normalise(candidate);
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ }
81
+ function toDisplayPath(root, filePath) {
82
+ const rel = path.relative(root, filePath);
83
+ if (rel && !rel.startsWith('..') && !path.isAbsolute(rel)) {
84
+ return rel.split(path.sep).join('/');
85
+ }
86
+ return filePath.split(path.sep).join('/');
87
+ }
88
+ function extractExportInfo(code, id) {
89
+ const [, exportEntries] = parse(code, id);
90
+ let hasDefault = false;
91
+ let hasStar = false;
92
+ const named = new Set();
93
+ for (const entry of exportEntries) {
94
+ const exportedName = entry.n;
95
+ if (exportedName === 'default') {
96
+ hasDefault = true;
97
+ continue;
98
+ }
99
+ if (exportedName === '*') {
100
+ hasStar = true;
101
+ continue;
102
+ }
103
+ if (exportedName) {
104
+ named.add(exportedName);
105
+ }
106
+ }
107
+ return { hasDefault, named: Array.from(named).sort(), hasStar };
108
+ }
109
+ function buildDynamicStub(moduleDisplay, info) {
110
+ if (info.hasStar) {
111
+ return DEFAULT_STUB;
112
+ }
113
+ const lines = [];
114
+ lines.push('export const __server_only__ = true;');
115
+ lines.push(`const __serverOnlyModuleId = ${JSON.stringify(moduleDisplay)};`);
116
+ lines.push(`function __serverOnlyFailure(name) { throw new Error('[server-only] Client tried to access: ' + __serverOnlyModuleId + (name ? ' -> ' + name : '')); }`);
117
+ lines.push('function __createServerOnlyStub(name) {');
118
+ lines.push(' const label = name ?? "default export";');
119
+ lines.push(' const fn = function () { __serverOnlyFailure(label); };');
120
+ lines.push(' return new Proxy(fn, {');
121
+ lines.push(' get(_target, prop) {');
122
+ lines.push(' if (prop === Symbol.toStringTag) return "ServerOnlyStub";');
123
+ lines.push(' if (prop === "toString") return () => "ServerOnlyStub";');
124
+ lines.push(' __serverOnlyFailure(label + "." + String(prop));');
125
+ lines.push(' },');
126
+ lines.push(' apply() { __serverOnlyFailure(label); },');
127
+ lines.push(' construct() { __serverOnlyFailure(label); }');
128
+ lines.push(' });');
129
+ lines.push('}');
130
+ for (const name of info.named) {
131
+ lines.push(`export const ${name} = __createServerOnlyStub(${JSON.stringify(name)});`);
132
+ }
133
+ if (info.hasDefault) {
134
+ lines.push('const __defaultExport = __createServerOnlyStub("default export");');
135
+ lines.push('export default __defaultExport;');
136
+ }
137
+ return lines.join('\n');
138
+ }
139
+ function generateStubForFile(root, filePath) {
140
+ try {
141
+ const stat = fs.statSync(filePath);
142
+ const cached = stubCache.get(filePath);
143
+ if (cached && cached.mtimeMs === stat.mtimeMs) {
144
+ return cached.code;
145
+ }
146
+ const source = fs.readFileSync(filePath, 'utf8');
147
+ let code;
148
+ try {
149
+ const info = extractExportInfo(source, filePath);
150
+ code = buildDynamicStub(toDisplayPath(root, filePath), info);
151
+ }
152
+ catch {
153
+ code = DEFAULT_STUB;
154
+ }
155
+ stubCache.set(filePath, { mtimeMs: stat.mtimeMs, code });
156
+ return code;
157
+ }
158
+ catch {
159
+ return DEFAULT_STUB;
160
+ }
161
+ }
162
+ export default function serverOnlyStub(options) {
163
+ if (!options?.include) {
164
+ throw new TypeError('[serverOnlyStub] include is required.');
165
+ }
166
+ let rootDir = process.cwd();
167
+ let targets = { files: new Set(), dirs: [] };
168
+ let customStub = null;
169
+ let parserReady = false;
170
+ return {
171
+ name: 'server-only-stub',
172
+ enforce: 'pre',
173
+ async configResolved(config) {
174
+ rootDir = config.root ?? rootDir;
175
+ targets = categoriseTargets(rootDir, options.include);
176
+ customStub = pickStub(rootDir, options.stubFile);
177
+ if (!options.stubFile && !parserReady) {
178
+ await init;
179
+ parserReady = true;
180
+ }
181
+ },
182
+ async load(id, loadOptions) {
183
+ if (loadOptions?.ssr)
184
+ return null;
185
+ const realId = normaliseLoadedId(rootDir, id);
186
+ if (!realId)
187
+ return null;
188
+ if (targets.files.has(realId)) {
189
+ return customStub ?? generateStubForFile(rootDir, realId);
190
+ }
191
+ for (const dir of targets.dirs) {
192
+ if (realId === dir || realId.startsWith(dir + path.sep)) {
193
+ return customStub ?? generateStubForFile(rootDir, realId);
194
+ }
195
+ }
196
+ return null;
197
+ },
198
+ };
199
+ }
200
+ //# sourceMappingURL=serverOnlyStub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverOnlyStub.js","sourceRoot":"","sources":["../../../src/plugins/serverOnlyStub.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface IHTMLRender {
2
+ renderHTML(data: any): Promise<string>;
3
+ getTemplate(): Promise<string>;
4
+ }
5
+ export declare class BaseHTMLRender implements IHTMLRender {
6
+ private template;
7
+ constructor(template?: string);
8
+ getTemplate(): Promise<string>;
9
+ renderHTML(data: any): Promise<string>;
10
+ }
11
+ export declare class DefaultHTMLRender extends BaseHTMLRender {
12
+ constructor();
13
+ }
14
+ export declare class LiveHTMLRender implements IHTMLRender {
15
+ private html_path;
16
+ constructor(html_path: string);
17
+ renderHTML(data: any): Promise<string>;
18
+ getTemplate(): Promise<string>;
19
+ }
@@ -0,0 +1,53 @@
1
+ import Handlebars from 'handlebars';
2
+ import fs from "fs/promises";
3
+ const default_template = `
4
+ <!DOCTYPE html>
5
+ <html lang="en">
6
+ <head>
7
+ {{{HEAD}}}
8
+ <style>{{{CSS}}}</style>
9
+ </head>
10
+ <body>
11
+ <div id="app">{{{APP}}}</div>
12
+ <script>window.__INITIAL_DATA__ = {{{DATA}}}</script>
13
+
14
+ <script type="module">
15
+ import { createApp } from '/src/client/client.ts';
16
+ document.addEventListener('DOMContentLoaded', () => {
17
+ createApp('/components/');
18
+ });
19
+ </script>
20
+ </body>
21
+ </html>
22
+ `;
23
+ export class BaseHTMLRender {
24
+ constructor(template = default_template) {
25
+ this.template = template;
26
+ }
27
+ async getTemplate() {
28
+ return this.template;
29
+ }
30
+ async renderHTML(data) {
31
+ const template = Handlebars.compile(await this.getTemplate());
32
+ return template(data);
33
+ }
34
+ }
35
+ export class DefaultHTMLRender extends BaseHTMLRender {
36
+ constructor() {
37
+ super();
38
+ }
39
+ }
40
+ export class LiveHTMLRender {
41
+ constructor(html_path) {
42
+ this.html_path = html_path;
43
+ }
44
+ async renderHTML(data) {
45
+ const template = Handlebars.compile(await this.getTemplate());
46
+ return template(data);
47
+ }
48
+ async getTemplate() {
49
+ const file_content = await fs.readFile(this.html_path, 'utf8');
50
+ return file_content;
51
+ }
52
+ }
53
+ //# sourceMappingURL=html_render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html_render.js","sourceRoot":"","sources":["../../../../src/routing/html_render/html_render.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,aAAa,CAAA;AAE5B,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;CAmBxB,CAAA;AAUD,MAAM,OAAO,cAAc;IACvB,YAAoB,WAAkB,gBAAgB;QAAlC,aAAQ,GAAR,QAAQ,CAA0B;IAEtD,CAAC;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEC,KAAK,CAAC,UAAU,CAAC,IAAQ;QACrB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;CACJ;AAED,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACjD;QACI,KAAK,EAAE,CAAA;IACX,CAAC;CACJ;AAID,MAAM,OAAO,cAAc;IACzB,YAAoB,SAAgB;QAAhB,cAAS,GAAT,SAAS,CAAO;IACpC,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,IAAS;QACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,CAAC,WAAW;QACf,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC9D,OAAO,YAAY,CAAA;IACrB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export declare const __server_only__ = true;
2
+ declare const _default: {};
3
+ export default _default;
@@ -0,0 +1,7 @@
1
+ export const __server_only__ = true;
2
+ export default new Proxy({}, {
3
+ get(_t, prop) {
4
+ throw new Error(`[server-only] Client tried to access: ${String(prop)}`);
5
+ }
6
+ });
7
+ //# sourceMappingURL=server-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-only.js","sourceRoot":"","sources":["../../../src/stubs/server-only.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,eAAe,IAAI,KAAK,CAAC,EAAE,EAAE;IAC3B,GAAG,CAAC,EAAE,EAAE,IAAI;QACV,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface IHTMLRender {
2
+ renderHTML(data: any): Promise<string>;
3
+ getTemplate(): Promise<string>;
4
+ }
5
+ export declare class BaseHTMLRender implements IHTMLRender {
6
+ private template;
7
+ constructor(template?: string);
8
+ getTemplate(): Promise<string>;
9
+ renderHTML(data: any): Promise<string>;
10
+ }
11
+ export declare class DefaultHTMLRender extends BaseHTMLRender {
12
+ constructor();
13
+ }
14
+ export declare class LiveHTMLRender implements IHTMLRender {
15
+ private html_path;
16
+ constructor(html_path: string);
17
+ renderHTML(data: any): Promise<string>;
18
+ getTemplate(): Promise<string>;
19
+ }
@@ -0,0 +1,53 @@
1
+ import Handlebars from 'handlebars';
2
+ import fs from "fs/promises";
3
+ const default_template = `
4
+ <!DOCTYPE html>
5
+ <html lang="en">
6
+ <head>
7
+ {{{HEAD}}}
8
+ <style>{{{CSS}}}</style>
9
+ </head>
10
+ <body>
11
+ <div id="app">{{{APP}}}</div>
12
+ <script>window.__INITIAL_DATA__ = {{{DATA}}}</script>
13
+
14
+ <script type="module">
15
+ import { createApp } from '/src/client/client.ts';
16
+ document.addEventListener('DOMContentLoaded', () => {
17
+ createApp('/components/');
18
+ });
19
+ </script>
20
+ </body>
21
+ </html>
22
+ `;
23
+ export class BaseHTMLRender {
24
+ constructor(template = default_template) {
25
+ this.template = template;
26
+ }
27
+ async getTemplate() {
28
+ return this.template;
29
+ }
30
+ async renderHTML(data) {
31
+ const template = Handlebars.compile(await this.getTemplate());
32
+ return template(data);
33
+ }
34
+ }
35
+ export class DefaultHTMLRender extends BaseHTMLRender {
36
+ constructor() {
37
+ super();
38
+ }
39
+ }
40
+ export class LiveHTMLRender {
41
+ constructor(html_path) {
42
+ this.html_path = html_path;
43
+ }
44
+ async renderHTML(data) {
45
+ const template = Handlebars.compile(await this.getTemplate());
46
+ return template(data);
47
+ }
48
+ async getTemplate() {
49
+ const file_content = await fs.readFile(this.html_path, 'utf8');
50
+ return file_content;
51
+ }
52
+ }
53
+ //# sourceMappingURL=html_render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html_render.js","sourceRoot":"","sources":["../../../../src/routing/html_render/html_render.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,aAAa,CAAA;AAE5B,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;CAmBxB,CAAA;AAUD,MAAM,OAAO,cAAc;IACvB,YAAoB,WAAkB,gBAAgB;QAAlC,aAAQ,GAAR,QAAQ,CAA0B;IAEtD,CAAC;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEC,KAAK,CAAC,UAAU,CAAC,IAAQ;QACrB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;CACJ;AAED,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACjD;QACI,KAAK,EAAE,CAAA;IACX,CAAC;CACJ;AAID,MAAM,OAAO,cAAc;IACzB,YAAoB,SAAgB;QAAhB,cAAS,GAAT,SAAS,CAAO;IACpC,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,IAAS;QACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,CAAC,WAAW;QACf,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC9D,OAAO,YAAY,CAAA;IACrB,CAAC;CACF"}