🚨 Active Supply Chain Attack:node-ipc Package Compromised.Learn More
Socket
Book a DemoSign in
Socket

@deessejs/type-testing

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@deessejs/type-testing - npm Package Compare versions

Comparing version
0.3.2
to
0.3.3
+7
dist/vitest/index.d.ts
/**
* Vitest integration for type-testing.
*
* @packageDocumentation
*/
export { toBeType, toNotBeType, toExtend, toNotExtend, toHaveProperty, toBeAny, toBeNever, toBeUnknown, toBeVoid, toBeUndefined, toBeNull, toBeNullable, toBeOptional, toBeUnion, toBeTuple, toBeArray, toBeInhabited, toBeUninhabited, expectType } from './matchers.js';
//# sourceMappingURL=index.d.ts.map
{"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"}
/**
* Vitest integration for type-testing.
*
* @packageDocumentation
*/
export { toBeType, toNotBeType, toExtend, toNotExtend, toHaveProperty, toBeAny, toBeNever, toBeUnknown, toBeVoid, toBeUndefined, toBeNull, toBeNullable, toBeOptional, toBeUnion, toBeTuple, toBeArray, toBeInhabited, toBeUninhabited, expectType } from './matchers.js';
//# sourceMappingURL=index.js.map
{"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"}
/**
* Custom Vitest matchers for type testing.
*/
import type { Equal, NotEqual } from '../types/equality.js';
import type { IsAny, IsNever, IsUnknown, IsVoid, IsUndefined, IsNull, IsNullable, IsOptional } from '../types/special.js';
import type { IsUnion, IsTuple, IsArray } from '../types/union.js';
import type { IsInhabited, IsUninhabited } from '../types/inhabitation.js';
import type { HasProperty } from '../types/property.js';
import type { CheckPass } from '../api/check.js';
/**
* Creates a Vitest matcher for type equality.
*
* @example
* ```typescript
* import { expect, test } from 'vitest'
* import { toBeType } from '@deessejs/type-testing/vitest'
*
* expect.extend({ toBeType })
*
* test('type check', () => {
* expectType<string>().toBeType<string>()
* })
* ```
*/
export declare function toBeType<T, U>(): Equal<T, U> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for type inequality.
*/
export declare function toNotBeType<T, U>(): NotEqual<T, U> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for type extends check.
*/
export declare function toExtend<T, U>(): T extends U ? CheckPass : never;
/**
* Creates a Vitest matcher for type not extends check.
*/
export declare function toNotExtend<T, U>(): T extends U ? never : CheckPass;
/**
* Creates a Vitest matcher for property existence.
*/
export declare function toHaveProperty<T, K extends keyof T>(): HasProperty<T, K> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for any type check.
*/
export declare function toBeAny<T>(): IsAny<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for never type check.
*/
export declare function toBeNever<T>(): IsNever<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for unknown type check.
*/
export declare function toBeUnknown<T>(): IsUnknown<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for void type check.
*/
export declare function toBeVoid<T>(): IsVoid<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for undefined type check.
*/
export declare function toBeUndefined<T>(): IsUndefined<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for null type check.
*/
export declare function toBeNull<T>(): IsNull<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for nullable type check.
*/
export declare function toBeNullable<T>(): IsNullable<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for optional type check.
*/
export declare function toBeOptional<T>(): IsOptional<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for union type check.
*/
export declare function toBeUnion<T>(): IsUnion<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for tuple type check.
*/
export declare function toBeTuple<T>(): IsTuple<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for array type check.
*/
export declare function toBeArray<T>(): IsArray<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for inhabited type check.
*/
export declare function toBeInhabited<T>(): IsInhabited<T> extends true ? CheckPass : never;
/**
* Creates a Vitest matcher for uninhabited type check.
*/
export declare function toBeUninhabited<T>(): IsUninhabited<T> extends true ? CheckPass : never;
/**
* Helper function to create a type holder for testing.
*
* @example
* ```typescript
* expectType<string>().toBeType<string>()
* ```
*/
export declare function expectType<T>(): {
toBeType<U>(): Equal<T, U> extends true ? CheckPass : never;
toNotBeType<U>(): NotEqual<T, U> extends true ? CheckPass : never;
toExtend<U>(): T extends U ? CheckPass : never;
toNotExtend<U>(): T extends U ? never : CheckPass;
toHaveProperty<K extends keyof T>(): HasProperty<T, K> extends true ? CheckPass : never;
toBeAny(): IsAny<T> extends true ? CheckPass : never;
toBeNever(): IsNever<T> extends true ? CheckPass : never;
toBeUnknown(): IsUnknown<T> extends true ? CheckPass : never;
toBeVoid(): IsVoid<T> extends true ? CheckPass : never;
toBeUndefined(): IsUndefined<T> extends true ? CheckPass : never;
toBeNull(): IsNull<T> extends true ? CheckPass : never;
toBeNullable(): IsNullable<T> extends true ? CheckPass : never;
toBeOptional(): IsOptional<T> extends true ? CheckPass : never;
toBeUnion(): IsUnion<T> extends true ? CheckPass : never;
toBeTuple(): IsTuple<T> extends true ? CheckPass : never;
toBeArray(): IsArray<T> extends true ? CheckPass : never;
toBeInhabited(): IsInhabited<T> extends true ? CheckPass : never;
toBeUninhabited(): IsUninhabited<T> extends true ? CheckPass : never;
};
//# sourceMappingURL=matchers.d.ts.map
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/vitest/matchers.ts"],"names":[],"mappings":"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"}
/**
* Custom Vitest matchers for type testing.
*/
/**
* Creates a Vitest matcher for type equality.
*
* @example
* ```typescript
* import { expect, test } from 'vitest'
* import { toBeType } from '@deessejs/type-testing/vitest'
*
* expect.extend({ toBeType })
*
* test('type check', () => {
* expectType<string>().toBeType<string>()
* })
* ```
*/
export function toBeType() {
return undefined;
}
/**
* Creates a Vitest matcher for type inequality.
*/
export function toNotBeType() {
return undefined;
}
/**
* Creates a Vitest matcher for type extends check.
*/
export function toExtend() {
return undefined;
}
/**
* Creates a Vitest matcher for type not extends check.
*/
export function toNotExtend() {
return undefined;
}
/**
* Creates a Vitest matcher for property existence.
*/
export function toHaveProperty() {
return undefined;
}
/**
* Creates a Vitest matcher for any type check.
*/
export function toBeAny() {
return undefined;
}
/**
* Creates a Vitest matcher for never type check.
*/
export function toBeNever() {
return undefined;
}
/**
* Creates a Vitest matcher for unknown type check.
*/
export function toBeUnknown() {
return undefined;
}
/**
* Creates a Vitest matcher for void type check.
*/
export function toBeVoid() {
return undefined;
}
/**
* Creates a Vitest matcher for undefined type check.
*/
export function toBeUndefined() {
return undefined;
}
/**
* Creates a Vitest matcher for null type check.
*/
export function toBeNull() {
return undefined;
}
/**
* Creates a Vitest matcher for nullable type check.
*/
export function toBeNullable() {
return undefined;
}
/**
* Creates a Vitest matcher for optional type check.
*/
export function toBeOptional() {
return undefined;
}
/**
* Creates a Vitest matcher for union type check.
*/
export function toBeUnion() {
return undefined;
}
/**
* Creates a Vitest matcher for tuple type check.
*/
export function toBeTuple() {
return undefined;
}
/**
* Creates a Vitest matcher for array type check.
*/
export function toBeArray() {
return undefined;
}
/**
* Creates a Vitest matcher for inhabited type check.
*/
export function toBeInhabited() {
return undefined;
}
/**
* Creates a Vitest matcher for uninhabited type check.
*/
export function toBeUninhabited() {
return undefined;
}
/**
* Helper function to create a type holder for testing.
*
* @example
* ```typescript
* expectType<string>().toBeType<string>()
* ```
*/
export function expectType() {
return {};
}
//# sourceMappingURL=matchers.js.map
{"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"}
/**
* Vitest setup for type-testing.
*
* This module provides integration with Vitest.
*
* @example
* ```typescript
* // vitest.config.ts
* import { defineConfig } from 'vitest/config'
*
* export default defineConfig({
* test: {
* setupFiles: ['@deessejs/type-testing/vitest/setup']
* }
* })
* ```
*/
export { expectType } from './matchers.js';
//# sourceMappingURL=setup.d.ts.map
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/vitest/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
/**
* Vitest setup for type-testing.
*
* This module provides integration with Vitest.
*
* @example
* ```typescript
* // vitest.config.ts
* import { defineConfig } from 'vitest/config'
*
* export default defineConfig({
* test: {
* setupFiles: ['@deessejs/type-testing/vitest/setup']
* }
* })
* ```
*/
export { expectType } from './matchers.js';
//# sourceMappingURL=setup.js.map
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/vitest/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
+9
-1
{
"name": "@deessejs/type-testing",
"version": "0.3.2",
"version": "0.3.3",
"type": "module",

@@ -19,2 +19,10 @@ "main": "./dist/index.js",

"types": "./dist/index.d.ts"
},
"./vitest": {
"import": "./dist/vitest/index.js",
"types": "./dist/vitest/index.d.ts"
},
"./vitest/setup": {
"import": "./dist/vitest/setup.js",
"types": "./dist/vitest/setup.d.ts"
}

@@ -21,0 +29,0 @@ },

+111
-0

@@ -340,2 +340,113 @@ # @deessejs/type-testing

## Vitest Integration
The library provides a native Vitest integration with custom matchers for a more familiar testing experience.
### Installation
```bash
npm install @deessejs/type-testing
```
### Quick Start
```typescript
import { expectType } from '@deessejs/type-testing/vitest'
// Type equality
expectType<string>().toBeType<string>()
expectType<string>().toNotBeType<number>()
// Type extends
expectType<string>().toExtend<string>()
expectType<string>().toNotExtend<number>()
// Property check
expectType<{ a: string }>().toHaveProperty('a')
// Special types
expectType<any>().toBeAny()
expectType<never>().toBeNever()
expectType<unknown>().toBeUnknown()
expectType<void>().toBeVoid()
expectType<undefined>().toBeUndefined()
expectType<null>().toBeNull()
// Nullable/Optional
expectType<string | null>().toBeNullable()
expectType<{ a?: string }>().toBeOptional()
// Structure
expectType<string | number>().toBeUnion()
expectType<[string, number]>().toBeTuple()
expectType<string[]>().toBeArray()
// Inhabitation
expectType<string>().toBeInhabited()
expectType<never>().toBeUninhabited()
```
### Using with Vitest's expect.extend
You can also extend Vitest's expect with the matchers:
```typescript
import { expect, test } from 'vitest'
import { toBeType, toHaveProperty } from '@deessejs/type-testing/vitest'
expect.extend({ toBeType, toHaveProperty })
test('type checks', () => {
expect<string>().toBeType<string>()
expect<{ a: string }>().toHaveProperty('a')
})
```
### Setup File
For automatic matcher registration, add the setup file to your Vitest config:
```typescript
// vitest.config.ts
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
setupFiles: ['@deessejs/type-testing/vitest/setup']
}
})
```
Or import it in your setup file:
```typescript
// setup.ts
import '@deessejs/type-testing/vitest/setup'
```
### Available Matchers
| Matcher | Description |
|---------|-------------|
| `toBeType<T>()` | Asserts type equality |
| `toNotBeType<T>()` | Asserts type inequality |
| `toExtend<T>()` | Asserts type extends another |
| `toNotExtend<T>()` | Asserts type does not extend another |
| `toHaveProperty<K>()` | Asserts property exists |
| `toBeAny()` | Asserts type is `any` |
| `toBeNever()` | Asserts type is `never` |
| `toBeUnknown()` | Asserts type is `unknown` |
| `toBeVoid()` | Asserts type is `void` |
| `toBeUndefined()` | Asserts type is `undefined` |
| `toBeNull()` | Asserts type is `null` |
| `toBeNullable()` | Asserts type is nullable |
| `toBeOptional()` | Asserts type is optional |
| `toBeUnion()` | Asserts type is a union |
| `toBeTuple()` | Asserts type is a tuple |
| `toBeArray()` | Asserts type is an array |
| `toBeInhabited()` | Asserts type is inhabited |
| `toBeUninhabited()` | Asserts type is uninhabited |
> **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`.
## Compile-time Assertions

@@ -342,0 +453,0 @@