distark-render 1.1.11 → 1.1.12

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 (164) hide show
  1. package/README.md +0 -0
  2. package/assets/presets/jumping-jack.json +194 -0
  3. package/assets/tank.json +0 -0
  4. package/dist/cli/animate.d.ts +0 -0
  5. package/dist/cli/animate.d.ts.map +0 -0
  6. package/dist/cli/animate.js +0 -0
  7. package/dist/cli/animate.js.map +0 -0
  8. package/dist/cli/diff.d.ts +0 -0
  9. package/dist/cli/diff.d.ts.map +0 -0
  10. package/dist/cli/diff.js +0 -0
  11. package/dist/cli/diff.js.map +0 -0
  12. package/dist/cli/distark-check.d.ts +0 -0
  13. package/dist/cli/distark-check.d.ts.map +0 -0
  14. package/dist/cli/distark-check.js +16 -16
  15. package/dist/cli/distark-check.js.map +0 -0
  16. package/dist/cli/query.d.ts +0 -0
  17. package/dist/cli/query.d.ts.map +0 -0
  18. package/dist/cli/query.js +0 -0
  19. package/dist/cli/query.js.map +0 -0
  20. package/dist/cli/record.d.ts +0 -0
  21. package/dist/cli/record.d.ts.map +0 -0
  22. package/dist/cli/record.js +0 -0
  23. package/dist/cli/record.js.map +0 -0
  24. package/dist/cli/render.d.ts +0 -0
  25. package/dist/cli/render.d.ts.map +0 -0
  26. package/dist/cli/render.js +0 -0
  27. package/dist/cli/render.js.map +0 -0
  28. package/dist/cli/scene.d.ts +12 -2
  29. package/dist/cli/scene.d.ts.map +1 -1
  30. package/dist/cli/scene.js +235 -4
  31. package/dist/cli/scene.js.map +1 -1
  32. package/dist/cli/shared.d.ts +0 -0
  33. package/dist/cli/shared.d.ts.map +0 -0
  34. package/dist/cli/shared.js +0 -0
  35. package/dist/cli/shared.js.map +0 -0
  36. package/dist/cli/test.d.ts +0 -0
  37. package/dist/cli/test.d.ts.map +0 -0
  38. package/dist/cli/test.js +0 -0
  39. package/dist/cli/test.js.map +0 -0
  40. package/dist/cli/verify.d.ts +0 -0
  41. package/dist/cli/verify.d.ts.map +0 -0
  42. package/dist/cli/verify.js +0 -0
  43. package/dist/cli/verify.js.map +0 -0
  44. package/dist/modules/adapters/p5Renderer.d.ts +0 -0
  45. package/dist/modules/adapters/p5Renderer.d.ts.map +1 -1
  46. package/dist/modules/adapters/p5Renderer.js +17 -40
  47. package/dist/modules/adapters/p5Renderer.js.map +1 -1
  48. package/dist/modules/adapters/skiaRenderer.d.ts +0 -2
  49. package/dist/modules/adapters/skiaRenderer.d.ts.map +1 -1
  50. package/dist/modules/adapters/skiaRenderer.js +16 -47
  51. package/dist/modules/adapters/skiaRenderer.js.map +1 -1
  52. package/dist/modules/animationDiff.d.ts +0 -0
  53. package/dist/modules/animationDiff.d.ts.map +0 -0
  54. package/dist/modules/animationDiff.js +0 -0
  55. package/dist/modules/animationDiff.js.map +0 -0
  56. package/dist/modules/browserSceneRenderer.d.ts +0 -0
  57. package/dist/modules/browserSceneRenderer.d.ts.map +0 -0
  58. package/dist/modules/browserSceneRenderer.js +0 -0
  59. package/dist/modules/browserSceneRenderer.js.map +0 -0
  60. package/dist/modules/characterValidator.d.ts +41 -0
  61. package/dist/modules/characterValidator.d.ts.map +1 -0
  62. package/dist/modules/characterValidator.js +233 -0
  63. package/dist/modules/characterValidator.js.map +1 -0
  64. package/dist/modules/eyeSystem.d.ts +0 -0
  65. package/dist/modules/eyeSystem.d.ts.map +0 -0
  66. package/dist/modules/eyeSystem.js +0 -0
  67. package/dist/modules/eyeSystem.js.map +0 -0
  68. package/dist/modules/imageLoad.d.ts +8 -22
  69. package/dist/modules/imageLoad.d.ts.map +1 -1
  70. package/dist/modules/imageLoad.js +78 -203
  71. package/dist/modules/imageLoad.js.map +1 -1
  72. package/dist/modules/mouthSystem.d.ts +0 -0
  73. package/dist/modules/mouthSystem.d.ts.map +0 -0
  74. package/dist/modules/mouthSystem.js +0 -0
  75. package/dist/modules/mouthSystem.js.map +0 -0
  76. package/dist/modules/renderRig.d.ts +0 -0
  77. package/dist/modules/renderRig.d.ts.map +1 -1
  78. package/dist/modules/renderRig.js +4 -52
  79. package/dist/modules/renderRig.js.map +1 -1
  80. package/dist/modules/sceneRenderer.d.ts +1 -2
  81. package/dist/modules/sceneRenderer.d.ts.map +1 -1
  82. package/dist/modules/sceneRenderer.js +6 -9
  83. package/dist/modules/sceneRenderer.js.map +1 -1
  84. package/dist/tests/helpers.d.ts +0 -0
  85. package/dist/tests/helpers.d.ts.map +0 -0
  86. package/dist/tests/helpers.js +0 -0
  87. package/dist/tests/helpers.js.map +0 -0
  88. package/dist/tests/test-animation-diff-rendering.d.ts +0 -0
  89. package/dist/tests/test-animation-diff-rendering.d.ts.map +0 -0
  90. package/dist/tests/test-animation-diff-rendering.js +0 -0
  91. package/dist/tests/test-animation-diff-rendering.js.map +0 -0
  92. package/dist/tests/test-animation-diff.d.ts +0 -0
  93. package/dist/tests/test-animation-diff.d.ts.map +0 -0
  94. package/dist/tests/test-animation-diff.js +0 -0
  95. package/dist/tests/test-animation-diff.js.map +0 -0
  96. package/dist/tests/test-autofit.d.ts +0 -0
  97. package/dist/tests/test-autofit.d.ts.map +0 -0
  98. package/dist/tests/test-autofit.js +0 -0
  99. package/dist/tests/test-autofit.js.map +0 -0
  100. package/dist/tests/test-base-autofit.d.ts +0 -0
  101. package/dist/tests/test-base-autofit.d.ts.map +0 -0
  102. package/dist/tests/test-base-autofit.js +0 -0
  103. package/dist/tests/test-base-autofit.js.map +0 -0
  104. package/dist/tests/test-browser-scene.d.ts +0 -0
  105. package/dist/tests/test-browser-scene.d.ts.map +0 -0
  106. package/dist/tests/test-browser-scene.js +0 -0
  107. package/dist/tests/test-browser-scene.js.map +0 -0
  108. package/dist/tests/test-character-validator.d.ts +8 -0
  109. package/dist/tests/test-character-validator.d.ts.map +1 -0
  110. package/dist/tests/test-character-validator.js +445 -0
  111. package/dist/tests/test-character-validator.js.map +1 -0
  112. package/dist/tests/test-cli.d.ts +0 -0
  113. package/dist/tests/test-cli.d.ts.map +0 -0
  114. package/dist/tests/test-cli.js +0 -0
  115. package/dist/tests/test-cli.js.map +0 -0
  116. package/dist/tests/test-image-loading.d.ts +0 -0
  117. package/dist/tests/test-image-loading.d.ts.map +0 -0
  118. package/dist/tests/test-image-loading.js +0 -0
  119. package/dist/tests/test-image-loading.js.map +0 -0
  120. package/dist/tests/test-joint-movement.d.ts +0 -0
  121. package/dist/tests/test-joint-movement.d.ts.map +0 -0
  122. package/dist/tests/test-joint-movement.js +0 -0
  123. package/dist/tests/test-joint-movement.js.map +0 -0
  124. package/dist/tests/test-p5-image-types.d.ts +0 -0
  125. package/dist/tests/test-p5-image-types.d.ts.map +0 -0
  126. package/dist/tests/test-p5-image-types.js +0 -0
  127. package/dist/tests/test-p5-image-types.js.map +0 -0
  128. package/dist/tests/test-render-cache-visual.d.ts +0 -0
  129. package/dist/tests/test-render-cache-visual.d.ts.map +0 -0
  130. package/dist/tests/test-render-cache-visual.js +0 -0
  131. package/dist/tests/test-render-cache-visual.js.map +0 -0
  132. package/dist/tests/test-render-cache.d.ts +0 -0
  133. package/dist/tests/test-render-cache.d.ts.map +0 -0
  134. package/dist/tests/test-render-cache.js +0 -0
  135. package/dist/tests/test-render-cache.js.map +0 -0
  136. package/dist/tests/test-scene.d.ts +0 -0
  137. package/dist/tests/test-scene.d.ts.map +0 -0
  138. package/dist/tests/test-scene.js +0 -0
  139. package/dist/tests/test-scene.js.map +0 -0
  140. package/dist/tests/test-skia.d.ts +0 -0
  141. package/dist/tests/test-skia.d.ts.map +0 -0
  142. package/dist/tests/test-skia.js +0 -0
  143. package/dist/tests/test-skia.js.map +0 -0
  144. package/dist/tests/test-torso-pivot.d.ts +0 -0
  145. package/dist/tests/test-torso-pivot.d.ts.map +0 -0
  146. package/dist/tests/test-torso-pivot.js +0 -0
  147. package/dist/tests/test-torso-pivot.js.map +0 -0
  148. package/dist/tests/test-visual-verification.d.ts +0 -0
  149. package/dist/tests/test-visual-verification.d.ts.map +0 -0
  150. package/dist/tests/test-visual-verification.js +0 -0
  151. package/dist/tests/test-visual-verification.js.map +0 -0
  152. package/dist/types.d.ts +0 -0
  153. package/dist/types.d.ts.map +0 -0
  154. package/dist/types.js +0 -0
  155. package/dist/types.js.map +0 -0
  156. package/package.json +7 -1
  157. package/dist/tests/test-scene-object-svg-rerasterization.d.ts +0 -2
  158. package/dist/tests/test-scene-object-svg-rerasterization.d.ts.map +0 -1
  159. package/dist/tests/test-scene-object-svg-rerasterization.js +0 -86
  160. package/dist/tests/test-scene-object-svg-rerasterization.js.map +0 -1
  161. package/dist/tests/test-svg-rerasterization.d.ts +0 -2
  162. package/dist/tests/test-svg-rerasterization.d.ts.map +0 -1
  163. package/dist/tests/test-svg-rerasterization.js +0 -97
  164. package/dist/tests/test-svg-rerasterization.js.map +0 -1
@@ -18,12 +18,6 @@ export class P5ImageLoader extends ImageLoader {
18
18
  * Inherits all caching, URL resolution, and batch loading from base class
19
19
  */
20
20
  loadImage(key, imageData, onLoad, onError) {
21
- const cached = this.getCachedImage(key);
22
- if (cached) {
23
- if (onLoad)
24
- onLoad(key, cached);
25
- return;
26
- }
27
21
  const imageUrl = this.resolveImageSource(imageData);
28
22
  if (!imageUrl) {
29
23
  console.warn(`Could not resolve image source for ${key}: ${imageData}`);
@@ -31,40 +25,23 @@ export class P5ImageLoader extends ImageLoader {
31
25
  onError(key, 'Invalid image source');
32
26
  return;
33
27
  }
34
- void (async () => {
35
- try {
36
- const prepared = await this.prepareResolvedAsset(imageUrl);
37
- if (prepared?.kind === 'svg') {
38
- const canvas = await this.createSvgCanvas(prepared.svgSource, prepared.intrinsicWidth, prepared.intrinsicHeight);
39
- this.attachSvgMetadata(canvas, prepared.svgSource, prepared.intrinsicWidth, prepared.intrinsicHeight, prepared.intrinsicWidth, prepared.intrinsicHeight);
40
- this.cacheImage(key, canvas);
41
- if (onLoad)
42
- onLoad(key, canvas);
43
- return;
44
- }
45
- const loadUrl = prepared?.kind === 'blob' ? prepared.objectUrl : imageUrl;
46
- this.p5.loadImage(loadUrl, (img) => {
47
- this.cacheImage(key, img);
48
- if (prepared?.kind === 'blob') {
49
- URL.revokeObjectURL(prepared.objectUrl);
50
- }
51
- if (onLoad)
52
- onLoad(key, img);
53
- }, (err) => {
54
- if (prepared?.kind === 'blob') {
55
- URL.revokeObjectURL(prepared.objectUrl);
56
- }
57
- console.error(`Failed to load ${key}:`, err);
58
- if (onError)
59
- onError(key, err);
60
- });
61
- }
62
- catch (err) {
63
- console.error(`Failed to load ${key}:`, err);
64
- if (onError)
65
- onError(key, err instanceof Error ? err.message : err);
66
- }
67
- })();
28
+ // Check cache first (from base class)
29
+ const cached = this.getCachedImage(key);
30
+ if (cached) {
31
+ if (onLoad)
32
+ onLoad(key, cached);
33
+ return;
34
+ }
35
+ // Use p5.loadImage
36
+ this.p5.loadImage(imageUrl, (img) => {
37
+ this.cacheImage(key, img);
38
+ if (onLoad)
39
+ onLoad(key, img);
40
+ }, (err) => {
41
+ console.error(`Failed to load ${key}:`, err);
42
+ if (onError)
43
+ onError(key, err);
44
+ });
68
45
  }
69
46
  /**
70
47
  * Override to use p5.loadImage instead of createImageBitmap.
@@ -1 +1 @@
1
- {"version":3,"file":"p5Renderer.js","sourceRoot":"","sources":["../../../modules/adapters/p5Renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p5Renderer.js","sourceRoot":"","sources":["../../../modules/adapters/p5Renderer.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,6 @@ export declare class SkiaImageLoader extends ImageLoader {
17
17
  */
18
18
  loadImageAsync(key: string, imageData: string): Promise<any>;
19
19
  loadAllRigImagesAsync(rigData: RigData): Promise<Record<string, any>>;
20
- protected createSvgCanvas(svgSource: string, targetWidth: number, targetHeight: number): Promise<any>;
21
- private getCanvasModule;
22
20
  }
23
21
  /**
24
22
  * Skia Canvas Renderer - Complete rendering solution for Node.js
@@ -1 +1 @@
1
- {"version":3,"file":"skiaRenderer.d.ts","sourceRoot":"","sources":["../../../modules/adapters/skiaRenderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAChC,QAAQ,CAAC,EAAE,MAAM;IAI7B;;;OAGG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA0C5D,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;cAiElD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAiBtG,eAAe;CAiBhC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,oBAAoB;IAClD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,OAAO,CAAkB;gBAErB,QAAQ,CAAC,EAAE,MAAM;IAK7B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAa/D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa;IAe9E;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,GAAE,OAAe,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAgC/F;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAgBlH;;;;;;OAMG;IACG,YAAY,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/E,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;IACG,cAAc,CAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,MAAM,GAAE,KAAK,GAAG,MAAc,GAC/B,OAAO,CAAC,MAAM,CAAC;IAclB;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGzC"}
1
+ {"version":3,"file":"skiaRenderer.d.ts","sourceRoot":"","sources":["../../../modules/adapters/skiaRenderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAChC,QAAQ,CAAC,EAAE,MAAM;IAI7B;;;OAGG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA+B5D,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAgE9E;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,oBAAoB;IAClD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,OAAO,CAAkB;gBAErB,QAAQ,CAAC,EAAE,MAAM;IAK7B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAa/D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa;IAe9E;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,GAAE,OAAe,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAgC/F;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAgBlH;;;;;;OAMG;IACG,YAAY,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/E,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;IACG,cAAc,CAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,MAAM,GAAE,KAAK,GAAG,MAAc,GAC/B,OAAO,CAAC,MAAM,CAAC;IAclB;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGzC"}
@@ -17,28 +17,29 @@ export class SkiaImageLoader extends ImageLoader {
17
17
  * Note: This requires the @napi-rs/canvas package's loadImage function
18
18
  */
19
19
  async loadImageAsync(key, imageData) {
20
+ const imageUrl = this.resolveImageSource(imageData);
21
+ if (!imageUrl) {
22
+ throw new Error(`Could not resolve image source for ${key}: ${imageData}`);
23
+ }
20
24
  // Check cache first
21
25
  const cached = this.getCachedImage(key);
22
26
  if (cached) {
23
27
  return cached;
24
28
  }
25
- const imageUrl = this.resolveImageSource(imageData);
26
- if (!imageUrl) {
27
- throw new Error(`Could not resolve image source for ${key}: ${imageData}`);
28
- }
29
- const prepared = await this.prepareResolvedAsset(imageUrl);
30
- if (prepared?.kind === 'svg') {
31
- const canvas = await this.createSvgCanvas(prepared.svgSource, prepared.intrinsicWidth, prepared.intrinsicHeight);
32
- this.attachSvgMetadata(canvas, prepared.svgSource, prepared.intrinsicWidth, prepared.intrinsicHeight, prepared.intrinsicWidth, prepared.intrinsicHeight);
33
- this.cacheImage(key, canvas);
34
- return canvas;
29
+ // Dynamic import to avoid browser compatibility issues
30
+ let loadImage;
31
+ try {
32
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
33
+ // @ts-ignore - Optional dependency
34
+ const module = await import('@napi-rs/canvas');
35
+ loadImage = module.loadImage;
35
36
  }
36
- const { loadImage } = await this.getCanvasModule();
37
- const loadUrl = prepared?.kind === 'blob' ? prepared.objectUrl : imageUrl;
38
- const img = await loadImage(loadUrl);
39
- if (prepared?.kind === 'blob') {
40
- URL.revokeObjectURL(prepared.objectUrl);
37
+ catch {
38
+ // Fallback to skia-canvas if @napi-rs/canvas is not available
39
+ const module = await import('skia-canvas');
40
+ loadImage = module.loadImage;
41
41
  }
42
+ const img = await loadImage(imageUrl);
42
43
  this.cacheImage(key, img);
43
44
  return img;
44
45
  }
@@ -100,38 +101,6 @@ export class SkiaImageLoader extends ImageLoader {
100
101
  }
101
102
  return loadedImages;
102
103
  }
103
- async createSvgCanvas(svgSource, targetWidth, targetHeight) {
104
- const width = Math.max(1, Math.round(targetWidth || 1));
105
- const height = Math.max(1, Math.round(targetHeight || 1));
106
- const { createCanvas, loadImage } = await this.getCanvasModule();
107
- const canvas = createCanvas(width, height);
108
- const ctx = canvas.getContext('2d');
109
- if (!ctx) {
110
- throw new Error('Failed to create 2D context for SVG rasterization');
111
- }
112
- const image = await loadImage(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgSource)}`);
113
- ctx.clearRect(0, 0, width, height);
114
- ctx.drawImage(image, 0, 0, width, height);
115
- return canvas;
116
- }
117
- async getCanvasModule() {
118
- try {
119
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
120
- // @ts-ignore - Optional dependency
121
- const module = await import('@napi-rs/canvas');
122
- return {
123
- createCanvas: module.createCanvas,
124
- loadImage: module.loadImage,
125
- };
126
- }
127
- catch {
128
- const module = await import('skia-canvas');
129
- return {
130
- createCanvas: (width, height) => module.Canvas ? new module.Canvas(width, height) : module.createCanvas(width, height),
131
- loadImage: module.loadImage,
132
- };
133
- }
134
- }
135
104
  }
136
105
  /**
137
106
  * Skia Canvas Renderer - Complete rendering solution for Node.js
@@ -1 +1 @@
1
- {"version":3,"file":"skiaRenderer.js","sourceRoot":"","sources":["../../../modules/adapters/skiaRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skiaRenderer.js","sourceRoot":"","sources":["../../../modules/adapters/skiaRenderer.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Character Validator
3
+ *
4
+ * Validates a character rig JSON object and returns a list of issues.
5
+ * Errors = character will not work correctly.
6
+ * Warnings = character may look wrong or have limited expressiveness.
7
+ *
8
+ * This is the single source of truth for what constitutes a valid character.
9
+ * The Ruby mirror in app/models/artifact/character.rb implements the same rules.
10
+ */
11
+ export type IssueSeverity = 'error' | 'warning';
12
+ export type IssueCategory = 'parts' | 'eyes' | 'mouth' | 'pivots' | 'zIndex' | 'dimensions';
13
+ export interface ValidationIssue {
14
+ field: string;
15
+ message: string;
16
+ severity: IssueSeverity;
17
+ category: IssueCategory;
18
+ }
19
+ export interface CharacterValidationResult {
20
+ /** true only when there are zero errors (warnings are allowed) */
21
+ valid: boolean;
22
+ issues: ValidationIssue[];
23
+ }
24
+ /** The 12 body part image paths every character must have */
25
+ export declare const REQUIRED_BODY_PARTS: readonly ["head", "torso", "leftUpperArm", "leftForearm", "leftHand", "rightUpperArm", "rightForearm", "rightHand", "leftThigh", "leftLeg", "rightThigh", "rightLeg"];
26
+ /** The 13 pivot point connections that chain all limbs */
27
+ export declare const REQUIRED_PIVOT_POINTS: readonly ["root_torso", "torso_head", "head_mouth", "torso_leftUpperArm", "leftUpperArm_leftForearm", "leftForearm_leftHand", "torso_rightUpperArm", "rightUpperArm_rightForearm", "rightForearm_rightHand", "torso_leftThigh", "leftThigh_leftLeg", "torso_rightThigh", "rightThigh_rightLeg"];
28
+ /** Every part that must have a z-index value */
29
+ export declare const REQUIRED_Z_INDEX_PARTS: readonly ["head", "mouth", "torso", "leftEye", "leftIris", "leftEyeLid", "rightEye", "rightIris", "rightEyeLid", "leftUpperArm", "leftForearm", "leftHand", "rightUpperArm", "rightForearm", "rightHand", "leftThigh", "leftLeg", "rightThigh", "rightLeg"];
30
+ /** Eye image hash fields required in the eyes object */
31
+ export declare const REQUIRED_EYE_IMAGES: readonly ["leftEyeImage", "rightEyeImage", "leftIris", "rightIris", "leftEyeLidOpen", "rightEyeLidOpen", "leftEyeLidHalfClosed", "rightEyeLidHalfClosed", "leftEyeLidClosed", "rightEyeLidClosed"];
32
+ /** Eye coordinate fields that must be numbers */
33
+ export declare const REQUIRED_EYE_COORDS: readonly ["leftEyeXCoor", "leftEyeYCoor", "rightEyeXCoor", "rightEyeYCoor", "leftEyeLidXCoor", "leftEyeLidYCoor", "rightEyeLidXCoor", "rightEyeLidYCoor", "leftIrisXCoor", "leftIrisYCoor", "rightIrisXCoor", "rightIrisYCoor"];
34
+ /** Iris size fields that must be positive numbers */
35
+ export declare const REQUIRED_IRIS_SIZES: readonly ["leftIrisWidth", "leftIrisHeight", "rightIrisWidth", "rightIrisHeight"];
36
+ /** Parts that must have a dimensionValues entry with width > 0 and height > 0 */
37
+ export declare const REQUIRED_DIMENSION_PARTS: readonly ["head", "torso", "mouth", "leftUpperArm", "leftForearm", "leftHand", "rightUpperArm", "rightForearm", "rightHand", "leftThigh", "leftLeg", "rightThigh", "rightLeg"];
38
+ /** Mouth shapes that represent the character talking */
39
+ export declare const TALKING_MOUTH_SHAPES: readonly ["open", "half-open", "wide-open", "slightly-open", "f", "l", "ds", "ee", "eh"];
40
+ export declare function validateCharacter(data: unknown): CharacterValidationResult;
41
+ //# sourceMappingURL=characterValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characterValidator.d.ts","sourceRoot":"","sources":["../../modules/characterValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE5F,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACtC,kEAAkE;IAClE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AAID,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,uKAMtB,CAAC;AAEX,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,iSAMxB,CAAC;AAEX,gDAAgD;AAChD,eAAO,MAAM,sBAAsB,6PAQzB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,oMAMtB,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,iOAOtB,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,mFAGtB,CAAC;AAEX,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,gLAM3B,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,0FAEvB,CAAC;AAyBX,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAoL1E"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Character Validator
3
+ *
4
+ * Validates a character rig JSON object and returns a list of issues.
5
+ * Errors = character will not work correctly.
6
+ * Warnings = character may look wrong or have limited expressiveness.
7
+ *
8
+ * This is the single source of truth for what constitutes a valid character.
9
+ * The Ruby mirror in app/models/artifact/character.rb implements the same rules.
10
+ */
11
+ // ─── Schema constants (exported so Ruby mirror + docs can reference them) ────
12
+ /** The 12 body part image paths every character must have */
13
+ export const REQUIRED_BODY_PARTS = [
14
+ 'head', 'torso',
15
+ 'leftUpperArm', 'leftForearm', 'leftHand',
16
+ 'rightUpperArm', 'rightForearm', 'rightHand',
17
+ 'leftThigh', 'leftLeg',
18
+ 'rightThigh', 'rightLeg',
19
+ ];
20
+ /** The 13 pivot point connections that chain all limbs */
21
+ export const REQUIRED_PIVOT_POINTS = [
22
+ 'root_torso', 'torso_head', 'head_mouth',
23
+ 'torso_leftUpperArm', 'leftUpperArm_leftForearm', 'leftForearm_leftHand',
24
+ 'torso_rightUpperArm', 'rightUpperArm_rightForearm', 'rightForearm_rightHand',
25
+ 'torso_leftThigh', 'leftThigh_leftLeg',
26
+ 'torso_rightThigh', 'rightThigh_rightLeg',
27
+ ];
28
+ /** Every part that must have a z-index value */
29
+ export const REQUIRED_Z_INDEX_PARTS = [
30
+ 'head', 'mouth', 'torso',
31
+ 'leftEye', 'leftIris', 'leftEyeLid',
32
+ 'rightEye', 'rightIris', 'rightEyeLid',
33
+ 'leftUpperArm', 'leftForearm', 'leftHand',
34
+ 'rightUpperArm', 'rightForearm', 'rightHand',
35
+ 'leftThigh', 'leftLeg',
36
+ 'rightThigh', 'rightLeg',
37
+ ];
38
+ /** Eye image hash fields required in the eyes object */
39
+ export const REQUIRED_EYE_IMAGES = [
40
+ 'leftEyeImage', 'rightEyeImage',
41
+ 'leftIris', 'rightIris',
42
+ 'leftEyeLidOpen', 'rightEyeLidOpen',
43
+ 'leftEyeLidHalfClosed', 'rightEyeLidHalfClosed',
44
+ 'leftEyeLidClosed', 'rightEyeLidClosed',
45
+ ];
46
+ /** Eye coordinate fields that must be numbers */
47
+ export const REQUIRED_EYE_COORDS = [
48
+ 'leftEyeXCoor', 'leftEyeYCoor',
49
+ 'rightEyeXCoor', 'rightEyeYCoor',
50
+ 'leftEyeLidXCoor', 'leftEyeLidYCoor',
51
+ 'rightEyeLidXCoor', 'rightEyeLidYCoor',
52
+ 'leftIrisXCoor', 'leftIrisYCoor',
53
+ 'rightIrisXCoor', 'rightIrisYCoor',
54
+ ];
55
+ /** Iris size fields that must be positive numbers */
56
+ export const REQUIRED_IRIS_SIZES = [
57
+ 'leftIrisWidth', 'leftIrisHeight',
58
+ 'rightIrisWidth', 'rightIrisHeight',
59
+ ];
60
+ /** Parts that must have a dimensionValues entry with width > 0 and height > 0 */
61
+ export const REQUIRED_DIMENSION_PARTS = [
62
+ 'head', 'torso', 'mouth',
63
+ 'leftUpperArm', 'leftForearm', 'leftHand',
64
+ 'rightUpperArm', 'rightForearm', 'rightHand',
65
+ 'leftThigh', 'leftLeg',
66
+ 'rightThigh', 'rightLeg',
67
+ ];
68
+ /** Mouth shapes that represent the character talking */
69
+ export const TALKING_MOUTH_SHAPES = [
70
+ 'open', 'half-open', 'wide-open', 'slightly-open', 'f', 'l', 'ds', 'ee', 'eh',
71
+ ];
72
+ // ─── Internal helpers ────────────────────────────────────────────────────────
73
+ function isValidHash(value) {
74
+ return typeof value === 'string' && value.length > 0 && !value.includes('[MEDIA_REMOVED]');
75
+ }
76
+ function isNum(value) {
77
+ return typeof value === 'number' && !isNaN(value);
78
+ }
79
+ function isPositiveNum(value) {
80
+ return isNum(value) && value > 0;
81
+ }
82
+ function asObj(value) {
83
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
84
+ return value;
85
+ }
86
+ return null;
87
+ }
88
+ // ─── Main validator ──────────────────────────────────────────────────────────
89
+ export function validateCharacter(data) {
90
+ const issues = [];
91
+ function addError(field, message, category) {
92
+ issues.push({ field, message, severity: 'error', category });
93
+ }
94
+ function addWarning(field, message, category) {
95
+ issues.push({ field, message, severity: 'warning', category });
96
+ }
97
+ // Must be a plain object
98
+ const d = asObj(data);
99
+ if (!d) {
100
+ addError('root', 'Character data must be a plain object', 'parts');
101
+ return { valid: false, issues };
102
+ }
103
+ // ── imagePaths: 12 body parts ────────────────────────────────────────────
104
+ const imagePaths = asObj(d.imagePaths) ?? {};
105
+ for (const part of REQUIRED_BODY_PARTS) {
106
+ if (!isValidHash(imagePaths[part])) {
107
+ addError(`imagePaths.${part}`, `Body part "${part}" image is missing or removed`, 'parts');
108
+ }
109
+ }
110
+ // ── pivotPoints: 13 joints ───────────────────────────────────────────────
111
+ const pivotPoints = asObj(d.pivotPoints) ?? {};
112
+ for (const key of REQUIRED_PIVOT_POINTS) {
113
+ const pivot = asObj(pivotPoints[key]);
114
+ if (!pivot) {
115
+ addError(`pivotPoints.${key}`, `Pivot point "${key}" is missing`, 'pivots');
116
+ }
117
+ else if (!isNum(pivot.x) || !isNum(pivot.y)) {
118
+ addError(`pivotPoints.${key}`, `Pivot point "${key}" must have numeric x and y`, 'pivots');
119
+ }
120
+ }
121
+ // ── zIndexValues: 19 parts ───────────────────────────────────────────────
122
+ const zi = asObj(d.zIndexValues) ?? {};
123
+ for (const part of REQUIRED_Z_INDEX_PARTS) {
124
+ if (!isNum(zi[part])) {
125
+ addError(`zIndexValues.${part}`, `Z-index for "${part}" is missing`, 'zIndex');
126
+ }
127
+ }
128
+ // Z-index ordering rules (hard constraints)
129
+ const leftEyeLid = zi.leftEyeLid;
130
+ const leftIris = zi.leftIris;
131
+ const leftEye = zi.leftEye;
132
+ if (isNum(leftEyeLid) && isNum(leftIris) && isNum(leftEye)) {
133
+ if (!(leftEyeLid > leftIris && leftIris > leftEye)) {
134
+ addError('zIndexValues', `Left eye z-order must be leftEyeLid(${leftEyeLid}) > leftIris(${leftIris}) > leftEye(${leftEye})`, 'zIndex');
135
+ }
136
+ }
137
+ const rightEyeLid = zi.rightEyeLid;
138
+ const rightIris = zi.rightIris;
139
+ const rightEye = zi.rightEye;
140
+ if (isNum(rightEyeLid) && isNum(rightIris) && isNum(rightEye)) {
141
+ if (!(rightEyeLid > rightIris && rightIris > rightEye)) {
142
+ addError('zIndexValues', `Right eye z-order must be rightEyeLid(${rightEyeLid}) > rightIris(${rightIris}) > rightEye(${rightEye})`, 'zIndex');
143
+ }
144
+ }
145
+ const mouthZ = zi.mouth;
146
+ const headZ = zi.head;
147
+ if (isNum(mouthZ) && isNum(headZ)) {
148
+ if (!(mouthZ > headZ)) {
149
+ addError('zIndexValues', `mouth z-index(${mouthZ}) must be greater than head z-index(${headZ})`, 'zIndex');
150
+ }
151
+ }
152
+ // ── eyes: images, coords, iris sizes ────────────────────────────────────
153
+ const eyes = asObj(d.eyes) ?? {};
154
+ for (const img of REQUIRED_EYE_IMAGES) {
155
+ if (!isValidHash(eyes[img])) {
156
+ addError(`eyes.${img}`, `Eye image "${img}" is missing or removed`, 'eyes');
157
+ }
158
+ }
159
+ for (const coord of REQUIRED_EYE_COORDS) {
160
+ if (!isNum(eyes[coord])) {
161
+ addError(`eyes.${coord}`, `Eye coordinate "${coord}" must be a number`, 'eyes');
162
+ }
163
+ }
164
+ for (const sizeKey of REQUIRED_IRIS_SIZES) {
165
+ if (!isPositiveNum(eyes[sizeKey])) {
166
+ addError(`eyes.${sizeKey}`, `Iris size "${sizeKey}" must be a positive number`, 'eyes');
167
+ }
168
+ }
169
+ // ── eyeSockets: left and right, ≥ 3 points each ─────────────────────────
170
+ const sockets = asObj(d.eyeSockets) ?? {};
171
+ for (const side of ['left', 'right']) {
172
+ const socket = sockets[side];
173
+ if (!Array.isArray(socket)) {
174
+ addError(`eyeSockets.${side}`, `Eye socket "${side}" must be an array of points`, 'eyes');
175
+ }
176
+ else if (socket.length < 3) {
177
+ addError(`eyeSockets.${side}`, `Eye socket "${side}" must have at least 3 points (has ${socket.length})`, 'eyes');
178
+ }
179
+ else {
180
+ const bad = socket.filter(p => {
181
+ const pt = asObj(p);
182
+ return !pt || !isNum(pt.x) || !isNum(pt.y);
183
+ });
184
+ if (bad.length > 0) {
185
+ addError(`eyeSockets.${side}`, `Eye socket "${side}" has ${bad.length} invalid point(s) — each must have numeric x and y`, 'eyes');
186
+ }
187
+ }
188
+ }
189
+ // ── mouth ────────────────────────────────────────────────────────────────
190
+ const mouth = asObj(d.mouth) ?? {};
191
+ if (!isValidHash(mouth.closed)) {
192
+ addError('mouth.closed', 'Mouth "closed" image is required', 'mouth');
193
+ }
194
+ if (!isNum(mouth.xCoor)) {
195
+ addError('mouth.xCoor', 'Mouth xCoor must be a number', 'mouth');
196
+ }
197
+ if (!isNum(mouth.yCoor)) {
198
+ addError('mouth.yCoor', 'Mouth yCoor must be a number', 'mouth');
199
+ }
200
+ const hasMouthSize = isPositiveNum(mouth.size);
201
+ const hasMouthDims = isPositiveNum(mouth.width) && isPositiveNum(mouth.height);
202
+ if (!hasMouthSize && !hasMouthDims) {
203
+ addError('mouth', 'Mouth needs size > 0, or both width > 0 and height > 0', 'mouth');
204
+ }
205
+ // ── dimensionValues: 13 parts ────────────────────────────────────────────
206
+ const dims = asObj(d.dimensionValues) ?? {};
207
+ for (const part of REQUIRED_DIMENSION_PARTS) {
208
+ const dim = asObj(dims[part]);
209
+ if (!dim) {
210
+ addError(`dimensionValues.${part}`, `Dimension for "${part}" is missing`, 'dimensions');
211
+ }
212
+ else if (!isPositiveNum(dim.width) || !isPositiveNum(dim.height)) {
213
+ addError(`dimensionValues.${part}`, `Dimension for "${part}" must have width > 0 and height > 0`, 'dimensions');
214
+ }
215
+ }
216
+ // ── Warnings ─────────────────────────────────────────────────────────────
217
+ // Pivot sanity: head pivot should be above (lower y) than torso root
218
+ const rootTorso = asObj(pivotPoints.root_torso);
219
+ const torsoHead = asObj(pivotPoints.torso_head);
220
+ if (rootTorso && torsoHead && isNum(rootTorso.y) && isNum(torsoHead.y)) {
221
+ if (torsoHead.y >= rootTorso.y) {
222
+ addWarning('pivotPoints.torso_head', `torso_head.y (${torsoHead.y}) should be less than root_torso.y (${rootTorso.y}) — head pivot should be above the torso root`, 'pivots');
223
+ }
224
+ }
225
+ // Mouth expressiveness: at least one talking shape should be present
226
+ const talkingAvailable = TALKING_MOUTH_SHAPES.filter(shape => isValidHash(mouth[shape]));
227
+ if (talkingAvailable.length === 0) {
228
+ addWarning('mouth', 'No talking mouth shapes found — character cannot animate speech. Add at least "open" or "slightly-open"', 'mouth');
229
+ }
230
+ const errorCount = issues.filter(i => i.severity === 'error').length;
231
+ return { valid: errorCount === 0, issues };
232
+ }
233
+ //# sourceMappingURL=characterValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characterValidator.js","sourceRoot":"","sources":["../../modules/characterValidator.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes