@appliedblockchain/assert-combinators
Advanced tools
Comparing version 5.5.0 to 5.6.0
# Changelog | ||
## [v5.6.0](../../compare/v5.5.0...v5.6.0) (2022-12-14) | ||
* Feat: optional if undefined. | ||
* Updating changelog. | ||
## [v5.5.0](../../compare/v5.4.1...v5.5.0) (2022-12-14) | ||
@@ -4,0 +9,0 @@ |
@@ -1,3 +0,3 @@ | ||
import type { Assert, Asserted, Primitive } from './prelude.js'; | ||
declare const exact: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>; | ||
import type { Assert, Asserted, Primitive, OptionalIfUndefined } from './prelude.js'; | ||
declare const exact: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>>; | ||
export default exact; |
@@ -1,3 +0,3 @@ | ||
import type { Assert, Asserted, Primitive } from './prelude.js'; | ||
declare const object: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>; | ||
import type { Assert, Asserted, Primitive, OptionalIfUndefined } from './prelude.js'; | ||
declare const object: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>>; | ||
export default object; |
@@ -17,3 +17,7 @@ /** Helper no-op, parametric type to expand intellisense for alias types. */ | ||
export type Predicate<T = unknown> = (value: T) => boolean; | ||
export type Primitive = undefined | boolean | number | string | symbol | bigint; | ||
export type Primitive = undefined | null | boolean | number | string | symbol | bigint; | ||
export type Exact<T, I> = T extends I ? Exclude<keyof T, keyof I> extends never ? T : never : never; | ||
export type OptionalIfUndefinedOnly<T> = { | ||
[K in keyof T as undefined extends T[K] ? K : never]?: T[K]; | ||
}; | ||
export type OptionalIfUndefined<T> = Omit<T, keyof OptionalIfUndefinedOnly<T>> & OptionalIfUndefinedOnly<T>; |
@@ -1,3 +0,3 @@ | ||
import type { Assert, Asserted, Primitive } from './prelude.js'; | ||
declare const exact: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>; | ||
import type { Assert, Asserted, Primitive, OptionalIfUndefined } from './prelude.js'; | ||
declare const exact: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>>; | ||
export default exact; |
@@ -1,3 +0,3 @@ | ||
import type { Assert, Asserted, Primitive } from './prelude.js'; | ||
declare const object: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>; | ||
import type { Assert, Asserted, Primitive, OptionalIfUndefined } from './prelude.js'; | ||
declare const object: <T extends Record<string, Primitive | Assert<unknown>>>(kvs: T) => Assert<OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]>; }>>; | ||
export default object; |
@@ -17,3 +17,7 @@ /** Helper no-op, parametric type to expand intellisense for alias types. */ | ||
export type Predicate<T = unknown> = (value: T) => boolean; | ||
export type Primitive = undefined | boolean | number | string | symbol | bigint; | ||
export type Primitive = undefined | null | boolean | number | string | symbol | bigint; | ||
export type Exact<T, I> = T extends I ? Exclude<keyof T, keyof I> extends never ? T : never : never; | ||
export type OptionalIfUndefinedOnly<T> = { | ||
[K in keyof T as undefined extends T[K] ? K : never]?: T[K]; | ||
}; | ||
export type OptionalIfUndefined<T> = Omit<T, keyof OptionalIfUndefinedOnly<T>> & OptionalIfUndefinedOnly<T>; |
{ | ||
"name": "@appliedblockchain/assert-combinators", | ||
"version": "5.5.0", | ||
"version": "5.6.0", | ||
"description": "Assertion combinators.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -1,2 +0,2 @@ | ||
import type { Assert, Asserted, Primitive } from './prelude.js' | ||
import type { Assert, Asserted, Primitive, OptionalIfUndefined } from './prelude.js' | ||
import { inspect } from 'util' | ||
@@ -6,3 +6,3 @@ import object from './object.js' | ||
const exact = | ||
<T extends Record<string, Primitive | Assert<unknown>>>(kvs: T): Assert<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> }> => | ||
<T extends Record<string, Primitive | Assert<unknown>>>(kvs: T): Assert<OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> }>> => | ||
value => { | ||
@@ -19,5 +19,5 @@ if (typeof value !== 'object' || value === null) { | ||
} | ||
return result as { [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> } | ||
return result as OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> }> | ||
} | ||
export default exact |
import { inspect } from 'util' | ||
import type { Assert, Asserted, Primitive } from './prelude.js' | ||
import type { Assert, Asserted, Primitive, OptionalIfUndefined } from './prelude.js' | ||
const object = | ||
<T extends Record<string, Assert<unknown> | Primitive>>(kvs: T): Assert<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> }> => | ||
<T extends Record<string, Primitive | Assert<unknown>>>(kvs: T): Assert<OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> }>> => | ||
value => { | ||
@@ -22,5 +22,5 @@ if (typeof value !== 'object' || value === null) { | ||
} | ||
return value as { [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> } | ||
return value as OptionalIfUndefined<{ [k in keyof T]: T[k] extends Primitive ? T[k] : Asserted<T[k]> }> | ||
} | ||
export default object |
@@ -8,3 +8,4 @@ /** Helper no-op, parametric type to expand intellisense for alias types. */ | ||
export type Assert<R> = | ||
(value: unknown) => R | ||
(value: unknown) => | ||
R | ||
@@ -54,3 +55,3 @@ export type Asserted<A> = | ||
| undefined | ||
// | null // @todo: ts 4.9 doesn't like it | ||
| null | ||
| boolean | ||
@@ -68,1 +69,8 @@ | number | ||
never | ||
export type OptionalIfUndefinedOnly<T> = { | ||
[K in keyof T as undefined extends T[K] ? K : never]?: T[K] | ||
} | ||
export type OptionalIfUndefined<T> = | ||
Omit<T, keyof OptionalIfUndefinedOnly<T>> & OptionalIfUndefinedOnly<T> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
182829
3059