@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,136 @@
|
|
|
1
|
+
// src/lib/render/suspense.ts
|
|
2
|
+
import {
|
|
3
|
+
createSignal,
|
|
4
|
+
createMemo,
|
|
5
|
+
createEffect,
|
|
6
|
+
createRenderEffect,
|
|
7
|
+
isSignal,
|
|
8
|
+
readChildren,
|
|
9
|
+
useContext,
|
|
10
|
+
createContext,
|
|
11
|
+
createSuspenseBoundary,
|
|
12
|
+
provideSuspense
|
|
13
|
+
} from "@fluixi/reactive/signal";
|
|
14
|
+
import {
|
|
15
|
+
asSuspense,
|
|
16
|
+
isComponent,
|
|
17
|
+
createComponent,
|
|
18
|
+
runWithoutHydration
|
|
19
|
+
} from "@fluixi/dom";
|
|
20
|
+
var $SUSPENSE = /* @__PURE__ */ Symbol.for("suspense");
|
|
21
|
+
function isNode(value) {
|
|
22
|
+
if (typeof window === "undefined") return false;
|
|
23
|
+
if (typeof Node === "function" && value instanceof Node) return true;
|
|
24
|
+
return !!(value && typeof value === "object" && typeof value.nodeType === "number");
|
|
25
|
+
}
|
|
26
|
+
function isLitResult(value) {
|
|
27
|
+
if (!value || typeof value !== "object") return false;
|
|
28
|
+
return !!(typeof value["_$litType$"] !== "undefined" || typeof value["_$litDirective$"] !== "undefined" || Array.isArray(value.strings) && Array.isArray(value.values));
|
|
29
|
+
}
|
|
30
|
+
function isPromise(value) {
|
|
31
|
+
return !!(value && typeof value === "object" && typeof value.then === "function" || value instanceof Promise);
|
|
32
|
+
}
|
|
33
|
+
function isJSXElement(value) {
|
|
34
|
+
return !!(value && typeof value === "object" && "type" in value && "props" in value);
|
|
35
|
+
}
|
|
36
|
+
var SuspenseListContext = createContext(void 0, "suspense-list");
|
|
37
|
+
function Suspense(props) {
|
|
38
|
+
return createComponent(SuspenseImpl, props);
|
|
39
|
+
}
|
|
40
|
+
function SuspenseImpl(props) {
|
|
41
|
+
const boundary = createSuspenseBoundary();
|
|
42
|
+
const listCtx = useContext(SuspenseListContext);
|
|
43
|
+
const listState = listCtx ? listCtx.register(boundary.inFallback) : void 0;
|
|
44
|
+
function instantiateOnce(val) {
|
|
45
|
+
if (val == null || typeof val === "boolean") return null;
|
|
46
|
+
if (typeof val === "function" && isComponent(val) && !isSignal(val)) return val();
|
|
47
|
+
return val;
|
|
48
|
+
}
|
|
49
|
+
const fallback = runWithoutHydration(() => instantiateOnce(props.fallback ?? null));
|
|
50
|
+
const children = provideSuspense(boundary, () => readChildren(() => props.children));
|
|
51
|
+
const track = (value, depth) => {
|
|
52
|
+
if (depth > 8) return;
|
|
53
|
+
if (Array.isArray(value)) {
|
|
54
|
+
for (const x of value) track(x, depth + 1);
|
|
55
|
+
} else if (typeof value === "function" && isSignal(value)) {
|
|
56
|
+
track(value(), depth + 1);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
provideSuspense(boundary, () => {
|
|
60
|
+
createRenderEffect(() => track(children, 0));
|
|
61
|
+
});
|
|
62
|
+
const [resolved, setResolved] = createSignal(void 0);
|
|
63
|
+
const childIsPromise = isPromise(children);
|
|
64
|
+
if (childIsPromise) {
|
|
65
|
+
boundary.increment();
|
|
66
|
+
children.then(
|
|
67
|
+
(v) => {
|
|
68
|
+
setResolved(() => v);
|
|
69
|
+
boundary.decrement();
|
|
70
|
+
},
|
|
71
|
+
() => boundary.decrement()
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
return createMemo(() => {
|
|
75
|
+
const showFallback = listState ? listState.showFallback() : boundary.inFallback();
|
|
76
|
+
if (showFallback) return fallback;
|
|
77
|
+
if (childIsPromise) return resolved();
|
|
78
|
+
return children;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function SuspenseList(props) {
|
|
82
|
+
return createComponent(SuspenseListImpl, props);
|
|
83
|
+
}
|
|
84
|
+
function SuspenseListImpl(props) {
|
|
85
|
+
const { revealOrder = "together", tail } = props;
|
|
86
|
+
const registrations = [];
|
|
87
|
+
function coordinateReveal() {
|
|
88
|
+
if (revealOrder === "together") {
|
|
89
|
+
const allResolved = registrations.every((r) => !r.inFallback());
|
|
90
|
+
registrations.forEach((r) => {
|
|
91
|
+
r.setShowContent(allResolved);
|
|
92
|
+
r.setShowFallback(!allResolved);
|
|
93
|
+
});
|
|
94
|
+
} else {
|
|
95
|
+
const items = revealOrder === "backwards" ? [...registrations].reverse() : registrations;
|
|
96
|
+
let blocked = false;
|
|
97
|
+
for (const r of items) {
|
|
98
|
+
if (blocked || r.inFallback()) {
|
|
99
|
+
blocked = true;
|
|
100
|
+
r.setShowContent(false);
|
|
101
|
+
r.setShowFallback(tail !== "hidden");
|
|
102
|
+
} else {
|
|
103
|
+
r.setShowContent(true);
|
|
104
|
+
r.setShowFallback(false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const coordinator = {
|
|
110
|
+
register: (inFallback) => {
|
|
111
|
+
const [showContent, setShowContent] = createSignal(true);
|
|
112
|
+
const [showFallback, setShowFallback] = createSignal(false);
|
|
113
|
+
registrations.push({ inFallback, setShowContent, setShowFallback });
|
|
114
|
+
createEffect(() => {
|
|
115
|
+
inFallback();
|
|
116
|
+
coordinateReveal();
|
|
117
|
+
});
|
|
118
|
+
return { showContent, showFallback };
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
return SuspenseListContext.Provider({
|
|
122
|
+
value: coordinator,
|
|
123
|
+
children: props.children
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
asSuspense(Suspense);
|
|
127
|
+
Object.defineProperty(Suspense, "__suspense", { value: true, enumerable: true });
|
|
128
|
+
export {
|
|
129
|
+
$SUSPENSE,
|
|
130
|
+
Suspense,
|
|
131
|
+
SuspenseList,
|
|
132
|
+
isJSXElement,
|
|
133
|
+
isLitResult,
|
|
134
|
+
isNode,
|
|
135
|
+
isPromise
|
|
136
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
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/render/versions.ts
|
|
21
|
+
var versions_exports = {};
|
|
22
|
+
__export(versions_exports, {
|
|
23
|
+
stampVersions: () => import_dom2.stampVersions,
|
|
24
|
+
versions: () => import_dom2.versions,
|
|
25
|
+
warnOnVersionSkew: () => import_dom2.warnOnVersionSkew
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(versions_exports);
|
|
28
|
+
var import_dom = require("@fluixi/dom");
|
|
29
|
+
|
|
30
|
+
// src/version.generated.ts
|
|
31
|
+
var VERSION = "1.0.0-alpha.100";
|
|
32
|
+
|
|
33
|
+
// src/lib/render/versions.ts
|
|
34
|
+
var import_dom2 = require("@fluixi/dom");
|
|
35
|
+
(0, import_dom.registerCoreVersion)(VERSION);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../../src/lib/render/versions.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register this package's version with the DOM runtime, which owns the stamping.
|
|
3
|
+
*
|
|
4
|
+
* It used to be owned here, and stamped only by core's `render`, so an app that reached
|
|
5
|
+
* the DOM any other way (`startClient` -> `hydrate` -> the dom runtime's `render`) got no
|
|
6
|
+
* version attributes at all. Every SSR app is in that position, including the docs site.
|
|
7
|
+
*
|
|
8
|
+
* The stamping therefore moved down to `@fluixi/dom`, which both paths pass through. The
|
|
9
|
+
* core version cannot be imported from there: core depends on dom, and reversing that is
|
|
10
|
+
* a cycle, so it is pushed down instead, on import.
|
|
11
|
+
*
|
|
12
|
+
* Read from a generated constant rather than `package.json`: bundlers and ESM resolvers
|
|
13
|
+
* treat a manifest import inconsistently, and it would pull the whole file into the bundle
|
|
14
|
+
* for one string.
|
|
15
|
+
*/
|
|
16
|
+
import { registerCoreVersion } from '@fluixi/dom';
|
|
17
|
+
import { VERSION as CORE } from '../../version.generated.js';
|
|
18
|
+
registerCoreVersion(CORE);
|
|
19
|
+
// Re-exported so existing importers keep working, and so core's own `render`, which does
|
|
20
|
+
// not delegate to the dom runtime's `render`: can still stamp.
|
|
21
|
+
export { stampVersions, warnOnVersionSkew, versions } from '@fluixi/dom';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/lib/render/versions.ts
|
|
2
|
+
import { registerCoreVersion } from "@fluixi/dom";
|
|
3
|
+
|
|
4
|
+
// src/version.generated.ts
|
|
5
|
+
var VERSION = "1.0.0-alpha.100";
|
|
6
|
+
|
|
7
|
+
// src/lib/render/versions.ts
|
|
8
|
+
import { stampVersions, warnOnVersionSkew, versions } from "@fluixi/dom";
|
|
9
|
+
registerCoreVersion(VERSION);
|
|
10
|
+
export {
|
|
11
|
+
stampVersions,
|
|
12
|
+
versions,
|
|
13
|
+
warnOnVersionSkew
|
|
14
|
+
};
|
|
@@ -0,0 +1,228 @@
|
|
|
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/router/data.ts
|
|
21
|
+
var data_exports = {};
|
|
22
|
+
__export(data_exports, {
|
|
23
|
+
RouteDataContext: () => RouteDataContext,
|
|
24
|
+
RouteDataProvider: () => RouteDataProvider,
|
|
25
|
+
action: () => action,
|
|
26
|
+
cache: () => cache,
|
|
27
|
+
createAsync: () => createAsync,
|
|
28
|
+
onRevalidate: () => onRevalidate,
|
|
29
|
+
revalidate: () => revalidate,
|
|
30
|
+
useAction: () => useAction,
|
|
31
|
+
useRouteData: () => useRouteData,
|
|
32
|
+
useSubmission: () => useSubmission,
|
|
33
|
+
useSubmissions: () => useSubmissions
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(data_exports);
|
|
36
|
+
var import_signal2 = require("@fluixi/reactive/signal");
|
|
37
|
+
var import_signal3 = require("@fluixi/reactive/signal");
|
|
38
|
+
|
|
39
|
+
// src/lib/context/context.ts
|
|
40
|
+
var import_dom = require("@fluixi/dom");
|
|
41
|
+
var import_signal = require("@fluixi/reactive/signal");
|
|
42
|
+
function createContext(defaultValue, name) {
|
|
43
|
+
const context = (0, import_signal.createContext)(defaultValue, name);
|
|
44
|
+
const Provider = (props) => (
|
|
45
|
+
// Children stay a getter: the reactive Provider reads them after stamping the value on
|
|
46
|
+
// its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
|
|
47
|
+
// before the context exists.
|
|
48
|
+
context.Provider({
|
|
49
|
+
value: props.value,
|
|
50
|
+
get children() {
|
|
51
|
+
return props.children;
|
|
52
|
+
},
|
|
53
|
+
debug: props.debug
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
return {
|
|
57
|
+
id: context.id,
|
|
58
|
+
Provider: (0, import_dom.asProvider)(Provider),
|
|
59
|
+
defaultValue
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function useContext(context) {
|
|
63
|
+
const value = (0, import_signal.useContext)(context);
|
|
64
|
+
return value !== void 0 ? value : context.defaultValue;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// src/lib/router/data.ts
|
|
68
|
+
var revalidationListeners = /* @__PURE__ */ new Set();
|
|
69
|
+
function onRevalidate(listener) {
|
|
70
|
+
revalidationListeners.add(listener);
|
|
71
|
+
return () => void revalidationListeners.delete(listener);
|
|
72
|
+
}
|
|
73
|
+
var reloadMounted = () => {
|
|
74
|
+
for (const listener of [...revalidationListeners]) listener();
|
|
75
|
+
};
|
|
76
|
+
function cache(fn, name, options = {}) {
|
|
77
|
+
const { ttl = Infinity, staleWhileRevalidate = true } = options;
|
|
78
|
+
return (...args) => {
|
|
79
|
+
const store = options.cache ?? (0, import_signal3.currentResourceCache)();
|
|
80
|
+
const key = name + ":" + JSON.stringify(args);
|
|
81
|
+
const fetchFresh = () => {
|
|
82
|
+
const running = store.inflight.get(key);
|
|
83
|
+
if (running) return running;
|
|
84
|
+
const promise = Promise.resolve(fn(...args)).then(
|
|
85
|
+
(value) => {
|
|
86
|
+
store.set(key, { value, timestamp: Date.now() });
|
|
87
|
+
store.inflight.delete(key);
|
|
88
|
+
return value;
|
|
89
|
+
},
|
|
90
|
+
(error) => {
|
|
91
|
+
store.inflight.delete(key);
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
store.inflight.set(key, promise);
|
|
96
|
+
return promise;
|
|
97
|
+
};
|
|
98
|
+
const hit = store.get(key);
|
|
99
|
+
if (hit && (ttl === Infinity || Date.now() - hit.timestamp <= ttl)) return Promise.resolve(hit.value);
|
|
100
|
+
if (hit && staleWhileRevalidate) {
|
|
101
|
+
fetchFresh().then(reloadMounted, () => void 0);
|
|
102
|
+
return Promise.resolve(hit.value);
|
|
103
|
+
}
|
|
104
|
+
return fetchFresh();
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function revalidate(key, store) {
|
|
108
|
+
const names = typeof key === "string" ? [key] : Array.isArray(key) ? key : null;
|
|
109
|
+
drop(names ?? key, store ?? (0, import_signal3.currentResourceCache)());
|
|
110
|
+
if (names && !store) tellOtherTabs(names);
|
|
111
|
+
}
|
|
112
|
+
function drop(what, store) {
|
|
113
|
+
const matches = Array.isArray(what) ? (k) => what.some((n) => k === n || k.startsWith(n + ":")) : what;
|
|
114
|
+
for (const k of [...store.keys()]) if (matches(k)) store.delete(k);
|
|
115
|
+
reloadMounted();
|
|
116
|
+
}
|
|
117
|
+
var TABS_KEY = "fluixi:revalidate";
|
|
118
|
+
function tellOtherTabs(names) {
|
|
119
|
+
try {
|
|
120
|
+
localStorage.setItem(TABS_KEY, JSON.stringify({ names, at: Date.now() + Math.random() }));
|
|
121
|
+
} catch {
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (typeof window !== "undefined") {
|
|
125
|
+
window.addEventListener("storage", (event) => {
|
|
126
|
+
if (event.key !== TABS_KEY || !event.newValue) return;
|
|
127
|
+
try {
|
|
128
|
+
const names = JSON.parse(event.newValue).names;
|
|
129
|
+
if (Array.isArray(names) && names.every((n) => typeof n === "string")) drop(names, (0, import_signal3.currentResourceCache)());
|
|
130
|
+
} catch {
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
globalThis[/* @__PURE__ */ Symbol.for("fluixi.revalidate")] = (names) => revalidate(names);
|
|
135
|
+
function createAsync(fetcher, source) {
|
|
136
|
+
const [data] = (0, import_signal2.createResource)(source || (() => true), fetcher);
|
|
137
|
+
return data;
|
|
138
|
+
}
|
|
139
|
+
var submissionState = /* @__PURE__ */ new Map();
|
|
140
|
+
function getSubmissionSignal(url) {
|
|
141
|
+
if (!submissionState.has(url)) {
|
|
142
|
+
submissionState.set(
|
|
143
|
+
url,
|
|
144
|
+
(0, import_signal2.createSignal)(void 0)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
return submissionState.get(url);
|
|
148
|
+
}
|
|
149
|
+
var submissionsState = /* @__PURE__ */ new Map();
|
|
150
|
+
function getSubmissionsSignal(url) {
|
|
151
|
+
if (!submissionsState.has(url)) submissionsState.set(url, (0, import_signal2.createSignal)([]));
|
|
152
|
+
return submissionsState.get(url);
|
|
153
|
+
}
|
|
154
|
+
function action(fn, name, options = {}) {
|
|
155
|
+
const actionUrl = name || fn.name || "action";
|
|
156
|
+
const submit = async (...args) => {
|
|
157
|
+
const input = args.length > 1 ? args : args[0];
|
|
158
|
+
const [, setSubmission] = getSubmissionSignal(actionUrl);
|
|
159
|
+
const [, setSubmissions] = getSubmissionsSignal(actionUrl);
|
|
160
|
+
let entry;
|
|
161
|
+
const drop2 = () => setSubmissions((list) => list.filter((s) => s !== entry));
|
|
162
|
+
const settle = (next) => {
|
|
163
|
+
setSubmissions((list) => list.map((s) => s === entry ? next : s));
|
|
164
|
+
entry = next;
|
|
165
|
+
};
|
|
166
|
+
const clear = () => {
|
|
167
|
+
setSubmission(void 0);
|
|
168
|
+
drop2();
|
|
169
|
+
};
|
|
170
|
+
const retry = () => {
|
|
171
|
+
drop2();
|
|
172
|
+
return submit(...args);
|
|
173
|
+
};
|
|
174
|
+
entry = {
|
|
175
|
+
input,
|
|
176
|
+
pending: true,
|
|
177
|
+
clear,
|
|
178
|
+
retry
|
|
179
|
+
};
|
|
180
|
+
setSubmission(entry);
|
|
181
|
+
setSubmissions((list) => [...list, entry]);
|
|
182
|
+
try {
|
|
183
|
+
const result = await fn(...args);
|
|
184
|
+
setSubmission({
|
|
185
|
+
input,
|
|
186
|
+
result,
|
|
187
|
+
pending: false,
|
|
188
|
+
clear,
|
|
189
|
+
retry
|
|
190
|
+
});
|
|
191
|
+
drop2();
|
|
192
|
+
const stale = typeof options.invalidates === "function" ? options.invalidates(result) : options.invalidates;
|
|
193
|
+
for (const key of stale ?? []) revalidate(key);
|
|
194
|
+
return result;
|
|
195
|
+
} catch (error) {
|
|
196
|
+
const failed = {
|
|
197
|
+
input,
|
|
198
|
+
error,
|
|
199
|
+
pending: false,
|
|
200
|
+
clear,
|
|
201
|
+
retry
|
|
202
|
+
};
|
|
203
|
+
setSubmission(failed);
|
|
204
|
+
settle(failed);
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
submit.url = actionUrl;
|
|
209
|
+
submit.with = (args) => action((...a) => fn(args, ...a), name, options);
|
|
210
|
+
return submit;
|
|
211
|
+
}
|
|
212
|
+
function useSubmission(actionFn) {
|
|
213
|
+
const [submission] = getSubmissionSignal(actionFn.url);
|
|
214
|
+
return submission;
|
|
215
|
+
}
|
|
216
|
+
function useSubmissions(actionFn) {
|
|
217
|
+
const [submissions] = getSubmissionsSignal(actionFn.url);
|
|
218
|
+
return submissions;
|
|
219
|
+
}
|
|
220
|
+
function useAction(actionFn) {
|
|
221
|
+
return actionFn;
|
|
222
|
+
}
|
|
223
|
+
var RouteDataContext = createContext(void 0, "route-data");
|
|
224
|
+
var RouteDataProvider = RouteDataContext.Provider;
|
|
225
|
+
function useRouteData() {
|
|
226
|
+
const ctx = useContext(RouteDataContext);
|
|
227
|
+
return typeof ctx === "function" ? ctx : () => ctx;
|
|
228
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @fluixi/core/router/data
|
|
3
|
+
*/
|
|
4
|
+
import { type Accessor, Resource } from '@fluixi/reactive/signal';
|
|
5
|
+
import { type ResourceCache } from '@fluixi/reactive/signal';
|
|
6
|
+
export type CacheFn<T, Args extends any[]> = (...args: Args) => Promise<T> | T | undefined;
|
|
7
|
+
export interface Action<T, Args extends any[]> {
|
|
8
|
+
(...args: Args): Promise<T>;
|
|
9
|
+
url?: string;
|
|
10
|
+
with?: (args: any) => Action<T, Args>;
|
|
11
|
+
}
|
|
12
|
+
export interface Submission<T, Args extends any[]> {
|
|
13
|
+
input: Args;
|
|
14
|
+
result?: T;
|
|
15
|
+
error?: any;
|
|
16
|
+
pending: boolean;
|
|
17
|
+
clear: () => void;
|
|
18
|
+
retry: () => void;
|
|
19
|
+
}
|
|
20
|
+
export interface CacheOptions {
|
|
21
|
+
/** Milliseconds a value stays fresh. Default: until revalidated. */
|
|
22
|
+
ttl?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Once stale, return the old value at once and refresh in the background; the routes on
|
|
25
|
+
* screen then load again and pick up the new one. Default true.
|
|
26
|
+
*/
|
|
27
|
+
staleWhileRevalidate?: boolean;
|
|
28
|
+
/** Where entries live. Defaults to the request's cache on the server and the page's in a browser. */
|
|
29
|
+
cache?: ResourceCache;
|
|
30
|
+
}
|
|
31
|
+
/** @internal: the router registers each layer's refetch here. */
|
|
32
|
+
export declare function onRevalidate(listener: () => void): () => void;
|
|
33
|
+
/**
|
|
34
|
+
* A function whose results are kept by name and arguments: route data that should not be
|
|
35
|
+
* fetched again on every visit.
|
|
36
|
+
*
|
|
37
|
+
* Readers of the same key share one request in flight. Entries live in the request's cache on
|
|
38
|
+
* the server, so visitors never share one, and in the page's cache in a browser.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const organisations = cache(() => api.get('/api/v1/organizations'), 'orgs', { ttl: 30_000 });
|
|
43
|
+
* export const routeData = () => organisations();
|
|
44
|
+
* // after a change:
|
|
45
|
+
* revalidate('orgs');
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function cache<T, Args extends any[]>(fn: (...args: Args) => Promise<T> | T, name: string, options?: CacheOptions): (...args: Args) => Promise<T>;
|
|
49
|
+
/**
|
|
50
|
+
* Drops cached entries, by name (`'orgs'` matches every `orgs:` key), several names, or a
|
|
51
|
+
* predicate, then loads the data of the routes on screen again. What is still cached is
|
|
52
|
+
* served from the cache, so only the dropped entries are fetched.
|
|
53
|
+
*/
|
|
54
|
+
export declare function revalidate(key: string | string[] | ((key: string) => boolean), store?: ResourceCache): void;
|
|
55
|
+
/**
|
|
56
|
+
* Create an async resource from a promise or cache function
|
|
57
|
+
*/
|
|
58
|
+
export declare function createAsync<T, S extends any = true>(fetcher: (source: S) => Promise<T> | T, source?: () => S): Resource<S>;
|
|
59
|
+
/**
|
|
60
|
+
* Create a server action
|
|
61
|
+
*/
|
|
62
|
+
export interface ActionOptions<T> {
|
|
63
|
+
/**
|
|
64
|
+
* Cache names this action changes (`['orgs']`), or a function of its result that returns
|
|
65
|
+
* them. They are revalidated when it succeeds, so the routes on screen show the change.
|
|
66
|
+
*/
|
|
67
|
+
invalidates?: string[] | ((result: T) => string[]);
|
|
68
|
+
}
|
|
69
|
+
export declare function action<T, Args extends any[]>(fn: (...args: Args) => Promise<T> | T, name?: string, options?: ActionOptions<T>): Action<T, Args>;
|
|
70
|
+
/**
|
|
71
|
+
* Hook to track action submission state
|
|
72
|
+
*/
|
|
73
|
+
export declare function useSubmission<T, Args extends any[]>(actionFn: Action<T, Args>): Accessor<Submission<T, Args> | undefined>;
|
|
74
|
+
/**
|
|
75
|
+
* Every call of `actionFn` still in flight, and the ones that failed, oldest first. One entry
|
|
76
|
+
* per call, so concurrent calls do not overwrite each other. A call that succeeds leaves the
|
|
77
|
+
* list; one that fails stays with its `error` until `retry()` or `clear()`.
|
|
78
|
+
*
|
|
79
|
+
* The optimistic pattern: render the server's rows, then the pending entries mapped to the
|
|
80
|
+
* same shape. When a call succeeds its entry goes and the server row takes its place; when it
|
|
81
|
+
* fails it stops being pending, so it leaves the optimistic rows by itself.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```tsx
|
|
85
|
+
* const moves = useSubmissions(moveDeal);
|
|
86
|
+
* const rows = $memo(() => [
|
|
87
|
+
* ...deals(),
|
|
88
|
+
* ...moves().filter((s) => s.pending).map((s) => ({ ...s.input, pending: true })),
|
|
89
|
+
* ]);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function useSubmissions<T, Args extends any[]>(actionFn: Action<T, Args>): Accessor<Submission<T, Args>[]>;
|
|
93
|
+
/**
|
|
94
|
+
* Hook to get action executor
|
|
95
|
+
*/
|
|
96
|
+
export declare function useAction<T, Args extends any[]>(actionFn: Action<T, Args>): (...args: Args) => Promise<T>;
|
|
97
|
+
export interface RouteDataArgs {
|
|
98
|
+
/**
|
|
99
|
+
* Route params, either a reactive signal accessor (when called from the
|
|
100
|
+
* router's createRoot during layout creation) or a plain snapshot object
|
|
101
|
+
* (legacy / manual usage). Always normalise with:
|
|
102
|
+
* `const getParams = typeof args.params === 'function' ? args.params : () => args.params;`
|
|
103
|
+
*/
|
|
104
|
+
params: Record<string, string> | (() => Record<string, string>);
|
|
105
|
+
location: {
|
|
106
|
+
pathname: string;
|
|
107
|
+
search: string;
|
|
108
|
+
} | (() => {
|
|
109
|
+
pathname: string;
|
|
110
|
+
search: string;
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* What the route's `routeDeps` export returned when this load started: app-wide values the
|
|
114
|
+
* data depends on, such as the signed-in user. Key a `cache()` call by them.
|
|
115
|
+
*/
|
|
116
|
+
deps?: unknown;
|
|
117
|
+
}
|
|
118
|
+
export type RouteLoadFunc = (args: RouteDataArgs, owner?: any, isCancelled?: () => boolean) => any;
|
|
119
|
+
export declare const RouteDataContext: {
|
|
120
|
+
id: symbol;
|
|
121
|
+
Provider: (props: {
|
|
122
|
+
value: any;
|
|
123
|
+
children?: any;
|
|
124
|
+
debug?: boolean;
|
|
125
|
+
}) => any;
|
|
126
|
+
defaultValue: any;
|
|
127
|
+
};
|
|
128
|
+
export declare const RouteDataProvider: (props: {
|
|
129
|
+
value: any;
|
|
130
|
+
children?: any;
|
|
131
|
+
debug?: boolean;
|
|
132
|
+
}) => any;
|
|
133
|
+
/**
|
|
134
|
+
* Access the data returned by the nearest ancestor route's `routeData` export.
|
|
135
|
+
*
|
|
136
|
+
* Returns a stable accessor function. Call it to get the current route data:
|
|
137
|
+
*
|
|
138
|
+
* const data = useRouteData<WorkspaceRouteData>();
|
|
139
|
+
* createEffect(() => console.log(data()?.workspace()));
|
|
140
|
+
*/
|
|
141
|
+
export declare function useRouteData<T>(): () => T | undefined;
|
|
142
|
+
//# sourceMappingURL=data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../src/lib/router/data.ts"],"names":[],"mappings":"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"}
|