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
@@ -0,0 +1,445 @@
1
+ /**
2
+ * RED/GREEN TDD: Character Validator tests.
3
+ *
4
+ * Run against STUB first → mostly RED.
5
+ * Run against full implementation → all GREEN.
6
+ */
7
+ import { validateCharacter, REQUIRED_BODY_PARTS, REQUIRED_PIVOT_POINTS, REQUIRED_Z_INDEX_PARTS, REQUIRED_EYE_IMAGES, REQUIRED_EYE_COORDS, REQUIRED_IRIS_SIZES, REQUIRED_DIMENSION_PARTS, TALKING_MOUTH_SHAPES, } from '../modules/characterValidator.js';
8
+ import { EyeSystem } from '../modules/eyeSystem.js';
9
+ import { MouthSystem, extractMouthShapesFromRigData } from '../modules/mouthSystem.js';
10
+ import { assert, printSummary } from './helpers.js';
11
+ function clone(obj) {
12
+ return JSON.parse(JSON.stringify(obj));
13
+ }
14
+ /** Delete a dot-path field from a cloned object */
15
+ function del(obj, path) {
16
+ const result = clone(obj);
17
+ const parts = path.split('.');
18
+ let cur = result;
19
+ for (let i = 0; i < parts.length - 1; i++) {
20
+ cur = cur[parts[i]];
21
+ }
22
+ delete cur[parts[parts.length - 1]];
23
+ return result;
24
+ }
25
+ /** Set a dot-path field on a cloned object */
26
+ function set(obj, path, value) {
27
+ const result = clone(obj);
28
+ const parts = path.split('.');
29
+ let cur = result;
30
+ for (let i = 0; i < parts.length - 1; i++) {
31
+ cur = cur[parts[i]];
32
+ }
33
+ cur[parts[parts.length - 1]] = value;
34
+ return result;
35
+ }
36
+ function errors(r) {
37
+ return r.issues.filter(i => i.severity === 'error');
38
+ }
39
+ function warnings(r) {
40
+ return r.issues.filter(i => i.severity === 'warning');
41
+ }
42
+ function hasError(r, field) {
43
+ return r.issues.some(i => i.severity === 'error' && i.field === field);
44
+ }
45
+ function hasWarning(r, field) {
46
+ return r.issues.some(i => i.severity === 'warning' && i.field === field);
47
+ }
48
+ // ─── Valid character fixture ─────────────────────────────────────────────────
49
+ function h(n) {
50
+ return `abcdef${n.toString().padStart(26, '0')}`;
51
+ }
52
+ function buildValidCharacter() {
53
+ return {
54
+ id: 'TestChar',
55
+ key: 'TestChar',
56
+ kind: 'character',
57
+ name: 'Test Character',
58
+ imagePaths: {
59
+ head: h(1), torso: h(2),
60
+ leftUpperArm: h(3), leftForearm: h(4), leftHand: h(5),
61
+ rightUpperArm: h(6), rightForearm: h(7), rightHand: h(8),
62
+ leftThigh: h(9), leftLeg: h(10),
63
+ rightThigh: h(11), rightLeg: h(12),
64
+ },
65
+ eyes: {
66
+ leftEyeImage: h(13), rightEyeImage: h(14),
67
+ leftIris: h(15), rightIris: h(16),
68
+ leftEyeLidOpen: h(17), rightEyeLidOpen: h(18),
69
+ leftEyeLidHalfClosed: h(19), rightEyeLidHalfClosed: h(20),
70
+ leftEyeLidClosed: h(21), rightEyeLidClosed: h(22),
71
+ leftEyeXCoor: -17, leftEyeYCoor: -188,
72
+ rightEyeXCoor: 111, rightEyeYCoor: -209,
73
+ leftEyeLidXCoor: -13, leftEyeLidYCoor: -209,
74
+ rightEyeLidXCoor: 115, rightEyeLidYCoor: -213,
75
+ leftIrisXCoor: -4, leftIrisYCoor: -188,
76
+ rightIrisXCoor: 119, rightIrisYCoor: -200,
77
+ leftIrisWidth: 37, leftIrisHeight: 58,
78
+ rightIrisWidth: 37, rightIrisHeight: 58,
79
+ },
80
+ eyeSockets: {
81
+ left: [
82
+ { x: 34, y: 39 }, { x: 29, y: 43 }, { x: 27, y: 47 },
83
+ { x: 34, y: 60 }, { x: 48, y: 59 }, { x: 53, y: 45 },
84
+ ],
85
+ right: [
86
+ { x: 77, y: 34 }, { x: 71, y: 37 }, { x: 70, y: 47 },
87
+ { x: 75, y: 52 }, { x: 83, y: 53 }, { x: 90, y: 42 },
88
+ ],
89
+ },
90
+ pivotPoints: {
91
+ root_torso: { x: 19, y: -62 },
92
+ torso_head: { x: 40, y: -343 },
93
+ head_mouth: { x: 23, y: -68 },
94
+ torso_leftUpperArm: { x: -56, y: -309 },
95
+ leftUpperArm_leftForearm: { x: 4, y: 60 },
96
+ leftForearm_leftHand: { x: 6, y: 33 },
97
+ torso_rightUpperArm: { x: 76, y: -322 },
98
+ rightUpperArm_rightForearm: { x: -9, y: 49 },
99
+ rightForearm_rightHand: { x: -4, y: 27 },
100
+ torso_leftThigh: { x: -22, y: -67 },
101
+ leftThigh_leftLeg: { x: 0, y: 40 },
102
+ torso_rightThigh: { x: 85, y: -58 },
103
+ rightThigh_rightLeg: { x: 9, y: 36 },
104
+ },
105
+ zIndexValues: {
106
+ rightUpperArm: 1, rightForearm: 2,
107
+ rightEye: 3, rightIris: 4, rightEyeLid: 5,
108
+ rightLeg: 6, rightThigh: 7, torso: 8, head: 9,
109
+ leftUpperArm: 10, leftForearm: 11,
110
+ leftEye: 12, leftIris: 13, leftEyeLid: 14,
111
+ leftLeg: 15, leftThigh: 16, rightHand: 17, leftHand: 18, mouth: 19,
112
+ },
113
+ mouth: {
114
+ closed: h(30), open: h(31), 'half-open': h(32),
115
+ 'wide-open': h(33), 'slightly-open': h(34),
116
+ f: h(35), l: h(36),
117
+ xCoor: 23, yCoor: -68,
118
+ size: 1.5, width: 61.5, height: 44.8,
119
+ },
120
+ dimensionValues: {
121
+ head: { width: 337, height: 437 },
122
+ torso: { width: 278, height: 383 },
123
+ mouth: { width: 61.5, height: 44.8 },
124
+ leftUpperArm: { width: 88, height: 203 },
125
+ leftForearm: { width: 58, height: 135 },
126
+ leftHand: { width: 91, height: 81 },
127
+ rightUpperArm: { width: 83, height: 203 },
128
+ rightForearm: { width: 59, height: 137 },
129
+ rightHand: { width: 91, height: 81 },
130
+ leftThigh: { width: 111, height: 198 },
131
+ leftLeg: { width: 184, height: 137 },
132
+ rightThigh: { width: 80, height: 166 },
133
+ rightLeg: { width: 184, height: 137 },
134
+ },
135
+ };
136
+ }
137
+ // ─── Tests ───────────────────────────────────────────────────────────────────
138
+ function runTests() {
139
+ const valid = buildValidCharacter();
140
+ // ── Valid character ───────────────────────────────────────────────────────
141
+ console.log('\n--- Valid character ---');
142
+ {
143
+ const r = validateCharacter(valid);
144
+ assert(r.valid === true, 'valid character: valid = true');
145
+ assert(errors(r).length === 0, 'valid character: zero errors');
146
+ assert(warnings(r).length === 0, 'valid character: zero warnings');
147
+ }
148
+ // ── Bad input ─────────────────────────────────────────────────────────────
149
+ console.log('\n--- Bad input format ---');
150
+ {
151
+ const r = validateCharacter(null);
152
+ assert(r.valid === false, 'null: invalid');
153
+ assert(errors(r).length > 0, 'null: has errors');
154
+ }
155
+ {
156
+ const r = validateCharacter('string');
157
+ assert(r.valid === false, 'string: invalid');
158
+ }
159
+ // ── Body parts (imagePaths) ───────────────────────────────────────────────
160
+ console.log('\n--- Body parts (imagePaths) ---');
161
+ {
162
+ // All 12 body parts flagged when imagePaths removed
163
+ const r = validateCharacter(del(valid, 'imagePaths'));
164
+ for (const part of REQUIRED_BODY_PARTS) {
165
+ assert(hasError(r, `imagePaths.${part}`), `missing imagePaths → error for ${part}`);
166
+ }
167
+ }
168
+ {
169
+ // Single missing part
170
+ const r = validateCharacter(del(valid, 'imagePaths.head'));
171
+ assert(hasError(r, 'imagePaths.head'), 'missing imagePaths.head → error');
172
+ assert(!hasError(r, 'imagePaths.torso'), 'imagePaths.torso still present → no error');
173
+ }
174
+ {
175
+ // [MEDIA_REMOVED] treated as missing
176
+ const r = validateCharacter(set(valid, 'imagePaths.torso', '[MEDIA_REMOVED]'));
177
+ assert(hasError(r, 'imagePaths.torso'), '[MEDIA_REMOVED] torso → error');
178
+ }
179
+ {
180
+ // Empty string treated as missing
181
+ const r = validateCharacter(set(valid, 'imagePaths.leftHand', ''));
182
+ assert(hasError(r, 'imagePaths.leftHand'), 'empty string leftHand → error');
183
+ }
184
+ // ── Pivot points ──────────────────────────────────────────────────────────
185
+ console.log('\n--- Pivot points ---');
186
+ {
187
+ const r = validateCharacter(del(valid, 'pivotPoints'));
188
+ for (const key of REQUIRED_PIVOT_POINTS) {
189
+ assert(hasError(r, `pivotPoints.${key}`), `missing pivotPoints → error for ${key}`);
190
+ }
191
+ }
192
+ {
193
+ const r = validateCharacter(del(valid, 'pivotPoints.torso_head'));
194
+ assert(hasError(r, 'pivotPoints.torso_head'), 'missing torso_head → error');
195
+ }
196
+ {
197
+ // Non-numeric x
198
+ const r = validateCharacter(set(valid, 'pivotPoints.root_torso', { x: 'bad', y: -62 }));
199
+ assert(hasError(r, 'pivotPoints.root_torso'), 'non-numeric pivot x → error');
200
+ }
201
+ {
202
+ // Not an object
203
+ const r = validateCharacter(set(valid, 'pivotPoints.head_mouth', 42));
204
+ assert(hasError(r, 'pivotPoints.head_mouth'), 'pivot is a number, not object → error');
205
+ }
206
+ // ── Z-index values ────────────────────────────────────────────────────────
207
+ console.log('\n--- Z-index values ---');
208
+ {
209
+ const r = validateCharacter(del(valid, 'zIndexValues'));
210
+ for (const part of REQUIRED_Z_INDEX_PARTS) {
211
+ assert(hasError(r, `zIndexValues.${part}`), `missing zIndexValues → error for ${part}`);
212
+ }
213
+ }
214
+ {
215
+ const r = validateCharacter(del(valid, 'zIndexValues.mouth'));
216
+ assert(hasError(r, 'zIndexValues.mouth'), 'missing zIndexValues.mouth → error');
217
+ }
218
+ // ── Z-index ordering ──────────────────────────────────────────────────────
219
+ console.log('\n--- Z-index ordering ---');
220
+ {
221
+ // leftEyeLid must be > leftIris
222
+ let r = validateCharacter(set(valid, 'zIndexValues.leftEyeLid', 13)); // equal to leftIris
223
+ assert(hasError(r, 'zIndexValues'), 'leftEyeLid = leftIris → ordering error');
224
+ r = validateCharacter(set(valid, 'zIndexValues.leftEyeLid', 12)); // below leftIris
225
+ assert(hasError(r, 'zIndexValues'), 'leftEyeLid < leftIris → ordering error');
226
+ }
227
+ {
228
+ // leftIris must be > leftEye
229
+ const r = validateCharacter(set(valid, 'zIndexValues.leftIris', 11)); // = leftEye(12)? no, leftEye=12, set leftIris=11 → 11 < 12
230
+ assert(hasError(r, 'zIndexValues'), 'leftIris < leftEye → ordering error');
231
+ }
232
+ {
233
+ // rightEyeLid must be > rightIris > rightEye
234
+ const r = validateCharacter(set(valid, 'zIndexValues.rightIris', 3)); // = rightEye
235
+ assert(hasError(r, 'zIndexValues'), 'rightIris = rightEye → ordering error');
236
+ }
237
+ {
238
+ // mouth must be > head
239
+ const r = validateCharacter(set(valid, 'zIndexValues.mouth', 9)); // = head
240
+ assert(hasError(r, 'zIndexValues'), 'mouth = head → ordering error');
241
+ }
242
+ {
243
+ // Correct ordering does not raise error
244
+ const r = validateCharacter(valid);
245
+ assert(!hasError(r, 'zIndexValues'), 'correct z-order → no ordering error');
246
+ }
247
+ // ── Eyes ─────────────────────────────────────────────────────────────────
248
+ console.log('\n--- Eyes ---');
249
+ {
250
+ const r = validateCharacter(del(valid, 'eyes'));
251
+ for (const img of REQUIRED_EYE_IMAGES) {
252
+ assert(hasError(r, `eyes.${img}`), `missing eyes → error for eyes.${img}`);
253
+ }
254
+ for (const coord of REQUIRED_EYE_COORDS) {
255
+ assert(hasError(r, `eyes.${coord}`), `missing eyes → error for eyes.${coord}`);
256
+ }
257
+ for (const sz of REQUIRED_IRIS_SIZES) {
258
+ assert(hasError(r, `eyes.${sz}`), `missing eyes → error for eyes.${sz}`);
259
+ }
260
+ }
261
+ {
262
+ const r = validateCharacter(set(valid, 'eyes.leftEyeLidOpen', '[MEDIA_REMOVED]'));
263
+ assert(hasError(r, 'eyes.leftEyeLidOpen'), '[MEDIA_REMOVED] leftEyeLidOpen → error');
264
+ }
265
+ {
266
+ const r = validateCharacter(del(valid, 'eyes.rightEyeLidClosed'));
267
+ assert(hasError(r, 'eyes.rightEyeLidClosed'), 'missing rightEyeLidClosed → error');
268
+ }
269
+ {
270
+ const r = validateCharacter(set(valid, 'eyes.leftIrisXCoor', 'bad'));
271
+ assert(hasError(r, 'eyes.leftIrisXCoor'), 'string leftIrisXCoor → error');
272
+ }
273
+ {
274
+ const r = validateCharacter(del(valid, 'eyes.leftIrisWidth'));
275
+ assert(hasError(r, 'eyes.leftIrisWidth'), 'missing leftIrisWidth → error');
276
+ }
277
+ {
278
+ const r = validateCharacter(set(valid, 'eyes.rightIrisHeight', 0));
279
+ assert(hasError(r, 'eyes.rightIrisHeight'), 'zero rightIrisHeight → error');
280
+ }
281
+ // ── Eye sockets ───────────────────────────────────────────────────────────
282
+ console.log('\n--- Eye sockets ---');
283
+ {
284
+ const r = validateCharacter(del(valid, 'eyeSockets'));
285
+ assert(hasError(r, 'eyeSockets.left'), 'missing eyeSockets → left error');
286
+ assert(hasError(r, 'eyeSockets.right'), 'missing eyeSockets → right error');
287
+ }
288
+ {
289
+ const r = validateCharacter(set(valid, 'eyeSockets.left', [{ x: 1, y: 2 }, { x: 3, y: 4 }]));
290
+ assert(hasError(r, 'eyeSockets.left'), '2-point left socket → error');
291
+ }
292
+ {
293
+ const r = validateCharacter(set(valid, 'eyeSockets.right', [{ x: 1 }, { x: 2, y: 3 }, { x: 4, y: 5 }]));
294
+ assert(hasError(r, 'eyeSockets.right'), 'point missing y → error');
295
+ }
296
+ // ── Mouth ─────────────────────────────────────────────────────────────────
297
+ console.log('\n--- Mouth ---');
298
+ {
299
+ const r = validateCharacter(del(valid, 'mouth.closed'));
300
+ assert(hasError(r, 'mouth.closed'), 'missing mouth.closed → error');
301
+ }
302
+ {
303
+ const r = validateCharacter(set(valid, 'mouth.closed', '[MEDIA_REMOVED]'));
304
+ assert(hasError(r, 'mouth.closed'), '[MEDIA_REMOVED] mouth.closed → error');
305
+ }
306
+ {
307
+ const r = validateCharacter(del(valid, 'mouth.xCoor'));
308
+ assert(hasError(r, 'mouth.xCoor'), 'missing mouth.xCoor → error');
309
+ }
310
+ {
311
+ const r = validateCharacter(set(valid, 'mouth.yCoor', 'bad'));
312
+ assert(hasError(r, 'mouth.yCoor'), 'string mouth.yCoor → error');
313
+ }
314
+ {
315
+ // Remove size, width, height all — no sizing info
316
+ let c = del(valid, 'mouth.size');
317
+ c = del(c, 'mouth.width');
318
+ c = del(c, 'mouth.height');
319
+ const r = validateCharacter(c);
320
+ assert(hasError(r, 'mouth'), 'no mouth size/width/height → error');
321
+ }
322
+ {
323
+ // width+height without size is enough
324
+ const c = del(valid, 'mouth.size');
325
+ const r = validateCharacter(c);
326
+ assert(!hasError(r, 'mouth'), 'width+height without size → no size error');
327
+ }
328
+ {
329
+ // size alone without width/height is enough
330
+ let c = del(valid, 'mouth.width');
331
+ c = del(c, 'mouth.height');
332
+ const r = validateCharacter(c);
333
+ assert(!hasError(r, 'mouth'), 'size alone → no size error');
334
+ }
335
+ // ── Dimension values ──────────────────────────────────────────────────────
336
+ console.log('\n--- Dimension values ---');
337
+ {
338
+ const r = validateCharacter(del(valid, 'dimensionValues'));
339
+ for (const part of REQUIRED_DIMENSION_PARTS) {
340
+ assert(hasError(r, `dimensionValues.${part}`), `missing dimensionValues → error for ${part}`);
341
+ }
342
+ }
343
+ {
344
+ const r = validateCharacter(set(valid, 'dimensionValues.head', { width: 0, height: 437 }));
345
+ assert(hasError(r, 'dimensionValues.head'), 'zero width head → error');
346
+ }
347
+ {
348
+ const r = validateCharacter(del(valid, 'dimensionValues.mouth'));
349
+ assert(hasError(r, 'dimensionValues.mouth'), 'missing dimensionValues.mouth → error');
350
+ }
351
+ // ── Warnings ──────────────────────────────────────────────────────────────
352
+ console.log('\n--- Warnings ---');
353
+ {
354
+ // Head pivot above torso root → warning
355
+ const c = set(valid, 'pivotPoints.torso_head', { x: 40, y: 50 }); // y=50 > root_torso.y=-62
356
+ const r = validateCharacter(c);
357
+ assert(hasWarning(r, 'pivotPoints.torso_head'), 'head pivot above torso root → warning');
358
+ assert(r.valid === true, 'warning does not make character invalid');
359
+ }
360
+ {
361
+ // No talking mouths → warning
362
+ let c = clone(valid);
363
+ for (const shape of TALKING_MOUTH_SHAPES) {
364
+ c = del(c, `mouth.${shape}`);
365
+ }
366
+ const r = validateCharacter(c);
367
+ assert(hasWarning(r, 'mouth'), 'no talking mouth shapes → warning');
368
+ assert(r.valid === true, 'warning-only character is still valid');
369
+ }
370
+ {
371
+ // Warnings with valid pivot do not fire
372
+ const r = validateCharacter(valid);
373
+ assert(!hasWarning(r, 'pivotPoints.torso_head'), 'correct pivot → no pivot warning');
374
+ assert(!hasWarning(r, 'mouth'), 'has talking mouths → no mouth warning');
375
+ }
376
+ // ── valid flag semantics ───────────────────────────────────────────────────
377
+ console.log('\n--- valid flag semantics ---');
378
+ {
379
+ // Errors make valid = false
380
+ const r = validateCharacter(del(valid, 'imagePaths.head'));
381
+ assert(r.valid === false, 'errors make valid = false');
382
+ }
383
+ {
384
+ // Warnings alone keep valid = true
385
+ const c = set(valid, 'pivotPoints.torso_head', { x: 40, y: 50 });
386
+ const r = validateCharacter(c);
387
+ assert(r.valid === true, 'warnings alone keep valid = true');
388
+ }
389
+ // ── Functional: EyeSystem ────────────────────────────────────────────────
390
+ console.log('\n--- Functional: EyeSystem ---');
391
+ {
392
+ // Instantiates without throwing
393
+ const eyeSystem = new EyeSystem('test', {
394
+ leftIrisXCoor: -4, leftIrisYCoor: -188,
395
+ rightIrisXCoor: 119, rightIrisYCoor: -200,
396
+ });
397
+ assert(eyeSystem !== null, 'EyeSystem instantiates');
398
+ // State is open at t=0
399
+ eyeSystem.resetTiming(0);
400
+ eyeSystem.updateBlinking(0);
401
+ assert(eyeSystem.getEyelidState() === 'open', 'eyelid open at t=0');
402
+ // Blink triggers by t=6 (interval max is 5s)
403
+ eyeSystem.updateBlinking(6.0);
404
+ const stateAt6 = eyeSystem.getEyelidState();
405
+ assert(stateAt6 === 'half-closed' || stateAt6 === 'closed', `blink triggered by t=6 (state: ${stateAt6})`);
406
+ // Direction: center returns to base
407
+ eyeSystem.setEyeDirection('center');
408
+ const center = eyeSystem.getIrisPositions();
409
+ assert(center.left.x === -4, 'center direction: left iris at base x');
410
+ // Direction: left moves iris left
411
+ eyeSystem.setEyeDirection('left');
412
+ const leftPos = eyeSystem.getIrisPositions();
413
+ assert(leftPos.left.x < center.left.x, 'left direction: iris moves left');
414
+ // Direction: right moves iris right
415
+ eyeSystem.setEyeDirection('right');
416
+ const rightPos = eyeSystem.getIrisPositions();
417
+ assert(rightPos.left.x > center.left.x, 'right direction: iris moves right');
418
+ // Left and right iris start at different x positions (not on top of each other)
419
+ eyeSystem.setEyeDirection('center');
420
+ const pos = eyeSystem.getIrisPositions();
421
+ assert(pos.left.x !== pos.right.x, 'left and right iris have different base x');
422
+ }
423
+ // ── Functional: MouthSystem ───────────────────────────────────────────────
424
+ console.log('\n--- Functional: MouthSystem ---');
425
+ {
426
+ const rigData = valid;
427
+ // extractMouthShapesFromRigData returns multiple shapes for valid character
428
+ const shapes = extractMouthShapesFromRigData(rigData);
429
+ assert(shapes.length >= 2, `extractMouthShapesFromRigData returns ≥2 shapes (got ${shapes.length})`);
430
+ assert(shapes.includes('closed'), 'extracted shapes include closed');
431
+ // MouthSystem instantiates and starts closed
432
+ const mouth = new MouthSystem('test', new Set(shapes));
433
+ assert(mouth.getCurrentMouth() === 'closed', 'MouthSystem starts closed');
434
+ // updateFromViseme moves away from closed
435
+ mouth.updateFromViseme('F'); // maps to 'f' or similar open shape
436
+ // It may stay closed if the mapped shape isn't available; just check no throw
437
+ assert(mouth.getCurrentMouth() !== undefined, 'updateFromViseme does not throw');
438
+ // reset returns to closed
439
+ mouth.reset();
440
+ assert(mouth.getCurrentMouth() === 'closed', 'reset() returns to closed');
441
+ }
442
+ printSummary();
443
+ }
444
+ runTests();
445
+ //# sourceMappingURL=test-character-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-character-validator.js","sourceRoot":"","sources":["../../tests/test-character-validator.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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/types.d.ts CHANGED
File without changes
File without changes
package/dist/types.js CHANGED
File without changes
package/dist/types.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "distark-render",
3
- "version": "1.1.11",
3
+ "version": "1.1.12",
4
4
  "description": "Rendering-agnostic character rig system with TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/modules/renderRig.js",
@@ -34,6 +34,10 @@
34
34
  "types": "./dist/modules/adapters/skiaRenderer.d.ts",
35
35
  "import": "./dist/modules/adapters/skiaRenderer.js"
36
36
  },
37
+ "./characterValidator": {
38
+ "types": "./dist/modules/characterValidator.d.ts",
39
+ "import": "./dist/modules/characterValidator.js"
40
+ },
37
41
  "./animationDiff": {
38
42
  "types": "./dist/modules/animationDiff.d.ts",
39
43
  "import": "./dist/modules/animationDiff.js"
@@ -57,6 +61,8 @@
57
61
  "distark-check": "./dist/cli/distark-check.js"
58
62
  },
59
63
  "scripts": {
64
+ "install-cli": "npm run build && if [ -d \"$HOME/bin\" ]; then rm -f $HOME/bin/distark-check && printf '#!/bin/sh\\nexec node %s/dist/cli/distark-check.js \"$@\"\\n' $(pwd) > $HOME/bin/distark-check && chmod +x $HOME/bin/distark-check && echo 'Installed to ~/bin/distark-check'; else echo '~/bin not found, skipping install'; fi",
65
+ "install-cli": "npm run build && printf '#!/bin/sh\\nexec node %s/dist/cli/distark-check.js \"$@\"\\n' $(pwd) > $HOME/bin/distark-check && chmod +x $HOME/bin/distark-check",
60
66
  "build": "tsc",
61
67
  "check": "node dist/cli/distark-check.js",
62
68
  "test-cli": "npm run build && node dist/tests/test-cli.js",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-scene-object-svg-rerasterization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-scene-object-svg-rerasterization.d.ts","sourceRoot":"","sources":["../../tests/test-scene-object-svg-rerasterization.ts"],"names":[],"mappings":""}