@emkodev/emroute 1.7.3 → 1.8.0-beta.1

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 (238) hide show
  1. package/README.md +1 -1
  2. package/core/component/abstract.component.ts +74 -0
  3. package/{src → core}/component/page.component.ts +3 -61
  4. package/core/component/widget.component.ts +54 -0
  5. package/core/pipeline/pipeline.ts +224 -0
  6. package/{src/renderer/ssr → core/renderer}/html.renderer.ts +19 -45
  7. package/{src/renderer/ssr → core/renderer}/md.renderer.ts +19 -39
  8. package/{src/renderer/ssr → core/renderer}/ssr.renderer.ts +41 -52
  9. package/{src/route → core/router}/route.resolver.ts +1 -10
  10. package/core/router/route.trie.ts +175 -0
  11. package/core/runtime/abstract.runtime.ts +47 -0
  12. package/core/server/emroute.server.ts +346 -0
  13. package/core/type/component.type.ts +39 -0
  14. package/core/type/element.type.ts +10 -0
  15. package/core/type/logger.type.ts +20 -0
  16. package/core/type/markdown.type.ts +8 -0
  17. package/core/type/route-tree.type.ts +28 -0
  18. package/core/type/route.type.ts +75 -0
  19. package/core/type/widget.type.ts +27 -0
  20. package/core/util/html.util.ts +50 -0
  21. package/{src → core}/util/md.util.ts +0 -2
  22. package/{src/route → core/util}/route-tree.util.ts +0 -2
  23. package/{src → core}/util/widget-resolve.util.ts +12 -42
  24. package/{src → core}/widget/widget.parser.ts +0 -21
  25. package/core/widget/widget.registry.ts +24 -0
  26. package/dist/core/component/abstract.component.d.ts +48 -0
  27. package/dist/core/component/abstract.component.js +42 -0
  28. package/dist/core/component/abstract.component.js.map +1 -0
  29. package/dist/core/component/page.component.d.ts +23 -0
  30. package/dist/core/component/page.component.js +49 -0
  31. package/dist/core/component/page.component.js.map +1 -0
  32. package/dist/core/component/widget.component.d.ts +17 -0
  33. package/dist/core/component/widget.component.js +37 -0
  34. package/dist/core/component/widget.component.js.map +1 -0
  35. package/dist/core/pipeline/pipeline.d.ts +61 -0
  36. package/dist/core/pipeline/pipeline.js +189 -0
  37. package/dist/core/pipeline/pipeline.js.map +1 -0
  38. package/dist/{src/renderer/ssr → core/renderer}/html.renderer.d.ts +8 -24
  39. package/dist/{src/renderer/ssr → core/renderer}/html.renderer.js +12 -33
  40. package/dist/core/renderer/html.renderer.js.map +1 -0
  41. package/dist/{src/renderer/ssr → core/renderer}/md.renderer.d.ts +6 -21
  42. package/dist/{src/renderer/ssr → core/renderer}/md.renderer.js +13 -30
  43. package/dist/core/renderer/md.renderer.js.map +1 -0
  44. package/dist/{src/renderer/ssr → core/renderer}/ssr.renderer.d.ts +11 -17
  45. package/dist/{src/renderer/ssr → core/renderer}/ssr.renderer.js +33 -35
  46. package/dist/core/renderer/ssr.renderer.js.map +1 -0
  47. package/dist/{src/route → core/router}/route.resolver.d.ts +1 -8
  48. package/dist/{src/route → core/router}/route.resolver.js +0 -1
  49. package/dist/core/router/route.resolver.js.map +1 -0
  50. package/dist/core/router/route.trie.d.ts +32 -0
  51. package/dist/core/router/route.trie.js +152 -0
  52. package/dist/core/router/route.trie.js.map +1 -0
  53. package/dist/core/runtime/abstract.runtime.d.ts +32 -0
  54. package/dist/core/runtime/abstract.runtime.js +26 -0
  55. package/dist/core/runtime/abstract.runtime.js.map +1 -0
  56. package/dist/core/server/emroute.server.d.ts +48 -0
  57. package/dist/core/server/emroute.server.js +261 -0
  58. package/dist/core/server/emroute.server.js.map +1 -0
  59. package/dist/core/server/server.type.d.ts +45 -0
  60. package/dist/core/server/server.type.js +11 -0
  61. package/dist/core/server/server.type.js.map +1 -0
  62. package/dist/core/type/component.type.d.ts +37 -0
  63. package/dist/core/type/component.type.js +7 -0
  64. package/dist/core/type/component.type.js.map +1 -0
  65. package/dist/core/type/element.type.d.ts +9 -0
  66. package/dist/core/type/element.type.js +5 -0
  67. package/dist/core/type/element.type.js.map +1 -0
  68. package/dist/core/type/logger.type.d.ts +14 -0
  69. package/dist/core/type/logger.type.js +8 -0
  70. package/dist/core/type/logger.type.js.map +1 -0
  71. package/dist/core/type/markdown.type.d.ts +7 -0
  72. package/dist/core/type/markdown.type.js +5 -0
  73. package/dist/core/type/markdown.type.js.map +1 -0
  74. package/dist/{src → core}/type/route-tree.type.d.ts +0 -12
  75. package/dist/{src → core}/type/route-tree.type.js +0 -1
  76. package/dist/core/type/route-tree.type.js.map +1 -0
  77. package/dist/core/type/route.type.d.ts +62 -0
  78. package/dist/core/type/route.type.js +7 -0
  79. package/dist/core/type/route.type.js.map +1 -0
  80. package/dist/core/type/widget.type.d.ts +27 -0
  81. package/dist/core/type/widget.type.js +5 -0
  82. package/dist/core/type/widget.type.js.map +1 -0
  83. package/dist/core/util/html.util.d.ts +14 -0
  84. package/dist/core/util/html.util.js +43 -0
  85. package/dist/core/util/html.util.js.map +1 -0
  86. package/dist/{src → core}/util/md.util.d.ts +0 -1
  87. package/dist/{src → core}/util/md.util.js +0 -2
  88. package/dist/core/util/md.util.js.map +1 -0
  89. package/dist/{src/route → core/util}/route-tree.util.js +0 -2
  90. package/dist/core/util/route-tree.util.js.map +1 -0
  91. package/dist/core/util/widget-resolve.util.d.ts +32 -0
  92. package/dist/{src → core}/util/widget-resolve.util.js +10 -40
  93. package/dist/core/util/widget-resolve.util.js.map +1 -0
  94. package/dist/{src → core}/widget/widget.parser.d.ts +0 -13
  95. package/dist/{src → core}/widget/widget.parser.js +0 -21
  96. package/dist/core/widget/widget.parser.js.map +1 -0
  97. package/dist/core/widget/widget.registry.d.ts +13 -0
  98. package/dist/core/widget/widget.registry.js +19 -0
  99. package/dist/core/widget/widget.registry.js.map +1 -0
  100. package/dist/emroute.js +1077 -1195
  101. package/dist/emroute.js.map +36 -5
  102. package/dist/runtime/abstract.runtime.d.ts +41 -7
  103. package/dist/runtime/abstract.runtime.js +394 -7
  104. package/dist/runtime/abstract.runtime.js.map +1 -1
  105. package/dist/runtime/bun/fs/bun-fs.runtime.d.ts +1 -0
  106. package/dist/runtime/bun/fs/bun-fs.runtime.js +15 -1
  107. package/dist/runtime/bun/fs/bun-fs.runtime.js.map +1 -1
  108. package/dist/runtime/bun/sqlite/bun-sqlite.runtime.d.ts +2 -0
  109. package/dist/runtime/bun/sqlite/bun-sqlite.runtime.js +8 -0
  110. package/dist/runtime/bun/sqlite/bun-sqlite.runtime.js.map +1 -1
  111. package/dist/runtime/fetch.runtime.d.ts +3 -3
  112. package/dist/runtime/fetch.runtime.js +3 -3
  113. package/dist/runtime/sitemap.generator.d.ts +1 -1
  114. package/dist/runtime/sitemap.generator.js +1 -1
  115. package/dist/runtime/sitemap.generator.js.map +1 -1
  116. package/dist/runtime/universal/fs/universal-fs.runtime.d.ts +1 -0
  117. package/dist/runtime/universal/fs/universal-fs.runtime.js +15 -1
  118. package/dist/runtime/universal/fs/universal-fs.runtime.js.map +1 -1
  119. package/dist/server/build.util.d.ts +9 -10
  120. package/dist/server/build.util.js +11 -31
  121. package/dist/server/build.util.js.map +1 -1
  122. package/dist/server/codegen.util.d.ts +1 -1
  123. package/dist/server/emroute.server.d.ts +8 -35
  124. package/dist/server/emroute.server.js +7 -351
  125. package/dist/server/emroute.server.js.map +1 -1
  126. package/dist/server/esbuild-manifest.plugin.js +1 -1
  127. package/dist/server/esbuild-manifest.plugin.js.map +1 -1
  128. package/dist/server/server-api.type.d.ts +3 -71
  129. package/dist/server/server-api.type.js +1 -8
  130. package/dist/server/server-api.type.js.map +1 -1
  131. package/dist/src/element/component.element.d.ts +4 -7
  132. package/dist/src/element/component.element.js +6 -19
  133. package/dist/src/element/component.element.js.map +1 -1
  134. package/dist/src/element/markdown.element.d.ts +2 -2
  135. package/dist/src/element/markdown.element.js +3 -2
  136. package/dist/src/element/markdown.element.js.map +1 -1
  137. package/dist/src/index.d.ts +15 -14
  138. package/dist/src/index.js +8 -8
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/renderer/spa/emroute.app.d.ts +50 -0
  141. package/dist/src/renderer/spa/emroute.app.js +246 -0
  142. package/dist/src/renderer/spa/emroute.app.js.map +1 -0
  143. package/dist/src/renderer/spa/mod.d.ts +17 -16
  144. package/dist/src/renderer/spa/mod.js +9 -9
  145. package/dist/src/renderer/spa/mod.js.map +1 -1
  146. package/dist/src/renderer/spa/thin-client.d.ts +3 -3
  147. package/dist/src/renderer/spa/thin-client.js +7 -7
  148. package/dist/src/renderer/spa/thin-client.js.map +1 -1
  149. package/dist/src/route/route.core.d.ts +3 -3
  150. package/dist/src/util/html.util.d.ts +5 -22
  151. package/dist/src/util/html.util.js +8 -56
  152. package/dist/src/util/html.util.js.map +1 -1
  153. package/dist/src/widget/breadcrumb.widget.d.ts +2 -2
  154. package/dist/src/widget/breadcrumb.widget.js +2 -2
  155. package/dist/src/widget/breadcrumb.widget.js.map +1 -1
  156. package/dist/src/widget/page-title.widget.d.ts +1 -1
  157. package/dist/src/widget/page-title.widget.js +1 -1
  158. package/dist/src/widget/page-title.widget.js.map +1 -1
  159. package/package.json +8 -8
  160. package/runtime/abstract.runtime.ts +418 -10
  161. package/runtime/bun/fs/bun-fs.runtime.ts +15 -1
  162. package/runtime/bun/sqlite/bun-sqlite.runtime.ts +9 -0
  163. package/runtime/fetch.runtime.ts +3 -3
  164. package/runtime/sitemap.generator.ts +2 -2
  165. package/runtime/universal/fs/universal-fs.runtime.ts +15 -1
  166. package/server/build.util.ts +17 -43
  167. package/server/codegen.util.ts +1 -1
  168. package/server/emroute.server.ts +12 -426
  169. package/src/element/component.element.ts +8 -27
  170. package/src/element/markdown.element.ts +4 -3
  171. package/src/index.ts +22 -19
  172. package/src/renderer/spa/{thin-client.ts → emroute.app.ts} +18 -19
  173. package/src/renderer/spa/mod.ts +22 -22
  174. package/src/util/html.util.ts +16 -61
  175. package/src/widget/breadcrumb.widget.ts +3 -3
  176. package/src/widget/page-title.widget.ts +1 -1
  177. package/dist/src/component/abstract.component.d.ts +0 -199
  178. package/dist/src/component/abstract.component.js +0 -84
  179. package/dist/src/component/abstract.component.js.map +0 -1
  180. package/dist/src/component/page.component.d.ts +0 -74
  181. package/dist/src/component/page.component.js +0 -107
  182. package/dist/src/component/page.component.js.map +0 -1
  183. package/dist/src/component/widget.component.d.ts +0 -47
  184. package/dist/src/component/widget.component.js +0 -69
  185. package/dist/src/component/widget.component.js.map +0 -1
  186. package/dist/src/renderer/ssr/html.renderer.js.map +0 -1
  187. package/dist/src/renderer/ssr/md.renderer.js.map +0 -1
  188. package/dist/src/renderer/ssr/ssr.renderer.js.map +0 -1
  189. package/dist/src/route/route-tree.util.js.map +0 -1
  190. package/dist/src/route/route.matcher.d.ts +0 -86
  191. package/dist/src/route/route.matcher.js +0 -214
  192. package/dist/src/route/route.matcher.js.map +0 -1
  193. package/dist/src/route/route.resolver.js.map +0 -1
  194. package/dist/src/route/route.trie.d.ts +0 -38
  195. package/dist/src/route/route.trie.js +0 -206
  196. package/dist/src/route/route.trie.js.map +0 -1
  197. package/dist/src/type/element.type.d.ts +0 -19
  198. package/dist/src/type/element.type.js +0 -9
  199. package/dist/src/type/element.type.js.map +0 -1
  200. package/dist/src/type/logger.type.d.ts +0 -17
  201. package/dist/src/type/logger.type.js +0 -9
  202. package/dist/src/type/logger.type.js.map +0 -1
  203. package/dist/src/type/markdown.type.d.ts +0 -20
  204. package/dist/src/type/markdown.type.js +0 -2
  205. package/dist/src/type/markdown.type.js.map +0 -1
  206. package/dist/src/type/route-tree.type.js.map +0 -1
  207. package/dist/src/type/route.type.d.ts +0 -94
  208. package/dist/src/type/route.type.js +0 -8
  209. package/dist/src/type/route.type.js.map +0 -1
  210. package/dist/src/type/widget.type.d.ts +0 -55
  211. package/dist/src/type/widget.type.js +0 -10
  212. package/dist/src/type/widget.type.js.map +0 -1
  213. package/dist/src/util/logger.util.d.ts +0 -26
  214. package/dist/src/util/logger.util.js +0 -80
  215. package/dist/src/util/logger.util.js.map +0 -1
  216. package/dist/src/util/md.util.js.map +0 -1
  217. package/dist/src/util/widget-resolve.util.d.ts +0 -52
  218. package/dist/src/util/widget-resolve.util.js.map +0 -1
  219. package/dist/src/widget/widget.parser.js.map +0 -1
  220. package/dist/src/widget/widget.registry.d.ts +0 -23
  221. package/dist/src/widget/widget.registry.js +0 -42
  222. package/dist/src/widget/widget.registry.js.map +0 -1
  223. package/runtime/bun/esbuild-runtime-loader.plugin.ts +0 -112
  224. package/server/esbuild-manifest.plugin.ts +0 -209
  225. package/server/server-api.type.ts +0 -101
  226. package/src/component/abstract.component.ts +0 -231
  227. package/src/component/widget.component.ts +0 -85
  228. package/src/route/route.core.ts +0 -371
  229. package/src/route/route.trie.ts +0 -265
  230. package/src/type/element.type.ts +0 -22
  231. package/src/type/logger.type.ts +0 -24
  232. package/src/type/markdown.type.ts +0 -21
  233. package/src/type/route-tree.type.ts +0 -51
  234. package/src/type/route.type.ts +0 -124
  235. package/src/type/widget.type.ts +0 -65
  236. package/src/util/logger.util.ts +0 -83
  237. package/src/widget/widget.registry.ts +0 -51
  238. /package/dist/{src/route → core/util}/route-tree.util.d.ts +0 -0
@@ -1,15 +1,14 @@
1
- import type { RouteNode } from '../src/type/route-tree.type.ts';
2
- import type { WidgetManifestEntry } from '../src/type/widget.type.ts';
3
- import type { ElementManifestEntry } from '../src/type/element.type.ts';
1
+ import type { RouteNode } from '../core/type/route-tree.type.ts';
2
+ import type { WidgetManifestEntry } from '../core/type/widget.type.ts';
3
+ import type { ElementManifestEntry } from '../core/type/element.type.ts';
4
4
  export declare const CONTENT_TYPES: Map<string, string>;
5
5
  export type FetchParams = Parameters<typeof fetch>;
6
6
  export type FetchReturn = ReturnType<typeof fetch>;
7
7
  export declare const DEFAULT_ROUTES_DIR = "/routes";
8
8
  export declare const DEFAULT_WIDGETS_DIR = "/widgets";
9
9
  export declare const DEFAULT_ELEMENTS_DIR = "/elements";
10
- export declare const ROUTES_MANIFEST_PATH = "/routes.manifest.json";
11
- export declare const WIDGETS_MANIFEST_PATH = "/widgets.manifest.json";
12
- export declare const ELEMENTS_MANIFEST_PATH = "/elements.manifest.json";
10
+ import { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH } from '../core/runtime/abstract.runtime.ts';
11
+ export { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH };
13
12
  export interface RuntimeConfig {
14
13
  routesDir?: string;
15
14
  widgetsDir?: string;
@@ -41,7 +40,7 @@ export declare abstract class Runtime {
41
40
  }): Promise<string>;
42
41
  /** Read — returns full Response with headers, status, body. */
43
42
  abstract query(resource: FetchParams[0], options?: FetchParams[1]): FetchReturn;
44
- /** Write. Defaults to PUT; pass `{ method: "DELETE" }` etc. to override. */
43
+ /** Write or delete. Defaults to PUT; pass `{ method: "DELETE" }` to remove. */
45
44
  command(resource: FetchParams[0], options?: FetchParams[1]): FetchReturn;
46
45
  /**
47
46
  * Parse a single route file path and merge it into the stored manifest.
@@ -49,6 +48,31 @@ export declare abstract class Runtime {
49
48
  * inserts the new entry, and writes it back.
50
49
  */
51
50
  private mergeRouteIntoManifest;
51
+ /**
52
+ * Remove a route entry from the stored manifest when a file is deleted.
53
+ * Walks the tree to find the node, clears the relevant field, then
54
+ * prunes empty ancestor nodes.
55
+ */
56
+ private pruneRouteFromManifest;
57
+ /** Find a target node without creating it (read-only counterpart to resolveTargetNode). */
58
+ private findTargetNode;
59
+ private isEmptyNode;
60
+ /**
61
+ * Remove a widget entry from the stored manifest when a file is deleted.
62
+ */
63
+ private pruneWidgetFromManifest;
64
+ /**
65
+ * Remove an element entry from the stored manifest when a file is deleted.
66
+ */
67
+ private pruneElementFromManifest;
68
+ /**
69
+ * After a source or companion file is written, check if a built `.js`
70
+ * artifact exists for that module. If so, re-transpile the `.ts` source
71
+ * with companions inlined and write the `.js` back.
72
+ *
73
+ * Best-effort: silently skips if `transpile()` is not implemented.
74
+ */
75
+ private retranspileIfNeeded;
52
76
  /**
53
77
  * Dynamically import a module from this runtime's storage.
54
78
  * Used by the server for SSR imports of `.page.ts` and `.widget.ts` files.
@@ -59,6 +83,16 @@ export declare abstract class Runtime {
59
83
  * Used by the build step to produce browser-loadable .js modules.
60
84
  */
61
85
  transpile(_source: string): Promise<string>;
86
+ /**
87
+ * Parse a widget file path and merge it into the stored manifest.
88
+ * Reads the current manifest, upserts the entry, writes it back.
89
+ */
90
+ private mergeWidgetIntoManifest;
91
+ /**
92
+ * Parse an element file path and merge it into the stored manifest.
93
+ * Reads the current manifest, upserts the entry, writes it back.
94
+ */
95
+ private mergeElementIntoManifest;
62
96
  private routesManifestCache;
63
97
  private widgetsManifestCache;
64
98
  private elementsManifestCache;
@@ -1,4 +1,4 @@
1
- import { resolveTargetNode } from "../src/route/route-tree.util.js";
1
+ import { resolveTargetNode } from "../core/util/route-tree.util.js";
2
2
  export const CONTENT_TYPES = new Map([
3
3
  ['.html', 'text/html; charset=utf-8'],
4
4
  ['.css', 'text/css; charset=utf-8'],
@@ -25,9 +25,8 @@ export const CONTENT_TYPES = new Map([
25
25
  export const DEFAULT_ROUTES_DIR = '/routes';
26
26
  export const DEFAULT_WIDGETS_DIR = '/widgets';
27
27
  export const DEFAULT_ELEMENTS_DIR = '/elements';
28
- export const ROUTES_MANIFEST_PATH = '/routes.manifest.json';
29
- export const WIDGETS_MANIFEST_PATH = '/widgets.manifest.json';
30
- export const ELEMENTS_MANIFEST_PATH = '/elements.manifest.json';
28
+ import { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH, } from "../core/runtime/abstract.runtime.js";
29
+ export { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH };
31
30
  /**
32
31
  * Abstract resource provider. Speaks Request/Response (ADR-1).
33
32
  *
@@ -46,16 +45,50 @@ export class Runtime {
46
45
  this.config = config;
47
46
  this.config = config;
48
47
  }
49
- /** Write. Defaults to PUT; pass `{ method: "DELETE" }` etc. to override. */
48
+ /** Write or delete. Defaults to PUT; pass `{ method: "DELETE" }` to remove. */
50
49
  command(resource, options) {
51
50
  const path = typeof resource === 'string'
52
51
  ? resource
53
52
  : new URL(resource instanceof Request ? resource.url : resource.toString()).pathname;
54
- const result = this.handle(resource, { method: 'PUT', ...options });
53
+ const method = options?.method ?? 'PUT';
54
+ const isDelete = method === 'DELETE';
55
+ const result = this.handle(resource, { method, ...options });
55
56
  const routesDir = this.config.routesDir ?? DEFAULT_ROUTES_DIR;
57
+ const widgetsDir = this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR;
58
+ const elementsDir = this.config.elementsDir ?? DEFAULT_ELEMENTS_DIR;
56
59
  if (path.startsWith(routesDir + '/')) {
57
60
  return result.then(async (res) => {
58
- await this.mergeRouteIntoManifest(path, routesDir);
61
+ if (isDelete) {
62
+ await this.pruneRouteFromManifest(path, routesDir);
63
+ }
64
+ else {
65
+ await this.mergeRouteIntoManifest(path, routesDir);
66
+ await this.retranspileIfNeeded(path, routesDir, 'route');
67
+ }
68
+ return res;
69
+ });
70
+ }
71
+ if (path.startsWith(widgetsDir + '/')) {
72
+ return result.then(async (res) => {
73
+ if (isDelete) {
74
+ await this.pruneWidgetFromManifest(path, widgetsDir);
75
+ }
76
+ else {
77
+ await this.mergeWidgetIntoManifest(path, widgetsDir);
78
+ await this.retranspileIfNeeded(path, widgetsDir, 'widget');
79
+ }
80
+ return res;
81
+ });
82
+ }
83
+ if (path.startsWith(elementsDir + '/')) {
84
+ return result.then(async (res) => {
85
+ if (isDelete) {
86
+ await this.pruneElementFromManifest(path, elementsDir);
87
+ }
88
+ else {
89
+ await this.mergeElementIntoManifest(path, elementsDir);
90
+ await this.retranspileIfNeeded(path, elementsDir, 'element');
91
+ }
59
92
  return res;
60
93
  });
61
94
  }
@@ -115,6 +148,265 @@ export class Runtime {
115
148
  body: JSON.stringify(tree),
116
149
  });
117
150
  }
151
+ /**
152
+ * Remove a route entry from the stored manifest when a file is deleted.
153
+ * Walks the tree to find the node, clears the relevant field, then
154
+ * prunes empty ancestor nodes.
155
+ */
156
+ async pruneRouteFromManifest(filePath, routesDir) {
157
+ const relativePath = filePath.slice(routesDir.length + 1);
158
+ const parts = relativePath.split('/');
159
+ const filename = parts[parts.length - 1];
160
+ const dirSegments = parts.slice(0, -1);
161
+ const match = filename.match(/^(.+?)\.(page|error|redirect)\.(ts|js|html|md|css)$/);
162
+ if (!match)
163
+ return;
164
+ const [, name, kind, ext] = match;
165
+ const response = await this.handle(ROUTES_MANIFEST_PATH);
166
+ if (response.status === 404)
167
+ return;
168
+ const tree = await response.json();
169
+ // Walk to the parent node, tracking path for pruning
170
+ const ancestors = [];
171
+ let node = tree;
172
+ for (const dir of dirSegments) {
173
+ if (dir.startsWith('[') && dir.endsWith(']')) {
174
+ if (!node.dynamic)
175
+ return;
176
+ ancestors.push({ node, key: dir, via: 'dynamic' });
177
+ node = node.dynamic.child;
178
+ }
179
+ else {
180
+ if (!node.children?.[dir])
181
+ return;
182
+ ancestors.push({ node, key: dir, via: 'children' });
183
+ node = node.children[dir];
184
+ }
185
+ }
186
+ // Clear the field
187
+ if (kind === 'error') {
188
+ if (node.errorBoundary === filePath)
189
+ delete node.errorBoundary;
190
+ }
191
+ else {
192
+ const isRoot = dirSegments.length === 0;
193
+ const target = this.findTargetNode(node, name, isRoot);
194
+ if (!target)
195
+ return;
196
+ if (kind === 'redirect') {
197
+ if (target.redirect === filePath)
198
+ delete target.redirect;
199
+ }
200
+ else {
201
+ if (target.files?.[ext] === filePath) {
202
+ delete target.files[ext];
203
+ if (Object.keys(target.files).length === 0)
204
+ delete target.files;
205
+ }
206
+ }
207
+ // If target is a child node and now empty, remove it
208
+ if (target !== node && this.isEmptyNode(target)) {
209
+ if (name === 'index' && !isRoot) {
210
+ delete node.wildcard;
211
+ }
212
+ else if (name.startsWith('[') && name.endsWith(']')) {
213
+ delete node.dynamic;
214
+ }
215
+ else if (node.children) {
216
+ delete node.children[name];
217
+ if (Object.keys(node.children).length === 0)
218
+ delete node.children;
219
+ }
220
+ }
221
+ }
222
+ // Prune empty ancestors bottom-up
223
+ for (let i = ancestors.length - 1; i >= 0; i--) {
224
+ const { node: parent, key, via } = ancestors[i];
225
+ const child = via === 'dynamic' ? parent.dynamic?.child : parent.children?.[key];
226
+ if (child && this.isEmptyNode(child)) {
227
+ if (via === 'dynamic') {
228
+ delete parent.dynamic;
229
+ }
230
+ else if (parent.children) {
231
+ delete parent.children[key];
232
+ if (Object.keys(parent.children).length === 0)
233
+ delete parent.children;
234
+ }
235
+ }
236
+ }
237
+ this.routesManifestCache = null;
238
+ await this.handle(ROUTES_MANIFEST_PATH, {
239
+ method: 'PUT',
240
+ body: JSON.stringify(tree),
241
+ });
242
+ }
243
+ /** Find a target node without creating it (read-only counterpart to resolveTargetNode). */
244
+ findTargetNode(node, name, isRoot) {
245
+ if (name === 'index') {
246
+ return isRoot ? node : (node.wildcard?.child ?? null);
247
+ }
248
+ if (name.startsWith('[') && name.endsWith(']')) {
249
+ return node.dynamic?.child ?? null;
250
+ }
251
+ return node.children?.[name] ?? null;
252
+ }
253
+ isEmptyNode(node) {
254
+ return (!node.files &&
255
+ !node.errorBoundary &&
256
+ !node.redirect &&
257
+ !node.children &&
258
+ !node.dynamic &&
259
+ !node.wildcard);
260
+ }
261
+ /**
262
+ * Remove a widget entry from the stored manifest when a file is deleted.
263
+ */
264
+ async pruneWidgetFromManifest(filePath, widgetsDir) {
265
+ const relativePath = filePath.slice(widgetsDir.length + 1);
266
+ const parts = relativePath.split('/');
267
+ if (parts.length !== 2)
268
+ return;
269
+ const [dirName, filename] = parts;
270
+ const match = filename.match(/^(.+?)\.widget\.(ts|js|html|md|css)$/);
271
+ if (!match)
272
+ return;
273
+ const [, name, ext] = match;
274
+ if (name !== dirName)
275
+ return;
276
+ const response = await this.handle(WIDGETS_MANIFEST_PATH);
277
+ if (response.status === 404)
278
+ return;
279
+ const entries = await response.json();
280
+ if (ext === 'ts' || ext === 'js') {
281
+ // Module deleted → remove entire entry
282
+ const idx = entries.findIndex((e) => e.name === name);
283
+ if (idx === -1)
284
+ return;
285
+ entries.splice(idx, 1);
286
+ }
287
+ else {
288
+ // Companion deleted → remove from files
289
+ const entry = entries.find((e) => e.name === name);
290
+ if (!entry?.files)
291
+ return;
292
+ delete entry.files[ext];
293
+ if (Object.keys(entry.files).length === 0)
294
+ delete entry.files;
295
+ }
296
+ this.widgetsManifestCache = null;
297
+ await this.handle(WIDGETS_MANIFEST_PATH, {
298
+ method: 'PUT',
299
+ body: JSON.stringify(entries),
300
+ });
301
+ }
302
+ /**
303
+ * Remove an element entry from the stored manifest when a file is deleted.
304
+ */
305
+ async pruneElementFromManifest(filePath, elementsDir) {
306
+ const relativePath = filePath.slice(elementsDir.length + 1);
307
+ const parts = relativePath.split('/');
308
+ if (parts.length !== 2)
309
+ return;
310
+ const [dirName, filename] = parts;
311
+ const match = filename.match(/^(.+?)\.element\.(ts|js)$/);
312
+ if (!match)
313
+ return;
314
+ const [, name] = match;
315
+ if (name !== dirName)
316
+ return;
317
+ const response = await this.handle(ELEMENTS_MANIFEST_PATH);
318
+ if (response.status === 404)
319
+ return;
320
+ const entries = await response.json();
321
+ const idx = entries.findIndex((e) => e.name === name);
322
+ if (idx === -1)
323
+ return;
324
+ entries.splice(idx, 1);
325
+ this.elementsManifestCache = null;
326
+ await this.handle(ELEMENTS_MANIFEST_PATH, {
327
+ method: 'PUT',
328
+ body: JSON.stringify(entries),
329
+ });
330
+ }
331
+ /**
332
+ * After a source or companion file is written, check if a built `.js`
333
+ * artifact exists for that module. If so, re-transpile the `.ts` source
334
+ * with companions inlined and write the `.js` back.
335
+ *
336
+ * Best-effort: silently skips if `transpile()` is not implemented.
337
+ */
338
+ async retranspileIfNeeded(filePath, dir, kind) {
339
+ // Only act on source/companion files, not the .js output itself
340
+ if (filePath.endsWith('.js'))
341
+ return;
342
+ const relativePath = filePath.slice(dir.length + 1);
343
+ const parts = relativePath.split('/');
344
+ const filename = parts[parts.length - 1];
345
+ // Determine the module base name and the .js output path
346
+ let jsPath;
347
+ if (kind === 'route') {
348
+ const match = filename.match(/^(.+?)\.(page)\.(ts|html|md|css)$/);
349
+ if (!match)
350
+ return;
351
+ const [, name] = match;
352
+ jsPath = `${dir}/${parts.slice(0, -1).join('/')}${parts.length > 1 ? '/' : ''}${name}.page.js`;
353
+ }
354
+ else if (kind === 'widget') {
355
+ const match = filename.match(/^(.+?)\.(widget)\.(ts|html|md|css)$/);
356
+ if (!match)
357
+ return;
358
+ const [, name] = match;
359
+ jsPath = `${dir}/${name}/${name}.widget.js`;
360
+ }
361
+ else {
362
+ const match = filename.match(/^(.+?)\.(element)\.ts$/);
363
+ if (!match)
364
+ return;
365
+ const [, name] = match;
366
+ jsPath = `${dir}/${name}/${name}.element.js`;
367
+ }
368
+ // Check if the .js artifact exists
369
+ const jsResponse = await this.handle(jsPath);
370
+ if (jsResponse.status === 404)
371
+ return;
372
+ // Read the .ts source
373
+ const tsPath = jsPath.replace(/\.js$/, '.ts');
374
+ let tsSource;
375
+ try {
376
+ tsSource = await this.query(tsPath, { as: 'text' });
377
+ }
378
+ catch {
379
+ return; // .ts doesn't exist (maybe .js was hand-written)
380
+ }
381
+ // Collect companion files and inline them
382
+ const companionExts = kind === 'element' ? [] : ['html', 'md', 'css'];
383
+ const files = {};
384
+ for (const ext of companionExts) {
385
+ const companionPath = tsPath.replace(/\.ts$/, `.${ext}`);
386
+ try {
387
+ files[ext] = await this.query(companionPath, { as: 'text' });
388
+ }
389
+ catch {
390
+ // companion doesn't exist — skip
391
+ }
392
+ }
393
+ // Transpile
394
+ let jsCode;
395
+ try {
396
+ jsCode = await this.transpile(tsSource);
397
+ }
398
+ catch {
399
+ return; // transpile not implemented — skip silently
400
+ }
401
+ // Append __files export if there are companions
402
+ if (Object.keys(files).length > 0) {
403
+ const entries = Object.entries(files)
404
+ .map(([k, v]) => `${k}: \`${v.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$/g, '\\$')}\``)
405
+ .join(', ');
406
+ jsCode += `\nexport const __files = { ${entries} };\n`;
407
+ }
408
+ await this.handle(jsPath, { method: 'PUT', body: jsCode });
409
+ }
118
410
  /**
119
411
  * Dynamically import a module from this runtime's storage.
120
412
  * Used by the server for SSR imports of `.page.ts` and `.widget.ts` files.
@@ -129,6 +421,101 @@ export class Runtime {
129
421
  transpile(_source) {
130
422
  throw new Error(`transpile not implemented for ${this.constructor.name}`);
131
423
  }
424
+ /**
425
+ * Parse a widget file path and merge it into the stored manifest.
426
+ * Reads the current manifest, upserts the entry, writes it back.
427
+ */
428
+ async mergeWidgetIntoManifest(filePath, widgetsDir) {
429
+ const relativePath = filePath.slice(widgetsDir.length + 1);
430
+ const parts = relativePath.split('/');
431
+ if (parts.length !== 2)
432
+ return; // must be widgets/{name}/{file}
433
+ const [dirName, filename] = parts;
434
+ // Only act on .widget.{ts,js,html,md,css} files
435
+ const match = filename.match(/^(.+?)\.widget\.(ts|js|html|md|css)$/);
436
+ if (!match)
437
+ return;
438
+ const [, name, ext] = match;
439
+ if (name !== dirName)
440
+ return; // filename must match directory
441
+ const response = await this.handle(WIDGETS_MANIFEST_PATH);
442
+ const entries = response.status === 404
443
+ ? []
444
+ : await response.json();
445
+ const prefix = widgetsDir.replace(/^\//, '');
446
+ if (ext === 'ts' || ext === 'js') {
447
+ // Module file — upsert the entry
448
+ let entry = entries.find((e) => e.name === name);
449
+ if (!entry) {
450
+ entry = {
451
+ name,
452
+ modulePath: `${prefix}/${name}/${filename}`,
453
+ tagName: `widget-${name}`,
454
+ };
455
+ entries.push(entry);
456
+ entries.sort((a, b) => a.name.localeCompare(b.name));
457
+ }
458
+ else {
459
+ entry.modulePath = `${prefix}/${name}/${filename}`;
460
+ }
461
+ }
462
+ else {
463
+ // Companion file — update files on existing entry
464
+ const entry = entries.find((e) => e.name === name);
465
+ if (!entry)
466
+ return; // no module yet, companion alone is not enough
467
+ entry.files ??= {};
468
+ entry.files[ext] = `${prefix}/${name}/${filename}`;
469
+ }
470
+ this.widgetsManifestCache = null;
471
+ await this.handle(WIDGETS_MANIFEST_PATH, {
472
+ method: 'PUT',
473
+ body: JSON.stringify(entries),
474
+ });
475
+ }
476
+ /**
477
+ * Parse an element file path and merge it into the stored manifest.
478
+ * Reads the current manifest, upserts the entry, writes it back.
479
+ */
480
+ async mergeElementIntoManifest(filePath, elementsDir) {
481
+ const relativePath = filePath.slice(elementsDir.length + 1);
482
+ const parts = relativePath.split('/');
483
+ if (parts.length !== 2)
484
+ return;
485
+ const [dirName, filename] = parts;
486
+ const match = filename.match(/^(.+?)\.element\.(ts|js)$/);
487
+ if (!match)
488
+ return;
489
+ const [, name] = match;
490
+ if (name !== dirName)
491
+ return;
492
+ // Custom element names must contain a hyphen
493
+ if (!name.includes('-'))
494
+ return;
495
+ const response = await this.handle(ELEMENTS_MANIFEST_PATH);
496
+ const entries = response.status === 404
497
+ ? []
498
+ : await response.json();
499
+ const prefix = elementsDir.replace(/^\//, '');
500
+ let entry = entries.find((e) => e.name === name);
501
+ if (!entry) {
502
+ entry = {
503
+ name,
504
+ modulePath: `${prefix}/${name}/${filename}`,
505
+ tagName: name,
506
+ };
507
+ entries.push(entry);
508
+ entries.sort((a, b) => a.name.localeCompare(b.name));
509
+ }
510
+ else {
511
+ entry.modulePath = `${prefix}/${name}/${filename}`;
512
+ }
513
+ this.elementsManifestCache = null;
514
+ await this.handle(ELEMENTS_MANIFEST_PATH, {
515
+ method: 'PUT',
516
+ body: JSON.stringify(entries),
517
+ });
518
+ }
132
519
  // ── Manifest resolution ─────────────────────────────────────────────
133
520
  routesManifestCache = null;
134
521
  widgetsManifestCache = null;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.runtime.js","sourceRoot":"","sources":["../../runtime/abstract.runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract.runtime.js","sourceRoot":"","sources":["../../runtime/abstract.runtime.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare class BunFsRuntime extends Runtime {
12
12
  private read;
13
13
  private list;
14
14
  private write;
15
+ private delete;
15
16
  loadModule(path: string): Promise<unknown>;
16
17
  transpile(source: string): Promise<string>;
17
18
  }
@@ -6,7 +6,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
6
6
  }
7
7
  return path;
8
8
  };
9
- import { stat, readdir, mkdir } from 'node:fs/promises';
9
+ import { stat, readdir, mkdir, unlink } from 'node:fs/promises';
10
10
  import { resolve } from 'node:path';
11
11
  import { CONTENT_TYPES, ROUTES_MANIFEST_PATH, Runtime, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH, } from "../../abstract.runtime.js";
12
12
  export class BunFsRuntime extends Runtime {
@@ -22,6 +22,8 @@ export class BunFsRuntime extends Runtime {
22
22
  switch (method) {
23
23
  case 'PUT':
24
24
  return this.write(path, body);
25
+ case 'DELETE':
26
+ return this.delete(path);
25
27
  default:
26
28
  return this.read(path);
27
29
  }
@@ -105,6 +107,18 @@ export class BunFsRuntime extends Runtime {
105
107
  return new Response(`Write failed: ${error}`, { status: 500 });
106
108
  }
107
109
  }
110
+ async delete(path) {
111
+ try {
112
+ await unlink(path);
113
+ return new Response(null, { status: 204 });
114
+ }
115
+ catch (error) {
116
+ if (error.code === 'ENOENT') {
117
+ return new Response('Not Found', { status: 404 });
118
+ }
119
+ return new Response(`Delete failed: ${error}`, { status: 500 });
120
+ }
121
+ }
108
122
  loadModule(path) {
109
123
  return import(__rewriteRelativeImportExtension(this.root + path));
110
124
  }