@fluixi/core 1.0.0-alpha.53

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 (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +611 -0
  3. package/dist/cdn/core.global.js +3 -0
  4. package/dist/cli/generate.cjs +1814 -0
  5. package/dist/cli/generate.d.ts +7 -0
  6. package/dist/cli/generate.d.ts.map +1 -0
  7. package/dist/cli/generate.js +2580 -0
  8. package/dist/cli/generate.mjs +1814 -0
  9. package/dist/cli/index.cjs +1814 -0
  10. package/dist/cli/index.d.ts +7 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +2580 -0
  13. package/dist/cli/index.mjs +1814 -0
  14. package/dist/cli/run.cjs +2 -0
  15. package/dist/cli/run.d.ts +3 -0
  16. package/dist/cli/run.d.ts.map +1 -0
  17. package/dist/cli/run.js +62 -0
  18. package/dist/cli/run.mjs +2 -0
  19. package/dist/fluixi.d.ts +5 -0
  20. package/dist/src/cdn/chunk-PFM5O5UE.mjs +1 -0
  21. package/dist/src/cdn/core.cjs +1 -0
  22. package/dist/src/cdn/core.d.ts +16 -0
  23. package/dist/src/cdn/core.d.ts.map +1 -0
  24. package/dist/src/cdn/core.js +15 -0
  25. package/dist/src/cdn/core.mjs +1 -0
  26. package/dist/src/cdn/router-next-WNWCFVC2.mjs +1 -0
  27. package/dist/src/index.cjs +1 -0
  28. package/dist/src/index.d.ts +7 -0
  29. package/dist/src/index.d.ts.map +1 -0
  30. package/dist/src/index.js +26 -0
  31. package/dist/src/index.mjs +1 -0
  32. package/dist/src/jsx-dev-runtime.cjs +1 -0
  33. package/dist/src/jsx-dev-runtime.d.ts +2 -0
  34. package/dist/src/jsx-dev-runtime.d.ts.map +1 -0
  35. package/dist/src/jsx-dev-runtime.js +1 -0
  36. package/dist/src/jsx-dev-runtime.mjs +1 -0
  37. package/dist/src/jsx-runtime.cjs +1 -0
  38. package/dist/src/jsx-runtime.d.ts +7 -0
  39. package/dist/src/jsx-runtime.d.ts.map +1 -0
  40. package/dist/src/jsx-runtime.js +17 -0
  41. package/dist/src/jsx-runtime.mjs +1 -0
  42. package/dist/src/lib/client/chunk-D3VTWVNJ.mjs +1 -0
  43. package/dist/src/lib/client/index.cjs +1 -0
  44. package/dist/src/lib/client/index.d.ts +54 -0
  45. package/dist/src/lib/client/index.d.ts.map +1 -0
  46. package/dist/src/lib/client/index.js +142 -0
  47. package/dist/src/lib/client/index.mjs +1 -0
  48. package/dist/src/lib/client/router-next-UYIYMRJL.mjs +1 -0
  49. package/dist/src/lib/context/context.cjs +1 -0
  50. package/dist/src/lib/context/context.d.ts +337 -0
  51. package/dist/src/lib/context/context.d.ts.map +1 -0
  52. package/dist/src/lib/context/context.js +462 -0
  53. package/dist/src/lib/context/context.mjs +1 -0
  54. package/dist/src/lib/context/index.cjs +1 -0
  55. package/dist/src/lib/context/index.d.ts +3 -0
  56. package/dist/src/lib/context/index.d.ts.map +1 -0
  57. package/dist/src/lib/context/index.js +5 -0
  58. package/dist/src/lib/context/index.mjs +1 -0
  59. package/dist/src/lib/control-flow.cjs +1 -0
  60. package/dist/src/lib/control-flow.d.ts +4 -0
  61. package/dist/src/lib/control-flow.d.ts.map +1 -0
  62. package/dist/src/lib/control-flow.js +1 -0
  63. package/dist/src/lib/control-flow.mjs +1 -0
  64. package/dist/src/lib/core.cjs +1 -0
  65. package/dist/src/lib/core.d.ts +90 -0
  66. package/dist/src/lib/core.d.ts.map +1 -0
  67. package/dist/src/lib/core.js +181 -0
  68. package/dist/src/lib/core.mjs +1 -0
  69. package/dist/src/lib/directives/lit.cjs +1 -0
  70. package/dist/src/lib/directives/lit.d.ts +2 -0
  71. package/dist/src/lib/directives/lit.d.ts.map +1 -0
  72. package/dist/src/lib/directives/lit.js +31 -0
  73. package/dist/src/lib/directives/lit.mjs +0 -0
  74. package/dist/src/lib/env/index.cjs +1 -0
  75. package/dist/src/lib/env/index.d.ts +39 -0
  76. package/dist/src/lib/env/index.d.ts.map +1 -0
  77. package/dist/src/lib/env/index.js +50 -0
  78. package/dist/src/lib/env/index.mjs +1 -0
  79. package/dist/src/lib/i18n/index.cjs +1 -0
  80. package/dist/src/lib/i18n/index.d.ts +79 -0
  81. package/dist/src/lib/i18n/index.d.ts.map +1 -0
  82. package/dist/src/lib/i18n/index.js +127 -0
  83. package/dist/src/lib/i18n/index.mjs +1 -0
  84. package/dist/src/lib/index.cjs +1 -0
  85. package/dist/src/lib/index.d.ts +83 -0
  86. package/dist/src/lib/index.d.ts.map +1 -0
  87. package/dist/src/lib/index.js +147 -0
  88. package/dist/src/lib/index.mjs +1 -0
  89. package/dist/src/lib/isomorphic.cjs +1 -0
  90. package/dist/src/lib/isomorphic.d.ts +69 -0
  91. package/dist/src/lib/isomorphic.d.ts.map +1 -0
  92. package/dist/src/lib/isomorphic.js +92 -0
  93. package/dist/src/lib/isomorphic.mjs +1 -0
  94. package/dist/src/lib/jsx-runtime/index.cjs +1 -0
  95. package/dist/src/lib/jsx-runtime/index.d.ts +13 -0
  96. package/dist/src/lib/jsx-runtime/index.d.ts.map +1 -0
  97. package/dist/src/lib/jsx-runtime/index.js +23 -0
  98. package/dist/src/lib/jsx-runtime/index.mjs +1 -0
  99. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.cjs +1 -0
  100. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts +2 -0
  101. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts.map +1 -0
  102. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.js +1 -0
  103. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.mjs +1 -0
  104. package/dist/src/lib/plugins/fluixi-routes-plugin.cjs +13 -0
  105. package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts +21 -0
  106. package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts.map +1 -0
  107. package/dist/src/lib/plugins/fluixi-routes-plugin.js +102 -0
  108. package/dist/src/lib/plugins/fluixi-routes-plugin.mjs +13 -0
  109. package/dist/src/lib/plugins/index.cjs +13 -0
  110. package/dist/src/lib/plugins/index.d.ts +4 -0
  111. package/dist/src/lib/plugins/index.d.ts.map +1 -0
  112. package/dist/src/lib/plugins/index.js +3 -0
  113. package/dist/src/lib/plugins/index.mjs +13 -0
  114. package/dist/src/lib/plugins/route-codegen.cjs +8 -0
  115. package/dist/src/lib/plugins/route-codegen.d.ts +13 -0
  116. package/dist/src/lib/plugins/route-codegen.d.ts.map +1 -0
  117. package/dist/src/lib/plugins/route-codegen.js +81 -0
  118. package/dist/src/lib/plugins/route-codegen.mjs +8 -0
  119. package/dist/src/lib/plugins/route-scanner.cjs +1 -0
  120. package/dist/src/lib/plugins/route-scanner.d.ts +39 -0
  121. package/dist/src/lib/plugins/route-scanner.d.ts.map +1 -0
  122. package/dist/src/lib/plugins/route-scanner.js +216 -0
  123. package/dist/src/lib/plugins/route-scanner.mjs +1 -0
  124. package/dist/src/lib/plugins/vite.cjs +1 -0
  125. package/dist/src/lib/plugins/vite.d.ts +3 -0
  126. package/dist/src/lib/plugins/vite.d.ts.map +1 -0
  127. package/dist/src/lib/plugins/vite.js +1 -0
  128. package/dist/src/lib/plugins/vite.mjs +1 -0
  129. package/dist/src/lib/render/component.cjs +1 -0
  130. package/dist/src/lib/render/component.d.ts +328 -0
  131. package/dist/src/lib/render/component.d.ts.map +1 -0
  132. package/dist/src/lib/render/component.js +520 -0
  133. package/dist/src/lib/render/component.mjs +1 -0
  134. package/dist/src/lib/render/index.cjs +1 -0
  135. package/dist/src/lib/render/index.d.ts +113 -0
  136. package/dist/src/lib/render/index.d.ts.map +1 -0
  137. package/dist/src/lib/render/index.js +201 -0
  138. package/dist/src/lib/render/index.mjs +1 -0
  139. package/dist/src/lib/render/lazy.cjs +1 -0
  140. package/dist/src/lib/render/lazy.d.ts +28 -0
  141. package/dist/src/lib/render/lazy.d.ts.map +1 -0
  142. package/dist/src/lib/render/lazy.js +62 -0
  143. package/dist/src/lib/render/lazy.mjs +1 -0
  144. package/dist/src/lib/render/suspense.cjs +1 -0
  145. package/dist/src/lib/render/suspense.d.ts +25 -0
  146. package/dist/src/lib/render/suspense.d.ts.map +1 -0
  147. package/dist/src/lib/render/suspense.js +139 -0
  148. package/dist/src/lib/render/suspense.mjs +1 -0
  149. package/dist/src/lib/router-next/data.cjs +1 -0
  150. package/dist/src/lib/router-next/data.d.ts +101 -0
  151. package/dist/src/lib/router-next/data.d.ts.map +1 -0
  152. package/dist/src/lib/router-next/data.js +179 -0
  153. package/dist/src/lib/router-next/data.mjs +1 -0
  154. package/dist/src/lib/router-next/index.cjs +1 -0
  155. package/dist/src/lib/router-next/index.d.ts +156 -0
  156. package/dist/src/lib/router-next/index.d.ts.map +1 -0
  157. package/dist/src/lib/router-next/index.js +464 -0
  158. package/dist/src/lib/router-next/index.mjs +1 -0
  159. package/dist/src/lib/server/hydration.cjs +1 -0
  160. package/dist/src/lib/server/hydration.d.ts +238 -0
  161. package/dist/src/lib/server/hydration.d.ts.map +1 -0
  162. package/dist/src/lib/server/hydration.js +384 -0
  163. package/dist/src/lib/server/hydration.mjs +1 -0
  164. package/dist/src/lib/server/index.cjs +16 -0
  165. package/dist/src/lib/server/index.d.ts +91 -0
  166. package/dist/src/lib/server/index.d.ts.map +1 -0
  167. package/dist/src/lib/server/index.js +141 -0
  168. package/dist/src/lib/server/index.mjs +16 -0
  169. package/dist/src/lib/server/reactive.cjs +1 -0
  170. package/dist/src/lib/server/reactive.d.ts +298 -0
  171. package/dist/src/lib/server/reactive.d.ts.map +1 -0
  172. package/dist/src/lib/server/reactive.js +472 -0
  173. package/dist/src/lib/server/reactive.mjs +1 -0
  174. package/dist/src/lib/theme/index.cjs +1 -0
  175. package/dist/src/lib/theme/index.d.ts +51 -0
  176. package/dist/src/lib/theme/index.d.ts.map +1 -0
  177. package/dist/src/lib/theme/index.js +79 -0
  178. package/dist/src/lib/theme/index.mjs +1 -0
  179. package/dist/src/lib/utils/index.cjs +1 -0
  180. package/dist/src/lib/utils/index.d.ts +379 -0
  181. package/dist/src/lib/utils/index.d.ts.map +1 -0
  182. package/dist/src/lib/utils/index.js +527 -0
  183. package/dist/src/lib/utils/index.mjs +1 -0
  184. package/dist/src/rx.cjs +1 -0
  185. package/dist/src/rx.d.ts +2 -0
  186. package/dist/src/rx.d.ts.map +1 -0
  187. package/dist/src/rx.js +101 -0
  188. package/dist/src/rx.mjs +0 -0
  189. package/dist/src/server.cjs +16 -0
  190. package/dist/src/server.d.ts +64 -0
  191. package/dist/src/server.d.ts.map +1 -0
  192. package/dist/src/server.js +63 -0
  193. package/dist/src/server.mjs +16 -0
  194. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  195. package/package.json +128 -0
  196. package/src/index.ts +31 -0
  197. package/types/fluixi.d.ts +5 -0
  198. package/types/vinxi.d.ts +50 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @fileoverview Server-Side Rendering Entry Point for Fluixi
3
+ * @module @fluixi/core/server
4
+ *
5
+ * Implements Unified SSR Engine compatible with Lit and JSX.
6
+ */
7
+ import { serializeHydrationData, setHydrating, isHydrating, setHydrationData, getHydrationData, hasHydrationData, clearHydrationData, clearHydrationDataKey, deserializeHydrationData, hydrationMarker, hydrationMarkerStart, hydrationMarkerEnd, createHydratableResource, useHydrationData, cleanupHydration, isServerEnvironment, isClientEnvironment, type HydrationData } from './hydration.js';
8
+ /**
9
+ * SSR context for passing data during server rendering
10
+ */
11
+ export interface SSRContext {
12
+ url: string;
13
+ headers: Record<string, string>;
14
+ [key: string]: any;
15
+ }
16
+ /**
17
+ * Document options
18
+ */
19
+ export interface DocumentOptions {
20
+ title?: string;
21
+ lang?: string;
22
+ stylesheets?: string[];
23
+ scripts?: string[];
24
+ head?: string;
25
+ bodyAttributes?: string;
26
+ }
27
+ /**
28
+ * Get current SSR context
29
+ */
30
+ export declare function getSSRContext(): SSRContext | null;
31
+ /**
32
+ * Set SSR context
33
+ */
34
+ export declare function setSSRContext(context: SSRContext | null): void;
35
+ /**
36
+ * Run function with SSR context
37
+ */
38
+ export declare function withSSRContext<T>(context: SSRContext, fn: () => T): T;
39
+ /**
40
+ * Render complete HTML page
41
+ *
42
+ * @param {() => any} code - Component function
43
+ * @param {DocumentOptions} options - Document options
44
+ * @returns {Promise<string>} Complete HTML document
45
+ */
46
+ export declare function renderToPage(code: () => any, options?: DocumentOptions): Promise<string>;
47
+ /**
48
+ * Create HTML document wrapper
49
+ */
50
+ export declare function createHtmlDocument(content: string, options?: DocumentOptions): string;
51
+ export declare function isServer(): boolean;
52
+ export declare function isClient(): boolean;
53
+ export declare function onServer<T>(fn: () => T, fallback: T): T;
54
+ export declare function onClient<T>(fn: () => T, fallback: T): T;
55
+ /**
56
+ * Render component to HTML string
57
+ */
58
+ export declare function renderToString(code: () => any): Promise<string>;
59
+ /**
60
+ * Render component to stream (includes hydration data)
61
+ */
62
+ export declare function renderToStream(code: () => any): Promise<string>;
63
+ /**
64
+ * Standard server entry point.
65
+ * Returns an object with render/stream/page helpers
66
+ * for use in server frameworks (Express, Hono, Nitro, etc.)
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * // entry-server.ts
71
+ * import { startServer } from '@fluixi/core/server';
72
+ * import App from './app';
73
+ *
74
+ * export default startServer(App);
75
+ * ```
76
+ */
77
+ export declare function startServer(App: (props: {
78
+ url: string;
79
+ }) => any): {
80
+ /** Render the app to a full HTML string (includes hydration data) */
81
+ render: (url: string) => Promise<string>;
82
+ /** Render the app to a streamable HTML string (includes hydration data) */
83
+ stream: (url: string) => Promise<string>;
84
+ /** Render the app to a complete HTML page document */
85
+ page: (url: string, opts?: DocumentOptions) => Promise<string>;
86
+ };
87
+ export { createSignal, createEffect, createMemo, createRoot, batch, untrack, onCleanup, getOwner, runWithOwner, createContext, useContext, createComputed, createRenderEffect, createDeferred, createSelector, createResource, startTransition, isServer as isServerReactive, isClient as isClientReactive, } from './reactive.js';
88
+ export type { SignalTuple, Accessor, Setter, SignalOptions, RootOwner, Context, } from './reactive.js';
89
+ export { isHydrating, setHydrating, setHydrationData, getHydrationData, hasHydrationData, clearHydrationData, clearHydrationDataKey, serializeHydrationData, deserializeHydrationData, hydrationMarker, hydrationMarkerStart, hydrationMarkerEnd, createHydratableResource, useHydrationData, cleanupHydration, isServerEnvironment, isClientEnvironment, };
90
+ export type { HydrationData };
91
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * @fileoverview Server-Side Rendering Entry Point for Fluixi
3
+ * @module @fluixi/core/server
4
+ *
5
+ * Implements Unified SSR Engine compatible with Lit and JSX.
6
+ */
7
+ import { serializeHydrationData, setHydrating, isHydrating, setHydrationData, getHydrationData, hasHydrationData, clearHydrationData, clearHydrationDataKey, deserializeHydrationData, hydrationMarker, hydrationMarkerStart, hydrationMarkerEnd, createHydratableResource, useHydrationData, cleanupHydration, isServerEnvironment, isClientEnvironment, } from './hydration.js';
8
+ // SSR runs through @fluixi/server: the universal renderer + request-scoping,
9
+ // with AsyncLocalStorage injected so concurrent renders are isolated.
10
+ import { renderToString as domRenderToString } from '@fluixi/server';
11
+ // ============================================================================
12
+ // SSR CONTEXT MANAGEMENT
13
+ // ============================================================================
14
+ let currentSSRContext = null;
15
+ /**
16
+ * Get current SSR context
17
+ */
18
+ export function getSSRContext() {
19
+ return currentSSRContext;
20
+ }
21
+ /**
22
+ * Set SSR context
23
+ */
24
+ export function setSSRContext(context) {
25
+ currentSSRContext = context;
26
+ }
27
+ /**
28
+ * Run function with SSR context
29
+ */
30
+ export function withSSRContext(context, fn) {
31
+ const prev = currentSSRContext;
32
+ currentSSRContext = context;
33
+ try {
34
+ return fn();
35
+ }
36
+ finally {
37
+ currentSSRContext = prev;
38
+ }
39
+ }
40
+ // ============================================================================
41
+ // HTML GENERATION
42
+ // ============================================================================
43
+ /**
44
+ * Render complete HTML page
45
+ *
46
+ * @param {() => any} code - Component function
47
+ * @param {DocumentOptions} options - Document options
48
+ * @returns {Promise<string>} Complete HTML document
49
+ */
50
+ export async function renderToPage(code, options = {}) {
51
+ const content = await renderToString(code);
52
+ return createHtmlDocument(content, options);
53
+ }
54
+ /**
55
+ * Create HTML document wrapper
56
+ */
57
+ export function createHtmlDocument(content, options = {}) {
58
+ const { title = 'Fluixi App', lang = 'en', stylesheets = [], scripts = [], head = '', bodyAttributes = '', } = options;
59
+ const styleTags = stylesheets
60
+ .map((href) => `<link rel="stylesheet" href="${href}">`)
61
+ .join('\n ');
62
+ const scriptTags = scripts
63
+ .map((src) => `<script type="module" src="${src}"></script>`)
64
+ .join('\n ');
65
+ return `<!DOCTYPE html>
66
+ <html lang="${lang}">
67
+ <head>
68
+ <meta charset="UTF-8">
69
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
70
+ <title>${title}</title>
71
+ ${styleTags}
72
+ ${head}
73
+ </head>
74
+ <body${bodyAttributes ? ' ' + bodyAttributes : ''}>
75
+ ${content}
76
+ ${scriptTags}
77
+ </body>
78
+ </html>`;
79
+ }
80
+ // ============================================================================
81
+ // ENVIRONMENT DETECTION
82
+ // ============================================================================
83
+ export function isServer() {
84
+ return typeof window === 'undefined';
85
+ }
86
+ export function isClient() {
87
+ return typeof window !== 'undefined';
88
+ }
89
+ export function onServer(fn, fallback) {
90
+ return isServer() ? fn() : fallback;
91
+ }
92
+ export function onClient(fn, fallback) {
93
+ return isClient() ? fn() : fallback;
94
+ }
95
+ // ============================================================================
96
+ // EXPORTS
97
+ // ============================================================================
98
+ /**
99
+ * Render component to HTML string
100
+ */
101
+ export async function renderToString(code) {
102
+ const html = await domRenderToString(code);
103
+ const script = serializeHydrationData();
104
+ return html + script;
105
+ }
106
+ /**
107
+ * Render component to stream (includes hydration data)
108
+ */
109
+ export async function renderToStream(code) {
110
+ const html = await domRenderToString(code);
111
+ const script = serializeHydrationData();
112
+ return html + script;
113
+ }
114
+ /**
115
+ * Standard server entry point.
116
+ * Returns an object with render/stream/page helpers
117
+ * for use in server frameworks (Express, Hono, Nitro, etc.)
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * // entry-server.ts
122
+ * import { startServer } from '@fluixi/core/server';
123
+ * import App from './app';
124
+ *
125
+ * export default startServer(App);
126
+ * ```
127
+ */
128
+ export function startServer(App) {
129
+ return {
130
+ /** Render the app to a full HTML string (includes hydration data) */
131
+ render: (url) => renderToString(() => App({ url })),
132
+ /** Render the app to a streamable HTML string (includes hydration data) */
133
+ stream: (url) => renderToStream(() => App({ url })),
134
+ /** Render the app to a complete HTML page document */
135
+ page: (url, opts) => renderToPage(() => App({ url }), opts),
136
+ };
137
+ }
138
+ // Re-export server-mapped reactive primitives
139
+ export { createSignal, createEffect, createMemo, createRoot, batch, untrack, onCleanup, getOwner, runWithOwner, createContext, useContext, createComputed, createRenderEffect, createDeferred, createSelector, createResource, startTransition, isServer as isServerReactive, isClient as isClientReactive, } from './reactive.js';
140
+ // Re-export all hydration utilities
141
+ export { isHydrating, setHydrating, setHydrationData, getHydrationData, hasHydrationData, clearHydrationData, clearHydrationDataKey, serializeHydrationData, deserializeHydrationData, hydrationMarker, hydrationMarkerStart, hydrationMarkerEnd, createHydratableResource, useHydrationData, cleanupHydration, isServerEnvironment, isClientEnvironment, };
@@ -0,0 +1,16 @@
1
+ var x=!1,a=new Map;function g(){return x}function b(t){x=t}function l(t,e){a.set(t,e)}function p(t){return a.get(t)}function O(t){return a.has(t)}function S(){a.clear()}function E(t){a.delete(t)}function f(){if(a.size===0)return"";let t=Object.fromEntries(a);return`<script type="application/json" id="__FLUIXI_HYDRATION__">${JSON.stringify(t)}<\/script>`}function A(){if(typeof window>"u")return!1;let t=document.getElementById("__FLUIXI_HYDRATION__");if(!t||t.getAttribute("type")!=="application/json")return!1;try{let e=t.textContent||"{}",n=JSON.parse(e);for(let[r,o]of Object.entries(n))a.set(r,o);return!0}catch(e){return console.error("Failed to deserialize hydration data:",e),!1}}function k(t){return`<!--#${t}-->`}function _(t){return`<!--#${t}-->`}function j(t){return`<!--/${t}-->`}function M(t,e){return async()=>{if(g()||typeof window<"u"){let r=p(t);if(r!==void 0)return r}let n=await e();return typeof window>"u"&&l(t,n),n}}function $(t,e){let n=p(t);if(n!==void 0)return n;let r=typeof e=="function"?e():e;return typeof window>"u"&&l(t,r),r}function m(){if(typeof window>"u")return;let t=document.getElementById("__FLUIXI_HYDRATION__");t&&t.remove();let e=document.createTreeWalker(document.body,NodeFilter.SHOW_COMMENT,null),n=[],r;for(;r=e.nextNode();){let o=r,i=o.nodeValue||"";(i.startsWith("#")||i.startsWith("/"))&&n.push(o)}n.forEach(o=>o.remove()),S()}typeof window<"u"&&window.addEventListener("load",()=>{setTimeout(m,100)});function K(){return typeof window>"u"}function F(){return typeof window<"u"}import{renderToString as w}from"@fluixi/server";function I(t,e){let n=t;return[(()=>n),i=>(typeof i=="function"?n=i(n):n=i,n)]}function y(t,e,n){try{t(e)}catch(r){console.error("[Fluixi Server] Effect error:",r)}return{dispose:()=>{}}}function h(t,e,n){let r=t(e);return(()=>r)}function N(t){let e=[],n=()=>{e.forEach(r=>{try{r()}catch(o){console.error("[Fluixi Server] Cleanup error:",o)}}),e.length=0};try{return t(n)}catch(r){throw n(),r}}function z(t){return t()}function W(t){return t()}var v=null;function L(t){v&&v.push(t)}var u=null;function U(){return u}function Y(t,e){let n=u;u=t;try{return e()}finally{u=n}}var s=new Map;function P(t){let e=Symbol("context");return{id:e,Provider:r=>{let o=s.get(e);s.set(e,r.value);try{return r.children}finally{o!==void 0?s.set(e,o):s.delete(e)}},defaultValue:t}}function V(t){let e=s.get(t.id);return e!==void 0?e:t.defaultValue}function X(t){return y(t)}function B(t){return y(t)}function J(t){return h(t)}function q(t){let e=t();return n=>n===e}function G(t,e,n){return[()=>{},{mutate:r=>r,refetch:()=>{}}]}function Q(t){t()}var Z=!0,tt=!1;var c=null;function dt(){return c}function lt(t){c=t}function pt(t,e){let n=c;c=t;try{return e()}finally{c=n}}async function et(t,e={}){let n=await C(t);return nt(n,e)}function nt(t,e={}){let{title:n="Fluixi App",lang:r="en",stylesheets:o=[],scripts:i=[],head:D="",bodyAttributes:T=""}=e,R=o.map(d=>`<link rel="stylesheet" href="${d}">`).join(`
2
+ `),H=i.map(d=>`<script type="module" src="${d}"><\/script>`).join(`
3
+ `);return`<!DOCTYPE html>
4
+ <html lang="${r}">
5
+ <head>
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <title>${n}</title>
9
+ ${R}
10
+ ${D}
11
+ </head>
12
+ <body${T?" "+T:""}>
13
+ ${t}
14
+ ${H}
15
+ </body>
16
+ </html>`}function rt(){return typeof window>"u"}function ot(){return typeof window<"u"}function ft(t,e){return rt()?t():e}function yt(t,e){return ot()?t():e}async function C(t){let e=await w(t),n=f();return e+n}async function it(t){let e=await w(t),n=f();return e+n}function Tt(t){return{render:e=>C(()=>t({url:e})),stream:e=>it(()=>t({url:e})),page:(e,n)=>et(()=>t({url:e}),n)}}export{z as batch,m as cleanupHydration,S as clearHydrationData,E as clearHydrationDataKey,X as createComputed,P as createContext,J as createDeferred,y as createEffect,nt as createHtmlDocument,M as createHydratableResource,h as createMemo,B as createRenderEffect,G as createResource,N as createRoot,q as createSelector,I as createSignal,A as deserializeHydrationData,p as getHydrationData,U as getOwner,dt as getSSRContext,O as hasHydrationData,k as hydrationMarker,j as hydrationMarkerEnd,_ as hydrationMarkerStart,ot as isClient,F as isClientEnvironment,tt as isClientReactive,g as isHydrating,rt as isServer,K as isServerEnvironment,Z as isServerReactive,L as onCleanup,yt as onClient,ft as onServer,et as renderToPage,it as renderToStream,C as renderToString,Y as runWithOwner,f as serializeHydrationData,b as setHydrating,l as setHydrationData,lt as setSSRContext,Tt as startServer,Q as startTransition,W as untrack,V as useContext,$ as useHydrationData,pt as withSSRContext};
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var v=(e,t)=>{for(var o in t)l(e,o,{get:t[o],enumerable:!0})},S=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of x(t))!y.call(e,r)&&r!==o&&l(e,r,{get:()=>t[r],enumerable:!(n=d(t,r))||n.enumerable});return e};var g=e=>S(l({},"__esModule",{value:!0}),e);var G={};v(G,{batch:()=>h,createComputed:()=>j,createContext:()=>b,createDeferred:()=>E,createEffect:()=>T,createMemo:()=>f,createRenderEffect:()=>F,createResource:()=>M,createRoot:()=>C,createSelector:()=>k,createSignal:()=>w,createStore:()=>D,getOwner:()=>R,getSharedConfig:()=>B,isClient:()=>q,isServer:()=>W,onCleanup:()=>K,runWithOwner:()=>O,setOwner:()=>z,sharedConfig:()=>u,startTransition:()=>V,untrack:()=>A,useContext:()=>m});module.exports=g(G);function w(e,t){let o=e;return[(()=>o),c=>(typeof c=="function"?o=c(o):o=c,o)]}function T(e,t,o){try{e(t)}catch(n){console.error("[Fluixi Server] Effect error:",n)}return{dispose:()=>{}}}function f(e,t,o){let n=e(t);return(()=>n)}function C(e){let t=[],o=()=>{t.forEach(n=>{try{n()}catch(r){console.error("[Fluixi Server] Cleanup error:",r)}}),t.length=0};try{return e(o)}catch(n){throw o(),n}}function h(e){return e()}function A(e){return e()}var p=null;function K(e){p&&p.push(e)}var s=null;function R(){return s}function O(e,t){let o=s;s=e;try{return t()}finally{s=o}}var i=new Map;function b(e){let t=Symbol("context");return{id:t,Provider:n=>{let r=i.get(t);i.set(t,n.value);try{return n.children}finally{r!==void 0?i.set(t,r):i.delete(t)}},defaultValue:e}}function m(e){let t=i.get(e.id);return t!==void 0?t:e.defaultValue}function j(e){return T(e)}function F(e){return T(e)}function E(e){return f(e)}function k(e){let t=e();return o=>o===t}function M(e,t,o){return[()=>{},{mutate:n=>n,refetch:()=>{}}]}function D(e){let t={...e};function o(n,r){if(typeof n=="object"&&n!==null&&!Array.isArray(n))for(let c of Object.keys(n)){let a=n[c];t[c]=typeof a=="function"?a(t[c]):a}else t[n]=typeof r=="function"?r(t[n]):r}return[t,o]}function V(e){e()}var W=!0,q=!1,u={context:null,owner:null};function z(e){s=e,u.owner=e,u.context=e}function B(){return u}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * @fileoverview Server Reactive Primitives for Fluixi
3
+ * @module @fluixi/core/server/reactive
4
+ *
5
+ * Maps reactive primitives for server-side execution
6
+ * Following SolidJS pattern of server-specific reactive behavior
7
+ *
8
+ * Server mode:
9
+ * - Signals read-only snapshot
10
+ * - Effects run once
11
+ * - No scheduling
12
+ * - No subscriptions
13
+ */
14
+ import type { SignalTuple, Accessor, Setter, SignalOptions, RootOwner, Context } from '@fluixi/reactive/signal';
15
+ /**
16
+ * Server createSignal - Returns snapshot value
17
+ *
18
+ * Section 4: Signals read-only snapshot on server
19
+ * No reactivity, no tracking, just initial value
20
+ *
21
+ * @template T
22
+ * @param {T} value - Initial value
23
+ * @param {SignalOptions<T>} options - SignalTuple options (ignored on server)
24
+ * @returns {SignalTuple<T>} Tuple of [getter, setter]
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // On server, this returns a static snapshot
29
+ * const [count, setCount] = createSignal(0);
30
+ * console.log(count()); // 0
31
+ * setCount(1); // Updates value but triggers no effects
32
+ * console.log(count()); // 1
33
+ * ```
34
+ */
35
+ export declare function createSignal<T>(value: T, options?: SignalOptions<T>): SignalTuple<T>;
36
+ /**
37
+ * Server createEffect - Runs once, no tracking
38
+ *
39
+ * Section 4: Effects run once on server, no scheduling
40
+ * Execute immediately and return no-op disposer
41
+ *
42
+ * @param {(v?: any) => any} fn - Effect function
43
+ * @param {any} value - Initial value (optional)
44
+ * @param {any} options - Effect options (ignored on server)
45
+ * @returns {{ dispose: () => void }} Disposer object
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // On server, runs once immediately
50
+ * createEffect(() => {
51
+ * console.log('This runs once');
52
+ * });
53
+ * ```
54
+ */
55
+ export declare function createEffect(fn: (v?: any) => any, value?: any, options?: any): {
56
+ dispose: () => void;
57
+ };
58
+ /**
59
+ * Server createMemo - Compute once, return static accessor
60
+ *
61
+ * Section 4: No tracking on server, single evaluation
62
+ * Memoizes value at creation time
63
+ *
64
+ * @template T
65
+ * @param {(v?: T) => T} fn - Computation function
66
+ * @param {T} value - Initial value (optional)
67
+ * @param {any} options - Memo options (ignored on server)
68
+ * @returns {Accessor<T>} Static accessor
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const [count] = createSignal(5);
73
+ * const doubled = createMemo(() => count() * 2);
74
+ * console.log(doubled()); // 10 (computed once)
75
+ * ```
76
+ */
77
+ export declare function createMemo<T>(fn: (v?: T) => T, value?: T, options?: any): Accessor<T>;
78
+ /**
79
+ * Server createRoot - Creates owner but no reactive tracking
80
+ *
81
+ * Section 5: Owners exist on server for tree structure
82
+ * Needed for context and cleanup, but no reactive tracking
83
+ *
84
+ * @template T
85
+ * @param {(dispose: () => void) => T} fn - Root function
86
+ * @returns {T} Function result
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const result = createRoot((dispose) => {
91
+ * // Server: Executes once, maintains owner tree
92
+ * return <App />;
93
+ * });
94
+ * ```
95
+ */
96
+ export declare function createRoot<T>(fn: (dispose: () => void) => T): T;
97
+ /**
98
+ * Server batch - Execute immediately, no batching
99
+ *
100
+ * Section 4: No scheduling on server
101
+ * Just runs the function synchronously
102
+ *
103
+ * @template T
104
+ * @param {() => T} fn - Function to batch
105
+ * @returns {T} Function result
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * batch(() => {
110
+ * setCount(1);
111
+ * setName('Alice');
112
+ * }); // Executes immediately
113
+ * ```
114
+ */
115
+ export declare function batch<T>(fn: () => T): T;
116
+ /**
117
+ * Server untrack - Execute function (already untracked)
118
+ *
119
+ * Section 4: No tracking on server anyway
120
+ * This is a no-op but exists for API compatibility
121
+ *
122
+ * @template T
123
+ * @param {() => T} fn - Function to run untracked
124
+ * @returns {T} Function result
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * untrack(() => {
129
+ * return signal(); // Not tracked (but nothing is on server)
130
+ * });
131
+ * ```
132
+ */
133
+ export declare function untrack<T>(fn: () => T): T;
134
+ /**
135
+ * Server onCleanup - Register cleanup function
136
+ *
137
+ * Section 5: Cleanup still needed for SSR resource management
138
+ * Stores cleanup for execution when root disposes
139
+ *
140
+ * @param {() => void} fn - Cleanup function
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * createRoot((dispose) => {
145
+ * onCleanup(() => {
146
+ * console.log('Cleanup on dispose');
147
+ * });
148
+ * return result;
149
+ * });
150
+ * ```
151
+ */
152
+ export declare function onCleanup(fn: () => void): void;
153
+ /**
154
+ * Server getOwner - Get current reactive owner
155
+ *
156
+ * Section 5: Owner tree maintained on server for context
157
+ *
158
+ * @returns {RootOwner | null} Current owner or null
159
+ */
160
+ export declare function getOwner(): RootOwner | null;
161
+ /**
162
+ * Server runWithOwner - Run function with specific owner
163
+ *
164
+ * Section 5: Owner switching for proper context nesting
165
+ *
166
+ * @template T
167
+ * @param {RootOwner | null} owner - Owner to run with
168
+ * @param {() => T} fn - Function to run
169
+ * @returns {T} Function result
170
+ */
171
+ export declare function runWithOwner<T>(owner: RootOwner | null, fn: () => T): T;
172
+ /**
173
+ * Server createContext - Create context with default value
174
+ *
175
+ * Section 9: Context lookup-based, no subscriptions on server
176
+ *
177
+ * @template T
178
+ * @param {T} defaultValue - Default context value
179
+ * @returns {Context<T>} Context object
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * const ThemeContext = createContext('light');
184
+ * ```
185
+ */
186
+ export declare function createContext<T>(defaultValue?: T): Context<T>;
187
+ /**
188
+ * Server useContext - Retrieve context value
189
+ *
190
+ * Section 9: No subscriptions on server, just lookup
191
+ *
192
+ * @template T
193
+ * @param {Context<T>} context - Context to use
194
+ * @returns {T} Context value
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * const theme = useContext(ThemeContext);
199
+ * ```
200
+ */
201
+ export declare function useContext<T>(context: Context<T>): T;
202
+ /**
203
+ * Server createComputed - Alias for createEffect
204
+ *
205
+ * On server, computed values run once like effects
206
+ *
207
+ * @param {() => any} fn - Computation function
208
+ * @returns {{ dispose: () => void }} Disposer
209
+ */
210
+ export declare function createComputed(fn: () => any): {
211
+ dispose: () => void;
212
+ };
213
+ /**
214
+ * Server createRenderEffect - Runs once for SSR rendering
215
+ *
216
+ * @param {() => any} fn - Render effect function
217
+ * @returns {{ dispose: () => void }} Disposer
218
+ */
219
+ export declare function createRenderEffect(fn: () => any): {
220
+ dispose: () => void;
221
+ };
222
+ /**
223
+ * Server createDeferred - No deferring on server
224
+ *
225
+ * @template T
226
+ * @param {() => T} fn - Deferred computation
227
+ * @returns {Accessor<T>} Accessor
228
+ */
229
+ export declare function createDeferred<T>(fn: () => T): Accessor<T>;
230
+ /**
231
+ * Server createSelector - Returns static equality check
232
+ *
233
+ * @template T
234
+ * @param {() => T} source - Source value
235
+ * @returns {(key: T) => boolean} Selector function
236
+ */
237
+ export declare function createSelector<T>(source: () => T): (key: T) => boolean;
238
+ /**
239
+ * Server createResource - Stub for resource creation
240
+ *
241
+ * @param source Source signal or value
242
+ * @param fetcher Fetcher function
243
+ * @param options Resource options
244
+ */
245
+ export declare function createResource<T, S = true>(source: any, fetcher?: any, options?: any): [() => T | undefined, {
246
+ mutate: (v: T) => T;
247
+ refetch: () => void;
248
+ }];
249
+ export type Store<T extends object> = {
250
+ readonly [K in keyof T]: T[K];
251
+ };
252
+ export type SetStoreFunction<T extends object> = {
253
+ (patch: {
254
+ [K in keyof T]?: T[K] | ((prev: T[K]) => T[K]);
255
+ }): void;
256
+ <K extends keyof T>(key: K, value: T[K] | ((prev: T[K]) => T[K])): void;
257
+ };
258
+ /**
259
+ * Server createStore — plain object wrapper, no reactivity.
260
+ * Mirrors the client API so shared code compiles on both sides.
261
+ */
262
+ export declare function createStore<T extends object>(init: T): [Store<T>, SetStoreFunction<T>];
263
+ /**
264
+ * Server startTransition - Execute immediately
265
+ *
266
+ * @param fn Transition function
267
+ */
268
+ export declare function startTransition(fn: () => void): void;
269
+ /**
270
+ * Check if running on server
271
+ */
272
+ export declare const isServer = true;
273
+ /**
274
+ * Check if running on client
275
+ */
276
+ export declare const isClient = false;
277
+ export type { SignalTuple, Accessor, Setter, SignalOptions, RootOwner, Context };
278
+ /**
279
+ * Server sharedConfig - Empty config object for compatibility
280
+ */
281
+ export declare const sharedConfig: {
282
+ context: RootOwner | null;
283
+ owner: RootOwner | null;
284
+ };
285
+ /**
286
+ * Set current reactive owner (for internal use)
287
+ * @internal
288
+ */
289
+ export declare function setOwner(owner: RootOwner | null): void;
290
+ /**
291
+ * Get shared config (for compatibility)
292
+ * @internal
293
+ */
294
+ export declare function getSharedConfig(): {
295
+ context: RootOwner | null;
296
+ owner: RootOwner | null;
297
+ };
298
+ //# sourceMappingURL=reactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/reactive.ts"],"names":[],"mappings":"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"}