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