@deessejs/type-testing 0.3.2 → 0.3.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.
package/README.md CHANGED
@@ -337,6 +337,117 @@ expect<string | null>().toBeNullable() // passes
337
337
  expect<string | undefined>().toBeOptional() // passes
338
338
  ```
339
339
 
340
+ ## Vitest Integration
341
+
342
+ The library provides a native Vitest integration with custom matchers for a more familiar testing experience.
343
+
344
+ ### Installation
345
+
346
+ ```bash
347
+ npm install @deessejs/type-testing
348
+ ```
349
+
350
+ ### Quick Start
351
+
352
+ ```typescript
353
+ import { expectType } from '@deessejs/type-testing/vitest'
354
+
355
+ // Type equality
356
+ expectType<string>().toBeType<string>()
357
+ expectType<string>().toNotBeType<number>()
358
+
359
+ // Type extends
360
+ expectType<string>().toExtend<string>()
361
+ expectType<string>().toNotExtend<number>()
362
+
363
+ // Property check
364
+ expectType<{ a: string }>().toHaveProperty('a')
365
+
366
+ // Special types
367
+ expectType<any>().toBeAny()
368
+ expectType<never>().toBeNever()
369
+ expectType<unknown>().toBeUnknown()
370
+ expectType<void>().toBeVoid()
371
+ expectType<undefined>().toBeUndefined()
372
+ expectType<null>().toBeNull()
373
+
374
+ // Nullable/Optional
375
+ expectType<string | null>().toBeNullable()
376
+ expectType<{ a?: string }>().toBeOptional()
377
+
378
+ // Structure
379
+ expectType<string | number>().toBeUnion()
380
+ expectType<[string, number]>().toBeTuple()
381
+ expectType<string[]>().toBeArray()
382
+
383
+ // Inhabitation
384
+ expectType<string>().toBeInhabited()
385
+ expectType<never>().toBeUninhabited()
386
+ ```
387
+
388
+ ### Using with Vitest's expect.extend
389
+
390
+ You can also extend Vitest's expect with the matchers:
391
+
392
+ ```typescript
393
+ import { expect, test } from 'vitest'
394
+ import { toBeType, toHaveProperty } from '@deessejs/type-testing/vitest'
395
+
396
+ expect.extend({ toBeType, toHaveProperty })
397
+
398
+ test('type checks', () => {
399
+ expect<string>().toBeType<string>()
400
+ expect<{ a: string }>().toHaveProperty('a')
401
+ })
402
+ ```
403
+
404
+ ### Setup File
405
+
406
+ For automatic matcher registration, add the setup file to your Vitest config:
407
+
408
+ ```typescript
409
+ // vitest.config.ts
410
+ import { defineConfig } from 'vitest/config'
411
+
412
+ export default defineConfig({
413
+ test: {
414
+ setupFiles: ['@deessejs/type-testing/vitest/setup']
415
+ }
416
+ })
417
+ ```
418
+
419
+ Or import it in your setup file:
420
+
421
+ ```typescript
422
+ // setup.ts
423
+ import '@deessejs/type-testing/vitest/setup'
424
+ ```
425
+
426
+ ### Available Matchers
427
+
428
+ | Matcher | Description |
429
+ |---------|-------------|
430
+ | `toBeType<T>()` | Asserts type equality |
431
+ | `toNotBeType<T>()` | Asserts type inequality |
432
+ | `toExtend<T>()` | Asserts type extends another |
433
+ | `toNotExtend<T>()` | Asserts type does not extend another |
434
+ | `toHaveProperty<K>()` | Asserts property exists |
435
+ | `toBeAny()` | Asserts type is `any` |
436
+ | `toBeNever()` | Asserts type is `never` |
437
+ | `toBeUnknown()` | Asserts type is `unknown` |
438
+ | `toBeVoid()` | Asserts type is `void` |
439
+ | `toBeUndefined()` | Asserts type is `undefined` |
440
+ | `toBeNull()` | Asserts type is `null` |
441
+ | `toBeNullable()` | Asserts type is nullable |
442
+ | `toBeOptional()` | Asserts type is optional |
443
+ | `toBeUnion()` | Asserts type is a union |
444
+ | `toBeTuple()` | Asserts type is a tuple |
445
+ | `toBeArray()` | Asserts type is an array |
446
+ | `toBeInhabited()` | Asserts type is inhabited |
447
+ | `toBeUninhabited()` | Asserts type is uninhabited |
448
+
449
+ > **Note**: The `toNotBeType` matcher follows a different pattern than standard Vitest (`not.toBeType`). This is intentional as it provides better TypeScript inference. Use `toNotBeType` instead of `.not.toBeType`.
450
+
340
451
  ## Compile-time Assertions
341
452
 
342
453
  ### ExpectTrue & ExpectEqual
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Vitest integration for type-testing.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { toBeType, toNotBeType, toExtend, toNotExtend, toHaveProperty, toBeAny, toBeNever, toBeUnknown, toBeVoid, toBeUndefined, toBeNull, toBeNullable, toBeOptional, toBeUnion, toBeTuple, toBeArray, toBeInhabited, toBeUninhabited, expectType } from './matchers.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vitest/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,SAAS,EACT,WAAW,EACX,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,eAAe,EACf,UAAU,EACX,MAAM,eAAe,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Vitest integration for type-testing.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { toBeType, toNotBeType, toExtend, toNotExtend, toHaveProperty, toBeAny, toBeNever, toBeUnknown, toBeVoid, toBeUndefined, toBeNull, toBeNullable, toBeOptional, toBeUnion, toBeTuple, toBeArray, toBeInhabited, toBeUninhabited, expectType } from './matchers.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vitest/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,SAAS,EACT,WAAW,EACX,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,eAAe,EACf,UAAU,EACX,MAAM,eAAe,CAAA"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Custom Vitest matchers for type testing.
3
+ */
4
+ import type { Equal, NotEqual } from '../types/equality.js';
5
+ import type { IsAny, IsNever, IsUnknown, IsVoid, IsUndefined, IsNull, IsNullable, IsOptional } from '../types/special.js';
6
+ import type { IsUnion, IsTuple, IsArray } from '../types/union.js';
7
+ import type { IsInhabited, IsUninhabited } from '../types/inhabitation.js';
8
+ import type { HasProperty } from '../types/property.js';
9
+ import type { CheckPass } from '../api/check.js';
10
+ /**
11
+ * Creates a Vitest matcher for type equality.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { expect, test } from 'vitest'
16
+ * import { toBeType } from '@deessejs/type-testing/vitest'
17
+ *
18
+ * expect.extend({ toBeType })
19
+ *
20
+ * test('type check', () => {
21
+ * expectType<string>().toBeType<string>()
22
+ * })
23
+ * ```
24
+ */
25
+ export declare function toBeType<T, U>(): Equal<T, U> extends true ? CheckPass : never;
26
+ /**
27
+ * Creates a Vitest matcher for type inequality.
28
+ */
29
+ export declare function toNotBeType<T, U>(): NotEqual<T, U> extends true ? CheckPass : never;
30
+ /**
31
+ * Creates a Vitest matcher for type extends check.
32
+ */
33
+ export declare function toExtend<T, U>(): T extends U ? CheckPass : never;
34
+ /**
35
+ * Creates a Vitest matcher for type not extends check.
36
+ */
37
+ export declare function toNotExtend<T, U>(): T extends U ? never : CheckPass;
38
+ /**
39
+ * Creates a Vitest matcher for property existence.
40
+ */
41
+ export declare function toHaveProperty<T, K extends keyof T>(): HasProperty<T, K> extends true ? CheckPass : never;
42
+ /**
43
+ * Creates a Vitest matcher for any type check.
44
+ */
45
+ export declare function toBeAny<T>(): IsAny<T> extends true ? CheckPass : never;
46
+ /**
47
+ * Creates a Vitest matcher for never type check.
48
+ */
49
+ export declare function toBeNever<T>(): IsNever<T> extends true ? CheckPass : never;
50
+ /**
51
+ * Creates a Vitest matcher for unknown type check.
52
+ */
53
+ export declare function toBeUnknown<T>(): IsUnknown<T> extends true ? CheckPass : never;
54
+ /**
55
+ * Creates a Vitest matcher for void type check.
56
+ */
57
+ export declare function toBeVoid<T>(): IsVoid<T> extends true ? CheckPass : never;
58
+ /**
59
+ * Creates a Vitest matcher for undefined type check.
60
+ */
61
+ export declare function toBeUndefined<T>(): IsUndefined<T> extends true ? CheckPass : never;
62
+ /**
63
+ * Creates a Vitest matcher for null type check.
64
+ */
65
+ export declare function toBeNull<T>(): IsNull<T> extends true ? CheckPass : never;
66
+ /**
67
+ * Creates a Vitest matcher for nullable type check.
68
+ */
69
+ export declare function toBeNullable<T>(): IsNullable<T> extends true ? CheckPass : never;
70
+ /**
71
+ * Creates a Vitest matcher for optional type check.
72
+ */
73
+ export declare function toBeOptional<T>(): IsOptional<T> extends true ? CheckPass : never;
74
+ /**
75
+ * Creates a Vitest matcher for union type check.
76
+ */
77
+ export declare function toBeUnion<T>(): IsUnion<T> extends true ? CheckPass : never;
78
+ /**
79
+ * Creates a Vitest matcher for tuple type check.
80
+ */
81
+ export declare function toBeTuple<T>(): IsTuple<T> extends true ? CheckPass : never;
82
+ /**
83
+ * Creates a Vitest matcher for array type check.
84
+ */
85
+ export declare function toBeArray<T>(): IsArray<T> extends true ? CheckPass : never;
86
+ /**
87
+ * Creates a Vitest matcher for inhabited type check.
88
+ */
89
+ export declare function toBeInhabited<T>(): IsInhabited<T> extends true ? CheckPass : never;
90
+ /**
91
+ * Creates a Vitest matcher for uninhabited type check.
92
+ */
93
+ export declare function toBeUninhabited<T>(): IsUninhabited<T> extends true ? CheckPass : never;
94
+ /**
95
+ * Helper function to create a type holder for testing.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * expectType<string>().toBeType<string>()
100
+ * ```
101
+ */
102
+ export declare function expectType<T>(): {
103
+ toBeType<U>(): Equal<T, U> extends true ? CheckPass : never;
104
+ toNotBeType<U>(): NotEqual<T, U> extends true ? CheckPass : never;
105
+ toExtend<U>(): T extends U ? CheckPass : never;
106
+ toNotExtend<U>(): T extends U ? never : CheckPass;
107
+ toHaveProperty<K extends keyof T>(): HasProperty<T, K> extends true ? CheckPass : never;
108
+ toBeAny(): IsAny<T> extends true ? CheckPass : never;
109
+ toBeNever(): IsNever<T> extends true ? CheckPass : never;
110
+ toBeUnknown(): IsUnknown<T> extends true ? CheckPass : never;
111
+ toBeVoid(): IsVoid<T> extends true ? CheckPass : never;
112
+ toBeUndefined(): IsUndefined<T> extends true ? CheckPass : never;
113
+ toBeNull(): IsNull<T> extends true ? CheckPass : never;
114
+ toBeNullable(): IsNullable<T> extends true ? CheckPass : never;
115
+ toBeOptional(): IsOptional<T> extends true ? CheckPass : never;
116
+ toBeUnion(): IsUnion<T> extends true ? CheckPass : never;
117
+ toBeTuple(): IsTuple<T> extends true ? CheckPass : never;
118
+ toBeArray(): IsArray<T> extends true ? CheckPass : never;
119
+ toBeInhabited(): IsInhabited<T> extends true ? CheckPass : never;
120
+ toBeUninhabited(): IsUninhabited<T> extends true ? CheckPass : never;
121
+ };
122
+ //# sourceMappingURL=matchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/vitest/matchers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Custom Vitest matchers for type testing.
3
+ */
4
+ /**
5
+ * Creates a Vitest matcher for type equality.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { expect, test } from 'vitest'
10
+ * import { toBeType } from '@deessejs/type-testing/vitest'
11
+ *
12
+ * expect.extend({ toBeType })
13
+ *
14
+ * test('type check', () => {
15
+ * expectType<string>().toBeType<string>()
16
+ * })
17
+ * ```
18
+ */
19
+ export function toBeType() {
20
+ return undefined;
21
+ }
22
+ /**
23
+ * Creates a Vitest matcher for type inequality.
24
+ */
25
+ export function toNotBeType() {
26
+ return undefined;
27
+ }
28
+ /**
29
+ * Creates a Vitest matcher for type extends check.
30
+ */
31
+ export function toExtend() {
32
+ return undefined;
33
+ }
34
+ /**
35
+ * Creates a Vitest matcher for type not extends check.
36
+ */
37
+ export function toNotExtend() {
38
+ return undefined;
39
+ }
40
+ /**
41
+ * Creates a Vitest matcher for property existence.
42
+ */
43
+ export function toHaveProperty() {
44
+ return undefined;
45
+ }
46
+ /**
47
+ * Creates a Vitest matcher for any type check.
48
+ */
49
+ export function toBeAny() {
50
+ return undefined;
51
+ }
52
+ /**
53
+ * Creates a Vitest matcher for never type check.
54
+ */
55
+ export function toBeNever() {
56
+ return undefined;
57
+ }
58
+ /**
59
+ * Creates a Vitest matcher for unknown type check.
60
+ */
61
+ export function toBeUnknown() {
62
+ return undefined;
63
+ }
64
+ /**
65
+ * Creates a Vitest matcher for void type check.
66
+ */
67
+ export function toBeVoid() {
68
+ return undefined;
69
+ }
70
+ /**
71
+ * Creates a Vitest matcher for undefined type check.
72
+ */
73
+ export function toBeUndefined() {
74
+ return undefined;
75
+ }
76
+ /**
77
+ * Creates a Vitest matcher for null type check.
78
+ */
79
+ export function toBeNull() {
80
+ return undefined;
81
+ }
82
+ /**
83
+ * Creates a Vitest matcher for nullable type check.
84
+ */
85
+ export function toBeNullable() {
86
+ return undefined;
87
+ }
88
+ /**
89
+ * Creates a Vitest matcher for optional type check.
90
+ */
91
+ export function toBeOptional() {
92
+ return undefined;
93
+ }
94
+ /**
95
+ * Creates a Vitest matcher for union type check.
96
+ */
97
+ export function toBeUnion() {
98
+ return undefined;
99
+ }
100
+ /**
101
+ * Creates a Vitest matcher for tuple type check.
102
+ */
103
+ export function toBeTuple() {
104
+ return undefined;
105
+ }
106
+ /**
107
+ * Creates a Vitest matcher for array type check.
108
+ */
109
+ export function toBeArray() {
110
+ return undefined;
111
+ }
112
+ /**
113
+ * Creates a Vitest matcher for inhabited type check.
114
+ */
115
+ export function toBeInhabited() {
116
+ return undefined;
117
+ }
118
+ /**
119
+ * Creates a Vitest matcher for uninhabited type check.
120
+ */
121
+ export function toBeUninhabited() {
122
+ return undefined;
123
+ }
124
+ /**
125
+ * Helper function to create a type holder for testing.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * expectType<string>().toBeType<string>()
130
+ * ```
131
+ */
132
+ export function expectType() {
133
+ return {};
134
+ }
135
+ //# sourceMappingURL=matchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/vitest/matchers.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAgB,CAAA;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IAoBxB,OAAO,EAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Vitest setup for type-testing.
3
+ *
4
+ * This module provides integration with Vitest.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // vitest.config.ts
9
+ * import { defineConfig } from 'vitest/config'
10
+ *
11
+ * export default defineConfig({
12
+ * test: {
13
+ * setupFiles: ['@deessejs/type-testing/vitest/setup']
14
+ * }
15
+ * })
16
+ * ```
17
+ */
18
+ export { expectType } from './matchers.js';
19
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/vitest/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Vitest setup for type-testing.
3
+ *
4
+ * This module provides integration with Vitest.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // vitest.config.ts
9
+ * import { defineConfig } from 'vitest/config'
10
+ *
11
+ * export default defineConfig({
12
+ * test: {
13
+ * setupFiles: ['@deessejs/type-testing/vitest/setup']
14
+ * }
15
+ * })
16
+ * ```
17
+ */
18
+ export { expectType } from './matchers.js';
19
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/vitest/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
package/package.json CHANGED
@@ -1,36 +1,44 @@
1
- {
2
- "name": "@deessejs/type-testing",
3
- "version": "0.3.2",
4
- "type": "module",
5
- "main": "./dist/index.js",
6
- "types": "./dist/index.d.ts",
7
- "homepage": "https://types.deessejs.com",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/nesalia-inc/type-testing.git"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/nesalia-inc/type-testing/issues"
14
- },
15
- "exports": {
16
- ".": {
17
- "import": "./dist/index.js",
18
- "types": "./dist/index.d.ts"
19
- }
20
- },
21
- "scripts": {
22
- "build": "tsc",
23
- "dev": "tsc --watch",
24
- "lint": "eslint src --ext .ts,.tsx",
25
- "typecheck": "tsc --noEmit",
26
- "test": "vitest run",
27
- "test:coverage": "vitest run --coverage",
28
- "test:watch": "vitest",
29
- "clean": "rm -rf dist"
30
- },
31
- "devDependencies": {
32
- "@vitest/coverage-v8": "^2.0.0",
33
- "typescript": "^5.0.0",
34
- "vitest": "^2.1.9"
35
- }
36
- }
1
+ {
2
+ "name": "@deessejs/type-testing",
3
+ "version": "0.3.3",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "homepage": "https://types.deessejs.com",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/nesalia-inc/type-testing.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/nesalia-inc/type-testing/issues"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/index.js",
18
+ "types": "./dist/index.d.ts"
19
+ },
20
+ "./vitest": {
21
+ "import": "./dist/vitest/index.js",
22
+ "types": "./dist/vitest/index.d.ts"
23
+ },
24
+ "./vitest/setup": {
25
+ "import": "./dist/vitest/setup.js",
26
+ "types": "./dist/vitest/setup.d.ts"
27
+ }
28
+ },
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "dev": "tsc --watch",
32
+ "lint": "eslint src --ext .ts,.tsx",
33
+ "typecheck": "tsc --noEmit",
34
+ "test": "vitest run",
35
+ "test:coverage": "vitest run --coverage",
36
+ "test:watch": "vitest",
37
+ "clean": "rm -rf dist"
38
+ },
39
+ "devDependencies": {
40
+ "@vitest/coverage-v8": "^2.0.0",
41
+ "typescript": "^5.0.0",
42
+ "vitest": "^2.1.9"
43
+ }
44
+ }