@fluixi/core 1.0.0-alpha.100
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.
- package/LICENSE +21 -0
- package/README.md +334 -0
- package/dist/cdn/core.global.js +2 -0
- package/dist/cli/generate.cjs +5639 -0
- package/dist/cli/generate.d.ts +7 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +2580 -0
- package/dist/cli/generate.mjs +5644 -0
- package/dist/cli/index.cjs +5639 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2580 -0
- package/dist/cli/index.mjs +5644 -0
- package/dist/cli/run.cjs +64 -0
- package/dist/cli/run.d.ts +3 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +62 -0
- package/dist/cli/run.mjs +40 -0
- package/dist/fluixi.d.ts +5 -0
- package/dist/src/cdn/chunk-RKBFEFZP.mjs +987 -0
- package/dist/src/cdn/core.cjs +1592 -0
- package/dist/src/cdn/core.d.ts +16 -0
- package/dist/src/cdn/core.d.ts.map +1 -0
- package/dist/src/cdn/core.js +15 -0
- package/dist/src/cdn/core.mjs +714 -0
- package/dist/src/cdn/router-V2THK27H.mjs +74 -0
- package/dist/src/index.cjs +1711 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +11 -0
- package/dist/src/index.mjs +1833 -0
- package/dist/src/jsx-dev-runtime.cjs +26 -0
- package/dist/src/jsx-dev-runtime.d.ts +2 -0
- package/dist/src/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/src/jsx-dev-runtime.js +1 -0
- package/dist/src/jsx-dev-runtime.mjs +24 -0
- package/dist/src/jsx-runtime.cjs +26 -0
- package/dist/src/jsx-runtime.d.ts +7 -0
- package/dist/src/jsx-runtime.d.ts.map +1 -0
- package/dist/src/jsx-runtime.js +8 -0
- package/dist/src/jsx-runtime.mjs +24 -0
- package/dist/src/lib/client/chunk-FDOPDB6Z.mjs +53 -0
- package/dist/src/lib/client/index.cjs +1210 -0
- package/dist/src/lib/client/index.d.ts +51 -0
- package/dist/src/lib/client/index.d.ts.map +1 -0
- package/dist/src/lib/client/index.js +174 -0
- package/dist/src/lib/client/index.mjs +293 -0
- package/dist/src/lib/client/router-4PTBPZLQ.mjs +891 -0
- package/dist/src/lib/context/context.cjs +81 -0
- package/dist/src/lib/context/context.d.ts +73 -0
- package/dist/src/lib/context/context.d.ts.map +1 -0
- package/dist/src/lib/context/context.js +93 -0
- package/dist/src/lib/context/context.mjs +64 -0
- package/dist/src/lib/context/index.cjs +83 -0
- package/dist/src/lib/context/index.d.ts +3 -0
- package/dist/src/lib/context/index.d.ts.map +1 -0
- package/dist/src/lib/context/index.js +1 -0
- package/dist/src/lib/context/index.mjs +64 -0
- package/dist/src/lib/control-flow.cjs +35 -0
- package/dist/src/lib/control-flow.d.ts +4 -0
- package/dist/src/lib/control-flow.d.ts.map +1 -0
- package/dist/src/lib/control-flow.js +1 -0
- package/dist/src/lib/control-flow.mjs +25 -0
- package/dist/src/lib/core.cjs +1710 -0
- package/dist/src/lib/core.d.ts +91 -0
- package/dist/src/lib/core.d.ts.map +1 -0
- package/dist/src/lib/core.js +158 -0
- package/dist/src/lib/core.mjs +1833 -0
- package/dist/src/lib/env/index.cjs +44 -0
- package/dist/src/lib/env/index.d.ts +26 -0
- package/dist/src/lib/env/index.d.ts.map +1 -0
- package/dist/src/lib/env/index.js +31 -0
- package/dist/src/lib/env/index.mjs +23 -0
- package/dist/src/lib/i18n/index.cjs +123 -0
- package/dist/src/lib/i18n/index.d.ts +110 -0
- package/dist/src/lib/i18n/index.d.ts.map +1 -0
- package/dist/src/lib/i18n/index.js +164 -0
- package/dist/src/lib/i18n/index.mjs +103 -0
- package/dist/src/lib/index.cjs +598 -0
- package/dist/src/lib/index.d.ts +81 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +130 -0
- package/dist/src/lib/index.mjs +688 -0
- package/dist/src/lib/isomorphic.cjs +90 -0
- package/dist/src/lib/isomorphic.d.ts +114 -0
- package/dist/src/lib/isomorphic.d.ts.map +1 -0
- package/dist/src/lib/isomorphic.js +132 -0
- package/dist/src/lib/isomorphic.mjs +69 -0
- package/dist/src/lib/jsx-runtime/index.cjs +21 -0
- package/dist/src/lib/jsx-runtime/index.d.ts +13 -0
- package/dist/src/lib/jsx-runtime/index.d.ts.map +1 -0
- package/dist/src/lib/jsx-runtime/index.js +13 -0
- package/dist/src/lib/jsx-runtime/index.mjs +4 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.cjs +21 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts +2 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.js +1 -0
- package/dist/src/lib/jsx-runtime/jsx-dev-runtime.mjs +4 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.cjs +302 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts +35 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.d.ts.map +1 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.js +118 -0
- package/dist/src/lib/plugins/fluixi-routes-plugin.mjs +271 -0
- package/dist/src/lib/plugins/index.cjs +311 -0
- package/dist/src/lib/plugins/index.d.ts +6 -0
- package/dist/src/lib/plugins/index.d.ts.map +1 -0
- package/dist/src/lib/plugins/index.js +7 -0
- package/dist/src/lib/plugins/index.mjs +279 -0
- package/dist/src/lib/plugins/route-codegen.cjs +73 -0
- package/dist/src/lib/plugins/route-codegen.d.ts +12 -0
- package/dist/src/lib/plugins/route-codegen.d.ts.map +1 -0
- package/dist/src/lib/plugins/route-codegen.js +80 -0
- package/dist/src/lib/plugins/route-codegen.mjs +52 -0
- package/dist/src/lib/plugins/route-scanner.cjs +189 -0
- package/dist/src/lib/plugins/route-scanner.d.ts +38 -0
- package/dist/src/lib/plugins/route-scanner.d.ts.map +1 -0
- package/dist/src/lib/plugins/route-scanner.js +215 -0
- package/dist/src/lib/plugins/route-scanner.mjs +158 -0
- package/dist/src/lib/plugins/vite.cjs +27 -0
- package/dist/src/lib/plugins/vite.d.ts +3 -0
- package/dist/src/lib/plugins/vite.d.ts.map +1 -0
- package/dist/src/lib/plugins/vite.js +1 -0
- package/dist/src/lib/plugins/vite.mjs +6 -0
- package/dist/src/lib/render/await.cjs +38 -0
- package/dist/src/lib/render/await.d.ts +26 -0
- package/dist/src/lib/render/await.d.ts.map +1 -0
- package/dist/src/lib/render/await.js +45 -0
- package/dist/src/lib/render/await.mjs +17 -0
- package/dist/src/lib/render/component.cjs +221 -0
- package/dist/src/lib/render/component.d.ts +296 -0
- package/dist/src/lib/render/component.d.ts.map +1 -0
- package/dist/src/lib/render/component.js +514 -0
- package/dist/src/lib/render/component.mjs +214 -0
- package/dist/src/lib/render/deferred.cjs +175 -0
- package/dist/src/lib/render/deferred.d.ts +36 -0
- package/dist/src/lib/render/deferred.d.ts.map +1 -0
- package/dist/src/lib/render/deferred.js +141 -0
- package/dist/src/lib/render/deferred.mjs +158 -0
- package/dist/src/lib/render/index.cjs +573 -0
- package/dist/src/lib/render/index.d.ts +98 -0
- package/dist/src/lib/render/index.d.ts.map +1 -0
- package/dist/src/lib/render/index.js +180 -0
- package/dist/src/lib/render/index.mjs +590 -0
- package/dist/src/lib/render/lazy.cjs +67 -0
- package/dist/src/lib/render/lazy.d.ts +49 -0
- package/dist/src/lib/render/lazy.d.ts.map +1 -0
- package/dist/src/lib/render/lazy.js +105 -0
- package/dist/src/lib/render/lazy.mjs +50 -0
- package/dist/src/lib/render/suspense.cjs +141 -0
- package/dist/src/lib/render/suspense.d.ts +65 -0
- package/dist/src/lib/render/suspense.d.ts.map +1 -0
- package/dist/src/lib/render/suspense.js +196 -0
- package/dist/src/lib/render/suspense.mjs +136 -0
- package/dist/src/lib/render/versions.cjs +35 -0
- package/dist/src/lib/render/versions.d.ts +2 -0
- package/dist/src/lib/render/versions.d.ts.map +1 -0
- package/dist/src/lib/render/versions.js +21 -0
- package/dist/src/lib/render/versions.mjs +14 -0
- package/dist/src/lib/router/data.cjs +228 -0
- package/dist/src/lib/router/data.d.ts +142 -0
- package/dist/src/lib/router/data.d.ts.map +1 -0
- package/dist/src/lib/router/data.js +258 -0
- package/dist/src/lib/router/data.mjs +214 -0
- package/dist/src/lib/router/index.cjs +921 -0
- package/dist/src/lib/router/index.d.ts +274 -0
- package/dist/src/lib/router/index.d.ts.map +1 -0
- package/dist/src/lib/router/index.js +904 -0
- package/dist/src/lib/router/index.mjs +938 -0
- package/dist/src/lib/router/scroll.cjs +79 -0
- package/dist/src/lib/router/scroll.d.ts +19 -0
- package/dist/src/lib/router/scroll.d.ts.map +1 -0
- package/dist/src/lib/router/scroll.js +68 -0
- package/dist/src/lib/router/scroll.mjs +58 -0
- package/dist/src/lib/router/transition.cjs +75 -0
- package/dist/src/lib/router/transition.d.ts +81 -0
- package/dist/src/lib/router/transition.d.ts.map +1 -0
- package/dist/src/lib/router/transition.js +136 -0
- package/dist/src/lib/router/transition.mjs +54 -0
- package/dist/src/lib/server/hydration.cjs +169 -0
- package/dist/src/lib/server/hydration.d.ts +198 -0
- package/dist/src/lib/server/hydration.d.ts.map +1 -0
- package/dist/src/lib/server/hydration.js +345 -0
- package/dist/src/lib/server/hydration.mjs +148 -0
- package/dist/src/lib/server/index.cjs +406 -0
- package/dist/src/lib/server/index.d.ts +115 -0
- package/dist/src/lib/server/index.d.ts.map +1 -0
- package/dist/src/lib/server/index.js +164 -0
- package/dist/src/lib/server/index.mjs +384 -0
- package/dist/src/lib/server/reactive.cjs +197 -0
- package/dist/src/lib/server/reactive.d.ts +239 -0
- package/dist/src/lib/server/reactive.d.ts.map +1 -0
- package/dist/src/lib/server/reactive.js +413 -0
- package/dist/src/lib/server/reactive.mjs +176 -0
- package/dist/src/lib/storage/cache.cjs +51 -0
- package/dist/src/lib/storage/cache.d.ts +18 -0
- package/dist/src/lib/storage/cache.d.ts.map +1 -0
- package/dist/src/lib/storage/cache.js +42 -0
- package/dist/src/lib/storage/cache.mjs +30 -0
- package/dist/src/lib/storage/index.cjs +246 -0
- package/dist/src/lib/storage/index.d.ts +83 -0
- package/dist/src/lib/storage/index.d.ts.map +1 -0
- package/dist/src/lib/storage/index.js +179 -0
- package/dist/src/lib/storage/index.mjs +231 -0
- package/dist/src/lib/storage/persisted.cjs +91 -0
- package/dist/src/lib/storage/persisted.d.ts +53 -0
- package/dist/src/lib/storage/persisted.d.ts.map +1 -0
- package/dist/src/lib/storage/persisted.js +75 -0
- package/dist/src/lib/storage/persisted.mjs +70 -0
- package/dist/src/lib/theme/color-scheme.cjs +281 -0
- package/dist/src/lib/theme/color-scheme.d.ts +61 -0
- package/dist/src/lib/theme/color-scheme.d.ts.map +1 -0
- package/dist/src/lib/theme/color-scheme.js +120 -0
- package/dist/src/lib/theme/color-scheme.mjs +265 -0
- package/dist/src/lib/theme/index.cjs +267 -0
- package/dist/src/lib/theme/index.d.ts +78 -0
- package/dist/src/lib/theme/index.d.ts.map +1 -0
- package/dist/src/lib/theme/index.js +135 -0
- package/dist/src/lib/theme/index.mjs +251 -0
- package/dist/src/lib/theme/provider.cjs +346 -0
- package/dist/src/lib/theme/provider.d.ts +34 -0
- package/dist/src/lib/theme/provider.d.ts.map +1 -0
- package/dist/src/lib/theme/provider.js +60 -0
- package/dist/src/lib/theme/provider.mjs +332 -0
- package/dist/src/lib/utils/index.cjs +209 -0
- package/dist/src/lib/utils/index.d.ts +286 -0
- package/dist/src/lib/utils/index.d.ts.map +1 -0
- package/dist/src/lib/utils/index.js +434 -0
- package/dist/src/lib/utils/index.mjs +188 -0
- package/dist/src/routes.cjs +37 -0
- package/dist/src/routes.d.ts +22 -0
- package/dist/src/routes.d.ts.map +1 -0
- package/dist/src/routes.js +20 -0
- package/dist/src/routes.mjs +17 -0
- package/dist/src/server.cjs +405 -0
- package/dist/src/server.d.ts +63 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +62 -0
- package/dist/src/server.mjs +382 -0
- package/dist/src/utils.cjs +21 -0
- package/dist/src/utils.d.ts +10 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +9 -0
- package/dist/src/utils.mjs +4 -0
- package/dist/src/version.generated.cjs +26 -0
- package/dist/src/version.generated.d.ts +3 -0
- package/dist/src/version.generated.d.ts.map +1 -0
- package/dist/src/version.generated.js +3 -0
- package/dist/src/version.generated.mjs +5 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/package.json +164 -0
- package/src/index.ts +19 -0
- package/types/fluixi.d.ts +5 -0
- package/types/vinxi.d.ts +50 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/lib/isomorphic.ts
|
|
21
|
+
var isomorphic_exports = {};
|
|
22
|
+
__export(isomorphic_exports, {
|
|
23
|
+
createIsomorphicState: () => createIsomorphicState,
|
|
24
|
+
createIsomorphicStore: () => createIsomorphicStore
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(isomorphic_exports);
|
|
27
|
+
var import_signal = require("@fluixi/reactive/signal");
|
|
28
|
+
var import_dom = require("@fluixi/dom");
|
|
29
|
+
var import_storage = require("@fluixi/storage");
|
|
30
|
+
var import_browser = require("@fluixi/storage/browser");
|
|
31
|
+
var REGISTRY_KEY = "__fluixi_iso_states__";
|
|
32
|
+
var SEED_PREFIX = "__iso:";
|
|
33
|
+
function registry() {
|
|
34
|
+
return globalThis[REGISTRY_KEY] ??= /* @__PURE__ */ new Map();
|
|
35
|
+
}
|
|
36
|
+
function readSeed(key) {
|
|
37
|
+
if (typeof window === "undefined") return void 0;
|
|
38
|
+
const data = (0, import_dom.getServerData)();
|
|
39
|
+
return data ? data[SEED_PREFIX + key] : void 0;
|
|
40
|
+
}
|
|
41
|
+
function createIsomorphicState(key, options) {
|
|
42
|
+
const seed = readSeed(key);
|
|
43
|
+
const initial = seed !== void 0 ? seed : typeof window !== "undefined" && options.client ? options.client() : options.fallback;
|
|
44
|
+
const [value, set] = (0, import_signal.createSignal)(initial, { name: key });
|
|
45
|
+
registry().set(key, { server: options.server, set });
|
|
46
|
+
return { value, set, key };
|
|
47
|
+
}
|
|
48
|
+
function createIsomorphicStore(key, options) {
|
|
49
|
+
const seeded = readSeed(key) !== void 0;
|
|
50
|
+
const base = createIsomorphicState(key, {
|
|
51
|
+
server: options.server,
|
|
52
|
+
fallback: options.fallback
|
|
53
|
+
});
|
|
54
|
+
const value = () => base.value() ?? options.fallback;
|
|
55
|
+
const persistWrite = (v) => {
|
|
56
|
+
const target = options.persist;
|
|
57
|
+
if (!target) return;
|
|
58
|
+
if (typeof target === "string" && typeof window === "undefined") return;
|
|
59
|
+
try {
|
|
60
|
+
const { storage, key: key2 } = typeof target === "string" ? { storage: (0, import_storage.createSyncStorage)({ adapter: (0, import_browser.localStorageAdapter)() }), key: target } : target;
|
|
61
|
+
storage.set(key2, v);
|
|
62
|
+
} catch {
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const set = (v) => {
|
|
66
|
+
base.set(v);
|
|
67
|
+
persistWrite(v);
|
|
68
|
+
};
|
|
69
|
+
const setField = (k, val) => {
|
|
70
|
+
set({ ...value(), [k]: val });
|
|
71
|
+
};
|
|
72
|
+
const fields = {};
|
|
73
|
+
for (const k of Object.keys(options.fallback)) {
|
|
74
|
+
fields[k] = (0, import_signal.createMemo)(() => value()[k], void 0, { name: `${key}.${String(k)}` });
|
|
75
|
+
}
|
|
76
|
+
let initPromise = null;
|
|
77
|
+
const ensureInit = () => {
|
|
78
|
+
if (seeded || !options.client) return Promise.resolve();
|
|
79
|
+
if (!initPromise) {
|
|
80
|
+
initPromise = Promise.resolve(options.client()).then((v) => {
|
|
81
|
+
set(v);
|
|
82
|
+
}).catch((e) => {
|
|
83
|
+
initPromise = null;
|
|
84
|
+
throw e;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return initPromise;
|
|
88
|
+
};
|
|
89
|
+
return { value, fields, set, setField, ensureInit, key, seeded };
|
|
90
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Isomorphic request state, the generic form of "ensureInit + transfer".
|
|
3
|
+
*
|
|
4
|
+
* A value that is resolved ONCE on the server (per request, before the app renders),
|
|
5
|
+
* serialized into the page, and seeded SYNCHRONOUSLY on the client so the first client
|
|
6
|
+
* render matches the server (no hydration mismatch) and nothing refetches.
|
|
7
|
+
*
|
|
8
|
+
* - Server: @fluixi/server's `preloadServerState(event)` walks the registry below,
|
|
9
|
+
* runs each `server(event)` resolver, sets the signal, and stashes the value for
|
|
10
|
+
* serialization (it lands in `window.__FX_DATA__['__iso:<key>']`).
|
|
11
|
+
* - Client: `createIsomorphicState` reads that seed at creation and starts there.
|
|
12
|
+
*
|
|
13
|
+
* This module is client-safe (no node imports) so app stores can call it on both sides.
|
|
14
|
+
* It talks to @fluixi/server only through a `globalThis` registry, no import edge.
|
|
15
|
+
*
|
|
16
|
+
* NOTE (prototype): the signal is module-scoped, so concurrent SSR requests share it.
|
|
17
|
+
* That is fine for a single default value; per-user, per-request isolation wants the
|
|
18
|
+
* request-scoped (AsyncLocalStorage) store, a follow-up.
|
|
19
|
+
*/
|
|
20
|
+
import { type Accessor } from '@fluixi/reactive/signal';
|
|
21
|
+
import { type TypedStorage } from '@fluixi/storage';
|
|
22
|
+
export interface IsomorphicState<T> {
|
|
23
|
+
/** Reactive accessor for the current value (a real signal: safe in JSX/control flow). */
|
|
24
|
+
value: Accessor<T | undefined>;
|
|
25
|
+
/** Update the value (client-side preference changes, optimistic updates). */
|
|
26
|
+
set: (v: T | undefined) => void;
|
|
27
|
+
/** Stable serialization key. */
|
|
28
|
+
key: string;
|
|
29
|
+
}
|
|
30
|
+
export interface IsomorphicOptions<T> {
|
|
31
|
+
/** Resolve the value on the server for this request (receives the RequestEvent). */
|
|
32
|
+
server: (event: any) => T | Promise<T>;
|
|
33
|
+
/** Optional client-only initial value when there is no server seed (pure SPA load). */
|
|
34
|
+
client?: () => T | undefined;
|
|
35
|
+
/** Value before resolution. */
|
|
36
|
+
fallback?: T;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A value resolved on the server, transferred to the client, and resolvable there too.
|
|
40
|
+
*
|
|
41
|
+
* The server resolver runs per request and its result is serialized into the page, so the
|
|
42
|
+
* client starts with the answer rather than fetching it again. On a cold client load with
|
|
43
|
+
* no seed, the client resolver runs once instead.
|
|
44
|
+
*
|
|
45
|
+
* `key` names the transfer slot and has to be stable across the two sides.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const user = createIsomorphicState('user', {
|
|
50
|
+
* server: (event) => event.locals.user,
|
|
51
|
+
* client: () => fetch('/api/me').then((r) => r.json()),
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function createIsomorphicState<T>(key: string, options: IsomorphicOptions<T>): IsomorphicState<T>;
|
|
56
|
+
export interface IsomorphicStore<T extends Record<string, any>> {
|
|
57
|
+
/** Reactive accessor for the whole record (always defined: falls back to `fallback`). */
|
|
58
|
+
value: Accessor<T>;
|
|
59
|
+
/** Per-field reactive accessors, one for every key of `fallback`. */
|
|
60
|
+
fields: {
|
|
61
|
+
[K in keyof T]: Accessor<T[K]>;
|
|
62
|
+
};
|
|
63
|
+
/** Replace the whole record. */
|
|
64
|
+
set: (v: T) => void;
|
|
65
|
+
/** Update ONE field, preserving the rest. */
|
|
66
|
+
setField: <K extends keyof T>(key: K, val: T[K]) => void;
|
|
67
|
+
/**
|
|
68
|
+
* Run the async `client` resolver exactly once (memoised; the promise is reset on
|
|
69
|
+
* failure so a later call can retry). A no-op when the value was server-seeded, the
|
|
70
|
+
* server already resolved and transferred it, so there is nothing to fetch.
|
|
71
|
+
*/
|
|
72
|
+
ensureInit: () => Promise<void>;
|
|
73
|
+
/** Stable serialization key. */
|
|
74
|
+
key: string;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the server rendered this value and sent it with the page. Tells "the server
|
|
77
|
+
* said nobody" apart from "no server said anything" (a client-only load).
|
|
78
|
+
*/
|
|
79
|
+
readonly seeded: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface IsomorphicStoreOptions<T> {
|
|
82
|
+
/** Resolve the record on the server for this request (receives the RequestEvent). */
|
|
83
|
+
server: (event: any) => T | Promise<T>;
|
|
84
|
+
/** Resolve the record on a pure-SPA cold load (no server seed). Run once by ensureInit(). */
|
|
85
|
+
client?: () => T | Promise<T>;
|
|
86
|
+
/** Value before resolution / the per-field accessor key set. Required for a store. */
|
|
87
|
+
fallback: T;
|
|
88
|
+
/**
|
|
89
|
+
* Mirror the record into storage on every write: a key in localStorage, or a key in a
|
|
90
|
+
* storage of your own (`useStorage({ scope: 'cookie' })` to have the server see it too).
|
|
91
|
+
*/
|
|
92
|
+
persist?: string | {
|
|
93
|
+
storage: TypedStorage<any>;
|
|
94
|
+
key: string;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* `createIsomorphicState` for a record, exposed as a store rather than a single value.
|
|
99
|
+
*
|
|
100
|
+
* Reads track per key, so a component using one field is untouched when another changes.
|
|
101
|
+
* Otherwise the transfer is the same: the server resolver runs per request, the result is
|
|
102
|
+
* serialized into the page, and a seeded client does not refetch.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* const settings = createIsomorphicStore('settings', {
|
|
107
|
+
* server: (event) => loadSettings(event.locals.userId),
|
|
108
|
+
* client: () => fetch('/api/settings').then((r) => r.json()),
|
|
109
|
+
* });
|
|
110
|
+
* settings.state.theme; // tracks `theme` alone
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function createIsomorphicStore<T extends Record<string, any>>(key: string, options: IsomorphicStoreOptions<T>): IsomorphicStore<T>;
|
|
114
|
+
//# sourceMappingURL=isomorphic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isomorphic.d.ts","sourceRoot":"","sources":["../../../src/lib/isomorphic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAElF,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAevE,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,yFAAyF;IACzF,KAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/B,6EAA6E;IAC7E,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAChC,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,oFAAoF;IACpF,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC;CACd;AASD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,eAAe,CAAC,CAAC,CAAC,CAapB;AAkBD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC5D,yFAAyF;IACzF,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnB,qEAAqE;IACrE,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAC3C,gCAAgC;IAChC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzD;;;;OAIG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,qFAAqF;IACrF,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B,sFAAsF;IACtF,QAAQ,EAAE,CAAC,CAAC;IACZ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjE,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,eAAe,CAAC,CAAC,CAAC,CAuDpB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Isomorphic request state, the generic form of "ensureInit + transfer".
|
|
3
|
+
*
|
|
4
|
+
* A value that is resolved ONCE on the server (per request, before the app renders),
|
|
5
|
+
* serialized into the page, and seeded SYNCHRONOUSLY on the client so the first client
|
|
6
|
+
* render matches the server (no hydration mismatch) and nothing refetches.
|
|
7
|
+
*
|
|
8
|
+
* - Server: @fluixi/server's `preloadServerState(event)` walks the registry below,
|
|
9
|
+
* runs each `server(event)` resolver, sets the signal, and stashes the value for
|
|
10
|
+
* serialization (it lands in `window.__FX_DATA__['__iso:<key>']`).
|
|
11
|
+
* - Client: `createIsomorphicState` reads that seed at creation and starts there.
|
|
12
|
+
*
|
|
13
|
+
* This module is client-safe (no node imports) so app stores can call it on both sides.
|
|
14
|
+
* It talks to @fluixi/server only through a `globalThis` registry, no import edge.
|
|
15
|
+
*
|
|
16
|
+
* NOTE (prototype): the signal is module-scoped, so concurrent SSR requests share it.
|
|
17
|
+
* That is fine for a single default value; per-user, per-request isolation wants the
|
|
18
|
+
* request-scoped (AsyncLocalStorage) store, a follow-up.
|
|
19
|
+
*/
|
|
20
|
+
import { createSignal, createMemo } from '@fluixi/reactive/signal';
|
|
21
|
+
import { getServerData } from '@fluixi/dom';
|
|
22
|
+
import { createSyncStorage } from '@fluixi/storage';
|
|
23
|
+
import { localStorageAdapter } from '@fluixi/storage/browser';
|
|
24
|
+
const REGISTRY_KEY = '__fluixi_iso_states__';
|
|
25
|
+
const SEED_PREFIX = '__iso:';
|
|
26
|
+
function registry() {
|
|
27
|
+
return (globalThis[REGISTRY_KEY] ??= new Map());
|
|
28
|
+
}
|
|
29
|
+
/** The server seed for `key`, if the page was server-rendered. */
|
|
30
|
+
function readSeed(key) {
|
|
31
|
+
if (typeof window === 'undefined')
|
|
32
|
+
return undefined;
|
|
33
|
+
const data = getServerData();
|
|
34
|
+
return data ? data[SEED_PREFIX + key] : undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A value resolved on the server, transferred to the client, and resolvable there too.
|
|
38
|
+
*
|
|
39
|
+
* The server resolver runs per request and its result is serialized into the page, so the
|
|
40
|
+
* client starts with the answer rather than fetching it again. On a cold client load with
|
|
41
|
+
* no seed, the client resolver runs once instead.
|
|
42
|
+
*
|
|
43
|
+
* `key` names the transfer slot and has to be stable across the two sides.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const user = createIsomorphicState('user', {
|
|
48
|
+
* server: (event) => event.locals.user,
|
|
49
|
+
* client: () => fetch('/api/me').then((r) => r.json()),
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export function createIsomorphicState(key, options) {
|
|
54
|
+
const seed = readSeed(key);
|
|
55
|
+
const initial = seed !== undefined
|
|
56
|
+
? seed
|
|
57
|
+
: typeof window !== 'undefined' && options.client
|
|
58
|
+
? options.client()
|
|
59
|
+
: options.fallback;
|
|
60
|
+
const [value, set] = createSignal(initial, { name: key });
|
|
61
|
+
registry().set(key, { server: options.server, set: set });
|
|
62
|
+
return { value, set: set, key };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* `createIsomorphicState` for a record, exposed as a store rather than a single value.
|
|
66
|
+
*
|
|
67
|
+
* Reads track per key, so a component using one field is untouched when another changes.
|
|
68
|
+
* Otherwise the transfer is the same: the server resolver runs per request, the result is
|
|
69
|
+
* serialized into the page, and a seeded client does not refetch.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* const settings = createIsomorphicStore('settings', {
|
|
74
|
+
* server: (event) => loadSettings(event.locals.userId),
|
|
75
|
+
* client: () => fetch('/api/settings').then((r) => r.json()),
|
|
76
|
+
* });
|
|
77
|
+
* settings.state.theme; // tracks `theme` alone
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export function createIsomorphicStore(key, options) {
|
|
81
|
+
// Whether the server transferred a value for this key (read before the base state
|
|
82
|
+
// consumes the seed). When true, ensureInit() must not refetch on the client.
|
|
83
|
+
const seeded = readSeed(key) !== undefined;
|
|
84
|
+
const base = createIsomorphicState(key, {
|
|
85
|
+
server: options.server,
|
|
86
|
+
fallback: options.fallback,
|
|
87
|
+
});
|
|
88
|
+
const value = () => base.value() ?? options.fallback;
|
|
89
|
+
const persistWrite = (v) => {
|
|
90
|
+
const target = options.persist;
|
|
91
|
+
if (!target)
|
|
92
|
+
return;
|
|
93
|
+
if (typeof target === 'string' && typeof window === 'undefined')
|
|
94
|
+
return;
|
|
95
|
+
try {
|
|
96
|
+
const { storage, key } = typeof target === 'string' ? { storage: createSyncStorage({ adapter: localStorageAdapter() }), key: target } : target;
|
|
97
|
+
storage.set(key, v);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
/* quota / private mode: persistence is best-effort */
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const set = (v) => {
|
|
104
|
+
base.set(v);
|
|
105
|
+
persistWrite(v);
|
|
106
|
+
};
|
|
107
|
+
const setField = (k, val) => {
|
|
108
|
+
set({ ...value(), [k]: val });
|
|
109
|
+
};
|
|
110
|
+
const fields = {};
|
|
111
|
+
for (const k of Object.keys(options.fallback)) {
|
|
112
|
+
// Named for the devtools graph: `auth.user` rather than an anonymous memo.
|
|
113
|
+
fields[k] = createMemo(() => value()[k], undefined, { name: `${key}.${String(k)}` });
|
|
114
|
+
}
|
|
115
|
+
let initPromise = null;
|
|
116
|
+
const ensureInit = () => {
|
|
117
|
+
if (seeded || !options.client)
|
|
118
|
+
return Promise.resolve();
|
|
119
|
+
if (!initPromise) {
|
|
120
|
+
initPromise = Promise.resolve(options.client())
|
|
121
|
+
.then((v) => {
|
|
122
|
+
set(v);
|
|
123
|
+
})
|
|
124
|
+
.catch((e) => {
|
|
125
|
+
initPromise = null; // allow a retry on the next call
|
|
126
|
+
throw e;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return initPromise;
|
|
130
|
+
};
|
|
131
|
+
return { value, fields, set, setField, ensureInit, key, seeded };
|
|
132
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// src/lib/isomorphic.ts
|
|
2
|
+
import { createSignal, createMemo } from "@fluixi/reactive/signal";
|
|
3
|
+
import { getServerData } from "@fluixi/dom";
|
|
4
|
+
import { createSyncStorage } from "@fluixi/storage";
|
|
5
|
+
import { localStorageAdapter } from "@fluixi/storage/browser";
|
|
6
|
+
var REGISTRY_KEY = "__fluixi_iso_states__";
|
|
7
|
+
var SEED_PREFIX = "__iso:";
|
|
8
|
+
function registry() {
|
|
9
|
+
return globalThis[REGISTRY_KEY] ??= /* @__PURE__ */ new Map();
|
|
10
|
+
}
|
|
11
|
+
function readSeed(key) {
|
|
12
|
+
if (typeof window === "undefined") return void 0;
|
|
13
|
+
const data = getServerData();
|
|
14
|
+
return data ? data[SEED_PREFIX + key] : void 0;
|
|
15
|
+
}
|
|
16
|
+
function createIsomorphicState(key, options) {
|
|
17
|
+
const seed = readSeed(key);
|
|
18
|
+
const initial = seed !== void 0 ? seed : typeof window !== "undefined" && options.client ? options.client() : options.fallback;
|
|
19
|
+
const [value, set] = createSignal(initial, { name: key });
|
|
20
|
+
registry().set(key, { server: options.server, set });
|
|
21
|
+
return { value, set, key };
|
|
22
|
+
}
|
|
23
|
+
function createIsomorphicStore(key, options) {
|
|
24
|
+
const seeded = readSeed(key) !== void 0;
|
|
25
|
+
const base = createIsomorphicState(key, {
|
|
26
|
+
server: options.server,
|
|
27
|
+
fallback: options.fallback
|
|
28
|
+
});
|
|
29
|
+
const value = () => base.value() ?? options.fallback;
|
|
30
|
+
const persistWrite = (v) => {
|
|
31
|
+
const target = options.persist;
|
|
32
|
+
if (!target) return;
|
|
33
|
+
if (typeof target === "string" && typeof window === "undefined") return;
|
|
34
|
+
try {
|
|
35
|
+
const { storage, key: key2 } = typeof target === "string" ? { storage: createSyncStorage({ adapter: localStorageAdapter() }), key: target } : target;
|
|
36
|
+
storage.set(key2, v);
|
|
37
|
+
} catch {
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const set = (v) => {
|
|
41
|
+
base.set(v);
|
|
42
|
+
persistWrite(v);
|
|
43
|
+
};
|
|
44
|
+
const setField = (k, val) => {
|
|
45
|
+
set({ ...value(), [k]: val });
|
|
46
|
+
};
|
|
47
|
+
const fields = {};
|
|
48
|
+
for (const k of Object.keys(options.fallback)) {
|
|
49
|
+
fields[k] = createMemo(() => value()[k], void 0, { name: `${key}.${String(k)}` });
|
|
50
|
+
}
|
|
51
|
+
let initPromise = null;
|
|
52
|
+
const ensureInit = () => {
|
|
53
|
+
if (seeded || !options.client) return Promise.resolve();
|
|
54
|
+
if (!initPromise) {
|
|
55
|
+
initPromise = Promise.resolve(options.client()).then((v) => {
|
|
56
|
+
set(v);
|
|
57
|
+
}).catch((e) => {
|
|
58
|
+
initPromise = null;
|
|
59
|
+
throw e;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return initPromise;
|
|
63
|
+
};
|
|
64
|
+
return { value, fields, set, setField, ensureInit, key, seeded };
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
createIsomorphicState,
|
|
68
|
+
createIsomorphicStore
|
|
69
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*! @fluixi/core v1.0.0-alpha.100 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
9
|
+
for (let key of __getOwnPropNames(from))
|
|
10
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
11
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
12
|
+
}
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
16
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
17
|
+
|
|
18
|
+
// src/lib/jsx-runtime/index.ts
|
|
19
|
+
var index_exports = {};
|
|
20
|
+
module.exports = __toCommonJS(index_exports);
|
|
21
|
+
__reExport(index_exports, require("@fluixi/jsx/jsx-runtime"), module.exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from '@fluixi/jsx/jsx-runtime';
|
|
2
|
+
export type { JSX } from '@fluixi/jsx';
|
|
3
|
+
/**
|
|
4
|
+
* Global JSX namespace augmentation for "jsx": "preserve" mode.
|
|
5
|
+
*
|
|
6
|
+
* TypeScript with "jsx": "preserve" uses the global JSX namespace for element type
|
|
7
|
+
* checking (not jsxImportSource). This augmentation is applied automatically whenever
|
|
8
|
+
* any file imports from fluixi, because TypeScript processes declare global
|
|
9
|
+
* from all transitively-loaded modules.
|
|
10
|
+
*
|
|
11
|
+
* Pattern: same as SolidJS, the framework's main entry carries the global augmentation.
|
|
12
|
+
*/
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/jsx-runtime/index.ts"],"names":[],"mappings":"AAEA,cAAc,yBAAyB,CAAC;AAExC,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from '@fluixi/jsx/jsx-runtime';
|
|
2
|
+
/**
|
|
3
|
+
* Global JSX namespace augmentation for "jsx": "preserve" mode.
|
|
4
|
+
*
|
|
5
|
+
* TypeScript with "jsx": "preserve" uses the global JSX namespace for element type
|
|
6
|
+
* checking (not jsxImportSource). This augmentation is applied automatically whenever
|
|
7
|
+
* any file imports from fluixi, because TypeScript processes declare global
|
|
8
|
+
* from all transitively-loaded modules.
|
|
9
|
+
*
|
|
10
|
+
* Pattern: same as SolidJS, the framework's main entry carries the global augmentation.
|
|
11
|
+
*/
|
|
12
|
+
// declare global {
|
|
13
|
+
// namespace JSX {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*! @fluixi/core v1.0.0-alpha.100 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
9
|
+
for (let key of __getOwnPropNames(from))
|
|
10
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
11
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
12
|
+
}
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
16
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
17
|
+
|
|
18
|
+
// src/lib/jsx-runtime/jsx-dev-runtime.ts
|
|
19
|
+
var jsx_dev_runtime_exports = {};
|
|
20
|
+
module.exports = __toCommonJS(jsx_dev_runtime_exports);
|
|
21
|
+
__reExport(jsx_dev_runtime_exports, require("@fluixi/jsx/jsx-dev-runtime"), module.exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../../../../src/lib/jsx-runtime/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@fluixi/jsx/jsx-dev-runtime';
|