@xylabs/object 3.3.1 → 3.3.2
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/dist/browser/AsObjectFactory.d.cts +3 -11
- package/dist/browser/AsObjectFactory.d.cts.map +1 -1
- package/dist/browser/AsObjectFactory.d.mts +3 -11
- package/dist/browser/AsObjectFactory.d.mts.map +1 -1
- package/dist/browser/AsObjectFactory.d.ts +3 -11
- package/dist/browser/AsObjectFactory.d.ts.map +1 -1
- package/dist/browser/AsTypeFactory.d.cts +4 -5
- package/dist/browser/AsTypeFactory.d.cts.map +1 -1
- package/dist/browser/AsTypeFactory.d.mts +4 -5
- package/dist/browser/AsTypeFactory.d.mts.map +1 -1
- package/dist/browser/AsTypeFactory.d.ts +4 -5
- package/dist/browser/AsTypeFactory.d.ts.map +1 -1
- package/dist/browser/IsObjectFactory.d.cts +2 -2
- package/dist/browser/IsObjectFactory.d.cts.map +1 -1
- package/dist/browser/IsObjectFactory.d.mts +2 -2
- package/dist/browser/IsObjectFactory.d.mts.map +1 -1
- package/dist/browser/IsObjectFactory.d.ts +2 -2
- package/dist/browser/IsObjectFactory.d.ts.map +1 -1
- package/dist/browser/asObject.d.cts +2 -10
- package/dist/browser/asObject.d.cts.map +1 -1
- package/dist/browser/asObject.d.mts +2 -10
- package/dist/browser/asObject.d.mts.map +1 -1
- package/dist/browser/asObject.d.ts +2 -10
- package/dist/browser/asObject.d.ts.map +1 -1
- package/dist/browser/index.cjs +0 -5
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +0 -5
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/AsObjectFactory.d.cts +3 -11
- package/dist/neutral/AsObjectFactory.d.cts.map +1 -1
- package/dist/neutral/AsObjectFactory.d.mts +3 -11
- package/dist/neutral/AsObjectFactory.d.mts.map +1 -1
- package/dist/neutral/AsObjectFactory.d.ts +3 -11
- package/dist/neutral/AsObjectFactory.d.ts.map +1 -1
- package/dist/neutral/AsTypeFactory.d.cts +4 -5
- package/dist/neutral/AsTypeFactory.d.cts.map +1 -1
- package/dist/neutral/AsTypeFactory.d.mts +4 -5
- package/dist/neutral/AsTypeFactory.d.mts.map +1 -1
- package/dist/neutral/AsTypeFactory.d.ts +4 -5
- package/dist/neutral/AsTypeFactory.d.ts.map +1 -1
- package/dist/neutral/IsObjectFactory.d.cts +2 -2
- package/dist/neutral/IsObjectFactory.d.cts.map +1 -1
- package/dist/neutral/IsObjectFactory.d.mts +2 -2
- package/dist/neutral/IsObjectFactory.d.mts.map +1 -1
- package/dist/neutral/IsObjectFactory.d.ts +2 -2
- package/dist/neutral/IsObjectFactory.d.ts.map +1 -1
- package/dist/neutral/asObject.d.cts +2 -10
- package/dist/neutral/asObject.d.cts.map +1 -1
- package/dist/neutral/asObject.d.mts +2 -10
- package/dist/neutral/asObject.d.mts.map +1 -1
- package/dist/neutral/asObject.d.ts +2 -10
- package/dist/neutral/asObject.d.ts.map +1 -1
- package/dist/neutral/index.cjs +0 -5
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +0 -5
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/AsObjectFactory.d.cts +3 -11
- package/dist/node/AsObjectFactory.d.cts.map +1 -1
- package/dist/node/AsObjectFactory.d.mts +3 -11
- package/dist/node/AsObjectFactory.d.mts.map +1 -1
- package/dist/node/AsObjectFactory.d.ts +3 -11
- package/dist/node/AsObjectFactory.d.ts.map +1 -1
- package/dist/node/AsTypeFactory.d.cts +4 -5
- package/dist/node/AsTypeFactory.d.cts.map +1 -1
- package/dist/node/AsTypeFactory.d.mts +4 -5
- package/dist/node/AsTypeFactory.d.mts.map +1 -1
- package/dist/node/AsTypeFactory.d.ts +4 -5
- package/dist/node/AsTypeFactory.d.ts.map +1 -1
- package/dist/node/IsObjectFactory.d.cts +2 -2
- package/dist/node/IsObjectFactory.d.cts.map +1 -1
- package/dist/node/IsObjectFactory.d.mts +2 -2
- package/dist/node/IsObjectFactory.d.mts.map +1 -1
- package/dist/node/IsObjectFactory.d.ts +2 -2
- package/dist/node/IsObjectFactory.d.ts.map +1 -1
- package/dist/node/asObject.d.cts +2 -10
- package/dist/node/asObject.d.cts.map +1 -1
- package/dist/node/asObject.d.mts +2 -10
- package/dist/node/asObject.d.mts.map +1 -1
- package/dist/node/asObject.d.ts +2 -10
- package/dist/node/asObject.d.ts.map +1 -1
- package/dist/node/index.cjs +0 -5
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +0 -5
- package/dist/node/index.js.map +1 -1
- package/package.json +4 -4
- package/src/AsObjectFactory.ts +2 -2
- package/src/AsTypeFactory.ts +5 -15
- package/src/IsObjectFactory.ts +2 -2
package/src/AsTypeFactory.ts
CHANGED
|
@@ -3,34 +3,30 @@ import { Logger } from '@xylabs/logger'
|
|
|
3
3
|
import { AnyNonPromise, isPromise, TypedValue } from '@xylabs/promise'
|
|
4
4
|
|
|
5
5
|
export interface TypeCheckConfig {
|
|
6
|
-
disallowChecks?: ((value: unknown) => unknown)[]
|
|
7
6
|
log?: boolean | Logger
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
export type StringOrAlertFunction<T extends AnyNonPromise> = string | AssertExMessageFunc<T>
|
|
11
10
|
|
|
12
|
-
export type TypeCheck<T extends TypedValue,
|
|
13
|
-
obj: (E extends void ? Exclude<AnyNonPromise, E> : AnyNonPromise) | T,
|
|
14
|
-
config?: TypeCheckConfig,
|
|
15
|
-
) => obj is T
|
|
11
|
+
export type TypeCheck<T extends TypedValue> = (obj: AnyNonPromise, config?: TypeCheckConfig) => obj is T
|
|
16
12
|
|
|
17
13
|
export const AsTypeFactory = {
|
|
18
14
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
19
|
-
create: <T extends AnyNonPromise
|
|
15
|
+
create: <T extends AnyNonPromise>(typeCheck: TypeCheck<T>) => {
|
|
20
16
|
function func<TType extends T>(
|
|
21
17
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
-
value:
|
|
18
|
+
value: AnyNonPromise,
|
|
23
19
|
config?: TypeCheckConfig,
|
|
24
20
|
): TType | undefined
|
|
25
21
|
function func<TType extends T>(
|
|
26
22
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
-
value:
|
|
23
|
+
value: AnyNonPromise,
|
|
28
24
|
assert: StringOrAlertFunction<T>,
|
|
29
25
|
config?: TypeCheckConfig,
|
|
30
26
|
): TType
|
|
31
27
|
function func<TType extends T>(
|
|
32
28
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
-
value:
|
|
29
|
+
value: AnyNonPromise,
|
|
34
30
|
assertOrConfig?: StringOrAlertFunction<T> | TypeCheckConfig,
|
|
35
31
|
config?: TypeCheckConfig,
|
|
36
32
|
): TType | undefined {
|
|
@@ -46,12 +42,6 @@ export const AsTypeFactory = {
|
|
|
46
42
|
throw new TypeError('un-awaited promises may not be sent to "as" functions')
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
for (const disallowCheck of config?.disallowChecks ?? []) {
|
|
50
|
-
if (disallowCheck(value)) {
|
|
51
|
-
throw new TypeError('disallowed type')
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
45
|
const resolvedAssert = (typeof assertOrConfig === 'object' ? undefined : assertOrConfig) as StringOrAlertFunction<T> | undefined
|
|
56
46
|
const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config
|
|
57
47
|
const result = typeCheck(value, resolvedConfig) ? (value as TType) : undefined
|
package/src/IsObjectFactory.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { isType, ObjectTypeShape } from './isType'
|
|
|
5
5
|
|
|
6
6
|
export interface ObjectTypeConfig extends TypeCheckConfig {}
|
|
7
7
|
|
|
8
|
-
export class IsObjectFactory<T extends TypedObject
|
|
9
|
-
create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<TypedObject
|
|
8
|
+
export class IsObjectFactory<T extends TypedObject> {
|
|
9
|
+
create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<TypedObject>[]): TypeCheck<T> {
|
|
10
10
|
return (obj, { log } = {}): obj is T => {
|
|
11
11
|
if (!obj || typeof obj !== 'object') {
|
|
12
12
|
return false
|