@objectstack/metadata-fs 17.0.0-rc.0 → 17.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +708 -0
  2. package/package.json +6 -4
package/CHANGELOG.md ADDED
@@ -0,0 +1,708 @@
1
+ # @objectstack/metadata-fs
2
+
3
+ ## 17.0.0-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2e836de: chore(packaging): CHANGELOG.md ships in every npm tarball (#4261)
8
+
9
+ The AGENTS.md post-task checklist requires breaking changesets to carry their
10
+ FROM → TO migration because "this text ships to consumers as `CHANGELOG.md`
11
+ inside the npm package and is what an upgrading agent greps after the tombstone
12
+ error." That delivery path was severed for 68 of the 69 publishable packages:
13
+ npm packs `package.json` / `README*` / `LICENSE*` unconditionally but — unlike
14
+ older npm versions — not `CHANGELOG.md`, and the canonical
15
+ `"files": ["dist", "README.md"]` whitelist never named it. Measured on npm
16
+ 10.9.7: `npm pack --dry-run` on `@objectstack/types` shipped 3 files while its
17
+ 70KB `CHANGELOG.md` stayed behind. Only `@objectstack/spec` listed it
18
+ explicitly.
19
+
20
+ The tombstone-error scenario is precisely the one where the repo is out of
21
+ reach — the upgrading agent has `node_modules` and nothing else — so the
22
+ migration text has to ride in the tarball. Every publishable package now
23
+ declares `CHANGELOG.md` in `files`, and the canonical whitelist is
24
+ `["dist", "README.md", "CHANGELOG.md"]`.
25
+
26
+ The other half is the gate: `check:published-files` gains a fifth invariant,
27
+ COMPLETE — a whitelist that fails to cover `CHANGELOG.md` fails the
28
+ always-required lint job, so the next package cannot silently sever the path
29
+ again. `@objectstack/spec`'s per-package EXTRA_ENTRIES exemption dissolves
30
+ into the canonical set.
31
+
32
+ Consumer-visible change: one more file per install (the package's changelog,
33
+ e.g. 70.8KB for `@objectstack/types`), and `grep -r "removed key"
34
+ node_modules/@objectstack/*/CHANGELOG.md` now finds the migration it was
35
+ promised.
36
+
37
+ - Updated dependencies [f5a4ef0]
38
+ - Updated dependencies [2e836de]
39
+ - @objectstack/metadata-core@17.0.0-rc.1
40
+
41
+ ## 17.0.0-rc.0
42
+
43
+ ### Patch Changes
44
+
45
+ - Updated dependencies [db48ad5]
46
+ - Updated dependencies [c073b8c]
47
+ - @objectstack/metadata-core@17.0.0-rc.0
48
+
49
+ ## 16.1.0
50
+
51
+ ### Patch Changes
52
+
53
+ - @objectstack/metadata-core@16.1.0
54
+
55
+ ## 16.0.0
56
+
57
+ ### Patch Changes
58
+
59
+ - Updated dependencies [62a2117]
60
+ - Updated dependencies [06cb319]
61
+ - @objectstack/metadata-core@16.0.0
62
+
63
+ ## 16.0.0-rc.1
64
+
65
+ ### Patch Changes
66
+
67
+ - Updated dependencies [62a2117]
68
+ - @objectstack/metadata-core@16.0.0-rc.1
69
+
70
+ ## 16.0.0-rc.0
71
+
72
+ ### Patch Changes
73
+
74
+ - Updated dependencies [06cb319]
75
+ - @objectstack/metadata-core@16.0.0-rc.0
76
+
77
+ ## 15.1.1
78
+
79
+ ### Patch Changes
80
+
81
+ - @objectstack/metadata-core@15.1.1
82
+
83
+ ## 15.1.0
84
+
85
+ ### Patch Changes
86
+
87
+ - @objectstack/metadata-core@15.1.0
88
+
89
+ ## 15.0.0
90
+
91
+ ### Patch Changes
92
+
93
+ - @objectstack/metadata-core@15.0.0
94
+
95
+ ## 14.8.0
96
+
97
+ ### Patch Changes
98
+
99
+ - @objectstack/metadata-core@14.8.0
100
+
101
+ ## 14.7.0
102
+
103
+ ### Patch Changes
104
+
105
+ - @objectstack/metadata-core@14.7.0
106
+
107
+ ## 14.6.0
108
+
109
+ ### Patch Changes
110
+
111
+ - @objectstack/metadata-core@14.6.0
112
+
113
+ ## 14.5.0
114
+
115
+ ### Patch Changes
116
+
117
+ - @objectstack/metadata-core@14.5.0
118
+
119
+ ## 14.4.0
120
+
121
+ ### Patch Changes
122
+
123
+ - Updated dependencies [7953832]
124
+ - @objectstack/metadata-core@14.4.0
125
+
126
+ ## 14.3.0
127
+
128
+ ### Patch Changes
129
+
130
+ - @objectstack/metadata-core@14.3.0
131
+
132
+ ## 14.2.0
133
+
134
+ ### Patch Changes
135
+
136
+ - @objectstack/metadata-core@14.2.0
137
+
138
+ ## 14.1.0
139
+
140
+ ### Patch Changes
141
+
142
+ - @objectstack/metadata-core@14.1.0
143
+
144
+ ## 14.0.0
145
+
146
+ ### Patch Changes
147
+
148
+ - @objectstack/metadata-core@14.0.0
149
+
150
+ ## 13.0.0
151
+
152
+ ### Patch Changes
153
+
154
+ - @objectstack/metadata-core@13.0.0
155
+
156
+ ## 12.6.0
157
+
158
+ ### Patch Changes
159
+
160
+ - @objectstack/metadata-core@12.6.0
161
+
162
+ ## 12.5.0
163
+
164
+ ### Patch Changes
165
+
166
+ - @objectstack/metadata-core@12.5.0
167
+
168
+ ## 12.4.0
169
+
170
+ ### Patch Changes
171
+
172
+ - Updated dependencies [60dc3ba]
173
+ - @objectstack/metadata-core@12.4.0
174
+
175
+ ## 12.3.0
176
+
177
+ ### Patch Changes
178
+
179
+ - @objectstack/metadata-core@12.3.0
180
+
181
+ ## 12.2.0
182
+
183
+ ### Patch Changes
184
+
185
+ - Updated dependencies [da807f7]
186
+ - @objectstack/metadata-core@12.2.0
187
+
188
+ ## 12.1.0
189
+
190
+ ### Patch Changes
191
+
192
+ - @objectstack/metadata-core@12.1.0
193
+
194
+ ## 12.0.0
195
+
196
+ ### Patch Changes
197
+
198
+ - @objectstack/metadata-core@12.0.0
199
+
200
+ ## 11.10.0
201
+
202
+ ### Patch Changes
203
+
204
+ - @objectstack/metadata-core@11.10.0
205
+
206
+ ## 11.9.0
207
+
208
+ ### Patch Changes
209
+
210
+ - @objectstack/metadata-core@11.9.0
211
+
212
+ ## 11.8.0
213
+
214
+ ### Patch Changes
215
+
216
+ - @objectstack/metadata-core@11.8.0
217
+
218
+ ## 11.7.0
219
+
220
+ ### Patch Changes
221
+
222
+ - @objectstack/metadata-core@11.7.0
223
+
224
+ ## 11.6.0
225
+
226
+ ### Patch Changes
227
+
228
+ - @objectstack/metadata-core@11.6.0
229
+
230
+ ## 11.5.0
231
+
232
+ ### Patch Changes
233
+
234
+ - @objectstack/metadata-core@11.5.0
235
+
236
+ ## 11.4.0
237
+
238
+ ### Patch Changes
239
+
240
+ - @objectstack/metadata-core@11.4.0
241
+
242
+ ## 11.3.0
243
+
244
+ ### Patch Changes
245
+
246
+ - @objectstack/metadata-core@11.3.0
247
+
248
+ ## 11.2.0
249
+
250
+ ### Patch Changes
251
+
252
+ - @objectstack/metadata-core@11.2.0
253
+
254
+ ## 11.1.0
255
+
256
+ ### Patch Changes
257
+
258
+ - @objectstack/metadata-core@11.1.0
259
+
260
+ ## 11.0.0
261
+
262
+ ### Patch Changes
263
+
264
+ - Updated dependencies [4d99a5c]
265
+ - @objectstack/metadata-core@11.0.0
266
+
267
+ ## 10.3.0
268
+
269
+ ### Patch Changes
270
+
271
+ - @objectstack/metadata-core@10.3.0
272
+
273
+ ## 10.2.0
274
+
275
+ ### Patch Changes
276
+
277
+ - @objectstack/metadata-core@10.2.0
278
+
279
+ ## 10.1.0
280
+
281
+ ### Patch Changes
282
+
283
+ - @objectstack/metadata-core@10.1.0
284
+
285
+ ## 10.0.0
286
+
287
+ ### Patch Changes
288
+
289
+ - @objectstack/metadata-core@10.0.0
290
+
291
+ ## 9.11.0
292
+
293
+ ### Patch Changes
294
+
295
+ - @objectstack/metadata-core@9.11.0
296
+
297
+ ## 9.10.0
298
+
299
+ ### Patch Changes
300
+
301
+ - @objectstack/metadata-core@9.10.0
302
+
303
+ ## 9.9.1
304
+
305
+ ### Patch Changes
306
+
307
+ - @objectstack/metadata-core@9.9.1
308
+
309
+ ## 9.9.0
310
+
311
+ ### Patch Changes
312
+
313
+ - @objectstack/metadata-core@9.9.0
314
+
315
+ ## 9.8.0
316
+
317
+ ### Patch Changes
318
+
319
+ - @objectstack/metadata-core@9.8.0
320
+
321
+ ## 9.7.0
322
+
323
+ ### Patch Changes
324
+
325
+ - @objectstack/metadata-core@9.7.0
326
+
327
+ ## 9.6.0
328
+
329
+ ### Patch Changes
330
+
331
+ - @objectstack/metadata-core@9.6.0
332
+
333
+ ## 9.5.1
334
+
335
+ ### Patch Changes
336
+
337
+ - @objectstack/metadata-core@9.5.1
338
+
339
+ ## 9.5.0
340
+
341
+ ### Patch Changes
342
+
343
+ - @objectstack/metadata-core@9.5.0
344
+
345
+ ## 9.4.0
346
+
347
+ ### Patch Changes
348
+
349
+ - Updated dependencies [fef38ec]
350
+ - @objectstack/metadata-core@9.4.0
351
+
352
+ ## 9.3.0
353
+
354
+ ### Patch Changes
355
+
356
+ - @objectstack/metadata-core@9.3.0
357
+
358
+ ## 9.2.0
359
+
360
+ ### Patch Changes
361
+
362
+ - @objectstack/metadata-core@9.2.0
363
+
364
+ ## 9.1.0
365
+
366
+ ### Patch Changes
367
+
368
+ - @objectstack/metadata-core@9.1.0
369
+
370
+ ## 9.0.1
371
+
372
+ ### Patch Changes
373
+
374
+ - @objectstack/metadata-core@9.0.1
375
+
376
+ ## 9.0.0
377
+
378
+ ### Patch Changes
379
+
380
+ - @objectstack/metadata-core@9.0.0
381
+
382
+ ## 8.0.1
383
+
384
+ ### Patch Changes
385
+
386
+ - @objectstack/metadata-core@8.0.1
387
+
388
+ ## 8.0.0
389
+
390
+ ### Patch Changes
391
+
392
+ - @objectstack/metadata-core@8.0.0
393
+
394
+ ## 7.9.0
395
+
396
+ ### Patch Changes
397
+
398
+ - @objectstack/metadata-core@7.9.0
399
+
400
+ ## 7.8.0
401
+
402
+ ### Patch Changes
403
+
404
+ - @objectstack/metadata-core@7.8.0
405
+
406
+ ## 7.7.0
407
+
408
+ ### Patch Changes
409
+
410
+ - Updated dependencies [764c747]
411
+ - @objectstack/metadata-core@7.7.0
412
+
413
+ ## 7.6.0
414
+
415
+ ### Patch Changes
416
+
417
+ - @objectstack/metadata-core@7.6.0
418
+
419
+ ## 7.5.0
420
+
421
+ ### Patch Changes
422
+
423
+ - @objectstack/metadata-core@7.5.0
424
+
425
+ ## 7.4.1
426
+
427
+ ### Patch Changes
428
+
429
+ - @objectstack/metadata-core@7.4.1
430
+
431
+ ## 7.4.0
432
+
433
+ ### Patch Changes
434
+
435
+ - @objectstack/metadata-core@7.4.0
436
+
437
+ ## 7.3.0
438
+
439
+ ### Patch Changes
440
+
441
+ - @objectstack/metadata-core@7.3.0
442
+
443
+ ## 7.2.1
444
+
445
+ ### Patch Changes
446
+
447
+ - @objectstack/metadata-core@7.2.1
448
+
449
+ ## 7.2.0
450
+
451
+ ### Patch Changes
452
+
453
+ - @objectstack/metadata-core@7.2.0
454
+
455
+ ## 7.1.0
456
+
457
+ ### Patch Changes
458
+
459
+ - @objectstack/metadata-core@7.1.0
460
+
461
+ ## 7.0.0
462
+
463
+ ### Patch Changes
464
+
465
+ - @objectstack/metadata-core@7.0.0
466
+
467
+ ## 6.9.0
468
+
469
+ ### Patch Changes
470
+
471
+ - @objectstack/metadata-core@6.9.0
472
+
473
+ ## 6.8.1
474
+
475
+ ### Patch Changes
476
+
477
+ - @objectstack/metadata-core@6.8.1
478
+
479
+ ## 6.8.0
480
+
481
+ ### Patch Changes
482
+
483
+ - @objectstack/metadata-core@6.8.0
484
+
485
+ ## 6.7.1
486
+
487
+ ### Patch Changes
488
+
489
+ - @objectstack/metadata-core@6.7.1
490
+
491
+ ## 6.7.0
492
+
493
+ ### Patch Changes
494
+
495
+ - @objectstack/metadata-core@6.7.0
496
+
497
+ ## 6.6.0
498
+
499
+ ### Patch Changes
500
+
501
+ - @objectstack/metadata-core@6.6.0
502
+
503
+ ## 6.5.1
504
+
505
+ ### Patch Changes
506
+
507
+ - @objectstack/metadata-core@6.5.1
508
+
509
+ ## 6.5.0
510
+
511
+ ### Patch Changes
512
+
513
+ - @objectstack/metadata-core@6.5.0
514
+
515
+ ## 6.4.0
516
+
517
+ ### Patch Changes
518
+
519
+ - @objectstack/metadata-core@6.4.0
520
+
521
+ ## 6.3.0
522
+
523
+ ### Patch Changes
524
+
525
+ - @objectstack/metadata-core@6.3.0
526
+
527
+ ## 6.2.0
528
+
529
+ ### Patch Changes
530
+
531
+ - @objectstack/metadata-core@6.2.0
532
+
533
+ ## 6.1.1
534
+
535
+ ### Patch Changes
536
+
537
+ - @objectstack/metadata-core@6.1.1
538
+
539
+ ## 6.1.0
540
+
541
+ ### Patch Changes
542
+
543
+ - @objectstack/metadata-core@6.1.0
544
+
545
+ ## 6.0.0
546
+
547
+ ### Patch Changes
548
+
549
+ - @objectstack/metadata-core@6.0.0
550
+
551
+ ## 5.2.0
552
+
553
+ ### Patch Changes
554
+
555
+ - Updated dependencies [bab2b20]
556
+ - @objectstack/metadata-core@5.2.0
557
+
558
+ ## 5.1.0
559
+
560
+ ### Patch Changes
561
+
562
+ - 75f4ee6: feat(metadata): introduce `executionPinned` capability for runtime version pinning (ADR-0009)
563
+
564
+ Adds a new capability flag on the metadata type registry so that types whose runtime
565
+ transaction rows reference a specific historical version (flow, workflow, approval)
566
+ get unified pinning behavior — instead of every business table re-implementing its
567
+ own snapshot column.
568
+
569
+ - `MetadataTypeRegistryEntrySchema` gains `executionPinned: boolean`, enforced
570
+ invariant `executionPinned ⇒ supportsVersioning`.
571
+ - `flow`, `workflow`, `approval` flipped to `executionPinned: true`. `approval`
572
+ also corrected to `supportsVersioning: true` (it was wrongly `false`).
573
+ - `MetadataRepository.getByHash(ref, hash)` added to the interface. Production
574
+ implementation in `SysMetadataRepository` resolves historical bodies through
575
+ `sys_metadata_history` keyed by `(organization_id, type, name, checksum)`.
576
+ In-memory and FS repositories serve HEAD-only matches.
577
+ - `sys_metadata_history` gains an index on `(organization_id, type, name, checksum)`
578
+ to keep hash lookups O(log n).
579
+ - `HistoryCleanupManager` skips pinned types entirely (both age-based and
580
+ count-based retention) — pinned-type history must never be GC'd.
581
+
582
+ See `docs/adr/0009-execution-pinned-metadata.md` for full rationale and the
583
+ list of rejected alternatives (no shared snapshot table, no inlined snapshot column).
584
+
585
+ - Updated dependencies [75f4ee6]
586
+ - @objectstack/metadata-core@5.1.0
587
+
588
+ ## 5.0.0
589
+
590
+ ### Minor Changes
591
+
592
+ - 5e9dcb4: **BREAKING — metadata: remove `project` and `branch` from `MetaRef`**
593
+
594
+ The metadata layer no longer models project or branch. Customisation is now
595
+ scoped purely to **organisation**. Project remains exclusively as an artifact
596
+ packaging concept (the `objectstack.json` bundle envelope); branching is left
597
+ to Git.
598
+
599
+ What changed:
600
+
601
+ - `MetaRef` is now `{ org, type, name, version? }` (was
602
+ `{ org, project, branch, type, name, version? }`). `refKey()` is the two
603
+ segment string `${org}/${type}/${name}` (was five segments).
604
+ - `MetadataItem.seq` is monotonic **per org** (was per branch).
605
+ - `BranchRef`, `MergeStrategy`, `MergeResult` types and the optional
606
+ `fork`/`merge` methods on `MetadataRepository` are removed.
607
+ - `ListFilter` / `WatchFilter` / `HistoryOptions` no longer accept `project`
608
+ or `branch`.
609
+ - `FileSystemRepository` disk layout simplified to
610
+ `<root>/<type>/<name>.json` (was `<root>/<project>/<branch>/<type>/<name>.json`);
611
+ change-log path is now `.objectstack/.log/main.jsonl` regardless of any
612
+ branch concept. Constructor no longer accepts `project` / `branch`.
613
+ - `SysMetadataRepository`: removed `projectLabel` / `branchLabel` options;
614
+ the `sys_metadata` schema's `project_id` / `branch` columns (if present)
615
+ are ignored. A future major release will `DROP` them.
616
+ - `MetadataManager.setRepository(repo, opts)` no longer takes an opts object
617
+ with `branch`.
618
+
619
+ Migration:
620
+
621
+ ```diff
622
+ -const ref = { org: 'acme', project: 'crm', branch: 'main', type: 'view', name: 'home' };
623
+ +const ref = { org: 'acme', type: 'view', name: 'home' };
624
+
625
+ -new FileSystemRepository({ root, org: 'acme', project: 'crm', branch: 'main' });
626
+ +new FileSystemRepository({ root, org: 'acme' });
627
+ ```
628
+
629
+ Existing `sys_metadata` rows continue to load; the deprecated columns are
630
+ ignored at read time.
631
+
632
+ - 32ce912: Add `@objectstack/metadata-fs` — Node-only `FileSystemRepository`
633
+ implementation of the M0 Repository contract.
634
+
635
+ Layout:
636
+
637
+ ```
638
+ <root>/
639
+ <type>/<name>.json # canonical body (atomic rename writes)
640
+ .objectstack/.log/<branch>.jsonl # append-only change log
641
+ ```
642
+
643
+ Features:
644
+
645
+ - All 17 contract tests pass (`singleBranch: true`).
646
+ - Per-key serialization via `KeyedMutex`.
647
+ - Atomic writes via tmpfile + rename.
648
+ - Heads and `seq` recovered from the JSONL log on `start()` — survives
649
+ process restart.
650
+ - chokidar watcher translates external edits (e.g. VSCode saves) into
651
+ `MetadataEvent`s with `source: 'fs'`.
652
+ - Self-write suppression: 200ms window prevents the watcher from
653
+ re-emitting events for files we wrote ourselves.
654
+ - Manual `AsyncIterator` for `watch()` to mirror the in-memory pattern.
655
+
656
+ Also (`metadata-core`):
657
+
658
+ - Add `singleBranch` option to `runRepositoryContractTests` so
659
+ single-branch backends (like the FS one) skip the cross-branch test.
660
+ - Switch tsup `splitting: true` so `index.js` and `testing.js` share a
661
+ single `ConflictError` class identity (was double-bundled before).
662
+
663
+ See ADR-0008 §10 PR-4.
664
+
665
+ ### Patch Changes
666
+
667
+ - 96ad4df: Fix dev-mode HMR data-reload for `*.view.ts` / `*.flow.ts` source-file edits.
668
+
669
+ Three coordinated fixes close the long-standing gap where editing a
670
+ declarative-metadata source file in dev (e.g. `case.view.ts`) would
671
+ recompile `dist/objectstack.json` but the running server kept serving
672
+ the stale boot-time value:
673
+
674
+ 1. **`@objectstack/objectql`** — `ObjectStackProtocolImplementation.getMetaItem`
675
+ now consults `MetadataService` (HMR-aware) **before** the in-memory
676
+ `SchemaRegistry` (boot-time cache). Previously the registry shadowed
677
+ freshly-registered values: `manager.register('view','case',newDef)`
678
+ updated MetadataManager but `getMetaItem` returned the stale registry
679
+ copy because step 2 (registry) ran before step 3 (service). Reordered
680
+ to "1. sys_metadata overlay → 2. MetadataService → 3. SchemaRegistry".
681
+
682
+ 2. **`@objectstack/runtime`** — `createStandaloneStack` now enables the
683
+ `MetadataPlugin` artifact-file watcher in non-production environments
684
+ (`NODE_ENV !== 'production'`). Previously hard-coded to `watch: false`,
685
+ leaving nothing watching `dist/objectstack.json` when the CLI dev mode
686
+ recompiled it.
687
+
688
+ 3. **`@objectstack/metadata`** & **`@objectstack/metadata-fs`** — Both
689
+ chokidar watchers now use `usePolling: true` to avoid `fs.watch`
690
+ EMFILE on macOS / busy dev hosts where the native file-descriptor
691
+ pool can be exhausted by other long-running node processes.
692
+
693
+ With these three changes:
694
+
695
+ - CLI edits source → recompile artifact (~400ms)
696
+ - Server's polling chokidar detects artifact change → `_loadFromLocalFile`
697
+ - `_loadFromLocalFile` calls `manager.register(type, name, item)`
698
+ - MetadataService now has the fresh value
699
+ - Read path returns the fresh value via the new step-2 lookup
700
+ - Studio SSE listeners re-render
701
+
702
+ - Updated dependencies [5e9dcb4]
703
+ - Updated dependencies [4150fe4]
704
+ - Updated dependencies [8337cdb]
705
+ - Updated dependencies [58835a6]
706
+ - Updated dependencies [8cc30b4]
707
+ - Updated dependencies [32ce912]
708
+ - @objectstack/metadata-core@5.0.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/metadata-fs",
3
- "version": "17.0.0-rc.0",
3
+ "version": "17.0.0-rc.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "FileSystemRepository: Node-only Repository implementation backed by JSON files and a JSONL change log (ADR-0008).",
6
6
  "type": "module",
@@ -15,7 +15,8 @@
15
15
  },
16
16
  "files": [
17
17
  "dist",
18
- "README.md"
18
+ "README.md",
19
+ "CHANGELOG.md"
19
20
  ],
20
21
  "keywords": [
21
22
  "objectstack",
@@ -25,7 +26,7 @@
25
26
  ],
26
27
  "dependencies": {
27
28
  "chokidar": "^5.0.0",
28
- "@objectstack/metadata-core": "17.0.0-rc.0"
29
+ "@objectstack/metadata-core": "17.0.0-rc.1"
29
30
  },
30
31
  "devDependencies": {
31
32
  "@types/node": "^26.1.1",
@@ -52,6 +53,7 @@
52
53
  "dev": "tsc --watch",
53
54
  "clean": "rm -rf dist",
54
55
  "test": "vitest run",
55
- "test:watch": "vitest"
56
+ "test:watch": "vitest",
57
+ "typecheck": "tsc --noEmit"
56
58
  }
57
59
  }