@ecopages/radiant 0.3.0-beta.2 → 0.3.0-beta.3
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/README.md +11 -7
- package/client/app-bootstrap.js +2 -2
- package/client/app-bootstrap.js.map +2 -2
- package/client/hydrator.js +2 -2
- package/client/hydrator.js.map +2 -2
- package/client/install-hydrator.js +2 -2
- package/client/install-hydrator.js.map +2 -2
- package/context/context-consumer-bootstrap.js +2 -2
- package/context/context-consumer-bootstrap.js.map +4 -4
- package/context/context-consumer-runtime.js +2 -2
- package/context/context-consumer-runtime.js.map +4 -4
- package/context/context-host.js +2 -2
- package/context/context-host.js.map +2 -2
- package/context/context-provider.js +2 -2
- package/context/context-provider.js.map +2 -2
- package/context/context-ssr-bridge.d.ts +1 -1
- package/context/context-ssr-bridge.js +2 -2
- package/context/context-ssr-bridge.js.map +3 -3
- package/context/create-context.js +2 -2
- package/context/create-context.js.map +2 -2
- package/context/decorators/consume-context.js +2 -2
- package/context/decorators/consume-context.js.map +4 -4
- package/context/decorators/context-selection-delivery.js +2 -2
- package/context/decorators/context-selection-delivery.js.map +2 -2
- package/context/decorators/context-selector.js +2 -2
- package/context/decorators/context-selector.js.map +4 -4
- package/context/decorators/legacy/consume-context.js +2 -2
- package/context/decorators/legacy/consume-context.js.map +4 -4
- package/context/decorators/legacy/context-selector-field.js +2 -2
- package/context/decorators/legacy/context-selector-field.js.map +4 -4
- package/context/decorators/legacy/context-selector.js +2 -2
- package/context/decorators/legacy/context-selector.js.map +4 -4
- package/context/decorators/legacy/provide-context.js +2 -2
- package/context/decorators/legacy/provide-context.js.map +2 -2
- package/context/decorators/on-context-update.js +2 -2
- package/context/decorators/on-context-update.js.map +4 -4
- package/context/decorators/provide-context.js +2 -2
- package/context/decorators/provide-context.js.map +2 -2
- package/context/decorators/standard/consume-context.js +2 -2
- package/context/decorators/standard/consume-context.js.map +4 -4
- package/context/decorators/standard/context-selector-field.js +2 -2
- package/context/decorators/standard/context-selector-field.js.map +4 -4
- package/context/decorators/standard/context-selector.js +2 -2
- package/context/decorators/standard/context-selector.js.map +4 -4
- package/context/decorators/standard/provide-context.js +2 -2
- package/context/decorators/standard/provide-context.js.map +2 -2
- package/context/decorators/standard-legacy-dispatch.js +2 -2
- package/context/decorators/standard-legacy-dispatch.js.map +2 -2
- package/context/events.js +2 -2
- package/context/events.js.map +2 -2
- package/context/hydration-script.js +2 -2
- package/context/hydration-script.js.map +2 -2
- package/context/index.js +2 -2
- package/context/index.js.map +4 -4
- package/controller-registry.js +2 -2
- package/controller-registry.js.map +2 -2
- package/core/controller-metadata.js +2 -2
- package/core/controller-metadata.js.map +2 -2
- package/core/custom-element-metadata.js +2 -2
- package/core/custom-element-metadata.js.map +2 -2
- package/core/event-subscription-registry.js +2 -2
- package/core/event-subscription-registry.js.map +2 -2
- package/core/host-ssr-registry.js +2 -2
- package/core/host-ssr-registry.js.map +2 -2
- package/core/hydration-capable-host.js +2 -2
- package/core/hydration-capable-host.js.map +2 -2
- package/core/hydration-codec.js +2 -2
- package/core/hydration-codec.js.map +2 -2
- package/core/radiant-controller.js +2 -2
- package/core/radiant-controller.js.map +2 -2
- package/core/radiant-element-brand.d.ts +2 -0
- package/core/radiant-element-brand.js +3 -0
- package/core/radiant-element-brand.js.map +10 -0
- package/core/radiant-element-ssr-host-source.d.ts +32 -0
- package/core/radiant-element-ssr-host-source.js +3 -0
- package/core/radiant-element-ssr-host-source.js.map +11 -0
- package/core/radiant-element-ssr-host.d.ts +5 -6
- package/core/radiant-element-ssr-host.js +1 -2
- package/core/radiant-element-ssr-host.js.map +3 -4
- package/core/radiant-element-ssr-registry.d.ts +24 -11
- package/core/radiant-element-ssr-registry.js +2 -2
- package/core/radiant-element-ssr-registry.js.map +3 -3
- package/core/radiant-element.d.ts +5 -3
- package/core/radiant-element.js +2 -2
- package/core/radiant-element.js.map +6 -5
- package/core/radiant-hydrator-state.js +2 -2
- package/core/radiant-hydrator-state.js.map +2 -2
- package/core/reactive-binding-adapter.js +2 -2
- package/core/reactive-binding-adapter.js.map +2 -2
- package/core/reactive-host.js +2 -2
- package/core/reactive-host.js.map +2 -2
- package/core/reactive-jsx-value.js +2 -2
- package/core/reactive-jsx-value.js.map +2 -2
- package/core/reactive-prop-core.js +2 -2
- package/core/reactive-prop-core.js.map +2 -2
- package/core/reactive-prop-metadata.js +2 -2
- package/core/reactive-prop-metadata.js.map +2 -2
- package/core/reactive-property-state.js +2 -2
- package/core/reactive-property-state.js.map +2 -2
- package/core/reactivity-adapter.js +2 -2
- package/core/reactivity-adapter.js.map +2 -2
- package/core/reactivity-runtime.js +2 -2
- package/core/reactivity-runtime.js.map +2 -2
- package/core/reactivity-signals.js +2 -2
- package/core/reactivity-signals.js.map +2 -2
- package/core/render-runtime.js +2 -2
- package/core/render-runtime.js.map +2 -2
- package/core/render-scheduler.js +2 -2
- package/core/render-scheduler.js.map +2 -2
- package/core/slot-projection-runtime.js +2 -2
- package/core/slot-projection-runtime.js.map +2 -2
- package/core/ssr-preparation.js +2 -2
- package/core/ssr-preparation.js.map +2 -2
- package/decorators/attr.js +2 -2
- package/decorators/attr.js.map +2 -2
- package/decorators/bound.js +2 -2
- package/decorators/bound.js.map +2 -2
- package/decorators/bridge.js +2 -2
- package/decorators/bridge.js.map +2 -2
- package/decorators/controller.js +2 -2
- package/decorators/controller.js.map +2 -2
- package/decorators/custom-element.js +2 -2
- package/decorators/custom-element.js.map +2 -2
- package/decorators/debounce.js +2 -2
- package/decorators/debounce.js.map +2 -2
- package/decorators/event.js +2 -2
- package/decorators/event.js.map +2 -2
- package/decorators/legacy/attr.js +2 -2
- package/decorators/legacy/attr.js.map +2 -2
- package/decorators/legacy/bound.js +2 -2
- package/decorators/legacy/bound.js.map +2 -2
- package/decorators/legacy/custom-element.js +2 -2
- package/decorators/legacy/custom-element.js.map +2 -2
- package/decorators/legacy/debounce.js +2 -2
- package/decorators/legacy/debounce.js.map +2 -2
- package/decorators/legacy/event.js +2 -2
- package/decorators/legacy/event.js.map +2 -2
- package/decorators/legacy/host-readiness.js +2 -2
- package/decorators/legacy/host-readiness.js.map +2 -2
- package/decorators/legacy/instance-initializers.js +2 -2
- package/decorators/legacy/instance-initializers.js.map +2 -2
- package/decorators/legacy/member-bootstrap.js +2 -2
- package/decorators/legacy/member-bootstrap.js.map +2 -2
- package/decorators/legacy/on-event.js +2 -2
- package/decorators/legacy/on-event.js.map +2 -2
- package/decorators/legacy/on-updated.js +2 -2
- package/decorators/legacy/on-updated.js.map +2 -2
- package/decorators/legacy/query-slot.js +2 -2
- package/decorators/legacy/query-slot.js.map +2 -2
- package/decorators/legacy/query.js +2 -2
- package/decorators/legacy/query.js.map +2 -2
- package/decorators/legacy/reactive-field.js +2 -2
- package/decorators/legacy/reactive-field.js.map +2 -2
- package/decorators/legacy/reactive-prop.js +2 -2
- package/decorators/legacy/reactive-prop.js.map +2 -2
- package/decorators/legacy/signal.js +2 -2
- package/decorators/legacy/signal.js.map +2 -2
- package/decorators/on-event.js +2 -2
- package/decorators/on-event.js.map +2 -2
- package/decorators/on-updated.js +2 -2
- package/decorators/on-updated.js.map +2 -2
- package/decorators/prop.js +2 -2
- package/decorators/prop.js.map +2 -2
- package/decorators/query-slot.js +2 -2
- package/decorators/query-slot.js.map +2 -2
- package/decorators/query.js +2 -2
- package/decorators/query.js.map +2 -2
- package/decorators/shared/auto-bind.js +2 -2
- package/decorators/shared/auto-bind.js.map +2 -2
- package/decorators/shared/reactive-attr.js +2 -2
- package/decorators/shared/reactive-attr.js.map +2 -2
- package/decorators/signal.js +2 -2
- package/decorators/signal.js.map +2 -2
- package/decorators/standard/attr.js +2 -2
- package/decorators/standard/attr.js.map +2 -2
- package/decorators/standard/bound.js +2 -2
- package/decorators/standard/bound.js.map +2 -2
- package/decorators/standard/custom-element.js +2 -2
- package/decorators/standard/custom-element.js.map +2 -2
- package/decorators/standard/debounce.js +2 -2
- package/decorators/standard/debounce.js.map +2 -2
- package/decorators/standard/event.js +2 -2
- package/decorators/standard/event.js.map +2 -2
- package/decorators/standard/on-event.js +2 -2
- package/decorators/standard/on-event.js.map +2 -2
- package/decorators/standard/on-updated.js +2 -2
- package/decorators/standard/on-updated.js.map +2 -2
- package/decorators/standard/query-slot.js +2 -2
- package/decorators/standard/query-slot.js.map +2 -2
- package/decorators/standard/query.js +2 -2
- package/decorators/standard/query.js.map +2 -2
- package/decorators/standard/reactive-field.js +2 -2
- package/decorators/standard/reactive-field.js.map +2 -2
- package/decorators/standard/reactive-prop.js +2 -2
- package/decorators/standard/reactive-prop.js.map +2 -2
- package/decorators/standard/signal.js +2 -2
- package/decorators/standard/signal.js.map +2 -2
- package/decorators/state.js +2 -2
- package/decorators/state.js.map +2 -2
- package/helpers/create-event-listener.js +2 -2
- package/helpers/create-event-listener.js.map +2 -2
- package/helpers/create-event.js +2 -2
- package/helpers/create-event.js.map +2 -2
- package/helpers/create-query-slot.js +2 -2
- package/helpers/create-query-slot.js.map +2 -2
- package/helpers/create-query.js +2 -2
- package/helpers/create-query.js.map +2 -2
- package/helpers/debounce.js +2 -2
- package/helpers/debounce.js.map +2 -2
- package/helpers/index.js +2 -2
- package/helpers/index.js.map +2 -2
- package/index.js +2 -2
- package/index.js.map +6 -5
- package/package.json +13 -3
- package/server/assert-light-dom-ssr.d.ts +10 -0
- package/server/assert-light-dom-ssr.js +3 -0
- package/server/assert-light-dom-ssr.js.map +10 -0
- package/server/context-ssr.d.ts +8 -19
- package/server/context-ssr.js +2 -2
- package/server/context-ssr.js.map +5 -5
- package/server/host-attribute-serialization.js +2 -2
- package/server/host-attribute-serialization.js.map +4 -4
- package/server/host-script-composition.js +2 -2
- package/server/host-script-composition.js.map +2 -2
- package/server/html-parser.js +2 -2
- package/server/html-parser.js.map +2 -2
- package/server/install-light-dom-shim.d.ts +2 -1
- package/server/install-light-dom-shim.js +2 -2
- package/server/install-light-dom-shim.js.map +9 -8
- package/server/install-ssr-runtime.d.ts +8 -0
- package/server/install-ssr-runtime.js +3 -0
- package/server/install-ssr-runtime.js.map +21 -0
- package/server/install-ssr-scope-adapters.d.ts +1 -0
- package/server/install-ssr-scope-adapters.js +3 -0
- package/server/install-ssr-scope-adapters.js.map +11 -0
- package/server/light-dom-shim.js +2 -2
- package/server/light-dom-shim.js.map +8 -7
- package/server/minimal-dom/dataset.d.ts +2 -0
- package/server/minimal-dom/dataset.js +3 -0
- package/server/minimal-dom/dataset.js.map +10 -0
- package/server/minimal-dom/document.js +2 -2
- package/server/minimal-dom/document.js.map +5 -6
- package/server/minimal-dom/html.d.ts +1 -2
- package/server/minimal-dom/html.js +2 -2
- package/server/minimal-dom/html.js.map +6 -5
- package/server/minimal-dom/install.d.ts +1 -0
- package/server/minimal-dom/install.js +2 -2
- package/server/minimal-dom/install.js.map +8 -7
- package/server/minimal-dom/nodes.d.ts +9 -0
- package/server/minimal-dom/nodes.js +3 -0
- package/server/minimal-dom/nodes.js.map +12 -0
- package/server/project-root.js +2 -2
- package/server/project-root.js.map +4 -5
- package/server/radiant-element-ssr-bridge.d.ts +9 -9
- package/server/radiant-element-ssr-bridge.js +2 -2
- package/server/radiant-element-ssr-bridge.js.map +27 -14
- package/server/radiant-element-ssr-extractor.d.ts +5 -1
- package/server/radiant-element-ssr-extractor.js +2 -2
- package/server/radiant-element-ssr-extractor.js.map +6 -5
- package/server/radiant-element-ssr-service.d.ts +4 -1
- package/server/radiant-element-ssr-service.js +2 -2
- package/server/radiant-element-ssr-service.js.map +15 -12
- package/server/radiant-element-ssr.d.ts +1 -1
- package/server/radiant-element-ssr.js +2 -2
- package/server/radiant-element-ssr.js.map +27 -14
- package/server/render-component.d.ts +3 -5
- package/server/render-component.js +2 -2
- package/server/render-component.js.map +27 -20
- package/server/render-controller.d.ts +1 -0
- package/server/render-controller.js +2 -2
- package/server/render-controller.js.map +30 -23
- package/server/render-fragment.js +2 -2
- package/server/render-fragment.js.map +2 -2
- package/server/slot-projection-html.js +2 -2
- package/server/slot-projection-html.js.map +5 -6
- package/signals/host-resource.js +2 -2
- package/signals/host-resource.js.map +2 -2
- package/signals/host-signal.js +2 -2
- package/signals/host-signal.js.map +2 -2
- package/signals/hydration-script.js +2 -2
- package/signals/hydration-script.js.map +2 -2
- package/tools/escape-css-identifier.js +2 -2
- package/tools/escape-css-identifier.js.map +2 -2
- package/tools/escape-script-json.js +2 -2
- package/tools/escape-script-json.js.map +2 -2
- package/tools/event-emitter.js +2 -2
- package/tools/event-emitter.js.map +2 -2
- package/tools/index.js +2 -2
- package/tools/index.js.map +2 -2
- package/tools/render-jsx-template.js +2 -2
- package/tools/render-jsx-template.js.map +2 -2
- package/types.js +2 -2
- package/types.js.map +2 -2
- package/utils/attribute-utils.js +2 -2
- package/utils/attribute-utils.js.map +2 -2
- package/utils/escape-html-attribute.js +2 -2
- package/utils/escape-html-attribute.js.map +2 -2
- package/utils/index.js +2 -2
- package/utils/index.js.map +2 -2
- package/server/internal-radiant-host.d.ts +0 -2
- package/server/internal-radiant-host.js +0 -3
- package/server/internal-radiant-host.js.map +0 -9
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/
|
|
3
|
+
"sources": ["../src/server/minimal-dom/dataset.ts", "../src/utils/escape-html-attribute.ts", "../src/server/minimal-dom/nodes.ts", "../src/server/minimal-dom/document.ts", "../src/server/html-parser.ts", "../src/server/minimal-dom/html.ts", "../src/tools/escape-css-identifier.ts", "../src/server/minimal-dom/install.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"export function toDataAttributeName(property: string): string {\n\treturn `data-${property.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n}\n\nexport function toDatasetPropertyName(attributeName: string): string {\n\treturn attributeName.replace(/-([a-z])/g, (_match, character: string) => character.toUpperCase());\n}\n",
|
|
5
6
|
"/** Escapes a string for safe interpolation inside a double-quoted HTML attribute value. */\nexport function escapeHtmlAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n",
|
|
7
|
+
"import { escapeHtmlAttribute } from '../../utils/escape-html-attribute';\nimport { toDataAttributeName, toDatasetPropertyName } from './dataset';\n\ntype MinimalParentNode = Node & ParentNode;\n\ntype HtmlParsers = {\n\tparseHtmlToNodes: (html: string, ownerDocument: Document | null) => Node[];\n\tserializeNodeHtml: (node: Node) => string;\n};\n\nlet htmlParsers: HtmlParsers | undefined;\n\n/**\n * Registers HTML parse/serialize helpers from `./html` to break a circular import.\n * Import `./html` (or the light-DOM install entry) before using `innerHTML`.\n */\nexport function registerMinimalDomHtmlParsers(parsers: HtmlParsers): void {\n\thtmlParsers = parsers;\n}\n\nfunction ensureHtmlParsers(): HtmlParsers {\n\tif (!htmlParsers) {\n\t\tthrow new Error(\n\t\t\t'Minimal DOM HTML parsers are not registered. Import @ecopages/radiant/server/install-ssr-runtime (or ./html) before using innerHTML.',\n\t\t);\n\t}\n\n\treturn htmlParsers;\n}\n\nexport class MinimalNode extends EventTarget {\n\tstatic readonly DOCUMENT_NODE = 9;\n\tstatic readonly ELEMENT_NODE = 1;\n\tstatic readonly TEXT_NODE = 3;\n\n\tpublic childNodes: Node[] = [];\n\tpublic ownerDocument: Document | null;\n\tpublic parentNode: MinimalParentNode | null = null;\n\n\tconstructor(\n\t\tpublic readonly nodeType: number,\n\t\townerDocument: Document | null = null,\n\t) {\n\t\tsuper();\n\t\tthis.ownerDocument = ownerDocument;\n\t}\n\n\tappend(...nodes: Array<Node | string>): void {\n\t\tfor (const node of nodes) {\n\t\t\tthis.appendChild(typeof node === 'string' ? createTextNode(node) : node);\n\t\t}\n\t}\n\n\tappendChild<TNode extends Node>(node: TNode): TNode {\n\t\tif ('parentNode' in node && node.parentNode && 'removeChild' in node.parentNode) {\n\t\t\t(node.parentNode as Node & { removeChild(node: Node): Node }).removeChild(node);\n\t\t}\n\n\t\tthis.childNodes.push(node);\n\t\t(node as Node & { ownerDocument: Document | null }).ownerDocument =\n\t\t\tthis.nodeType === MinimalNode.DOCUMENT_NODE ? (this as unknown as Document) : this.ownerDocument;\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = this as unknown as MinimalParentNode;\n\t\treturn node;\n\t}\n\n\tremoveChild<TNode extends Node>(node: TNode): TNode {\n\t\tconst nodeIndex = this.childNodes.indexOf(node);\n\n\t\tif (nodeIndex === -1) {\n\t\t\treturn node;\n\t\t}\n\n\t\tthis.childNodes.splice(nodeIndex, 1);\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\treturn node;\n\t}\n\n\treplaceChildren(...nodes: Array<Node | string>): void {\n\t\tfor (const child of this.childNodes) {\n\t\t\t(child as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\t}\n\n\t\tthis.childNodes = [];\n\t\tthis.append(...nodes);\n\t}\n\n\tget textContent(): string | null {\n\t\treturn this.childNodes.map((child) => child.textContent ?? '').join('');\n\t}\n\n\tset textContent(value: string | null) {\n\t\tthis.replaceChildren(value ?? '');\n\t}\n\n\tgetRootNode(): Node {\n\t\tlet current: Node = this as unknown as Node;\n\n\t\twhile ('parentNode' in current && current.parentNode) {\n\t\t\tcurrent = current.parentNode;\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nexport class MinimalTextNode extends MinimalNode {\n\tconstructor(\n\t\tprivate value: string,\n\t\townerDocument: Document | null = getInstalledDocumentLike(),\n\t) {\n\t\tsuper(MinimalNode.TEXT_NODE, ownerDocument);\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.value;\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.value = value ?? '';\n\t}\n}\n\nclass MinimalClassList {\n\tconstructor(private readonly element: MinimalElement) {}\n\n\tadd(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tif (token !== '') {\n\t\t\t\tnextTokens.add(token);\n\t\t\t}\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\tremove(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tnextTokens.delete(token);\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\ttoggle(token: string, force?: boolean): boolean {\n\t\tconst hasToken = this.contains(token);\n\t\tconst shouldAdd = force ?? !hasToken;\n\n\t\tif (shouldAdd) {\n\t\t\tthis.add(token);\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.remove(token);\n\t\treturn false;\n\t}\n\n\tcontains(token: string): boolean {\n\t\treturn this.readTokens().includes(token);\n\t}\n\n\ttoString(): string {\n\t\treturn this.value;\n\t}\n\n\tget value(): string {\n\t\treturn this.element.getAttribute('class') ?? '';\n\t}\n\n\tprivate readTokens(): string[] {\n\t\treturn this.value\n\t\t\t.split(/\\s+/)\n\t\t\t.map((token) => token.trim())\n\t\t\t.filter((token) => token.length > 0);\n\t}\n\n\tprivate writeTokens(tokens: string[]): void {\n\t\tif (tokens.length === 0) {\n\t\t\tthis.element.removeAttribute('class');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.element.setAttribute('class', tokens.join(' '));\n\t}\n}\n\nexport class MinimalElement extends MinimalNode {\n\tprivate attributes = new Map<string, string>();\n\tprivate classListValue?: MinimalClassList;\n\tprivate datasetValue?: DOMStringMap;\n\tprivate fragmentHtml?: string;\n\tprivate fragmentText?: string;\n\n\tpublic readonly localName: string;\n\tpublic readonly tagName: string;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(MinimalNode.ELEMENT_NODE, ownerDocument);\n\t\tthis.localName = tagName.toLowerCase();\n\t\tthis.tagName = this.localName.toUpperCase();\n\t}\n\n\tget id(): string {\n\t\treturn this.getAttribute('id') ?? '';\n\t}\n\n\tset id(value: string) {\n\t\tif (value === '') {\n\t\t\tthis.removeAttribute('id');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAttribute('id', value);\n\t}\n\n\tget classList(): DOMTokenList {\n\t\tthis.classListValue ??= new MinimalClassList(this);\n\t\treturn this.classListValue as unknown as DOMTokenList;\n\t}\n\n\tget dataset(): DOMStringMap {\n\t\tthis.datasetValue ??= new Proxy(\n\t\t\t{},\n\t\t\t{\n\t\t\t\tdeleteProperty: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.removeAttribute(toDataAttributeName(property));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tget: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.getAttribute(toDataAttributeName(property)) ?? undefined;\n\t\t\t\t},\n\t\t\t\tgetOwnPropertyDescriptor: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tvalue: this.getAttribute(toDataAttributeName(property)) ?? undefined,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\thas: (_target, property) => {\n\t\t\t\t\treturn typeof property === 'string' && this.hasAttribute(toDataAttributeName(property));\n\t\t\t\t},\n\t\t\t\townKeys: () => {\n\t\t\t\t\treturn this.getAttributeNames()\n\t\t\t\t\t\t.filter((name) => name.startsWith('data-'))\n\t\t\t\t\t\t.map((name) => toDatasetPropertyName(name.slice(5)));\n\t\t\t\t},\n\t\t\t\tset: (_target, property, value) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setAttribute(toDataAttributeName(property), String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t},\n\t\t) as DOMStringMap;\n\n\t\treturn this.datasetValue;\n\t}\n\n\thasAttribute(name: string): boolean {\n\t\treturn this.attributes.has(name);\n\t}\n\n\tgetAttribute(name: string): string | null {\n\t\treturn this.attributes.get(name) ?? null;\n\t}\n\n\tgetAttributeNames(): string[] {\n\t\treturn Array.from(this.attributes.keys());\n\t}\n\n\tsetAttribute(name: string, value: unknown): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.set(name, String(value));\n\t}\n\n\ttoggleAttribute(name: string, force?: boolean): boolean {\n\t\tconst shouldHaveAttribute = force ?? !this.hasAttribute(name);\n\n\t\tif (shouldHaveAttribute) {\n\t\t\tthis.setAttribute(name, '');\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.removeAttribute(name);\n\t\treturn false;\n\t}\n\n\tremoveAttribute(name: string): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.delete(name);\n\t}\n\n\tquerySelector(): Element | null {\n\t\treturn null;\n\t}\n\n\tquerySelectorAll(): Element[] {\n\t\treturn [];\n\t}\n\n\tmatches(): boolean {\n\t\treturn false;\n\t}\n\n\tget outerHTML(): string {\n\t\tif (this.fragmentHtml !== undefined) {\n\t\t\treturn this.fragmentHtml;\n\t\t}\n\n\t\tconst attributes = Array.from(this.attributes.entries())\n\t\t\t.map(([name, value]) => ` ${name}=\"${escapeHtmlAttribute(value)}\"`)\n\t\t\t.join('');\n\n\t\treturn `<${this.localName}${attributes}>${this.innerHTML}</${this.localName}>`;\n\t}\n\n\tget innerHTML(): string {\n\t\treturn this.childNodes.map((child) => ensureHtmlParsers().serializeNodeHtml(child)).join('');\n\t}\n\n\tset innerHTML(html: string) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = undefined;\n\t\tthis.replaceChildren(...ensureHtmlParsers().parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.fragmentText ?? super.textContent ?? '';\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = value ?? '';\n\t\tsuper.textContent = value;\n\t}\n\n\tsetSerializedFragment(fragmentHtml: string, fragmentText: string, attributes: Record<string, string>): void {\n\t\tthis.fragmentHtml = fragmentHtml;\n\t\tthis.fragmentText = fragmentText;\n\t\tthis.attributes = new Map(Object.entries(attributes));\n\t\tthis.replaceChildren();\n\t}\n}\n\nexport class MinimalEvent {\n\tpublic readonly bubbles: boolean;\n\tpublic readonly cancelable: boolean;\n\tpublic readonly composed: boolean;\n\tpublic readonly type: string;\n\n\tconstructor(type: string, eventInitDict: EventInit = {}) {\n\t\tthis.type = type;\n\t\tthis.bubbles = eventInitDict.bubbles ?? false;\n\t\tthis.cancelable = eventInitDict.cancelable ?? false;\n\t\tthis.composed = eventInitDict.composed ?? false;\n\t}\n}\n\nexport class MinimalCustomEvent<T = unknown> extends MinimalEvent {\n\tpublic readonly detail: T;\n\n\tconstructor(type: string, eventInitDict: CustomEventInit<T> = {}) {\n\t\tsuper(type, eventInitDict);\n\t\tthis.detail = eventInitDict.detail as T;\n\t}\n}\n\nexport class MinimalHTMLElement extends MinimalElement {\n\tpublic isConnected = false;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(tagName, ownerDocument);\n\t}\n\n\tinsertAdjacentHTML(_position: InsertPosition, html: string): void {\n\t\tthis.append(...ensureHtmlParsers().parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\tconnectedCallback?(): void;\n\tattributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;\n\tdisconnectedCallback?(): void;\n}\n\nexport class MinimalHtmlScriptElement extends MinimalHTMLElement {\n\tconstructor(ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper('script', ownerDocument);\n\t}\n}\n\nexport function createTextNode(value: string): Node {\n\treturn new MinimalTextNode(value, getInstalledDocumentLike()) as unknown as Node;\n}\n\nexport function getInstalledDocumentLike(): Document | null {\n\treturn ((globalThis as typeof globalThis & { document?: Document }).document ?? null) as Document | null;\n}\n",
|
|
8
|
+
"import { MinimalHtmlScriptElement, MinimalHTMLElement, MinimalNode, MinimalTextNode } from './nodes';\n\nexport type MinimalCustomElementRegistry = {\n\tdefine(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;\n\tget(name: string): CustomElementConstructor | undefined;\n};\n\nexport class MinimalDocument extends MinimalNode {\n\tconstructor() {\n\t\tsuper(MinimalNode.DOCUMENT_NODE);\n\t}\n\n\tcreateElement(tagName: string): HTMLElement {\n\t\treturn (tagName.toLowerCase() === 'script'\n\t\t\t? new MinimalHtmlScriptElement(this as unknown as Document)\n\t\t\t: new MinimalHTMLElement(tagName, this as unknown as Document)) as unknown as HTMLElement;\n\t}\n\n\tcreateTextNode(value: string): Text {\n\t\treturn new MinimalTextNode(value, this as unknown as Document) as unknown as Text;\n\t}\n\n\tquerySelector(): Element | null {\n\t\treturn null;\n\t}\n\n\tquerySelectorAll(): Element[] {\n\t\treturn [];\n\t}\n}\n\nexport class MinimalCustomElementsRegistry implements MinimalCustomElementRegistry {\n\tprivate definitions = new Map<string, CustomElementConstructor>();\n\n\tdefine(name: string, constructor: CustomElementConstructor): void {\n\t\tif (this.definitions.has(name)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.definitions.set(name, constructor);\n\t}\n\n\tget(name: string): CustomElementConstructor | undefined {\n\t\treturn this.definitions.get(name);\n\t}\n}\n",
|
|
6
9
|
"export type ParsedHtmlTag = {\n\tattributes: Record<string, string>;\n\tend: number;\n\tinnerHtml: string;\n\tselfClosing: boolean;\n\ttagName: string;\n\ttype: 'open';\n};\n\nexport type ParsedHtmlToken =\n\t| ParsedHtmlTag\n\t| {\n\t\t\tend: number;\n\t\t\ttype: 'close';\n\t }\n\t| {\n\t\t\tend: number;\n\t\t\ttype: 'comment' | 'declaration';\n\t };\n\nexport const voidElementNames = new Set([\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr',\n]);\n\nexport function collectTopLevelHtmlFragments(html: string): string[] {\n\tconst fragments: string[] = [];\n\tlet index = 0;\n\n\twhile (index < html.length) {\n\t\tconst fragmentStart = index;\n\n\t\tif (html.startsWith('<!--', index)) {\n\t\t\tconst commentEnd = html.indexOf('-->', index + 4);\n\t\t\tindex = commentEnd === -1 ? html.length : commentEnd + 3;\n\t\t\tfragments.push(html.slice(fragmentStart, index));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (html[index] !== '<') {\n\t\t\tconst nextTagIndex = html.indexOf('<', index);\n\t\t\tindex = nextTagIndex === -1 ? html.length : nextTagIndex;\n\t\t\tfragments.push(html.slice(fragmentStart, index));\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst token = parseHtmlTagToken(html, index);\n\n\t\tif (!token) {\n\t\t\tfragments.push(html.slice(fragmentStart));\n\t\t\tbreak;\n\t\t}\n\n\t\tif (token.type !== 'open' || token.selfClosing || voidElementNames.has(token.tagName)) {\n\t\t\tindex = token.end;\n\t\t\tfragments.push(html.slice(fragmentStart, index));\n\t\t\tcontinue;\n\t\t}\n\n\t\tindex = token.end;\n\t\tlet depth = 1;\n\n\t\twhile (index < html.length && depth > 0) {\n\t\t\tconst nextTagIndex = html.indexOf('<', index);\n\n\t\t\tif (nextTagIndex === -1) {\n\t\t\t\tindex = html.length;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst nestedToken = parseHtmlTagToken(html, nextTagIndex);\n\n\t\t\tif (!nestedToken) {\n\t\t\t\tindex = html.length;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tindex = nestedToken.end;\n\n\t\t\tif (nestedToken.type === 'comment' || nestedToken.type === 'declaration') {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nestedToken.type === 'open' && !nestedToken.selfClosing && !voidElementNames.has(nestedToken.tagName)) {\n\t\t\t\tdepth += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nestedToken.type === 'close') {\n\t\t\t\tdepth -= 1;\n\t\t\t}\n\t\t}\n\n\t\tfragments.push(html.slice(fragmentStart, index));\n\t}\n\n\treturn fragments.filter((fragment) => fragment !== '');\n}\n\nexport function findHtmlTagEnd(html: string, startIndex: number): number {\n\tlet quote: '\"' | \"'\" | undefined;\n\n\tfor (let index = startIndex + 1; index < html.length; index += 1) {\n\t\tconst character = html[index];\n\n\t\tif (quote) {\n\t\t\tif (character === quote) {\n\t\t\t\tquote = undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (character === '\"' || character === \"'\") {\n\t\t\tquote = character;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (character === '>') {\n\t\t\treturn index + 1;\n\t\t}\n\t}\n\n\treturn html.length;\n}\n\nexport function parseAttributes(rawAttributes: string): Record<string, string> {\n\tconst attributes: Record<string, string> = {};\n\tconst attributePattern = /([:^@A-Za-z0-9_.-]+)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s\"'>/]+)))?/g;\n\n\tfor (const match of rawAttributes.matchAll(attributePattern)) {\n\t\tconst [, name, doubleQuoted, singleQuoted, bareValue] = match;\n\n\t\tif (!name) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tattributes[name] = doubleQuoted ?? singleQuoted ?? bareValue ?? '';\n\t}\n\n\treturn attributes;\n}\n\nexport function parseHtmlTagToken(html: string, startIndex: number): ParsedHtmlToken | undefined {\n\tif (html.startsWith('<!--', startIndex)) {\n\t\tconst endIndex = html.indexOf('-->', startIndex + 4);\n\t\treturn {\n\t\t\tend: endIndex === -1 ? html.length : endIndex + 3,\n\t\t\ttype: 'comment',\n\t\t};\n\t}\n\n\tconst endIndex = findHtmlTagEnd(html, startIndex);\n\tconst rawToken = html.slice(startIndex + 1, endIndex - 1).trim();\n\n\tif (rawToken === '') {\n\t\treturn undefined;\n\t}\n\n\tif (rawToken.startsWith('!') || rawToken.startsWith('?')) {\n\t\treturn {\n\t\t\tend: endIndex,\n\t\t\ttype: 'declaration',\n\t\t};\n\t}\n\n\tif (rawToken.startsWith('/')) {\n\t\treturn {\n\t\t\tend: endIndex,\n\t\t\ttype: 'close',\n\t\t};\n\t}\n\n\tconst selfClosing = /\\/\\s*$/.test(rawToken);\n\tconst tagBody = selfClosing ? rawToken.replace(/\\/\\s*$/, '').trim() : rawToken;\n\tconst tagName = tagBody.split(/[\\s/>]/, 1)[0]?.toLowerCase() ?? '';\n\tconst attributesStart = tagName.length;\n\tconst rawAttributes = tagBody.slice(attributesStart).trim();\n\tconst innerHtml =\n\t\tselfClosing || voidElementNames.has(tagName)\n\t\t\t? ''\n\t\t\t: extractInnerHtmlFragment(html, startIndex, endIndex, tagName);\n\n\treturn {\n\t\tattributes: parseAttributes(rawAttributes),\n\t\tend: endIndex,\n\t\tinnerHtml,\n\t\tselfClosing,\n\t\ttagName,\n\t\ttype: 'open',\n\t};\n}\n\nexport function extractInnerHtmlFragment(\n\thtml: string,\n\tstartIndex: number,\n\ttagEndIndex: number,\n\ttagName: string,\n): string {\n\tlet index = tagEndIndex;\n\tlet depth = 1;\n\n\twhile (index < html.length && depth > 0) {\n\t\tconst nextTagIndex = html.indexOf('<', index);\n\n\t\tif (nextTagIndex === -1) {\n\t\t\treturn html.slice(tagEndIndex);\n\t\t}\n\n\t\tconst nextTag = parseHtmlTagToken(html, nextTagIndex);\n\n\t\tif (!nextTag) {\n\t\t\treturn html.slice(tagEndIndex);\n\t\t}\n\n\t\tif (\n\t\t\tnextTag.type === 'open' &&\n\t\t\tnextTag.tagName === tagName &&\n\t\t\t!nextTag.selfClosing &&\n\t\t\t!voidElementNames.has(tagName)\n\t\t) {\n\t\t\tdepth += 1;\n\t\t}\n\n\t\tif (nextTag.type === 'close') {\n\t\t\tconst closingName = html\n\t\t\t\t.slice(nextTagIndex + 2, nextTag.end - 1)\n\t\t\t\t.trim()\n\t\t\t\t.toLowerCase();\n\n\t\t\tif (closingName === tagName) {\n\t\t\t\tdepth -= 1;\n\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\treturn html.slice(tagEndIndex, nextTagIndex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tindex = nextTag.end;\n\t}\n\n\treturn html.slice(tagEndIndex);\n}\n",
|
|
7
|
-
"import { escapeHtmlAttribute } from '../../utils/escape-html-attribute';\n\ntype MinimalParentNode = Node & ParentNode;\n\ntype HtmlModule = typeof import('./html');\n\nlet htmlModule: HtmlModule | undefined;\n\nfunction getHtmlModule(): HtmlModule {\n\thtmlModule ??= require('./html') as HtmlModule;\n\treturn htmlModule;\n}\n\nexport class MinimalNode extends EventTarget {\n\tstatic readonly DOCUMENT_NODE = 9;\n\tstatic readonly ELEMENT_NODE = 1;\n\tstatic readonly TEXT_NODE = 3;\n\n\tpublic childNodes: Node[] = [];\n\tpublic ownerDocument: Document | null;\n\tpublic parentNode: MinimalParentNode | null = null;\n\n\tconstructor(\n\t\tpublic readonly nodeType: number,\n\t\townerDocument: Document | null = null,\n\t) {\n\t\tsuper();\n\t\tthis.ownerDocument = ownerDocument;\n\t}\n\n\tappend(...nodes: Array<Node | string>): void {\n\t\tfor (const node of nodes) {\n\t\t\tthis.appendChild(typeof node === 'string' ? createTextNode(node) : node);\n\t\t}\n\t}\n\n\tappendChild<TNode extends Node>(node: TNode): TNode {\n\t\tif ('parentNode' in node && node.parentNode && 'removeChild' in node.parentNode) {\n\t\t\t(node.parentNode as Node & { removeChild(node: Node): Node }).removeChild(node);\n\t\t}\n\n\t\tthis.childNodes.push(node);\n\t\t(node as Node & { ownerDocument: Document | null }).ownerDocument =\n\t\t\tthis.nodeType === MinimalNode.DOCUMENT_NODE ? (this as unknown as Document) : this.ownerDocument;\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = this as unknown as MinimalParentNode;\n\t\treturn node;\n\t}\n\n\tremoveChild<TNode extends Node>(node: TNode): TNode {\n\t\tconst nodeIndex = this.childNodes.indexOf(node);\n\n\t\tif (nodeIndex === -1) {\n\t\t\treturn node;\n\t\t}\n\n\t\tthis.childNodes.splice(nodeIndex, 1);\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\treturn node;\n\t}\n\n\treplaceChildren(...nodes: Array<Node | string>): void {\n\t\tfor (const child of this.childNodes) {\n\t\t\t(child as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\t}\n\n\t\tthis.childNodes = [];\n\t\tthis.append(...nodes);\n\t}\n\n\tget textContent(): string | null {\n\t\treturn this.childNodes.map((child) => child.textContent ?? '').join('');\n\t}\n\n\tset textContent(value: string | null) {\n\t\tthis.replaceChildren(value ?? '');\n\t}\n\n\tgetRootNode(): Node {\n\t\tlet current: Node = this as unknown as Node;\n\n\t\twhile ('parentNode' in current && current.parentNode) {\n\t\t\tcurrent = current.parentNode;\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nexport class MinimalTextNode extends MinimalNode {\n\tconstructor(\n\t\tprivate value: string,\n\t\townerDocument: Document | null = getInstalledDocumentLike(),\n\t) {\n\t\tsuper(MinimalNode.TEXT_NODE, ownerDocument);\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.value;\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.value = value ?? '';\n\t}\n}\n\nclass MinimalClassList {\n\tconstructor(private readonly element: MinimalElement) {}\n\n\tadd(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tif (token !== '') {\n\t\t\t\tnextTokens.add(token);\n\t\t\t}\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\tremove(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tnextTokens.delete(token);\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\ttoggle(token: string, force?: boolean): boolean {\n\t\tconst hasToken = this.contains(token);\n\t\tconst shouldAdd = force ?? !hasToken;\n\n\t\tif (shouldAdd) {\n\t\t\tthis.add(token);\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.remove(token);\n\t\treturn false;\n\t}\n\n\tcontains(token: string): boolean {\n\t\treturn this.readTokens().includes(token);\n\t}\n\n\ttoString(): string {\n\t\treturn this.value;\n\t}\n\n\tget value(): string {\n\t\treturn this.element.getAttribute('class') ?? '';\n\t}\n\n\tprivate readTokens(): string[] {\n\t\treturn this.value\n\t\t\t.split(/\\s+/)\n\t\t\t.map((token) => token.trim())\n\t\t\t.filter((token) => token.length > 0);\n\t}\n\n\tprivate writeTokens(tokens: string[]): void {\n\t\tif (tokens.length === 0) {\n\t\t\tthis.element.removeAttribute('class');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.element.setAttribute('class', tokens.join(' '));\n\t}\n}\n\nexport class MinimalElement extends MinimalNode {\n\tprivate attributes = new Map<string, string>();\n\tprivate classListValue?: MinimalClassList;\n\tprivate datasetValue?: DOMStringMap;\n\tprivate fragmentHtml?: string;\n\tprivate fragmentText?: string;\n\n\tpublic readonly localName: string;\n\tpublic readonly tagName: string;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(MinimalNode.ELEMENT_NODE, ownerDocument);\n\t\tthis.localName = tagName.toLowerCase();\n\t\tthis.tagName = this.localName.toUpperCase();\n\t}\n\n\tget id(): string {\n\t\treturn this.getAttribute('id') ?? '';\n\t}\n\n\tset id(value: string) {\n\t\tif (value === '') {\n\t\t\tthis.removeAttribute('id');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAttribute('id', value);\n\t}\n\n\tget classList(): DOMTokenList {\n\t\tthis.classListValue ??= new MinimalClassList(this);\n\t\treturn this.classListValue as unknown as DOMTokenList;\n\t}\n\n\tget dataset(): DOMStringMap {\n\t\tthis.datasetValue ??= new Proxy(\n\t\t\t{},\n\t\t\t{\n\t\t\t\tdeleteProperty: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.removeAttribute(getHtmlModule().toDataAttributeName(property));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tget: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.getAttribute(getHtmlModule().toDataAttributeName(property)) ?? undefined;\n\t\t\t\t},\n\t\t\t\tgetOwnPropertyDescriptor: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tvalue: this.getAttribute(getHtmlModule().toDataAttributeName(property)) ?? undefined,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\thas: (_target, property) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttypeof property === 'string' && this.hasAttribute(getHtmlModule().toDataAttributeName(property))\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\townKeys: () => {\n\t\t\t\t\treturn this.getAttributeNames()\n\t\t\t\t\t\t.filter((name) => name.startsWith('data-'))\n\t\t\t\t\t\t.map((name) => getHtmlModule().toDatasetPropertyName(name.slice(5)));\n\t\t\t\t},\n\t\t\t\tset: (_target, property, value) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setAttribute(getHtmlModule().toDataAttributeName(property), String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t},\n\t\t) as DOMStringMap;\n\n\t\treturn this.datasetValue;\n\t}\n\n\thasAttribute(name: string): boolean {\n\t\treturn this.attributes.has(name);\n\t}\n\n\tgetAttribute(name: string): string | null {\n\t\treturn this.attributes.get(name) ?? null;\n\t}\n\n\tgetAttributeNames(): string[] {\n\t\treturn Array.from(this.attributes.keys());\n\t}\n\n\tsetAttribute(name: string, value: unknown): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.set(name, String(value));\n\t}\n\n\ttoggleAttribute(name: string, force?: boolean): boolean {\n\t\tconst shouldHaveAttribute = force ?? !this.hasAttribute(name);\n\n\t\tif (shouldHaveAttribute) {\n\t\t\tthis.setAttribute(name, '');\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.removeAttribute(name);\n\t\treturn false;\n\t}\n\n\tremoveAttribute(name: string): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.delete(name);\n\t}\n\n\tquerySelector(): Element | null {\n\t\treturn null;\n\t}\n\n\tquerySelectorAll(): Element[] {\n\t\treturn [];\n\t}\n\n\tmatches(): boolean {\n\t\treturn false;\n\t}\n\n\tget outerHTML(): string {\n\t\tif (this.fragmentHtml !== undefined) {\n\t\t\treturn this.fragmentHtml;\n\t\t}\n\n\t\tconst attributes = Array.from(this.attributes.entries())\n\t\t\t.map(([name, value]) => ` ${name}=\"${escapeHtmlAttribute(value)}\"`)\n\t\t\t.join('');\n\n\t\treturn `<${this.localName}${attributes}>${this.innerHTML}</${this.localName}>`;\n\t}\n\n\tget innerHTML(): string {\n\t\treturn this.childNodes.map((child) => getHtmlModule().serializeNodeHtml(child)).join('');\n\t}\n\n\tset innerHTML(html: string) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = undefined;\n\t\tthis.replaceChildren(...getHtmlModule().parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.fragmentText ?? super.textContent ?? '';\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = value ?? '';\n\t\tsuper.textContent = value;\n\t}\n\n\tsetSerializedFragment(fragmentHtml: string, fragmentText: string, attributes: Record<string, string>): void {\n\t\tthis.fragmentHtml = fragmentHtml;\n\t\tthis.fragmentText = fragmentText;\n\t\tthis.attributes = new Map(Object.entries(attributes));\n\t\tthis.replaceChildren();\n\t}\n}\n\nexport class MinimalEvent {\n\tpublic readonly bubbles: boolean;\n\tpublic readonly cancelable: boolean;\n\tpublic readonly composed: boolean;\n\tpublic readonly type: string;\n\n\tconstructor(type: string, eventInitDict: EventInit = {}) {\n\t\tthis.type = type;\n\t\tthis.bubbles = eventInitDict.bubbles ?? false;\n\t\tthis.cancelable = eventInitDict.cancelable ?? false;\n\t\tthis.composed = eventInitDict.composed ?? false;\n\t}\n}\n\nexport class MinimalCustomEvent<T = unknown> extends MinimalEvent {\n\tpublic readonly detail: T;\n\n\tconstructor(type: string, eventInitDict: CustomEventInit<T> = {}) {\n\t\tsuper(type, eventInitDict);\n\t\tthis.detail = eventInitDict.detail as T;\n\t}\n}\n\nexport class MinimalHTMLElement extends MinimalElement {\n\tpublic isConnected = false;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(tagName, ownerDocument);\n\t}\n\n\tinsertAdjacentHTML(_position: InsertPosition, html: string): void {\n\t\tthis.append(...getHtmlModule().parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\tconnectedCallback?(): void;\n\tattributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;\n\tdisconnectedCallback?(): void;\n}\n\nexport class MinimalHtmlScriptElement extends MinimalHTMLElement {\n\tconstructor(ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper('script', ownerDocument);\n\t}\n}\n\nexport function createTextNode(value: string): Node {\n\treturn new MinimalTextNode(value, getInstalledDocumentLike()) as unknown as Node;\n}\n\nexport function getInstalledDocumentLike(): Document | null {\n\treturn ((globalThis as typeof globalThis & { document?: Document }).document ?? null) as Document | null;\n}\n",
|
|
8
|
-
"import { collectTopLevelHtmlFragments, parseHtmlTagToken, type ParsedHtmlTag } from '../html-parser';\nimport {\n\tgetInstalledDocumentLike,\n\tMinimalElement,\n\tMinimalHtmlScriptElement,\n\tMinimalHTMLElement,\n\tMinimalNode,\n\tMinimalTextNode,\n} from './nodes';\n\nexport function createElementFromFragment(fragment: string, tag: ParsedHtmlTag, ownerDocument: Document | null): Node {\n\tconst element =\n\t\ttag.tagName === 'script'\n\t\t\t? (new MinimalHtmlScriptElement(ownerDocument) as MinimalElement)\n\t\t\t: new MinimalHTMLElement(tag.tagName, ownerDocument);\n\n\telement.setSerializedFragment(fragment, extractTextContent(tag.innerHtml), tag.attributes);\n\treturn element as unknown as Node;\n}\n\nexport function extractTextContent(html: string): string {\n\treturn html.replace(/<!--.*?-->/gs, '').replace(/<[^>]+>/g, '');\n}\n\nexport function parseHtmlToNodes(html: string, ownerDocument: Document | null = getInstalledDocumentLike()): Node[] {\n\treturn collectTopLevelHtmlFragments(html).map((fragment) => {\n\t\tif (!fragment.startsWith('<')) {\n\t\t\treturn new MinimalTextNode(fragment, ownerDocument) as unknown as Node;\n\t\t}\n\n\t\tconst tag = parseHtmlTagToken(fragment, 0);\n\n\t\tif (!tag || tag.type !== 'open') {\n\t\t\treturn new MinimalTextNode(fragment, ownerDocument) as unknown as Node;\n\t\t}\n\n\t\treturn createElementFromFragment(fragment, tag, ownerDocument);\n\t});\n}\n\nexport function toDataAttributeName(property: string): string {\n\treturn `data-${property.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n}\n\nexport function toDatasetPropertyName(attributeName: string): string {\n\treturn attributeName.replace(/-([a-z])/g, (_match, character: string) => character.toUpperCase());\n}\n\nexport function serializeNodeHtml(node: Node): string {\n\tif (node.nodeType === MinimalNode.TEXT_NODE) {\n\t\treturn node.textContent ?? '';\n\t}\n\n\treturn 'outerHTML' in node && typeof node.outerHTML === 'string' ? node.outerHTML : (node.textContent ?? '');\n}\n",
|
|
10
|
+
"import { collectTopLevelHtmlFragments, parseHtmlTagToken, type ParsedHtmlTag } from '../html-parser';\nimport { toDataAttributeName, toDatasetPropertyName } from './dataset';\nimport {\n\tgetInstalledDocumentLike,\n\tMinimalElement,\n\tMinimalHtmlScriptElement,\n\tMinimalHTMLElement,\n\tMinimalNode,\n\tMinimalTextNode,\n\tregisterMinimalDomHtmlParsers,\n} from './nodes';\n\nexport { toDataAttributeName, toDatasetPropertyName } from './dataset';\n\nexport function createElementFromFragment(fragment: string, tag: ParsedHtmlTag, ownerDocument: Document | null): Node {\n\tconst element =\n\t\ttag.tagName === 'script'\n\t\t\t? (new MinimalHtmlScriptElement(ownerDocument) as MinimalElement)\n\t\t\t: new MinimalHTMLElement(tag.tagName, ownerDocument);\n\n\telement.setSerializedFragment(fragment, extractTextContent(tag.innerHtml), tag.attributes);\n\treturn element as unknown as Node;\n}\n\nexport function extractTextContent(html: string): string {\n\treturn html.replace(/<!--.*?-->/gs, '').replace(/<[^>]+>/g, '');\n}\n\nexport function parseHtmlToNodes(html: string, ownerDocument: Document | null = getInstalledDocumentLike()): Node[] {\n\treturn collectTopLevelHtmlFragments(html).map((fragment) => {\n\t\tif (!fragment.startsWith('<')) {\n\t\t\treturn new MinimalTextNode(fragment, ownerDocument) as unknown as Node;\n\t\t}\n\n\t\tconst tag = parseHtmlTagToken(fragment, 0);\n\n\t\tif (!tag || tag.type !== 'open') {\n\t\t\treturn new MinimalTextNode(fragment, ownerDocument) as unknown as Node;\n\t\t}\n\n\t\treturn createElementFromFragment(fragment, tag, ownerDocument);\n\t});\n}\n\nexport function serializeNodeHtml(node: Node): string {\n\tif (node.nodeType === MinimalNode.TEXT_NODE) {\n\t\treturn node.textContent ?? '';\n\t}\n\n\treturn 'outerHTML' in node && typeof node.outerHTML === 'string' ? node.outerHTML : (node.textContent ?? '');\n}\n\nregisterMinimalDomHtmlParsers({\n\tparseHtmlToNodes,\n\tserializeNodeHtml,\n});\n",
|
|
9
11
|
"export function escapeCssIdentifier(value: string): string {\n\tconst cssNamespace = globalThis.CSS as { escape?: (value: string) => string } | undefined;\n\n\tif (typeof cssNamespace?.escape === 'function') {\n\t\treturn cssNamespace.escape(value);\n\t}\n\n\tlet escaped = '';\n\n\tfor (let index = 0; index < value.length; index += 1) {\n\t\tconst character = value[index] ?? '';\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\n\t\tif (codePoint === 0) {\n\t\t\tescaped += '\\uFFFD';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isControlCharacter = (codePoint >= 0x0001 && codePoint <= 0x001f) || codePoint === 0x007f;\n\t\tconst startsWithDigit = index === 0 && codePoint >= 0x0030 && codePoint <= 0x0039;\n\t\tconst startsWithHyphenDigit =\n\t\t\tindex === 1 && codePoint >= 0x0030 && codePoint <= 0x0039 && (value[0] ?? '') === '-';\n\t\tconst isSingleHyphen = index === 0 && character === '-' && value.length === 1;\n\n\t\tif (isControlCharacter || startsWithDigit || startsWithHyphenDigit) {\n\t\t\tescaped += `\\\\${codePoint.toString(16)} `;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tcodePoint >= 0x0080 ||\n\t\t\tcharacter === '-' ||\n\t\t\tcharacter === '_' ||\n\t\t\t(codePoint >= 0x0030 && codePoint <= 0x0039) ||\n\t\t\t(codePoint >= 0x0041 && codePoint <= 0x005a) ||\n\t\t\t(codePoint >= 0x0061 && codePoint <= 0x007a)\n\t\t) {\n\t\t\tescaped += isSingleHyphen ? `\\\\${character}` : character;\n\t\t\tcontinue;\n\t\t}\n\n\t\tescaped += `\\\\${character}`;\n\t}\n\n\treturn escaped;\n}\n",
|
|
10
|
-
"import {
|
|
11
|
-
"import { escapeCssIdentifier } from '../../tools/escape-css-identifier';\nimport { MinimalCustomElementsRegistry, MinimalDocument, type MinimalCustomElementRegistry } from './document';\nimport {\n\tMinimalCustomEvent,\n\tMinimalElement,\n\tMinimalEvent,\n\tMinimalHtmlScriptElement,\n\tMinimalHTMLElement,\n\tMinimalNode,\n} from './nodes';\n\ntype MinimalCssNamespace = {\n\tescape(value: string): string;\n};\n\n/**\n * Minimal window-like runtime surface exposed by the SSR light-DOM shim.\n *\n * This is intentionally much smaller than a browser `window`; it only includes\n * the constructors and registry access that Radiant SSR currently needs.\n */\nexport type LightDomShimWindow = {\n\t/** Event constructor exposed to SSR-created components. */\n\tCustomEvent: typeof CustomEvent;\n\t/** Document constructor exposed to SSR-created components. */\n\tDocument: typeof Document;\n\t/** Element constructor exposed to SSR-created components. */\n\tElement: typeof Element;\n\t/** Event constructor exposed to SSR-created components. */\n\tEvent: typeof Event;\n\t/** EventTarget constructor exposed to SSR-created components. */\n\tEventTarget: typeof EventTarget;\n\t/** HTMLScriptElement constructor used by slot projection payload parsing. */\n\tHTMLScriptElement: typeof HTMLScriptElement;\n\t/** HTMLElement constructor exposed to SSR-created components. */\n\tHTMLElement: typeof HTMLElement;\n\t/** Node constructor exposed to SSR-created components. */\n\tNode: typeof Node;\n\t/** Minimal document instance exposed to SSR-created components. */\n\tdocument: Document;\n\t/** Minimal CSS namespace exposed to SSR-created components. */\n\tCSS: MinimalCssNamespace;\n\t/** Custom element registry used while rendering in SSR. */\n\tcustomElements: MinimalCustomElementRegistry;\n};\n\n/** Host preparation options accepted by the server render environment. */\nexport type PrepareServerRenderHostOptions = {\n\t/** Serialized light-DOM content to attach to the host before SSR. */\n\tauthoredContent?: string;\n};\n\n/** Reusable SSR environment used to prepare component hosts before rendering. */\nexport type ServerRenderEnvironment = {\n\t/** Prepares the host instance for rendering, including authored light-DOM content. */\n\tprepareHost(host: HTMLElement, options?: PrepareServerRenderHostOptions): void;\n};\n\nlet installedWindow: LightDomShimWindow | undefined;\n\nconst minimalCssNamespace: MinimalCssNamespace = {\n\tescape(value: string): string {\n\t\treturn escapeCssIdentifier(String(value));\n\t},\n};\n\nfunction getExistingWindowLike(): LightDomShimWindow | undefined {\n\tconst globalScope = globalThis as typeof globalThis & {\n\t\tCSS?: MinimalCssNamespace;\n\t\tCustomEvent?: typeof CustomEvent;\n\t\tDocument?: typeof Document;\n\t\tElement?: typeof Element;\n\t\tEvent?: typeof Event;\n\t\tEventTarget?: typeof EventTarget;\n\t\tHTMLScriptElement?: typeof HTMLScriptElement;\n\t\tHTMLElement?: typeof HTMLElement;\n\t\tNode?: typeof Node;\n\t\tdocument?: Document;\n\t\tcustomElements?: MinimalCustomElementRegistry;\n\t\twindow?: LightDomShimWindow;\n\t};\n\tconst existingCustomElements = globalScope.customElements;\n\n\tif (\n\t\ttypeof globalScope.Node === 'undefined' ||\n\t\ttypeof globalScope.Document === 'undefined' ||\n\t\ttypeof globalScope.Element === 'undefined' ||\n\t\ttypeof globalScope.HTMLElement === 'undefined' ||\n\t\ttypeof globalScope.document === 'undefined' ||\n\t\t!existingCustomElements ||\n\t\ttypeof existingCustomElements.define !== 'function' ||\n\t\ttypeof existingCustomElements.get !== 'function'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn (\n\t\tglobalScope.window ?? {\n\t\t\tCSS: globalScope.CSS ?? minimalCssNamespace,\n\t\t\tCustomEvent: (globalScope.CustomEvent ?? MinimalCustomEvent) as typeof CustomEvent,\n\t\t\tDocument: globalScope.Document,\n\t\t\tElement: globalScope.Element,\n\t\t\tEvent: (globalScope.Event ?? MinimalEvent) as typeof Event,\n\t\t\tEventTarget: (globalScope.EventTarget ?? EventTarget) as typeof EventTarget,\n\t\t\tHTMLScriptElement: (globalScope.HTMLScriptElement ?? globalScope.HTMLElement) as typeof HTMLScriptElement,\n\t\t\tHTMLElement: globalScope.HTMLElement,\n\t\t\tNode: globalScope.Node,\n\t\t\tdocument: globalScope.document,\n\t\t\tcustomElements: existingCustomElements,\n\t\t}\n\t);\n}\n\n/** Ensures that a minimal window-like SSR runtime is available and returns it. */\nexport function ensureLightDomShim(): LightDomShimWindow {\n\tconst existingWindow = getExistingWindowLike();\n\n\tif (existingWindow) {\n\t\treturn existingWindow;\n\t}\n\n\treturn installLightDomShim();\n}\n\n/**\n * Creates a reusable SSR environment that can prepare a component host with\n * authored light-DOM content before rendering.\n *\n * Adapters can reuse a single environment across multiple render calls when\n * they want a single host-preparation entrypoint backed by the installed shim.\n */\nexport function createServerRenderEnvironment(): ServerRenderEnvironment {\n\tensureLightDomShim();\n\n\treturn {\n\t\tprepareHost(host: HTMLElement, options: PrepareServerRenderHostOptions = {}): void {\n\t\t\tif (options.authoredContent !== undefined) {\n\t\t\t\thost.innerHTML = options.authoredContent;\n\t\t\t}\n\t\t},\n\t};\n}\n\n/**\n * Installs the smallest global surface needed to instantiate Radiant custom elements during SSR.\n */\nexport function installLightDomShim(): LightDomShimWindow {\n\tconst existingWindow = getExistingWindowLike();\n\n\tif (existingWindow) {\n\t\treturn existingWindow;\n\t}\n\n\tif (installedWindow) {\n\t\treturn installedWindow;\n\t}\n\n\tconst customElements = new MinimalCustomElementsRegistry();\n\tconst document = new MinimalDocument() as unknown as Document;\n\tconst EventConstructor = (globalThis.Event ?? MinimalEvent) as typeof Event;\n\tconst CustomEventConstructor = (globalThis.CustomEvent ?? MinimalCustomEvent) as typeof CustomEvent;\n\tconst DocumentConstructor = MinimalDocument as unknown as typeof Document;\n\tconst EventTargetConstructor = (globalThis.EventTarget ?? EventTarget) as typeof EventTarget;\n\tinstalledWindow = {\n\t\tCSS: (globalThis.CSS as MinimalCssNamespace | undefined) ?? minimalCssNamespace,\n\t\tCustomEvent: CustomEventConstructor,\n\t\tDocument: DocumentConstructor,\n\t\tElement: MinimalElement as unknown as typeof Element,\n\t\tEvent: EventConstructor,\n\t\tEventTarget: EventTargetConstructor,\n\t\tHTMLScriptElement: MinimalHtmlScriptElement as unknown as typeof HTMLScriptElement,\n\t\tHTMLElement: MinimalHTMLElement as unknown as typeof HTMLElement,\n\t\tNode: MinimalNode as unknown as typeof Node,\n\t\tdocument,\n\t\tcustomElements,\n\t};\n\n\tObject.assign(globalThis, {\n\t\tCSS: (globalThis.CSS as MinimalCssNamespace | undefined) ?? minimalCssNamespace,\n\t\tCustomEvent: CustomEventConstructor,\n\t\tDocument: DocumentConstructor,\n\t\tElement: MinimalElement,\n\t\tEvent: EventConstructor,\n\t\tEventTarget: EventTargetConstructor,\n\t\tHTMLScriptElement: MinimalHtmlScriptElement,\n\t\tHTMLElement: MinimalHTMLElement,\n\t\tNode: MinimalNode,\n\t\tdocument,\n\t\tcustomElements,\n\t\twindow: installedWindow,\n\t});\n\n\treturn installedWindow;\n}\n"
|
|
12
|
+
"import { escapeCssIdentifier } from '../../tools/escape-css-identifier';\nimport { MinimalCustomElementsRegistry, MinimalDocument, type MinimalCustomElementRegistry } from './document';\nimport './html';\nimport {\n\tMinimalCustomEvent,\n\tMinimalElement,\n\tMinimalEvent,\n\tMinimalHtmlScriptElement,\n\tMinimalHTMLElement,\n\tMinimalNode,\n} from './nodes';\n\ntype MinimalCssNamespace = {\n\tescape(value: string): string;\n};\n\n/**\n * Minimal window-like runtime surface exposed by the SSR light-DOM shim.\n *\n * This is intentionally much smaller than a browser `window`; it only includes\n * the constructors and registry access that Radiant SSR currently needs.\n */\nexport type LightDomShimWindow = {\n\t/** Event constructor exposed to SSR-created components. */\n\tCustomEvent: typeof CustomEvent;\n\t/** Document constructor exposed to SSR-created components. */\n\tDocument: typeof Document;\n\t/** Element constructor exposed to SSR-created components. */\n\tElement: typeof Element;\n\t/** Event constructor exposed to SSR-created components. */\n\tEvent: typeof Event;\n\t/** EventTarget constructor exposed to SSR-created components. */\n\tEventTarget: typeof EventTarget;\n\t/** HTMLScriptElement constructor used by slot projection payload parsing. */\n\tHTMLScriptElement: typeof HTMLScriptElement;\n\t/** HTMLElement constructor exposed to SSR-created components. */\n\tHTMLElement: typeof HTMLElement;\n\t/** Node constructor exposed to SSR-created components. */\n\tNode: typeof Node;\n\t/** Minimal document instance exposed to SSR-created components. */\n\tdocument: Document;\n\t/** Minimal CSS namespace exposed to SSR-created components. */\n\tCSS: MinimalCssNamespace;\n\t/** Custom element registry used while rendering in SSR. */\n\tcustomElements: MinimalCustomElementRegistry;\n};\n\n/** Host preparation options accepted by the server render environment. */\nexport type PrepareServerRenderHostOptions = {\n\t/** Serialized light-DOM content to attach to the host before SSR. */\n\tauthoredContent?: string;\n};\n\n/** Reusable SSR environment used to prepare component hosts before rendering. */\nexport type ServerRenderEnvironment = {\n\t/** Prepares the host instance for rendering, including authored light-DOM content. */\n\tprepareHost(host: HTMLElement, options?: PrepareServerRenderHostOptions): void;\n};\n\nlet installedWindow: LightDomShimWindow | undefined;\n\nconst minimalCssNamespace: MinimalCssNamespace = {\n\tescape(value: string): string {\n\t\treturn escapeCssIdentifier(String(value));\n\t},\n};\n\nfunction getExistingWindowLike(): LightDomShimWindow | undefined {\n\tconst globalScope = globalThis as typeof globalThis & {\n\t\tCSS?: MinimalCssNamespace;\n\t\tCustomEvent?: typeof CustomEvent;\n\t\tDocument?: typeof Document;\n\t\tElement?: typeof Element;\n\t\tEvent?: typeof Event;\n\t\tEventTarget?: typeof EventTarget;\n\t\tHTMLScriptElement?: typeof HTMLScriptElement;\n\t\tHTMLElement?: typeof HTMLElement;\n\t\tNode?: typeof Node;\n\t\tdocument?: Document;\n\t\tcustomElements?: MinimalCustomElementRegistry;\n\t\twindow?: LightDomShimWindow;\n\t};\n\tconst existingCustomElements = globalScope.customElements;\n\n\tif (\n\t\ttypeof globalScope.Node === 'undefined' ||\n\t\ttypeof globalScope.Document === 'undefined' ||\n\t\ttypeof globalScope.Element === 'undefined' ||\n\t\ttypeof globalScope.HTMLElement === 'undefined' ||\n\t\ttypeof globalScope.document === 'undefined' ||\n\t\t!existingCustomElements ||\n\t\ttypeof existingCustomElements.define !== 'function' ||\n\t\ttypeof existingCustomElements.get !== 'function'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn (\n\t\tglobalScope.window ?? {\n\t\t\tCSS: globalScope.CSS ?? minimalCssNamespace,\n\t\t\tCustomEvent: (globalScope.CustomEvent ?? MinimalCustomEvent) as typeof CustomEvent,\n\t\t\tDocument: globalScope.Document,\n\t\t\tElement: globalScope.Element,\n\t\t\tEvent: (globalScope.Event ?? MinimalEvent) as typeof Event,\n\t\t\tEventTarget: (globalScope.EventTarget ?? EventTarget) as typeof EventTarget,\n\t\t\tHTMLScriptElement: (globalScope.HTMLScriptElement ?? globalScope.HTMLElement) as typeof HTMLScriptElement,\n\t\t\tHTMLElement: globalScope.HTMLElement,\n\t\t\tNode: globalScope.Node,\n\t\t\tdocument: globalScope.document,\n\t\t\tcustomElements: existingCustomElements,\n\t\t}\n\t);\n}\n\n/** Ensures that a minimal window-like SSR runtime is available and returns it. */\nexport function ensureLightDomShim(): LightDomShimWindow {\n\tconst existingWindow = getExistingWindowLike();\n\n\tif (existingWindow) {\n\t\treturn existingWindow;\n\t}\n\n\treturn installLightDomShim();\n}\n\n/**\n * Creates a reusable SSR environment that can prepare a component host with\n * authored light-DOM content before rendering.\n *\n * Adapters can reuse a single environment across multiple render calls when\n * they want a single host-preparation entrypoint backed by the installed shim.\n */\nexport function createServerRenderEnvironment(): ServerRenderEnvironment {\n\tensureLightDomShim();\n\n\treturn {\n\t\tprepareHost(host: HTMLElement, options: PrepareServerRenderHostOptions = {}): void {\n\t\t\tif (options.authoredContent !== undefined) {\n\t\t\t\thost.innerHTML = options.authoredContent;\n\t\t\t}\n\t\t},\n\t};\n}\n\n/**\n * Installs the smallest global surface needed to instantiate Radiant custom elements during SSR.\n */\nexport function installLightDomShim(): LightDomShimWindow {\n\tconst existingWindow = getExistingWindowLike();\n\n\tif (existingWindow) {\n\t\treturn existingWindow;\n\t}\n\n\tif (installedWindow) {\n\t\treturn installedWindow;\n\t}\n\n\tconst customElements = new MinimalCustomElementsRegistry();\n\tconst document = new MinimalDocument() as unknown as Document;\n\tconst EventConstructor = (globalThis.Event ?? MinimalEvent) as typeof Event;\n\tconst CustomEventConstructor = (globalThis.CustomEvent ?? MinimalCustomEvent) as typeof CustomEvent;\n\tconst DocumentConstructor = MinimalDocument as unknown as typeof Document;\n\tconst EventTargetConstructor = (globalThis.EventTarget ?? EventTarget) as typeof EventTarget;\n\tinstalledWindow = {\n\t\tCSS: (globalThis.CSS as MinimalCssNamespace | undefined) ?? minimalCssNamespace,\n\t\tCustomEvent: CustomEventConstructor,\n\t\tDocument: DocumentConstructor,\n\t\tElement: MinimalElement as unknown as typeof Element,\n\t\tEvent: EventConstructor,\n\t\tEventTarget: EventTargetConstructor,\n\t\tHTMLScriptElement: MinimalHtmlScriptElement as unknown as typeof HTMLScriptElement,\n\t\tHTMLElement: MinimalHTMLElement as unknown as typeof HTMLElement,\n\t\tNode: MinimalNode as unknown as typeof Node,\n\t\tdocument,\n\t\tcustomElements,\n\t};\n\n\tObject.assign(globalThis, {\n\t\tCSS: (globalThis.CSS as MinimalCssNamespace | undefined) ?? minimalCssNamespace,\n\t\tCustomEvent: CustomEventConstructor,\n\t\tDocument: DocumentConstructor,\n\t\tElement: MinimalElement,\n\t\tEvent: EventConstructor,\n\t\tEventTarget: EventTargetConstructor,\n\t\tHTMLScriptElement: MinimalHtmlScriptElement,\n\t\tHTMLElement: MinimalHTMLElement,\n\t\tNode: MinimalNode,\n\t\tdocument,\n\t\tcustomElements,\n\t\twindow: installedWindow,\n\t});\n\n\treturn installedWindow;\n}\n"
|
|
12
13
|
],
|
|
13
|
-
"mappings": "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",
|
|
14
|
-
"debugId": "
|
|
14
|
+
"mappings": "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",
|
|
15
|
+
"debugId": "9CF495AC82FBC24664756E2164756E21",
|
|
15
16
|
"names": []
|
|
16
17
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
type MinimalParentNode = Node & ParentNode;
|
|
2
|
+
type HtmlParsers = {
|
|
3
|
+
parseHtmlToNodes: (html: string, ownerDocument: Document | null) => Node[];
|
|
4
|
+
serializeNodeHtml: (node: Node) => string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Registers HTML parse/serialize helpers from `./html` to break a circular import.
|
|
8
|
+
* Import `./html` (or the light-DOM install entry) before using `innerHTML`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerMinimalDomHtmlParsers(parsers: HtmlParsers): void;
|
|
2
11
|
export declare class MinimalNode extends EventTarget {
|
|
3
12
|
readonly nodeType: number;
|
|
4
13
|
static readonly DOCUMENT_NODE = 9;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
function z(g){return`data-${g.replace(/([A-Z])/g,"-$1").toLowerCase()}`}function B(g){return g.replace(/-([a-z])/g,(q,$)=>$.toUpperCase())}function C(g){return g.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}var _;function A(g){_=g}function j(){if(!_)throw Error("Minimal DOM HTML parsers are not registered. Import @ecopages/radiant/server/install-ssr-runtime (or ./html) before using innerHTML.");return _}class U extends EventTarget{nodeType;static DOCUMENT_NODE=9;static ELEMENT_NODE=1;static TEXT_NODE=3;childNodes=[];ownerDocument;parentNode=null;constructor(g,q=null){super();this.nodeType=g;this.ownerDocument=q}append(...g){for(let q of g)this.appendChild(typeof q==="string"?S(q):q)}appendChild(g){if("parentNode"in g&&g.parentNode&&"removeChild"in g.parentNode)g.parentNode.removeChild(g);return this.childNodes.push(g),g.ownerDocument=this.nodeType===U.DOCUMENT_NODE?this:this.ownerDocument,g.parentNode=this,g}removeChild(g){let q=this.childNodes.indexOf(g);if(q===-1)return g;return this.childNodes.splice(q,1),g.parentNode=null,g}replaceChildren(...g){for(let q of this.childNodes)q.parentNode=null;this.childNodes=[],this.append(...g)}get textContent(){return this.childNodes.map((g)=>g.textContent??"").join("")}set textContent(g){this.replaceChildren(g??"")}getRootNode(){let g=this;while("parentNode"in g&&g.parentNode)g=g.parentNode;return g}}class F extends U{value;constructor(g,q=Z()){super(U.TEXT_NODE,q);this.value=g}get textContent(){return this.value}set textContent(g){this.value=g??""}}class G{element;constructor(g){this.element=g}add(...g){let q=new Set(this.readTokens());for(let $ of g)if($!=="")q.add($);this.writeTokens([...q])}remove(...g){let q=new Set(this.readTokens());for(let $ of g)q.delete($);this.writeTokens([...q])}toggle(g,q){let $=this.contains(g);if(q??!$)return this.add(g),!0;return this.remove(g),!1}contains(g){return this.readTokens().includes(g)}toString(){return this.value}get value(){return this.element.getAttribute("class")??""}readTokens(){return this.value.split(/\s+/).map((g)=>g.trim()).filter((g)=>g.length>0)}writeTokens(g){if(g.length===0){this.element.removeAttribute("class");return}this.element.setAttribute("class",g.join(" "))}}class J extends U{attributes=new Map;classListValue;datasetValue;fragmentHtml;fragmentText;localName;tagName;constructor(g="div",q=Z()){super(U.ELEMENT_NODE,q);this.localName=g.toLowerCase(),this.tagName=this.localName.toUpperCase()}get id(){return this.getAttribute("id")??""}set id(g){if(g===""){this.removeAttribute("id");return}this.setAttribute("id",g)}get classList(){return this.classListValue??=new G(this),this.classListValue}get dataset(){return this.datasetValue??=new Proxy({},{deleteProperty:(g,q)=>{if(typeof q!=="string")return!1;return this.removeAttribute(z(q)),!0},get:(g,q)=>{if(typeof q!=="string")return;return this.getAttribute(z(q))??void 0},getOwnPropertyDescriptor:(g,q)=>{if(typeof q!=="string")return;return{configurable:!0,enumerable:!0,value:this.getAttribute(z(q))??void 0,writable:!0}},has:(g,q)=>{return typeof q==="string"&&this.hasAttribute(z(q))},ownKeys:()=>{return this.getAttributeNames().filter((g)=>g.startsWith("data-")).map((g)=>B(g.slice(5)))},set:(g,q,$)=>{if(typeof q!=="string")return!1;return this.setAttribute(z(q),String($)),!0}}),this.datasetValue}hasAttribute(g){return this.attributes.has(g)}getAttribute(g){return this.attributes.get(g)??null}getAttributeNames(){return Array.from(this.attributes.keys())}setAttribute(g,q){this.fragmentHtml=void 0,this.attributes.set(g,String(q))}toggleAttribute(g,q){if(q??!this.hasAttribute(g))return this.setAttribute(g,""),!0;return this.removeAttribute(g),!1}removeAttribute(g){this.fragmentHtml=void 0,this.attributes.delete(g)}querySelector(){return null}querySelectorAll(){return[]}matches(){return!1}get outerHTML(){if(this.fragmentHtml!==void 0)return this.fragmentHtml;let g=Array.from(this.attributes.entries()).map(([q,$])=>` ${q}="${C($)}"`).join("");return`<${this.localName}${g}>${this.innerHTML}</${this.localName}>`}get innerHTML(){return this.childNodes.map((g)=>j().serializeNodeHtml(g)).join("")}set innerHTML(g){this.fragmentHtml=void 0,this.fragmentText=void 0,this.replaceChildren(...j().parseHtmlToNodes(g,this.ownerDocument))}get textContent(){return this.fragmentText??super.textContent??""}set textContent(g){this.fragmentHtml=void 0,this.fragmentText=g??"",super.textContent=g}setSerializedFragment(g,q,$){this.fragmentHtml=g,this.fragmentText=q,this.attributes=new Map(Object.entries($)),this.replaceChildren()}}class K{bubbles;cancelable;composed;type;constructor(g,q={}){this.type=g,this.bubbles=q.bubbles??!1,this.cancelable=q.cancelable??!1,this.composed=q.composed??!1}}class Q extends K{detail;constructor(g,q={}){super(g,q);this.detail=q.detail}}class O extends J{isConnected=!1;constructor(g="div",q=Z()){super(g,q)}insertAdjacentHTML(g,q){this.append(...j().parseHtmlToNodes(q,this.ownerDocument))}}class R extends O{constructor(g=Z()){super("script",g)}}function S(g){return new F(g,Z())}function Z(){return globalThis.document??null}export{A as registerMinimalDomHtmlParsers,Z as getInstalledDocumentLike,S as createTextNode,F as MinimalTextNode,U as MinimalNode,R as MinimalHtmlScriptElement,O as MinimalHTMLElement,K as MinimalEvent,J as MinimalElement,Q as MinimalCustomEvent};
|
|
2
|
+
|
|
3
|
+
//# debugId=48817716D4D884A464756E2164756E21
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/server/minimal-dom/dataset.ts", "../src/utils/escape-html-attribute.ts", "../src/server/minimal-dom/nodes.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export function toDataAttributeName(property: string): string {\n\treturn `data-${property.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n}\n\nexport function toDatasetPropertyName(attributeName: string): string {\n\treturn attributeName.replace(/-([a-z])/g, (_match, character: string) => character.toUpperCase());\n}\n",
|
|
6
|
+
"/** Escapes a string for safe interpolation inside a double-quoted HTML attribute value. */\nexport function escapeHtmlAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n",
|
|
7
|
+
"import { escapeHtmlAttribute } from '../../utils/escape-html-attribute';\nimport { toDataAttributeName, toDatasetPropertyName } from './dataset';\n\ntype MinimalParentNode = Node & ParentNode;\n\ntype HtmlParsers = {\n\tparseHtmlToNodes: (html: string, ownerDocument: Document | null) => Node[];\n\tserializeNodeHtml: (node: Node) => string;\n};\n\nlet htmlParsers: HtmlParsers | undefined;\n\n/**\n * Registers HTML parse/serialize helpers from `./html` to break a circular import.\n * Import `./html` (or the light-DOM install entry) before using `innerHTML`.\n */\nexport function registerMinimalDomHtmlParsers(parsers: HtmlParsers): void {\n\thtmlParsers = parsers;\n}\n\nfunction ensureHtmlParsers(): HtmlParsers {\n\tif (!htmlParsers) {\n\t\tthrow new Error(\n\t\t\t'Minimal DOM HTML parsers are not registered. Import @ecopages/radiant/server/install-ssr-runtime (or ./html) before using innerHTML.',\n\t\t);\n\t}\n\n\treturn htmlParsers;\n}\n\nexport class MinimalNode extends EventTarget {\n\tstatic readonly DOCUMENT_NODE = 9;\n\tstatic readonly ELEMENT_NODE = 1;\n\tstatic readonly TEXT_NODE = 3;\n\n\tpublic childNodes: Node[] = [];\n\tpublic ownerDocument: Document | null;\n\tpublic parentNode: MinimalParentNode | null = null;\n\n\tconstructor(\n\t\tpublic readonly nodeType: number,\n\t\townerDocument: Document | null = null,\n\t) {\n\t\tsuper();\n\t\tthis.ownerDocument = ownerDocument;\n\t}\n\n\tappend(...nodes: Array<Node | string>): void {\n\t\tfor (const node of nodes) {\n\t\t\tthis.appendChild(typeof node === 'string' ? createTextNode(node) : node);\n\t\t}\n\t}\n\n\tappendChild<TNode extends Node>(node: TNode): TNode {\n\t\tif ('parentNode' in node && node.parentNode && 'removeChild' in node.parentNode) {\n\t\t\t(node.parentNode as Node & { removeChild(node: Node): Node }).removeChild(node);\n\t\t}\n\n\t\tthis.childNodes.push(node);\n\t\t(node as Node & { ownerDocument: Document | null }).ownerDocument =\n\t\t\tthis.nodeType === MinimalNode.DOCUMENT_NODE ? (this as unknown as Document) : this.ownerDocument;\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = this as unknown as MinimalParentNode;\n\t\treturn node;\n\t}\n\n\tremoveChild<TNode extends Node>(node: TNode): TNode {\n\t\tconst nodeIndex = this.childNodes.indexOf(node);\n\n\t\tif (nodeIndex === -1) {\n\t\t\treturn node;\n\t\t}\n\n\t\tthis.childNodes.splice(nodeIndex, 1);\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\treturn node;\n\t}\n\n\treplaceChildren(...nodes: Array<Node | string>): void {\n\t\tfor (const child of this.childNodes) {\n\t\t\t(child as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\t}\n\n\t\tthis.childNodes = [];\n\t\tthis.append(...nodes);\n\t}\n\n\tget textContent(): string | null {\n\t\treturn this.childNodes.map((child) => child.textContent ?? '').join('');\n\t}\n\n\tset textContent(value: string | null) {\n\t\tthis.replaceChildren(value ?? '');\n\t}\n\n\tgetRootNode(): Node {\n\t\tlet current: Node = this as unknown as Node;\n\n\t\twhile ('parentNode' in current && current.parentNode) {\n\t\t\tcurrent = current.parentNode;\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nexport class MinimalTextNode extends MinimalNode {\n\tconstructor(\n\t\tprivate value: string,\n\t\townerDocument: Document | null = getInstalledDocumentLike(),\n\t) {\n\t\tsuper(MinimalNode.TEXT_NODE, ownerDocument);\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.value;\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.value = value ?? '';\n\t}\n}\n\nclass MinimalClassList {\n\tconstructor(private readonly element: MinimalElement) {}\n\n\tadd(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tif (token !== '') {\n\t\t\t\tnextTokens.add(token);\n\t\t\t}\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\tremove(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tnextTokens.delete(token);\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\ttoggle(token: string, force?: boolean): boolean {\n\t\tconst hasToken = this.contains(token);\n\t\tconst shouldAdd = force ?? !hasToken;\n\n\t\tif (shouldAdd) {\n\t\t\tthis.add(token);\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.remove(token);\n\t\treturn false;\n\t}\n\n\tcontains(token: string): boolean {\n\t\treturn this.readTokens().includes(token);\n\t}\n\n\ttoString(): string {\n\t\treturn this.value;\n\t}\n\n\tget value(): string {\n\t\treturn this.element.getAttribute('class') ?? '';\n\t}\n\n\tprivate readTokens(): string[] {\n\t\treturn this.value\n\t\t\t.split(/\\s+/)\n\t\t\t.map((token) => token.trim())\n\t\t\t.filter((token) => token.length > 0);\n\t}\n\n\tprivate writeTokens(tokens: string[]): void {\n\t\tif (tokens.length === 0) {\n\t\t\tthis.element.removeAttribute('class');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.element.setAttribute('class', tokens.join(' '));\n\t}\n}\n\nexport class MinimalElement extends MinimalNode {\n\tprivate attributes = new Map<string, string>();\n\tprivate classListValue?: MinimalClassList;\n\tprivate datasetValue?: DOMStringMap;\n\tprivate fragmentHtml?: string;\n\tprivate fragmentText?: string;\n\n\tpublic readonly localName: string;\n\tpublic readonly tagName: string;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(MinimalNode.ELEMENT_NODE, ownerDocument);\n\t\tthis.localName = tagName.toLowerCase();\n\t\tthis.tagName = this.localName.toUpperCase();\n\t}\n\n\tget id(): string {\n\t\treturn this.getAttribute('id') ?? '';\n\t}\n\n\tset id(value: string) {\n\t\tif (value === '') {\n\t\t\tthis.removeAttribute('id');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAttribute('id', value);\n\t}\n\n\tget classList(): DOMTokenList {\n\t\tthis.classListValue ??= new MinimalClassList(this);\n\t\treturn this.classListValue as unknown as DOMTokenList;\n\t}\n\n\tget dataset(): DOMStringMap {\n\t\tthis.datasetValue ??= new Proxy(\n\t\t\t{},\n\t\t\t{\n\t\t\t\tdeleteProperty: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.removeAttribute(toDataAttributeName(property));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tget: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.getAttribute(toDataAttributeName(property)) ?? undefined;\n\t\t\t\t},\n\t\t\t\tgetOwnPropertyDescriptor: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tvalue: this.getAttribute(toDataAttributeName(property)) ?? undefined,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\thas: (_target, property) => {\n\t\t\t\t\treturn typeof property === 'string' && this.hasAttribute(toDataAttributeName(property));\n\t\t\t\t},\n\t\t\t\townKeys: () => {\n\t\t\t\t\treturn this.getAttributeNames()\n\t\t\t\t\t\t.filter((name) => name.startsWith('data-'))\n\t\t\t\t\t\t.map((name) => toDatasetPropertyName(name.slice(5)));\n\t\t\t\t},\n\t\t\t\tset: (_target, property, value) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setAttribute(toDataAttributeName(property), String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t},\n\t\t) as DOMStringMap;\n\n\t\treturn this.datasetValue;\n\t}\n\n\thasAttribute(name: string): boolean {\n\t\treturn this.attributes.has(name);\n\t}\n\n\tgetAttribute(name: string): string | null {\n\t\treturn this.attributes.get(name) ?? null;\n\t}\n\n\tgetAttributeNames(): string[] {\n\t\treturn Array.from(this.attributes.keys());\n\t}\n\n\tsetAttribute(name: string, value: unknown): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.set(name, String(value));\n\t}\n\n\ttoggleAttribute(name: string, force?: boolean): boolean {\n\t\tconst shouldHaveAttribute = force ?? !this.hasAttribute(name);\n\n\t\tif (shouldHaveAttribute) {\n\t\t\tthis.setAttribute(name, '');\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.removeAttribute(name);\n\t\treturn false;\n\t}\n\n\tremoveAttribute(name: string): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.delete(name);\n\t}\n\n\tquerySelector(): Element | null {\n\t\treturn null;\n\t}\n\n\tquerySelectorAll(): Element[] {\n\t\treturn [];\n\t}\n\n\tmatches(): boolean {\n\t\treturn false;\n\t}\n\n\tget outerHTML(): string {\n\t\tif (this.fragmentHtml !== undefined) {\n\t\t\treturn this.fragmentHtml;\n\t\t}\n\n\t\tconst attributes = Array.from(this.attributes.entries())\n\t\t\t.map(([name, value]) => ` ${name}=\"${escapeHtmlAttribute(value)}\"`)\n\t\t\t.join('');\n\n\t\treturn `<${this.localName}${attributes}>${this.innerHTML}</${this.localName}>`;\n\t}\n\n\tget innerHTML(): string {\n\t\treturn this.childNodes.map((child) => ensureHtmlParsers().serializeNodeHtml(child)).join('');\n\t}\n\n\tset innerHTML(html: string) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = undefined;\n\t\tthis.replaceChildren(...ensureHtmlParsers().parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.fragmentText ?? super.textContent ?? '';\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = value ?? '';\n\t\tsuper.textContent = value;\n\t}\n\n\tsetSerializedFragment(fragmentHtml: string, fragmentText: string, attributes: Record<string, string>): void {\n\t\tthis.fragmentHtml = fragmentHtml;\n\t\tthis.fragmentText = fragmentText;\n\t\tthis.attributes = new Map(Object.entries(attributes));\n\t\tthis.replaceChildren();\n\t}\n}\n\nexport class MinimalEvent {\n\tpublic readonly bubbles: boolean;\n\tpublic readonly cancelable: boolean;\n\tpublic readonly composed: boolean;\n\tpublic readonly type: string;\n\n\tconstructor(type: string, eventInitDict: EventInit = {}) {\n\t\tthis.type = type;\n\t\tthis.bubbles = eventInitDict.bubbles ?? false;\n\t\tthis.cancelable = eventInitDict.cancelable ?? false;\n\t\tthis.composed = eventInitDict.composed ?? false;\n\t}\n}\n\nexport class MinimalCustomEvent<T = unknown> extends MinimalEvent {\n\tpublic readonly detail: T;\n\n\tconstructor(type: string, eventInitDict: CustomEventInit<T> = {}) {\n\t\tsuper(type, eventInitDict);\n\t\tthis.detail = eventInitDict.detail as T;\n\t}\n}\n\nexport class MinimalHTMLElement extends MinimalElement {\n\tpublic isConnected = false;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(tagName, ownerDocument);\n\t}\n\n\tinsertAdjacentHTML(_position: InsertPosition, html: string): void {\n\t\tthis.append(...ensureHtmlParsers().parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\tconnectedCallback?(): void;\n\tattributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;\n\tdisconnectedCallback?(): void;\n}\n\nexport class MinimalHtmlScriptElement extends MinimalHTMLElement {\n\tconstructor(ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper('script', ownerDocument);\n\t}\n}\n\nexport function createTextNode(value: string): Node {\n\treturn new MinimalTextNode(value, getInstalledDocumentLike()) as unknown as Node;\n}\n\nexport function getInstalledDocumentLike(): Document | null {\n\treturn ((globalThis as typeof globalThis & { document?: Document }).document ?? null) as Document | null;\n}\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "48817716D4D884A464756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
package/server/project-root.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import{existsSync as K,readFileSync as L}from"node:fs";import{dirname as M,resolve as I}from"node:path";function Y(z={}){let B=U(z.startDirectories?.length?z.startDirectories:[process.cwd(),import.meta.dirname]),G=I(z.stopAt??"/");for(let C of B){let H=O(C,G,z);if(H)return H}throw Error(V(z,B))}function O(z,B,G){let C=I(z);for(;;){if(Q(C,G))return C;if(C===B)return;let H=M(C);if(H===C)return;C=H}}function Q(z,B){if(!T(z,B.packageName))return!1;return(B.requiredPaths??[]).every((G)=>K(I(z,G)))}function T(z,B){if(!B)return!0;let G=I(z,"package.json");if(!K(G))return!1;try{return JSON.parse(L(G,"utf8")).name===B}catch{return!1}}function U(z){return Array.from(new Set(z.map((B)=>I(B))))}function V(z,B){let G=[z.packageName?`package name ${JSON.stringify(z.packageName)}`:void 0,z.requiredPaths?.length?`paths ${z.requiredPaths.map((C)=>JSON.stringify(C)).join(", ")}`:void 0].filter((C)=>typeof C==="string").join(" and ");return`Unable to resolve a project root${G?` matching ${G}`:""} from ${B.join(", ")}.`}export{Y as resolveProjectRoot};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=E23EA77C52F0DE2364756E2164756E21
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/server/project-root.ts"
|
|
3
|
+
"sources": ["../src/server/project-root.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\n/**\n * Options that constrain how {@link resolveProjectRoot} searches ancestor\n * directories.\n */\nexport type ResolveProjectRootOptions = {\n\t/** Expected `package.json#name` value for the resolved project root. */\n\tpackageName?: string;\n\t/** Additional relative paths that must exist inside the resolved directory. */\n\trequiredPaths?: string[];\n\t/** Starting directories to search upward from before giving up. */\n\tstartDirectories?: string[];\n\t/** Absolute or relative directory where the upward search must stop. */\n\tstopAt?: string;\n};\n\n/**\n * Resolves the nearest ancestor directory that matches the provided package and\n * path markers. Framework adapters can use this to find their project root\n * without hardcoding a fixed number of parent-directory guesses.\n */\nexport function resolveProjectRoot(options: ResolveProjectRootOptions = {}): string {\n\tconst candidateStarts = dedupeDirectories(\n\t\toptions.startDirectories?.length ? options.startDirectories : [process.cwd(), import.meta.dirname],\n\t);\n\tconst stopAt = resolve(options.stopAt ?? '/');\n\n\tfor (const startDirectory of candidateStarts) {\n\t\tconst resolvedRoot = resolveProjectRootFrom(startDirectory, stopAt, options);\n\n\t\tif (resolvedRoot) {\n\t\t\treturn resolvedRoot;\n\t\t}\n\t}\n\n\tthrow new Error(createResolveProjectRootError(options, candidateStarts));\n}\n\nfunction resolveProjectRootFrom(\n\tstartDirectory: string,\n\tstopAt: string,\n\toptions: ResolveProjectRootOptions,\n): string | undefined {\n\tlet currentDirectory = resolve(startDirectory);\n\n\tfor (;;) {\n\t\tif (matchesProjectRoot(currentDirectory, options)) {\n\t\t\treturn currentDirectory;\n\t\t}\n\n\t\tif (currentDirectory === stopAt) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst parentDirectory = dirname(currentDirectory);\n\n\t\tif (parentDirectory === currentDirectory) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcurrentDirectory = parentDirectory;\n\t}\n}\n\nfunction matchesProjectRoot(directory: string, options: ResolveProjectRootOptions): boolean {\n\tif (!matchesPackageName(directory, options.packageName)) {\n\t\treturn false;\n\t}\n\n\treturn (options.requiredPaths ?? []).every((requiredPath) => existsSync(resolve(directory, requiredPath)));\n}\n\nfunction matchesPackageName(directory: string, packageName: string | undefined): boolean {\n\tif (!packageName) {\n\t\treturn true;\n\t}\n\n\tconst packageJsonPath = resolve(directory, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { name?: string };\n\t\treturn packageJson.name === packageName;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction dedupeDirectories(directories: string[]): string[] {\n\treturn Array.from(new Set(directories.map((directory) => resolve(directory))));\n}\n\nfunction createResolveProjectRootError(options: ResolveProjectRootOptions, startDirectories: string[]): string {\n\tconst markerSummary = [\n\t\toptions.packageName ? `package name ${JSON.stringify(options.packageName)}` : undefined,\n\t\toptions.requiredPaths?.length\n\t\t\t? `paths ${options.requiredPaths.map((path) => JSON.stringify(path)).join(', ')}`\n\t\t\t: undefined,\n\t]\n\t\t.filter((marker): marker is string => typeof marker === 'string')\n\t\t.join(' and ');\n\n\treturn `Unable to resolve a project root${markerSummary ? ` matching ${markerSummary}` : ''} from ${startDirectories.join(', ')}.`;\n}\n"
|
|
6
|
-
"function assertPath(path){if(typeof path!==\"string\")throw TypeError(\"Path must be a string. Received \"+JSON.stringify(path))}function normalizeStringPosix(path,allowAboveRoot){var res=\"\",lastSegmentLength=0,lastSlash=-1,dots=0,code;for(var i=0;i<=path.length;++i){if(i<path.length)code=path.charCodeAt(i);else if(code===47)break;else code=47;if(code===47){if(lastSlash===i-1||dots===1);else if(lastSlash!==i-1&&dots===2){if(res.length<2||lastSegmentLength!==2||res.charCodeAt(res.length-1)!==46||res.charCodeAt(res.length-2)!==46){if(res.length>2){var lastSlashIndex=res.lastIndexOf(\"/\");if(lastSlashIndex!==res.length-1){if(lastSlashIndex===-1)res=\"\",lastSegmentLength=0;else res=res.slice(0,lastSlashIndex),lastSegmentLength=res.length-1-res.lastIndexOf(\"/\");lastSlash=i,dots=0;continue}}else if(res.length===2||res.length===1){res=\"\",lastSegmentLength=0,lastSlash=i,dots=0;continue}}if(allowAboveRoot){if(res.length>0)res+=\"/..\";else res=\"..\";lastSegmentLength=2}}else{if(res.length>0)res+=\"/\"+path.slice(lastSlash+1,i);else res=path.slice(lastSlash+1,i);lastSegmentLength=i-lastSlash-1}lastSlash=i,dots=0}else if(code===46&&dots!==-1)++dots;else dots=-1}return res}function _format(sep,pathObject){var dir=pathObject.dir||pathObject.root,base=pathObject.base||(pathObject.name||\"\")+(pathObject.ext||\"\");if(!dir)return base;if(dir===pathObject.root)return dir+base;return dir+sep+base}function resolve(){var resolvedPath=\"\",resolvedAbsolute=!1,cwd;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path;if(i>=0)path=arguments[i];else{if(cwd===void 0)cwd=process.cwd();path=cwd}if(assertPath(path),path.length===0)continue;resolvedPath=path+\"/\"+resolvedPath,resolvedAbsolute=path.charCodeAt(0)===47}if(resolvedPath=normalizeStringPosix(resolvedPath,!resolvedAbsolute),resolvedAbsolute)if(resolvedPath.length>0)return\"/\"+resolvedPath;else return\"/\";else if(resolvedPath.length>0)return resolvedPath;else return\".\"}function normalize(path){if(assertPath(path),path.length===0)return\".\";var isAbsolute=path.charCodeAt(0)===47,trailingSeparator=path.charCodeAt(path.length-1)===47;if(path=normalizeStringPosix(path,!isAbsolute),path.length===0&&!isAbsolute)path=\".\";if(path.length>0&&trailingSeparator)path+=\"/\";if(isAbsolute)return\"/\"+path;return path}function isAbsolute(path){return assertPath(path),path.length>0&&path.charCodeAt(0)===47}function join(){if(arguments.length===0)return\".\";var joined;for(var i=0;i<arguments.length;++i){var arg=arguments[i];if(assertPath(arg),arg.length>0)if(joined===void 0)joined=arg;else joined+=\"/\"+arg}if(joined===void 0)return\".\";return normalize(joined)}function relative(from,to){if(assertPath(from),assertPath(to),from===to)return\"\";if(from=resolve(from),to=resolve(to),from===to)return\"\";var fromStart=1;for(;fromStart<from.length;++fromStart)if(from.charCodeAt(fromStart)!==47)break;var fromEnd=from.length,fromLen=fromEnd-fromStart,toStart=1;for(;toStart<to.length;++toStart)if(to.charCodeAt(toStart)!==47)break;var toEnd=to.length,toLen=toEnd-toStart,length=fromLen<toLen?fromLen:toLen,lastCommonSep=-1,i=0;for(;i<=length;++i){if(i===length){if(toLen>length){if(to.charCodeAt(toStart+i)===47)return to.slice(toStart+i+1);else if(i===0)return to.slice(toStart+i)}else if(fromLen>length){if(from.charCodeAt(fromStart+i)===47)lastCommonSep=i;else if(i===0)lastCommonSep=0}break}var fromCode=from.charCodeAt(fromStart+i),toCode=to.charCodeAt(toStart+i);if(fromCode!==toCode)break;else if(fromCode===47)lastCommonSep=i}var out=\"\";for(i=fromStart+lastCommonSep+1;i<=fromEnd;++i)if(i===fromEnd||from.charCodeAt(i)===47)if(out.length===0)out+=\"..\";else out+=\"/..\";if(out.length>0)return out+to.slice(toStart+lastCommonSep);else{if(toStart+=lastCommonSep,to.charCodeAt(toStart)===47)++toStart;return to.slice(toStart)}}function _makeLong(path){return path}function dirname(path){if(assertPath(path),path.length===0)return\".\";var code=path.charCodeAt(0),hasRoot=code===47,end=-1,matchedSlash=!0;for(var i=path.length-1;i>=1;--i)if(code=path.charCodeAt(i),code===47){if(!matchedSlash){end=i;break}}else matchedSlash=!1;if(end===-1)return hasRoot?\"/\":\".\";if(hasRoot&&end===1)return\"//\";return path.slice(0,end)}function basename(path,ext){if(ext!==void 0&&typeof ext!==\"string\")throw TypeError('\"ext\" argument must be a string');assertPath(path);var start=0,end=-1,matchedSlash=!0,i;if(ext!==void 0&&ext.length>0&&ext.length<=path.length){if(ext.length===path.length&&ext===path)return\"\";var extIdx=ext.length-1,firstNonSlashEnd=-1;for(i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47){if(!matchedSlash){start=i+1;break}}else{if(firstNonSlashEnd===-1)matchedSlash=!1,firstNonSlashEnd=i+1;if(extIdx>=0)if(code===ext.charCodeAt(extIdx)){if(--extIdx===-1)end=i}else extIdx=-1,end=firstNonSlashEnd}}if(start===end)end=firstNonSlashEnd;else if(end===-1)end=path.length;return path.slice(start,end)}else{for(i=path.length-1;i>=0;--i)if(path.charCodeAt(i)===47){if(!matchedSlash){start=i+1;break}}else if(end===-1)matchedSlash=!1,end=i+1;if(end===-1)return\"\";return path.slice(start,end)}}function extname(path){assertPath(path);var startDot=-1,startPart=0,end=-1,matchedSlash=!0,preDotState=0;for(var i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47){if(!matchedSlash){startPart=i+1;break}continue}if(end===-1)matchedSlash=!1,end=i+1;if(code===46){if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1}else if(startDot!==-1)preDotState=-1}if(startDot===-1||end===-1||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1)return\"\";return path.slice(startDot,end)}function format(pathObject){if(pathObject===null||typeof pathObject!==\"object\")throw TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof pathObject);return _format(\"/\",pathObject)}function parse(path){assertPath(path);var ret={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(path.length===0)return ret;var code=path.charCodeAt(0),isAbsolute2=code===47,start;if(isAbsolute2)ret.root=\"/\",start=1;else start=0;var startDot=-1,startPart=0,end=-1,matchedSlash=!0,i=path.length-1,preDotState=0;for(;i>=start;--i){if(code=path.charCodeAt(i),code===47){if(!matchedSlash){startPart=i+1;break}continue}if(end===-1)matchedSlash=!1,end=i+1;if(code===46){if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1}else if(startDot!==-1)preDotState=-1}if(startDot===-1||end===-1||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1){if(end!==-1)if(startPart===0&&isAbsolute2)ret.base=ret.name=path.slice(1,end);else ret.base=ret.name=path.slice(startPart,end)}else{if(startPart===0&&isAbsolute2)ret.name=path.slice(1,startDot),ret.base=path.slice(1,end);else ret.name=path.slice(startPart,startDot),ret.base=path.slice(startPart,end);ret.ext=path.slice(startDot,end)}if(startPart>0)ret.dir=path.slice(0,startPart-1);else if(isAbsolute2)ret.dir=\"/\";return ret}var sep=\"/\",delimiter=\":\",posix=((p)=>(p.posix=p,p))({resolve,normalize,isAbsolute,join,relative,_makeLong,dirname,basename,extname,format,parse,sep,delimiter,win32:null,posix:null});var path_default=posix;export{sep,resolve,relative,posix,parse,normalize,join,isAbsolute,format,extname,dirname,delimiter,path_default as default,basename,_makeLong};"
|
|
5
|
+
"import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\n/**\n * Options that constrain how {@link resolveProjectRoot} searches ancestor\n * directories.\n */\nexport type ResolveProjectRootOptions = {\n\t/** Expected `package.json#name` value for the resolved project root. */\n\tpackageName?: string;\n\t/** Additional relative paths that must exist inside the resolved directory. */\n\trequiredPaths?: string[];\n\t/** Starting directories to search upward from before giving up. */\n\tstartDirectories?: string[];\n\t/** Absolute or relative directory where the upward search must stop. */\n\tstopAt?: string;\n};\n\n/**\n * Resolves the nearest ancestor directory that matches the provided package and\n * path markers. Framework adapters can use this to find their project root\n * without hardcoding a fixed number of parent-directory guesses.\n */\nexport function resolveProjectRoot(options: ResolveProjectRootOptions = {}): string {\n\tconst candidateStarts = dedupeDirectories(\n\t\toptions.startDirectories?.length ? options.startDirectories : [process.cwd(), import.meta.dirname],\n\t);\n\tconst stopAt = resolve(options.stopAt ?? '/');\n\n\tfor (const startDirectory of candidateStarts) {\n\t\tconst resolvedRoot = resolveProjectRootFrom(startDirectory, stopAt, options);\n\n\t\tif (resolvedRoot) {\n\t\t\treturn resolvedRoot;\n\t\t}\n\t}\n\n\tthrow new Error(createResolveProjectRootError(options, candidateStarts));\n}\n\nfunction resolveProjectRootFrom(\n\tstartDirectory: string,\n\tstopAt: string,\n\toptions: ResolveProjectRootOptions,\n): string | undefined {\n\tlet currentDirectory = resolve(startDirectory);\n\n\tfor (;;) {\n\t\tif (matchesProjectRoot(currentDirectory, options)) {\n\t\t\treturn currentDirectory;\n\t\t}\n\n\t\tif (currentDirectory === stopAt) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst parentDirectory = dirname(currentDirectory);\n\n\t\tif (parentDirectory === currentDirectory) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcurrentDirectory = parentDirectory;\n\t}\n}\n\nfunction matchesProjectRoot(directory: string, options: ResolveProjectRootOptions): boolean {\n\tif (!matchesPackageName(directory, options.packageName)) {\n\t\treturn false;\n\t}\n\n\treturn (options.requiredPaths ?? []).every((requiredPath) => existsSync(resolve(directory, requiredPath)));\n}\n\nfunction matchesPackageName(directory: string, packageName: string | undefined): boolean {\n\tif (!packageName) {\n\t\treturn true;\n\t}\n\n\tconst packageJsonPath = resolve(directory, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { name?: string };\n\t\treturn packageJson.name === packageName;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction dedupeDirectories(directories: string[]): string[] {\n\treturn Array.from(new Set(directories.map((directory) => resolve(directory))));\n}\n\nfunction createResolveProjectRootError(options: ResolveProjectRootOptions, startDirectories: string[]): string {\n\tconst markerSummary = [\n\t\toptions.packageName ? `package name ${JSON.stringify(options.packageName)}` : undefined,\n\t\toptions.requiredPaths?.length\n\t\t\t? `paths ${options.requiredPaths.map((path) => JSON.stringify(path)).join(', ')}`\n\t\t\t: undefined,\n\t]\n\t\t.filter((marker): marker is string => typeof marker === 'string')\n\t\t.join(' and ');\n\n\treturn `Unable to resolve a project root${markerSummary ? ` matching ${markerSummary}` : ''} from ${startDirectories.join(', ')}.`;\n}\n"
|
|
7
6
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAAA,qBAAS,kBAAY,gBACrB,kBAAS,aAAS,kBAsBX,SAAS,CAAkB,CAAC,EAAqC,CAAC,EAAW,CACnF,IAAM,EAAkB,EACvB,EAAQ,kBAAkB,OAAS,EAAQ,iBAAmB,CAAC,QAAQ,IAAI,EAAG,YAAY,OAAO,CAClG,EACM,EAAS,EAAQ,EAAQ,QAAU,GAAG,EAE5C,QAAW,KAAkB,EAAiB,CAC7C,IAAM,EAAe,EAAuB,EAAgB,EAAQ,CAAO,EAE3E,GAAI,EACH,OAAO,EAIT,MAAU,MAAM,EAA8B,EAAS,CAAe,CAAC,EAGxE,SAAS,CAAsB,CAC9B,EACA,EACA,EACqB,CACrB,IAAI,EAAmB,EAAQ,CAAc,EAE7C,OAAS,CACR,GAAI,EAAmB,EAAkB,CAAO,EAC/C,OAAO,EAGR,GAAI,IAAqB,EACxB,OAGD,IAAM,EAAkB,EAAQ,CAAgB,EAEhD,GAAI,IAAoB,EACvB,OAGD,EAAmB,GAIrB,SAAS,CAAkB,CAAC,EAAmB,EAA6C,CAC3F,GAAI,CAAC,EAAmB,EAAW,EAAQ,WAAW,EACrD,MAAO,GAGR,OAAQ,EAAQ,eAAiB,CAAC,GAAG,MAAM,CAAC,IAAiB,EAAW,EAAQ,EAAW,CAAY,CAAC,CAAC,EAG1G,SAAS,CAAkB,CAAC,EAAmB,EAA0C,CACxF,GAAI,CAAC,EACJ,MAAO,GAGR,IAAM,EAAkB,EAAQ,EAAW,cAAc,EAEzD,GAAI,CAAC,EAAW,CAAe,EAC9B,MAAO,GAGR,GAAI,CAEH,OADoB,KAAK,MAAM,EAAa,EAAiB,MAAM,CAAC,EACjD,OAAS,EAC3B,KAAM,CACP,MAAO,IAIT,SAAS,CAAiB,CAAC,EAAiC,CAC3D,OAAO,MAAM,KAAK,IAAI,IAAI,EAAY,IAAI,CAAC,IAAc,EAAQ,CAAS,CAAC,CAAC,CAAC,EAG9E,SAAS,CAA6B,CAAC,EAAoC,EAAoC,CAC9G,IAAM,EAAgB,CACrB,EAAQ,YAAc,gBAAgB,KAAK,UAAU,EAAQ,WAAW,IAAM,OAC9E,EAAQ,eAAe,OACpB,SAAS,EAAQ,cAAc,IAAI,CAAC,IAAS,KAAK,UAAU,CAAI,CAAC,EAAE,KAAK,IAAI,IAC5E,MACJ,EACE,OAAO,CAAC,IAA6B,OAAO,IAAW,QAAQ,EAC/D,KAAK,OAAO,EAEd,MAAO,mCAAmC,EAAgB,aAAa,IAAkB,WAAW,EAAiB,KAAK,IAAI",
|
|
8
|
+
"debugId": "E23EA77C52F0DE2364756E2164756E21",
|
|
10
9
|
"names": []
|
|
11
10
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import type { JsxRenderable } from '@ecopages/jsx';
|
|
2
2
|
import type { RenderToStringOptions } from '@ecopages/jsx/server';
|
|
3
3
|
import { RadiantElementSsrService } from './radiant-element-ssr-service';
|
|
4
|
-
import
|
|
4
|
+
import './install-ssr-runtime';
|
|
5
|
+
import type { RadiantElementRenderBridge, RadiantElementServerRenderSsrCapable, RadiantElementSsrRuntime, RadiantElementViewRenderSource } from '../core/radiant-element-ssr-registry';
|
|
5
6
|
export declare function createRadiantElementSsrService(component: object): RadiantElementSsrService;
|
|
7
|
+
/** One host-serialization entry used by adapters and nested JSX custom-element SSR. */
|
|
8
|
+
export declare function renderRadiantElementHostToString(component: RadiantElementServerRenderSsrCapable, options?: RenderToStringOptions): string;
|
|
6
9
|
export declare function renderRadiantElementHost(component: RadiantElementServerRenderSsrCapable): JsxRenderable;
|
|
7
10
|
export declare function renderRegisteredRadiantElementHost(component: unknown): JsxRenderable | undefined;
|
|
8
|
-
export declare function renderRadiantElementHostToString(component: RadiantElementServerRenderSsrCapable, options?: RenderToStringOptions): string;
|
|
9
11
|
export declare function renderRegisteredRadiantElementHostToString(component: unknown, options?: RenderToStringOptions): string | undefined;
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function renderRadiantElementViewToString(component: RadiantElementTrackedRenderSsrCapable, options?: RenderToStringOptions): string;
|
|
12
|
+
export declare function renderRadiantElementViewToString(component: RadiantElementViewRenderSource, options?: RenderToStringOptions): string;
|
|
12
13
|
export declare function getRadiantElementHostSsrAttributes(component: RadiantElementServerRenderSsrCapable): Record<string, string>;
|
|
13
14
|
export declare function resolveRadiantElementRenderBridge(component: object): RadiantElementRenderBridge | undefined;
|
|
14
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Installs the JSX custom-element render hook so nested CEs serialize through
|
|
17
|
+
* {@link renderRadiantElementHostToString} (same path as `renderComponent`).
|
|
18
|
+
*/
|
|
15
19
|
export declare function withRadiantServerCustomElementRenderBridge<T>(render: () => T): T;
|
|
16
|
-
export declare function getRadiantElementTrackedRenderOutput(component: RadiantElementTrackedRenderSsrCapable): {
|
|
17
|
-
containsSlots: boolean;
|
|
18
|
-
value: JsxRenderable;
|
|
19
|
-
};
|
|
20
20
|
export declare function getOrCreateRadiantElementSsrRuntime(): RadiantElementSsrRuntime;
|
|
21
21
|
export declare function withServerRadiantElementSsrRuntime<T>(render: () => T): T;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var{defineProperty:Y,getOwnPropertyNames:PP,getOwnPropertyDescriptor:qP}=Object,DP=Object.prototype.hasOwnProperty;function WP(P){return this[P]}var vP=(P)=>{var q=(R??=new WeakMap).get(P),D;if(q)return q;if(q=Y({},"__esModule",{value:!0}),P&&typeof P==="object"||typeof P==="function"){for(var W of PP(P))if(!DP.call(q,W))Y(q,W,{get:WP.bind(P,W),enumerable:!(D=qP(P,W))||D.enumerable})}return R.set(P,q),q},R;var QP=(P)=>P;function ZP(P,q){this[P]=QP.bind(null,q)}var bP=(P,q)=>{for(var D in q)Y(P,D,{get:q[D],enumerable:!0,configurable:!0,set:ZP.bind(q,D)})};var hP=(P,q)=>()=>(P&&(q=P(P=0)),q);var $P=((P)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(P,{get:(q,D)=>(typeof require<"u"?require:q)[D]}):P)(function(P){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+P+'" is not supported')});function S(P){return P.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}var K=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function dP(P,q,D){let W=P.constructor,Q=W[K]??[];if(Q.some((Z)=>Z.name===q))return;Q.push({name:q,options:D}),W[K]=Q}function w(P){return(P.constructor[K]??[]).slice()}var O=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),C=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),FP=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function lP(P,q){x(P,O,q)}function cP(P,q){x(P,C,q)}function I(P){JP(P,O)}function H(P,q){let D=P;jP(P,q,D[FP]??=new Set)}function x(P,q,D){let W=P,Q=Object.prototype.hasOwnProperty.call(W,q)?W[q]:void 0;if(Array.isArray(Q)){Q.push(D);return}Object.defineProperty(W,q,{value:[D]})}function JP(P,q){GP(P,(D)=>{let W=D[q];if(!Array.isArray(W))return;for(let Q of W)Q(P)})}function jP(P,q,D){for(let W of k(P)){let Q=W[C];if(!Array.isArray(Q))continue;for(let Z of Q){if(D.has(Z))continue;Z(P,q),D.add(Z)}}}function k(P){let q=[],D=Object.getPrototypeOf(P);while(D&&D!==Object.prototype)q.unshift(D),D=Object.getPrototypeOf(D);return q}function GP(P,q){for(let D of k(P))q(D)}function M(P,q){switch(q){case"construct":I(P);break;case"connect":H(P,"connect");break;case"ssr":H(P,"ssr");break}}function _(P){switch(P){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function XP(P){switch(typeof P){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(P))return"array";if(Object.prototype.toString.call(P)==="[object Object]")return"object"}function UP(P){switch(P){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function YP(P){try{return JSON.parse(P)}catch{throw TypeError("Invalid JSON string")}}var KP={array(P){let q=YP(P);if(!Array.isArray(q))throw TypeError(`Expected an array but got a value of type "${typeof q}"`);return q},boolean(P){return!(P==="0"||String(P).toLowerCase()==="false")},number(P){return Number(P.replace(/_/g,""))},object(P){let q=JSON.parse(P);if(q===null||typeof q!=="object"||Array.isArray(q))throw TypeError(`expected value of type "object" but instead got value "${P}" of type "${XP(q)}"`);return q},string(P){return P}},E={default:N,array:L,object:L};function L(P){return JSON.stringify(P)}function N(P){return`${P}`}function f(P,q){let D=_(q);if(!D)throw TypeError(`[radiant-element] Unknown type "${q}"`);return KP[D](P)}function z(P,q){let D=_(q);if(!D)throw TypeError(`[radiant-element] Unknown type "${q}"`);return(E[D]??E.default??N)(P)}function HP(P){return typeof P==="boolean"}function BP(P){return typeof P==="number"}function RP(P){return typeof P==="string"}function wP(P){return Array.isArray(P)}function OP(P){return typeof P==="object"&&!Array.isArray(P)&&P!==null}function iP(P,q){switch(P){case Boolean:return HP(q);case Number:return BP(q);case String:return RP(q);case Array:return wP(q);case Object:return OP(q);default:return!1}}var rP=(P,q,D,W)=>{if(q===Boolean){let Z=P.getAttribute(D);if(Z===null)return W;return Z===""?!0:f(Z,q)}let Q=P.getAttribute(D);return Q!==null?f(Q,q):W??UP(q)};import{getActiveSsrScopeValue as CP,withActiveSsrScopeValue as IP}from"@ecopages/jsx/server";var T=Symbol.for("@ecopages/radiant.element-ssr-runtime");function nP(){return CP(T)}function g(P,q){return IP(T,P,q)}var A=Symbol.for("@ecopages/radiant.customElementTagName");function eP(P,q){P[A]=q}function V(P){return P[A]}function v(P){let q={},D=new Set;return kP(P,q,D),MP(P,q,D),EP(P,q),q}function b(P){return Object.entries(P).map(([q,D])=>` ${q}="${S(D)}"`).join("")}function kP(P,q,D){for(let W of P.getReactiveProperties()){let Q=P.getPropertyValue(W.name);if(Q===void 0||Q===null||Q===!1)continue;q[W.attribute]=String(W.converter.toAttribute(Q)),D.add(W.attribute)}}function MP(P,q,D){for(let W of P.getReactivePropDefinitions()){let Q=W.options.attribute??W.name;if(D.has(Q))continue;let Z=P.getPropertyValue(W.name);if(Z===void 0||Z===null||Z===!1)continue;q[Q]=String(z(Z,W.options.type)),D.add(Q)}}function EP(P,q){for(let D of P.getAttributeNames()){let W=P.getAttribute(D);if(W!==null)q[D]=W}}var h=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function y(){return globalThis}function d(P){y()[h]=P}function Zq(P){return y()[h]?.(P)}var J;function l(){if(J!==void 0)return J;try{let{AsyncLocalStorage:P}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return J=new P,J}catch{return J=null,null}}var m=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function c(){let P=globalThis;return P[m]??=[],P[m]}function u(P){if(P.length===0)return()=>{return};let q=new Map;for(let Q of P)q.set(Q.getContextKey(),Q);let D=l();if(D){let Q=D.getStore()??[],Z=[...Q,q];return D.enterWith(Z),()=>{D.enterWith(Q)}}let W=c();return W.push(q),()=>{let Q=W.lastIndexOf(q);if(Q>=0)W.splice(Q,1)}}function p(P){let q=l()?.getStore()??c();for(let D=q.length-1;D>=0;D-=1){let W=q[D]?.get(P);if(W)return W}return}function Jq(P){let q=p(P);if(!q)return;return q.getContext()}d((P)=>p(P));function s(P,q){if(!q)return`${P.hostContent}${P.authoredHydrationMarkup}${P.slotProjectionScript}`;return`${P.hostContent}${P.slotProjectionScript}${P.hydrationScripts}`}function $(P){if(LP(P))return P;return}function LP(P){return typeof P.constructor==="function"&&typeof P.getAttribute==="function"&&typeof P.getAttributeNames==="function"&&typeof P.getAuthoredHydrationScriptMarkup==="function"&&typeof P.getContextProviders==="function"&&typeof P.getHydrationBindings==="function"&&typeof P.getReactiveProperties==="function"&&typeof P.getSlotProjectionScriptTag==="function"&&typeof P.resolveTrackedRenderOutput==="function"&&typeof P.renderViewToString==="function"}function i(P){let q=$(P);if(!q)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:q.constructor,getAttribute:(D)=>q.getAttribute(D),getAttributeNames:()=>q.getAttributeNames(),getAuthoredHydrationScriptMarkup:()=>q.getAuthoredHydrationScriptMarkup?.(),getContextProviders:()=>q.getContextProviders(),getHydrationBindings:()=>q.getHydrationBindings(),getReactiveProperties:()=>q.getReactiveProperties(),getReactivePropDefinitions:()=>w(P),getPropertyValue:(D)=>Reflect.get(P,D),getSlotProjectionScriptTag:()=>q.getSlotProjectionScriptTag?.(),resolveTrackedRenderOutput:()=>q.resolveTrackedRenderOutput(),renderViewToString:(D)=>q.renderViewToString(D)}}class B{component;host;constructor(P){this.component=P,this.host=i(P)}ensureReady(){M(this.component,"ssr")}renderHost(){return this.ensureReady(),{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(P={},q=this.getHostAttributes()){this.ensureReady();let D=this.getTagName(),W=u(this.host.getContextProviders());try{return`<${D}${b(q)}>${this.renderHostContent(P)}</${D}>`}finally{W()}}getHostAttributes(){return this.ensureReady(),v(this.host)}renderHostContent(P){let q=P.mode==="hydrate"||P.mode===void 0&&P.hydrate===!0,D=q?this.host.getHydrationBindings().map((W)=>W.renderHydrationScriptTag()).filter((W)=>typeof W==="string").join(""):"";return s({hostContent:this.host.renderViewToString(P),authoredHydrationMarkup:this.host.getAuthoredHydrationScriptMarkup?.()??"",slotProjectionScript:this.host.getSlotProjectionScriptTag?.()??"",hydrationScripts:D},q)}getTagName(){let P=V(this.host.constructor);if(!P)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return P}}import{renderToString as fP}from"@ecopages/jsx/server";import{createServerHydrationBindingState as r,isServerRenderHydrationActive as a,withForcedServerCustomElementRendering as _P,withServerCustomElementRenderHook as NP,withServerHydrationBindingState as o}from"@ecopages/jsx/server";var G;function n(P){return new B(P)}function X(P){return{nodeType:1,outerHTML:F(P,{mode:"hydrate"})}}function fq(P){if(j(P))return X(P);if(!U(P))return;return P.renderHost?.()??{nodeType:1,outerHTML:P.renderHostToString({mode:"hydrate"})}}function F(P,q={}){return e(()=>n(P).renderHostToString(q,t(P)))}function _q(P,q={}){if(j(P))return F(P,q);if(!U(P))return;return P.renderHostToString(q)}function Nq(P,q){if(j(P))return X(P);if(!U(P))return;return P.renderHost?.()??{nodeType:1,outerHTML:q}}function zP(P,q={}){return e(()=>gP(()=>fP(AP(P).value,q)))}function t(P){return n(P).getHostAttributes()}function TP(P){if(!j(P))return;return{renderHost:()=>X(P),renderHostToString:(q)=>F(P,q)}}function zq(P){return $(P)}function gP(P){return _P(()=>NP(({instance:q})=>{if(j(q))return{nodeType:1,get outerHTML(){let W=a(),Q={hydrate:W,mode:W?"hydrate":"plain"};if(!W)return F(q,Q);return o(r(),()=>F(q,Q))}};if(!U(q))return;let D=q;return{nodeType:1,get outerHTML(){let W=a();if(!W)return D.renderHostToString({hydrate:W,mode:W?"hydrate":"plain"});return o(r(),()=>D.renderHostToString({hydrate:W,mode:W?"hydrate":"plain"}))}}},P))}function AP(P){if(VP(P))return P.resolveTrackedRenderOutput();let q=$(P);if(!q)throw Error("Radiant SSR runtime requires tracked render output support on the component.");return q.resolveTrackedRenderOutput()}function j(P){if(typeof P!=="object"||P===null)return!1;return $(P)!==void 0}function U(P){if(typeof P!=="object"||P===null)return!1;return typeof P.renderHostToString==="function"}function VP(P){if(typeof P!=="object"||P===null)return!1;return typeof P.resolveTrackedRenderOutput==="function"}function SP(){if(G)return G;return G={getHostAttributes:t,renderHost:X,renderHostToString:F,resolveRenderBridge:TP,renderView:zP},G}function e(P){return g(SP(),P)}export{e as withServerRadiantElementSsrRuntime,gP as withRadiantServerCustomElementRenderBridge,Nq as resolveRegisteredRadiantElementPreview,zq as resolveRadiantElementSsrHostBridge,TP as resolveRadiantElementRenderBridge,_q as renderRegisteredRadiantElementHostToString,fq as renderRegisteredRadiantElementHost,zP as renderRadiantElementViewToString,F as renderRadiantElementHostToString,X as renderRadiantElementHost,AP as getRadiantElementTrackedRenderOutput,t as getRadiantElementHostSsrAttributes,SP as getOrCreateRadiantElementSsrRuntime,n as createRadiantElementSsrService};
|
|
1
|
+
function T0(f){switch(f){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}var u={default:s,array:d,object:d};function d(f){return JSON.stringify(f)}function s(f){return`${f}`}function m(f,x){let F=T0(x);if(!F)throw TypeError(`[radiant-element] Unknown type "${x}"`);return(u[F]??u.default??s)(f)}function w(f){return f.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function p(f){let x={},F=new Set;return K0(f,x,F),w0(f,x,F),L0(f,x),x}function r(f){return Object.entries(f).map(([x,F])=>` ${x}="${w(F)}"`).join("")}function K0(f,x,F){for(let H of f.getReactiveProperties()){let $=f.getPropertyValue(H.name);if($===void 0||$===null||$===!1)continue;x[H.attribute]=String(H.converter.toAttribute($)),F.add(H.attribute)}}function w0(f,x,F){for(let H of f.getReactivePropDefinitions()){let $=H.options.attribute??H.name;if(F.has($))continue;let q=f.getPropertyValue(H.name);if(q===void 0||q===null||q===!1)continue;x[$]=String(m(q,H.options.type)),F.add($)}}function L0(f,x){for(let F of f.getAttributeNames()){let H=f.getAttribute(F);if(H!==null)x[F]=H}}import{getActiveSsrScopeValue as k,withActiveSsrScopeValue as l}from"@ecopages/jsx/server";var D0;function i(f){D0=f}var U=Symbol.for("@ecopages/radiant.ssr-provider-stack");function n(f){if(k(U)!==void 0)return f();return l(U,[],f)}function o(f,x){if(f.length===0)return x();let F=k(U);if(F===void 0)throw Error("SSR context providers require runWithSsrProviderStack(...). Wrap the sync render snapshot at the render boundary.");let H=new Map;for(let $ of f)H.set($.getContextKey(),$);return l(U,[...F,H],x)}function a(f){let x=k(U);if(!x)return;for(let F=x.length-1;F>=0;F-=1){let H=x[F]?.get(f);if(H)return H}return}function Xf(f){let x=a(f);if(!x)return;return x.getContext()}i((f)=>a(f));function t(f,x){if(!x)return`${f.hostContent}${f.authoredHydrationMarkup}${f.slotProjectionScript}`;return`${f.hostContent}${f.slotProjectionScript}${f.hydrationScripts}`}function L(f){if(f.renderRootMode!=="shadow")return;let x=typeof f.constructor==="function"&&f.constructor.name?f.constructor.name:"RadiantElement";throw Error(`${x} uses renderRootMode "shadow". Radiant SSR is light-DOM only; keep renderRootMode "light" for server rendering, or skip SSR for this host.`)}var z0=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function e(f){return(f.constructor[z0]??[]).slice()}var f0=Symbol.for("@ecopages/radiant.RadiantElement");function J(f){return typeof f==="object"&&f!==null&&f0 in f}function x0(f){if(!J(f))throw Error("Radiant SSR runtime requires a RadiantElement host. Import a Radiant server SSR entrypoint and pass a RadiantElement instance.");return{constructor:f.constructor,renderRootMode:f.renderRootMode,getAttribute:(x)=>f.getAttribute(x),getAttributeNames:()=>f.getAttributeNames(),getAuthoredHydrationScriptMarkup:()=>f.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>f.getContextProviders(),getHydrationBindings:()=>f.getHydrationBindings(),getReactiveProperties:()=>f.getReactiveProperties(),getReactivePropDefinitions:()=>e(f),getPropertyValue:(x)=>Reflect.get(f,x),getSlotProjectionScriptTag:()=>f.getSlotProjectionScriptTag(),resolveTrackedRenderOutput:()=>f.resolveTrackedRenderOutput()}}var R0=Symbol.for("@ecopages/radiant.customElementTagName");function F0(f){return f[R0]}var M0=Symbol.for("@ecopages/radiant.ssr-preparation-callbacks"),H0=Symbol.for("@ecopages/radiant.ssr-preparation-running");function $0(f){let x=f,F=x[M0];if(!Array.isArray(F))return;x[H0]=!0;try{for(let H of F)H()}finally{delete x[H0]}}var _0=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),E0=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),N0=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function q0(f){k0(f,_0)}function I(f,x){let F=f;I0(f,x,F[N0]??=new Set)}function k0(f,x){V0(f,(F)=>{let H=F[x];if(!Array.isArray(H))return;for(let $ of H)$(f)})}function I0(f,x,F){for(let H of g0(f)){let $=H[E0];if(!Array.isArray($))continue;for(let q of $){if(F.has(q))continue;q(f,x),F.add(q)}}}function g0(f){let x=[],F=Object.getPrototypeOf(f);while(F&&F!==Object.prototype)x.unshift(F),F=Object.getPrototypeOf(F);return x}function V0(f,x){for(let F of g0(f))x(F)}function Q0(f,x){switch(x){case"construct":q0(f);break;case"connect":I(f,"connect");break;case"ssr":I(f,"ssr");break}}class V{component;host;renderView;constructor(f,x){this.component=f,this.host=x0(f),this.renderView=x}ensureReady(){L(this.host),Q0(this.component,"ssr"),$0(this.component)}renderHost(){return this.ensureReady(),{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(f={},x=this.getHostAttributes()){this.ensureReady();let F=this.getTagName();return o(this.host.getContextProviders(),()=>`<${F}${r(x)}>${this.renderHostContent(f)}</${F}>`)}getHostAttributes(){return this.ensureReady(),p(this.host)}renderHostContent(f){let x=f.mode==="hydrate"||f.mode===void 0&&f.hydrate===!0,F=x?this.host.getHydrationBindings().map((H)=>H.renderHydrationScriptTag()).filter((H)=>typeof H==="string").join(""):"";return t({hostContent:this.renderView(this.host,f),authoredHydrationMarkup:this.host.getAuthoredHydrationScriptMarkup?.()??"",slotProjectionScript:this.host.getSlotProjectionScriptTag?.()??"",hydrationScripts:F},x)}getTagName(){let f=F0(this.host.constructor);if(!f)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return f}}import{getActiveSsrScopeValue as A0,withActiveSsrScopeValue as b0}from"@ecopages/jsx/server";var Z0=Symbol.for("@ecopages/radiant.element-ssr-runtime"),D;function X0(f){D=f}function W0(f,x){if(!D)throw Error("Radiant element SSR runtime requires the server scope adapters. Import a Radiant server SSR entrypoint before rendering.");if(D.get(Z0)===f)return x();return D.withValue(Z0,f,x)}X0({get:A0,withValue:b0});function P(f){return`data-${f.replace(/([A-Z])/g,"-$1").toLowerCase()}`}function A(f){return f.replace(/-([a-z])/g,(x,F)=>F.toUpperCase())}var b;function J0(f){b=f}function y(){if(!b)throw Error("Minimal DOM HTML parsers are not registered. Import @ecopages/radiant/server/install-ssr-runtime (or ./html) before using innerHTML.");return b}class Z extends EventTarget{nodeType;static DOCUMENT_NODE=9;static ELEMENT_NODE=1;static TEXT_NODE=3;childNodes=[];ownerDocument;parentNode=null;constructor(f,x=null){super();this.nodeType=f;this.ownerDocument=x}append(...f){for(let x of f)this.appendChild(typeof x==="string"?y0(x):x)}appendChild(f){if("parentNode"in f&&f.parentNode&&"removeChild"in f.parentNode)f.parentNode.removeChild(f);return this.childNodes.push(f),f.ownerDocument=this.nodeType===Z.DOCUMENT_NODE?this:this.ownerDocument,f.parentNode=this,f}removeChild(f){let x=this.childNodes.indexOf(f);if(x===-1)return f;return this.childNodes.splice(x,1),f.parentNode=null,f}replaceChildren(...f){for(let x of this.childNodes)x.parentNode=null;this.childNodes=[],this.append(...f)}get textContent(){return this.childNodes.map((f)=>f.textContent??"").join("")}set textContent(f){this.replaceChildren(f??"")}getRootNode(){let f=this;while("parentNode"in f&&f.parentNode)f=f.parentNode;return f}}class j extends Z{value;constructor(f,x=G()){super(Z.TEXT_NODE,x);this.value=f}get textContent(){return this.value}set textContent(f){this.value=f??""}}class P0{element;constructor(f){this.element=f}add(...f){let x=new Set(this.readTokens());for(let F of f)if(F!=="")x.add(F);this.writeTokens([...x])}remove(...f){let x=new Set(this.readTokens());for(let F of f)x.delete(F);this.writeTokens([...x])}toggle(f,x){let F=this.contains(f);if(x??!F)return this.add(f),!0;return this.remove(f),!1}contains(f){return this.readTokens().includes(f)}toString(){return this.value}get value(){return this.element.getAttribute("class")??""}readTokens(){return this.value.split(/\s+/).map((f)=>f.trim()).filter((f)=>f.length>0)}writeTokens(f){if(f.length===0){this.element.removeAttribute("class");return}this.element.setAttribute("class",f.join(" "))}}class B extends Z{attributes=new Map;classListValue;datasetValue;fragmentHtml;fragmentText;localName;tagName;constructor(f="div",x=G()){super(Z.ELEMENT_NODE,x);this.localName=f.toLowerCase(),this.tagName=this.localName.toUpperCase()}get id(){return this.getAttribute("id")??""}set id(f){if(f===""){this.removeAttribute("id");return}this.setAttribute("id",f)}get classList(){return this.classListValue??=new P0(this),this.classListValue}get dataset(){return this.datasetValue??=new Proxy({},{deleteProperty:(f,x)=>{if(typeof x!=="string")return!1;return this.removeAttribute(P(x)),!0},get:(f,x)=>{if(typeof x!=="string")return;return this.getAttribute(P(x))??void 0},getOwnPropertyDescriptor:(f,x)=>{if(typeof x!=="string")return;return{configurable:!0,enumerable:!0,value:this.getAttribute(P(x))??void 0,writable:!0}},has:(f,x)=>{return typeof x==="string"&&this.hasAttribute(P(x))},ownKeys:()=>{return this.getAttributeNames().filter((f)=>f.startsWith("data-")).map((f)=>A(f.slice(5)))},set:(f,x,F)=>{if(typeof x!=="string")return!1;return this.setAttribute(P(x),String(F)),!0}}),this.datasetValue}hasAttribute(f){return this.attributes.has(f)}getAttribute(f){return this.attributes.get(f)??null}getAttributeNames(){return Array.from(this.attributes.keys())}setAttribute(f,x){this.fragmentHtml=void 0,this.attributes.set(f,String(x))}toggleAttribute(f,x){if(x??!this.hasAttribute(f))return this.setAttribute(f,""),!0;return this.removeAttribute(f),!1}removeAttribute(f){this.fragmentHtml=void 0,this.attributes.delete(f)}querySelector(){return null}querySelectorAll(){return[]}matches(){return!1}get outerHTML(){if(this.fragmentHtml!==void 0)return this.fragmentHtml;let f=Array.from(this.attributes.entries()).map(([x,F])=>` ${x}="${w(F)}"`).join("");return`<${this.localName}${f}>${this.innerHTML}</${this.localName}>`}get innerHTML(){return this.childNodes.map((f)=>y().serializeNodeHtml(f)).join("")}set innerHTML(f){this.fragmentHtml=void 0,this.fragmentText=void 0,this.replaceChildren(...y().parseHtmlToNodes(f,this.ownerDocument))}get textContent(){return this.fragmentText??super.textContent??""}set textContent(f){this.fragmentHtml=void 0,this.fragmentText=f??"",super.textContent=f}setSerializedFragment(f,x,F){this.fragmentHtml=f,this.fragmentText=x,this.attributes=new Map(Object.entries(F)),this.replaceChildren()}}class Y{bubbles;cancelable;composed;type;constructor(f,x={}){this.type=f,this.bubbles=x.bubbles??!1,this.cancelable=x.cancelable??!1,this.composed=x.composed??!1}}class z extends Y{detail;constructor(f,x={}){super(f,x);this.detail=x.detail}}class X extends B{isConnected=!1;constructor(f="div",x=G()){super(f,x)}insertAdjacentHTML(f,x){this.append(...y().parseHtmlToNodes(x,this.ownerDocument))}}class W extends X{constructor(f=G()){super("script",f)}}function y0(f){return new j(f,G())}function G(){return globalThis.document??null}class R extends Z{constructor(){super(Z.DOCUMENT_NODE)}createElement(f){return f.toLowerCase()==="script"?new W(this):new X(f,this)}createTextNode(f){return new j(f,this)}querySelector(){return null}querySelectorAll(){return[]}}class S{definitions=new Map;define(f,x){if(this.definitions.has(f))return;this.definitions.set(f,x)}get(f){return this.definitions.get(f)}}var M=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function j0(f){let x=[],F=0;while(F<f.length){let H=F;if(f.startsWith("<!--",F)){let g=f.indexOf("-->",F+4);F=g===-1?f.length:g+3,x.push(f.slice(H,F));continue}if(f[F]!=="<"){let g=f.indexOf("<",F);F=g===-1?f.length:g,x.push(f.slice(H,F));continue}let $=C(f,F);if(!$){x.push(f.slice(H));break}if($.type!=="open"||$.selfClosing||M.has($.tagName)){F=$.end,x.push(f.slice(H,F));continue}F=$.end;let q=1;while(F<f.length&&q>0){let g=f.indexOf("<",F);if(g===-1){F=f.length;break}let Q=C(f,g);if(!Q){F=f.length;break}if(F=Q.end,Q.type==="comment"||Q.type==="declaration")continue;if(Q.type==="open"&&!Q.selfClosing&&!M.has(Q.tagName)){q+=1;continue}if(Q.type==="close")q-=1}x.push(f.slice(H,F))}return x.filter((H)=>H!=="")}function S0(f,x){let F;for(let H=x+1;H<f.length;H+=1){let $=f[H];if(F){if($===F)F=void 0;continue}if($==='"'||$==="'"){F=$;continue}if($===">")return H+1}return f.length}function h0(f){let x={},F=/([:^@A-Za-z0-9_.-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>/]+)))?/g;for(let H of f.matchAll(F)){let[,$,q,g,Q]=H;if(!$)continue;x[$]=q??g??Q??""}return x}function C(f,x){if(f.startsWith("<!--",x)){let v=f.indexOf("-->",x+4);return{end:v===-1?f.length:v+3,type:"comment"}}let F=S0(f,x),H=f.slice(x+1,F-1).trim();if(H==="")return;if(H.startsWith("!")||H.startsWith("?"))return{end:F,type:"declaration"};if(H.startsWith("/"))return{end:F,type:"close"};let $=/\/\s*$/.test(H),q=$?H.replace(/\/\s*$/,"").trim():H,g=q.split(/[\s/>]/,1)[0]?.toLowerCase()??"",Q=g.length,K=q.slice(Q).trim(),N=$||M.has(g)?"":c0(f,x,F,g);return{attributes:h0(K),end:F,innerHtml:N,selfClosing:$,tagName:g,type:"open"}}function c0(f,x,F,H){let $=F,q=1;while($<f.length&&q>0){let g=f.indexOf("<",$);if(g===-1)return f.slice(F);let Q=C(f,g);if(!Q)return f.slice(F);if(Q.type==="open"&&Q.tagName===H&&!Q.selfClosing&&!M.has(H))q+=1;if(Q.type==="close"){if(f.slice(g+2,Q.end-1).trim().toLowerCase()===H){if(q-=1,q===0)return f.slice(F,g)}}$=Q.end}return f.slice(F)}function v0(f,x,F){let H=x.tagName==="script"?new W(F):new X(x.tagName,F);return H.setSerializedFragment(f,u0(x.innerHtml),x.attributes),H}function u0(f){return f.replace(/<!--.*?-->/gs,"").replace(/<[^>]+>/g,"")}function d0(f,x=G()){return j0(f).map((F)=>{if(!F.startsWith("<"))return new j(F,x);let H=C(F,0);if(!H||H.type!=="open")return new j(F,x);return v0(F,H,x)})}function s0(f){if(f.nodeType===Z.TEXT_NODE)return f.textContent??"";return"outerHTML"in f&&typeof f.outerHTML==="string"?f.outerHTML:f.textContent??""}J0({parseHtmlToNodes:d0,serializeNodeHtml:s0});function G0(f){let x=globalThis.CSS;if(typeof x?.escape==="function")return x.escape(f);let F="";for(let H=0;H<f.length;H+=1){let $=f[H]??"",q=$.codePointAt(0)??0;if(q===0){F+="�";continue}let g=q>=1&&q<=31||q===127,Q=H===0&&q>=48&&q<=57,K=H===1&&q>=48&&q<=57&&(f[0]??"")==="-",N=H===0&&$==="-"&&f.length===1;if(g||Q||K){F+=`\\${q.toString(16)} `;continue}if(q>=128||$==="-"||$==="_"||q>=48&&q<=57||q>=65&&q<=90||q>=97&&q<=122){F+=N?`\\${$}`:$;continue}F+=`\\${$}`}return F}var T,h={escape(f){return G0(String(f))}};function O0(){let f=globalThis,x=f.customElements;if(typeof f.Node>"u"||typeof f.Document>"u"||typeof f.Element>"u"||typeof f.HTMLElement>"u"||typeof f.document>"u"||!x||typeof x.define!=="function"||typeof x.get!=="function")return;return f.window??{CSS:f.CSS??h,CustomEvent:f.CustomEvent??z,Document:f.Document,Element:f.Element,Event:f.Event??Y,EventTarget:f.EventTarget??EventTarget,HTMLScriptElement:f.HTMLScriptElement??f.HTMLElement,HTMLElement:f.HTMLElement,Node:f.Node,document:f.document,customElements:x}}function U0(){let f=O0();if(f)return f;return _()}function m0(){return U0(),{prepareHost(f,x={}){if(x.authoredContent!==void 0)f.innerHTML=x.authoredContent}}}function _(){let f=O0();if(f)return f;if(T)return T;let x=new S,F=new R,H=globalThis.Event??Y,$=globalThis.CustomEvent??z,q=R,g=globalThis.EventTarget??EventTarget;return T={CSS:globalThis.CSS??h,CustomEvent:$,Document:q,Element:B,Event:H,EventTarget:g,HTMLScriptElement:W,HTMLElement:X,Node:Z,document:F,customElements:x},Object.assign(globalThis,{CSS:globalThis.CSS??h,CustomEvent:$,Document:q,Element:B,Event:H,EventTarget:g,HTMLScriptElement:W,HTMLElement:X,Node:Z,document:F,customElements:x,window:T}),T}_();var $1=!0;var g1=!0;import{renderToString as p0}from"@ecopages/jsx/server";import{createServerHydrationBindingState as r0,isServerRenderHydrationActive as i0,withServerCustomElementRenderHook as l0,withServerHydrationBindingState as n0}from"@ecopages/jsx/server";var E;function B0(f){return new V(f,Y0)}function O(f,x={}){return C0(()=>{let F=B0(f);return F.renderHostToString(x,F.getHostAttributes())})}function c(f){return{nodeType:1,outerHTML:O(f,{mode:"hydrate"})}}function O1(f){if(!J(f))return;return c(f)}function U1(f,x={}){if(!J(f))return;return O(f,x)}function Y0(f,x={}){return L(f),C0(()=>t0(()=>p0(f.resolveTrackedRenderOutput().value,x)))}function o0(f){return B0(f).getHostAttributes()}function a0(f){if(!J(f))return;return{renderHost:()=>c(f),renderHostToString:(x)=>O(f,x)}}function t0(f){return l0(({instance:x})=>{if(!J(x))return;return{nodeType:1,get outerHTML(){return e0(x)}}},f)}function e0(f){let x=i0(),F={hydrate:x,mode:x?"hydrate":"plain"};if(!x)return O(f,F);return n0(r0(),()=>O(f,F))}function ff(){if(E)return E;return E={getHostAttributes:o0,renderHost:c,renderHostToString:O,resolveRenderBridge:a0,renderView:Y0},E}function C0(f){return W0(ff(),()=>n(f))}export{C0 as withServerRadiantElementSsrRuntime,t0 as withRadiantServerCustomElementRenderBridge,a0 as resolveRadiantElementRenderBridge,U1 as renderRegisteredRadiantElementHostToString,O1 as renderRegisteredRadiantElementHost,Y0 as renderRadiantElementViewToString,O as renderRadiantElementHostToString,c as renderRadiantElementHost,o0 as getRadiantElementHostSsrAttributes,ff as getOrCreateRadiantElementSsrRuntime,B0 as createRadiantElementSsrService};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=34EE8AD97CB89E1964756E2164756E21
|