@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,332 @@
|
|
|
1
|
+
// src/lib/context/context.ts
|
|
2
|
+
import { asProvider } from "@fluixi/dom";
|
|
3
|
+
import {
|
|
4
|
+
createContext as createReactiveContext,
|
|
5
|
+
getOwner,
|
|
6
|
+
useContext as useReactiveContext
|
|
7
|
+
} from "@fluixi/reactive/signal";
|
|
8
|
+
function createContext(defaultValue, name) {
|
|
9
|
+
const context = createReactiveContext(defaultValue, name);
|
|
10
|
+
const Provider = (props) => (
|
|
11
|
+
// Children stay a getter: the reactive Provider reads them after stamping the value on
|
|
12
|
+
// its owner. Reading `props.children` here would render them, and any <Outlet/> in them,
|
|
13
|
+
// before the context exists.
|
|
14
|
+
context.Provider({
|
|
15
|
+
value: props.value,
|
|
16
|
+
get children() {
|
|
17
|
+
return props.children;
|
|
18
|
+
},
|
|
19
|
+
debug: props.debug
|
|
20
|
+
})
|
|
21
|
+
);
|
|
22
|
+
return {
|
|
23
|
+
id: context.id,
|
|
24
|
+
Provider: asProvider(Provider),
|
|
25
|
+
defaultValue
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function useContext(context) {
|
|
29
|
+
const value = useReactiveContext(context);
|
|
30
|
+
return value !== void 0 ? value : context.defaultValue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/lib/theme/color-scheme.ts
|
|
34
|
+
import { getActiveHead as getActiveHead2, useHead as useHead2 } from "@fluixi/head";
|
|
35
|
+
import { createEffect, createSignal as createSignal2, getOwner as getOwner3, onCleanup as onCleanup2 } from "@fluixi/reactive/signal";
|
|
36
|
+
|
|
37
|
+
// src/lib/env/index.ts
|
|
38
|
+
import { isServer } from "@fluixi/dom";
|
|
39
|
+
import { isServer as onServer } from "@fluixi/dom";
|
|
40
|
+
var env = {
|
|
41
|
+
get window() {
|
|
42
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
43
|
+
},
|
|
44
|
+
get document() {
|
|
45
|
+
return typeof document !== "undefined" ? document : void 0;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/lib/storage/persisted.ts
|
|
50
|
+
import { getOwner as getOwner2, onCleanup, signal, untrack } from "@fluixi/reactive/signal";
|
|
51
|
+
var isAsync = (storage) => "encryption" in storage;
|
|
52
|
+
function persisted(storage, key, options = {}) {
|
|
53
|
+
const fallback = options.fallback ?? null;
|
|
54
|
+
const name = options.name ?? `storage:${storage.keyPrefix}${key}`;
|
|
55
|
+
const state = signal(isAsync(storage) ? fallback : storage.get(key) ?? fallback, { name });
|
|
56
|
+
const put = (value) => state.set(() => value);
|
|
57
|
+
const resolve = (next) => typeof next === "function" ? next(untrack(state)) : next;
|
|
58
|
+
const writeOptions = (extra) => ({
|
|
59
|
+
...options.ttl !== void 0 ? { ttl: options.ttl } : {},
|
|
60
|
+
...options.encrypt ? { encrypt: true } : {},
|
|
61
|
+
...extra
|
|
62
|
+
});
|
|
63
|
+
if (!isAsync(storage)) {
|
|
64
|
+
const off2 = storage.subscribe(key, (event) => {
|
|
65
|
+
if (event.type !== "set") return put(fallback);
|
|
66
|
+
if (event.value !== void 0) put(event.value);
|
|
67
|
+
});
|
|
68
|
+
if (getOwner2()) onCleanup(off2);
|
|
69
|
+
return Object.assign(() => state(), {
|
|
70
|
+
set(next, extra) {
|
|
71
|
+
const value = resolve(next);
|
|
72
|
+
storage.set(key, value, writeOptions(extra));
|
|
73
|
+
put(value);
|
|
74
|
+
},
|
|
75
|
+
remove() {
|
|
76
|
+
storage.remove(key);
|
|
77
|
+
put(fallback);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
let written = false;
|
|
82
|
+
const reread = () => storage.get(key).then(
|
|
83
|
+
(value) => put(value ?? fallback),
|
|
84
|
+
() => void 0
|
|
85
|
+
);
|
|
86
|
+
const off = storage.subscribe(key, (event) => {
|
|
87
|
+
if (event.type !== "set") return put(fallback);
|
|
88
|
+
if (event.value !== void 0) put(event.value);
|
|
89
|
+
else void reread();
|
|
90
|
+
});
|
|
91
|
+
if (getOwner2()) onCleanup(off);
|
|
92
|
+
const ready = storage.get(key).then((value) => {
|
|
93
|
+
if (!written) put(value ?? fallback);
|
|
94
|
+
});
|
|
95
|
+
return Object.assign(() => state(), {
|
|
96
|
+
ready,
|
|
97
|
+
async set(next, extra) {
|
|
98
|
+
const previous = untrack(state);
|
|
99
|
+
const value = resolve(next);
|
|
100
|
+
written = true;
|
|
101
|
+
put(value);
|
|
102
|
+
try {
|
|
103
|
+
await storage.set(key, value, writeOptions(extra));
|
|
104
|
+
} catch (error) {
|
|
105
|
+
put(previous);
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
async remove() {
|
|
110
|
+
written = true;
|
|
111
|
+
await storage.remove(key);
|
|
112
|
+
put(fallback);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// src/lib/theme/index.ts
|
|
118
|
+
import { getActiveHead, useHead } from "@fluixi/head";
|
|
119
|
+
import { createSignal } from "@fluixi/reactive/signal";
|
|
120
|
+
import { StorageUnavailableError as StorageUnavailableError2 } from "@fluixi/storage";
|
|
121
|
+
|
|
122
|
+
// src/lib/storage/index.ts
|
|
123
|
+
import { appendResponseHeader, getRequestContext, getServerData } from "@fluixi/dom";
|
|
124
|
+
import { createContext as createContext2, useContext as useContext2 } from "@fluixi/reactive/signal";
|
|
125
|
+
import {
|
|
126
|
+
createAsyncStorage,
|
|
127
|
+
createSyncStorage,
|
|
128
|
+
memoryStorage,
|
|
129
|
+
StorageUnavailableError
|
|
130
|
+
} from "@fluixi/storage";
|
|
131
|
+
import { documentCookieAdapter, localStorageAdapter, sessionStorageAdapter } from "@fluixi/storage/browser";
|
|
132
|
+
import { cookieStorage, requestStorage, toStorageRequest } from "@fluixi/storage/server";
|
|
133
|
+
var StorageContext = createContext2(void 0, "storage");
|
|
134
|
+
var AsyncStorageContext = createContext2(void 0, "asyncStorage");
|
|
135
|
+
var isBrowser = () => typeof window !== "undefined" && typeof document !== "undefined";
|
|
136
|
+
var perRequest = /* @__PURE__ */ new WeakMap();
|
|
137
|
+
var perPage = /* @__PURE__ */ new Map();
|
|
138
|
+
function cached(scope, id, make) {
|
|
139
|
+
let adapter = scope.get(id);
|
|
140
|
+
if (!adapter) scope.set(id, adapter = make());
|
|
141
|
+
return adapter;
|
|
142
|
+
}
|
|
143
|
+
function requestRequired(scope) {
|
|
144
|
+
throw new StorageUnavailableError(
|
|
145
|
+
`useStorage({ scope: '${scope}' }) on the server needs a request: call it during a render, a loader or a server function, or provide a storage with <StorageProvider>.`
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
function adapterFor(scope, cookie = {}) {
|
|
149
|
+
const ctx = getRequestContext();
|
|
150
|
+
const options = { httpOnly: false, ...cookie };
|
|
151
|
+
switch (scope) {
|
|
152
|
+
case "local":
|
|
153
|
+
return localStorageAdapter();
|
|
154
|
+
case "session":
|
|
155
|
+
return sessionStorageAdapter();
|
|
156
|
+
case "request":
|
|
157
|
+
if (isBrowser()) return cached(perPage, "request", memoryStorage);
|
|
158
|
+
if (!ctx) requestRequired(scope);
|
|
159
|
+
return cached(perRequest.get(ctx) ?? perRequest.set(ctx, /* @__PURE__ */ new Map()).get(ctx), "request", requestStorage);
|
|
160
|
+
case "cookie": {
|
|
161
|
+
const id = `cookie:${JSON.stringify(options)}`;
|
|
162
|
+
if (isBrowser()) {
|
|
163
|
+
const { httpOnly: _ignored, ...browser } = options;
|
|
164
|
+
return cached(perPage, id, () => documentCookieAdapter(browser));
|
|
165
|
+
}
|
|
166
|
+
if (!ctx) requestRequired(scope);
|
|
167
|
+
const raw = ctx.event.request;
|
|
168
|
+
const target = raw && typeof raw === "object" ? raw : void 0;
|
|
169
|
+
return cached(
|
|
170
|
+
perRequest.get(ctx) ?? perRequest.set(ctx, /* @__PURE__ */ new Map()).get(ctx),
|
|
171
|
+
id,
|
|
172
|
+
() => cookieStorage({
|
|
173
|
+
...options,
|
|
174
|
+
request: raw && typeof raw === "object" && ("headers" in raw || "getHeader" in raw) ? toStorageRequest(raw) : void 0,
|
|
175
|
+
response: {
|
|
176
|
+
appendHeader(name, value) {
|
|
177
|
+
if (!appendResponseHeader(name, value, target)) {
|
|
178
|
+
throw new StorageUnavailableError("The response headers were already sent, so this cookie cannot reach the browser. Write it before the page head goes out: in middleware, a loader, a server function or the render before its first chunk.");
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
})
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function useStorage(options = {}) {
|
|
188
|
+
const { scope = "auto", cookie, ...storageOptions } = options;
|
|
189
|
+
if (scope === "auto") {
|
|
190
|
+
const provided = useContext2(StorageContext);
|
|
191
|
+
if (provided) return options.namespace ? provided.namespace(options.namespace) : provided;
|
|
192
|
+
}
|
|
193
|
+
return createSyncStorage({ ...storageOptions, adapter: resolveAdapter(scope, cookie) });
|
|
194
|
+
}
|
|
195
|
+
function resolveAdapter(scope, cookie) {
|
|
196
|
+
if (scope !== "auto") return adapterFor(scope, cookie);
|
|
197
|
+
if (isBrowser()) return adapterFor("local");
|
|
198
|
+
if (!getRequestContext()) requestRequired(scope);
|
|
199
|
+
return adapterFor("request");
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// src/lib/theme/index.ts
|
|
203
|
+
var YEAR = 60 * 60 * 24 * 365;
|
|
204
|
+
function defaultStorage() {
|
|
205
|
+
try {
|
|
206
|
+
return useStorage({ scope: "cookie", cookie: { maxAge: YEAR, sameSite: "lax" } });
|
|
207
|
+
} catch (error) {
|
|
208
|
+
if (error instanceof StorageUnavailableError2) return null;
|
|
209
|
+
throw error;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function storedLookup(storage, key) {
|
|
213
|
+
if (!storage) return null;
|
|
214
|
+
const full = storage.keyPrefix + key;
|
|
215
|
+
if (storage.scope === "cookie") {
|
|
216
|
+
return { from: "cookie", name: encodeURIComponent(full).replace(/[()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`) };
|
|
217
|
+
}
|
|
218
|
+
if (storage.scope === "local") return { from: "local", name: full };
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// src/lib/theme/color-scheme.ts
|
|
223
|
+
var CHOICES = ["system", "light", "dark"];
|
|
224
|
+
var DARK = "(prefers-color-scheme: dark)";
|
|
225
|
+
function createColorScheme(options = {}) {
|
|
226
|
+
const storageKey = options.storageKey ?? "color-scheme";
|
|
227
|
+
const attribute = options.attribute ?? "data-theme";
|
|
228
|
+
const systemAs = options.systemAs ?? "resolved";
|
|
229
|
+
const storage = options.storage === void 0 ? defaultStorage() : options.storage;
|
|
230
|
+
const saved = storage ? persisted(storage, storageKey) : null;
|
|
231
|
+
const [unsaved, setUnsaved] = createSignal2(null);
|
|
232
|
+
const value = () => {
|
|
233
|
+
const local = unsaved();
|
|
234
|
+
if (local) return local;
|
|
235
|
+
const stored = saved?.();
|
|
236
|
+
return CHOICES.includes(stored) ? stored : "system";
|
|
237
|
+
};
|
|
238
|
+
const media = env.window?.matchMedia?.(DARK);
|
|
239
|
+
const [osDark, setOsDark] = createSignal2(media?.matches ?? false);
|
|
240
|
+
if (media) {
|
|
241
|
+
const onChange = () => setOsDark(media.matches);
|
|
242
|
+
media.addEventListener?.("change", onChange);
|
|
243
|
+
if (getOwner3()) onCleanup2(() => media.removeEventListener?.("change", onChange));
|
|
244
|
+
}
|
|
245
|
+
const resolved = () => {
|
|
246
|
+
const choice = value();
|
|
247
|
+
return choice === "system" ? osDark() ? "dark" : "light" : choice;
|
|
248
|
+
};
|
|
249
|
+
const shown = () => systemAs === "system" && value() === "system" ? "system" : resolved();
|
|
250
|
+
const apply = () => {
|
|
251
|
+
env.document?.documentElement.setAttribute(attribute, shown());
|
|
252
|
+
};
|
|
253
|
+
const set = (choice) => {
|
|
254
|
+
if (!CHOICES.includes(choice)) return;
|
|
255
|
+
if (!saved) setUnsaved(choice);
|
|
256
|
+
else {
|
|
257
|
+
try {
|
|
258
|
+
saved.set(choice);
|
|
259
|
+
setUnsaved(null);
|
|
260
|
+
} catch {
|
|
261
|
+
setUnsaved(choice);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
apply();
|
|
265
|
+
options.onChange?.(choice);
|
|
266
|
+
};
|
|
267
|
+
const scriptBody = () => {
|
|
268
|
+
const cfg = JSON.stringify({ s: storedLookup(storage, storageKey), a: attribute, sys: systemAs === "system", tc: options.themeColor ?? null, cs: options.colorSchemeMeta !== false }).replace(/</g, "\\u003c");
|
|
269
|
+
return `(function(){try{var c=${cfg},t=null,s=c.s,r=null;if(s&&s.from==='local')r=localStorage.getItem(s.name);if(s&&s.from==='cookie')document.cookie.split('; ').forEach(function(p){var i=p.indexOf('=');if(p.slice(0,i)===s.name)r=decodeURIComponent(p.slice(i+1));});if(r){var e=JSON.parse(r);t=e&&e.v===1?e.value:e;}var chosen=t==='light'||t==='dark'?t:null;if(!chosen)t=c.sys?'system':(matchMedia('${DARK}').matches?'dark':'light');document.documentElement.setAttribute(c.a,t);if(chosen&&c.tc)document.querySelectorAll('meta[name="theme-color"]').forEach(function(m){m.setAttribute('content',c.tc[chosen]);m.removeAttribute('media');});if(chosen&&c.cs){var m=document.querySelector('meta[name="color-scheme"]');if(m)m.setAttribute('content',chosen);}}catch(e){}})();`;
|
|
270
|
+
};
|
|
271
|
+
if (getActiveHead2()) {
|
|
272
|
+
const colors = options.themeColor;
|
|
273
|
+
useHead2({
|
|
274
|
+
htmlAttrs: { [attribute]: shown },
|
|
275
|
+
...colors ? {
|
|
276
|
+
themeColor: () => value() === "system" ? [
|
|
277
|
+
{ color: colors.light, media: "(prefers-color-scheme: light)" },
|
|
278
|
+
{ color: colors.dark, media: DARK }
|
|
279
|
+
] : colors[resolved()]
|
|
280
|
+
} : {},
|
|
281
|
+
...options.colorSchemeMeta === false ? {} : { colorScheme: () => value() === "system" ? "light dark" : resolved() },
|
|
282
|
+
...options.script === false ? {} : { script: [{ children: scriptBody() }] }
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
if (env.document && getOwner3()) createEffect(apply);
|
|
286
|
+
return {
|
|
287
|
+
value,
|
|
288
|
+
resolved,
|
|
289
|
+
set,
|
|
290
|
+
toggle: () => set(resolved() === "dark" ? "light" : "dark"),
|
|
291
|
+
init: apply,
|
|
292
|
+
headScript: () => `<script>${scriptBody()}<\/script>`
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// src/lib/theme/provider.ts
|
|
297
|
+
var ThemesContext = createContext(void 0, "themes");
|
|
298
|
+
function ThemeProvider(props) {
|
|
299
|
+
const outer = useContext(ThemesContext);
|
|
300
|
+
return ThemesContext.Provider({
|
|
301
|
+
// A nested provider adds to the axes above it rather than hiding them.
|
|
302
|
+
value: outer ? { ...outer, ...props.themes } : props.themes,
|
|
303
|
+
get children() {
|
|
304
|
+
return props.children;
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
function useTheme(name) {
|
|
309
|
+
const themes = useContext(ThemesContext);
|
|
310
|
+
if (!themes || !(name in themes)) {
|
|
311
|
+
throw new Error(`[fluixi] No theme named "${name}" above this component: provide it with <ThemeProvider> or <ColorSchemeProvider>.`);
|
|
312
|
+
}
|
|
313
|
+
return themes[name];
|
|
314
|
+
}
|
|
315
|
+
function ColorSchemeProvider(props) {
|
|
316
|
+
const scheme = createColorScheme(props);
|
|
317
|
+
return ThemeProvider({
|
|
318
|
+
themes: { scheme },
|
|
319
|
+
get children() {
|
|
320
|
+
return props.children;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
function useColorScheme() {
|
|
325
|
+
return useTheme("scheme");
|
|
326
|
+
}
|
|
327
|
+
export {
|
|
328
|
+
ColorSchemeProvider,
|
|
329
|
+
ThemeProvider,
|
|
330
|
+
useColorScheme,
|
|
331
|
+
useTheme
|
|
332
|
+
};
|
|
@@ -0,0 +1,209 @@
|
|
|
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/utils/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
camelCase: () => camelCase,
|
|
24
|
+
capitalize: () => capitalize,
|
|
25
|
+
clamp: () => clamp,
|
|
26
|
+
debounce: () => debounce,
|
|
27
|
+
deepClone: () => deepClone,
|
|
28
|
+
deepMerge: () => deepMerge,
|
|
29
|
+
formatBytes: () => formatBytes,
|
|
30
|
+
formatNumber: () => formatNumber,
|
|
31
|
+
groupBy: () => groupBy,
|
|
32
|
+
isDefined: () => isDefined,
|
|
33
|
+
isEmpty: () => isEmpty,
|
|
34
|
+
kebabCase: () => kebabCase,
|
|
35
|
+
memoize: () => memoize,
|
|
36
|
+
omit: () => omit,
|
|
37
|
+
pick: () => pick,
|
|
38
|
+
pipe: () => pipe,
|
|
39
|
+
random: () => random,
|
|
40
|
+
range: () => range,
|
|
41
|
+
retry: () => retry,
|
|
42
|
+
sleep: () => sleep,
|
|
43
|
+
throttle: () => throttle,
|
|
44
|
+
uniqueId: () => uniqueId
|
|
45
|
+
});
|
|
46
|
+
module.exports = __toCommonJS(index_exports);
|
|
47
|
+
function debounce(fn, delay) {
|
|
48
|
+
let timeoutId;
|
|
49
|
+
return (...args) => {
|
|
50
|
+
clearTimeout(timeoutId);
|
|
51
|
+
timeoutId = setTimeout(() => fn(...args), delay);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function throttle(fn, limit) {
|
|
55
|
+
let inThrottle;
|
|
56
|
+
return (...args) => {
|
|
57
|
+
if (!inThrottle) {
|
|
58
|
+
fn(...args);
|
|
59
|
+
inThrottle = true;
|
|
60
|
+
setTimeout(() => inThrottle = false, limit);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function memoize(fn) {
|
|
65
|
+
const cache = /* @__PURE__ */ new Map();
|
|
66
|
+
return ((...args) => {
|
|
67
|
+
const key = JSON.stringify(args);
|
|
68
|
+
if (cache.has(key)) {
|
|
69
|
+
return cache.get(key);
|
|
70
|
+
}
|
|
71
|
+
const result = fn(...args);
|
|
72
|
+
cache.set(key, result);
|
|
73
|
+
return result;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function deepClone(obj) {
|
|
77
|
+
if (obj === null || typeof obj !== "object") {
|
|
78
|
+
return obj;
|
|
79
|
+
}
|
|
80
|
+
if (obj instanceof Date) {
|
|
81
|
+
return new Date(obj.getTime());
|
|
82
|
+
}
|
|
83
|
+
if (obj instanceof Array) {
|
|
84
|
+
return Array.from(obj).map((item) => deepClone(item));
|
|
85
|
+
}
|
|
86
|
+
if (obj instanceof Set) {
|
|
87
|
+
return new Set(Array.from(obj).map((item) => deepClone(item)));
|
|
88
|
+
}
|
|
89
|
+
if (obj instanceof Map) {
|
|
90
|
+
return new Map(
|
|
91
|
+
Array.from(obj.entries()).map(([key, value]) => [
|
|
92
|
+
deepClone(key),
|
|
93
|
+
deepClone(value)
|
|
94
|
+
])
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
const clonedObj = {};
|
|
98
|
+
for (const key in obj) {
|
|
99
|
+
if (obj.hasOwnProperty(key)) {
|
|
100
|
+
clonedObj[key] = deepClone(obj[key]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return clonedObj;
|
|
104
|
+
}
|
|
105
|
+
function deepMerge(...objects) {
|
|
106
|
+
const result = {};
|
|
107
|
+
for (const obj of objects) {
|
|
108
|
+
for (const key in obj) {
|
|
109
|
+
if (obj.hasOwnProperty(key)) {
|
|
110
|
+
const value = obj[key];
|
|
111
|
+
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
112
|
+
result[key] = deepMerge(
|
|
113
|
+
result[key] || {},
|
|
114
|
+
value
|
|
115
|
+
);
|
|
116
|
+
} else {
|
|
117
|
+
result[key] = value;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
function uniqueId(prefix = "") {
|
|
125
|
+
return prefix + Math.random().toString(36).substr(2, 9);
|
|
126
|
+
}
|
|
127
|
+
function formatNumber(num) {
|
|
128
|
+
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
129
|
+
}
|
|
130
|
+
function formatBytes(bytes, decimals = 2) {
|
|
131
|
+
if (bytes === 0) return "0 Bytes";
|
|
132
|
+
const k = 1024;
|
|
133
|
+
const dm = decimals < 0 ? 0 : decimals;
|
|
134
|
+
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB"];
|
|
135
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
136
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
|
137
|
+
}
|
|
138
|
+
function capitalize(str) {
|
|
139
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
140
|
+
}
|
|
141
|
+
function kebabCase(str) {
|
|
142
|
+
return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
|
|
143
|
+
}
|
|
144
|
+
function camelCase(str) {
|
|
145
|
+
return str.replace(/[-_\s](.)/g, (_, char) => char.toUpperCase());
|
|
146
|
+
}
|
|
147
|
+
function clamp(value, min, max) {
|
|
148
|
+
return Math.min(Math.max(value, min), max);
|
|
149
|
+
}
|
|
150
|
+
function random(min, max) {
|
|
151
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
152
|
+
}
|
|
153
|
+
function isEmpty(value) {
|
|
154
|
+
if (value === null || value === void 0) return true;
|
|
155
|
+
if (typeof value === "string") return value.trim().length === 0;
|
|
156
|
+
if (Array.isArray(value)) return value.length === 0;
|
|
157
|
+
if (typeof value === "object") return Object.keys(value).length === 0;
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
function pick(obj, ...keys) {
|
|
161
|
+
const result = {};
|
|
162
|
+
keys.forEach((key) => {
|
|
163
|
+
if (key in obj) {
|
|
164
|
+
result[key] = obj[key];
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
function omit(obj, ...keys) {
|
|
170
|
+
const result = { ...obj };
|
|
171
|
+
keys.forEach((key) => {
|
|
172
|
+
delete result[key];
|
|
173
|
+
});
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
function groupBy(array, fn) {
|
|
177
|
+
return array.reduce((acc, item) => {
|
|
178
|
+
const key = fn(item);
|
|
179
|
+
const group = acc.get(key) || [];
|
|
180
|
+
group.push(item);
|
|
181
|
+
acc.set(key, group);
|
|
182
|
+
return acc;
|
|
183
|
+
}, /* @__PURE__ */ new Map());
|
|
184
|
+
}
|
|
185
|
+
function range(start, end, step = 1) {
|
|
186
|
+
const result = [];
|
|
187
|
+
for (let i = start; i <= end; i += step) {
|
|
188
|
+
result.push(i);
|
|
189
|
+
}
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
async function retry(fn, retries = 3, delay = 1e3) {
|
|
193
|
+
try {
|
|
194
|
+
return await fn();
|
|
195
|
+
} catch (error) {
|
|
196
|
+
if (retries <= 0) throw error;
|
|
197
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
198
|
+
return retry(fn, retries - 1, delay);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function sleep(ms) {
|
|
202
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
203
|
+
}
|
|
204
|
+
function isDefined(value) {
|
|
205
|
+
return value !== null && value !== void 0;
|
|
206
|
+
}
|
|
207
|
+
function pipe(...fns) {
|
|
208
|
+
return (arg) => fns.reduce((acc, fn) => fn(acc), arg);
|
|
209
|
+
}
|