fragment-ts 3.0.15 → 3.0.17

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.
@@ -1,11 +1,25 @@
1
1
  import type { FragmentWebRouteContext } from "../../platform/web/interfaces";
2
+ export type FragmentRenderMode = "server" | "client" | "universal";
2
3
  export interface RouteOptions {
3
4
  path: string;
4
5
  template?: string;
5
6
  layout?: string;
6
7
  }
7
8
  export declare function FragmentStore(): ClassDecorator;
8
- export declare function FragmentComponent(): ClassDecorator;
9
+ /**
10
+ * Marks a class as a Fragment UI component.
11
+ *
12
+ * @param mode
13
+ * - "server" (default) — rendered on the server only, no client JS
14
+ * - "client" — skipped during SSR, mounted in the browser via createRoot
15
+ * - "universal" — SSR for initial HTML, then hydrated/re-rendered client-side
16
+ *
17
+ * @example
18
+ * @FragmentComponent() // server only
19
+ * @FragmentComponent("client") // client only
20
+ * @FragmentComponent("universal") // SSR + hydration
21
+ */
22
+ export declare function FragmentComponent(mode?: FragmentRenderMode): ClassDecorator;
9
23
  export declare function FragmentTemplate(options: {
10
24
  name: string;
11
25
  }): ClassDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/frontend.decorators.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAK7E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuBD,wBAAgB,aAAa,IAAI,cAAc,CAW9C;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAgBlD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAY1E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAExE;AAED,wBAAgB,YAAY,IAAI,cAAc,CAU7C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAa3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAE1D;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAE3D;AAED,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAE5D;AAED,wBAAgB,YAAY,IAAI,iBAAiB,CAehD;AAED,wBAAgB,aAAa,IAAI,iBAAiB,CAejD;AAED,wBAAgB,YAAY,IAAI,iBAAiB,CAehD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB,CAE3D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB,CAE9D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EACvC,KAAK,EAAE,UAAU,MAAM,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAClC,iBAAiB,CAWnB;AAED,wBAAgB,UAAU,IAAI,iBAAiB,CAI9C;AAED,wBAAgB,KAAK,IAAI,iBAAiB,CAEzC;AAED,wBAAgB,QAAQ,IAAI,eAAe,CAI1C;AAED,wBAAgB,QAAQ,IAAI,eAAe,CAE1C;AAED,wBAAgB,MAAM,IAAI,eAAe,CAIxC;AAED,wBAAgB,QAAQ,IAAI,eAAe,CAE1C;AAED,wBAAgB,IAAI,IAAI,eAAe,CAItC;AAED,wBAAgB,WAAW,IAAI,eAAe,CAE7C;AAgBD,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"frontend.decorators.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/frontend.decorators.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAK7E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuBD,wBAAgB,aAAa,IAAI,cAAc,CAW9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE,kBAA6B,GAClC,cAAc,CAchB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAY1E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAExE;AAED,wBAAgB,YAAY,IAAI,cAAc,CAU7C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAa3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAE1D;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAE3D;AAED,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAE5D;AAED,wBAAgB,YAAY,IAAI,iBAAiB,CAehD;AAED,wBAAgB,aAAa,IAAI,iBAAiB,CAejD;AAED,wBAAgB,YAAY,IAAI,iBAAiB,CAehD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB,CAE3D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB,CAE9D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EACvC,KAAK,EAAE,UAAU,MAAM,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAClC,iBAAiB,CAWnB;AAED,wBAAgB,UAAU,IAAI,iBAAiB,CAI9C;AAED,wBAAgB,KAAK,IAAI,iBAAiB,CAEzC;AAED,wBAAgB,QAAQ,IAAI,eAAe,CAI1C;AAED,wBAAgB,QAAQ,IAAI,eAAe,CAE1C;AAED,wBAAgB,MAAM,IAAI,eAAe,CAIxC;AAED,wBAAgB,QAAQ,IAAI,eAAe,CAE1C;AAED,wBAAgB,IAAI,IAAI,eAAe,CAItC;AAED,wBAAgB,WAAW,IAAI,eAAe,CAE7C;AAgBD,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
@@ -45,19 +45,30 @@ function FragmentStore() {
45
45
  });
46
46
  };
47
47
  }
48
- function FragmentComponent() {
48
+ /**
49
+ * Marks a class as a Fragment UI component.
50
+ *
51
+ * @param mode
52
+ * - "server" (default) — rendered on the server only, no client JS
53
+ * - "client" — skipped during SSR, mounted in the browser via createRoot
54
+ * - "universal" — SSR for initial HTML, then hydrated/re-rendered client-side
55
+ *
56
+ * @example
57
+ * @FragmentComponent() // server only
58
+ * @FragmentComponent("client") // client only
59
+ * @FragmentComponent("universal") // SSR + hydration
60
+ */
61
+ function FragmentComponent(mode = "server") {
49
62
  return (target) => {
50
- // Register as a UI component
51
63
  metadata_storage_1.MetadataStorage.getInstance().addClass({
52
64
  target,
53
- type: 'ui-component',
65
+ type: "ui-component",
54
66
  });
55
- // Register in DI container if not already
56
67
  if (!di_container_1.DIContainer.getInstance().has(target)) {
57
68
  di_container_1.DIContainer.getInstance().register(target);
58
69
  }
59
- // Store metadata for JSX runtime
60
70
  Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.FRAGMENT_COMPONENT, true, target);
71
+ Reflect.defineMetadata(metadata_keys_1.METADATA_KEYS.FRAGMENT_RENDER_MODE, mode, target);
61
72
  };
62
73
  }
63
74
  function FragmentTemplate(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/frontend.decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend.decorators.js","sourceRoot":"","sources":["../../../src/core/decorators/frontend.decorators.ts"],"names":[],"mappings":"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"}
@@ -60,11 +60,12 @@ export declare const METADATA_KEYS: {
60
60
  readonly FRONTEND_ROUTE_RESPONSE: "fragment:frontend-route-response";
61
61
  readonly FRONTEND_ROUTE_CONTEXT: "fragment:frontend-route-context";
62
62
  readonly MOBX_FIELDS: "fragment:mobx-fields";
63
- readonly ON_MOUNT: "fragment:on_mount";
64
- readonly ON_UNMOUNT: "fragment:on_unmount";
63
+ readonly ON_MOUNT: "fragment:on-mount";
64
+ readonly ON_UNMOUNT: "fragment:on-unmount";
65
65
  readonly AUTORUN: "fragment:autorun";
66
- readonly ON_EFFECT: "fragment:on_effect";
67
- readonly WHEN_EFFECT: "fragment:when_effect";
66
+ readonly ON_EFFECT: "fragment:on-effect";
67
+ readonly WHEN_EFFECT: "fragment:when-effect";
68
+ readonly FRAGMENT_RENDER_MODE: "fragment:render-mode";
68
69
  readonly API_TAGS: "fragment:api-tags";
69
70
  readonly API_OPERATION: "fragment:api-operation";
70
71
  readonly API_RESPONSES: "fragment:api-responses";
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-keys.d.ts","sourceRoot":"","sources":["../../../src/core/metadata/metadata-keys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"metadata-keys.d.ts","sourceRoot":"","sources":["../../../src/core/metadata/metadata-keys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoGhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"}
@@ -75,11 +75,12 @@ exports.METADATA_KEYS = {
75
75
  FRONTEND_ROUTE_RESPONSE: "fragment:frontend-route-response",
76
76
  FRONTEND_ROUTE_CONTEXT: "fragment:frontend-route-context",
77
77
  MOBX_FIELDS: "fragment:mobx-fields",
78
- ON_MOUNT: 'fragment:on_mount',
79
- ON_UNMOUNT: 'fragment:on_unmount',
78
+ ON_MOUNT: 'fragment:on-mount',
79
+ ON_UNMOUNT: 'fragment:on-unmount',
80
80
  AUTORUN: 'fragment:autorun',
81
- ON_EFFECT: 'fragment:on_effect',
82
- WHEN_EFFECT: 'fragment:when_effect',
81
+ ON_EFFECT: 'fragment:on-effect',
82
+ WHEN_EFFECT: 'fragment:when-effect',
83
+ FRAGMENT_RENDER_MODE: 'fragment:render-mode',
83
84
  // Docs
84
85
  API_TAGS: "fragment:api-tags",
85
86
  API_OPERATION: "fragment:api-operation",
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-keys.js","sourceRoot":"","sources":["../../../src/core/metadata/metadata-keys.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,mBAAmB;IACnB,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,kBAAkB;IAC3B,eAAe,EAAE,0BAA0B;IAC3C,UAAU,EAAE,qBAAqB;IACjC,kBAAkB,EAAE,6BAA6B;IACjD,KAAK,EAAE,gBAAgB;IAEvB,sBAAsB;IACtB,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,4BAA4B;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,eAAe;IAErB,oBAAoB;IACpB,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,cAAc,EAAE,yBAAyB;IACzC,WAAW,EAAE,sBAAsB;IACnC,aAAa,EAAE,wBAAwB;IACvC,cAAc,EAAE,yBAAyB;IAEzC,uBAAuB;IACvB,cAAc,EAAE,yBAAyB;IAEzC,yBAAyB;IACzB,oBAAoB,EAAE,+BAA+B;IACrD,2BAA2B,EAAE,sCAAsC;IACnE,uBAAuB,EAAE,kCAAkC;IAC3D,mBAAmB,EAAE,8BAA8B;IAEnD,sBAAsB;IACtB,cAAc,EAAE,yBAAyB;IACzC,UAAU,EAAE,qBAAqB;IACjC,gBAAgB,EAAE,2BAA2B;IAC7C,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,qBAAqB;IACjC,KAAK,EAAE,gBAAgB;IACvB,gBAAgB,EAAE,2BAA2B;IAC7C,KAAK,EAAE,gBAAgB;IAEvB,aAAa;IACb,QAAQ,EAAE,mBAAmB;IAC7B,SAAS,EAAE,oBAAoB;IAC/B,GAAG,EAAE,cAAc;IACnB,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,iBAAiB;IAEzB,oBAAoB;IACpB,cAAc,EAAE,yBAAyB;IAEzC,SAAS;IACT,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,4BAA4B;IAC/C,qBAAqB,EAAE,gCAAgC;IAEvD,SAAS;IACT,MAAM,EAAE,iBAAiB;IACzB,aAAa,EAAE,wBAAwB;IAEvC,gBAAgB;IAChB,oBAAoB,EAAE,+BAA+B;IAErD,OAAO;IACP,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,mBAAmB;IAC7B,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,yBAAyB;IACzC,qBAAqB,EAAE,gCAAgC;IACvD,oBAAoB,EAAE,+BAA+B;IACrD,sBAAsB,EAAE,iCAAiC;IACzD,sBAAsB,EAAE,iCAAiC;IACzD,uBAAuB,EAAE,kCAAkC;IAC3D,sBAAsB,EAAE,iCAAiC;IACzD,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,oBAAoB;IAC/B,WAAW,EAAE,sBAAsB;IAEnC,OAAO;IACP,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,wBAAwB;IACvC,aAAa,EAAE,wBAAwB;IACvC,cAAc,EAAE,yBAAyB;IACzC,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,wBAAwB;CAC/B,CAAC"}
1
+ {"version":3,"file":"metadata-keys.js","sourceRoot":"","sources":["../../../src/core/metadata/metadata-keys.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,mBAAmB;IACnB,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,kBAAkB;IAC3B,eAAe,EAAE,0BAA0B;IAC3C,UAAU,EAAE,qBAAqB;IACjC,kBAAkB,EAAE,6BAA6B;IACjD,KAAK,EAAE,gBAAgB;IAEvB,sBAAsB;IACtB,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,4BAA4B;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,eAAe;IAErB,oBAAoB;IACpB,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,cAAc,EAAE,yBAAyB;IACzC,WAAW,EAAE,sBAAsB;IACnC,aAAa,EAAE,wBAAwB;IACvC,cAAc,EAAE,yBAAyB;IAEzC,uBAAuB;IACvB,cAAc,EAAE,yBAAyB;IAEzC,yBAAyB;IACzB,oBAAoB,EAAE,+BAA+B;IACrD,2BAA2B,EAAE,sCAAsC;IACnE,uBAAuB,EAAE,kCAAkC;IAC3D,mBAAmB,EAAE,8BAA8B;IAEnD,sBAAsB;IACtB,cAAc,EAAE,yBAAyB;IACzC,UAAU,EAAE,qBAAqB;IACjC,gBAAgB,EAAE,2BAA2B;IAC7C,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,qBAAqB;IACjC,KAAK,EAAE,gBAAgB;IACvB,gBAAgB,EAAE,2BAA2B;IAC7C,KAAK,EAAE,gBAAgB;IAEvB,aAAa;IACb,QAAQ,EAAE,mBAAmB;IAC7B,SAAS,EAAE,oBAAoB;IAC/B,GAAG,EAAE,cAAc;IACnB,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,iBAAiB;IAEzB,oBAAoB;IACpB,cAAc,EAAE,yBAAyB;IAEzC,SAAS;IACT,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,4BAA4B;IAC/C,qBAAqB,EAAE,gCAAgC;IAEvD,SAAS;IACT,MAAM,EAAE,iBAAiB;IACzB,aAAa,EAAE,wBAAwB;IAEvC,gBAAgB;IAChB,oBAAoB,EAAE,+BAA+B;IAErD,OAAO;IACP,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,mBAAmB;IAC7B,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,yBAAyB;IACzC,qBAAqB,EAAE,gCAAgC;IACvD,oBAAoB,EAAE,+BAA+B;IACrD,sBAAsB,EAAE,iCAAiC;IACzD,sBAAsB,EAAE,iCAAiC;IACzD,uBAAuB,EAAE,kCAAkC;IAC3D,sBAAsB,EAAE,iCAAiC;IACzD,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,oBAAoB;IAC/B,WAAW,EAAE,sBAAsB;IACnC,oBAAoB,EAAC,sBAAsB;IAE3C,OAAO;IACP,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,wBAAwB;IACvC,aAAa,EAAE,wBAAwB;IACvC,cAAc,EAAE,yBAAyB;IACzC,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,wBAAwB;CAC/B,CAAC"}
@@ -69,7 +69,7 @@ async function generatePluginProject(projectPath, config) {
69
69
  },
70
70
  keywords: ["fragment", "fragment-plugin"],
71
71
  peerDependencies: {
72
- "fragment-ts": "^3.0.15",
72
+ "fragment-ts": "^3.0.17",
73
73
  },
74
74
  devDependencies: {
75
75
  typescript: "^5.3.3",
@@ -127,7 +127,7 @@ async function createConfigFiles(projectPath, projectName, config) {
127
127
  devDependencies.prettier = "^3.2.5";
128
128
  }
129
129
  const dependencies = {
130
- "fragment-ts": "^3.0.15",
130
+ "fragment-ts": "^3.0.17",
131
131
  "reflect-metadata": "^0.1.13",
132
132
  };
133
133
  devDependencies["@types/react"] = "^18.0.0",
@@ -1,6 +1,18 @@
1
+ import type { FragmentRenderMode } from "../../../core/decorators/frontend.decorators";
2
+ /**
3
+ * Returns the render mode for a component class.
4
+ * Defaults to "server" if no metadata is set.
5
+ */
6
+ export declare function getComponentRenderMode(target: any): FragmentRenderMode;
1
7
  export declare function createFragmentComponent<TProps extends Record<string, any> = Record<string, any>>(componentClass: new () => any): (props: TProps) => any;
2
8
  export declare function renderFragmentComponent<TProps extends Record<string, any> = Record<string, any>>(componentClass: new () => any, props?: TProps): any;
3
- export declare function fragmentStatelessComponent<TProps extends Record<string, any> = Record<string, any>>(render: (props: TProps) => any): (props: TProps) => any;
9
+ /**
10
+ * Stateless component with optional render mode.
11
+ *
12
+ * @example
13
+ * export const MyComp = fragmentStatelessComponent(() => <div />, "client");
14
+ */
15
+ export declare function fragmentStatelessComponent<TProps extends Record<string, any> = Record<string, any>>(render: (props: TProps) => any, mode?: FragmentRenderMode): (props: TProps) => any;
4
16
  export declare function useFragmentStore<TStore>(token: new () => TStore): TStore;
5
17
  export declare function useStoreState<TStore, TValue>(token: new () => TStore, selector: (store: TStore) => TValue): TValue;
6
18
  //# sourceMappingURL=fragment-react-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-react-runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/web/react/fragment-react-runtime.ts"],"names":[],"mappings":"AAIA,wBAAgB,uBAAuB,CACrC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,cAAc,EAAE,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAsEvD;AAED,wBAAgB,uBAAuB,CACrC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,cAAc,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAMpD;AAED,wBAAgB,0BAA0B,CACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAWxD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAC1C,KAAK,EAAE,UAAU,MAAM,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAClC,MAAM,CAGR"}
1
+ {"version":3,"file":"fragment-react-runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/web/react/fragment-react-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAKvF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,kBAAkB,CAKtE;AAED,wBAAgB,uBAAuB,CACrC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,cAAc,EAAE,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CA6FvD;AAED,wBAAgB,uBAAuB,CACrC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,cAAc,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAMpD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAExD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,EAC9B,IAAI,GAAE,kBAA6B,GAClC,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CA2BxB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAC1C,KAAK,EAAE,UAAU,MAAM,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAClC,MAAM,CAGR"}
@@ -1,12 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getComponentRenderMode = getComponentRenderMode;
3
4
  exports.createFragmentComponent = createFragmentComponent;
4
5
  exports.renderFragmentComponent = renderFragmentComponent;
5
6
  exports.fragmentStatelessComponent = fragmentStatelessComponent;
6
7
  exports.useFragmentStore = useFragmentStore;
7
8
  exports.useStoreState = useStoreState;
8
9
  const di_container_1 = require("../../../core/container/di-container");
9
- const componentCache = new WeakMap();
10
+ const metadata_keys_1 = require("../../../core/metadata/metadata-keys");
11
+ const React = require("react");
12
+ const componentCache = new Map();
13
+ /**
14
+ * Returns the render mode for a component class.
15
+ * Defaults to "server" if no metadata is set.
16
+ */
17
+ function getComponentRenderMode(target) {
18
+ const source = target.__fragmentOriginalTarget || target;
19
+ return (Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.FRAGMENT_RENDER_MODE, source) ?? "server");
20
+ }
10
21
  function createFragmentComponent(componentClass) {
11
22
  const source = componentClass.__fragmentOriginalTarget || componentClass;
12
23
  if (componentCache.has(source)) {
@@ -18,44 +29,61 @@ function createFragmentComponent(componentClass) {
18
29
  if (!container.has(source)) {
19
30
  container.register(source);
20
31
  }
21
- // Detect React.Component subclasses
32
+ const mode = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.FRAGMENT_RENDER_MODE, source) ?? "server";
22
33
  const isReactComponent = source.prototype instanceof React.Component ||
23
34
  source.prototype instanceof React.PureComponent;
24
35
  let wrapped;
25
- if (isReactComponent) {
26
- // For classes extending React.Component, create a fresh instance
27
- // per render cycle inside an observer function component so hooks work
36
+ if (mode === "client") {
37
+ // Client-only: SSR placeholder, hydrated on browser
38
+ wrapped = (props) => {
39
+ const placeholderId = `fragment-client-${source.name}`;
40
+ return React.createElement("div", {
41
+ id: placeholderId,
42
+ "data-fragment-component": source.name,
43
+ "data-fragment-props": JSON.stringify(props),
44
+ "data-fragment-mode": "client",
45
+ });
46
+ };
47
+ }
48
+ else if (isReactComponent) {
49
+ // React.Component based class wrapper
28
50
  wrapped = observer((props) => {
29
51
  const useRef = React.useRef;
30
52
  const instanceRef = useRef(null);
31
53
  if (!instanceRef.current) {
32
54
  instanceRef.current = new source(props);
33
55
  }
34
- // Sync props onto instance (mirrors what React does for class components)
35
- Object.assign(instanceRef.current, { props });
36
56
  instanceRef.current.props = props;
57
+ Object.assign(instanceRef.current, props);
37
58
  return instanceRef.current.render();
38
59
  });
39
60
  }
40
61
  else {
41
- // Original behaviour for plain Fragment classes (no React.Component base)
62
+ // Plain DI-managed class
42
63
  wrapped = observer((props) => {
43
64
  const instance = container.resolve(source);
44
- console.log('[Fragment] rendering:', source.name);
45
- console.log('[Fragment] instance:', instance);
46
- console.log('[Fragment] is observable:', require('mobx').isObservable(instance));
47
65
  Object.assign(instance, props || {});
48
- if (typeof instance.render === 'function') {
66
+ if (typeof instance.render === "function") {
49
67
  return instance.render(props);
50
68
  }
51
- if (typeof instance === 'function') {
69
+ if (typeof instance === "function") {
52
70
  return instance(props);
53
71
  }
54
72
  return null;
55
73
  });
56
74
  }
75
+ const globalAny = typeof globalThis !== "undefined"
76
+ ? globalThis
77
+ : {};
78
+ globalAny.__fragmentRegistry__ =
79
+ globalAny.__fragmentRegistry__ || {};
80
+ globalAny.__fragmentRegistry__[source.name] = wrapped;
81
+ // ================================
82
+ // metadata
83
+ // ================================
57
84
  wrapped.displayName = source.name;
58
85
  wrapped.__fragmentOriginalTarget = source;
86
+ wrapped.__fragmentRenderMode = mode;
59
87
  componentCache.set(source, wrapped);
60
88
  return wrapped;
61
89
  }
@@ -64,11 +92,31 @@ function renderFragmentComponent(componentClass, props) {
64
92
  const Component = createFragmentComponent(componentClass);
65
93
  return React.createElement(Component, props || {});
66
94
  }
67
- function fragmentStatelessComponent(render) {
95
+ /**
96
+ * Stateless component with optional render mode.
97
+ *
98
+ * @example
99
+ * export const MyComp = fragmentStatelessComponent(() => <div />, "client");
100
+ */
101
+ function fragmentStatelessComponent(render, mode = "server") {
68
102
  const { observer } = require("mobx-react-lite");
69
- const wrapped = observer((props) => render(props));
70
- const component = wrapped;
103
+ const React = require("react");
104
+ let component;
105
+ if (mode === "client") {
106
+ // Render a placeholder during SSR; client runtime mounts the real thing
107
+ const name = render.name || "FragmentStatelessComponent";
108
+ component = (props) => React.createElement("div", {
109
+ "data-fragment-component": name,
110
+ "data-fragment-props": JSON.stringify(props),
111
+ "data-fragment-mode": "client",
112
+ });
113
+ component.__fragmentClientRender = render;
114
+ }
115
+ else {
116
+ component = observer((props) => render(props));
117
+ }
71
118
  component.displayName = render.name || "FragmentStatelessComponent";
119
+ component.__fragmentRenderMode = mode;
72
120
  return component;
73
121
  }
74
122
  function useFragmentStore(token) {
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-react-runtime.js","sourceRoot":"","sources":["../../../../src/platform/web/react/fragment-react-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fragment-react-runtime.js","sourceRoot":"","sources":["../../../../src/platform/web/react/fragment-react-runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"react-page-renderer.d.ts","sourceRoot":"","sources":["../../../../src/platform/web/react/react-page-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;WACf,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkE9E,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAuChC"}
1
+ {"version":3,"file":"react-page-renderer.d.ts","sourceRoot":"","sources":["../../../../src/platform/web/react/react-page-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsED,qBAAa,iBAAiB;WACf,MAAM,CACjB,QAAQ,EAAE,GAAG,EACb,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,mBAAmB,CAAC;IA2I/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;CA8ChC"}
@@ -6,6 +6,70 @@ const di_container_1 = require("../../../core/container/di-container");
6
6
  const metadata_storage_1 = require("../../../core/metadata/metadata-storage");
7
7
  const route_pointer_registry_1 = require("../route-pointer/route-pointer-registry");
8
8
  const config_utils_1 = require("../../../shared/config.utils");
9
+ /**
10
+ * Serializes the component tree into a descriptor the browser runtime can
11
+ * reconstruct. Each node is { type, props, children } where `type` is the
12
+ * registered component name.
13
+ */
14
+ function serializeElement(element) {
15
+ if (element === null || element === undefined)
16
+ return null;
17
+ if (typeof element === "string" || typeof element === "number")
18
+ return element;
19
+ if (typeof element === "boolean")
20
+ return null;
21
+ if (Array.isArray(element)) {
22
+ return element.map(serializeElement);
23
+ }
24
+ // React element shape
25
+ if (element && element.$$typeof) {
26
+ const type = element.type;
27
+ const props = element.props || {};
28
+ // Intrinsic (string) elements — div, span, etc.
29
+ if (typeof type === "string") {
30
+ const { children, ...rest } = props;
31
+ return {
32
+ type,
33
+ props: sanitizeProps(rest),
34
+ children: children !== undefined ? serializeElement(children) : null,
35
+ };
36
+ }
37
+ // Fragment component (has __fragmentOriginalTarget) or named function
38
+ const name = type.__fragmentOriginalTarget?.name ||
39
+ type.displayName ||
40
+ type.name ||
41
+ null;
42
+ if (name) {
43
+ const { children, ...rest } = props;
44
+ return {
45
+ type: name,
46
+ props: sanitizeProps(rest),
47
+ children: children !== undefined ? serializeElement(children) : null,
48
+ };
49
+ }
50
+ }
51
+ return null;
52
+ }
53
+ /** Strip non-serializable values (functions, symbols) from props */
54
+ function sanitizeProps(props) {
55
+ const out = {};
56
+ for (const [k, v] of Object.entries(props)) {
57
+ if (typeof v === "function" || typeof v === "symbol")
58
+ continue;
59
+ if (typeof v === "object" && v !== null) {
60
+ try {
61
+ JSON.stringify(v);
62
+ out[k] = v;
63
+ }
64
+ catch {
65
+ // skip non-serializable objects
66
+ }
67
+ continue;
68
+ }
69
+ out[k] = v;
70
+ }
71
+ return out;
72
+ }
9
73
  class ReactPageRenderer {
10
74
  static async render(instance, req) {
11
75
  let reactDomServer;
@@ -20,7 +84,11 @@ class ReactPageRenderer {
20
84
  const body = typeof renderOutput === "string"
21
85
  ? renderOutput
22
86
  : reactDomServer.renderToString(renderOutput);
23
- const title = (typeof instance.title === "function" ? instance.title(req) : undefined) ||
87
+ // Serialize the element tree so the client runtime can re-render it
88
+ const elementTree = typeof renderOutput === "string" ? null : serializeElement(renderOutput);
89
+ const title = (typeof instance.title === "function"
90
+ ? instance.title(req)
91
+ : undefined) ||
24
92
  metadata.title ||
25
93
  "Fragment Web";
26
94
  const templateName = metadata.template;
@@ -35,6 +103,71 @@ class ReactPageRenderer {
35
103
  const stylingScript = webConfig.styling?.provider === "tailwind"
36
104
  ? `<script src="https://cdn.tailwindcss.com"></script>`
37
105
  : "";
106
+ // Client hydration bootstrap — injected inline so no bundler is needed.
107
+ // The browser runtime reconstructs the React tree from the serialized
108
+ // element descriptor and calls hydrateRoot (or createRoot as fallback).
109
+ const hydrationScript = elementTree
110
+ ? `
111
+ <script type="importmap">
112
+ {
113
+ "imports": {
114
+ "react": "https://esm.sh/react@18?dev",
115
+ "react-dom": "https://esm.sh/react-dom@18?dev",
116
+ "react-dom/client":"https://esm.sh/react-dom@18/client?dev",
117
+ "mobx": "https://esm.sh/mobx@6?dev",
118
+ "mobx-react-lite":"https://esm.sh/mobx-react-lite@3?dev"
119
+ }
120
+ }
121
+ </script>
122
+ <script type="module">
123
+ import React from 'react';
124
+ import { createRoot } from 'react-dom/client';
125
+ import { observable, action, computed, makeObservable } from 'mobx';
126
+ import { observer } from 'mobx-react-lite';
127
+
128
+ /* ── serialized element tree from SSR ── */
129
+ const TREE = ${JSON.stringify(elementTree)};
130
+
131
+ /* ── component registry (populated by inline scripts below) ── */
132
+ const REGISTRY = window.__fragmentRegistry__ = window.__fragmentRegistry__ || {};
133
+
134
+ /* ── store registry ── */
135
+ const STORES = window.__fragmentStores__ = window.__fragmentStores__ || {};
136
+
137
+ /* ── reconstruct React elements from the serialized tree ── */
138
+ function h(node) {
139
+ if (node === null || node === undefined) return null;
140
+ if (typeof node === 'string' || typeof node === 'number') return node;
141
+ if (Array.isArray(node)) return node.map(h);
142
+
143
+ const { type, props = {}, children } = node;
144
+ const Component = REGISTRY[type];
145
+ if (!Component) {
146
+ console.error('[Fragment] Missing component:', type);
147
+ return null;
148
+ }
149
+ const resolvedChildren = children !== null && children !== undefined ? h(children) : undefined;
150
+ return React.createElement(Component, props, resolvedChildren);
151
+ }
152
+
153
+ /* ── mount ── */
154
+ window.addEventListener('DOMContentLoaded', () => {
155
+ const app = document.getElementById('app');
156
+ if (!app) return;
157
+
158
+ // Wait one tick for inline component scripts to register
159
+ requestAnimationFrame(() => {
160
+ try {
161
+ const root = createRoot(app);
162
+ root.render(h(TREE));
163
+ console.log('[Fragment] client hydration complete');
164
+ } catch (err) {
165
+ console.error('[Fragment] hydration failed:', err);
166
+ }
167
+ }, 0);
168
+ });
169
+ </script>`
170
+ : "";
38
171
  return {
39
172
  title,
40
173
  html: `<!doctype html>
@@ -49,6 +182,7 @@ class ReactPageRenderer {
49
182
  <body>
50
183
  <div id="app">${content}</div>
51
184
  ${routePointerScript ? `<script>${routePointerScript}</script>` : ""}
185
+ ${hydrationScript}
52
186
  </body>
53
187
  </html>`,
54
188
  };
@@ -59,8 +193,7 @@ class ReactPageRenderer {
59
193
  const templateMeta = metadata_storage_1.MetadataStorage.getInstance()
60
194
  .getAllClasses()
61
195
  .find((entry) => entry.type === "template" &&
62
- Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.FRAGMENT_TEMPLATE, entry.target)?.name ===
63
- templateName);
196
+ Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.FRAGMENT_TEMPLATE, entry.target)?.name === templateName);
64
197
  if (!templateMeta) {
65
198
  return childHtml;
66
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"react-page-renderer.js","sourceRoot":"","sources":["../../../../src/platform/web/react/react-page-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-page-renderer.js","sourceRoot":"","sources":["../../../../src/platform/web/react/react-page-renderer.ts"],"names":[],"mappings":";;;AACA,wEAAqE;AACrE,uEAAmE;AACnE,8EAA0E;AAC1E,oFAA+E;AAC/E,+DAA2D;AAO3D;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,OAAY;IACpC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC/E,IAAI,OAAO,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE9C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAElC,gDAAgD;QAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YACpC,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;gBAC1B,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aACrE,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,GACP,IAAY,CAAC,wBAAwB,EAAE,IAAI;YAC3C,IAAY,CAAC,WAAW;YACzB,IAAI,CAAC,IAAI;YACT,IAAI,CAAC;QAEP,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YACpC,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;gBAC1B,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,SAAS,aAAa,CAAC,KAA0B;IAC/C,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC/D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAa,iBAAiB;IAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,QAAa,EACb,GAAY;QAEZ,IAAI,cAAqD,CAAC;QAE1D,IAAI,CAAC;YACH,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAE1C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,6BAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE1E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CACxC,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAClE,CAAC;QAEF,MAAM,IAAI,GACR,OAAO,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAElD,oEAAoE;QACpE,MAAM,WAAW,GACf,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE3E,MAAM,KAAK,GACT,CAAC,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU;YACnC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;YACrB,CAAC,CAAC,SAAS,CAAC;YACd,QAAQ,CAAC,KAAK;YACd,cAAc,CAAC;QAEjB,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA8B,CAAC;QAC7D,MAAM,OAAO,GAAG,YAAY;YAC1B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,kBAAkB,GAAG,6CAAoB,CAAC,mBAAmB,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,0BAAW,CAAC,YAAY,EAAE,CAAC;QAE7C,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,cAAc;YACrD,CAAC,CAAC,gCAAgC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM;YACpF,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,aAAa,GACjB,SAAS,CAAC,OAAO,EAAE,QAAQ,KAAK,UAAU;YACxC,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,EAAE,CAAC;QAET,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,eAAe,GAAG,WAAW;YACjC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;eAmBO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAwChC;YACJ,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,KAAK;YACL,IAAI,EAAE;;;;;aAKC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;MAChC,aAAa;MACb,aAAa;;;oBAGC,OAAO;MACrB,kBAAkB,CAAC,CAAC,CAAC,WAAW,kBAAkB,WAAW,CAAC,CAAC,CAAC,EAAE;MAClE,eAAe;;QAEb;SACH,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAC7B,SAAiB,EACjB,YAAoB,EACpB,GAAY;QAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAM5B,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAEhD,CAAC;QAEF,MAAM,YAAY,GAAG,kCAAe,CAAC,WAAW,EAAE;aAC/C,aAAa,EAAE;aACf,IAAI,CACH,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,UAAU;YACzB,OAAO,CAAC,WAAW,CACjB,6BAAa,CAAC,iBAAiB,EAC/B,KAAK,CAAC,MAAM,CACb,EAAE,IAAI,KAAK,YAAY,CAC3B,CAAC;QAEJ,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,gBAAgB,GAAG,0BAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CACxD,YAAY,CAAC,MAAM,CAGpB,CAAC;QAEF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC;YACvC,GAAG;YACH,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;gBACnC,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;aAC/C,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;CACF;AA7LD,8CA6LC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fragment-ts",
3
- "version": "3.0.15",
3
+ "version": "3.0.17",
4
4
  "description": "Fragment TS is a Spring Boot-inspired TypeScript framework for Express and TypeORM, built around dependency injection and decorators, with a fully modular CLI. It now supports installable API and Web surfaces so backend controllers and React-driven pages can live in one modular runtime.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",