@clusterenvision/ui-framework 1.0.0 → 1.0.2
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/dist/browser.cjs +10 -10
- package/dist/browser.js +4 -4
- package/dist/{chunk-T6T7QE4J.js → chunk-AA4GATSB.js} +3 -3
- package/dist/{chunk-T6T7QE4J.js.map → chunk-AA4GATSB.js.map} +1 -1
- package/dist/{chunk-V6JCOBGY.js → chunk-BXQFX2PS.js} +3 -3
- package/dist/{chunk-V6JCOBGY.js.map → chunk-BXQFX2PS.js.map} +1 -1
- package/dist/{chunk-CXTAUXLG.cjs → chunk-FLUSP6VF.cjs} +4 -4
- package/dist/{chunk-CXTAUXLG.cjs.map → chunk-FLUSP6VF.cjs.map} +1 -1
- package/dist/{chunk-Q3KH6HMU.js → chunk-LSWEXTKL.js} +9 -5
- package/dist/chunk-LSWEXTKL.js.map +1 -0
- package/dist/{chunk-PVZVFICK.cjs → chunk-NCXUQXAN.cjs} +9 -5
- package/dist/chunk-NCXUQXAN.cjs.map +1 -0
- package/dist/{chunk-6BYWFGQY.cjs → chunk-SZL56BNL.cjs} +4 -4
- package/dist/{chunk-6BYWFGQY.cjs.map → chunk-SZL56BNL.cjs.map} +1 -1
- package/dist/{chunk-CHLDE4JQ.js → chunk-VQDM5HCG.js} +3 -3
- package/dist/{chunk-CHLDE4JQ.js.map → chunk-VQDM5HCG.js.map} +1 -1
- package/dist/{chunk-W3LNNY3U.cjs → chunk-W5M7JGC4.cjs} +4 -4
- package/dist/{chunk-W3LNNY3U.cjs.map → chunk-W5M7JGC4.cjs.map} +1 -1
- package/dist/cli/index.cjs +1 -1
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +21 -21
- package/dist/index.js +5 -5
- package/dist/lib/index.cjs +15 -15
- package/dist/lib/index.cjs.map +1 -1
- package/dist/lib/index.d.cts +4 -4
- package/dist/lib/index.d.ts +4 -4
- package/dist/lib/index.js +3 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/theme.cjs +13 -13
- package/dist/lib/theme.js +1 -1
- package/dist/runtime/adapters/react.cjs.map +1 -1
- package/dist/runtime/adapters/react.js.map +1 -1
- package/dist/runtime/components/ai-assistant.cjs +4 -4
- package/dist/runtime/components/ai-assistant.js +3 -3
- package/dist/runtime/components/ai-summary-card.cjs +4 -4
- package/dist/runtime/components/ai-summary-card.js +3 -3
- package/dist/runtime/router.cjs.map +1 -1
- package/dist/runtime/router.js.map +1 -1
- package/package.json +2 -7
- package/dist/chunk-PVZVFICK.cjs.map +0 -1
- package/dist/chunk-Q3KH6HMU.js.map +0 -1
package/dist/lib/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkSZQNIMYI_cjs = require('../chunk-SZQNIMYI.cjs');
|
|
4
4
|
var chunkR6XQUMWT_cjs = require('../chunk-R6XQUMWT.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkNCXUQXAN_cjs = require('../chunk-NCXUQXAN.cjs');
|
|
6
6
|
|
|
7
7
|
// src/lib/deprecations.ts
|
|
8
8
|
var seen = /* @__PURE__ */ new Set();
|
|
@@ -12,7 +12,7 @@ function shouldWarnOnce(key) {
|
|
|
12
12
|
return true;
|
|
13
13
|
}
|
|
14
14
|
function isProdEnv() {
|
|
15
|
-
return typeof process !== "undefined" && process.env
|
|
15
|
+
return typeof process !== "undefined" && process.env.NODE_ENV === "production";
|
|
16
16
|
}
|
|
17
17
|
function warnDeprecated(options) {
|
|
18
18
|
if (isProdEnv()) return;
|
|
@@ -42,7 +42,7 @@ function createDeprecationLogger(packageName) {
|
|
|
42
42
|
|
|
43
43
|
// src/lib/versioning.ts
|
|
44
44
|
function parseSemver(input) {
|
|
45
|
-
const match =
|
|
45
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)(?:-([\w.-]+))?$/.exec(input.trim());
|
|
46
46
|
if (!match) return null;
|
|
47
47
|
return {
|
|
48
48
|
major: Number(match[1]),
|
|
@@ -191,51 +191,51 @@ Object.defineProperty(exports, "iconHtml", {
|
|
|
191
191
|
});
|
|
192
192
|
Object.defineProperty(exports, "applyTheme", {
|
|
193
193
|
enumerable: true,
|
|
194
|
-
get: function () { return
|
|
194
|
+
get: function () { return chunkNCXUQXAN_cjs.applyTheme; }
|
|
195
195
|
});
|
|
196
196
|
Object.defineProperty(exports, "applyThemeState", {
|
|
197
197
|
enumerable: true,
|
|
198
|
-
get: function () { return
|
|
198
|
+
get: function () { return chunkNCXUQXAN_cjs.applyThemeState; }
|
|
199
199
|
});
|
|
200
200
|
Object.defineProperty(exports, "getInitialTheme", {
|
|
201
201
|
enumerable: true,
|
|
202
|
-
get: function () { return
|
|
202
|
+
get: function () { return chunkNCXUQXAN_cjs.getInitialTheme; }
|
|
203
203
|
});
|
|
204
204
|
Object.defineProperty(exports, "getStoredThemeState", {
|
|
205
205
|
enumerable: true,
|
|
206
|
-
get: function () { return
|
|
206
|
+
get: function () { return chunkNCXUQXAN_cjs.getStoredThemeState; }
|
|
207
207
|
});
|
|
208
208
|
Object.defineProperty(exports, "hydrateThemeState", {
|
|
209
209
|
enumerable: true,
|
|
210
|
-
get: function () { return
|
|
210
|
+
get: function () { return chunkNCXUQXAN_cjs.hydrateThemeState; }
|
|
211
211
|
});
|
|
212
212
|
Object.defineProperty(exports, "onThemeUpdate", {
|
|
213
213
|
enumerable: true,
|
|
214
|
-
get: function () { return
|
|
214
|
+
get: function () { return chunkNCXUQXAN_cjs.onThemeUpdate; }
|
|
215
215
|
});
|
|
216
216
|
Object.defineProperty(exports, "registerThemeAwareComponent", {
|
|
217
217
|
enumerable: true,
|
|
218
|
-
get: function () { return
|
|
218
|
+
get: function () { return chunkNCXUQXAN_cjs.registerThemeAwareComponent; }
|
|
219
219
|
});
|
|
220
220
|
Object.defineProperty(exports, "setDensity", {
|
|
221
221
|
enumerable: true,
|
|
222
|
-
get: function () { return
|
|
222
|
+
get: function () { return chunkNCXUQXAN_cjs.setDensity; }
|
|
223
223
|
});
|
|
224
224
|
Object.defineProperty(exports, "setFontScale", {
|
|
225
225
|
enumerable: true,
|
|
226
|
-
get: function () { return
|
|
226
|
+
get: function () { return chunkNCXUQXAN_cjs.setFontScale; }
|
|
227
227
|
});
|
|
228
228
|
Object.defineProperty(exports, "setRadius", {
|
|
229
229
|
enumerable: true,
|
|
230
|
-
get: function () { return
|
|
230
|
+
get: function () { return chunkNCXUQXAN_cjs.setRadius; }
|
|
231
231
|
});
|
|
232
232
|
Object.defineProperty(exports, "setTheme", {
|
|
233
233
|
enumerable: true,
|
|
234
|
-
get: function () { return
|
|
234
|
+
get: function () { return chunkNCXUQXAN_cjs.setTheme; }
|
|
235
235
|
});
|
|
236
236
|
Object.defineProperty(exports, "withThemeTransitionGuard", {
|
|
237
237
|
enumerable: true,
|
|
238
|
-
get: function () { return
|
|
238
|
+
get: function () { return chunkNCXUQXAN_cjs.withThemeTransitionGuard; }
|
|
239
239
|
});
|
|
240
240
|
exports.assertMinVersion = assertMinVersion;
|
|
241
241
|
exports.compareVersions = compareVersions;
|
package/dist/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/deprecations.ts","../../src/lib/versioning.ts"],"names":[],"mappings":";;;;;;;AAUA,IAAM,IAAA,uBAAW,GAAA,EAAY;AAE7B,SAAS,eAAe,GAAA,EAAsB;AAC5C,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG,OAAO,KAAA;AAC1B,EAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,SAAA,GAAqB;AAC5B,EAAA,OAAO,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,
|
|
1
|
+
{"version":3,"sources":["../../src/lib/deprecations.ts","../../src/lib/versioning.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["interface DeprecationOptions {\n packageName: string;\n name: string;\n since: string;\n removedIn?: string;\n alternative?: string;\n details?: string;\n onceKey?: string;\n}\n\nconst seen = new Set<string>();\n\nfunction shouldWarnOnce(key: string): boolean {\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n}\n\nfunction isProdEnv(): boolean {\n return typeof process !== \"undefined\" && process.env.NODE_ENV === \"production\";\n}\n\nexport function warnDeprecated(options: DeprecationOptions): void {\n if (isProdEnv()) return;\n\n const key = options.onceKey ?? `${options.packageName}:${options.name}`;\n if (!shouldWarnOnce(key)) return;\n\n const parts = [\n `[deprecation] ${options.packageName}: ${options.name} is deprecated since ${options.since}.`,\n ];\n if (options.removedIn) {\n parts.push(`Removal target: ${options.removedIn}.`);\n }\n if (options.alternative) {\n parts.push(`Use ${options.alternative} instead.`);\n }\n if (options.details) {\n parts.push(options.details);\n }\n if (typeof console !== \"undefined\") {\n console.warn(parts.join(\" \"));\n }\n}\n\nexport function createDeprecationLogger(packageName: string) {\n return (name: string, options: Omit<DeprecationOptions, \"packageName\" | \"name\">): void => {\n warnDeprecated({ packageName, name, ...options });\n };\n}\n","export interface Semver {\n major: number;\n minor: number;\n patch: number;\n prerelease?: string;\n}\n\nexport function parseSemver(input: string): Semver | null {\n const match = /^v?(\\d+)\\.(\\d+)\\.(\\d+)(?:-([\\w.-]+))?$/.exec(input.trim());\n if (!match) return null;\n return {\n major: Number(match[1]),\n minor: Number(match[2]),\n patch: Number(match[3]),\n prerelease: match[4],\n };\n}\n\nexport function compareVersions(a: string, b: string): number {\n const aParsed = parseSemver(a);\n const bParsed = parseSemver(b);\n if (!aParsed || !bParsed) {\n return a.localeCompare(b);\n }\n if (aParsed.major !== bParsed.major) {\n return aParsed.major < bParsed.major ? -1 : 1;\n }\n if (aParsed.minor !== bParsed.minor) {\n return aParsed.minor < bParsed.minor ? -1 : 1;\n }\n if (aParsed.patch !== bParsed.patch) {\n return aParsed.patch < bParsed.patch ? -1 : 1;\n }\n if (aParsed.prerelease && !bParsed.prerelease) return -1;\n if (!aParsed.prerelease && bParsed.prerelease) return 1;\n if (aParsed.prerelease && bParsed.prerelease) {\n return aParsed.prerelease.localeCompare(bParsed.prerelease);\n }\n return 0;\n}\n\nexport function isAtLeast(version: string, minimum: string): boolean {\n return compareVersions(version, minimum) >= 0;\n}\n\nexport function assertMinVersion(\n packageName: string,\n current: string,\n minimum: string,\n options: { warnOnly?: boolean } = {},\n): boolean {\n const ok = isAtLeast(current, minimum);\n if (!ok) {\n const message = `[version] ${packageName} requires >= ${minimum} (detected ${current}).`;\n if (options.warnOnly && typeof console !== \"undefined\") {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n }\n return ok;\n}\n"]}
|
package/dist/lib/index.d.cts
CHANGED
|
@@ -2,7 +2,7 @@ export { $, $$, $id, CreateElementOptions, DOMElement, DelegateHandler, ElementI
|
|
|
2
2
|
export { ICONS, IconOptions, icon, iconHtml } from './icons.cjs';
|
|
3
3
|
export { DensityMode, FontScale, RadiusMode, ThemeMode, ThemeState, applyTheme, applyThemeState, getInitialTheme, getStoredThemeState, hydrateThemeState, onThemeUpdate, registerThemeAwareComponent, setDensity, setFontScale, setRadius, setTheme, withThemeTransitionGuard } from './theme.cjs';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
interface DeprecationOptions {
|
|
6
6
|
packageName: string;
|
|
7
7
|
name: string;
|
|
8
8
|
since: string;
|
|
@@ -10,16 +10,16 @@ type DeprecationOptions = {
|
|
|
10
10
|
alternative?: string;
|
|
11
11
|
details?: string;
|
|
12
12
|
onceKey?: string;
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
declare function warnDeprecated(options: DeprecationOptions): void;
|
|
15
15
|
declare function createDeprecationLogger(packageName: string): (name: string, options: Omit<DeprecationOptions, "packageName" | "name">) => void;
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
interface Semver {
|
|
18
18
|
major: number;
|
|
19
19
|
minor: number;
|
|
20
20
|
patch: number;
|
|
21
21
|
prerelease?: string;
|
|
22
|
-
}
|
|
22
|
+
}
|
|
23
23
|
declare function parseSemver(input: string): Semver | null;
|
|
24
24
|
declare function compareVersions(a: string, b: string): number;
|
|
25
25
|
declare function isAtLeast(version: string, minimum: string): boolean;
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { $, $$, $id, CreateElementOptions, DOMElement, DelegateHandler, ElementI
|
|
|
2
2
|
export { ICONS, IconOptions, icon, iconHtml } from './icons.js';
|
|
3
3
|
export { DensityMode, FontScale, RadiusMode, ThemeMode, ThemeState, applyTheme, applyThemeState, getInitialTheme, getStoredThemeState, hydrateThemeState, onThemeUpdate, registerThemeAwareComponent, setDensity, setFontScale, setRadius, setTheme, withThemeTransitionGuard } from './theme.js';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
interface DeprecationOptions {
|
|
6
6
|
packageName: string;
|
|
7
7
|
name: string;
|
|
8
8
|
since: string;
|
|
@@ -10,16 +10,16 @@ type DeprecationOptions = {
|
|
|
10
10
|
alternative?: string;
|
|
11
11
|
details?: string;
|
|
12
12
|
onceKey?: string;
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
declare function warnDeprecated(options: DeprecationOptions): void;
|
|
15
15
|
declare function createDeprecationLogger(packageName: string): (name: string, options: Omit<DeprecationOptions, "packageName" | "name">) => void;
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
interface Semver {
|
|
18
18
|
major: number;
|
|
19
19
|
minor: number;
|
|
20
20
|
patch: number;
|
|
21
21
|
prerelease?: string;
|
|
22
|
-
}
|
|
22
|
+
}
|
|
23
23
|
declare function parseSemver(input: string): Semver | null;
|
|
24
24
|
declare function compareVersions(a: string, b: string): number;
|
|
25
25
|
declare function isAtLeast(version: string, minimum: string): boolean;
|
package/dist/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { $, $$, $id, animate, clone, create, debounce, delegate, elementData, fadeIn, fadeOut, fragment, getFormValues, matches, onVisible, ready, serializeForm, setDebugMode, slideDown, slideUp, throttle, waitForElement } from '../chunk-22HQL2Y4.js';
|
|
2
2
|
export { ICONS, icon, iconHtml } from '../chunk-7SCIB5HP.js';
|
|
3
|
-
export { applyTheme, applyThemeState, getInitialTheme, getStoredThemeState, hydrateThemeState, onThemeUpdate, registerThemeAwareComponent, setDensity, setFontScale, setRadius, setTheme, withThemeTransitionGuard } from '../chunk-
|
|
3
|
+
export { applyTheme, applyThemeState, getInitialTheme, getStoredThemeState, hydrateThemeState, onThemeUpdate, registerThemeAwareComponent, setDensity, setFontScale, setRadius, setTheme, withThemeTransitionGuard } from '../chunk-LSWEXTKL.js';
|
|
4
4
|
|
|
5
5
|
// src/lib/deprecations.ts
|
|
6
6
|
var seen = /* @__PURE__ */ new Set();
|
|
@@ -10,7 +10,7 @@ function shouldWarnOnce(key) {
|
|
|
10
10
|
return true;
|
|
11
11
|
}
|
|
12
12
|
function isProdEnv() {
|
|
13
|
-
return typeof process !== "undefined" && process.env
|
|
13
|
+
return typeof process !== "undefined" && process.env.NODE_ENV === "production";
|
|
14
14
|
}
|
|
15
15
|
function warnDeprecated(options) {
|
|
16
16
|
if (isProdEnv()) return;
|
|
@@ -40,7 +40,7 @@ function createDeprecationLogger(packageName) {
|
|
|
40
40
|
|
|
41
41
|
// src/lib/versioning.ts
|
|
42
42
|
function parseSemver(input) {
|
|
43
|
-
const match =
|
|
43
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)(?:-([\w.-]+))?$/.exec(input.trim());
|
|
44
44
|
if (!match) return null;
|
|
45
45
|
return {
|
|
46
46
|
major: Number(match[1]),
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/deprecations.ts","../../src/lib/versioning.ts"],"names":[],"mappings":";;;;;AAUA,IAAM,IAAA,uBAAW,GAAA,EAAY;AAE7B,SAAS,eAAe,GAAA,EAAsB;AAC5C,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG,OAAO,KAAA;AAC1B,EAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,SAAA,GAAqB;AAC5B,EAAA,OAAO,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,
|
|
1
|
+
{"version":3,"sources":["../../src/lib/deprecations.ts","../../src/lib/versioning.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["interface DeprecationOptions {\n packageName: string;\n name: string;\n since: string;\n removedIn?: string;\n alternative?: string;\n details?: string;\n onceKey?: string;\n}\n\nconst seen = new Set<string>();\n\nfunction shouldWarnOnce(key: string): boolean {\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n}\n\nfunction isProdEnv(): boolean {\n return typeof process !== \"undefined\" && process.env.NODE_ENV === \"production\";\n}\n\nexport function warnDeprecated(options: DeprecationOptions): void {\n if (isProdEnv()) return;\n\n const key = options.onceKey ?? `${options.packageName}:${options.name}`;\n if (!shouldWarnOnce(key)) return;\n\n const parts = [\n `[deprecation] ${options.packageName}: ${options.name} is deprecated since ${options.since}.`,\n ];\n if (options.removedIn) {\n parts.push(`Removal target: ${options.removedIn}.`);\n }\n if (options.alternative) {\n parts.push(`Use ${options.alternative} instead.`);\n }\n if (options.details) {\n parts.push(options.details);\n }\n if (typeof console !== \"undefined\") {\n console.warn(parts.join(\" \"));\n }\n}\n\nexport function createDeprecationLogger(packageName: string) {\n return (name: string, options: Omit<DeprecationOptions, \"packageName\" | \"name\">): void => {\n warnDeprecated({ packageName, name, ...options });\n };\n}\n","export interface Semver {\n major: number;\n minor: number;\n patch: number;\n prerelease?: string;\n}\n\nexport function parseSemver(input: string): Semver | null {\n const match = /^v?(\\d+)\\.(\\d+)\\.(\\d+)(?:-([\\w.-]+))?$/.exec(input.trim());\n if (!match) return null;\n return {\n major: Number(match[1]),\n minor: Number(match[2]),\n patch: Number(match[3]),\n prerelease: match[4],\n };\n}\n\nexport function compareVersions(a: string, b: string): number {\n const aParsed = parseSemver(a);\n const bParsed = parseSemver(b);\n if (!aParsed || !bParsed) {\n return a.localeCompare(b);\n }\n if (aParsed.major !== bParsed.major) {\n return aParsed.major < bParsed.major ? -1 : 1;\n }\n if (aParsed.minor !== bParsed.minor) {\n return aParsed.minor < bParsed.minor ? -1 : 1;\n }\n if (aParsed.patch !== bParsed.patch) {\n return aParsed.patch < bParsed.patch ? -1 : 1;\n }\n if (aParsed.prerelease && !bParsed.prerelease) return -1;\n if (!aParsed.prerelease && bParsed.prerelease) return 1;\n if (aParsed.prerelease && bParsed.prerelease) {\n return aParsed.prerelease.localeCompare(bParsed.prerelease);\n }\n return 0;\n}\n\nexport function isAtLeast(version: string, minimum: string): boolean {\n return compareVersions(version, minimum) >= 0;\n}\n\nexport function assertMinVersion(\n packageName: string,\n current: string,\n minimum: string,\n options: { warnOnly?: boolean } = {},\n): boolean {\n const ok = isAtLeast(current, minimum);\n if (!ok) {\n const message = `[version] ${packageName} requires >= ${minimum} (detected ${current}).`;\n if (options.warnOnly && typeof console !== \"undefined\") {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n }\n return ok;\n}\n"]}
|
package/dist/lib/theme.cjs
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkNCXUQXAN_cjs = require('../chunk-NCXUQXAN.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "applyTheme", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunkNCXUQXAN_cjs.applyTheme; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "applyThemeState", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkNCXUQXAN_cjs.applyThemeState; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "getInitialTheme", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkNCXUQXAN_cjs.getInitialTheme; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "getStoredThemeState", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkNCXUQXAN_cjs.getStoredThemeState; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "hydrateThemeState", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkNCXUQXAN_cjs.hydrateThemeState; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "onThemeUpdate", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkNCXUQXAN_cjs.onThemeUpdate; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "registerThemeAwareComponent", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkNCXUQXAN_cjs.registerThemeAwareComponent; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "setDensity", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunkNCXUQXAN_cjs.setDensity; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "setFontScale", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return chunkNCXUQXAN_cjs.setFontScale; }
|
|
42
42
|
});
|
|
43
43
|
Object.defineProperty(exports, "setRadius", {
|
|
44
44
|
enumerable: true,
|
|
45
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunkNCXUQXAN_cjs.setRadius; }
|
|
46
46
|
});
|
|
47
47
|
Object.defineProperty(exports, "setTheme", {
|
|
48
48
|
enumerable: true,
|
|
49
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunkNCXUQXAN_cjs.setTheme; }
|
|
50
50
|
});
|
|
51
51
|
Object.defineProperty(exports, "withThemeTransitionGuard", {
|
|
52
52
|
enumerable: true,
|
|
53
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunkNCXUQXAN_cjs.withThemeTransitionGuard; }
|
|
54
54
|
});
|
|
55
55
|
//# sourceMappingURL=theme.cjs.map
|
|
56
56
|
//# sourceMappingURL=theme.cjs.map
|
package/dist/lib/theme.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { applyTheme, applyThemeState, getInitialTheme, getStoredThemeState, hydrateThemeState, onThemeUpdate, registerThemeAwareComponent, setDensity, setFontScale, setRadius, setTheme, withThemeTransitionGuard } from '../chunk-
|
|
1
|
+
export { applyTheme, applyThemeState, getInitialTheme, getStoredThemeState, hydrateThemeState, onThemeUpdate, registerThemeAwareComponent, setDensity, setFontScale, setRadius, setTheme, withThemeTransitionGuard } from '../chunk-LSWEXTKL.js';
|
|
2
2
|
//# sourceMappingURL=theme.js.map
|
|
3
3
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/adapters/react.ts"],"names":[],"mappings":";;;AAmBO,SAAS,kBAAA,CACd,OAAA,EACA,KAAA,EACA,OAAA,GAA+B,EAAC,EACF;AAC9B,EAAA,MAAM,OAAA,GAAU,QAAQ,WAAA,IAAe,KAAA;AAEvC,EAAA,MAAM,UAAwC,CAAA,KAAA,KAAS;AACrD,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAwC,IAAI,CAAA;AAEtE,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,WAAA,CAAY,OAAA,GAAU,QAAQ,KAAA,CAAM;AAAA,QAClC,QAAQ,OAAA,CAAQ,OAAA;AAAA,QAChB;AAAA,OACD,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,WAAA,CAAY,SAAS,OAAA,EAAQ;AAC7B,QAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,MACxB,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,OAAA,CAAQ,YAAY,
|
|
1
|
+
{"version":3,"sources":["../../../src/runtime/adapters/react.ts"],"names":[],"mappings":";;;AAmBO,SAAS,kBAAA,CACd,OAAA,EACA,KAAA,EACA,OAAA,GAA+B,EAAC,EACF;AAC9B,EAAA,MAAM,OAAA,GAAU,QAAQ,WAAA,IAAe,KAAA;AAEvC,EAAA,MAAM,UAAwC,CAAA,KAAA,KAAS;AACrD,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAwC,IAAI,CAAA;AAEtE,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,WAAA,CAAY,OAAA,GAAU,QAAQ,KAAA,CAAM;AAAA,QAClC,QAAQ,OAAA,CAAQ,OAAA;AAAA,QAChB;AAAA,OACD,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,WAAA,CAAY,SAAS,OAAA,EAAQ;AAC7B,QAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,MACxB,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,OAAA,CAAQ,YAAY,KAAK,CAAA;AAAA,MACvC;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC5C,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,IACpB,CAAA;AAEA,IAAA,OAAO,KAAA,CAAM,cAAc,OAAA,EAAS,EAAE,KAAK,WAAA,EAAY,EAAG,KAAA,CAAM,QAAA,IAAY,IAAI,CAAA;AAAA,EAClF,CAAA;AAEA,EAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,IAAC,OAAA,CAAqC,cAAc,OAAA,CAAQ,WAAA;AAAA,EAC9D;AAEA,EAAA,OAAO,OAAA;AACT","file":"react.cjs","sourcesContent":["import type { ComponentFactory, ComponentInstance } from '../component.js';\n\ntype ReactCleanupFn = () => void;\n\nexport interface ReactInterop {\n createElement: (...args: unknown[]) => unknown;\n useEffect: (effect: () => ReactCleanupFn | undefined, deps?: unknown[]) => void;\n useRef: <T>(initial: T | null) => { current: T | null };\n}\n\nexport interface ReactAdapterOptions {\n hostElement?: string;\n displayName?: string;\n}\n\nexport type ReactAdapterComponent<Props extends Record<string, unknown>> = (\n props: Props & { children?: unknown },\n) => unknown;\n\nexport function createReactAdapter<Props extends Record<string, unknown>>(\n factory: ComponentFactory<Props>,\n react: ReactInterop,\n options: ReactAdapterOptions = {},\n): ReactAdapterComponent<Props> {\n const hostTag = options.hostElement ?? 'div';\n\n const Adapter: ReactAdapterComponent<Props> = props => {\n const hostRef = react.useRef<Element | null>(null);\n const instanceRef = react.useRef<ComponentInstance<Props> | null>(null);\n\n react.useEffect(() => {\n if (!hostRef.current) {\n return undefined;\n }\n instanceRef.current = factory.mount({\n target: hostRef.current,\n props: props,\n });\n return () => {\n instanceRef.current?.destroy();\n instanceRef.current = null;\n };\n }, []);\n\n react.useEffect(() => {\n if (instanceRef.current) {\n instanceRef.current.updateProps(props);\n }\n return undefined;\n }, [props]);\n\n const refCallback = (node: Element | null) => {\n hostRef.current = node;\n };\n\n return react.createElement(hostTag, { ref: refCallback }, props.children ?? null);\n };\n\n if (options.displayName) {\n (Adapter as { displayName?: string }).displayName = options.displayName;\n }\n\n return Adapter;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/adapters/react.ts"],"names":[],"mappings":";AAmBO,SAAS,kBAAA,CACd,OAAA,EACA,KAAA,EACA,OAAA,GAA+B,EAAC,EACF;AAC9B,EAAA,MAAM,OAAA,GAAU,QAAQ,WAAA,IAAe,KAAA;AAEvC,EAAA,MAAM,UAAwC,CAAA,KAAA,KAAS;AACrD,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAwC,IAAI,CAAA;AAEtE,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,WAAA,CAAY,OAAA,GAAU,QAAQ,KAAA,CAAM;AAAA,QAClC,QAAQ,OAAA,CAAQ,OAAA;AAAA,QAChB;AAAA,OACD,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,WAAA,CAAY,SAAS,OAAA,EAAQ;AAC7B,QAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,MACxB,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,OAAA,CAAQ,YAAY,
|
|
1
|
+
{"version":3,"sources":["../../../src/runtime/adapters/react.ts"],"names":[],"mappings":";AAmBO,SAAS,kBAAA,CACd,OAAA,EACA,KAAA,EACA,OAAA,GAA+B,EAAC,EACF;AAC9B,EAAA,MAAM,OAAA,GAAU,QAAQ,WAAA,IAAe,KAAA;AAEvC,EAAA,MAAM,UAAwC,CAAA,KAAA,KAAS;AACrD,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAwC,IAAI,CAAA;AAEtE,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,WAAA,CAAY,OAAA,GAAU,QAAQ,KAAA,CAAM;AAAA,QAClC,QAAQ,OAAA,CAAQ,OAAA;AAAA,QAChB;AAAA,OACD,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,WAAA,CAAY,SAAS,OAAA,EAAQ;AAC7B,QAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,MACxB,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,OAAA,CAAQ,YAAY,KAAK,CAAA;AAAA,MACvC;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC5C,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,IACpB,CAAA;AAEA,IAAA,OAAO,KAAA,CAAM,cAAc,OAAA,EAAS,EAAE,KAAK,WAAA,EAAY,EAAG,KAAA,CAAM,QAAA,IAAY,IAAI,CAAA;AAAA,EAClF,CAAA;AAEA,EAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,IAAC,OAAA,CAAqC,cAAc,OAAA,CAAQ,WAAA;AAAA,EAC9D;AAEA,EAAA,OAAO,OAAA;AACT","file":"react.js","sourcesContent":["import type { ComponentFactory, ComponentInstance } from '../component.js';\n\ntype ReactCleanupFn = () => void;\n\nexport interface ReactInterop {\n createElement: (...args: unknown[]) => unknown;\n useEffect: (effect: () => ReactCleanupFn | undefined, deps?: unknown[]) => void;\n useRef: <T>(initial: T | null) => { current: T | null };\n}\n\nexport interface ReactAdapterOptions {\n hostElement?: string;\n displayName?: string;\n}\n\nexport type ReactAdapterComponent<Props extends Record<string, unknown>> = (\n props: Props & { children?: unknown },\n) => unknown;\n\nexport function createReactAdapter<Props extends Record<string, unknown>>(\n factory: ComponentFactory<Props>,\n react: ReactInterop,\n options: ReactAdapterOptions = {},\n): ReactAdapterComponent<Props> {\n const hostTag = options.hostElement ?? 'div';\n\n const Adapter: ReactAdapterComponent<Props> = props => {\n const hostRef = react.useRef<Element | null>(null);\n const instanceRef = react.useRef<ComponentInstance<Props> | null>(null);\n\n react.useEffect(() => {\n if (!hostRef.current) {\n return undefined;\n }\n instanceRef.current = factory.mount({\n target: hostRef.current,\n props: props,\n });\n return () => {\n instanceRef.current?.destroy();\n instanceRef.current = null;\n };\n }, []);\n\n react.useEffect(() => {\n if (instanceRef.current) {\n instanceRef.current.updateProps(props);\n }\n return undefined;\n }, [props]);\n\n const refCallback = (node: Element | null) => {\n hostRef.current = node;\n };\n\n return react.createElement(hostTag, { ref: refCallback }, props.children ?? null);\n };\n\n if (options.displayName) {\n (Adapter as { displayName?: string }).displayName = options.displayName;\n }\n\n return Adapter;\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
3
|
+
var chunkSZL56BNL_cjs = require('../../chunk-SZL56BNL.cjs');
|
|
4
|
+
require('../../chunk-W5M7JGC4.cjs');
|
|
5
|
+
require('../../chunk-NCXUQXAN.cjs');
|
|
6
6
|
require('../../chunk-IRBUKIRF.cjs');
|
|
7
7
|
require('../../chunk-FFCZSYC7.cjs');
|
|
8
8
|
require('../../chunk-EFOOXCY7.cjs');
|
|
@@ -12,7 +12,7 @@ require('../../chunk-VHUXNDW2.cjs');
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, "AiAssistantPanel", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkSZL56BNL_cjs.AiAssistantPanel; }
|
|
16
16
|
});
|
|
17
17
|
//# sourceMappingURL=ai-assistant.cjs.map
|
|
18
18
|
//# sourceMappingURL=ai-assistant.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { AiAssistantPanel } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
export { AiAssistantPanel } from '../../chunk-AA4GATSB.js';
|
|
2
|
+
import '../../chunk-VQDM5HCG.js';
|
|
3
|
+
import '../../chunk-LSWEXTKL.js';
|
|
4
4
|
import '../../chunk-IHAMVLRY.js';
|
|
5
5
|
import '../../chunk-BBAUALNU.js';
|
|
6
6
|
import '../../chunk-D3H5CGVD.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
3
|
+
var chunkFLUSP6VF_cjs = require('../../chunk-FLUSP6VF.cjs');
|
|
4
|
+
require('../../chunk-W5M7JGC4.cjs');
|
|
5
|
+
require('../../chunk-NCXUQXAN.cjs');
|
|
6
6
|
require('../../chunk-IRBUKIRF.cjs');
|
|
7
7
|
require('../../chunk-FFCZSYC7.cjs');
|
|
8
8
|
require('../../chunk-EFOOXCY7.cjs');
|
|
@@ -12,7 +12,7 @@ require('../../chunk-VHUXNDW2.cjs');
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, "AiSummaryCard", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkFLUSP6VF_cjs.AiSummaryCard; }
|
|
16
16
|
});
|
|
17
17
|
//# sourceMappingURL=ai-summary-card.cjs.map
|
|
18
18
|
//# sourceMappingURL=ai-summary-card.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { AiSummaryCard } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
export { AiSummaryCard } from '../../chunk-BXQFX2PS.js';
|
|
2
|
+
import '../../chunk-VQDM5HCG.js';
|
|
3
|
+
import '../../chunk-LSWEXTKL.js';
|
|
4
4
|
import '../../chunk-IHAMVLRY.js';
|
|
5
5
|
import '../../chunk-BBAUALNU.js';
|
|
6
6
|
import '../../chunk-D3H5CGVD.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/router.ts"],"names":["flattenRoutes","signal","matchRoute","getRouteId","normalizePathname","options","captureRuntimeError","match","withRuntimeErrorBoundary","cacheRouteDataResult","clearRouteDataResult"],"mappings":"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","file":"router.cjs","sourcesContent":["import { captureRuntimeError, RuntimeErrorBoundary, RuntimeErrorInfo, withRuntimeErrorBoundary } from './errors.js';\nimport { signal, SignalAccessor } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nimport type { FlattenedRouteNode } from './router-utils.js';\n\nexport type RouteComponentFactory = () => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface RouteBoundaryConfig {\n id?: string;\n name?: string;\n componentName?: string;\n templateId?: string;\n attributes?: Record<string, unknown>;\n onError?: (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n}\n\nexport type RouteLayoutDefinition = RouteBoundaryConfig;\n\nexport interface RouteDefinition {\n id?: string;\n path: string;\n component: RouteComponentFactory;\n boundary?: RouteBoundaryConfig;\n layouts?: RouteLayoutDefinition[];\n loader?: RouteDataHandler;\n action?: RouteDataHandler;\n guards?: RouteGuard[];\n children?: RouteDefinition[];\n}\n\nexport interface RouteHandlerArgs {\n params: Record<string, string>;\n request?: Request;\n signal?: AbortSignal;\n context?: Record<string, unknown>;\n}\n\nexport type RouteDataHandler<T = unknown> = (args: RouteHandlerArgs) => T | Promise<T>;\n\nexport interface RouteHandlerResult<T = unknown> {\n data?: T;\n error?: Error;\n info?: RuntimeErrorInfo | null;\n handled: boolean;\n startedAt?: number;\n endedAt?: number;\n durationMs?: number;\n}\n\nexport interface RouteGuardContext {\n match: RouteMatch;\n params: Record<string, string>;\n}\n\nexport type RouteGuardResult =\n | { type: 'continue' }\n | { type: 'redirect'; to: string; options?: NavigateOptions }\n | { type: 'error'; error: Error; info?: RuntimeErrorInfo | null };\n\nexport type RouteGuard = (context: RouteGuardContext) => RouteGuardResult | undefined;\n\nexport interface RoutePrefetchOptions {\n loadData?: boolean;\n loaderArgs?: PartialRouteHandlerArgs;\n}\n\nconst CONTINUE_NAVIGATION: RouteGuardResult = { type: 'continue' } as const;\nconst MAX_GUARD_REDIRECTS = 8;\n\nexport function allowNavigation(): RouteGuardResult {\n return CONTINUE_NAVIGATION;\n}\n\nexport function redirectNavigation(to: string, options?: NavigateOptions): RouteGuardResult {\n return { type: 'redirect', to, options };\n}\n\nexport function errorNavigation(error: Error, info?: RuntimeErrorInfo | null): RouteGuardResult {\n return { type: 'error', error, info: info ?? null };\n}\n\nexport type RouterBoundaryKind = 'layout' | 'route';\n\nexport interface RouteBoundaryConfigResolved extends RouteBoundaryConfig {\n id: string;\n componentName: string;\n attributes: Record<string, unknown>;\n}\n\nexport interface RouterBoundaryState {\n id: string;\n kind: RouterBoundaryKind;\n definition: RouteBoundaryConfigResolved;\n boundary: RuntimeErrorBoundary;\n error: Error | null;\n info: RuntimeErrorInfo | null;\n reset(): void;\n}\n\nexport interface RouteMatch {\n route: RouteDefinition;\n params: Record<string, string>;\n fullPath: string;\n layouts: RouterBoundaryState[];\n boundary: RouterBoundaryState;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: unknown;\n}\n\nexport interface Router {\n currentPath: SignalAccessor<string>;\n currentMatch: SignalAccessor<RouteMatch | null>;\n navigate(path: string, options?: NavigateOptions): RouteMatch | null;\n match(path?: string): RouteMatch | null;\n start(): void;\n dispose(): void;\n}\n\nexport interface RouterOptions {\n routes: RouteDefinition[];\n notFoundRoute?: RouteDefinition;\n errorRoute?: RouteDefinition;\n}\n\nexport function createRouter(input: RouteDefinition[] | RouterOptions): Router {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal<RouteMatch | null>(resolveMatch(initialPath));\n\n function resolveMatch(path: string): RouteMatch | null {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n\n function instantiateMatch(node: FlattenedRouteNode, params: Record<string, string>): RouteMatch {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }),\n );\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function collectLayouts(branch: RouteDefinition[], fullPath: string, params: Record<string, string>): RouterBoundaryState[] {\n const states: RouterBoundaryState[] = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(\n createRouterBoundaryState(\n 'layout',\n normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n }),\n ),\n );\n });\n });\n return states;\n }\n\n function createFallbackMatch(\n route: RouteDefinition,\n requestedPath: string,\n reason: 'not-found' | 'error',\n error?: Error,\n errorMessage?: string,\n ): RouteMatch {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig: RouteBoundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }),\n );\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function match(path?: string): RouteMatch | null {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n\n function navigate(path: string, options?: NavigateOptions): RouteMatch | null {\n return runNavigation(path, options, 0);\n }\n\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n\n function runNavigation(path: string, options: NavigateOptions | undefined, depth: number): RouteMatch | null {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions: NavigateOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n } catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n\n function applyHistory(path: string, options?: NavigateOptions) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = options?.state ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n } else {\n window.history.pushState(historyState, '', path);\n }\n }\n\n function runRouteGuards(match: RouteMatch): RouteGuardResult {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n\n function createGuardErrorInfo(match: RouteMatch): RuntimeErrorInfo {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n } satisfies RuntimeErrorInfo;\n }\n\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n } satisfies Router;\n}\n\nfunction normalizeRouterOptions(input: RouteDefinition[] | RouterOptions): RouterOptions {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\n\nfunction normalizeFallbackRoute(\n route: RouteDefinition | undefined,\n fallbackId: string,\n fallbackPath: string,\n): RouteDefinition | undefined {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path || fallbackPath,\n };\n}\n\n\nexport async function runRouteLoader<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('loader', match.route.loader as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function runRouteAction<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('action', match.route.action as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function prefetchRoute(match: RouteMatch, options?: RoutePrefetchOptions): Promise<void> {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\n\ntype RouteHandlerKind = 'loader' | 'action';\n\ntype PartialRouteHandlerArgs = Partial<Omit<RouteHandlerArgs, 'params'>> & { params?: Record<string, string> };\n\ninterface BoundaryContextExtras {\n routeId: string;\n path: string;\n layoutIndex?: number;\n params?: Record<string, string>;\n}\n\nfunction normalizeBoundaryConfig(\n kind: RouterBoundaryKind,\n config: RouteBoundaryConfig | undefined,\n context: BoundaryContextExtras,\n): RouteBoundaryConfigResolved {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n } satisfies Record<string, unknown>;\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n } as RouteBoundaryConfigResolved;\n}\n\nfunction createRouterBoundaryState(\n kind: RouterBoundaryKind,\n definition: RouteBoundaryConfigResolved,\n): RouterBoundaryState {\n const state: RouterBoundaryState = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n } catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n } satisfies RouterBoundaryState;\n return state;\n}\n\nasync function executeRouteHandler<T>(\n kind: RouteHandlerKind,\n handler: RouteDataHandler<T> | undefined,\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n } satisfies RouteHandlerResult<T>;\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n return {\n handled: true,\n data: data as T,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n } catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n}\n\nfunction normalizeHandlerArgs(match: RouteMatch, args?: PartialRouteHandlerArgs): RouteHandlerArgs {\n return {\n params: args?.params ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n } satisfies RouteHandlerArgs;\n}\n\nfunction runWithBoundaries<T>(boundaries: RouterBoundaryState[], run: () => T): T {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\n\nfunction invokeRouteHandler<T>(\n handler: RouteDataHandler<T>,\n kind: RouteHandlerKind,\n match: RouteMatch,\n args: RouteHandlerArgs,\n): T | Promise<T | undefined> | undefined {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error: unknown) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n } catch (error: unknown) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\n\nfunction createHandlerErrorInfo(\n phase: 'loader' | 'action',\n match: RouteMatch,\n args: RouteHandlerArgs,\n): RuntimeErrorInfo {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n } satisfies Record<string, unknown>;\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n } satisfies RuntimeErrorInfo;\n}\n\nfunction updateRouteDataCache(match: RouteMatch, result: RouteHandlerResult): void {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n\nfunction firstErroredBoundary(boundaries: RouterBoundaryState[]): RouterBoundaryState | undefined {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\n\nfunction isPromiseLike<T>(value: unknown): value is Promise<T> {\n return Boolean(value) && typeof value === 'object' && 'then' in (value as Record<string, unknown>);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/router.ts"],"names":["flattenRoutes","signal","matchRoute","getRouteId","normalizePathname","options","captureRuntimeError","match","withRuntimeErrorBoundary","cacheRouteDataResult","clearRouteDataResult"],"mappings":"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","file":"router.cjs","sourcesContent":["import { captureRuntimeError, RuntimeErrorBoundary, RuntimeErrorInfo, withRuntimeErrorBoundary } from './errors.js';\nimport { signal, SignalAccessor } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nimport type { FlattenedRouteNode } from './router-utils.js';\n\nexport type RouteComponentFactory = () => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface RouteBoundaryConfig {\n id?: string;\n name?: string;\n componentName?: string;\n templateId?: string;\n attributes?: Record<string, unknown>;\n onError?: (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n}\n\nexport type RouteLayoutDefinition = RouteBoundaryConfig;\n\nexport interface RouteDefinition {\n id?: string;\n path: string;\n component: RouteComponentFactory;\n boundary?: RouteBoundaryConfig;\n layouts?: RouteLayoutDefinition[];\n loader?: RouteDataHandler;\n action?: RouteDataHandler;\n guards?: RouteGuard[];\n children?: RouteDefinition[];\n}\n\nexport interface RouteHandlerArgs {\n params: Record<string, string>;\n request?: Request;\n signal?: AbortSignal;\n context?: Record<string, unknown>;\n}\n\nexport type RouteDataHandler<T = unknown> = (args: RouteHandlerArgs) => T | Promise<T>;\n\nexport interface RouteHandlerResult<T = unknown> {\n data?: T;\n error?: Error;\n info?: RuntimeErrorInfo | null;\n handled: boolean;\n startedAt?: number;\n endedAt?: number;\n durationMs?: number;\n}\n\nexport interface RouteGuardContext {\n match: RouteMatch;\n params: Record<string, string>;\n}\n\nexport type RouteGuardResult =\n | { type: 'continue' }\n | { type: 'redirect'; to: string; options?: NavigateOptions }\n | { type: 'error'; error: Error; info?: RuntimeErrorInfo | null };\n\nexport type RouteGuard = (context: RouteGuardContext) => RouteGuardResult | undefined;\n\nexport interface RoutePrefetchOptions {\n loadData?: boolean;\n loaderArgs?: PartialRouteHandlerArgs;\n}\n\nconst CONTINUE_NAVIGATION: RouteGuardResult = { type: 'continue' } as const;\nconst MAX_GUARD_REDIRECTS = 8;\n\nexport function allowNavigation(): RouteGuardResult {\n return CONTINUE_NAVIGATION;\n}\n\nexport function redirectNavigation(to: string, options?: NavigateOptions): RouteGuardResult {\n return { type: 'redirect', to, options };\n}\n\nexport function errorNavigation(error: Error, info?: RuntimeErrorInfo | null): RouteGuardResult {\n return { type: 'error', error, info: info ?? null };\n}\n\nexport type RouterBoundaryKind = 'layout' | 'route';\n\nexport interface RouteBoundaryConfigResolved extends RouteBoundaryConfig {\n id: string;\n componentName: string;\n attributes: Record<string, unknown>;\n}\n\nexport interface RouterBoundaryState {\n id: string;\n kind: RouterBoundaryKind;\n definition: RouteBoundaryConfigResolved;\n boundary: RuntimeErrorBoundary;\n error: Error | null;\n info: RuntimeErrorInfo | null;\n reset(): void;\n}\n\nexport interface RouteMatch {\n route: RouteDefinition;\n params: Record<string, string>;\n fullPath: string;\n layouts: RouterBoundaryState[];\n boundary: RouterBoundaryState;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: unknown;\n}\n\nexport interface Router {\n currentPath: SignalAccessor<string>;\n currentMatch: SignalAccessor<RouteMatch | null>;\n navigate(path: string, options?: NavigateOptions): RouteMatch | null;\n match(path?: string): RouteMatch | null;\n start(): void;\n dispose(): void;\n}\n\nexport interface RouterOptions {\n routes: RouteDefinition[];\n notFoundRoute?: RouteDefinition;\n errorRoute?: RouteDefinition;\n}\n\nexport function createRouter(input: RouteDefinition[] | RouterOptions): Router {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal<RouteMatch | null>(resolveMatch(initialPath));\n\n function resolveMatch(path: string): RouteMatch | null {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n\n function instantiateMatch(node: FlattenedRouteNode, params: Record<string, string>): RouteMatch {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }),\n );\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function collectLayouts(branch: RouteDefinition[], fullPath: string, params: Record<string, string>): RouterBoundaryState[] {\n const states: RouterBoundaryState[] = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(\n createRouterBoundaryState(\n 'layout',\n normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n }),\n ),\n );\n });\n });\n return states;\n }\n\n function createFallbackMatch(\n route: RouteDefinition,\n requestedPath: string,\n reason: 'not-found' | 'error',\n error?: Error,\n errorMessage?: string,\n ): RouteMatch {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig: RouteBoundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }),\n );\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function match(path?: string): RouteMatch | null {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n\n function navigate(path: string, options?: NavigateOptions): RouteMatch | null {\n return runNavigation(path, options, 0);\n }\n\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n\n function runNavigation(path: string, options: NavigateOptions | undefined, depth: number): RouteMatch | null {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions: NavigateOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n } catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n\n function applyHistory(path: string, options?: NavigateOptions) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = options?.state ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n } else {\n window.history.pushState(historyState, '', path);\n }\n }\n\n function runRouteGuards(match: RouteMatch): RouteGuardResult {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n\n function createGuardErrorInfo(match: RouteMatch): RuntimeErrorInfo {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n } satisfies RuntimeErrorInfo;\n }\n\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n } satisfies Router;\n}\n\nfunction normalizeRouterOptions(input: RouteDefinition[] | RouterOptions): RouterOptions {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\n\nfunction normalizeFallbackRoute(\n route: RouteDefinition | undefined,\n fallbackId: string,\n fallbackPath: string,\n): RouteDefinition | undefined {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path || fallbackPath,\n };\n}\n\n\nexport async function runRouteLoader<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('loader', match.route.loader as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function runRouteAction<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('action', match.route.action as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function prefetchRoute(match: RouteMatch, options?: RoutePrefetchOptions): Promise<void> {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\n\ntype RouteHandlerKind = 'loader' | 'action';\n\ntype PartialRouteHandlerArgs = Partial<Omit<RouteHandlerArgs, 'params'>> & { params?: Record<string, string> };\n\ninterface BoundaryContextExtras {\n routeId: string;\n path: string;\n layoutIndex?: number;\n params?: Record<string, string>;\n}\n\nfunction normalizeBoundaryConfig(\n kind: RouterBoundaryKind,\n config: RouteBoundaryConfig | undefined,\n context: BoundaryContextExtras,\n): RouteBoundaryConfigResolved {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n } satisfies Record<string, unknown>;\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n };\n}\n\nfunction createRouterBoundaryState(\n kind: RouterBoundaryKind,\n definition: RouteBoundaryConfigResolved,\n): RouterBoundaryState {\n const state: RouterBoundaryState = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n } catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n } satisfies RouterBoundaryState;\n return state;\n}\n\nasync function executeRouteHandler<T>(\n kind: RouteHandlerKind,\n handler: RouteDataHandler<T> | undefined,\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n } satisfies RouteHandlerResult<T>;\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n return {\n handled: true,\n data: data as T,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n } catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n}\n\nfunction normalizeHandlerArgs(match: RouteMatch, args?: PartialRouteHandlerArgs): RouteHandlerArgs {\n return {\n params: args?.params ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n } satisfies RouteHandlerArgs;\n}\n\nfunction runWithBoundaries<T>(boundaries: RouterBoundaryState[], run: () => T): T {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\n\nfunction invokeRouteHandler<T>(\n handler: RouteDataHandler<T>,\n kind: RouteHandlerKind,\n match: RouteMatch,\n args: RouteHandlerArgs,\n): T | Promise<T | undefined> | undefined {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error: unknown) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n } catch (error: unknown) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\n\nfunction createHandlerErrorInfo(\n phase: 'loader' | 'action',\n match: RouteMatch,\n args: RouteHandlerArgs,\n): RuntimeErrorInfo {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n } satisfies Record<string, unknown>;\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n } satisfies RuntimeErrorInfo;\n}\n\nfunction updateRouteDataCache(match: RouteMatch, result: RouteHandlerResult): void {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n\nfunction firstErroredBoundary(boundaries: RouterBoundaryState[]): RouterBoundaryState | undefined {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\n\nfunction isPromiseLike<T>(value: unknown): value is Promise<T> {\n return Boolean(value) && typeof value === 'object' && 'then' in (value as Record<string, unknown>);\n}\n"]}
|