type-plus 7.2.0 → 7.3.0

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 (73) hide show
  1. package/README.md +2 -0
  2. package/cjs/array/array.some.d.ts +1 -1
  3. package/cjs/merge.d.ts +55 -0
  4. package/cjs/merge.d.ts.map +1 -0
  5. package/cjs/merge.js +18 -0
  6. package/cjs/merge.js.map +1 -0
  7. package/cjs/object/ANotB.d.ts +0 -6
  8. package/cjs/object/ANotB.d.ts.map +1 -1
  9. package/cjs/object/AnyRecord.d.ts +2 -1
  10. package/cjs/object/AnyRecord.d.ts.map +1 -1
  11. package/cjs/object/index.d.ts +4 -2
  12. package/cjs/object/index.d.ts.map +1 -1
  13. package/cjs/object/index.js +1 -0
  14. package/cjs/object/index.js.map +1 -1
  15. package/cjs/object/left_join.d.ts +15 -0
  16. package/cjs/object/left_join.d.ts.map +1 -0
  17. package/cjs/object/left_join.js +3 -0
  18. package/cjs/object/left_join.js.map +1 -0
  19. package/cjs/object/optional_key.d.ts +35 -0
  20. package/cjs/object/optional_key.d.ts.map +1 -0
  21. package/cjs/object/optional_key.js +3 -0
  22. package/cjs/object/optional_key.js.map +1 -0
  23. package/cjs/predicates/index.d.ts +1 -1
  24. package/cjs/predicates/index.d.ts.map +1 -1
  25. package/cjs/predicates/literal.d.ts +22 -0
  26. package/cjs/predicates/literal.d.ts.map +1 -0
  27. package/cjs/predicates/literal.js +3 -0
  28. package/cjs/predicates/literal.js.map +1 -0
  29. package/cjs/testing/test_type.d.ts +36 -8
  30. package/cjs/testing/test_type.d.ts.map +1 -1
  31. package/cjs/testing/test_type.js.map +1 -1
  32. package/esm/array/array.some.d.ts +1 -1
  33. package/esm/merge.d.ts +55 -0
  34. package/esm/merge.d.ts.map +1 -0
  35. package/esm/merge.js +14 -0
  36. package/esm/merge.js.map +1 -0
  37. package/esm/object/ANotB.d.ts +0 -6
  38. package/esm/object/ANotB.d.ts.map +1 -1
  39. package/esm/object/AnyRecord.d.ts +2 -1
  40. package/esm/object/AnyRecord.d.ts.map +1 -1
  41. package/esm/object/index.d.ts +4 -2
  42. package/esm/object/index.d.ts.map +1 -1
  43. package/esm/object/index.js +1 -0
  44. package/esm/object/index.js.map +1 -1
  45. package/esm/object/left_join.d.ts +15 -0
  46. package/esm/object/left_join.d.ts.map +1 -0
  47. package/esm/object/left_join.js +2 -0
  48. package/esm/object/left_join.js.map +1 -0
  49. package/esm/object/optional_key.d.ts +35 -0
  50. package/esm/object/optional_key.d.ts.map +1 -0
  51. package/esm/object/optional_key.js +2 -0
  52. package/esm/object/optional_key.js.map +1 -0
  53. package/esm/predicates/index.d.ts +1 -1
  54. package/esm/predicates/index.d.ts.map +1 -1
  55. package/esm/predicates/literal.d.ts +22 -0
  56. package/esm/predicates/literal.d.ts.map +1 -0
  57. package/esm/predicates/literal.js +2 -0
  58. package/esm/predicates/literal.js.map +1 -0
  59. package/esm/testing/test_type.d.ts +36 -8
  60. package/esm/testing/test_type.d.ts.map +1 -1
  61. package/esm/testing/test_type.js.map +1 -1
  62. package/package.json +1 -1
  63. package/ts/array/array.some.ts +1 -1
  64. package/ts/merge.ts +72 -0
  65. package/ts/object/ANotB.ts +0 -7
  66. package/ts/object/AnyRecord.ts +3 -1
  67. package/ts/object/index.ts +4 -2
  68. package/ts/object/left_join.ts +19 -0
  69. package/ts/object/optional_key.ts +38 -0
  70. package/ts/object/readme.md +37 -0
  71. package/ts/predicates/index.ts +1 -5
  72. package/ts/predicates/literal.ts +35 -0
  73. package/ts/testing/test_type.ts +37 -8
package/README.md CHANGED
@@ -1351,6 +1351,7 @@ Whenever possible, I add attribution to the person who created those **codes** i
1351
1351
  - [expect-type]: Compile-time tests for types
1352
1352
  - [hotscript]: Higher-order TypeScript
1353
1353
  - [spec.ts]: write tests for your types!
1354
+ - [ts-calc]: compute with typescript type system, part of [hotscript]
1354
1355
  - [ts-essentials]: all essential TypeScript types in one place.
1355
1356
  - [ts-expect]: Checks values in TypeScript match expectations.
1356
1357
  - [ts-toolbelt]: TypeScript's largest utility library.
@@ -1374,6 +1375,7 @@ Whenever possible, I add attribution to the person who created those **codes** i
1374
1375
  [npm_image]: https://img.shields.io/npm/v/type-plus.svg?style=flat
1375
1376
  [npm_url]: https://npmjs.org/package/type-plus
1376
1377
  [spec.ts]: https://github.com/aleclarson/spec.ts
1378
+ [ts-calc]: https://github.com/ecyrbe/ts-calc
1377
1379
  [ts-essentials]: https://github.com/ts-essentials/ts-essentials
1378
1380
  [ts-expect]: https://github.com/TypeStrong/ts-expect
1379
1381
  [ts-toolbelt]: https://github.com/millsp/ts-toolbelt
@@ -10,7 +10,7 @@ import type { UnionOfValues } from './union_of_values.js';
10
10
  *
11
11
  * You can also change it to `strict` mode.
12
12
  *
13
- * 🔧 *utilities*
13
+ * 🦴 *utilities*
14
14
  *
15
15
  * @example
16
16
  * ```ts
package/cjs/merge.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ import type { NonComposableTypes } from './composable_types.js';
2
+ import type { AnyRecord } from './object/AnyRecord.js';
3
+ import type { IsDisjoint } from './object/IsDisjoint.js';
4
+ import type { KeyTypes } from './object/KeyTypes.js';
5
+ import type { OptionalKeys } from './object/OptionalKeys.js';
6
+ import type { Properties } from './object/properties.js';
7
+ import type { IsLiteral } from './predicates/literal.js';
8
+ /**
9
+ * Left join type `A` with type `B`.
10
+ *
11
+ * It handles cases like A or B are `Record`,
12
+ * joining between required and optional props, etc.
13
+ */
14
+ export type Merge<A, B> = [A, B] extends [NonComposableTypes, unknown] ? B : [A, B] extends [unknown, NonComposableTypes] ? A : A extends AnyRecord ? B extends AnyRecord ? IsDisjoint<A, B> extends true ? A & B : ([keyof A, keyof B] extends [infer KA extends KeyTypes, infer KB extends KeyTypes] ? (IsLiteral<KA> extends true ? (IsLiteral<KB> extends true ? ([OptionalKeys<A>, OptionalKeys<B>] extends [infer PKA extends KeyTypes, infer PKB extends KeyTypes] ? {
15
+ [k in PKA & PKB]?: A[k] | B[k] | undefined;
16
+ } & {
17
+ [k in Exclude<KA & KB, PKA | PKB>]: Merge.JoinProps<A[k], B[k]>;
18
+ } & {
19
+ [k in Exclude<KA, PKA | KB>]: A[k];
20
+ } & {
21
+ [k in Exclude<KB, PKB>]: B[k];
22
+ } & {
23
+ [k in Exclude<KA & PKB, PKA>]: Exclude<A[k] | Partial<B[k]>, undefined>;
24
+ } : never) : Properties<{
25
+ [k in Exclude<KA, KA & KB>]: A[k];
26
+ } & {
27
+ [k in Exclude<KB, KA & KB>]: B[k];
28
+ } & {
29
+ [k in KA & KB]: A[k] | B[k];
30
+ }>) : (IsLiteral<KB> extends true ? {
31
+ [k in Exclude<KA, KB>]: A[k];
32
+ } & {
33
+ [k in keyof B]: B[k];
34
+ } : {
35
+ [k in Exclude<KA, KA & KB>]: A[k];
36
+ } & {
37
+ [k in Exclude<KB, KA & KB>]: B[k];
38
+ } & {
39
+ [k in KA & KB]: A[k] | B[k];
40
+ })) : never) : never : never;
41
+ export declare namespace Merge {
42
+ type JoinProps<A, B> = A extends NonComposableTypes ? B : (B extends NonComposableTypes ? A : A & B);
43
+ }
44
+ /**
45
+ * Left join `a` with `b`.
46
+ *
47
+ * This returns the proper type of `{ ...a, ...b }`
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * leftJoin({ a: 1 }, {} as { a?: string | undefined }) // { a: number | string }
52
+ * ```
53
+ */
54
+ export declare function merge<A, B>(a: A, b: B): Merge<A, B>;
55
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../ts/merge.ts"],"names":[],"mappings":"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"}
package/cjs/merge.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.merge = void 0;
4
+ /**
5
+ * Left join `a` with `b`.
6
+ *
7
+ * This returns the proper type of `{ ...a, ...b }`
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * leftJoin({ a: 1 }, {} as { a?: string | undefined }) // { a: number | string }
12
+ * ```
13
+ */
14
+ function merge(a, b) {
15
+ return { ...a, ...b };
16
+ }
17
+ exports.merge = merge;
18
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../ts/merge.ts"],"names":[],"mappings":";;;AA2DA;;;;;;;;;EASE;AACF,SAAgB,KAAK,CAAO,CAAI,EAAE,CAAI;IACrC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAS,CAAA;AAC7B,CAAC;AAFD,sBAEC"}
@@ -2,14 +2,8 @@ import type { IsEqual } from '../equal/equal.js';
2
2
  import type { AnyRecord } from './AnyRecord.js';
3
3
  import type { IsDisjoint } from './IsDisjoint.js';
4
4
  import type { KeysWithDiffType } from './KeysWithDiffType.js';
5
- import type { Properties } from './properties.js';
6
5
  export type ANotB<A extends AnyRecord, B extends AnyRecord> = IsEqual<A, B> extends true ? never : IsDisjoint<A, B> extends true ? A : {
7
6
  [k in Exclude<keyof A, keyof B> | KeysWithDiffType<A, B>]: A[k];
8
7
  };
9
8
  export type BNotA<A extends AnyRecord, B extends AnyRecord> = ANotB<B, A>;
10
- export type LeftJoin<A extends AnyRecord, B extends AnyRecord> = IsEqual<A, B> extends true ? A : IsDisjoint<A, B> extends true ? A & B : Properties<{
11
- [k in Exclude<keyof A, keyof B>]: A[k];
12
- } & {
13
- [k in keyof B]: B[k];
14
- }>;
15
9
  //# sourceMappingURL=ANotB.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ANotB.d.ts","sourceRoot":"","sources":["../../ts/object/ANotB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrF,KAAK,GACL,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GACD;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAEtE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACxF,CAAC,GACD,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GAAG,CAAC,GACL,UAAU,CAAC;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"ANotB.d.ts","sourceRoot":"","sources":["../../ts/object/ANotB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrF,KAAK,GACL,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GACD;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAEtE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA"}
@@ -1,2 +1,3 @@
1
- export type AnyRecord = Record<keyof any, any>;
1
+ import type { KeyTypes } from './KeyTypes.js';
2
+ export type AnyRecord = Record<KeyTypes, any>;
2
3
  //# sourceMappingURL=AnyRecord.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnyRecord.d.ts","sourceRoot":"","sources":["../../ts/object/AnyRecord.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"AnyRecord.d.ts","sourceRoot":"","sources":["../../ts/object/AnyRecord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- export type { ANotB, BNotA, LeftJoin } from './ANotB.js';
1
+ export type { ANotB, BNotA } from './ANotB.js';
2
2
  export type { AnyRecord } from './AnyRecord.js';
3
3
  export type { ExcludePropType } from './ExcludePropType.js';
4
4
  export type { IsDisjoint } from './IsDisjoint.js';
@@ -9,8 +9,8 @@ export type { KeysWithDiffType } from './KeysWithDiffType.js';
9
9
  export type { KnownKeys } from './KnownKeys.js';
10
10
  export type { OptionalKeys } from './OptionalKeys.js';
11
11
  export type { Partial, PartialExcept, PartialOmit, PartialPick } from './Partial.js';
12
+ export type * from './optional_key.js';
12
13
  export type { RecursiveIntersect } from './RecursiveIntersect.js';
13
- export type { RecursivePartial } from './recursive_partial.js';
14
14
  export type { RecursiveRequired } from './RecursiveRequired.js';
15
15
  export type { RequiredExcept, RequiredPick } from './Required.js';
16
16
  export type { RequiredKeys } from './RequiredKeys.js';
@@ -24,12 +24,14 @@ export * from './forEachKey.js';
24
24
  export * from './getField.js';
25
25
  export * from './hasKey.js';
26
26
  export * from './hasProperty.js';
27
+ export * from './left_join.js';
27
28
  export * from './mapKey.js';
28
29
  export * from './mapProperties.js';
29
30
  export * from './omit.js';
30
31
  export * from './pick.js';
31
32
  export type { Properties } from './properties.js';
32
33
  export * from './record.js';
34
+ export type { RecursivePartial } from './recursive_partial.js';
33
35
  export * from './reduceKey.js';
34
36
  export * from './replaceProperty.js';
35
37
  export * from './someKey.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,mBAAmB,mBAAmB,CAAA;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
@@ -22,6 +22,7 @@ __exportStar(require("./forEachKey.js"), exports);
22
22
  __exportStar(require("./getField.js"), exports);
23
23
  __exportStar(require("./hasKey.js"), exports);
24
24
  __exportStar(require("./hasProperty.js"), exports);
25
+ __exportStar(require("./left_join.js"), exports);
25
26
  __exportStar(require("./mapKey.js"), exports);
26
27
  __exportStar(require("./mapProperties.js"), exports);
27
28
  __exportStar(require("./omit.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAkBA,gDAA6B;AAC7B,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,kDAA+B;AAC/B,gDAA6B;AAC7B,8CAA2B;AAC3B,mDAAgC;AAChC,8CAA2B;AAC3B,qDAAkC;AAClC,4CAAyB;AACzB,4CAAyB;AAEzB,8CAA2B;AAC3B,iDAA8B;AAC9B,uDAAoC;AACpC,+CAA4B;AAC5B,6CAA0B;AAC1B,gEAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAkBA,gDAA6B;AAC7B,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,kDAA+B;AAC/B,gDAA6B;AAC7B,8CAA2B;AAC3B,mDAAgC;AAChC,iDAA8B;AAC9B,8CAA2B;AAC3B,qDAAkC;AAClC,4CAAyB;AACzB,4CAAyB;AAEzB,8CAA2B;AAE3B,iDAA8B;AAC9B,uDAAoC;AACpC,+CAA4B;AAC5B,6CAA0B;AAC1B,gEAA6C"}
@@ -0,0 +1,15 @@
1
+ import type { IsEqual } from '../equal/equal.js';
2
+ import type { AnyRecord } from './AnyRecord.js';
3
+ import type { IsDisjoint } from './IsDisjoint.js';
4
+ import type { KeysWithDiffType } from './KeysWithDiffType.js';
5
+ import type { Properties } from './properties.js';
6
+ export type ANotB<A extends AnyRecord, B extends AnyRecord> = IsEqual<A, B> extends true ? never : IsDisjoint<A, B> extends true ? A : {
7
+ [k in Exclude<keyof A, keyof B> | KeysWithDiffType<A, B>]: A[k];
8
+ };
9
+ export type BNotA<A extends AnyRecord, B extends AnyRecord> = ANotB<B, A>;
10
+ export type LeftJoin<A extends AnyRecord, B extends AnyRecord> = IsEqual<A, B> extends true ? A : IsDisjoint<A, B> extends true ? A & B : Properties<{
11
+ [k in Exclude<keyof A, keyof B>]: A[k];
12
+ } & {
13
+ [k in keyof B]: B[k];
14
+ }>;
15
+ //# sourceMappingURL=left_join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"left_join.d.ts","sourceRoot":"","sources":["../../ts/object/left_join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrF,KAAK,GACL,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GACD;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAEtE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACxF,CAAC,GACD,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GAAG,CAAC,GACL,UAAU,CAAC;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=left_join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"left_join.js","sourceRoot":"","sources":["../../ts/object/left_join.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import type { AnyRecord } from './AnyRecord.js';
2
+ import type { KeyTypes } from './KeyTypes.js';
3
+ /**
4
+ * Validate if the key `K` in `T` is optional.
5
+ *
6
+ * 🎭 *validate*
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * IsOptionalKey({ a: 1 }, 'a') // false
11
+ * IsOptionalKey({ a?: 1 }, 'a') // true
12
+ * ```
13
+ */
14
+ export type IsOptionalKey<T, K, Then = true, Else = false> = K extends OptionalKeys<T> ? Then : Else;
15
+ /**
16
+ * Gets the optional keys of `T`.
17
+ *
18
+ * 🦴 *utilities*
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * OptionalKeys<{ a: 1 }> // never
23
+ * OptionalKeys<{ a?: 1, b: number }> // 'a'
24
+ * ```
25
+ */
26
+ export type OptionalKeys<T> = T extends unknown ? {
27
+ [k in keyof T]-?: Record<KeyTypes, any> extends Pick<T, k> ? k : never;
28
+ }[keyof T] : never;
29
+ /**
30
+ * Parse `T` to keep only the optional properties.
31
+ */
32
+ export type OptionalProps<T extends AnyRecord> = T extends unknown ? {
33
+ [k in OptionalKeys<T>]?: T[k];
34
+ } : never;
35
+ //# sourceMappingURL=optional_key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional_key.d.ts","sourceRoot":"","sources":["../../ts/object/optional_key.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEpG;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAC5C;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,GACnF,KAAK,CAAA;AAER;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,OAAO,GAC/D;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAAE,GACjC,KAAK,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=optional_key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional_key.js","sourceRoot":"","sources":["../../ts/object/optional_key.ts"],"names":[],"mappings":""}
@@ -2,6 +2,6 @@ export * from './CanAssign.js';
2
2
  export type { Extendable, IsExtend, IsNotExtend, NotExtendable } from './Extends.js';
3
3
  export type { If } from './If.js';
4
4
  export type { IsEmptyObject } from './IsEmptyObject.js';
5
+ export type { IsLiteral } from './literal.js';
5
6
  export type { And, Not, Or, Xor } from './logical.js';
6
- export type IsLiteral<T extends number | string, Then = true, Else = false> = number extends T ? Else : string extends T ? Else : Then;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GAC3F,IAAI,GACJ,MAAM,SAAS,CAAC,GAChB,IAAI,GACJ,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Validate if specified type is a scalar literal.
3
+ *
4
+ * 🎭 *validate*
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * type R = IsLiteral<string> // false
9
+ * type R = IsLiteral<number> // false
10
+ * type R = IsLiteral<boolean> // false
11
+ * type R = IsLiteral<bigint> // false
12
+ * type R = IsLiteral<symbol> // false
13
+ *
14
+ * type R = IsLiteral<'a'> // true
15
+ * type R = IsLiteral<1> // true
16
+ * type R = IsLiteral<true> // true
17
+ * type R = IsLiteral<1n> // true
18
+ * type R = IsLiteral<typeof someSymbol> // true
19
+ * ```
20
+ */
21
+ export type IsLiteral<T extends number | boolean | bigint | string | symbol, Then = true, Else = false> = number extends T ? Else : string extends T ? Else : boolean extends T ? Else : symbol extends T ? Else : bigint extends T ? Else : Then;
22
+ //# sourceMappingURL=literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../ts/predicates/literal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,SAAS,CACpB,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EACrD,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,KAAK,IACT,MAAM,SAAS,CAAC,GACjB,IAAI,GACJ,MAAM,SAAS,CAAC,GAChB,IAAI,GACJ,OAAO,SAAS,CAAC,GACjB,IAAI,GACJ,MAAM,SAAS,CAAC,GAChB,IAAI,GACJ,MAAM,SAAS,CAAC,GAChB,IAAI,GACJ,IAAI,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../ts/predicates/literal.ts"],"names":[],"mappings":""}
@@ -209,22 +209,27 @@ interface TestType {
209
209
  /**
210
210
  * A quick way to inspect a type.
211
211
  *
212
- * The handler is not being call.
212
+ * The handler receives a `InspectedType` object.
213
+ * It contains `value` which is typed to `T`,
214
+ * and many other properties to inspect the behavior of `T`.
213
215
  *
214
- * It just make it easy to inspect a specific type.
216
+ * The handler is not being call,
217
+ * it is use to hold the type in value for inspection.
218
+ *
219
+ * 🧪 *testing*
220
+ * 🦴 *utilities*
215
221
  *
216
222
  * @example
217
223
  * ```ts
218
- * testType.inspect<SomeType>(t => ...try out the `t` which is `SomeType` here...)
219
- *
220
- * // instead of
221
- * const r: SomeType = {} as any
222
- * ...try out the `r` which is `SomeType` here...
224
+ * testType.inspect<SomeType>(t => {
225
+ * type T = typeof t.value // resolve and inspect the type `T`
226
+ * t.extend_boolean // result of `T extends boolean`
227
+ * })
223
228
  * ```
224
229
  *
225
230
  * After trying out the type, remove the line.
226
231
  */
227
- inspect<T>(handler: (t: T) => unknown): (t: T) => unknown;
232
+ inspect<T>(handler: (t: InspectedType<T>) => unknown): T;
228
233
  }
229
234
  /**
230
235
  * Test utilities for types.
@@ -234,5 +239,28 @@ interface TestType {
234
239
  * so that the type can be further inspected.
235
240
  */
236
241
  export declare const testType: TestType;
242
+ export type InspectedType<T> = {
243
+ value: T;
244
+ extends_any: T extends any ? true : false;
245
+ extends_unknown: T extends unknown ? true : false;
246
+ extends_void: T extends void ? true : false;
247
+ extends_never: T extends never ? true : false;
248
+ extends_undefined: T extends undefined ? true : false;
249
+ extends_null: T extends null ? true : false;
250
+ extends_boolean: T extends boolean ? true : false;
251
+ extends_true: T extends true ? true : false;
252
+ extends_false: T extends false ? true : false;
253
+ extends_number: T extends number ? true : false;
254
+ extends_1: T extends 1 ? true : false;
255
+ extends_bigint: T extends bigint ? true : false;
256
+ extends_1n: T extends 1n ? true : false;
257
+ extends_string: T extends string ? true : false;
258
+ extends_a: T extends 'a' ? true : false;
259
+ extends_symbol: T extends symbol ? true : false;
260
+ extends_object: T extends object ? true : false;
261
+ extends_function: T extends Function ? true : false;
262
+ extends_array_unknown: T extends unknown[] ? true : false;
263
+ extends_tuple_empty: T extends [] ? true : false;
264
+ };
237
265
  export {};
238
266
  //# sourceMappingURL=test_type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_type.d.ts","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test_type.d.ts","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test_type.js","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":";;;AAuOA;;;;;;GAMG;AACU,QAAA,QAAQ,GAAG,IAAI,KAAK,CAAC,EAAc,EAAE;IACjD,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS;QAC5B,OAAO,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAA;IACvC,CAAC;CACD,CAAC,CAAA"}
1
+ {"version":3,"file":"test_type.js","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":";;;AA4OA;;;;;;GAMG;AACU,QAAA,QAAQ,GAAG,IAAI,KAAK,CAAC,EAAc,EAAE;IACjD,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS;QAC5B,OAAO,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAA;IACvC,CAAC;CACD,CAAC,CAAA"}
@@ -10,7 +10,7 @@ import type { UnionOfValues } from './union_of_values.js';
10
10
  *
11
11
  * You can also change it to `strict` mode.
12
12
  *
13
- * 🔧 *utilities*
13
+ * 🦴 *utilities*
14
14
  *
15
15
  * @example
16
16
  * ```ts
package/esm/merge.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ import type { NonComposableTypes } from './composable_types.js';
2
+ import type { AnyRecord } from './object/AnyRecord.js';
3
+ import type { IsDisjoint } from './object/IsDisjoint.js';
4
+ import type { KeyTypes } from './object/KeyTypes.js';
5
+ import type { OptionalKeys } from './object/OptionalKeys.js';
6
+ import type { Properties } from './object/properties.js';
7
+ import type { IsLiteral } from './predicates/literal.js';
8
+ /**
9
+ * Left join type `A` with type `B`.
10
+ *
11
+ * It handles cases like A or B are `Record`,
12
+ * joining between required and optional props, etc.
13
+ */
14
+ export type Merge<A, B> = [A, B] extends [NonComposableTypes, unknown] ? B : [A, B] extends [unknown, NonComposableTypes] ? A : A extends AnyRecord ? B extends AnyRecord ? IsDisjoint<A, B> extends true ? A & B : ([keyof A, keyof B] extends [infer KA extends KeyTypes, infer KB extends KeyTypes] ? (IsLiteral<KA> extends true ? (IsLiteral<KB> extends true ? ([OptionalKeys<A>, OptionalKeys<B>] extends [infer PKA extends KeyTypes, infer PKB extends KeyTypes] ? {
15
+ [k in PKA & PKB]?: A[k] | B[k] | undefined;
16
+ } & {
17
+ [k in Exclude<KA & KB, PKA | PKB>]: Merge.JoinProps<A[k], B[k]>;
18
+ } & {
19
+ [k in Exclude<KA, PKA | KB>]: A[k];
20
+ } & {
21
+ [k in Exclude<KB, PKB>]: B[k];
22
+ } & {
23
+ [k in Exclude<KA & PKB, PKA>]: Exclude<A[k] | Partial<B[k]>, undefined>;
24
+ } : never) : Properties<{
25
+ [k in Exclude<KA, KA & KB>]: A[k];
26
+ } & {
27
+ [k in Exclude<KB, KA & KB>]: B[k];
28
+ } & {
29
+ [k in KA & KB]: A[k] | B[k];
30
+ }>) : (IsLiteral<KB> extends true ? {
31
+ [k in Exclude<KA, KB>]: A[k];
32
+ } & {
33
+ [k in keyof B]: B[k];
34
+ } : {
35
+ [k in Exclude<KA, KA & KB>]: A[k];
36
+ } & {
37
+ [k in Exclude<KB, KA & KB>]: B[k];
38
+ } & {
39
+ [k in KA & KB]: A[k] | B[k];
40
+ })) : never) : never : never;
41
+ export declare namespace Merge {
42
+ type JoinProps<A, B> = A extends NonComposableTypes ? B : (B extends NonComposableTypes ? A : A & B);
43
+ }
44
+ /**
45
+ * Left join `a` with `b`.
46
+ *
47
+ * This returns the proper type of `{ ...a, ...b }`
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * leftJoin({ a: 1 }, {} as { a?: string | undefined }) // { a: number | string }
52
+ * ```
53
+ */
54
+ export declare function merge<A, B>(a: A, b: B): Merge<A, B>;
55
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../ts/merge.ts"],"names":[],"mappings":"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"}
package/esm/merge.js ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Left join `a` with `b`.
3
+ *
4
+ * This returns the proper type of `{ ...a, ...b }`
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * leftJoin({ a: 1 }, {} as { a?: string | undefined }) // { a: number | string }
9
+ * ```
10
+ */
11
+ export function merge(a, b) {
12
+ return { ...a, ...b };
13
+ }
14
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../ts/merge.ts"],"names":[],"mappings":"AA2DA;;;;;;;;;EASE;AACF,MAAM,UAAU,KAAK,CAAO,CAAI,EAAE,CAAI;IACrC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAS,CAAA;AAC7B,CAAC"}
@@ -2,14 +2,8 @@ import type { IsEqual } from '../equal/equal.js';
2
2
  import type { AnyRecord } from './AnyRecord.js';
3
3
  import type { IsDisjoint } from './IsDisjoint.js';
4
4
  import type { KeysWithDiffType } from './KeysWithDiffType.js';
5
- import type { Properties } from './properties.js';
6
5
  export type ANotB<A extends AnyRecord, B extends AnyRecord> = IsEqual<A, B> extends true ? never : IsDisjoint<A, B> extends true ? A : {
7
6
  [k in Exclude<keyof A, keyof B> | KeysWithDiffType<A, B>]: A[k];
8
7
  };
9
8
  export type BNotA<A extends AnyRecord, B extends AnyRecord> = ANotB<B, A>;
10
- export type LeftJoin<A extends AnyRecord, B extends AnyRecord> = IsEqual<A, B> extends true ? A : IsDisjoint<A, B> extends true ? A & B : Properties<{
11
- [k in Exclude<keyof A, keyof B>]: A[k];
12
- } & {
13
- [k in keyof B]: B[k];
14
- }>;
15
9
  //# sourceMappingURL=ANotB.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ANotB.d.ts","sourceRoot":"","sources":["../../ts/object/ANotB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrF,KAAK,GACL,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GACD;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAEtE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACxF,CAAC,GACD,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GAAG,CAAC,GACL,UAAU,CAAC;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"ANotB.d.ts","sourceRoot":"","sources":["../../ts/object/ANotB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GACrF,KAAK,GACL,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAC7B,CAAC,GACD;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAEtE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA"}
@@ -1,2 +1,3 @@
1
- export type AnyRecord = Record<keyof any, any>;
1
+ import type { KeyTypes } from './KeyTypes.js';
2
+ export type AnyRecord = Record<KeyTypes, any>;
2
3
  //# sourceMappingURL=AnyRecord.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnyRecord.d.ts","sourceRoot":"","sources":["../../ts/object/AnyRecord.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"AnyRecord.d.ts","sourceRoot":"","sources":["../../ts/object/AnyRecord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- export type { ANotB, BNotA, LeftJoin } from './ANotB.js';
1
+ export type { ANotB, BNotA } from './ANotB.js';
2
2
  export type { AnyRecord } from './AnyRecord.js';
3
3
  export type { ExcludePropType } from './ExcludePropType.js';
4
4
  export type { IsDisjoint } from './IsDisjoint.js';
@@ -9,8 +9,8 @@ export type { KeysWithDiffType } from './KeysWithDiffType.js';
9
9
  export type { KnownKeys } from './KnownKeys.js';
10
10
  export type { OptionalKeys } from './OptionalKeys.js';
11
11
  export type { Partial, PartialExcept, PartialOmit, PartialPick } from './Partial.js';
12
+ export type * from './optional_key.js';
12
13
  export type { RecursiveIntersect } from './RecursiveIntersect.js';
13
- export type { RecursivePartial } from './recursive_partial.js';
14
14
  export type { RecursiveRequired } from './RecursiveRequired.js';
15
15
  export type { RequiredExcept, RequiredPick } from './Required.js';
16
16
  export type { RequiredKeys } from './RequiredKeys.js';
@@ -24,12 +24,14 @@ export * from './forEachKey.js';
24
24
  export * from './getField.js';
25
25
  export * from './hasKey.js';
26
26
  export * from './hasProperty.js';
27
+ export * from './left_join.js';
27
28
  export * from './mapKey.js';
28
29
  export * from './mapProperties.js';
29
30
  export * from './omit.js';
30
31
  export * from './pick.js';
31
32
  export type { Properties } from './properties.js';
32
33
  export * from './record.js';
34
+ export type { RecursivePartial } from './recursive_partial.js';
33
35
  export * from './reduceKey.js';
34
36
  export * from './replaceProperty.js';
35
37
  export * from './someKey.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,mBAAmB,mBAAmB,CAAA;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
@@ -6,6 +6,7 @@ export * from './forEachKey.js';
6
6
  export * from './getField.js';
7
7
  export * from './hasKey.js';
8
8
  export * from './hasProperty.js';
9
+ export * from './left_join.js';
9
10
  export * from './mapKey.js';
10
11
  export * from './mapProperties.js';
11
12
  export * from './omit.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAkBA,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAkBA,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,cAAc,aAAa,CAAA;AAE3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}