@xylabs/object 3.0.16 → 3.0.18

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.
Files changed (86) hide show
  1. package/dist/browser/AnyObject.d.cts +2 -2
  2. package/dist/browser/AnyObject.d.cts.map +1 -1
  3. package/dist/browser/AnyObject.d.mts +2 -2
  4. package/dist/browser/AnyObject.d.mts.map +1 -1
  5. package/dist/browser/AnyObject.d.ts +2 -2
  6. package/dist/browser/AnyObject.d.ts.map +1 -1
  7. package/dist/browser/AsObjectFactory.d.cts +4 -3
  8. package/dist/browser/AsObjectFactory.d.cts.map +1 -1
  9. package/dist/browser/AsObjectFactory.d.mts +4 -3
  10. package/dist/browser/AsObjectFactory.d.mts.map +1 -1
  11. package/dist/browser/AsObjectFactory.d.ts +4 -3
  12. package/dist/browser/AsObjectFactory.d.ts.map +1 -1
  13. package/dist/browser/AsTypeFactory.d.cts +7 -5
  14. package/dist/browser/AsTypeFactory.d.cts.map +1 -1
  15. package/dist/browser/AsTypeFactory.d.mts +7 -5
  16. package/dist/browser/AsTypeFactory.d.mts.map +1 -1
  17. package/dist/browser/AsTypeFactory.d.ts +7 -5
  18. package/dist/browser/AsTypeFactory.d.ts.map +1 -1
  19. package/dist/browser/IsObjectFactory.d.cts +3 -4
  20. package/dist/browser/IsObjectFactory.d.cts.map +1 -1
  21. package/dist/browser/IsObjectFactory.d.mts +3 -4
  22. package/dist/browser/IsObjectFactory.d.mts.map +1 -1
  23. package/dist/browser/IsObjectFactory.d.ts +3 -4
  24. package/dist/browser/IsObjectFactory.d.ts.map +1 -1
  25. package/dist/browser/asObject.d.cts +3 -3
  26. package/dist/browser/asObject.d.cts.map +1 -1
  27. package/dist/browser/asObject.d.mts +3 -3
  28. package/dist/browser/asObject.d.mts.map +1 -1
  29. package/dist/browser/asObject.d.ts +3 -3
  30. package/dist/browser/asObject.d.ts.map +1 -1
  31. package/dist/browser/index.cjs +8 -7
  32. package/dist/browser/index.cjs.map +1 -1
  33. package/dist/browser/index.js +8 -7
  34. package/dist/browser/index.js.map +1 -1
  35. package/dist/browser/isObject.d.cts +1 -2
  36. package/dist/browser/isObject.d.cts.map +1 -1
  37. package/dist/browser/isObject.d.mts +1 -2
  38. package/dist/browser/isObject.d.mts.map +1 -1
  39. package/dist/browser/isObject.d.ts +1 -2
  40. package/dist/browser/isObject.d.ts.map +1 -1
  41. package/dist/node/AnyObject.d.cts +2 -2
  42. package/dist/node/AnyObject.d.cts.map +1 -1
  43. package/dist/node/AnyObject.d.mts +2 -2
  44. package/dist/node/AnyObject.d.mts.map +1 -1
  45. package/dist/node/AnyObject.d.ts +2 -2
  46. package/dist/node/AnyObject.d.ts.map +1 -1
  47. package/dist/node/AsObjectFactory.d.cts +4 -3
  48. package/dist/node/AsObjectFactory.d.cts.map +1 -1
  49. package/dist/node/AsObjectFactory.d.mts +4 -3
  50. package/dist/node/AsObjectFactory.d.mts.map +1 -1
  51. package/dist/node/AsObjectFactory.d.ts +4 -3
  52. package/dist/node/AsObjectFactory.d.ts.map +1 -1
  53. package/dist/node/AsTypeFactory.d.cts +7 -5
  54. package/dist/node/AsTypeFactory.d.cts.map +1 -1
  55. package/dist/node/AsTypeFactory.d.mts +7 -5
  56. package/dist/node/AsTypeFactory.d.mts.map +1 -1
  57. package/dist/node/AsTypeFactory.d.ts +7 -5
  58. package/dist/node/AsTypeFactory.d.ts.map +1 -1
  59. package/dist/node/IsObjectFactory.d.cts +3 -4
  60. package/dist/node/IsObjectFactory.d.cts.map +1 -1
  61. package/dist/node/IsObjectFactory.d.mts +3 -4
  62. package/dist/node/IsObjectFactory.d.mts.map +1 -1
  63. package/dist/node/IsObjectFactory.d.ts +3 -4
  64. package/dist/node/IsObjectFactory.d.ts.map +1 -1
  65. package/dist/node/asObject.d.cts +3 -3
  66. package/dist/node/asObject.d.cts.map +1 -1
  67. package/dist/node/asObject.d.mts +3 -3
  68. package/dist/node/asObject.d.mts.map +1 -1
  69. package/dist/node/asObject.d.ts +3 -3
  70. package/dist/node/asObject.d.ts.map +1 -1
  71. package/dist/node/index.cjs +8 -7
  72. package/dist/node/index.cjs.map +1 -1
  73. package/dist/node/index.js +8 -7
  74. package/dist/node/index.js.map +1 -1
  75. package/dist/node/isObject.d.cts +1 -2
  76. package/dist/node/isObject.d.cts.map +1 -1
  77. package/dist/node/isObject.d.mts +1 -2
  78. package/dist/node/isObject.d.mts.map +1 -1
  79. package/dist/node/isObject.d.ts +1 -2
  80. package/dist/node/isObject.d.ts.map +1 -1
  81. package/package.json +4 -4
  82. package/src/AnyObject.ts +2 -3
  83. package/src/AsObjectFactory.ts +3 -2
  84. package/src/AsTypeFactory.ts +19 -17
  85. package/src/IsObjectFactory.ts +4 -4
  86. package/src/asObject.ts +3 -2
@@ -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 TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T
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: string | (() => string),
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?: string | (() => string) | TypeCheckConfig,
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
- return noUndefined(resolvedAssert) && typeof resolvedAssert !== 'object' ?
52
- // eslint-disable-next-line deprecation/deprecation
53
- (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)
54
- : (result as TType)
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
  },
@@ -1,12 +1,12 @@
1
- import { AnyObject } from './AnyObject'
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 EmptyObject> {
9
- create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {
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 { AnyObject } from './AnyObject'
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<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()
6
+ export const asAnyObject = (() => AsObjectFactory.create<TypedObject>(<T extends TypedObject>(obj: unknown): obj is T => isObject(obj)))()