type-plus 4.13.2 → 4.14.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.
package/README.md CHANGED
@@ -462,6 +462,7 @@ So you may encounter some weird behavior if your logic is complex.
462
462
  - `omit(obj, ...props)`: omit properties from `obj`.
463
463
  - `pick(obj, ...props)`: pick properties from `obj`.
464
464
  - `record<K, V>(value?)`: create a `Record<K, V>` without extra object prototype.
465
+ - `record<R>(value?)`: create a record `R` (e.g. `{ a: number }`) without extra object prototype.
465
466
  - `required(...)`: merge options and remove `Partial<T>`. From [`unpartial`](https://github.com/unional/unpartial)
466
467
  - `requiredDeep(...)`: merge options deeply and remove `Partial<T>`. From [`unpartial`](https://github.com/unional/unpartial)
467
468
  - `split(target, ...splitters)`: split one object into multiple objects.
@@ -1,7 +1,13 @@
1
1
  import { Widen } from '../utils/index.js';
2
2
  import { KeyTypes } from './KeyTypes.js';
3
3
  /**
4
- * Creates a `Record<Key, Value>`
4
+ * Creates a `Record<Key, Value>` or your custom record.
5
+ * By default,
6
+ * `record()` will widen the keys (`K`) you specified in the `value` to form `Record<Widen<K>, V>`.
7
+ *
8
+ * You can also override it by specifying a custom record, e.g.:
9
+ * `record<{ a: number }>()`
5
10
  */
6
11
  export declare function record<K extends KeyTypes, V>(value?: Record<K, V>): Record<Widen<K>, V>;
12
+ export declare function record<R extends Record<any, any>>(value?: R): R;
7
13
  //# sourceMappingURL=record.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAGvF"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACxF,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA"}
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.record = void 0;
4
- /**
5
- * Creates a `Record<Key, Value>`
6
- */
7
4
  function record(value) {
8
5
  var r = Object.create(null);
9
6
  return (value ? Object.assign(r, value) : r);
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,SAAgB,MAAM,CAAwB,KAAoB;IAChE,IAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAc,CAAA;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAwB,CAAA;AACrE,CAAC;AAHD,wBAGC"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":";;;AAcA,SAAgB,MAAM,CAAC,KAAW;IAChC,IAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAc,CAAA;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc,CAAA;AAC3D,CAAC;AAHD,wBAGC"}
@@ -43,4 +43,10 @@ test('Object.keys() gets the keys of the initial value', function () {
43
43
  var a = (0, index_js_1.record)({ a: 1, b: 2 });
44
44
  expect(Object.keys(a)).toEqual(['a', 'b']);
45
45
  });
46
+ it('can specify a custom record', function () {
47
+ var a = (0, index_js_1.record)();
48
+ index_js_1.isType.equal();
49
+ var b = (0, index_js_1.record)({ b: 'b' });
50
+ index_js_1.isType.equal();
51
+ });
46
52
  //# sourceMappingURL=record.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.spec.js","sourceRoot":"","sources":["../../ts/object/record.spec.ts"],"names":[],"mappings":";;AAAA,wCAAsD;AAEtD,IAAI,CAAC,sDAAsD,EAAE;IAC3D,IAAM,CAAC,GAAG,IAAA,iBAAM,GAAE,CAAA;IAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACR,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACZ,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IAClB,iBAAM,CAAC,KAAK,EAA6C,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,6BAA6B,EAAE;IAClC,IAAM,CAAC,GAAG,IAAA,iBAAM,GAAkB,CAAA;IAClC,sCAAsC;IACtC,yDAAyD;IACzD,gCAAgC;IAChC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACR,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACV,iBAAM,CAAC,KAAK,EAA0C,CAAA;AACxD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,cAAc,EAAE;IACnB,IAAM,CAAC,GAAG,IAAA,iBAAM,GAAE,CAAA;IAClB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sDAAsD,EAAE;IAC3D,IAAM,YAAY,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACrC,iBAAM,CAAC,KAAK,EAAqD,CAAA;IAEjE,IAAM,YAAY,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACrC,iBAAM,CAAC,KAAK,EAAqD,CAAA;IAEjE,IAAM,iBAAiB,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAC,EAAW,CAAC,CAAA;IACnD,iBAAM,CAAC,KAAK,EAAqD,CAAA;IAEjE,IAAM,kBAAkB,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAU,EAAE,CAAC,CAAA;IACpD,iBAAM,CAAC,KAAK,EAAsD,CAAA;IAElE,IAAM,kBAAkB,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAU,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5D,iBAAM,CAAC,KAAK,EAA+D,CAAA;IAE3E,IAAM,kBAAkB,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAU,EAAE,CAAC,EAAE,GAAY,EAAE,CAAC,CAAA;IACrE,iBAAM,CAAC,KAAK,EAA4D,CAAA;AAC1E,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iCAAiC,EAAE;IACtC,IAAM,CAAC,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,kDAAkD,EAAE;IACvD,IAAM,CAAC,GAAG,IAAA,iBAAM,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5C,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"record.spec.js","sourceRoot":"","sources":["../../ts/object/record.spec.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
1
  import { Widen } from '../utils/index.js';
2
2
  import { KeyTypes } from './KeyTypes.js';
3
3
  /**
4
- * Creates a `Record<Key, Value>`
4
+ * Creates a `Record<Key, Value>` or your custom record.
5
+ * By default,
6
+ * `record()` will widen the keys (`K`) you specified in the `value` to form `Record<Widen<K>, V>`.
7
+ *
8
+ * You can also override it by specifying a custom record, e.g.:
9
+ * `record<{ a: number }>()`
5
10
  */
6
11
  export declare function record<K extends KeyTypes, V>(value?: Record<K, V>): Record<Widen<K>, V>;
12
+ export declare function record<R extends Record<any, any>>(value?: R): R;
7
13
  //# sourceMappingURL=record.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAGvF"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACxF,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Creates a `Record<Key, Value>`
3
- */
4
1
  export function record(value) {
5
2
  const r = Object.create(null);
6
3
  return (value ? Object.assign(r, value) : r);
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,UAAU,MAAM,CAAwB,KAAoB;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAc,CAAA;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAwB,CAAA;AACrE,CAAC"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../ts/object/record.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,MAAM,CAAC,KAAW;IAChC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAc,CAAA;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc,CAAA;AAC3D,CAAC"}
@@ -41,4 +41,10 @@ test('Object.keys() gets the keys of the initial value', () => {
41
41
  const a = record({ a: 1, b: 2 });
42
42
  expect(Object.keys(a)).toEqual(['a', 'b']);
43
43
  });
44
+ it('can specify a custom record', () => {
45
+ const a = record();
46
+ isType.equal();
47
+ const b = record({ b: 'b' });
48
+ isType.equal();
49
+ });
44
50
  //# sourceMappingURL=record.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.spec.js","sourceRoot":"","sources":["../../ts/object/record.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,EAAE,MAAM,aAAa,CAAA;AAEtD,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,CAAC,GAAG,MAAM,EAAE,CAAA;IAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACR,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACZ,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IAClB,MAAM,CAAC,KAAK,EAA6C,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACvC,MAAM,CAAC,GAAG,MAAM,EAAkB,CAAA;IAClC,sCAAsC;IACtC,yDAAyD;IACzD,gCAAgC;IAChC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACR,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACV,MAAM,CAAC,KAAK,EAA0C,CAAA;AACxD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,MAAM,CAAC,GAAG,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,CAAC,KAAK,EAAqD,CAAA;IAEjE,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,CAAC,KAAK,EAAqD,CAAA;IAEjE,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAW,CAAC,CAAA;IACnD,MAAM,CAAC,KAAK,EAAqD,CAAA;IAEjE,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,KAAK,EAAsD,CAAA;IAElE,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5D,MAAM,CAAC,KAAK,EAA+D,CAAA;IAE3E,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,CAAC,EAAE,GAAY,EAAE,CAAC,CAAA;IACrE,MAAM,CAAC,KAAK,EAA4D,CAAA;AAC1E,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5C,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"record.spec.js","sourceRoot":"","sources":["../../ts/object/record.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "4.13.2",
3
+ "version": "4.14.0",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -3,9 +3,16 @@ import type { AnyRecord } from './AnyRecord.js'
3
3
  import { KeyTypes } from './KeyTypes.js'
4
4
 
5
5
  /**
6
- * Creates a `Record<Key, Value>`
6
+ * Creates a `Record<Key, Value>` or your custom record.
7
+ * By default,
8
+ * `record()` will widen the keys (`K`) you specified in the `value` to form `Record<Widen<K>, V>`.
9
+ *
10
+ * You can also override it by specifying a custom record, e.g.:
11
+ * `record<{ a: number }>()`
7
12
  */
8
- export function record<K extends KeyTypes, V>(value?: Record<K, V>): Record<Widen<K>, V> {
13
+ export function record<K extends KeyTypes, V>(value?: Record<K, V>): Record<Widen<K>, V>
14
+ export function record<R extends Record<any, any>>(value?: R): R
15
+ export function record(value?: any) {
9
16
  const r = Object.create(null) as AnyRecord
10
- return (value ? Object.assign(r, value) : r) as Record<Widen<K>, V>
17
+ return (value ? Object.assign(r, value) : r) as AnyRecord
11
18
  }