@nextwebwg/html-next 1.0.0-alpha.1

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.
Files changed (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/ast.d.ts +7 -0
  4. package/dist/ast.d.ts.map +1 -0
  5. package/dist/ast.js +2 -0
  6. package/dist/ast.js.map +1 -0
  7. package/dist/browser-loader.bundle.js +9 -0
  8. package/dist/browser-loader.d.ts +35 -0
  9. package/dist/browser-loader.d.ts.map +1 -0
  10. package/dist/browser-loader.js +83 -0
  11. package/dist/browser-loader.js.map +1 -0
  12. package/dist/browser-source.d.ts +10 -0
  13. package/dist/browser-source.d.ts.map +1 -0
  14. package/dist/browser-source.js +97 -0
  15. package/dist/browser-source.js.map +1 -0
  16. package/dist/browser.d.ts +5 -0
  17. package/dist/browser.d.ts.map +1 -0
  18. package/dist/browser.js +9 -0
  19. package/dist/browser.js.map +1 -0
  20. package/dist/cli.d.ts +31 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +138 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/component-styles-build.d.ts +11 -0
  25. package/dist/component-styles-build.d.ts.map +1 -0
  26. package/dist/component-styles-build.js +74 -0
  27. package/dist/component-styles-build.js.map +1 -0
  28. package/dist/component-styles.d.ts +37 -0
  29. package/dist/component-styles.d.ts.map +1 -0
  30. package/dist/component-styles.js +236 -0
  31. package/dist/component-styles.js.map +1 -0
  32. package/dist/contract-platform.d.ts +5 -0
  33. package/dist/contract-platform.d.ts.map +1 -0
  34. package/dist/contract-platform.js +8 -0
  35. package/dist/contract-platform.js.map +1 -0
  36. package/dist/contract.d.ts +14 -0
  37. package/dist/contract.d.ts.map +1 -0
  38. package/dist/contract.js +234 -0
  39. package/dist/contract.js.map +1 -0
  40. package/dist/controller-files.d.ts +10 -0
  41. package/dist/controller-files.d.ts.map +1 -0
  42. package/dist/controller-files.js +54 -0
  43. package/dist/controller-files.js.map +1 -0
  44. package/dist/controller.d.ts +15 -0
  45. package/dist/controller.d.ts.map +1 -0
  46. package/dist/controller.js +33 -0
  47. package/dist/controller.js.map +1 -0
  48. package/dist/data.d.ts +28 -0
  49. package/dist/data.d.ts.map +1 -0
  50. package/dist/data.js +100 -0
  51. package/dist/data.js.map +1 -0
  52. package/dist/diagnostics.d.ts +11 -0
  53. package/dist/diagnostics.d.ts.map +1 -0
  54. package/dist/diagnostics.js +13 -0
  55. package/dist/diagnostics.js.map +1 -0
  56. package/dist/expression.d.ts +80 -0
  57. package/dist/expression.d.ts.map +1 -0
  58. package/dist/expression.js +474 -0
  59. package/dist/expression.js.map +1 -0
  60. package/dist/freeze.d.ts +2 -0
  61. package/dist/freeze.d.ts.map +1 -0
  62. package/dist/freeze.js +8 -0
  63. package/dist/freeze.js.map +1 -0
  64. package/dist/generate.d.ts +11 -0
  65. package/dist/generate.d.ts.map +1 -0
  66. package/dist/generate.js +41 -0
  67. package/dist/generate.js.map +1 -0
  68. package/dist/generated/dom-properties.d.ts +8 -0
  69. package/dist/generated/dom-properties.d.ts.map +1 -0
  70. package/dist/generated/dom-properties.js +1410 -0
  71. package/dist/generated/dom-properties.js.map +1 -0
  72. package/dist/generated-runtime.d.ts +42 -0
  73. package/dist/generated-runtime.d.ts.map +1 -0
  74. package/dist/generated-runtime.js +266 -0
  75. package/dist/generated-runtime.js.map +1 -0
  76. package/dist/graph.d.ts +37 -0
  77. package/dist/graph.d.ts.map +1 -0
  78. package/dist/graph.js +81 -0
  79. package/dist/graph.js.map +1 -0
  80. package/dist/index.d.ts +29 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +23 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/language.d.ts +7 -0
  85. package/dist/language.d.ts.map +1 -0
  86. package/dist/language.js +43 -0
  87. package/dist/language.js.map +1 -0
  88. package/dist/names.d.ts +4 -0
  89. package/dist/names.d.ts.map +1 -0
  90. package/dist/names.js +19 -0
  91. package/dist/names.js.map +1 -0
  92. package/dist/node-loader.d.ts +22 -0
  93. package/dist/node-loader.d.ts.map +1 -0
  94. package/dist/node-loader.js +109 -0
  95. package/dist/node-loader.js.map +1 -0
  96. package/dist/package-config.d.ts +22 -0
  97. package/dist/package-config.d.ts.map +1 -0
  98. package/dist/package-config.js +2 -0
  99. package/dist/package-config.js.map +1 -0
  100. package/dist/package.d.ts +9 -0
  101. package/dist/package.d.ts.map +1 -0
  102. package/dist/package.js +208 -0
  103. package/dist/package.js.map +1 -0
  104. package/dist/parser.d.ts +11 -0
  105. package/dist/parser.d.ts.map +1 -0
  106. package/dist/parser.js +938 -0
  107. package/dist/parser.js.map +1 -0
  108. package/dist/platform.d.ts +3 -0
  109. package/dist/platform.d.ts.map +1 -0
  110. package/dist/platform.js +26 -0
  111. package/dist/platform.js.map +1 -0
  112. package/dist/reactivity.d.ts +88 -0
  113. package/dist/reactivity.d.ts.map +1 -0
  114. package/dist/reactivity.js +594 -0
  115. package/dist/reactivity.js.map +1 -0
  116. package/dist/registry.d.ts +14 -0
  117. package/dist/registry.d.ts.map +1 -0
  118. package/dist/registry.js +39 -0
  119. package/dist/registry.js.map +1 -0
  120. package/dist/resolve.d.ts +24 -0
  121. package/dist/resolve.d.ts.map +1 -0
  122. package/dist/resolve.js +65 -0
  123. package/dist/resolve.js.map +1 -0
  124. package/dist/runtime.d.ts +110 -0
  125. package/dist/runtime.d.ts.map +1 -0
  126. package/dist/runtime.js +1926 -0
  127. package/dist/runtime.js.map +1 -0
  128. package/dist/sanitize.d.ts +8 -0
  129. package/dist/sanitize.d.ts.map +1 -0
  130. package/dist/sanitize.js +38 -0
  131. package/dist/sanitize.js.map +1 -0
  132. package/dist/source-graph.d.ts +5 -0
  133. package/dist/source-graph.d.ts.map +1 -0
  134. package/dist/source-graph.js +60 -0
  135. package/dist/source-graph.js.map +1 -0
  136. package/dist/source-parser.d.ts +4 -0
  137. package/dist/source-parser.d.ts.map +1 -0
  138. package/dist/source-parser.js +38 -0
  139. package/dist/source-parser.js.map +1 -0
  140. package/dist/source.d.ts +4 -0
  141. package/dist/source.d.ts.map +1 -0
  142. package/dist/source.js +6 -0
  143. package/dist/source.js.map +1 -0
  144. package/dist/targets/backend.d.ts +28 -0
  145. package/dist/targets/backend.d.ts.map +1 -0
  146. package/dist/targets/backend.js +42 -0
  147. package/dist/targets/backend.js.map +1 -0
  148. package/dist/targets/docs.d.ts +3 -0
  149. package/dist/targets/docs.d.ts.map +1 -0
  150. package/dist/targets/docs.js +85 -0
  151. package/dist/targets/docs.js.map +1 -0
  152. package/dist/targets/native-reactive.d.ts +41 -0
  153. package/dist/targets/native-reactive.d.ts.map +1 -0
  154. package/dist/targets/native-reactive.js +169 -0
  155. package/dist/targets/native-reactive.js.map +1 -0
  156. package/dist/targets/shared.d.ts +15 -0
  157. package/dist/targets/shared.d.ts.map +1 -0
  158. package/dist/targets/shared.js +122 -0
  159. package/dist/targets/shared.js.map +1 -0
  160. package/dist/targets/vanilla.d.ts +6 -0
  161. package/dist/targets/vanilla.d.ts.map +1 -0
  162. package/dist/targets/vanilla.js +442 -0
  163. package/dist/targets/vanilla.js.map +1 -0
  164. package/dist/targets/vue.d.ts +3 -0
  165. package/dist/targets/vue.d.ts.map +1 -0
  166. package/dist/targets/vue.js +577 -0
  167. package/dist/targets/vue.js.map +1 -0
  168. package/dist/template.d.ts +172 -0
  169. package/dist/template.d.ts.map +1 -0
  170. package/dist/template.js +2 -0
  171. package/dist/template.js.map +1 -0
  172. package/dist/type-system.d.ts +80 -0
  173. package/dist/type-system.d.ts.map +1 -0
  174. package/dist/type-system.js +414 -0
  175. package/dist/type-system.js.map +1 -0
  176. package/dist/types.d.ts +51 -0
  177. package/dist/types.d.ts.map +1 -0
  178. package/dist/types.js +2 -0
  179. package/dist/types.js.map +1 -0
  180. package/dist/validate.d.ts +38 -0
  181. package/dist/validate.d.ts.map +1 -0
  182. package/dist/validate.js +297 -0
  183. package/dist/validate.js.map +1 -0
  184. package/dist/validation.d.ts +6 -0
  185. package/dist/validation.d.ts.map +1 -0
  186. package/dist/validation.js +6 -0
  187. package/dist/validation.js.map +1 -0
  188. package/dist/validity-css.d.ts +6 -0
  189. package/dist/validity-css.d.ts.map +1 -0
  190. package/dist/validity-css.js +11 -0
  191. package/dist/validity-css.js.map +1 -0
  192. package/dist/validity.d.ts +45 -0
  193. package/dist/validity.d.ts.map +1 -0
  194. package/dist/validity.js +445 -0
  195. package/dist/validity.js.map +1 -0
  196. package/package.json +124 -0
@@ -0,0 +1,43 @@
1
+ import { fail } from "./diagnostics.js";
2
+ import { hasExecutableUrl, isUrlAttribute } from "./sanitize.js";
3
+ const RESERVED_ELEMENT_RE = /^(?:if|else-if|else|for|with|value|state|computed|data)$/;
4
+ const UNSUPPORTED_LITERAL_ATTRIBUTE_RE = /^(?:@|v-|#|on:|use:|transition:|animate:)/;
5
+ const UNSAFE_DOM_PROPERTY_RE = /^(?:innerhtml|outerhtml|srcdoc)$/;
6
+ const UNSAFE_DEFINITION_ELEMENT_RE = /^(?:base|embed|link|meta|object|script|style)$/;
7
+ export function isReservedElement(name) {
8
+ return RESERVED_ELEMENT_RE.test(name);
9
+ }
10
+ export function validateDefinitionElementName(name, source) {
11
+ if (UNSAFE_DEFINITION_ELEMENT_RE.test(name.toLowerCase())) {
12
+ fail("HT009", `<${name}> is not permitted in rendered component markup.`, source);
13
+ }
14
+ return name;
15
+ }
16
+ export function validateSimplePropExpression(expression, contract, source) {
17
+ if (!/^[A-Za-z][A-Za-z0-9_-]*$/.test(expression) || contract.props[expression] === undefined) {
18
+ fail("HT003", `\`${expression}\` is not a declared component expression.`, source);
19
+ }
20
+ return expression;
21
+ }
22
+ export function validateLiteralAttributeName(name, source, value = "") {
23
+ const lowerName = name.toLowerCase();
24
+ if (lowerName.startsWith("on") ||
25
+ UNSUPPORTED_LITERAL_ATTRIBUTE_RE.test(lowerName)) {
26
+ fail("HT010", `Literal attribute \`${name}\` uses target-framework directive syntax that is not supported.`, source);
27
+ }
28
+ if (lowerName === "srcdoc") {
29
+ fail("HT007", "Literal `srcdoc` is not permitted in a component definition.", source);
30
+ }
31
+ if (isUrlAttribute(lowerName) && hasExecutableUrl(value)) {
32
+ fail("HT007", `Literal \`${name}\` contains an executable URL.`, source);
33
+ }
34
+ return name;
35
+ }
36
+ export function validateMvpDomProperty(name, source) {
37
+ const lowerName = name.toLowerCase();
38
+ if (lowerName.startsWith("on") || UNSAFE_DOM_PROPERTY_RE.test(lowerName)) {
39
+ fail("HT007", `Dynamic ${name} requires a future trusted-content type.`, source);
40
+ }
41
+ return name;
42
+ }
43
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../src/language.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAM,mBAAmB,GAAG,0DAA0D,CAAC;AACvF,MAAM,gCAAgC,GAAG,2CAA2C,CAAC;AACrF,MAAM,sBAAsB,GAAG,kCAAkC,CAAC;AAClE,MAAM,4BAA4B,GAAG,gDAAgD,CAAC;AAEtF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,MAAc;IACxE,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,kDAAkD,EAAE,MAAM,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,QAA2B,EAC3B,MAAc;IAEd,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7F,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,4CAA4C,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,MAAc,EACd,KAAK,GAAG,EAAE;IAEV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,IACE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1B,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,EAChD,CAAC;QACD,IAAI,CACF,OAAO,EACP,uBAAuB,IAAI,kEAAkE,EAC7F,MAAM,CACP,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,8DAA8D,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,MAAc;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,0CAA0C,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Derives a PascalCase component name from a lowercase custom-element tag. */
2
+ export declare function componentName(tag: string): string;
3
+ export declare function kebabCase(value: string): string;
4
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C"}
package/dist/names.js ADDED
@@ -0,0 +1,19 @@
1
+ /** Derives a PascalCase component name from a lowercase custom-element tag. */
2
+ export function componentName(tag) {
3
+ let name = "";
4
+ let upper = true;
5
+ for (const character of tag) {
6
+ if (character === "-") {
7
+ upper = true;
8
+ }
9
+ else {
10
+ name += upper ? character.toUpperCase() : character;
11
+ upper = false;
12
+ }
13
+ }
14
+ return name;
15
+ }
16
+ export function kebabCase(value) {
17
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
18
+ }
19
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,SAAS,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ComponentGraph } from "./graph.js";
2
+ import { type ResolvedResource } from "./resolve.js";
3
+ export interface InspectedModule {
4
+ readonly url: string;
5
+ /** Already-resolved static ESM dependency URLs. */
6
+ readonly dependencies: readonly string[];
7
+ }
8
+ export interface NodeLoaderOptions {
9
+ readonly baseURL?: string;
10
+ readonly resolvePackage?: (specifier: string, parentURL: string) => ResolvedResource;
11
+ readonly readComponent?: (url: string) => Promise<{
12
+ readonly url: string;
13
+ readonly source: string;
14
+ }>;
15
+ readonly inspectModule?: (url: string) => Promise<InspectedModule>;
16
+ }
17
+ export interface NodeComponentGraph extends ComponentGraph {
18
+ readonly moduleInputs: readonly string[];
19
+ }
20
+ /** Builds a package graph without importing controller modules. */
21
+ export declare function loadNodeComponents(rootSpecifiers: readonly string[], options?: NodeLoaderOptions): Promise<NodeComponentGraph>;
22
+ //# sourceMappingURL=node-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-loader.d.ts","sourceRoot":"","sources":["../src/node-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,gBAAgB,CAAC;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAgED,mEAAmE;AACnE,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAoC7B"}
@@ -0,0 +1,109 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { fileURLToPath } from "node:url";
4
+ import { buildComponentGraph } from "./source-graph.js";
5
+ import { isWithinTrustRoot, } from "./resolve.js";
6
+ import { fail } from "./diagnostics.js";
7
+ function directory(url) {
8
+ return new URL("./", url).href;
9
+ }
10
+ /**
11
+ * The build's filesystem boundary for a root: the package that contains it (the nearest directory
12
+ * with a package.json), or the root's own directory outside any package. The live loader has no
13
+ * directory trust root (`../` is location, not authority); this is a build-tool output constraint,
14
+ * so sibling components and shared controller modules in one package resolve, and nothing outside
15
+ * the package is read or copied.
16
+ */
17
+ function hasPackageJson(directoryURL) {
18
+ try {
19
+ return existsSync(fileURLToPath(new URL("package.json", directoryURL)));
20
+ }
21
+ catch {
22
+ // Not a local path on this platform (a synthetic file: URL); treat it as outside any package.
23
+ return false;
24
+ }
25
+ }
26
+ function packageRoot(url) {
27
+ if (!url.startsWith("file:"))
28
+ return directory(url);
29
+ for (let candidate = new URL("./", url);; candidate = new URL("../", candidate)) {
30
+ if (hasPackageJson(candidate))
31
+ return candidate.href;
32
+ if (new URL("../", candidate).href === candidate.href)
33
+ return directory(url);
34
+ }
35
+ }
36
+ class NodeResourceResolver {
37
+ baseURL;
38
+ resolvePackage;
39
+ constructor(baseURL, resolvePackage) {
40
+ this.baseURL = baseURL;
41
+ this.resolvePackage = resolvePackage;
42
+ }
43
+ resolveRoot(specifier) {
44
+ if (/^(?:[A-Za-z][A-Za-z\d+.-]*:|\/|\.\.?\/)/.test(specifier)) {
45
+ const url = new URL(specifier, this.baseURL).href;
46
+ return { url, trustRoot: packageRoot(url) };
47
+ }
48
+ return this.resolvePackage(specifier, this.baseURL);
49
+ }
50
+ resolveDependency(specifier, parentURL, parentTrustRoot) {
51
+ if (!/^(?:[A-Za-z][A-Za-z\d+.-]*:|\/|\.\.?\/)/.test(specifier)) {
52
+ return this.resolvePackage(specifier, parentURL);
53
+ }
54
+ const url = new URL(specifier, parentURL).href;
55
+ if (!isWithinTrustRoot(url, parentTrustRoot)) {
56
+ fail("HL003", `Dependency \`${specifier}\` escapes approved root \`${parentTrustRoot}\`.`, parentURL);
57
+ }
58
+ return { url, trustRoot: parentTrustRoot };
59
+ }
60
+ assertFinalURL(resource, finalURL, source = resource.url) {
61
+ const url = new URL(finalURL, resource.url).href;
62
+ if (!isWithinTrustRoot(url, resource.trustRoot)) {
63
+ fail("HL004", `Final component URL \`${url}\` escapes approved root \`${resource.trustRoot}\`.`, source);
64
+ }
65
+ return url;
66
+ }
67
+ }
68
+ /** Builds a package graph without importing controller modules. */
69
+ export async function loadNodeComponents(rootSpecifiers, options = {}) {
70
+ const baseURL = options.baseURL ?? new URL("../", import.meta.url).href;
71
+ const resolvePackage = options.resolvePackage ?? ((specifier, parentURL) => {
72
+ const url = import.meta.resolve(specifier, parentURL);
73
+ return { url, trustRoot: packageRoot(url) };
74
+ });
75
+ const readComponent = options.readComponent ?? (async (url) => ({
76
+ url,
77
+ source: await readFile(fileURLToPath(url), "utf8"),
78
+ }));
79
+ const graph = await buildComponentGraph(rootSpecifiers, {
80
+ resolver: new NodeResourceResolver(baseURL, resolvePackage),
81
+ fetchComponent: readComponent,
82
+ });
83
+ const moduleInputs = new Set();
84
+ if (options.inspectModule !== undefined) {
85
+ const visit = async (url) => {
86
+ if (moduleInputs.has(url))
87
+ return;
88
+ moduleInputs.add(url);
89
+ const module = await options.inspectModule(url);
90
+ for (const dependency of module.dependencies)
91
+ await visit(dependency);
92
+ };
93
+ for (const node of graph.nodes.values()) {
94
+ if (node.controller !== undefined)
95
+ await visit(node.controller.url);
96
+ }
97
+ }
98
+ else {
99
+ for (const node of graph.nodes.values()) {
100
+ if (node.controller !== undefined)
101
+ moduleInputs.add(node.controller.url);
102
+ }
103
+ }
104
+ return Object.freeze({
105
+ ...graph,
106
+ moduleInputs: Object.freeze([...moduleInputs].sort()),
107
+ });
108
+ }
109
+ //# sourceMappingURL=node-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-loader.js","sourceRoot":"","sources":["../src/node-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface PackageComponentInput {
2
+ readonly source: string;
3
+ }
4
+ export interface PackagePassThrough {
5
+ readonly source: string;
6
+ readonly target: string;
7
+ /** Follow and copy relative ESM dependencies without importing the module. */
8
+ readonly module?: boolean;
9
+ }
10
+ export interface ComponentPackageConfig {
11
+ readonly name: string;
12
+ readonly version: string;
13
+ readonly outDirectory: string;
14
+ readonly components: readonly PackageComponentInput[];
15
+ readonly passThrough?: readonly PackagePassThrough[];
16
+ readonly exports?: Readonly<Record<string, unknown>>;
17
+ readonly peerDependencies?: Readonly<Record<string, string>>;
18
+ readonly peerDependenciesMeta?: Readonly<Record<string, {
19
+ readonly optional?: boolean;
20
+ }>>;
21
+ }
22
+ //# sourceMappingURL=package-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-config.d.ts","sourceRoot":"","sources":["../src/package-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=package-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-config.js","sourceRoot":"","sources":["../src/package-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { ComponentPackageConfig } from "./package-config.js";
2
+ export interface AssembledPackage {
3
+ readonly components: readonly string[];
4
+ readonly files: readonly string[];
5
+ }
6
+ /** Assembles generated components and explicit pass-through assets into one inspectable package. */
7
+ export declare function assembleComponentPackage(config: ComponentPackageConfig): Promise<AssembledPackage>;
8
+ export type { ComponentPackageConfig, PackageComponentInput, PackagePassThrough } from "./package-config.js";
9
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAKlE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAmHD,oGAAoG;AACpG,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkHxG;AAED,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,208 @@
1
+ import { copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { dirname, posix, relative, resolve, sep } from "node:path";
3
+ import ts from "typescript-compiler";
4
+ import { generateComponent, GENERATOR_VERSION } from "./generate.js";
5
+ import { commonDirectory } from "./controller-files.js";
6
+ import { parseComponentResource } from "./source-graph.js";
7
+ function inside(root, path) {
8
+ const output = resolve(root, path);
9
+ if (output !== root && !output.startsWith(`${root}${sep}`)) {
10
+ throw new Error(`Package output escaped its directory: ${path}.`);
11
+ }
12
+ return output;
13
+ }
14
+ async function addStaticModuleGraph(source, target, files, moduleSources, moduleDependencies) {
15
+ const sourcePath = resolve(source);
16
+ const targetPath = posix.normalize(target);
17
+ if (posix.isAbsolute(targetPath) || targetPath === ".." || targetPath.startsWith("../")) {
18
+ throw new Error(`Controller module output escaped the package: ${target}.`);
19
+ }
20
+ const priorSource = moduleSources.get(targetPath);
21
+ if (priorSource !== undefined) {
22
+ if (priorSource !== sourcePath)
23
+ throw new Error(`Package artifact collision at ${targetPath}.`);
24
+ return;
25
+ }
26
+ if (files.has(targetPath))
27
+ throw new Error(`Package artifact collision at ${targetPath}.`);
28
+ const sourceText = await readFile(sourcePath, "utf8");
29
+ moduleSources.set(targetPath, sourcePath);
30
+ files.set(targetPath, { copy: sourcePath });
31
+ const imports = ts.preProcessFile(sourceText, true, true).importedFiles.map((entry) => entry.fileName);
32
+ moduleDependencies.set(targetPath, Object.freeze([...imports].sort()));
33
+ for (const specifier of imports.filter((entry) => entry.startsWith("./") || entry.startsWith("../"))) {
34
+ if (specifier.includes("?") || specifier.includes("#")) {
35
+ throw new Error(`Controller module specifier must not contain a query or fragment: ${specifier}.`);
36
+ }
37
+ await addStaticModuleGraph(resolve(dirname(sourcePath), specifier), posix.join(posix.dirname(targetPath), specifier), files, moduleSources, moduleDependencies);
38
+ }
39
+ }
40
+ function generatedDefinition(definition, controller) {
41
+ if (controller === undefined)
42
+ return definition;
43
+ return Object.freeze({ ...definition, controller: `../${controller}` });
44
+ }
45
+ function packageEntry(definitions, controllers) {
46
+ const imports = [...controllers].map(([tag, path], index) => ` ${JSON.stringify(tag)}: () => import(${JSON.stringify(`../${path}`)}), // controller ${index + 1}`);
47
+ return [
48
+ 'import { getComponentHost, observeDocument, registerComponentDefinitions, setControllerModule } from "@nextwebwg/html-next/runtime";',
49
+ "",
50
+ `export const definitions = ${JSON.stringify(definitions)};`,
51
+ "const controllerImports = {",
52
+ ...imports,
53
+ "};",
54
+ "",
55
+ "const active = new WeakMap();",
56
+ "export function register(root = document) {",
57
+ " registerComponentDefinitions(definitions, root);",
58
+ " return observeDocument(root, {",
59
+ " onConnect(element, definition) {",
60
+ " const load = controllerImports[definition.contract.tag];",
61
+ " if (load == null) return;",
62
+ " let disposed = false; let cleanup;",
63
+ " const module = load();",
64
+ " setControllerModule(element, module);",
65
+ " module.then(value => value.default(getComponentHost(element))).then(value => {",
66
+ " if (typeof value !== 'function') return;",
67
+ " if (disposed) value(); else cleanup = value;",
68
+ " });",
69
+ " const dispose = () => { disposed = true; cleanup?.(); active.delete(element); };",
70
+ " active.set(element, dispose);",
71
+ " return dispose;",
72
+ " },",
73
+ " });",
74
+ "}",
75
+ "",
76
+ "export const stop = typeof document === 'undefined' ? undefined : register(document);",
77
+ "",
78
+ ].join("\n");
79
+ }
80
+ function publicName(definition) {
81
+ return definition.contract.name.replace(/^Ui(?=[A-Z])/, "");
82
+ }
83
+ function targetIndexes(definitions) {
84
+ const entries = [...definitions].sort((left, right) => left.contract.name.localeCompare(right.contract.name));
85
+ const exportsFor = (extension) => entries.map((definition) => `export { default as ${publicName(definition)} } from ${JSON.stringify(`./${definition.contract.name}.${extension}`)};`).join("\n") + "\n";
86
+ return Object.freeze({
87
+ "vue/index.js": exportsFor("vue"),
88
+ "vanilla/index.js": entries.map((definition) => `export * from ${JSON.stringify(`./${definition.contract.name}.js`)};`).join("\n") + "\n",
89
+ "vue/index.d.ts": [
90
+ 'import type { DefineComponent } from "vue";',
91
+ "export interface VueAdapterEventMap { [name: string]: unknown }",
92
+ ...entries.map((definition) => `export declare const ${publicName(definition)}: DefineComponent<Record<string, unknown>>;`),
93
+ "",
94
+ ].join("\n"),
95
+ });
96
+ }
97
+ /** Assembles generated components and explicit pass-through assets into one inspectable package. */
98
+ export async function assembleComponentPackage(config) {
99
+ const root = resolve(config.outDirectory);
100
+ const files = new Map();
101
+ const definitions = [];
102
+ const controllers = new Map();
103
+ const moduleSources = new Map();
104
+ const moduleDependencies = new Map();
105
+ const passThroughModules = new Set();
106
+ const names = new Set();
107
+ // Component sources keep their layout under components/, so their dependency links and
108
+ // controller specifiers resolve there as they do in the source tree, with no build.
109
+ const sources = config.components.map((input) => resolve(input.source));
110
+ const sourceRoot = commonDirectory(sources);
111
+ const componentPath = (path) => posix.join("components", relative(sourceRoot, path).split(sep).join("/"));
112
+ for (const sourcePath of [...sources].sort()) {
113
+ const parsed = parseComponentResource(await readFile(sourcePath, "utf8"), sourcePath).definition;
114
+ const source = componentPath(sourcePath);
115
+ const definition = Object.freeze({ ...parsed, source: Object.freeze({ file: `./${source}` }) });
116
+ if (names.has(definition.contract.tag))
117
+ throw new Error(`Duplicate package component <${definition.contract.tag}>.`);
118
+ names.add(definition.contract.tag);
119
+ const controller = parsed.controller === undefined
120
+ ? undefined
121
+ : componentPath(resolve(dirname(sourcePath), parsed.controller));
122
+ definitions.push(controller === undefined ? definition : Object.freeze({ ...definition, controller: `./${controller}` }));
123
+ if (controller !== undefined) {
124
+ controllers.set(definition.contract.tag, controller);
125
+ await addStaticModuleGraph(resolve(dirname(sourcePath), parsed.controller), controller, files, moduleSources, moduleDependencies);
126
+ }
127
+ const generated = generateComponent(generatedDefinition(definition, controller));
128
+ for (const artifact of generated) {
129
+ if (files.has(artifact.path))
130
+ throw new Error(`Package artifact collision at ${artifact.path}.`);
131
+ files.set(artifact.path, artifact.content);
132
+ }
133
+ files.set(source, { copy: sourcePath });
134
+ }
135
+ for (const edge of config.passThrough ?? []) {
136
+ if (files.has(edge.target))
137
+ throw new Error(`Package artifact collision at ${edge.target}.`);
138
+ if (edge.module) {
139
+ const priorModules = new Set(moduleSources.keys());
140
+ await addStaticModuleGraph(resolve(edge.source), edge.target, files, moduleSources, moduleDependencies);
141
+ for (const path of moduleSources.keys())
142
+ if (!priorModules.has(path))
143
+ passThroughModules.add(path);
144
+ }
145
+ else
146
+ files.set(edge.target, { copy: resolve(edge.source) });
147
+ }
148
+ for (const [target, content] of Object.entries(targetIndexes(definitions))) {
149
+ if (files.has(target))
150
+ throw new Error(`Package artifact collision at ${target}.`);
151
+ files.set(target, content);
152
+ }
153
+ files.set("dist/index.js", packageEntry(definitions, controllers));
154
+ files.set("dist/index.d.ts", [
155
+ 'import type { ComponentDefinition } from "@nextwebwg/html-next";',
156
+ "export declare const definitions: readonly ComponentDefinition[];",
157
+ "export declare function register(root?: Document): () => void;",
158
+ "export declare const stop: undefined | (() => void);",
159
+ "",
160
+ ].join("\n"));
161
+ const packageJson = {
162
+ name: config.name,
163
+ version: config.version,
164
+ type: "module",
165
+ sideEffects: ["./dist/index.js", "./*.css"],
166
+ peerDependencies: { "@nextwebwg/html-next": `^${GENERATOR_VERSION}`, ...config.peerDependencies },
167
+ ...(config.peerDependenciesMeta === undefined ? {} : { peerDependenciesMeta: config.peerDependenciesMeta }),
168
+ exports: config.exports ?? {
169
+ ".": { types: "./dist/index.d.ts", import: "./dist/index.js" },
170
+ "./vue": { types: "./vue/index.d.ts", import: "./vue/index.js" },
171
+ "./vanilla": "./vanilla/index.js",
172
+ "./components/*": "./components/*",
173
+ "./vue/*": "./vue/*",
174
+ "./vanilla/*": "./vanilla/*",
175
+ "./styles/*": "./styles/*",
176
+ },
177
+ };
178
+ files.set("package.json", `${JSON.stringify(packageJson, null, 2)}\n`);
179
+ files.set("html.manifest.json", `${JSON.stringify({
180
+ schemaVersion: 1,
181
+ components: definitions.map((definition) => ({
182
+ tag: definition.contract.tag,
183
+ source: definition.source.file,
184
+ controller: controllers.get(definition.contract.tag) ?? null,
185
+ })),
186
+ passThrough: (config.passThrough ?? []).map((edge) => edge.target).sort(),
187
+ controllerModules: [...moduleDependencies].sort(([left], [right]) => left.localeCompare(right))
188
+ .filter(([path]) => !passThroughModules.has(path))
189
+ .map(([path, dependencies]) => ({ path, dependencies })),
190
+ passThroughModules: [...moduleDependencies].sort(([left], [right]) => left.localeCompare(right))
191
+ .filter(([path]) => passThroughModules.has(path))
192
+ .map(([path, dependencies]) => ({ path, dependencies })),
193
+ }, null, 2)}\n`);
194
+ await mkdir(root, { recursive: true });
195
+ for (const [target, content] of [...files].sort(([left], [right]) => left.localeCompare(right))) {
196
+ const output = inside(root, target);
197
+ await mkdir(dirname(output), { recursive: true });
198
+ if (typeof content === "string")
199
+ await writeFile(output, content, "utf8");
200
+ else
201
+ await copyFile(content.copy, output);
202
+ }
203
+ return Object.freeze({
204
+ components: Object.freeze([...names].sort()),
205
+ files: Object.freeze([...files.keys()].sort()),
206
+ });
207
+ }
208
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { DefaultTreeAdapterTypes } from "parse5";
2
+ import type { ComponentDefinition } from "./template.js";
3
+ type ChildNode = DefaultTreeAdapterTypes.ChildNode | globalThis.Node;
4
+ export type ComponentSourceNode = ChildNode;
5
+ export interface ComponentParserPlatform {
6
+ readonly isNativeElement: (name: string) => boolean;
7
+ readonly resolveDomProperty: (tagName: string, propertyName: string) => string | undefined;
8
+ }
9
+ export declare function parseComponentNodes(childNodes: readonly ChildNode[], source: string, platform: ComponentParserPlatform): ComponentDefinition;
10
+ export {};
11
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAatD,OAAO,KAAK,EACV,mBAAmB,EASpB,MAAM,eAAe,CAAC;AAIvB,KAAK,SAAS,GAAG,uBAAuB,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;AAIrE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,QAAQ,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC5F;AA86BD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,uBAAuB,GAChC,mBAAmB,CAgHrB"}