@lovelace_lol/embody 0.0.1 → 0.0.3

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.
@@ -59,20 +59,20 @@ export class RuntimeCore {
59
59
  * continuum pairs) happens here, inside the core.
60
60
  */
61
61
  configure(profile_json: string, model_json: string): void;
62
- /**
63
- * Configure from a complete profile without applying an embedded preset.
64
- *
65
- * This path is intentionally strict so a host cannot accidentally select
66
- * exact mode for an incomplete custom profile and silently get an inert
67
- * runtime. Preset fallback remains an explicit host decision.
68
- */
69
- configure_exact_profile(profile_json: string, model_json: string): void;
70
62
  /**
71
63
  * Configure from an embedded preset id + optional override JSON + model
72
64
  * descriptor JSON. The CC4 (etc.) preset data lives in the Wasm core;
73
65
  * hosts only pass the preset id and overrides.
74
66
  */
75
67
  configure_with_preset(preset_id: string, override_json: string, model_json: string): void;
68
+ /**
69
+ * Configure from a resolved profile without applying an embedded preset.
70
+ *
71
+ * This path is intentionally strict so a host cannot accidentally select
72
+ * a profile that has no usable runtime bindings. Preset fallback remains
73
+ * an explicit host decision.
74
+ */
75
+ configure_with_profile(profile_json: string, model_json: string): void;
76
76
  /**
77
77
  * Packed bone FrameDelta rows: `[bone_id, px, py, pz, qx, qy, qz, qw, flags] * N`
78
78
  * flags: bit0 = has_position, bit1 = has_rotation. Mirrors
@@ -408,8 +408,8 @@ export interface InitOutput {
408
408
  readonly runtimecore_clear: (a: number) => void;
409
409
  readonly runtimecore_clear_transitions: (a: number) => void;
410
410
  readonly runtimecore_configure: (a: number, b: number, c: number, d: number, e: number) => [number, number];
411
- readonly runtimecore_configure_exact_profile: (a: number, b: number, c: number, d: number, e: number) => [number, number];
412
411
  readonly runtimecore_configure_with_preset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
412
+ readonly runtimecore_configure_with_profile: (a: number, b: number, c: number, d: number, e: number) => [number, number];
413
413
  readonly runtimecore_evaluate_bone_frame_delta: (a: number) => [number, number];
414
414
  readonly runtimecore_evaluate_morph_frame_delta: (a: number) => [number, number];
415
415
  readonly runtimecore_get_au: (a: number, b: number) => number;
@@ -435,39 +435,6 @@ export interface InitOutput {
435
435
  readonly runtimecore_update: (a: number, b: number) => number;
436
436
  readonly runtimecore_viseme_morph_binding_stride: () => number;
437
437
  readonly runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
438
- readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
439
- readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
440
- readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
441
- readonly compile_clip: (a: number, b: number) => [number, number, number, number];
442
- readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
443
- readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
444
- readonly has_preset: (a: number, b: number) => number;
445
- readonly list_presets: () => [number, number];
446
- readonly merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
447
- readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
448
- readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
449
- readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
450
- readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
451
- readonly marker_endpoint_stride: () => number;
452
- readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
453
- readonly mesh_proportions_stride: () => number;
454
- readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
455
- readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
456
- readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
457
- readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
458
- readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
459
- readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
460
- readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
461
- readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
462
- readonly solve_bilateral_values: (a: number, b: number) => [number, number];
463
- readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
464
- readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
465
- readonly template_skeleton_fit_solution_stride: () => number;
466
- readonly marker_visibility_factors_stride: () => number;
467
- readonly core_abi_version: () => number;
468
- readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
469
- readonly packed_bone_frame_delta_stride: () => number;
470
- readonly packed_morph_frame_delta_stride: () => number;
471
438
  readonly __wbg_cameraflight_free: (a: number, b: number) => void;
472
439
  readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
473
440
  readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
@@ -479,6 +446,7 @@ export interface InitOutput {
479
446
  readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
480
447
  readonly cameraorbit_sample: (a: number, b: number) => [number, number];
481
448
  readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
449
+ readonly core_abi_version: () => number;
482
450
  readonly default_hair_physics_config_values: () => [number, number];
483
451
  readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
484
452
  readonly hair_config_stride: () => number;
@@ -492,13 +460,45 @@ export interface InitOutput {
492
460
  readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
493
461
  readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
494
462
  readonly normalize_camera_angle_degrees: (a: number) => number;
463
+ readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
464
+ readonly packed_bone_frame_delta_stride: () => number;
495
465
  readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
496
466
  readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
497
467
  readonly solve_focus_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
498
468
  readonly solve_full_body_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
499
469
  readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
500
470
  readonly camera_flight_sample_stride: () => number;
471
+ readonly packed_morph_frame_delta_stride: () => number;
501
472
  readonly template_skeleton_fit_transform_stride: () => number;
473
+ readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
474
+ readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
475
+ readonly marker_endpoint_stride: () => number;
476
+ readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
477
+ readonly mesh_proportions_stride: () => number;
478
+ readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
479
+ readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
480
+ readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
481
+ readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
482
+ readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
483
+ readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
484
+ readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
485
+ readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
486
+ readonly solve_bilateral_values: (a: number, b: number) => [number, number];
487
+ readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
488
+ readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
489
+ readonly template_skeleton_fit_solution_stride: () => number;
490
+ readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
491
+ readonly marker_visibility_factors_stride: () => number;
492
+ readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
493
+ readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
494
+ readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
495
+ readonly compile_clip: (a: number, b: number) => [number, number, number, number];
496
+ readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
497
+ readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
498
+ readonly has_preset: (a: number, b: number) => number;
499
+ readonly list_presets: () => [number, number];
500
+ readonly merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
501
+ readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
502
502
  readonly __wbindgen_externrefs: WebAssembly.Table;
503
503
  readonly __wbindgen_malloc: (a: number, b: number) => number;
504
504
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
@@ -230,25 +230,6 @@ export class RuntimeCore {
230
230
  throw takeFromExternrefTable0(ret[0]);
231
231
  }
232
232
  }
233
- /**
234
- * Configure from a complete profile without applying an embedded preset.
235
- *
236
- * This path is intentionally strict so a host cannot accidentally select
237
- * exact mode for an incomplete custom profile and silently get an inert
238
- * runtime. Preset fallback remains an explicit host decision.
239
- * @param {string} profile_json
240
- * @param {string} model_json
241
- */
242
- configure_exact_profile(profile_json, model_json) {
243
- const ptr0 = passStringToWasm0(profile_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
244
- const len0 = WASM_VECTOR_LEN;
245
- const ptr1 = passStringToWasm0(model_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
246
- const len1 = WASM_VECTOR_LEN;
247
- const ret = wasm.runtimecore_configure_exact_profile(this.__wbg_ptr, ptr0, len0, ptr1, len1);
248
- if (ret[1]) {
249
- throw takeFromExternrefTable0(ret[0]);
250
- }
251
- }
252
233
  /**
253
234
  * Configure from an embedded preset id + optional override JSON + model
254
235
  * descriptor JSON. The CC4 (etc.) preset data lives in the Wasm core;
@@ -269,6 +250,25 @@ export class RuntimeCore {
269
250
  throw takeFromExternrefTable0(ret[0]);
270
251
  }
271
252
  }
253
+ /**
254
+ * Configure from a resolved profile without applying an embedded preset.
255
+ *
256
+ * This path is intentionally strict so a host cannot accidentally select
257
+ * a profile that has no usable runtime bindings. Preset fallback remains
258
+ * an explicit host decision.
259
+ * @param {string} profile_json
260
+ * @param {string} model_json
261
+ */
262
+ configure_with_profile(profile_json, model_json) {
263
+ const ptr0 = passStringToWasm0(profile_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
264
+ const len0 = WASM_VECTOR_LEN;
265
+ const ptr1 = passStringToWasm0(model_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
266
+ const len1 = WASM_VECTOR_LEN;
267
+ const ret = wasm.runtimecore_configure_with_profile(this.__wbg_ptr, ptr0, len0, ptr1, len1);
268
+ if (ret[1]) {
269
+ throw takeFromExternrefTable0(ret[0]);
270
+ }
271
+ }
272
272
  /**
273
273
  * Packed bone FrameDelta rows: `[bone_id, px, py, pz, qx, qy, qz, qw, flags] * N`
274
274
  * flags: bit0 = has_position, bit1 = has_rotation. Mirrors
Binary file
@@ -7,8 +7,8 @@ export const runtimecore_au_morph_binding_stride: () => number;
7
7
  export const runtimecore_clear: (a: number) => void;
8
8
  export const runtimecore_clear_transitions: (a: number) => void;
9
9
  export const runtimecore_configure: (a: number, b: number, c: number, d: number, e: number) => [number, number];
10
- export const runtimecore_configure_exact_profile: (a: number, b: number, c: number, d: number, e: number) => [number, number];
11
10
  export const runtimecore_configure_with_preset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
11
+ export const runtimecore_configure_with_profile: (a: number, b: number, c: number, d: number, e: number) => [number, number];
12
12
  export const runtimecore_evaluate_bone_frame_delta: (a: number) => [number, number];
13
13
  export const runtimecore_evaluate_morph_frame_delta: (a: number) => [number, number];
14
14
  export const runtimecore_get_au: (a: number, b: number) => number;
@@ -34,39 +34,6 @@ export const runtimecore_transition_viseme: (a: number, b: number, c: number, d:
34
34
  export const runtimecore_update: (a: number, b: number) => number;
35
35
  export const runtimecore_viseme_morph_binding_stride: () => number;
36
36
  export const runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
37
- export const build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
38
- export const build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
39
- export const build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
40
- export const compile_clip: (a: number, b: number) => [number, number, number, number];
41
- export const compile_clip_curves: (a: number, b: number) => [number, number, number, number];
42
- export const get_preset_json: (a: number, b: number) => [number, number, number, number];
43
- export const has_preset: (a: number, b: number) => number;
44
- export const list_presets: () => [number, number];
45
- export const merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
46
- export const merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
47
- export const validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
48
- export const analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
49
- export const compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
50
- export const marker_endpoint_stride: () => number;
51
- export const marker_visibility_animation_factors: (a: number, b: number) => [number, number];
52
- export const mesh_proportions_stride: () => number;
53
- export const passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
54
- export const resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
55
- export const resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
56
- export const sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
57
- export const sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
58
- export const separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
59
- export const should_show_marker: (a: number, b: number, c: number, d: number) => number;
60
- export const solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
61
- export const solve_bilateral_values: (a: number, b: number) => [number, number];
62
- export const solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
63
- export const solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
64
- export const template_skeleton_fit_solution_stride: () => number;
65
- export const marker_visibility_factors_stride: () => number;
66
- export const core_abi_version: () => number;
67
- export const pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
68
- export const packed_bone_frame_delta_stride: () => number;
69
- export const packed_morph_frame_delta_stride: () => number;
70
37
  export const __wbg_cameraflight_free: (a: number, b: number) => void;
71
38
  export const __wbg_cameraorbit_free: (a: number, b: number) => void;
72
39
  export const __wbg_hairphysicssolver_free: (a: number, b: number) => void;
@@ -78,6 +45,7 @@ export const cameraorbit_duration_ms: (a: number) => number;
78
45
  export const cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
79
46
  export const cameraorbit_sample: (a: number, b: number) => [number, number];
80
47
  export const compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
48
+ export const core_abi_version: () => number;
81
49
  export const default_hair_physics_config_values: () => [number, number];
82
50
  export const focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
83
51
  export const hair_config_stride: () => number;
@@ -91,13 +59,45 @@ export const hairphysicssolver_reset: (a: number) => void;
91
59
  export const hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
92
60
  export const hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
93
61
  export const normalize_camera_angle_degrees: (a: number) => number;
62
+ export const pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
63
+ export const packed_bone_frame_delta_stride: () => number;
94
64
  export const resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
95
65
  export const resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
96
66
  export const solve_focus_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
97
67
  export const solve_full_body_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
98
68
  export const world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
99
69
  export const camera_flight_sample_stride: () => number;
70
+ export const packed_morph_frame_delta_stride: () => number;
100
71
  export const template_skeleton_fit_transform_stride: () => number;
72
+ export const analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
73
+ export const compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
74
+ export const marker_endpoint_stride: () => number;
75
+ export const marker_visibility_animation_factors: (a: number, b: number) => [number, number];
76
+ export const mesh_proportions_stride: () => number;
77
+ export const passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
78
+ export const resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
79
+ export const resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
80
+ export const sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
81
+ export const sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
82
+ export const separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
83
+ export const should_show_marker: (a: number, b: number, c: number, d: number) => number;
84
+ export const solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
85
+ export const solve_bilateral_values: (a: number, b: number) => [number, number];
86
+ export const solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
87
+ export const solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
88
+ export const template_skeleton_fit_solution_stride: () => number;
89
+ export const validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
90
+ export const marker_visibility_factors_stride: () => number;
91
+ export const build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
92
+ export const build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
93
+ export const build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
94
+ export const compile_clip: (a: number, b: number) => [number, number, number, number];
95
+ export const compile_clip_curves: (a: number, b: number) => [number, number, number, number];
96
+ export const get_preset_json: (a: number, b: number) => [number, number, number, number];
97
+ export const has_preset: (a: number, b: number) => number;
98
+ export const list_presets: () => [number, number];
99
+ export const merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
100
+ export const merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
101
101
  export const __wbindgen_externrefs: WebAssembly.Table;
102
102
  export const __wbindgen_malloc: (a: number, b: number) => number;
103
103
  export const __wbindgen_free: (a: number, b: number, c: number) => void;
@@ -11,7 +11,7 @@ export interface WasmHairPhysicsSolverConstructor {
11
11
  }
12
12
  export interface WasmRuntimeCoreHandle {
13
13
  configure(profileJson: string, modelJson: string): void;
14
- configure_exact_profile(profileJson: string, modelJson: string): void;
14
+ configure_with_profile(profileJson: string, modelJson: string): void;
15
15
  configure_with_preset(presetId: string, overrideJson: string, modelJson: string): void;
16
16
  viseme_slot_index(slotId: string): number;
17
17
  set_au_signed(id: number, value: number, balance: number): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovelace_lol/embody",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Renderer-agnostic character animation runtime for facial AUs, visemes, and bone-driven motion",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -45,6 +45,7 @@
45
45
  "build": "tsup --config tsup.wasm.config.ts && tsup --config tsup.config.ts && tsc -p tsconfig.declarations.json && node scripts/export-preset-json.mjs --check && npm run wasm:build",
46
46
  "dev": "tsup --watch",
47
47
  "typecheck": "tsc --noEmit",
48
+ "pretest": "npm run wasm:build",
48
49
  "test": "vitest run",
49
50
  "test:watch": "vitest",
50
51
  "test:coverage": "vitest run --coverage",