@llui/dom 0.0.24 → 0.0.25

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.
@@ -1 +1 @@
1
- {"version":3,"file":"linkedom.d.ts","sourceRoot":"","sources":["../../src/ssr/linkedom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAyB3C;;;;;;GAMG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CA8BnD"}
1
+ {"version":3,"file":"linkedom.d.ts","sourceRoot":"","sources":["../../src/ssr/linkedom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAyB3C;;;;;;GAMG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAmCnD"}
@@ -6,8 +6,13 @@
6
6
  * Requires `linkedom` as an installed dependency.
7
7
  */
8
8
  export async function linkedomEnv() {
9
- // @ts-expect-error — linkedom is an optional peer dependency, not typed
10
- const linkedomMod = await import('linkedom');
9
+ // Dynamic import — linkedom is an optional peer dependency. When it
10
+ // is installed (workspace build, or any consumer that needs the
11
+ // linkedom env), TS resolves the module and infers a real type;
12
+ // when absent, TS errors with "Cannot find module 'linkedom'" which
13
+ // is the intended nudge. The explicit `as unknown as …` coerces
14
+ // both cases through the narrow shape the runtime actually uses.
15
+ const linkedomMod = (await import('linkedom'));
11
16
  const { parseHTML } = linkedomMod;
12
17
  const w = parseHTML('<!DOCTYPE html><html><body></body></html>');
13
18
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"linkedom.js","sourceRoot":"","sources":["../../src/ssr/linkedom.ts"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,wEAAwE;IACxE,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,WAErB,CAAA;IACD,MAAM,CAAC,GAAG,SAAS,CAAC,2CAA2C,CAAC,CAAA;IAEhE,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACrD,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC;QACjE,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;QACzD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;QACvD,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE;QACjE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC3C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;QAC1C,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAwB,CAAA;YAC5E,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAA;YACzB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["/**\n * `@llui/dom/ssr/linkedom` — linkedom-backed `DomEnv` factory.\n *\n * Linkedom is a lightweight JSDOM alternative — smaller bundle, works\n * on Cloudflare Workers and other strict-isolate runtimes where jsdom's\n * transitive `whatwg-url` / `tr46` / `punycode` chain fails to resolve.\n */\nimport type { DomEnv } from '../dom-env.js'\n\n// Linkedom exposes a `parseHTML` function that returns a window-like\n// object with DOM constructors and a `document`. The exact shape is\n// narrower than JSDOM's but matches the DomEnv surface we need.\ninterface LinkedomWindow {\n document: {\n createElement: (tag: string) => Element\n createElementNS: (ns: string, tag: string) => Element\n createTextNode: (text: string) => Text\n createComment: (text: string) => Comment\n createDocumentFragment: () => DocumentFragment\n createRange: () => Range\n }\n Element: typeof Element\n Node: typeof Node\n Text: typeof Text\n Comment: typeof Comment\n DocumentFragment: typeof DocumentFragment\n HTMLElement: typeof HTMLElement\n HTMLTemplateElement: typeof HTMLTemplateElement\n ShadowRoot: typeof ShadowRoot\n MouseEvent: typeof MouseEvent\n}\n\n/**\n * Construct a `DomEnv` backed by a fresh linkedom instance. Each call\n * returns a new env — no process-level state, safe under concurrency\n * and compatible with Cloudflare Workers.\n *\n * Requires `linkedom` as an installed dependency.\n */\nexport async function linkedomEnv(): Promise<DomEnv> {\n // @ts-expect-error — linkedom is an optional peer dependency, not typed\n const linkedomMod = await import('linkedom')\n const { parseHTML } = linkedomMod as {\n parseHTML: (html: string) => LinkedomWindow\n }\n const w = parseHTML('<!DOCTYPE html><html><body></body></html>')\n\n return {\n createElement: (tag) => w.document.createElement(tag),\n createElementNS: (ns, tag) => w.document.createElementNS(ns, tag),\n createTextNode: (text) => w.document.createTextNode(text),\n createComment: (text) => w.document.createComment(text),\n createDocumentFragment: () => w.document.createDocumentFragment(),\n createRange: () => w.document.createRange(),\n Element: w.Element,\n Node: w.Node,\n Text: w.Text,\n Comment: w.Comment,\n DocumentFragment: w.DocumentFragment,\n HTMLElement: w.HTMLElement,\n HTMLTemplateElement: w.HTMLTemplateElement,\n ShadowRoot: w.ShadowRoot,\n MouseEvent: w.MouseEvent,\n parseHtmlFragment: (html) => {\n const template = w.document.createElement('template') as HTMLTemplateElement\n template.innerHTML = html\n return template.content\n },\n }\n}\n"]}
1
+ {"version":3,"file":"linkedom.js","sourceRoot":"","sources":["../../src/ssr/linkedom.ts"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,oEAAoE;IACpE,gEAAgE;IAChE,gEAAgE;IAChE,oEAAoE;IACpE,gEAAgE;IAChE,iEAAiE;IACjE,MAAM,WAAW,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAE5C,CAAA;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAA;IACjC,MAAM,CAAC,GAAG,SAAS,CAAC,2CAA2C,CAAC,CAAA;IAEhE,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACrD,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC;QACjE,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;QACzD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;QACvD,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE;QACjE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC3C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;QAC1C,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAwB,CAAA;YAC5E,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAA;YACzB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["/**\n * `@llui/dom/ssr/linkedom` — linkedom-backed `DomEnv` factory.\n *\n * Linkedom is a lightweight JSDOM alternative — smaller bundle, works\n * on Cloudflare Workers and other strict-isolate runtimes where jsdom's\n * transitive `whatwg-url` / `tr46` / `punycode` chain fails to resolve.\n */\nimport type { DomEnv } from '../dom-env.js'\n\n// Linkedom exposes a `parseHTML` function that returns a window-like\n// object with DOM constructors and a `document`. The exact shape is\n// narrower than JSDOM's but matches the DomEnv surface we need.\ninterface LinkedomWindow {\n document: {\n createElement: (tag: string) => Element\n createElementNS: (ns: string, tag: string) => Element\n createTextNode: (text: string) => Text\n createComment: (text: string) => Comment\n createDocumentFragment: () => DocumentFragment\n createRange: () => Range\n }\n Element: typeof Element\n Node: typeof Node\n Text: typeof Text\n Comment: typeof Comment\n DocumentFragment: typeof DocumentFragment\n HTMLElement: typeof HTMLElement\n HTMLTemplateElement: typeof HTMLTemplateElement\n ShadowRoot: typeof ShadowRoot\n MouseEvent: typeof MouseEvent\n}\n\n/**\n * Construct a `DomEnv` backed by a fresh linkedom instance. Each call\n * returns a new env — no process-level state, safe under concurrency\n * and compatible with Cloudflare Workers.\n *\n * Requires `linkedom` as an installed dependency.\n */\nexport async function linkedomEnv(): Promise<DomEnv> {\n // Dynamic import — linkedom is an optional peer dependency. When it\n // is installed (workspace build, or any consumer that needs the\n // linkedom env), TS resolves the module and infers a real type;\n // when absent, TS errors with \"Cannot find module 'linkedom'\" which\n // is the intended nudge. The explicit `as unknown as …` coerces\n // both cases through the narrow shape the runtime actually uses.\n const linkedomMod = (await import('linkedom')) as unknown as {\n parseHTML: (html: string) => LinkedomWindow\n }\n const { parseHTML } = linkedomMod\n const w = parseHTML('<!DOCTYPE html><html><body></body></html>')\n\n return {\n createElement: (tag) => w.document.createElement(tag),\n createElementNS: (ns, tag) => w.document.createElementNS(ns, tag),\n createTextNode: (text) => w.document.createTextNode(text),\n createComment: (text) => w.document.createComment(text),\n createDocumentFragment: () => w.document.createDocumentFragment(),\n createRange: () => w.document.createRange(),\n Element: w.Element,\n Node: w.Node,\n Text: w.Text,\n Comment: w.Comment,\n DocumentFragment: w.DocumentFragment,\n HTMLElement: w.HTMLElement,\n HTMLTemplateElement: w.HTMLTemplateElement,\n ShadowRoot: w.ShadowRoot,\n MouseEvent: w.MouseEvent,\n parseHtmlFragment: (html) => {\n const template = w.document.createElement('template') as HTMLTemplateElement\n template.innerHTML = html\n return template.content\n },\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llui/dom",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {