fuzor 0.5.1 → 0.5.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.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -0
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/compiler/data-document.d.ts +5 -1
- package/dist/compiler/data-document.d.ts.map +1 -1
- package/dist/compiler/data-document.js +36 -7
- package/dist/compiler/data-document.js.map +1 -1
- package/dist/compiler/docs.d.ts.map +1 -1
- package/dist/compiler/docs.js +49 -11
- package/dist/compiler/docs.js.map +1 -1
- package/dist/compiler/index.d.ts +2 -0
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/index.js +23 -6
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/islands.d.ts +1 -0
- package/dist/compiler/islands.d.ts.map +1 -1
- package/dist/compiler/native-authoring.d.ts +45 -0
- package/dist/compiler/native-authoring.d.ts.map +1 -0
- package/dist/compiler/native-authoring.js +576 -0
- package/dist/compiler/native-authoring.js.map +1 -0
- package/dist/compiler/native-manifest.d.ts +33 -0
- package/dist/compiler/native-manifest.d.ts.map +1 -0
- package/dist/compiler/native-manifest.js +53 -0
- package/dist/compiler/native-manifest.js.map +1 -0
- package/dist/compiler/native-ranges.d.ts +8 -0
- package/dist/compiler/native-ranges.d.ts.map +1 -0
- package/dist/compiler/native-ranges.js +92 -0
- package/dist/compiler/native-ranges.js.map +1 -0
- package/dist/compiler/native-scripts.js +2 -2
- package/dist/compiler/native-scripts.js.map +1 -1
- package/dist/compiler/page-scripts.d.ts +6 -0
- package/dist/compiler/page-scripts.d.ts.map +1 -1
- package/dist/compiler/page-scripts.js +25 -6
- package/dist/compiler/page-scripts.js.map +1 -1
- package/dist/compiler/route-policy.d.ts +1 -0
- package/dist/compiler/route-policy.d.ts.map +1 -1
- package/dist/compiler/route-policy.js +4 -1
- package/dist/compiler/route-policy.js.map +1 -1
- package/dist/compiler/server-actions.d.ts +9 -0
- package/dist/compiler/server-actions.d.ts.map +1 -0
- package/dist/compiler/server-actions.js +65 -0
- package/dist/compiler/server-actions.js.map +1 -0
- package/dist/data-bindings.d.ts +4 -0
- package/dist/data-bindings.d.ts.map +1 -0
- package/dist/data-bindings.js +16 -0
- package/dist/data-bindings.js.map +1 -0
- package/dist/dom-ownership.d.ts +5 -0
- package/dist/dom-ownership.d.ts.map +1 -0
- package/dist/dom-ownership.js +49 -0
- package/dist/dom-ownership.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal-specifiers.d.ts +3 -0
- package/dist/internal-specifiers.d.ts.map +1 -0
- package/dist/internal-specifiers.js +22 -0
- package/dist/internal-specifiers.js.map +1 -0
- package/dist/islands/react.d.ts +0 -6
- package/dist/islands/react.d.ts.map +1 -1
- package/dist/islands/react.js +9 -26
- package/dist/islands/react.js.map +1 -1
- package/dist/json-value.d.ts +4 -0
- package/dist/json-value.d.ts.map +1 -0
- package/dist/json-value.js +10 -0
- package/dist/json-value.js.map +1 -0
- package/dist/native-expressions.d.ts +34 -0
- package/dist/native-expressions.d.ts.map +1 -0
- package/dist/native-expressions.js +118 -0
- package/dist/native-expressions.js.map +1 -0
- package/dist/native-manifest.d.ts +7 -0
- package/dist/native-manifest.d.ts.map +1 -0
- package/dist/native-manifest.js +4 -0
- package/dist/native-manifest.js.map +1 -0
- package/dist/native-ranges.d.ts +25 -0
- package/dist/native-ranges.d.ts.map +1 -0
- package/dist/native-ranges.js +51 -0
- package/dist/native-ranges.js.map +1 -0
- package/dist/native-state.d.ts +14 -0
- package/dist/native-state.d.ts.map +1 -0
- package/dist/native-state.js +27 -0
- package/dist/native-state.js.map +1 -0
- package/dist/route-path.d.ts +2 -0
- package/dist/route-path.d.ts.map +1 -1
- package/dist/route-path.js +2 -0
- package/dist/route-path.js.map +1 -1
- package/dist/runtime/binding-updates.d.ts +11 -0
- package/dist/runtime/binding-updates.d.ts.map +1 -0
- package/dist/runtime/binding-updates.js +45 -0
- package/dist/runtime/binding-updates.js.map +1 -0
- package/dist/runtime/data.d.ts +28 -1
- package/dist/runtime/data.d.ts.map +1 -1
- package/dist/runtime/data.js +101 -25
- package/dist/runtime/data.js.map +1 -1
- package/dist/runtime/docs-search.d.ts +20 -4
- package/dist/runtime/docs-search.d.ts.map +1 -1
- package/dist/runtime/docs-search.js +135 -159
- package/dist/runtime/docs-search.js.map +1 -1
- package/dist/runtime/docs-ui.d.ts +3 -1
- package/dist/runtime/docs-ui.d.ts.map +1 -1
- package/dist/runtime/docs-ui.js +19 -29
- package/dist/runtime/docs-ui.js.map +1 -1
- package/dist/runtime/islands.d.ts.map +1 -1
- package/dist/runtime/islands.js +2 -1
- package/dist/runtime/islands.js.map +1 -1
- package/dist/runtime/native-graph.d.ts +15 -0
- package/dist/runtime/native-graph.d.ts.map +1 -0
- package/dist/runtime/native-graph.js +103 -0
- package/dist/runtime/native-graph.js.map +1 -0
- package/dist/runtime/native-manifest.d.ts +17 -0
- package/dist/runtime/native-manifest.d.ts.map +1 -0
- package/dist/runtime/native-manifest.js +111 -0
- package/dist/runtime/native-manifest.js.map +1 -0
- package/dist/runtime/native-ranges.d.ts +8 -0
- package/dist/runtime/native-ranges.d.ts.map +1 -0
- package/dist/runtime/native-ranges.js +100 -0
- package/dist/runtime/native-ranges.js.map +1 -0
- package/dist/runtime/native-stream-reader.d.ts +7 -0
- package/dist/runtime/native-stream-reader.d.ts.map +1 -0
- package/dist/runtime/native-stream-reader.js +79 -0
- package/dist/runtime/native-stream-reader.js.map +1 -0
- package/dist/runtime/native-stream.d.ts +5 -0
- package/dist/runtime/native-stream.d.ts.map +1 -0
- package/dist/runtime/native-stream.js +14 -0
- package/dist/runtime/native-stream.js.map +1 -0
- package/dist/runtime/native.d.ts +41 -0
- package/dist/runtime/native.d.ts.map +1 -1
- package/dist/runtime/native.js +176 -55
- package/dist/runtime/native.js.map +1 -1
- package/dist/runtime/page-scripts.d.ts.map +1 -1
- package/dist/runtime/page-scripts.js +8 -3
- package/dist/runtime/page-scripts.js.map +1 -1
- package/dist/runtime/router.d.ts.map +1 -1
- package/dist/runtime/router.js +6 -1
- package/dist/runtime/router.js.map +1 -1
- package/dist/runtime/server-actions.d.ts +5 -0
- package/dist/runtime/server-actions.d.ts.map +1 -0
- package/dist/runtime/server-actions.js +79 -0
- package/dist/runtime/server-actions.js.map +1 -0
- package/dist/server-actions.d.ts +18 -0
- package/dist/server-actions.d.ts.map +1 -0
- package/dist/server-actions.js +138 -0
- package/dist/server-actions.js.map +1 -0
- package/dist/server-components/closures.d.ts +1 -12
- package/dist/server-components/closures.d.ts.map +1 -1
- package/dist/server-components/closures.js +0 -75
- package/dist/server-components/closures.js.map +1 -1
- package/dist/server-components/continuation.d.ts +7 -0
- package/dist/server-components/continuation.d.ts.map +1 -0
- package/dist/server-components/continuation.js +17 -0
- package/dist/server-components/continuation.js.map +1 -0
- package/dist/server-components/environment.js +1 -1
- package/dist/server-components/environment.js.map +1 -1
- package/dist/server-components/protocol.d.ts +5 -1
- package/dist/server-components/protocol.d.ts.map +1 -1
- package/dist/server-components/protocol.js +9 -1
- package/dist/server-components/protocol.js.map +1 -1
- package/dist/server-components/server.d.ts +4 -7
- package/dist/server-components/server.d.ts.map +1 -1
- package/dist/server-components/server.js +2 -185
- package/dist/server-components/server.js.map +1 -1
- package/dist/server-components/stream-server.d.ts +6 -0
- package/dist/server-components/stream-server.d.ts.map +1 -0
- package/dist/server-components/stream-server.js +197 -0
- package/dist/server-components/stream-server.js.map +1 -0
- package/dist/server-components/stream.d.ts +16 -3
- package/dist/server-components/stream.d.ts.map +1 -1
- package/dist/server-components/stream.js +31 -4
- package/dist/server-components/stream.js.map +1 -1
- package/dist/server-components/transport.d.ts +20 -0
- package/dist/server-components/transport.d.ts.map +1 -0
- package/dist/server-components/transport.js +2 -0
- package/dist/server-components/transport.js.map +1 -0
- package/dist/server-components/updates.d.ts +56 -0
- package/dist/server-components/updates.d.ts.map +1 -0
- package/dist/server-components/updates.js +319 -0
- package/dist/server-components/updates.js.map +1 -0
- package/dist/server-data-protocol.d.ts +14 -0
- package/dist/server-data-protocol.d.ts.map +1 -0
- package/dist/server-data-protocol.js +15 -0
- package/dist/server-data-protocol.js.map +1 -0
- package/dist/server-data.d.ts +18 -0
- package/dist/server-data.d.ts.map +1 -1
- package/dist/server-data.js.map +1 -1
- package/dist/server-native-stream.d.ts +5 -0
- package/dist/server-native-stream.d.ts.map +1 -0
- package/dist/server-native-stream.js +39 -0
- package/dist/server-native-stream.js.map +1 -0
- package/dist/server-native.d.ts +24 -0
- package/dist/server-native.d.ts.map +1 -0
- package/dist/server-native.js +67 -0
- package/dist/server-native.js.map +1 -0
- package/dist/server-reactivity.d.ts +13 -0
- package/dist/server-reactivity.d.ts.map +1 -0
- package/dist/server-reactivity.js +49 -0
- package/dist/server-reactivity.js.map +1 -0
- package/dist/server.d.ts +8 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +55 -16
- package/dist/server.js.map +1 -1
- package/dist/ui/behaviors/accordion.d.ts.map +1 -1
- package/dist/ui/behaviors/accordion.js +4 -3
- package/dist/ui/behaviors/accordion.js.map +1 -1
- package/dist/ui/behaviors/collapsible.d.ts.map +1 -1
- package/dist/ui/behaviors/collapsible.js +2 -1
- package/dist/ui/behaviors/collapsible.js.map +1 -1
- package/dist/ui/behaviors/dialog.d.ts.map +1 -1
- package/dist/ui/behaviors/dialog.js +5 -4
- package/dist/ui/behaviors/dialog.js.map +1 -1
- package/dist/ui/behaviors/menu.d.ts.map +1 -1
- package/dist/ui/behaviors/menu.js +4 -3
- package/dist/ui/behaviors/menu.js.map +1 -1
- package/dist/ui/behaviors/select.d.ts +23 -1
- package/dist/ui/behaviors/select.d.ts.map +1 -1
- package/dist/ui/behaviors/select.js +81 -11
- package/dist/ui/behaviors/select.js.map +1 -1
- package/dist/ui/behaviors/switch.d.ts.map +1 -1
- package/dist/ui/behaviors/switch.js +2 -1
- package/dist/ui/behaviors/switch.js.map +1 -1
- package/dist/ui/behaviors/toolbar.d.ts.map +1 -1
- package/dist/ui/behaviors/toolbar.js +2 -1
- package/dist/ui/behaviors/toolbar.js.map +1 -1
- package/dist/ui/catalogue.d.ts +1 -1
- package/dist/ui/components/accordion/accordion.d.ts.map +1 -1
- package/dist/ui/components/accordion/accordion.js +3 -2
- package/dist/ui/components/accordion/accordion.js.map +1 -1
- package/dist/ui/components/collapsible/collapsible.d.ts.map +1 -1
- package/dist/ui/components/collapsible/collapsible.js +2 -1
- package/dist/ui/components/collapsible/collapsible.js.map +1 -1
- package/dist/ui/components/dialog/dialog.d.ts.map +1 -1
- package/dist/ui/components/dialog/dialog.js +4 -3
- package/dist/ui/components/dialog/dialog.js.map +1 -1
- package/dist/ui/components/navigation/breadcrumbs.d.ts.map +1 -1
- package/dist/ui/components/navigation/breadcrumbs.js +2 -1
- package/dist/ui/components/navigation/breadcrumbs.js.map +1 -1
- package/dist/ui/components/select/select.d.ts +20 -0
- package/dist/ui/components/select/select.d.ts.map +1 -1
- package/dist/ui/components/select/select.js +20 -0
- package/dist/ui/components/select/select.js.map +1 -1
- package/dist/ui/components/tabs/tabs.d.ts.map +1 -1
- package/dist/ui/components/tabs/tabs.js +6 -5
- package/dist/ui/components/tabs/tabs.js.map +1 -1
- package/dist/ui/core/brand.d.ts +33 -0
- package/dist/ui/core/brand.d.ts.map +1 -0
- package/dist/ui/core/brand.js +96 -0
- package/dist/ui/core/brand.js.map +1 -0
- package/dist/ui/core/component-styles.d.ts.map +1 -1
- package/dist/ui/core/component-styles.js +14 -8
- package/dist/ui/core/component-styles.js.map +1 -1
- package/dist/ui/core/element.d.ts.map +1 -1
- package/dist/ui/core/element.js +2 -3
- package/dist/ui/core/element.js.map +1 -1
- package/dist/ui/core/index.d.ts +1 -0
- package/dist/ui/core/index.d.ts.map +1 -1
- package/dist/ui/core/index.js +1 -0
- package/dist/ui/core/index.js.map +1 -1
- package/dist/ui/core/layout-styles.d.ts.map +1 -1
- package/dist/ui/core/layout-styles.js +12 -6
- package/dist/ui/core/layout-styles.js.map +1 -1
- package/dist/ui/core/parts.d.ts.map +1 -1
- package/dist/ui/core/parts.js +5 -4
- package/dist/ui/core/parts.js.map +1 -1
- package/dist/ui/core/portal.d.ts.map +1 -1
- package/dist/ui/core/portal.js +17 -1
- package/dist/ui/core/portal.js.map +1 -1
- package/dist/ui/machine-state.d.ts +11 -11
- package/dist/ui/state.d.ts +1 -1
- package/dist/vite.d.ts +5 -10
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +112 -114
- package/dist/vite.js.map +1 -1
- package/package.json +2 -12
- package/dist/server-components/browser.d.ts +0 -75
- package/dist/server-components/browser.d.ts.map +0 -1
- package/dist/server-components/browser.js +0 -558
- package/dist/server-components/browser.js.map +0 -1
- package/dist/server-components/compiler.d.ts +0 -6
- package/dist/server-components/compiler.d.ts.map +0 -1
- package/dist/server-components/compiler.js +0 -118
- package/dist/server-components/compiler.js.map +0 -1
- package/dist/server-components/navigation.d.ts +0 -10
- package/dist/server-components/navigation.d.ts.map +0 -1
- package/dist/server-components/navigation.js +0 -105
- package/dist/server-components/navigation.js.map +0 -1
- package/dist/server-components/references.d.ts +0 -22
- package/dist/server-components/references.d.ts.map +0 -1
- package/dist/server-components/references.js +0 -94
- package/dist/server-components/references.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-manifest.js","sourceRoot":"","sources":["../src/native-manifest.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Json, type Values } from "./server-components/protocol.js";
|
|
2
|
+
import type { DataBinding } from "./compiler/data-document.js";
|
|
3
|
+
export type NativeRangePart = string | {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly source: "item" | "state";
|
|
6
|
+
readonly attribute?: boolean;
|
|
7
|
+
readonly href?: true;
|
|
8
|
+
} | {
|
|
9
|
+
readonly row: true;
|
|
10
|
+
};
|
|
11
|
+
export type NativeRange = {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly state: string;
|
|
14
|
+
readonly key?: string;
|
|
15
|
+
readonly html: string;
|
|
16
|
+
readonly parts: readonly NativeRangePart[];
|
|
17
|
+
readonly reads: readonly string[];
|
|
18
|
+
};
|
|
19
|
+
/** Navigation holes admit only root-relative URLs. Never executable or external URLs. */
|
|
20
|
+
export declare function nativeRowHref(value: Json | undefined): string;
|
|
21
|
+
export declare function renderNativeBinding(binding: DataBinding, value: unknown): string | undefined;
|
|
22
|
+
export declare function itemValue(item: Json, path: string): Json;
|
|
23
|
+
export declare function rangeRows(range: NativeRange, value: Json): readonly (readonly [string, Json])[];
|
|
24
|
+
export declare function renderNativeRange(range: NativeRange, state: Values): string;
|
|
25
|
+
//# sourceMappingURL=native-ranges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-ranges.d.ts","sourceRoot":"","sources":["../src/native-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AACjL,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AACvM,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAG7D;AACD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE5F;AACD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxD;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAY/F;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { assertName, scalar } from "./server-components/protocol.js";
|
|
2
|
+
import { escapeAttribute, escapeText } from "./html-escape.js";
|
|
3
|
+
import { renderDataBinding } from "./data-bindings.js";
|
|
4
|
+
/** Navigation holes admit only root-relative URLs. Never executable or external URLs. */
|
|
5
|
+
export function nativeRowHref(value) {
|
|
6
|
+
if (typeof value !== "string" || !value.startsWith("/") || value.startsWith("//") || /[\\\u0000-\u0020\u007f]/.test(value))
|
|
7
|
+
throw new Error("Row href requires a root-relative URL without whitespace or backslashes");
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
export function renderNativeBinding(binding, value) {
|
|
11
|
+
return binding.range ? renderNativeRange(binding.range, value) : renderDataBinding(binding, value);
|
|
12
|
+
}
|
|
13
|
+
export function itemValue(item, path) {
|
|
14
|
+
let value = item;
|
|
15
|
+
for (const key of path.split(".")) {
|
|
16
|
+
assertName(key);
|
|
17
|
+
if (!value || typeof value !== "object" || !Object.hasOwn(value, key))
|
|
18
|
+
throw new Error(`Missing row property: ${path}`);
|
|
19
|
+
value = value[key];
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
export function rangeRows(range, value) {
|
|
24
|
+
if (!range.key) {
|
|
25
|
+
if (typeof value !== "boolean")
|
|
26
|
+
throw new Error("Conditional ranges require boolean state");
|
|
27
|
+
return value ? [["true", null]] : [];
|
|
28
|
+
}
|
|
29
|
+
if (!Array.isArray(value) || value.length > 2048)
|
|
30
|
+
throw new Error("Keyed ranges require at most 2048 JSON rows");
|
|
31
|
+
const seen = new Set();
|
|
32
|
+
return value.map(item => {
|
|
33
|
+
const key = itemValue(item, range.key), identity = JSON.stringify(key);
|
|
34
|
+
if (!(typeof key === "string" && key.length <= 256 || typeof key === "number" && Number.isFinite(key)) || seen.has(identity))
|
|
35
|
+
throw new Error("Rows require unique finite number or short string keys");
|
|
36
|
+
seen.add(identity);
|
|
37
|
+
return [identity, item];
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function renderNativeRange(range, state) {
|
|
41
|
+
return rangeRows(range, state[range.state]).map(([key, item]) => range.parts.map(part => {
|
|
42
|
+
if (typeof part === "string")
|
|
43
|
+
return part;
|
|
44
|
+
if ("row" in part)
|
|
45
|
+
return escapeAttribute(key);
|
|
46
|
+
const raw = part.source === "item" ? itemValue(item, part.path) : state[part.path];
|
|
47
|
+
const value = part.href ? nativeRowHref(raw) : scalar(raw);
|
|
48
|
+
return part.attribute ? escapeAttribute(value) : escapeText(value);
|
|
49
|
+
}).join("")).join("");
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=native-ranges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-ranges.js","sourceRoot":"","sources":["../src/native-ranges.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Json, type Values } from "./server-components/protocol.js";
|
|
2
|
+
/** A compiler-extracted JSON default, optionally initialized from explicit public server props. */
|
|
3
|
+
export type NativeStateSeed = {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly fallback: Json;
|
|
6
|
+
readonly from?: readonly string[];
|
|
7
|
+
readonly readonly?: boolean;
|
|
8
|
+
readonly binding?: "scalar" | "boolean";
|
|
9
|
+
};
|
|
10
|
+
export declare function nativeSeed(props: Values, states: readonly NativeStateSeed[]): {
|
|
11
|
+
props: Values;
|
|
12
|
+
state: Values;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=native-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-state.d.ts","sourceRoot":"","sources":["../src/native-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzG,mGAAmG;AACnG,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,CAAC;AAC1L,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgB9G"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { assertJson, assertName, scalar } from "./server-components/protocol.js";
|
|
2
|
+
export function nativeSeed(props, states) {
|
|
3
|
+
assertJson(props);
|
|
4
|
+
if (!props || typeof props !== "object" || Array.isArray(props))
|
|
5
|
+
throw new Error("Native public props must be a JSON object");
|
|
6
|
+
const state = {};
|
|
7
|
+
for (const cell of states) {
|
|
8
|
+
assertName(cell.name);
|
|
9
|
+
let value = props;
|
|
10
|
+
for (const key of cell.from ?? []) {
|
|
11
|
+
assertName(key);
|
|
12
|
+
value = value && typeof value === "object" && Object.hasOwn(value, key) ? value[key] : undefined;
|
|
13
|
+
}
|
|
14
|
+
state[cell.name] = cell.from ? (value ?? cell.fallback) : cell.fallback;
|
|
15
|
+
if (cell.binding === "boolean" && typeof state[cell.name] !== "boolean")
|
|
16
|
+
throw new Error("Checked state must be boolean");
|
|
17
|
+
if (cell.binding === "scalar")
|
|
18
|
+
scalar(state[cell.name]);
|
|
19
|
+
}
|
|
20
|
+
const seed = { props, state };
|
|
21
|
+
assertJson(seed);
|
|
22
|
+
const json = JSON.stringify(seed);
|
|
23
|
+
if (new TextEncoder().encode(json).byteLength > 2 * 1024 * 1024)
|
|
24
|
+
throw new Error("Native public seed payload limit exceeded");
|
|
25
|
+
return JSON.parse(json);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=native-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-state.js","sourceRoot":"","sources":["../src/native-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAA0B,MAAM,iCAAiC,CAAC;AAIzG,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAkC;IAC1E,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9H,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,KAAK,GAAY,KAAK,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,KAAK,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAAC,CAAC;QACtL,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC1H,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ;YAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9H,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;AACzC,CAAC"}
|
package/dist/route-path.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export declare function withBase(href: string, base: string): string;
|
|
|
26
26
|
export declare function nearestScope(route: string, scopes: Iterable<string>): string | undefined;
|
|
27
27
|
/** Server data for a page is served below this path, inside the deployment base. */
|
|
28
28
|
export declare const serverDataPrefix = "/_fuzor/data";
|
|
29
|
+
/** Compiler-generated server actions, with the same route and deployment-base mapping. */
|
|
30
|
+
export declare const serverActionPrefix = "/_fuzor/action";
|
|
29
31
|
/** Data endpoint URL for a route key, for example `/docs-site/_fuzor/data/notes/hello/`. */
|
|
30
32
|
export declare function serverDataUrl(route: string, base: string): string;
|
|
31
33
|
/** Same logical URL policy for parser-time selection and the hash navigation adapter. */
|
package/dist/route-path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-path.d.ts","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW7D;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI5E;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"route-path.d.ts","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW7D;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI5E;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAGjF"}
|
package/dist/route-path.js
CHANGED
|
@@ -69,6 +69,8 @@ export function nearestScope(route, scopes) {
|
|
|
69
69
|
}
|
|
70
70
|
/** Server data for a page is served below this path, inside the deployment base. */
|
|
71
71
|
export const serverDataPrefix = "/_fuzor/data";
|
|
72
|
+
/** Compiler-generated server actions, with the same route and deployment-base mapping. */
|
|
73
|
+
export const serverActionPrefix = "/_fuzor/action";
|
|
72
74
|
/** Data endpoint URL for a route key, for example `/docs-site/_fuzor/data/notes/hello/`. */
|
|
73
75
|
export function serverDataUrl(route, base) {
|
|
74
76
|
return withBase(`${serverDataPrefix}${route}`, base);
|
package/dist/route-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-path.js","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route-path.js","sourceRoot":"","sources":["../src/route-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Json } from "../server-components/protocol.js";
|
|
2
|
+
/** Closed DOM properties selected by validated bindings, with equal writes suppressed. */
|
|
3
|
+
export declare function writeBindingProperty<K extends "textContent" | "value" | "checked">(element: Pick<HTMLInputElement, K>, property: K, value: HTMLInputElement[K]): void;
|
|
4
|
+
/** Atom remains authoritative; keep only the before/after values of pending edits. */
|
|
5
|
+
export declare function createBindingUpdates(active: () => boolean, apply: (key: string, value: Json, preserveFields: boolean) => void, onError: (error: unknown) => void): {
|
|
6
|
+
enqueue(key: string, previous: Json, value: Json, preserveFields?: boolean): void;
|
|
7
|
+
flush: () => void;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
};
|
|
10
|
+
export type BindingUpdates = ReturnType<typeof createBindingUpdates>;
|
|
11
|
+
//# sourceMappingURL=binding-updates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-updates.d.ts","sourceRoot":"","sources":["../../src/runtime/binding-updates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAE7D,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,GAAG,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAErK;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,OAAO,EACrB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,KAAK,IAAI,EAClE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;iBAalB,MAAM,YAAY,IAAI,SAAS,IAAI;;;EAenD;AACD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Closed DOM properties selected by validated bindings, with equal writes suppressed. */
|
|
2
|
+
export function writeBindingProperty(element, property, value) {
|
|
3
|
+
if (element[property] !== value)
|
|
4
|
+
element[property] = value;
|
|
5
|
+
}
|
|
6
|
+
/** Atom remains authoritative; keep only the before/after values of pending edits. */
|
|
7
|
+
export function createBindingUpdates(active, apply, onError) {
|
|
8
|
+
const pending = new Map();
|
|
9
|
+
let scheduled = false;
|
|
10
|
+
const flush = () => {
|
|
11
|
+
const changes = [...pending];
|
|
12
|
+
pending.clear();
|
|
13
|
+
for (const [key, [previous, value, preserveFields]] of changes) {
|
|
14
|
+
if (!active())
|
|
15
|
+
return;
|
|
16
|
+
// Both renderers validate bound values as scalar; opaque JSON cells never queue DOM work.
|
|
17
|
+
if (previous !== value)
|
|
18
|
+
apply(key, value, preserveFields);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
enqueue(key, previous, value, preserveFields = false) {
|
|
23
|
+
if (!active())
|
|
24
|
+
return;
|
|
25
|
+
const change = pending.get(key);
|
|
26
|
+
// An explicit local write takes precedence over server field preservation.
|
|
27
|
+
pending.set(key, [change ? change[0] : previous, value, preserveFields && change?.[2] !== false]);
|
|
28
|
+
if (scheduled)
|
|
29
|
+
return;
|
|
30
|
+
scheduled = true;
|
|
31
|
+
queueMicrotask(() => {
|
|
32
|
+
scheduled = false;
|
|
33
|
+
try {
|
|
34
|
+
flush();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
onError(error);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
flush,
|
|
42
|
+
dispose() { pending.clear(); },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=binding-updates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-updates.js","sourceRoot":"","sources":["../../src/runtime/binding-updates.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAgD,OAAkC,EAAE,QAAW,EAAE,KAA0B;IAC7J,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK;QAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC7D,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,KAAkE,EAClE,OAAiC;IAEjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;IAClE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;YAC/D,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO;YACtB,0FAA0F;YAC1F,IAAI,QAAQ,KAAK,KAAK;gBAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,OAAO,CAAC,GAAW,EAAE,QAAc,EAAE,KAAW,EAAE,cAAc,GAAG,KAAK;YACtE,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,2EAA2E;YAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAClG,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,cAAc,CAAC,GAAG,EAAE;gBAClB,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC;oBAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK;QACL,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
|
package/dist/runtime/data.d.ts
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
import { type RouteDataPatch } from "../server-data-protocol.js";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
export type DataPublication = {
|
|
4
|
+
readonly data: unknown;
|
|
5
|
+
readonly nativeKeys?: ReadonlySet<string>;
|
|
6
|
+
};
|
|
7
|
+
export type RouteDataTransport = {
|
|
8
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
9
|
+
readonly open: (response: Response, context: {
|
|
10
|
+
readonly outlet: Element;
|
|
11
|
+
readonly scope: string;
|
|
12
|
+
readonly signal: AbortSignal;
|
|
13
|
+
readonly previous?: unknown;
|
|
14
|
+
}) => Effect.Effect<{
|
|
15
|
+
readonly data: unknown;
|
|
16
|
+
readonly follow?: (publish: (update: DataPublication) => void) => Effect.Effect<void, unknown>;
|
|
17
|
+
}, unknown>;
|
|
18
|
+
};
|
|
19
|
+
/** The page's path below the deployment base its data endpoint carries, so a stream's scope does not depend on where the app is mounted. */
|
|
20
|
+
export declare function appRelative(page: string, endpoint: string): string;
|
|
21
|
+
/** Installed only by compiler output containing request-time HTML owners. */
|
|
22
|
+
export declare function setRouteDataTransport(value: RouteDataTransport | undefined): void;
|
|
1
23
|
export declare class RouteDataError extends Error {
|
|
2
24
|
readonly status: number | undefined;
|
|
3
25
|
readonly _tag = "RouteDataError";
|
|
@@ -7,9 +29,12 @@ export type LoadRouteDataOptions = {
|
|
|
7
29
|
/** Query string forwarded to the loader; defaults to the document's current search. */
|
|
8
30
|
readonly search?: string;
|
|
9
31
|
readonly fetch?: typeof fetch;
|
|
32
|
+
/** Ignore the document's already-adopted SSR seed after a mutation. */
|
|
33
|
+
readonly force?: boolean;
|
|
34
|
+
readonly signal?: AbortSignal;
|
|
10
35
|
};
|
|
11
36
|
/** Fills `<fuzor-data name="a.b">` slots with text. Missing or non-text values keep the fallback content. */
|
|
12
|
-
export declare function fillDataSlots(root: ParentNode, data: unknown): void;
|
|
37
|
+
export declare function fillDataSlots(root: ParentNode, data: unknown, accepts?: (name: string, slot: Element) => boolean): void;
|
|
13
38
|
/**
|
|
14
39
|
* Requests the data of the page rendered in `outlet` (`data-fuzor-data` holds the endpoint), fills its
|
|
15
40
|
* slots and dispatches `fuzor:data` or `fuzor:data-error` on the outlet. A newer load or `abortRouteData`
|
|
@@ -17,6 +42,8 @@ export declare function fillDataSlots(root: ParentNode, data: unknown): void;
|
|
|
17
42
|
*/
|
|
18
43
|
export declare function loadRouteData(outlet: Element, options?: LoadRouteDataOptions): Promise<unknown>;
|
|
19
44
|
export declare function abortRouteData(outlet: Element): void;
|
|
45
|
+
/** Apply server-owned complete seeds; omitted instances retain their current data and are not notified. */
|
|
46
|
+
export declare function patchRouteData(outlet: Element, patch: RouteDataPatch, search: string, signal: AbortSignal): void;
|
|
20
47
|
/**
|
|
21
48
|
* Data for the page containing `element`, for islands. Shares the outlet's current request and starts one
|
|
22
49
|
* if none is running.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/runtime/data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/runtime/data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AACpG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC;QAC7K,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAChG,EAAE,OAAO,CAAC,CAAC;CACb,CAAC;AACF,4IAA4I;AAC5I,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAuB;AAEzG,qBAAa,cAAe,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAD/C,QAAQ,CAAC,IAAI,oBAAoB;gBACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM;CACjE;AAMD,MAAM,MAAM,oBAAoB,GAAG;IACjC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAWF,6GAA6G;AAC7G,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAoB,GAAG,IAAI,CAYnI;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAsEnG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAIpD;AAED,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAgBhH;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5D"}
|
package/dist/runtime/data.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
/** Browser side of server data. Documents stay precompiled; data arrives separately after commit. */
|
|
2
2
|
import { showLoading } from "./loading.js";
|
|
3
|
+
import { validateDataPatch } from "../server-data-protocol.js";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
/** The page's path below the deployment base its data endpoint carries, so a stream's scope does not depend on where the app is mounted. */
|
|
6
|
+
export function appRelative(page, endpoint) {
|
|
7
|
+
const at = endpoint.indexOf("_fuzor/data/");
|
|
8
|
+
const base = at > 0 ? endpoint.slice(0, at) : "/";
|
|
9
|
+
if (base === "/")
|
|
10
|
+
return page;
|
|
11
|
+
if (page === base.slice(0, -1))
|
|
12
|
+
return "/";
|
|
13
|
+
return page.startsWith(base) ? page.slice(base.length - 1) : page;
|
|
14
|
+
}
|
|
15
|
+
let transport;
|
|
16
|
+
/** Installed only by compiler output containing request-time HTML owners. */
|
|
17
|
+
export function setRouteDataTransport(value) { transport = value; }
|
|
3
18
|
export class RouteDataError extends Error {
|
|
4
19
|
status;
|
|
5
20
|
_tag = "RouteDataError";
|
|
@@ -9,6 +24,7 @@ export class RouteDataError extends Error {
|
|
|
9
24
|
}
|
|
10
25
|
}
|
|
11
26
|
const loads = new WeakMap();
|
|
27
|
+
const snapshots = new WeakMap();
|
|
12
28
|
function valueAt(data, name) {
|
|
13
29
|
let value = data;
|
|
14
30
|
for (const key of name.split(".")) {
|
|
@@ -19,12 +35,17 @@ function valueAt(data, name) {
|
|
|
19
35
|
return value;
|
|
20
36
|
}
|
|
21
37
|
/** Fills `<fuzor-data name="a.b">` slots with text. Missing or non-text values keep the fallback content. */
|
|
22
|
-
export function fillDataSlots(root, data) {
|
|
38
|
+
export function fillDataSlots(root, data, accepts = () => true) {
|
|
23
39
|
for (const slot of root.querySelectorAll("fuzor-data[name]")) {
|
|
24
|
-
const
|
|
40
|
+
const name = slot.getAttribute("name");
|
|
41
|
+
if (!accepts(name, slot))
|
|
42
|
+
continue;
|
|
43
|
+
const value = valueAt(data, name);
|
|
25
44
|
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
26
|
-
slot.textContent
|
|
27
|
-
|
|
45
|
+
if (slot.textContent !== String(value))
|
|
46
|
+
slot.textContent = String(value);
|
|
47
|
+
if (slot.getAttribute("data-fuzor-state") !== "ready")
|
|
48
|
+
slot.setAttribute("data-fuzor-state", "ready");
|
|
28
49
|
}
|
|
29
50
|
else {
|
|
30
51
|
slot.setAttribute("data-fuzor-state", "missing");
|
|
@@ -41,50 +62,82 @@ function markSlots(root, state) {
|
|
|
41
62
|
* cancels the previous request; cancelled loads never touch the DOM.
|
|
42
63
|
*/
|
|
43
64
|
export function loadRouteData(outlet, options = {}) {
|
|
65
|
+
if (options.force)
|
|
66
|
+
outlet.removeAttribute("data-fuzor-data-ready");
|
|
44
67
|
if (outlet.hasAttribute("data-fuzor-data-ready")) {
|
|
45
68
|
const seed = outlet.ownerDocument.querySelector("script[data-fuzor-route-data]");
|
|
46
69
|
if (seed) {
|
|
47
70
|
const saved = JSON.parse(seed.textContent ?? "{}");
|
|
48
|
-
if (saved.search === (options.search ?? outlet.ownerDocument.defaultView?.location.search ?? ""))
|
|
49
|
-
|
|
71
|
+
if (saved.search === (options.search ?? outlet.ownerDocument.defaultView?.location.search ?? "")) {
|
|
72
|
+
outlet.removeAttribute("data-fuzor-data-ready");
|
|
73
|
+
const promise = Promise.resolve(saved.data);
|
|
74
|
+
const url = `${outlet.getAttribute("data-fuzor-data")}${saved.search}`;
|
|
75
|
+
loads.set(outlet, { url, controller: new AbortController(), promise });
|
|
76
|
+
snapshots.set(outlet, { url, page: outlet.ownerDocument.defaultView?.location.pathname ?? "", data: saved.data });
|
|
77
|
+
return promise;
|
|
78
|
+
}
|
|
50
79
|
}
|
|
51
80
|
outlet.removeAttribute("data-fuzor-data-ready");
|
|
52
81
|
}
|
|
53
82
|
const endpoint = outlet.getAttribute("data-fuzor-data");
|
|
83
|
+
const previous = snapshots.get(outlet);
|
|
54
84
|
abortRouteData(outlet);
|
|
55
85
|
if (!endpoint)
|
|
56
86
|
return Promise.resolve(undefined);
|
|
57
87
|
const window = outlet.ownerDocument.defaultView;
|
|
58
88
|
const search = options.search ?? window?.location.search ?? "";
|
|
59
89
|
const url = `${endpoint}${search}`;
|
|
90
|
+
const page = window?.location.pathname ?? "";
|
|
91
|
+
if (previous?.url === url && previous.page === page)
|
|
92
|
+
snapshots.set(outlet, previous);
|
|
60
93
|
const controller = new AbortController();
|
|
94
|
+
const signal = options.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;
|
|
61
95
|
const request = options.fetch ?? window?.fetch?.bind(window) ?? fetch;
|
|
62
96
|
markSlots(outlet, "pending");
|
|
63
97
|
// Page-level indicators; those inside islands belong to island activation.
|
|
64
98
|
const loading = showLoading([...outlet.querySelectorAll("fuzor-loading")].filter(element => !element.closest("fuzor-island")));
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
outlet
|
|
79
|
-
|
|
80
|
-
}
|
|
99
|
+
signal.addEventListener("abort", loading.cancel, { once: true });
|
|
100
|
+
const publish = ({ data, nativeKeys }) => {
|
|
101
|
+
if (signal.aborted)
|
|
102
|
+
return;
|
|
103
|
+
const current = loads.get(outlet);
|
|
104
|
+
if (current?.mutedNative && nativeKeys) {
|
|
105
|
+
nativeKeys = new Set([...nativeKeys].filter(key => !current.mutedNative.has(key)));
|
|
106
|
+
const old = snapshots.get(outlet).data, incoming = data;
|
|
107
|
+
data = { ...(current.muteBase ? old : incoming), __fuzor_native: { ...old.__fuzor_native, ...Object.fromEntries([...nativeKeys].map(key => [key, incoming.__fuzor_native[key]])) } };
|
|
108
|
+
}
|
|
109
|
+
snapshots.set(outlet, { url, page, data });
|
|
110
|
+
if (current?.controller === controller)
|
|
111
|
+
loads.set(outlet, { ...current, promise: Promise.resolve(data) });
|
|
112
|
+
fillDataSlots(outlet, data, name => !nativeKeys || !name.startsWith("__fuzor_native.") || nativeKeys.has(name.split(".")[1]));
|
|
113
|
+
outlet.dispatchEvent(new (window?.CustomEvent ?? CustomEvent)("fuzor:data", { detail: { data, nativeKeys } }));
|
|
114
|
+
};
|
|
115
|
+
const fail = (error) => {
|
|
81
116
|
loading.cancel();
|
|
82
|
-
if (!
|
|
117
|
+
if (!signal.aborted) {
|
|
83
118
|
markSlots(outlet, "failed");
|
|
84
119
|
outlet.dispatchEvent(new (window?.CustomEvent ?? CustomEvent)("fuzor:data-error", { detail: { error } }));
|
|
85
120
|
}
|
|
86
|
-
|
|
87
|
-
|
|
121
|
+
};
|
|
122
|
+
const finish = () => { const current = loads.get(outlet); if (current?.controller === controller)
|
|
123
|
+
loads.set(outlet, { ...current, following: false }); void loading.finish(); signal.removeEventListener("abort", loading.cancel); };
|
|
124
|
+
const promise = Effect.runPromise(Effect.gen(function* () {
|
|
125
|
+
const response = yield* Effect.tryPromise({ try: () => request(url, { headers: { accept: "application/json", ...transport?.headers, ...(window?.location ? { "x-fuzor-page": window.location.pathname } : {}) }, signal }), catch: error => error });
|
|
126
|
+
if (!response.ok)
|
|
127
|
+
return yield* Effect.fail(new RouteDataError(response.status, `Server data request failed with ${response.status}`));
|
|
128
|
+
const session = transport ? yield* transport.open(response, { outlet, scope: appRelative(page, endpoint) + search, signal, ...(previous?.page === page ? { previous: previous.data } : {}) })
|
|
129
|
+
: { data: (yield* Effect.tryPromise({ try: () => response.json(), catch: error => error })).data };
|
|
130
|
+
publish({ data: session.data });
|
|
131
|
+
if (session.follow) {
|
|
132
|
+
const current = loads.get(outlet);
|
|
133
|
+
if (current?.controller === controller)
|
|
134
|
+
loads.set(outlet, { ...current, following: true });
|
|
135
|
+
Effect.runFork(session.follow(publish).pipe(Effect.catch(error => Effect.sync(() => fail(error))), Effect.ensuring(Effect.sync(finish))), { signal });
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
finish();
|
|
139
|
+
return session.data;
|
|
140
|
+
}).pipe(Effect.tapError(error => Effect.sync(() => { fail(error); finish(); }))));
|
|
88
141
|
// Callers that only await routeData() must not produce unhandled rejections.
|
|
89
142
|
promise.catch(() => { });
|
|
90
143
|
loads.set(outlet, { url, controller, promise });
|
|
@@ -93,6 +146,29 @@ export function loadRouteData(outlet, options = {}) {
|
|
|
93
146
|
export function abortRouteData(outlet) {
|
|
94
147
|
loads.get(outlet)?.controller.abort();
|
|
95
148
|
loads.delete(outlet);
|
|
149
|
+
snapshots.delete(outlet);
|
|
150
|
+
}
|
|
151
|
+
/** Apply server-owned complete seeds; omitted instances retain their current data and are not notified. */
|
|
152
|
+
export function patchRouteData(outlet, patch, search, signal) {
|
|
153
|
+
validateDataPatch(patch);
|
|
154
|
+
if (signal.aborted || !outlet.isConnected)
|
|
155
|
+
return;
|
|
156
|
+
const url = `${outlet.getAttribute("data-fuzor-data")}${search}`, previous = snapshots.get(outlet);
|
|
157
|
+
if (!previous || previous.url !== url || previous.page !== (outlet.ownerDocument.defaultView?.location.pathname ?? "") || !previous.data || typeof previous.data !== "object" || Array.isArray(previous.data))
|
|
158
|
+
throw new Error("Server data patch has no matching page snapshot");
|
|
159
|
+
const nativeKeys = new Set(Object.keys(patch.native));
|
|
160
|
+
if (patch.base === undefined && !nativeKeys.size)
|
|
161
|
+
return;
|
|
162
|
+
const old = previous.data;
|
|
163
|
+
const data = { ...(patch.base ?? old), __fuzor_native: { ...(old.__fuzor_native ?? {}), ...patch.native } };
|
|
164
|
+
const current = loads.get(outlet);
|
|
165
|
+
if (!current?.following)
|
|
166
|
+
abortRouteData(outlet);
|
|
167
|
+
snapshots.set(outlet, { url, page: previous.page, data });
|
|
168
|
+
loads.set(outlet, current?.following ? { ...current, promise: Promise.resolve(data), mutedNative: new Set([...current.mutedNative ?? [], ...nativeKeys]), muteBase: current.muteBase || patch.base !== undefined } : { url, controller: new AbortController(), promise: Promise.resolve(data) });
|
|
169
|
+
fillDataSlots(outlet, data, (name, slot) => slot.getAttribute("data-fuzor-state") === "pending" || (name.startsWith("__fuzor_native.") ? nativeKeys.has(name.split(".")[1]) : patch.base !== undefined));
|
|
170
|
+
const window = outlet.ownerDocument.defaultView;
|
|
171
|
+
outlet.dispatchEvent(new (window?.CustomEvent ?? CustomEvent)("fuzor:data", { detail: { data, nativeKeys } }));
|
|
96
172
|
}
|
|
97
173
|
/**
|
|
98
174
|
* Data for the page containing `element`, for islands. Shares the outlet's current request and starts one
|
package/dist/runtime/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/runtime/data.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,cAAe,SAAQ,KAAK;IAElB;IADZ,IAAI,GAAG,gBAAgB,CAAC;IACjC,YAAqB,MAA0B,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAA9D,WAAM,GAAN,MAAM,CAAoB;IAAqC,CAAC;CACtF;AAGD,MAAM,KAAK,GAAG,IAAI,OAAO,EAAiB,CAAC;AAQ3C,SAAS,OAAO,CAAC,IAAa,EAAE,IAAY;IAC1C,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAChG,KAAK,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,IAAa;IAC3D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACzF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB,EAAE,KAA2B;IAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC7G,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe,EAAE,UAAgC,EAAE;IAC/E,IAAI,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;QACjF,IAAI,IAAI,EAAE,CAAC;YAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;YAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QACvM,MAAM,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACxD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IAC/D,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACtE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7B,2EAA2E;IAC3E,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC/H,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAClH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC3C,gFAAgF;QAChF,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,KAAK,CAAC,EAAE;QACT,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,KAAK,YAAY,cAAc,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5H,CAAC,CAAC,CAAC;IACH,6EAA6E;IAC7E,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;IACtC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAClG,kGAAkG;IAClG,MAAM,MAAM,GAAG,CAAC,IAAU,EAAoB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACvG,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/runtime/data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Scope from "effect/Scope";
|
|
3
|
+
export type DocsSearchResult = {
|
|
4
|
+
id: number;
|
|
5
|
+
path: string;
|
|
6
|
+
title: string;
|
|
7
|
+
snippet: string;
|
|
8
|
+
};
|
|
9
|
+
export type DocsSearchAnswer = {
|
|
10
|
+
query: string;
|
|
11
|
+
status: "idle" | "loading" | "ready" | "fallback";
|
|
12
|
+
rows: DocsSearchResult[];
|
|
13
|
+
};
|
|
3
14
|
export type DocsSearchOptions = {
|
|
4
15
|
readonly document: Document;
|
|
5
16
|
readonly base?: string;
|
|
6
17
|
readonly fetch?: typeof globalThis.fetch;
|
|
7
|
-
readonly openDialog?: (root: HTMLElement) =>
|
|
18
|
+
readonly openDialog?: (root: HTMLElement) => Effect.Effect<void, unknown>;
|
|
8
19
|
};
|
|
9
|
-
/**
|
|
20
|
+
/** Post-commit notification adopts text entered before the native listener loaded. */
|
|
21
|
+
export declare function refreshDocsSearch(element: HTMLElement): void;
|
|
22
|
+
/** A synchronous native action reads the latest input and the external index cache.
|
|
23
|
+
* Fetch completion sends an input notification; it never writes cells or renders DOM.
|
|
24
|
+
*/
|
|
25
|
+
export declare function readDocsSearch(element: HTMLElement): DocsSearchAnswer;
|
|
26
|
+
/** Browser I/O/keyboard adapter. The compiled HTML owns query, result state and all DOM. */
|
|
10
27
|
export declare const mountDocsSearchEffect: (options: DocsSearchOptions) => Effect.Effect<void, never, Scope.Scope>;
|
|
11
|
-
|
|
12
|
-
export declare function mountDocsSearch(options: DocsSearchOptions): Promise<() => void>;
|
|
28
|
+
export declare function mountDocsSearch(options: DocsSearchOptions): Promise<() => Promise<void>>;
|
|
13
29
|
//# sourceMappingURL=docs-search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search.d.ts","sourceRoot":"","sources":["../../src/runtime/docs-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"docs-search.d.ts","sourceRoot":"","sources":["../../src/runtime/docs-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAQtC,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5F,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IAAC,IAAI,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAC9H,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3E,CAAC;AAWF,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAG5D;AAQD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,CAqBrE;AAsBD,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,GAAI,SAAS,iBAAiB,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CA0DvG,CAAC;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAGxF"}
|