frameyard 0.3.0 → 0.4.0

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 (104) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/GLOSSARY.md +42 -2
  3. package/README.md +162 -101
  4. package/dist/bindings.d.ts +42 -0
  5. package/dist/bindings.d.ts.map +1 -0
  6. package/dist/bindings.js +144 -0
  7. package/dist/bindings.js.map +1 -0
  8. package/dist/cli.js +25 -10
  9. package/dist/cli.js.map +1 -1
  10. package/dist/contracts.d.ts +73 -47
  11. package/dist/contracts.d.ts.map +1 -1
  12. package/dist/contracts.js +14 -159
  13. package/dist/contracts.js.map +1 -1
  14. package/dist/errors.d.ts +15 -4
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +8 -0
  17. package/dist/errors.js.map +1 -1
  18. package/dist/html/index.d.ts +5 -0
  19. package/dist/html/index.d.ts.map +1 -0
  20. package/dist/html/index.js +3 -0
  21. package/dist/html/index.js.map +1 -0
  22. package/dist/html/parse.d.ts +30 -0
  23. package/dist/html/parse.d.ts.map +1 -0
  24. package/dist/html/parse.js +80 -0
  25. package/dist/html/parse.js.map +1 -0
  26. package/dist/html/validate.d.ts +14 -0
  27. package/dist/html/validate.d.ts.map +1 -0
  28. package/dist/html/validate.js +931 -0
  29. package/dist/html/validate.js.map +1 -0
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/preview/main.d.ts +10 -3
  35. package/dist/preview/main.d.ts.map +1 -1
  36. package/dist/preview/main.js +186 -88
  37. package/dist/preview/main.js.map +1 -1
  38. package/dist/project.d.ts +2 -0
  39. package/dist/project.d.ts.map +1 -1
  40. package/dist/project.js +4 -0
  41. package/dist/project.js.map +1 -1
  42. package/dist/renderer/browser.d.ts +11 -1
  43. package/dist/renderer/browser.d.ts.map +1 -1
  44. package/dist/renderer/browser.js +62 -10
  45. package/dist/renderer/browser.js.map +1 -1
  46. package/dist/renderer/index.d.ts +25 -5
  47. package/dist/renderer/index.d.ts.map +1 -1
  48. package/dist/renderer/index.js +64 -9
  49. package/dist/renderer/index.js.map +1 -1
  50. package/dist/runtime/bindings.d.ts +11 -0
  51. package/dist/runtime/bindings.d.ts.map +1 -0
  52. package/dist/runtime/bindings.js +164 -0
  53. package/dist/runtime/bindings.js.map +1 -0
  54. package/dist/runtime/diagnostics.d.ts +4 -0
  55. package/dist/runtime/diagnostics.d.ts.map +1 -0
  56. package/dist/runtime/diagnostics.js +107 -0
  57. package/dist/runtime/diagnostics.js.map +1 -0
  58. package/dist/runtime/host.d.ts +12 -0
  59. package/dist/runtime/host.d.ts.map +1 -0
  60. package/dist/runtime/host.js +701 -0
  61. package/dist/runtime/host.js.map +1 -0
  62. package/dist/runtime/index.d.ts +0 -29
  63. package/dist/runtime/index.d.ts.map +1 -1
  64. package/dist/runtime/index.js +0 -360
  65. package/dist/runtime/index.js.map +1 -1
  66. package/dist/runtime/media.js +7 -7
  67. package/dist/runtime/media.js.map +1 -1
  68. package/dist/scaffold.d.ts.map +1 -1
  69. package/dist/scaffold.js +167 -79
  70. package/dist/scaffold.js.map +1 -1
  71. package/dist/server/composition-html.d.ts +20 -0
  72. package/dist/server/composition-html.d.ts.map +1 -0
  73. package/dist/server/composition-html.js +45 -0
  74. package/dist/server/composition-html.js.map +1 -0
  75. package/dist/server/preview-html.d.ts.map +1 -1
  76. package/dist/server/preview-html.js +19 -14
  77. package/dist/server/preview-html.js.map +1 -1
  78. package/dist/server/server.d.ts.map +1 -1
  79. package/dist/server/server.js +94 -6
  80. package/dist/server/server.js.map +1 -1
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/docs/adr/0001-keep-composition-authoring-web-native.md +2 -0
  84. package/docs/adr/0006-seek-embedded-media-from-the-frame-clock.md +3 -1
  85. package/docs/adr/0007-make-html-documents-the-composition-unit.md +31 -0
  86. package/docs/migration-0.4.md +279 -0
  87. package/docs/v0.1-design.md +76 -55
  88. package/examples/demo/README.md +7 -3
  89. package/examples/demo/compositions/demo.controller.js +120 -0
  90. package/examples/demo/compositions/demo.html +253 -0
  91. package/examples/demo/video.config.js +1 -1
  92. package/package.json +4 -2
  93. package/skills/frameyard/README.md +4 -0
  94. package/skills/frameyard/SKILL.md +38 -11
  95. package/skills/frameyard/references/audio-assets.md +25 -14
  96. package/skills/frameyard/references/bindings.md +73 -0
  97. package/skills/frameyard/references/common-mistakes.md +59 -0
  98. package/skills/frameyard/references/controllers.md +126 -0
  99. package/skills/frameyard/references/deterministic-authoring.md +143 -52
  100. package/skills/frameyard/references/diagnostics.md +90 -0
  101. package/skills/frameyard/references/failure-recovery.md +37 -14
  102. package/skills/frameyard/references/json-results.md +41 -7
  103. package/skills/frameyard/references/subtitles-karaoke.md +10 -18
  104. package/examples/demo/compositions/demo.js +0 -206
package/dist/contracts.js CHANGED
@@ -1,102 +1,11 @@
1
1
  import { FrameyardError } from "./errors.js";
2
- function invalid(message) {
3
- throw new FrameyardError("COMPOSITION_INVALID", message);
4
- }
5
- function isPlainObject(value) {
2
+ export function isPlainObject(value) {
6
3
  if (typeof value !== "object" || value === null) {
7
4
  return false;
8
5
  }
9
6
  const prototype = Object.getPrototypeOf(value);
10
7
  return prototype === Object.prototype || prototype === null;
11
8
  }
12
- function isAsyncFunction(value) {
13
- return typeof value === "function" && Object.prototype.toString.call(value) === "[object AsyncFunction]";
14
- }
15
- /**
16
- * Validates and returns a composition definition. Composition modules can use
17
- * this helper for early feedback, but plain exported objects are normalized by
18
- * the runtime as well.
19
- */
20
- export function defineComposition(definition) {
21
- return normalizeComposition(definition);
22
- }
23
- export function normalizeComposition(value) {
24
- if (!isPlainObject(value)) {
25
- invalid("A composition must be a plain object.");
26
- }
27
- const width = value.width;
28
- const height = value.height;
29
- const fps = value.fps;
30
- const durationInFrames = value.durationInFrames;
31
- if (typeof width !== "number" || !Number.isInteger(width) || width <= 0) {
32
- invalid("Composition width must be a positive integer.");
33
- }
34
- if (typeof height !== "number" || !Number.isInteger(height) || height <= 0) {
35
- invalid("Composition height must be a positive integer.");
36
- }
37
- if (typeof fps !== "number" || !Number.isFinite(fps) || fps <= 0) {
38
- invalid("Composition fps must be a positive finite number.");
39
- }
40
- if (typeof durationInFrames !== "number" || !Number.isInteger(durationInFrames) || durationInFrames <= 0) {
41
- invalid("Composition durationInFrames must be a positive integer.");
42
- }
43
- if (typeof value.mount !== "function") {
44
- invalid("Composition mount must be a function.");
45
- }
46
- if (typeof value.update !== "function") {
47
- invalid("Composition update must be a function.");
48
- }
49
- if (isAsyncFunction(value.update)) {
50
- invalid("Composition update must be synchronous; finish asynchronous work in mount().");
51
- }
52
- if (value.dispose !== undefined && typeof value.dispose !== "function") {
53
- invalid("Composition dispose must be a function when provided.");
54
- }
55
- if (value.validateProps !== undefined && typeof value.validateProps !== "function") {
56
- invalid("Composition validateProps must be a function when provided.");
57
- }
58
- if (value.audio !== undefined && typeof value.audio !== "function" && !Array.isArray(value.audio)) {
59
- invalid("Composition audio must be an array or a function returning an array.");
60
- }
61
- if (value.transcripts !== undefined && typeof value.transcripts !== "function" && !Array.isArray(value.transcripts)) {
62
- invalid("Composition transcripts must be an array or a function returning an array.");
63
- }
64
- if (value.defaultProps !== undefined) {
65
- if (!isPlainObject(value.defaultProps)) {
66
- invalid("Composition defaultProps must be a plain object.");
67
- }
68
- try {
69
- assertJsonSerializable(value.defaultProps, "defaultProps");
70
- }
71
- catch (error) {
72
- invalid(`Composition defaultProps must be JSON-serializable: ${error instanceof Error ? error.message : String(error)}`);
73
- }
74
- }
75
- const composition = {
76
- width,
77
- height,
78
- fps,
79
- durationInFrames,
80
- mount: value.mount,
81
- update: value.update,
82
- };
83
- if (value.defaultProps !== undefined) {
84
- composition.defaultProps = value.defaultProps;
85
- }
86
- if (value.dispose !== undefined) {
87
- composition.dispose = value.dispose;
88
- }
89
- if (value.validateProps !== undefined) {
90
- composition.validateProps = value.validateProps;
91
- }
92
- if (value.audio !== undefined) {
93
- composition.audio = value.audio;
94
- }
95
- if (value.transcripts !== undefined) {
96
- composition.transcripts = value.transcripts;
97
- }
98
- return Object.freeze(composition);
99
- }
100
9
  /**
101
10
  * Checks that a value survives a JSON round trip without losing information.
102
11
  * Returns the same value for convenient inline use.
@@ -169,42 +78,27 @@ function deepFreeze(value) {
169
78
  }
170
79
  return value;
171
80
  }
172
- /**
173
- * Merges a render's prop overrides over composition defaults, validates the
174
- * result as JSON, runs the composition's optional validator, and deep-freezes it.
175
- */
176
- export function resolveProps(composition, overrides) {
81
+ function mergePropsUnfrozen(defaults, overrides) {
177
82
  if (overrides !== undefined && !isPlainObject(overrides)) {
178
83
  throw new FrameyardError("PROPS_INVALID", "Props must be a plain JSON object.");
179
84
  }
180
85
  const merged = {
181
- ...composition.defaultProps,
86
+ ...defaults,
182
87
  ...overrides,
183
88
  };
184
89
  assertJsonSerializable(merged, "props");
185
- if (composition.validateProps) {
186
- let errors;
187
- try {
188
- errors = composition.validateProps(merged);
189
- }
190
- catch (error) {
191
- throw new FrameyardError("PROPS_INVALID", `Props validation failed: ${error instanceof Error ? error.message : String(error)}`, {
192
- cause: error,
193
- });
194
- }
195
- if (errors !== undefined) {
196
- if (!Array.isArray(errors) || errors.some((item) => typeof item !== "string")) {
197
- throw new FrameyardError("PROPS_INVALID", "validateProps() must return void or an array of strings.");
198
- }
199
- if (errors.length > 0) {
200
- throw new FrameyardError("PROPS_INVALID", `Invalid props: ${errors.join("; ")}`);
201
- }
202
- }
203
- }
204
- return deepFreeze(merged);
90
+ return merged;
91
+ }
92
+ /**
93
+ * Merges a render's prop overrides over defaults, validates the result as JSON,
94
+ * and deep-freezes it. The HTML static validator and host use this before a
95
+ * controller's validateProps hook runs.
96
+ */
97
+ export function mergeProps(defaults, overrides) {
98
+ return deepFreeze(mergePropsUnfrozen(defaults, overrides));
205
99
  }
206
100
  const SCHEME = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
207
- function normalizeAudioClip(value, index) {
101
+ export function normalizeAudioClip(value, index) {
208
102
  if (!isPlainObject(value)) {
209
103
  throw new FrameyardError("AUDIO_INVALID", `Audio clip ${index} must be a plain object.`);
210
104
  }
@@ -239,26 +133,7 @@ function normalizeAudioClip(value, index) {
239
133
  }
240
134
  return Object.freeze(clip);
241
135
  }
242
- /** Resolves and validates a composition's declarative audio timeline. */
243
- export function resolveAudioClips(composition, props) {
244
- let clips = composition.audio;
245
- if (typeof composition.audio === "function") {
246
- try {
247
- clips = composition.audio({ props });
248
- }
249
- catch (error) {
250
- throw new FrameyardError("AUDIO_INVALID", `Could not resolve the audio timeline: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
251
- }
252
- }
253
- if (clips === undefined) {
254
- return Object.freeze([]);
255
- }
256
- if (!Array.isArray(clips)) {
257
- throw new FrameyardError("AUDIO_INVALID", "Composition audio must resolve to an array of clips.");
258
- }
259
- return Object.freeze(clips.map((clip, index) => normalizeAudioClip(clip, index)));
260
- }
261
- function normalizeTranscriptClip(value, index) {
136
+ export function normalizeTranscriptClip(value, index) {
262
137
  if (!isPlainObject(value)) {
263
138
  throw new FrameyardError("TRANSCRIPT_INVALID", `Transcript ${index} must be a plain object.`);
264
139
  }
@@ -274,24 +149,4 @@ function normalizeTranscriptClip(value, index) {
274
149
  }
275
150
  return Object.freeze({ src, words: words === true });
276
151
  }
277
- /** Resolves and validates a composition's declarative transcript requirements. */
278
- export function resolveTranscriptClips(composition, props) {
279
- let clips = composition.transcripts;
280
- if (typeof composition.transcripts === "function") {
281
- try {
282
- clips = composition.transcripts({ props });
283
- }
284
- catch (error) {
285
- throw new FrameyardError("TRANSCRIPT_INVALID", `Could not resolve transcript requirements: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
286
- }
287
- }
288
- if (clips === undefined) {
289
- return Object.freeze([]);
290
- }
291
- if (!Array.isArray(clips)) {
292
- throw new FrameyardError("TRANSCRIPT_INVALID", "Composition transcripts must resolve to an array of assets.");
293
- }
294
- return Object.freeze(clips.map((clip, index) => normalizeTranscriptClip(clip, index)));
295
- }
296
- export { isPlainObject };
297
152
  //# sourceMappingURL=contracts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,9 +1,20 @@
1
- export type FrameyardErrorCode = "USAGE" | "CONFIG_NOT_FOUND" | "CONFIG_INVALID" | "COMPOSITION_NOT_FOUND" | "COMPOSITION_INVALID" | "COMPOSITION_UPDATE_ASYNC" | "COMPOSITION_ERROR" | "PROPS_INVALID" | "FRAME_OUT_OF_RANGE" | "AUDIO_INVALID" | "MEDIA_INVALID" | "MEDIA_SEEK_FAILED" | "ASSET_NOT_FOUND" | "OUTPUT_EXISTS" | "OUTPUT_FAILED" | "FFMPEG_FAILED" | "FFPROBE_FAILED" | "BROWSER_FAILED" | "RENDER_FAILED" | "EXECUTABLE_NOT_FOUND" | "TTS_FAILED" | "TRANSCRIBE_FAILED" | "TRANSCRIPT_INVALID" | "TRANSCRIPT_WORDS_UNAVAILABLE" | "MANIFEST_INVALID" | "CANCELLED" | "INTERNAL";
1
+ export type FrameyardErrorCode = "USAGE" | "CONFIG_NOT_FOUND" | "CONFIG_INVALID" | "COMPOSITION_NOT_FOUND" | "COMPOSITION_INVALID" | "COMPOSITION_UPDATE_ASYNC" | "COMPOSITION_ERROR" | "COMPOSITION_NOT_READY" | "COMPOSITION_DISPOSED" | "CONTROLLER_INVALID" | "BINDING_INVALID" | "BINDING_PATH_MISSING" | "BINDING_VALUE_INVALID" | "BINDING_REPEAT_INVALID" | "BINDING_REPEAT_NESTED" | "BINDING_TARGET_INVALID" | "ANIMATION_INVALID" | "ANIMATION_NOT_FOUND" | "ANIMATION_MULTIPLE" | "DETERMINISM_WARNING" | "SCRIPT_NOT_ALLOWED" | "EVENT_HANDLER_NOT_ALLOWED" | "URL_NOT_ALLOWED" | "ELEMENT_NOT_SUPPORTED" | "ELEMENT_UNKNOWN" | "CONTENT_OUTSIDE_ROOT" | "PROPS_INVALID" | "FRAME_OUT_OF_RANGE" | "AUDIO_INVALID" | "AUDIO_WARNING" | "MEDIA_INVALID" | "MEDIA_SEEK_FAILED" | "ASSET_NOT_FOUND" | "OUTPUT_EXISTS" | "OUTPUT_FAILED" | "FFMPEG_FAILED" | "FFPROBE_FAILED" | "BROWSER_FAILED" | "RENDER_FAILED" | "EXECUTABLE_NOT_FOUND" | "TTS_FAILED" | "TRANSCRIBE_FAILED" | "TRANSCRIPT_INVALID" | "TRANSCRIPT_WORDS_UNAVAILABLE" | "TRANSCRIPT_WARNING" | "MANIFEST_INVALID" | "CANCELLED" | "INTERNAL";
2
+ export interface FrameyardDiagnostic {
3
+ severity: "error" | "warning";
4
+ code: string;
5
+ message: string;
6
+ details?: unknown;
7
+ }
8
+ export interface FrameyardErrorOptions {
9
+ cause?: unknown;
10
+ details?: unknown;
11
+ diagnostics?: FrameyardDiagnostic[];
12
+ }
2
13
  export declare class FrameyardError extends Error {
3
14
  readonly code: FrameyardErrorCode;
4
- constructor(code: FrameyardErrorCode, message: string, options?: {
5
- cause?: unknown;
6
- });
15
+ readonly details?: unknown;
16
+ readonly diagnostics?: FrameyardDiagnostic[];
17
+ constructor(code: FrameyardErrorCode, message: string, options?: FrameyardErrorOptions);
7
18
  }
8
19
  export declare function isFrameyardError(error: unknown): error is FrameyardError;
9
20
  export declare function errorMessage(error: unknown): string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,kBAAkB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,qBAAqB,GACrB,0BAA0B,GAC1B,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,sBAAsB,GACtB,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,8BAA8B,GAC9B,kBAAkB,GAClB,WAAW,GACX,UAAU,CAAC;AAEf,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;gBAEtB,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKrF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,kBAAkB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,qBAAqB,GACrB,0BAA0B,GAC1B,mBAAmB,GACnB,uBAAuB,GACvB,sBAAsB,GACtB,oBAAoB,GACpB,iBAAiB,GACjB,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,qBAAqB,GACrB,oBAAoB,GACpB,2BAA2B,GAC3B,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,sBAAsB,GACtB,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,8BAA8B,GAC9B,oBAAoB,GACpB,kBAAkB,GAClB,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACrC;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;gBAEjC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;CAWvF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD"}
package/dist/errors.js CHANGED
@@ -1,9 +1,17 @@
1
1
  export class FrameyardError extends Error {
2
2
  code;
3
+ details;
4
+ diagnostics;
3
5
  constructor(code, message, options) {
4
6
  super(message, options);
5
7
  this.name = "FrameyardError";
6
8
  this.code = code;
9
+ if (options?.details !== undefined) {
10
+ this.details = options.details;
11
+ }
12
+ if (options?.diagnostics !== undefined) {
13
+ this.diagnostics = options.diagnostics;
14
+ }
7
15
  }
8
16
  }
9
17
  export function isFrameyardError(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAqB;IAElC,YAAY,IAAwB,EAAE,OAAe,EAAE,OAA6B;QAClF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,cAAc,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA+DA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAqB;IACzB,OAAO,CAAW;IAClB,WAAW,CAAyB;IAE7C,YAAY,IAAwB,EAAE,OAAe,EAAE,OAA+B;QACpF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,cAAc,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { validateHtmlComposition } from "./validate.js";
2
+ export type { StaticValidationResult, ValidateHtmlCompositionOptions } from "./validate.js";
3
+ export { parseHtml } from "./parse.js";
4
+ export type { HtmlDocument, HtmlElement, HtmlNode, SourceLocation } from "./parse.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/html/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { validateHtmlComposition } from "./validate.js";
2
+ export { parseHtml } from "./parse.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/html/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type DefaultTreeAdapterTypes } from "parse5";
2
+ export type HtmlDocument = DefaultTreeAdapterTypes.Document;
3
+ export type HtmlElement = DefaultTreeAdapterTypes.Element;
4
+ export type HtmlTemplate = DefaultTreeAdapterTypes.Template;
5
+ export type HtmlNode = DefaultTreeAdapterTypes.Node;
6
+ export type HtmlParentNode = DefaultTreeAdapterTypes.ParentNode;
7
+ export type HtmlTextNode = DefaultTreeAdapterTypes.TextNode;
8
+ export type HtmlDocumentType = DefaultTreeAdapterTypes.DocumentType;
9
+ export interface SourceLocation {
10
+ startLine: number;
11
+ startCol: number;
12
+ endLine: number;
13
+ endCol: number;
14
+ }
15
+ export declare function parseHtml(html: string): HtmlDocument;
16
+ export declare function isElement(node: HtmlNode): node is HtmlElement;
17
+ export declare function isTemplate(node: HtmlNode): node is HtmlTemplate;
18
+ export declare function isTextNode(node: HtmlNode): node is HtmlTextNode;
19
+ export declare function getAttribute(element: HtmlElement, name: string): string | undefined;
20
+ export declare function hasAttribute(element: HtmlElement, name: string): boolean;
21
+ export declare function getAttributeLocation(element: HtmlElement, name: string): SourceLocation | undefined;
22
+ export declare function getElementLocation(element: HtmlElement): SourceLocation | undefined;
23
+ export declare function getNodeLocation(node: HtmlNode): SourceLocation | undefined;
24
+ export declare function getTextContent(node: HtmlNode): string;
25
+ export declare function walk(node: HtmlNode, visit: (node: HtmlNode) => void): void;
26
+ export declare function findElements(document: HtmlDocument, predicate: (element: HtmlElement) => boolean): HtmlElement[];
27
+ export declare function getDocumentDoctype(document: HtmlDocument): HtmlDocumentType | undefined;
28
+ export declare function getElementByTagName(document: HtmlDocument, tagName: string): HtmlElement | undefined;
29
+ export declare function isDescendantOf(node: HtmlNode, ancestor: HtmlElement): boolean;
30
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/html/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,uBAAuB,CAAC,UAAU,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,YAAY,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEpD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,WAAW,CAE7D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,YAAY,CAE/D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,YAAY,CAE/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEnG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAEnF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAWrD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAa1E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,GAAG,WAAW,EAAE,CAQhH;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEpG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAS7E"}
@@ -0,0 +1,80 @@
1
+ import { parse } from "parse5";
2
+ export function parseHtml(html) {
3
+ return parse(html, { sourceCodeLocationInfo: true });
4
+ }
5
+ export function isElement(node) {
6
+ return "tagName" in node;
7
+ }
8
+ export function isTemplate(node) {
9
+ return isElement(node) && node.tagName === "template" && "content" in node;
10
+ }
11
+ export function isTextNode(node) {
12
+ return node.nodeName === "#text";
13
+ }
14
+ export function getAttribute(element, name) {
15
+ return element.attrs.find((attribute) => attribute.name === name)?.value;
16
+ }
17
+ export function hasAttribute(element, name) {
18
+ return element.attrs.some((attribute) => attribute.name === name);
19
+ }
20
+ export function getAttributeLocation(element, name) {
21
+ return element.sourceCodeLocation?.attrs?.[name] ?? undefined;
22
+ }
23
+ export function getElementLocation(element) {
24
+ return element.sourceCodeLocation ?? undefined;
25
+ }
26
+ export function getNodeLocation(node) {
27
+ return node.sourceCodeLocation ?? undefined;
28
+ }
29
+ export function getTextContent(node) {
30
+ if (isTextNode(node)) {
31
+ return node.value;
32
+ }
33
+ if (isTemplate(node)) {
34
+ return node.content.childNodes.map((child) => getTextContent(child)).join("");
35
+ }
36
+ if (isElement(node)) {
37
+ return node.childNodes.map((child) => getTextContent(child)).join("");
38
+ }
39
+ return "";
40
+ }
41
+ export function walk(node, visit) {
42
+ visit(node);
43
+ if (isTemplate(node)) {
44
+ for (const child of node.content.childNodes) {
45
+ walk(child, visit);
46
+ }
47
+ return;
48
+ }
49
+ if ("childNodes" in node) {
50
+ for (const child of node.childNodes) {
51
+ walk(child, visit);
52
+ }
53
+ }
54
+ }
55
+ export function findElements(document, predicate) {
56
+ const elements = [];
57
+ walk(document, (node) => {
58
+ if (isElement(node) && predicate(node)) {
59
+ elements.push(node);
60
+ }
61
+ });
62
+ return elements;
63
+ }
64
+ export function getDocumentDoctype(document) {
65
+ return document.childNodes.find((node) => node.nodeName === "#documentType");
66
+ }
67
+ export function getElementByTagName(document, tagName) {
68
+ return findElements(document, (element) => element.tagName === tagName)[0];
69
+ }
70
+ export function isDescendantOf(node, ancestor) {
71
+ let current = "parentNode" in node ? node.parentNode : null;
72
+ while (current) {
73
+ if (current === ancestor) {
74
+ return true;
75
+ }
76
+ current = "parentNode" in current ? current.parentNode : null;
77
+ }
78
+ return false;
79
+ }
80
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/html/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type CompositionDiagnostic, type CompositionSourceInfo } from "../contracts.js";
2
+ export interface ValidateHtmlCompositionOptions {
3
+ projectRoot: string;
4
+ /** Project-relative path to the composition HTML document. */
5
+ entry: string;
6
+ /** External props overrides merged over the document's default props. */
7
+ props?: unknown;
8
+ }
9
+ export interface StaticValidationResult {
10
+ info: CompositionSourceInfo | null;
11
+ diagnostics: CompositionDiagnostic[];
12
+ }
13
+ export declare function validateHtmlComposition(options: ValidateHtmlCompositionOptions): Promise<StaticValidationResult>;
14
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/html/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,qBAAqB,EAG1B,KAAK,qBAAqB,EAM3B,MAAM,iBAAiB,CAAC;AA2BzB,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC;AAwpCD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAqDjC"}