@rickard.antonsson/ts-utility 0.0.5 → 1.0.1

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
@@ -61,3 +61,49 @@ const result = groupBy(itemsWithSpecificGroups, item => item.group);
61
61
  // result now contains the grouped arrays.
62
62
  // typescript error occurs if you try to access result.noneexisting since its not in the group names
63
63
  ```
64
+
65
+ ## Other
66
+
67
+ ### Deep Partial Set
68
+
69
+ As the name implies, sets an objects and subobjects properties.
70
+ Optionally use a function to modify current value.
71
+
72
+ ```typescript
73
+ it('should add 10 gold, 10 silver and 10 copper to persons pouch', () => {
74
+ const person = {
75
+ personal: {
76
+ firstName: 'Test',
77
+ lastName: 'Testsson',
78
+ },
79
+ items: {
80
+ pouch: {color: 'blue', contents: {gold: 10, silver: 20, copper: 30}},
81
+ },
82
+ };
83
+
84
+ const result = deepPartialSet(person, {
85
+ items: {
86
+ pouch: {
87
+ contents: {
88
+ gold: i => i + 10,
89
+ silver: i => i + 10,
90
+ copper: i => i + 10,
91
+ },
92
+ },
93
+ },
94
+ });
95
+
96
+ expect(result.items.pouch.contents).toEqual({
97
+ gold: 20,
98
+ silver: 30,
99
+ copper: 40,
100
+ });
101
+ // Keep unchanged objects
102
+ expect(result.personal).toBe(person.personal);
103
+ // New objects for the complete tree where a child has a change
104
+ expect(result).not.toBe(person);
105
+ expect(result.items).not.toBe(person.items);
106
+ expect(result.items.pouch).not.toBe(person.items.pouch);
107
+ expect(result.items.pouch.contents).not.toBe(person.items.pouch.contents);
108
+ });
109
+ ```
@@ -1,6 +1,6 @@
1
- type SortByFunction<T> = ((item: T) => string) | ((item: T) => number);
1
+ type Getter<T> = ((item: T) => string) | ((item: T) => number);
2
2
  type SortOrder = 'asc' | 'desc';
3
- export declare const asc: <T>(sortBy: SortByFunction<T>) => [SortByFunction<T>, SortOrder];
4
- export declare const desc: <T>(sortBy: SortByFunction<T>) => [SortByFunction<T>, SortOrder];
5
- export declare const simpleSort: <T>(list: T[], ...sortByList: [SortByFunction<T>, SortOrder][]) => T[];
3
+ export declare const asc: <T>(getter: Getter<T>) => [Getter<T>, SortOrder];
4
+ export declare const desc: <T>(getter: Getter<T>) => [Getter<T>, SortOrder];
5
+ export declare const simpleSort: <T>(list: T[], ...getterList: [Getter<T>, SortOrder][]) => T[];
6
6
  export {};
@@ -1,25 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.simpleSort = exports.desc = exports.asc = void 0;
4
- const asc = (sortBy) => [sortBy, 'asc'];
4
+ const asc = (getter) => [
5
+ getter,
6
+ 'asc',
7
+ ];
5
8
  exports.asc = asc;
6
- const desc = (sortBy) => [sortBy, 'desc'];
9
+ const desc = (getter) => [
10
+ getter,
11
+ 'desc',
12
+ ];
7
13
  exports.desc = desc;
8
- const simpleSort = (list, ...sortByList) => {
9
- if (!(sortByList === null || sortByList === void 0 ? void 0 : sortByList.length))
14
+ const simpleSort = (list, ...getterList) => {
15
+ if (!(getterList === null || getterList === void 0 ? void 0 : getterList.length))
10
16
  return [...list];
11
- const sortByListWithOrder = sortByList.map(sortBy => {
12
- return Array.isArray(sortBy) ? sortBy : [sortBy, 'asc'];
13
- });
14
- const indexAndValuesList = list.map((item, index) => [
15
- index,
16
- ...sortByListWithOrder.map(([sortBy]) => sortBy(item)),
17
- ]);
17
+ const indexAndValuesList = list.map((item, index) => [index, ...getterList.map(([sortBy]) => sortBy(item))]);
18
18
  indexAndValuesList.sort((a, b) => {
19
- for (let i = 0; i < sortByListWithOrder.length; i++) {
19
+ for (let i = 0; i < getterList.length; i++) {
20
20
  const aValue = a[i + 1];
21
21
  const bValue = b[i + 1];
22
- const sortAscending = sortByListWithOrder[i][1] !== 'desc';
22
+ const sortAscending = getterList[i][1] !== 'desc';
23
23
  let result = 0;
24
24
  if (typeof aValue === 'string' && typeof bValue === 'string') {
25
25
  result = sortAscending
@@ -1 +1 @@
1
- {"version":3,"file":"simple-sort.js","sourceRoot":"","sources":["../../../../src/functions/array/simple-sort.ts"],"names":[],"mappings":";;;AAGO,MAAM,GAAG,GAAG,CACjB,MAAyB,EACO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAFxC,QAAA,GAAG,OAEqC;AAC9C,MAAM,IAAI,GAAG,CAClB,MAAyB,EACO,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAFzC,QAAA,IAAI,QAEqC;AAE/C,MAAM,UAAU,GAAG,CACxB,IAAS,EACT,GAAG,UAAiD,EAC/C,EAAE;IACP,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1C,MAAM,mBAAmB,GAAqC,UAAU,CAAC,GAAG,CAC1E,MAAM,CAAC,EAAE;QACP,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC,CACF,CAAC;IACF,MAAM,kBAAkB,GAA4C,IAAI,CAAC,GAAG,CAC1E,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACf,KAAK;QACL,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACvD,CACF,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;YAE3D,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5D,MAAM,GAAG,aAAa;oBACpB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC9B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAClC;YAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5D,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;aAC5D;YAED,IAAI,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AA5CW,QAAA,UAAU,cA4CrB"}
1
+ {"version":3,"file":"simple-sort.js","sourceRoot":"","sources":["../../../../src/functions/array/simple-sort.ts"],"names":[],"mappings":";;;AAGO,MAAM,GAAG,GAAG,CAAI,MAAiB,EAA0B,EAAE,CAAC;IACnE,MAAM;IACN,KAAK;CACN,CAAC;AAHW,QAAA,GAAG,OAGd;AACK,MAAM,IAAI,GAAG,CAAI,MAAiB,EAA0B,EAAE,CAAC;IACpE,MAAM;IACN,MAAM;CACP,CAAC;AAHW,QAAA,IAAI,QAGf;AAEK,MAAM,UAAU,GAAG,CACxB,IAAS,EACT,GAAG,UAAoC,EAClC,EAAE;IACP,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAA4C,IAAI,CAAC,GAAG,CAC1E,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CACxE,CAAC;IAEF,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;YAElD,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5D,MAAM,GAAG,aAAa;oBACpB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC9B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAClC;YAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5D,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;aAC5D;YAED,IAAI,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AApCW,QAAA,UAAU,cAoCrB"}
@@ -1,2 +1,3 @@
1
1
  export * from './array';
2
2
  export * from './list';
3
+ export * from './other/deep-partial-set';
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./array"), exports);
18
18
  __exportStar(require("./list"), exports);
19
+ __exportStar(require("./other/deep-partial-set"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,2DAAyC"}
@@ -1,2 +1,3 @@
1
1
  import { List } from '../../interfaces/list';
2
- export declare const filter: <T>(list: List<T>, filter: (item: T) => boolean) => List<T>;
2
+ import { AnyObject } from '../../types';
3
+ export declare const filter: <T extends AnyObject>(list: List<T>, filter: (item: T) => boolean) => List<T>;
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filter = void 0;
4
- const filter = (list, filter) => Object.entries(list).reduce((acc, [key, item]) => (filter(item) ? { ...acc, [key]: item } : acc), {});
4
+ const filter = (list, filter) => Object.entries(list).reduce(
5
+ // (acc, [key, item]) => (filter(item) ? {...acc, [key]: item} : acc),
6
+ (acc, [key, item]) => {
7
+ if (filter(item))
8
+ acc[key] = item;
9
+ return acc;
10
+ }, {});
5
11
  exports.filter = filter;
6
12
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/functions/list/filter.ts"],"names":[],"mappings":";;;AAEO,MAAM,MAAM,GAAG,CACpB,IAAa,EACb,MAA4B,EACnB,EAAE,CACX,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAClE,EAAE,CACH,CAAC;AAPS,QAAA,MAAM,UAOf"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/functions/list/filter.ts"],"names":[],"mappings":";;;AAGO,MAAM,MAAM,GAAG,CACpB,IAAa,EACb,MAA4B,EACnB,EAAE,CACX,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM;AACzB,sEAAsE;AACtE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,IAAI,MAAM,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC,EACD,EAAa,CACd,CAAC;AAXS,QAAA,MAAM,UAWf"}
@@ -1,2 +1,2 @@
1
1
  import { List } from '../../interfaces/list';
2
- export declare const map: <T, TFunction extends (item: T) => any>(items: List<T>, fn: TFunction) => List<ReturnType<TFunction>>;
2
+ export declare const map: <T, TFunction extends (item: T) => unknown>(items: List<T>, fn: TFunction) => List<ReturnType<TFunction>>;
@@ -0,0 +1,2 @@
1
+ import { AnyObject, DeepPartialOrFn, NoExtras } from '../../types';
2
+ export declare function deepPartialSet<A extends AnyObject, B extends AnyObject & DeepPartialOrFn<A> & NoExtras<DeepPartialOrFn<A>, B>>(a: A, b: B): A;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deepPartialSet = void 0;
4
+ function deepPartialSet(a, b) {
5
+ const aKeys = Object.keys(a);
6
+ const bKeys = Object.keys(b);
7
+ const result = { ...a };
8
+ let changed = false;
9
+ aKeys.forEach(key => {
10
+ if (!bKeys.includes(key))
11
+ return;
12
+ let incoming;
13
+ switch (typeof b[key]) {
14
+ case 'function':
15
+ incoming = b[key](a[key]);
16
+ break;
17
+ case 'object':
18
+ incoming = deepPartialSet(a[key], b[key]);
19
+ break;
20
+ default:
21
+ incoming = b[key];
22
+ break;
23
+ }
24
+ if (incoming === result[key])
25
+ return;
26
+ result[key] = incoming;
27
+ changed = true;
28
+ });
29
+ return changed ? result : a;
30
+ }
31
+ exports.deepPartialSet = deepPartialSet;
32
+ //# sourceMappingURL=deep-partial-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-partial-set.js","sourceRoot":"","sources":["../../../../src/functions/other/deep-partial-set.ts"],"names":[],"mappings":";;;AAEA,SAAgB,cAAc,CAG5B,CAAI,EAAE,CAAI;IACV,MAAM,KAAK,GAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAM,EAAC,GAAG,CAAC,EAAC,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO;QACjC,IAAI,QAAuB,CAAC;QAE5B,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE;YACrB,KAAK,UAAU;gBACb,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,QAAQ;gBACX,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1C,MAAM;YACR;gBACE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM;SACT;QAED,IAAI,QAAQ,KAAK,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO;QAErC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACvB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAhCD,wCAgCC"}
@@ -1,2 +1,2 @@
1
- import { Fn as AnyFn } from '../../types/any-fn';
1
+ import { AnyFn } from '../../types';
2
2
  export declare function debounce<Fn extends AnyFn>(fn: Fn, time?: number): (...args: Parameters<Fn>) => void;
@@ -1,2 +1,2 @@
1
- import { Fn as AnyFn } from '../../types/any-fn';
1
+ import { AnyFn } from '../../types';
2
2
  export declare function memoize<Fn extends AnyFn>(fn: Fn): (...args: Parameters<Fn>) => ReturnType<Fn>;
@@ -1 +1 @@
1
- {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../../../src/functions/time/memoize.ts"],"names":[],"mappings":";;;AAEA,SAAgB,OAAO,CAAmB,EAAM;IAC9C,MAAM,QAAQ,GAAoC,EAAE,CAAC;IAErD,OAAO,CAAC,GAAG,IAAoB,EAAkB,EAAE;;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAA,QAAQ,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAPD,0BAOC"}
1
+ {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../../../src/functions/time/memoize.ts"],"names":[],"mappings":";;;AAEA,SAAgB,OAAO,CAAmB,EAAM;IAC9C,MAAM,QAAQ,GAAoC,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,IAAoB,EAAkB,EAAE;;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAA,QAAQ,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAND,0BAMC"}
@@ -1,3 +1,3 @@
1
1
  export * from './functions';
2
2
  export { List } from './interfaces/list';
3
- export { RecursivePartial } from './types/recursive-partial';
3
+ export { deepPartialSet } from './functions/other/deep-partial-set';
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.deepPartialSet = void 0;
17
18
  __exportStar(require("./functions"), exports);
19
+ var deep_partial_set_1 = require("./functions/other/deep-partial-set");
20
+ Object.defineProperty(exports, "deepPartialSet", { enumerable: true, get: function () { return deep_partial_set_1.deepPartialSet; } });
18
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAE5B,uEAAkE;AAA1D,kHAAA,cAAc,OAAA"}
@@ -3,23 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const promises_1 = require("node:fs/promises");
4
4
  const functions_1 = require("./functions");
5
5
  const simple_sort_1 = require("./functions/array/simple-sort");
6
+ // import faker from '@faker-js/faker';
6
7
  // function generatePerson() {
7
- // const contextualCard = faker.helpers.contextualCard();
8
+ // const contextualCard = faker.helpers.contextualCard();
8
9
  // return {
9
10
  // ...contextualCard,
10
11
  // joined: faker.date.past(10),
11
12
  // };
12
13
  // }
13
14
  // console.time('Generate');
14
- // const personList = Array(100000);
15
- // for (let i = 0; i < 100000; i++) {
15
+ // const personList = Array(1000);
16
+ // for (let i = 0; i < 1000; i++) {
16
17
  // if (i % 10000 === 0) console.log(i / 1000);
17
18
  // personList[i] = generatePerson();
18
19
  // }
19
20
  // console.timeEnd('Generate');
20
21
  // writeFile('person-list.json', JSON.stringify(personList));
21
22
  async function main() {
22
- const cards = JSON.parse(await (0, promises_1.readFile)('src/person-list.json', 'utf-8'));
23
+ const cards = JSON.parse(await (0, promises_1.readFile)('person-list.json', 'utf-8'));
23
24
  console.log(cards[0]);
24
25
  console.time('Time to sort other');
25
26
  // const sortedCardsOther =
@@ -1 +1 @@
1
- {"version":3,"file":"test-speed.js","sourceRoot":"","sources":["../../src/test-speed.ts"],"names":[],"mappings":";;AACA,+CAA0C;AAC1C,2CAAuC;AACvC,+DAAwD;AAExD,8BAA8B;AAC9B,2DAA2D;AAC3D,aAAa;AACb,yBAAyB;AACzB,mCAAmC;AACnC,OAAO;AACP,IAAI;AAEJ,4BAA4B;AAC5B,oCAAoC;AACpC,qCAAqC;AACrC,gDAAgD;AAChD,sCAAsC;AACtC,IAAI;AACJ,+BAA+B;AAC/B,6DAA6D;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAqB,IAAI,CAAC,KAAK,CACxC,MAAM,IAAA,mBAAQ,EAAC,sBAAsB,EAAE,OAAO,CAAC,CAChD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,2BAA2B;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,IAAA,sBAAU,EACR,KAAK,EACL,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,IAAA,kBAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjB,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7B,sBAAsB;IACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,IAAA,sBAAU,EACR,KAAK,EACL,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,IAAA,kBAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjB,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC,eAAe;IACf,8EAA8E;IAC9E,KAAK;AACP,CAAC;AAED,IAAI,EAAE,CAAC;AAEP,SAAS,wCAAwC,CAAC,IAAS;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;YACxB,KAAK,QAAQ;gBACX,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YAClC,KAAK,QAAQ;gBACX,OAAO,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"test-speed.js","sourceRoot":"","sources":["../../src/test-speed.ts"],"names":[],"mappings":";;AACA,+CAA0C;AAC1C,2CAAuC;AACvC,+DAAwD;AAGxD,uCAAuC;AAEvC,8BAA8B;AAC9B,0DAA0D;AAC1D,aAAa;AACb,yBAAyB;AACzB,mCAAmC;AACnC,OAAO;AACP,IAAI;AAEJ,4BAA4B;AAC5B,kCAAkC;AAClC,mCAAmC;AACnC,gDAAgD;AAChD,sCAAsC;AACtC,IAAI;AACJ,+BAA+B;AAC/B,6DAA6D;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAqB,IAAI,CAAC,KAAK,CACxC,MAAM,IAAA,mBAAQ,EAAC,kBAAkB,EAAE,OAAO,CAAC,CAC5C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,2BAA2B;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,IAAA,sBAAU,EACR,KAAK,EACL,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,IAAA,kBAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjB,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7B,sBAAsB;IACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,IAAA,sBAAU,EACR,KAAK,EACL,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,IAAA,kBAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjB,IAAA,iBAAG,EAAC,CAAC,CAAC,EAAE,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC,eAAe;IACf,8EAA8E;IAC9E,KAAK;AACP,CAAC;AAED,IAAI,EAAE,CAAC;AAEP,SAAS,wCAAwC,CAAC,IAAe;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;YACxB,KAAK,QAAQ;gBACX,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YAClC,KAAK,QAAQ;gBACX,OAAO,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rickard.antonsson/ts-utility",
3
- "version": "0.0.5",
3
+ "version": "1.0.1",
4
4
  "description": "",
5
5
  "main": "build/src/index.js",
6
6
  "types": "build/src/index.d.ts",
@@ -1 +0,0 @@
1
- export type Fn<Args = any[], ReturnType = any> = (...args: Args extends any[] ? Args : never) => ReturnType;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=any-fn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"any-fn.js","sourceRoot":"","sources":["../../../src/types/any-fn.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import { Fn } from './any-fn';
2
- export type RecursivePartial<T> = {
3
- [P in keyof T]?: T[P] extends object ? RecursivePartial<T[P]> : T[P];
4
- };
5
- export type RecursivePartialOr<T, TOr> = {
6
- [P in keyof T]?: T[P] extends object ? RecursivePartialOr<T[P], TOr> : T[P] | TOr;
7
- };
8
- export type RecursivePartialOrFn<T> = {
9
- [P in keyof T]?: T[P] extends object ? RecursivePartialOrFn<T[P]> : T[P] | Fn<[T[P], T[P]]>;
10
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=recursive-partial.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recursive-partial.js","sourceRoot":"","sources":["../../../src/types/recursive-partial.ts"],"names":[],"mappings":""}