@dereekb/util 7.8.0 → 7.10.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 (42) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/package.json +1 -1
  3. package/src/lib/array/array.factory.d.ts +32 -0
  4. package/src/lib/array/array.factory.js +25 -0
  5. package/src/lib/array/array.factory.js.map +1 -0
  6. package/src/lib/array/array.make.d.ts +15 -5
  7. package/src/lib/array/array.make.js +12 -10
  8. package/src/lib/array/array.make.js.map +1 -1
  9. package/src/lib/array/array.unique.d.ts +4 -2
  10. package/src/lib/array/array.unique.js +9 -3
  11. package/src/lib/array/array.unique.js.map +1 -1
  12. package/src/lib/array/index.d.ts +1 -0
  13. package/src/lib/array/index.js +1 -0
  14. package/src/lib/array/index.js.map +1 -1
  15. package/src/lib/getter/getter.d.ts +10 -1
  16. package/src/lib/getter/getter.js +13 -1
  17. package/src/lib/getter/getter.js.map +1 -1
  18. package/src/lib/getter/getter.util.d.ts +12 -0
  19. package/src/lib/getter/getter.util.js +16 -0
  20. package/src/lib/getter/getter.util.js.map +1 -0
  21. package/src/lib/getter/index.d.ts +1 -0
  22. package/src/lib/getter/index.js +1 -0
  23. package/src/lib/getter/index.js.map +1 -1
  24. package/src/lib/grouping.d.ts +29 -0
  25. package/src/lib/grouping.js +32 -1
  26. package/src/lib/grouping.js.map +1 -1
  27. package/src/lib/model/id.batch.d.ts +36 -0
  28. package/src/lib/model/id.batch.js +58 -0
  29. package/src/lib/model/id.batch.js.map +1 -0
  30. package/src/lib/model/index.d.ts +1 -0
  31. package/src/lib/model/index.js +1 -0
  32. package/src/lib/model/index.js.map +1 -1
  33. package/src/lib/number/random.d.ts +21 -4
  34. package/src/lib/number/random.js +38 -6
  35. package/src/lib/number/random.js.map +1 -1
  36. package/src/lib/promise/promise.loop.d.ts +11 -1
  37. package/src/lib/promise/promise.loop.js +16 -1
  38. package/src/lib/promise/promise.loop.js.map +1 -1
  39. package/src/lib/value/use.d.ts +2 -2
  40. package/src/lib/value/use.js.map +1 -1
  41. package/test/CHANGELOG.md +12 -0
  42. package/test/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,36 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.10.0](https://github.com/dereekb/dbx-components/compare/v7.9.0-dev...v7.10.0) (2022-06-11)
6
+
7
+
8
+ ### Features
9
+
10
+ * added firestoreIdBatchVerifierFactory() ([182f086](https://github.com/dereekb/dbx-components/commit/182f086f80671fa38ed1268a6c98854f114ba629))
11
+ * added idBatchFactory() ([b39510b](https://github.com/dereekb/dbx-components/commit/b39510b7b617e927da48efe03b3121f74fe192e8))
12
+
13
+
14
+
15
+ # [7.9.0](https://github.com/dereekb/dbx-components/compare/v7.8.1-dev...v7.9.0) (2022-06-11)
16
+
17
+
18
+ ### Features
19
+
20
+ * added arrayFactory() ([5a7ef13](https://github.com/dereekb/dbx-components/commit/5a7ef13116ebbacd8b7a9502e3298fd30708f944))
21
+ * added makeWithFactory() ([4a6f4a0](https://github.com/dereekb/dbx-components/commit/4a6f4a01a04e7800653bc942fe56b27ec457813e))
22
+ * added performBatchLoop() ([7c6c947](https://github.com/dereekb/dbx-components/commit/7c6c9475eacfd3cc7f153ef949fef1187925a8cb))
23
+
24
+
25
+
26
+ ## [7.8.1](https://github.com/dereekb/dbx-components/compare/v7.8.0-dev...v7.8.1) (2022-06-10)
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * useAsync typings fixes with Maybe ([68f38a4](https://github.com/dereekb/dbx-components/commit/68f38a46559e48c61e8449622e69f2e610aeb1b4))
32
+
33
+
34
+
5
35
  # [7.8.0](https://github.com/dereekb/dbx-components/compare/v7.7.0-dev...v7.8.0) (2022-06-09)
6
36
 
7
37
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/util",
3
- "version": "7.8.0",
3
+ "version": "7.10.0",
4
4
  "type": "commonjs",
5
5
  "exports": {
6
6
  ".": {
@@ -0,0 +1,32 @@
1
+ import { Factory, FactoryWithIndex, FactoryWithRequiredInput } from '../getter/getter';
2
+ import { AsyncMapFunction } from '../value/map';
3
+ /**
4
+ * Factory that generates multiple values given a number of items to make.
5
+ */
6
+ export declare type ArrayFactory<T> = FactoryWithRequiredInput<T[], number>;
7
+ /**
8
+ * Async ArrayFactory
9
+ */
10
+ export declare type AsyncArrayFactory<T> = AsyncMapFunction<ArrayFactory<T>>;
11
+ /**
12
+ * Factory that generates a value for each input value.
13
+ */
14
+ export declare type ArrayInputFactory<I, O> = FactoryWithRequiredInput<O[], I[]>;
15
+ /**
16
+ * Async ArrayInputFactory
17
+ */
18
+ export declare type AsyncArrayInputFactory<I, O> = AsyncMapFunction<ArrayInputFactory<I, O>>;
19
+ /**
20
+ * Creates a new ArrayFactory.
21
+ *
22
+ * @param factory
23
+ * @returns
24
+ */
25
+ export declare function arrayFactory<T>(factory: Factory<T> | FactoryWithIndex<T>): ArrayFactory<T>;
26
+ /**
27
+ * Creates a ArrayInputFactory.
28
+ *
29
+ * @param factory
30
+ * @returns
31
+ */
32
+ export declare function arrayInputFactory<O, I>(factory: FactoryWithRequiredInput<O, I>): ArrayInputFactory<I, O>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrayInputFactory = exports.arrayFactory = void 0;
4
+ const getter_1 = require("../getter/getter");
5
+ /**
6
+ * Creates a new ArrayFactory.
7
+ *
8
+ * @param factory
9
+ * @returns
10
+ */
11
+ function arrayFactory(factory) {
12
+ return (count) => (0, getter_1.makeWithFactory)(factory, count);
13
+ }
14
+ exports.arrayFactory = arrayFactory;
15
+ /**
16
+ * Creates a ArrayInputFactory.
17
+ *
18
+ * @param factory
19
+ * @returns
20
+ */
21
+ function arrayInputFactory(factory) {
22
+ return (input) => (0, getter_1.makeWithFactoryInput)(factory, input);
23
+ }
24
+ exports.arrayInputFactory = arrayInputFactory;
25
+ //# sourceMappingURL=array.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.factory.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.factory.ts"],"names":[],"mappings":";;;AAAA,6CAA8H;AAuB9H;;;;;GAKG;AACH,SAAgB,YAAY,CAAI,OAAyC;IACvE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,wBAAe,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAFD,oCAEC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAO,OAAuC;IAC7E,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC,IAAA,6BAAoB,EAAO,OAAO,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAFD,8CAEC"}
@@ -1,22 +1,32 @@
1
- import { MakeRandomFunctionInput, RandomNumberFunction } from '../number/random';
1
+ import { FactoryWithInput } from '../getter';
2
+ import { RandomNumberFactoryInput, RandomNumberFactory } from '../number/random';
2
3
  export interface MakeArray<T> {
3
4
  count: number;
4
- make: (i: number) => T;
5
+ /**
6
+ * Makes an item
7
+ */
8
+ make: FactoryWithInput<T, number>;
5
9
  }
6
10
  /**
7
11
  * Makes an array of values of a certain length using a generator function.
8
12
  *
9
13
  * @param param0
10
14
  * @returns
15
+ *
16
+ * @deprecated use makeWithFactory instead.
11
17
  */
12
18
  export declare function makeArray<T>({ count, make }: MakeArray<T>): T[];
13
- export interface MakeArrayRandom<T> extends Omit<MakeArray<T>, 'count'> {
14
- random: RandomNumberFunction | MakeRandomFunctionInput;
19
+ export interface RandomArrayFactoryConfig<T> extends Omit<MakeArray<T>, 'count'> {
20
+ random: RandomNumberFactory | RandomNumberFactoryInput;
15
21
  }
22
+ /**
23
+ * Creates an array of a random size and values.
24
+ */
25
+ export declare type RandomArrayFactory<T> = FactoryWithInput<T[], number>;
16
26
  /**
17
27
  * Makes a function that generates arrays of a random length of a specific type.
18
28
  *
19
29
  * @param config
20
30
  * @returns
21
31
  */
22
- export declare function makeRandomArrayFn<T>(config: MakeArrayRandom<T>): () => T[];
32
+ export declare function randomArrayFactory<T>(config: RandomArrayFactoryConfig<T>): RandomArrayFactory<T>;
@@ -1,19 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeRandomArrayFn = exports.makeArray = void 0;
3
+ exports.randomArrayFactory = exports.makeArray = void 0;
4
+ const getter_1 = require("../getter");
4
5
  const random_1 = require("../number/random");
6
+ const array_factory_1 = require("./array.factory");
5
7
  /**
6
8
  * Makes an array of values of a certain length using a generator function.
7
9
  *
8
10
  * @param param0
9
11
  * @returns
12
+ *
13
+ * @deprecated use makeWithFactory instead.
10
14
  */
11
15
  function makeArray({ count, make }) {
12
- const array = [];
13
- for (let i = 0; i < count; i += 1) {
14
- array.push(make(i));
15
- }
16
- return array;
16
+ return (0, getter_1.makeWithFactory)(make, count);
17
17
  }
18
18
  exports.makeArray = makeArray;
19
19
  /**
@@ -22,9 +22,11 @@ exports.makeArray = makeArray;
22
22
  * @param config
23
23
  * @returns
24
24
  */
25
- function makeRandomArrayFn(config) {
26
- const randomFn = typeof config.random === 'function' ? config.random : (0, random_1.makeRandomFunction)(config.random);
27
- return () => makeArray({ count: Math.abs(randomFn()), make: config.make });
25
+ function randomArrayFactory(config) {
26
+ const randomFn = typeof config.random === 'function' ? config.random : (0, random_1.randomNumberFactory)(config.random);
27
+ const nextRandomCount = () => Math.abs(randomFn());
28
+ const factory = (0, array_factory_1.arrayFactory)(config.make);
29
+ return (count = nextRandomCount()) => factory(count);
28
30
  }
29
- exports.makeRandomArrayFn = makeRandomArrayFn;
31
+ exports.randomArrayFactory = randomArrayFactory;
30
32
  //# sourceMappingURL=array.make.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.make.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.make.ts"],"names":[],"mappings":";;;AAAA,6CAAqG;AAOrG;;;;;GAKG;AACH,SAAgB,SAAS,CAAI,EAAE,KAAK,EAAE,IAAI,EAAgB;IACxD,MAAM,KAAK,GAAQ,EAAE,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AARD,8BAQC;AAMD;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAI,MAA0B;IAC7D,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,2BAAkB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzG,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7E,CAAC;AAHD,8CAGC"}
1
+ {"version":3,"file":"array.make.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.make.ts"],"names":[],"mappings":";;;AAAA,sCAAuE;AACvE,6CAAsG;AACtG,mDAA+C;AAW/C;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAI,EAAE,KAAK,EAAE,IAAI,EAAgB;IACxD,OAAO,IAAA,wBAAe,EAAC,IAAkB,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAFD,8BAEC;AAYD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAI,MAAmC;IACvE,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,4BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1G,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAA,4BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AALD,gDAKC"}
@@ -2,12 +2,14 @@ import { PrimativeKey, ReadKeyFunction } from '../key';
2
2
  import { Maybe } from '../value/maybe.type';
3
3
  export declare function concatArraysUnique<T extends PrimativeKey = PrimativeKey>(...arrays: Maybe<T[]>[]): T[];
4
4
  export declare function flattenArrayUnique<T extends PrimativeKey = PrimativeKey>(array: T[][]): T[];
5
- export declare function unique<T extends PrimativeKey = PrimativeKey>(values: T[]): T[];
5
+ export declare function unique<T extends PrimativeKey = PrimativeKey>(values: T[], exclude?: T[]): T[];
6
6
  export declare function findUnique<T, K extends PrimativeKey = PrimativeKey>(models: T[], readKey: ReadKeyFunction<T, K>, additionalKeys?: K[]): T[];
7
7
  /**
8
8
  * Finds unique values in the input.
9
+ *
10
+ * Can also specify additional keys to exclude.
9
11
  */
10
- export declare type FindUniqueFunction<T> = (input: T[]) => T[];
12
+ export declare type FindUniqueFunction<T> = (input: T[], exclude?: T[]) => T[];
11
13
  /**
12
14
  * Creates a FindUniqueFunction.
13
15
  *
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeFindUniqueFunction = exports.findUnique = exports.unique = exports.flattenArrayUnique = exports.concatArraysUnique = void 0;
4
4
  const array_1 = require("./array");
5
+ const array_value_1 = require("./array.value");
6
+ const set_1 = require("../set/set");
5
7
  function concatArraysUnique(...arrays) {
6
8
  return unique((0, array_1.concatArrays)(...arrays));
7
9
  }
@@ -10,8 +12,12 @@ function flattenArrayUnique(array) {
10
12
  return unique((0, array_1.flattenArray)(array));
11
13
  }
12
14
  exports.flattenArrayUnique = flattenArrayUnique;
13
- function unique(values) {
14
- return Array.from(new Set(values));
15
+ function unique(values, exclude) {
16
+ const unique = new Set(values);
17
+ if (exclude != null && exclude.length) {
18
+ (0, set_1.removeFromSet)(unique, exclude);
19
+ }
20
+ return Array.from(unique);
15
21
  }
16
22
  exports.unique = unique;
17
23
  function findUnique(models, readKey, additionalKeys = []) {
@@ -34,7 +40,7 @@ exports.findUnique = findUnique;
34
40
  * @returns
35
41
  */
36
42
  function makeFindUniqueFunction(readKey, additionalKeys = []) {
37
- return (input) => findUnique(input, readKey, additionalKeys);
43
+ return (input, exclude) => findUnique(input, readKey, exclude ? (0, array_1.mergeArrays)([(0, array_value_1.filterMaybeValues)(exclude.map(readKey)), additionalKeys]) : additionalKeys);
38
44
  }
39
45
  exports.makeFindUniqueFunction = makeFindUniqueFunction;
40
46
  //# sourceMappingURL=array.unique.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.unique.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.unique.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AAIrD,SAAgB,kBAAkB,CAAwC,GAAG,MAAoB;IAC/F,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAwC,KAAY;IACpF,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,gDAEC;AAED,SAAgB,MAAM,CAAwC,MAAW;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,wBAEC;AAED,SAAgB,UAAU,CAA2C,MAAW,EAAE,OAA8B,EAAE,iBAAsB,EAAE;IACxI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAW,cAAc,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,gCAaC;AAOD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAA2C,OAA8B,EAAE,iBAAsB,EAAE;IACvI,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC"}
1
+ {"version":3,"file":"array.unique.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.unique.ts"],"names":[],"mappings":";;;AAAA,mCAAkE;AAGlE,+CAAkD;AAClD,oCAA2C;AAE3C,SAAgB,kBAAkB,CAAwC,GAAG,MAAoB;IAC/F,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAwC,KAAY;IACpF,OAAO,MAAM,CAAC,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,gDAEC;AAED,SAAgB,MAAM,CAAwC,MAAW,EAAE,OAAa;IACtF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;QACrC,IAAA,mBAAa,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AARD,wBAQC;AAED,SAAgB,UAAU,CAA2C,MAAW,EAAE,OAA8B,EAAE,iBAAsB,EAAE;IACxI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAW,cAAc,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,gCAaC;AASD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAA2C,OAA8B,EAAE,iBAAsB,EAAE;IACvI,OAAO,CAAC,KAAU,EAAE,OAAa,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,CAAC,IAAA,+BAAiB,EAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;AACtK,CAAC;AAFD,wDAEC"}
@@ -1,5 +1,6 @@
1
1
  export * from './array.boolean';
2
2
  export * from './array.filter';
3
+ export * from './array.factory';
3
4
  export * from './array.index';
4
5
  export * from './array.limit';
5
6
  export * from './array.make';
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./array.boolean"), exports);
5
5
  tslib_1.__exportStar(require("./array.filter"), exports);
6
+ tslib_1.__exportStar(require("./array.factory"), exports);
6
7
  tslib_1.__exportStar(require("./array.index"), exports);
7
8
  tslib_1.__exportStar(require("./array.limit"), exports);
8
9
  tslib_1.__exportStar(require("./array.make"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,yDAA+B;AAC/B,wDAA8B;AAC9B,wDAA8B;AAC9B,uDAA6B;AAC7B,sDAA4B;AAC5B,yDAA+B;AAC/B,sDAA4B;AAC5B,yDAA+B;AAC/B,kDAAwB;AACxB,yDAA+B;AAC/B,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,yDAA+B;AAC/B,0DAAgC;AAChC,wDAA8B;AAC9B,wDAA8B;AAC9B,uDAA6B;AAC7B,sDAA4B;AAC5B,yDAA+B;AAC/B,sDAA4B;AAC5B,yDAA+B;AAC/B,kDAAwB;AACxB,yDAA+B;AAC/B,wDAA8B"}
@@ -1,4 +1,6 @@
1
1
  import { PromiseOrValue } from '../promise/promise';
2
+ import { MapFunction } from '../value/map';
3
+ import { Maybe } from '../value/maybe.type';
2
4
  /**
3
5
  * Function that returns a value.
4
6
  */
@@ -14,7 +16,7 @@ export declare type FactoryWithInput<O, I> = (args?: I) => O;
14
16
  /**
15
17
  * Function that returns a value with a single argument.
16
18
  */
17
- export declare type FactoryWithRequiredInput<T, A> = (args: A) => T;
19
+ export declare type FactoryWithRequiredInput<T, A> = MapFunction<A, T>;
18
20
  /**
19
21
  * Either a Getter, or an instance of the item.
20
22
  */
@@ -64,3 +66,10 @@ export declare function asGetter<T>(input: GetterOrValue<T>): Getter<T>;
64
66
  * @returns
65
67
  */
66
68
  export declare function makeGetter<T>(input: T): Getter<T>;
69
+ /**
70
+ * A factory that can take in an index input optionally.
71
+ */
72
+ export declare type FactoryWithIndex<T> = FactoryWithInput<T, number> | FactoryWithRequiredInput<T, number>;
73
+ export declare function makeWithFactory<T>(factory: Factory<T> | FactoryWithIndex<T>, count: number): T[];
74
+ export declare function makeWithFactoryInput<T, A>(factory: FactoryWithInput<T, A>, input: Maybe<A>[]): T[];
75
+ export declare function makeWithFactoryInput<T, A>(factory: FactoryWithRequiredInput<T, A>, input: A[]): T[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeGetter = exports.asGetter = exports.getValueFromGetter = exports.isGetter = void 0;
3
+ exports.makeWithFactoryInput = exports.makeWithFactory = exports.makeGetter = exports.asGetter = exports.getValueFromGetter = exports.isGetter = void 0;
4
4
  /**
5
5
  * Returns true if the input object looks like a Getter (is a function).
6
6
  *
@@ -45,4 +45,16 @@ function makeGetter(input) {
45
45
  return () => input;
46
46
  }
47
47
  exports.makeGetter = makeGetter;
48
+ function makeWithFactory(factory, count) {
49
+ const results = [];
50
+ for (let i = 0; i < count; i += 1) {
51
+ results.push(factory(i));
52
+ }
53
+ return results;
54
+ }
55
+ exports.makeWithFactory = makeWithFactory;
56
+ function makeWithFactoryInput(factory, input) {
57
+ return input.map((x) => factory(x));
58
+ }
59
+ exports.makeWithFactoryInput = makeWithFactoryInput;
48
60
  //# sourceMappingURL=getter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getter.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/getter/getter.ts"],"names":[],"mappings":";;;AA4CA;;;;;GAKG;AACH,SAAgB,QAAQ,CAAc,KAAc;IAClD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAFD,4BAEC;AAaD,SAAgB,kBAAkB,CAAsB,KAAc,EAAE,IAAQ;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;SAAM;QACL,OAAO,KAAU,CAAC;KACnB;AACH,CAAC;AAND,gDAMC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAI,KAAuB;IACjD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,OAAO,KAAkB,CAAC;KAC3B;SAAM;QACL,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KAC1B;AACH,CAAC;AAND,4BAMC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAI,KAAQ;IACpC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;AACrB,CAAC;AAFD,gCAEC"}
1
+ {"version":3,"file":"getter.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/getter/getter.ts"],"names":[],"mappings":";;;AA8CA;;;;;GAKG;AACH,SAAgB,QAAQ,CAAc,KAAc;IAClD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAFD,4BAEC;AAaD,SAAgB,kBAAkB,CAAsB,KAAc,EAAE,IAAQ;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;SAAM;QACL,OAAO,KAAU,CAAC;KACnB;AACH,CAAC;AAND,gDAMC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAI,KAAuB;IACjD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,OAAO,KAAkB,CAAC;KAC3B;SAAM;QACL,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KAC1B;AACH,CAAC;AAND,4BAMC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAI,KAAQ;IACpC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;AACrB,CAAC;AAFD,gCAEC;AAOD,SAAgB,eAAe,CAAI,OAAyC,EAAE,KAAa;IACzF,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;QACjC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1B;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AARD,0CAQC;AAID,SAAgB,oBAAoB,CAAO,OAAuC,EAAE,KAAU;IAC5F,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAFD,oDAEC"}
@@ -0,0 +1,12 @@
1
+ import { Factory } from './getter';
2
+ /**
3
+ * Returns a random value.
4
+ */
5
+ export declare type RandomFromArrayFactory<T> = Factory<T>;
6
+ /**
7
+ * Makes a RandomFromArrayFactory
8
+ *
9
+ * @param config
10
+ * @returns
11
+ */
12
+ export declare function randomFromArrayFactory<T>(values: T[]): RandomFromArrayFactory<T>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomFromArrayFactory = void 0;
4
+ const random_1 = require("../number/random");
5
+ /**
6
+ * Makes a RandomFromArrayFactory
7
+ *
8
+ * @param config
9
+ * @returns
10
+ */
11
+ function randomFromArrayFactory(values) {
12
+ const random = (0, random_1.randomNumberFactory)({ min: 0, max: values.length - 1, round: 'floor' });
13
+ return () => values[random()];
14
+ }
15
+ exports.randomFromArrayFactory = randomFromArrayFactory;
16
+ //# sourceMappingURL=getter.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getter.util.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/getter/getter.util.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAQvD;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAI,MAAW;IACnD,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAHD,wDAGC"}
@@ -1,4 +1,5 @@
1
1
  export * from './type';
2
2
  export * from './getter';
3
+ export * from './getter.util';
3
4
  export * from './getter.cache';
4
5
  export * from './getter.map';
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./type"), exports);
5
5
  tslib_1.__exportStar(require("./getter"), exports);
6
+ tslib_1.__exportStar(require("./getter.util"), exports);
6
7
  tslib_1.__exportStar(require("./getter.cache"), exports);
7
8
  tslib_1.__exportStar(require("./getter.map"), exports);
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/getter/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,mDAAyB;AACzB,yDAA+B;AAC/B,uDAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/getter/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,mDAAyB;AACzB,wDAA8B;AAC9B,yDAA+B;AAC/B,uDAA6B"}
@@ -42,6 +42,35 @@ export interface RestoreOrderParams<T, K extends number | string = number | stri
42
42
  * @returns
43
43
  */
44
44
  export declare function batch<T>(array: T[], batchSize: number): T[][];
45
+ export interface BatchCount {
46
+ /**
47
+ * Total number of items to make.
48
+ */
49
+ totalItems: number;
50
+ /**
51
+ * Size of each batch/expected max number of items to create per make call.
52
+ */
53
+ itemsPerBatch: number;
54
+ }
55
+ export interface BatchCalc extends BatchCount {
56
+ batchCount: number;
57
+ /**
58
+ * Total number of full batches.
59
+ */
60
+ fullBatchCount: number;
61
+ /**
62
+ * The number of items not in a full batch.
63
+ */
64
+ remainder: number;
65
+ }
66
+ /**
67
+ * Calculates a BatchCount given the input.
68
+ *
69
+ * @param input
70
+ * @returns
71
+ */
72
+ export declare function batchCalc(input: BatchCount): BatchCalc;
73
+ export declare function itemCountForBatchIndex(index: number, calc: BatchCalc): number;
45
74
  /**
46
75
  * Convenience function for calling restoreOrder with two arrays of values, instead of an array of keys and array of values.
47
76
  *
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeValuesGroupMap = exports.groupValues = exports.separateValues = exports.makeKeyPairs = exports.pairGroupValues = exports.arrayContentsDiffer = exports.restoreOrder = exports.restoreOrderWithValues = exports.batch = void 0;
3
+ exports.makeValuesGroupMap = exports.groupValues = exports.separateValues = exports.makeKeyPairs = exports.pairGroupValues = exports.arrayContentsDiffer = exports.restoreOrder = exports.restoreOrderWithValues = exports.itemCountForBatchIndex = exports.batchCalc = exports.batch = void 0;
4
4
  const object_1 = require("./object");
5
5
  // MARK: Functions
6
6
  /**
@@ -19,6 +19,37 @@ function batch(array, batchSize) {
19
19
  return batch;
20
20
  }
21
21
  exports.batch = batch;
22
+ /**
23
+ * Calculates a BatchCount given the input.
24
+ *
25
+ * @param input
26
+ * @returns
27
+ */
28
+ function batchCalc(input) {
29
+ const { totalItems: total, itemsPerBatch: batchSize } = input;
30
+ const batchCount = Math.ceil(total / batchSize);
31
+ const remainder = total % batchSize;
32
+ const fullBatchCount = remainder ? batchCount - 1 : batchCount;
33
+ return {
34
+ totalItems: input.totalItems,
35
+ itemsPerBatch: input.itemsPerBatch,
36
+ batchCount,
37
+ fullBatchCount,
38
+ remainder
39
+ };
40
+ }
41
+ exports.batchCalc = batchCalc;
42
+ function itemCountForBatchIndex(index, calc) {
43
+ let itemCount;
44
+ if (index < calc.fullBatchCount) {
45
+ itemCount = calc.itemsPerBatch;
46
+ }
47
+ else {
48
+ itemCount = calc.remainder;
49
+ }
50
+ return itemCount;
51
+ }
52
+ exports.itemCountForBatchIndex = itemCountForBatchIndex;
22
53
  /**
23
54
  * Convenience function for calling restoreOrder with two arrays of values, instead of an array of keys and array of values.
24
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/grouping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/grouping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { ArrayFactory, AsyncArrayFactory } from '../array/array.factory';
2
+ import { FindUniqueFunction } from '../array/array.unique';
3
+ import { AsyncMapFunction, MapFunction } from '../value/map';
4
+ /**
5
+ * Used to verify each id valid and available for use.
6
+ */
7
+ export declare type IdBatchVerifierFunction<T> = AsyncMapFunction<MapFunction<T[], T[]>>;
8
+ /**
9
+ * Used by to verify tags have not already been taken.
10
+ */
11
+ export declare type IdBatchVerifier<T> = {
12
+ /**
13
+ * Optional function to ensure uniqueness.
14
+ */
15
+ findUnique?: FindUniqueFunction<T>;
16
+ verify: IdBatchVerifierFunction<T>;
17
+ /**
18
+ * Max number of tags that can be verified per batch.
19
+ */
20
+ maxBatchSize: number;
21
+ };
22
+ export interface IdBatchFactoryConfig<T> {
23
+ readonly factory: ArrayFactory<T>;
24
+ readonly verifier: IdBatchVerifier<T>;
25
+ }
26
+ /**
27
+ * Used to generate valid, unused identifiers.
28
+ */
29
+ export declare type IdBatchFactory<T> = AsyncArrayFactory<T>;
30
+ /**
31
+ * Creates an IdBatchFactory
32
+ *
33
+ * @param config
34
+ * @returns
35
+ */
36
+ export declare function idBatchFactory<T>(config: IdBatchFactoryConfig<T>): IdBatchFactory<T>;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.idBatchFactory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const array_1 = require("../array");
6
+ const promise_loop_1 = require("../promise/promise.loop");
7
+ /**
8
+ * Creates an IdBatchFactory
9
+ *
10
+ * @param config
11
+ * @returns
12
+ */
13
+ function idBatchFactory(config) {
14
+ const { factory, verifier } = config;
15
+ const { maxBatchSize: tagsToGeneratePerBatch, findUnique = (x) => x, verify: verifyTags } = verifier;
16
+ const maxUniquenessFailures = 20; // arbitrary failure point, but generally shouldn't occur with proper input.
17
+ return (totalTagIdentifiersToGenerate) => tslib_1.__awaiter(this, void 0, void 0, function* () {
18
+ const uniquenessAccumulator = []; // used for uniqueness checks
19
+ function generateIdentifiersBatch(batchSize) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ let ids = [];
22
+ let uniquenessFailure = 0;
23
+ while (ids.length < batchSize) {
24
+ const countToGenerate = batchSize - ids.length;
25
+ let newIds = findUnique(factory(countToGenerate), uniquenessAccumulator);
26
+ if (newIds.length === 0) {
27
+ uniquenessFailure += 1;
28
+ if (uniquenessFailure === maxUniquenessFailures) {
29
+ throw new Error(`idBatchFactory failed generating unique values "${maxUniquenessFailures}" times. Factory may be insufficient for generating unique values.`);
30
+ }
31
+ continue;
32
+ }
33
+ else if (newIds.length > countToGenerate) {
34
+ newIds = newIds.slice(0, countToGenerate); // ignore any extra values the generator may return.
35
+ }
36
+ // add to the uniqueness acumulator to prevent further usage
37
+ (0, array_1.mergeIntoArray)(uniquenessAccumulator, newIds);
38
+ const verifiedIds = yield verifyTags(newIds);
39
+ // concat identifiers
40
+ ids = ids.concat(verifiedIds);
41
+ // restart loop if there are still items to be generated.
42
+ }
43
+ return ids;
44
+ });
45
+ }
46
+ const tagBatches = yield (0, promise_loop_1.performBatchLoop)({
47
+ totalItems: totalTagIdentifiersToGenerate,
48
+ itemsPerBatch: tagsToGeneratePerBatch,
49
+ make: (batchSize) => tslib_1.__awaiter(this, void 0, void 0, function* () {
50
+ const result = yield generateIdentifiersBatch(batchSize);
51
+ return result;
52
+ })
53
+ });
54
+ return tagBatches.flat();
55
+ });
56
+ }
57
+ exports.idBatchFactory = idBatchFactory;
58
+ //# sourceMappingURL=id.batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.batch.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/id.batch.ts"],"names":[],"mappings":";;;;AAAA,oCAA0C;AAG1C,0DAA2D;AAiC3D;;;;;GAKG;AACH,SAAgB,cAAc,CAAI,MAA+B;IAC/D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IACrG,MAAM,qBAAqB,GAAG,EAAE,CAAC,CAAC,4EAA4E;IAE9G,OAAO,CAAO,6BAAqC,EAAE,EAAE;QACrD,MAAM,qBAAqB,GAAQ,EAAE,CAAC,CAAC,6BAA6B;QAEpE,SAAe,wBAAwB,CAAC,SAAiB;;gBACvD,IAAI,GAAG,GAAQ,EAAE,CAAC;gBAElB,IAAI,iBAAiB,GAAG,CAAC,CAAC;gBAC1B,OAAO,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;oBAC7B,MAAM,eAAe,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;oBAC/C,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAC,CAAC;oBAEzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;wBACvB,iBAAiB,IAAI,CAAC,CAAC;wBAEvB,IAAI,iBAAiB,KAAK,qBAAqB,EAAE;4BAC/C,MAAM,IAAI,KAAK,CAAC,mDAAmD,qBAAqB,oEAAoE,CAAC,CAAC;yBAC/J;wBACD,SAAS;qBACV;yBAAM,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe,EAAE;wBAC1C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,oDAAoD;qBAChG;oBAED,4DAA4D;oBAC5D,IAAA,sBAAc,EAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;oBAE9C,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;oBAE7C,qBAAqB;oBACrB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAE9B,yDAAyD;iBAC1D;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SAAA;QAED,MAAM,UAAU,GAAU,MAAM,IAAA,+BAAgB,EAAI;YAClD,UAAU,EAAE,6BAA6B;YACzC,aAAa,EAAE,sBAAsB;YACrC,IAAI,EAAE,CAAO,SAAiB,EAAE,EAAE;gBAChC,MAAM,MAAM,GAAQ,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;gBAC9D,OAAO,MAAM,CAAC;YAChB,CAAC,CAAA;SACF,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAA,CAAC;AACJ,CAAC;AApDD,wCAoDC"}
@@ -3,3 +3,4 @@ export * from './model.copy';
3
3
  export * from './model.conversion';
4
4
  export * from './model.conversion.field';
5
5
  export * from './model.modify';
6
+ export * from './id.batch';
@@ -6,4 +6,5 @@ tslib_1.__exportStar(require("./model.copy"), exports);
6
6
  tslib_1.__exportStar(require("./model.conversion"), exports);
7
7
  tslib_1.__exportStar(require("./model.conversion.field"), exports);
8
8
  tslib_1.__exportStar(require("./model.modify"), exports);
9
+ tslib_1.__exportStar(require("./id.batch"), exports);
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,uDAA6B;AAC7B,6DAAmC;AACnC,mEAAyC;AACzC,yDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/model/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,uDAA6B;AAC7B,6DAAmC;AACnC,mEAAyC;AACzC,yDAA+B;AAC/B,qDAA2B"}
@@ -1,13 +1,30 @@
1
- export declare type RandomNumberFunction = () => number;
2
- export interface MakeRandomFunction {
1
+ import { MapFunction } from '../value/map';
2
+ import { Factory } from './../getter/getter';
3
+ export declare type RandomNumberFactory = Factory<number>;
4
+ export declare type NumberRounding = 'none' | 'floor' | 'ceil' | 'round';
5
+ export declare type RoundingFunction = MapFunction<number, number>;
6
+ export declare function roundingFunction(type: NumberRounding): RoundingFunction;
7
+ export declare type RoundingInput = NumberRounding | RoundingFunction;
8
+ /**
9
+ * randomNumberFactory configuration
10
+ */
11
+ export interface RandomNumberFactoryConfig {
12
+ /**
13
+ * Rounding type. By default will round to
14
+ */
15
+ round?: RoundingInput;
3
16
  min?: number;
4
17
  max: number;
5
18
  }
6
- export declare type MakeRandomFunctionInput = number | MakeRandomFunction;
19
+ export declare type RandomNumberFactoryInput = number | RandomNumberFactoryConfig;
7
20
  /**
8
21
  * Used to generate a RandomNumberFunction that returns a number between the input and the maximum.
9
22
  *
10
23
  * @param maxOrArgs
11
24
  * @returns
12
25
  */
13
- export declare function makeRandomFunction(maxOrArgs: MakeRandomFunctionInput): RandomNumberFunction;
26
+ export declare function randomNumberFactory(maxOrArgs: RandomNumberFactoryInput, roundingInput?: RoundingInput): RandomNumberFactory;
27
+ /**
28
+ * @deprecated use randomNumberFactory() instead.
29
+ */
30
+ export declare const makeRandomFunction: typeof randomNumberFactory;
@@ -1,22 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeRandomFunction = void 0;
3
+ exports.makeRandomFunction = exports.randomNumberFactory = exports.roundingFunction = void 0;
4
+ function roundingFunction(type) {
5
+ let fn;
6
+ switch (type) {
7
+ case 'floor':
8
+ fn = Math.floor;
9
+ break;
10
+ case 'ceil':
11
+ fn = Math.ceil;
12
+ break;
13
+ case 'none':
14
+ fn = (x) => x;
15
+ break;
16
+ case 'round':
17
+ default:
18
+ fn = Math.round;
19
+ break;
20
+ }
21
+ return fn;
22
+ }
23
+ exports.roundingFunction = roundingFunction;
4
24
  /**
5
25
  * Used to generate a RandomNumberFunction that returns a number between the input and the maximum.
6
26
  *
7
27
  * @param maxOrArgs
8
28
  * @returns
9
29
  */
10
- function makeRandomFunction(maxOrArgs) {
30
+ function randomNumberFactory(maxOrArgs, roundingInput) {
11
31
  const config = typeof maxOrArgs === 'number' ? { min: 0, max: maxOrArgs } : maxOrArgs;
12
- const { min, max } = config;
32
+ const { min, max, round: roundConfig } = config;
33
+ const round = roundingInput !== null && roundingInput !== void 0 ? roundingInput : roundConfig;
34
+ let fn;
13
35
  if (min != null) {
14
36
  const range = max - min;
15
- return () => Math.random() * range + min;
37
+ fn = () => Math.random() * range + min;
16
38
  }
17
39
  else {
18
- return () => Math.random() * max;
40
+ fn = () => Math.random() * max;
41
+ }
42
+ if (round && round !== 'none') {
43
+ const roundFn = typeof round === 'function' ? round : roundingFunction(round);
44
+ const randomFn = fn;
45
+ fn = () => roundFn(randomFn());
19
46
  }
47
+ return fn;
20
48
  }
21
- exports.makeRandomFunction = makeRandomFunction;
49
+ exports.randomNumberFactory = randomNumberFactory;
50
+ /**
51
+ * @deprecated use randomNumberFactory() instead.
52
+ */
53
+ exports.makeRandomFunction = randomNumberFactory;
22
54
  //# sourceMappingURL=random.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/number/random.ts"],"names":[],"mappings":";;;AASA;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,SAAkC;IACnE,MAAM,MAAM,GAAuB,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1G,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QACxB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC;KAC1C;SAAM;QACL,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;KAClC;AACH,CAAC;AAVD,gDAUC"}
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/number/random.ts"],"names":[],"mappings":";;;AAQA,SAAgB,gBAAgB,CAAC,IAAoB;IACnD,IAAI,EAAoB,CAAC;IAEzB,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAChB,MAAM;QACR,KAAK,MAAM;YACT,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;YACf,MAAM;QACR,KAAK,MAAM;YACT,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACd,MAAM;QACR,KAAK,OAAO,CAAC;QACb;YACE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAChB,MAAM;KACT;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AApBD,4CAoBC;AAkBD;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,SAAmC,EAAE,aAA6B;IACpG,MAAM,MAAM,GAA8B,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,WAAW,CAAC;IAC3C,IAAI,EAAuB,CAAC;IAE5B,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QACxB,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC;KACxC;SAAM;QACL,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;KAChC;IAED,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE;QAC7B,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,EAAE,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAChC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AApBD,kDAoBC;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAG,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { BatchCount } from '../grouping';
1
2
  import { Maybe } from '../value/maybe.type';
2
3
  export interface PerformTaskLoopConfig<O> {
3
4
  next: (i: number, prev: Maybe<O>) => Promise<O>;
@@ -21,8 +22,17 @@ export interface PerformTaskCountLoopWithInitConfig<O> extends Omit<PerformTaskL
21
22
  export declare function performTaskCountLoop<O>(config: PerformTaskCountLoopWithInitConfig<O>): Promise<O>;
22
23
  export declare function performTaskCountLoop<O>(config: PerformTaskCountLoopConfig<O>): Promise<Maybe<O>>;
23
24
  export declare function performTaskCountLoop(config: PerformTaskCountLoopConfig<void>): Promise<void>;
25
+ export declare type PerformMakeLoopFunction<O> = (i: number, made: O[]) => Promise<O>;
24
26
  export interface PerformMakeLoopConfig<O> {
25
- make: (i: number, made: O[]) => Promise<O>;
27
+ make: PerformMakeLoopFunction<O>;
26
28
  count: number;
27
29
  }
28
30
  export declare function performMakeLoop<O>(config: PerformMakeLoopConfig<O>): Promise<O[]>;
31
+ export declare type PerformBatchLoopFunction<O> = (itemsToMake: number, i: number, made: O[][]) => Promise<O[]>;
32
+ export interface PerformBatchLoopConfig<O> extends BatchCount {
33
+ /**
34
+ * Makes a certain number of items.
35
+ */
36
+ make: PerformBatchLoopFunction<O>;
37
+ }
38
+ export declare function performBatchLoop<O>(config: PerformBatchLoopConfig<O>): Promise<O[][]>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.performMakeLoop = exports.performTaskCountLoop = exports.performTaskLoop = void 0;
3
+ exports.performBatchLoop = exports.performMakeLoop = exports.performTaskCountLoop = exports.performTaskLoop = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const grouping_1 = require("../grouping");
5
6
  function performTaskLoop(config) {
6
7
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
7
8
  let result;
@@ -41,4 +42,18 @@ function performMakeLoop(config) {
41
42
  });
42
43
  }
43
44
  exports.performMakeLoop = performMakeLoop;
45
+ function performBatchLoop(config) {
46
+ const { make } = config;
47
+ const calc = (0, grouping_1.batchCalc)(config);
48
+ const { batchCount } = calc;
49
+ return performMakeLoop({
50
+ count: batchCount,
51
+ make: (i, made) => tslib_1.__awaiter(this, void 0, void 0, function* () {
52
+ const itemsToMake = (0, grouping_1.itemCountForBatchIndex)(i, calc);
53
+ const batch = yield make(itemsToMake, i, made);
54
+ return batch;
55
+ })
56
+ });
57
+ }
58
+ exports.performBatchLoop = performBatchLoop;
44
59
  //# sourceMappingURL=promise.loop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise.loop.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.loop.ts"],"names":[],"mappings":";;;;AAkBA,SAAsB,eAAe,CAAI,MAAmE;;QAC1G,IAAI,MAAS,CAAC;QACd,MAAM,SAAS,GAAI,MAA2C,CAAC,SAAS,CAAC;QACzE,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,GAAa,SAAS,CAAC;YACpC,IAAI,KAAc,CAAC;YAEnB,GAAG;gBACD,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC5C,CAAC,IAAI,CAAC,CAAC;gBACP,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC5C,QAAQ,KAAK,EAAE;YAEhB,MAAM,GAAG,SAAS,CAAC;SACpB;aAAM;YACL,MAAM,GAAG,SAAS,CAAC;SACpB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAtBD,0CAsBC;AAcD,SAAgB,oBAAoB,CAAI,MAA6E;IACnH,OAAO,eAAe,CAAI,gCACrB,MAAM,KACT,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GACd,CAAC,CAAC;AACjC,CAAC;AALD,oDAKC;AAQD,SAAgB,eAAe,CAAI,MAAgC;IACjE,OAAO,oBAAoB,CAAM;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,EAAS;QACpB,IAAI,EAAE,CAAO,CAAC,EAAE,WAAgB,EAAE,EAAE;YAClC,MAAM,MAAM,GAAM,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC,CAAA;KACF,CAAC,CAAC;AACL,CAAC;AAVD,0CAUC"}
1
+ {"version":3,"file":"promise.loop.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.loop.ts"],"names":[],"mappings":";;;;AAAA,0CAAmF;AAmBnF,SAAsB,eAAe,CAAI,MAAmE;;QAC1G,IAAI,MAAS,CAAC;QACd,MAAM,SAAS,GAAI,MAA2C,CAAC,SAAS,CAAC;QACzE,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,GAAa,SAAS,CAAC;YACpC,IAAI,KAAc,CAAC;YAEnB,GAAG;gBACD,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC5C,CAAC,IAAI,CAAC,CAAC;gBACP,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC5C,QAAQ,KAAK,EAAE;YAEhB,MAAM,GAAG,SAAS,CAAC;SACpB;aAAM;YACL,MAAM,GAAG,SAAS,CAAC;SACpB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAtBD,0CAsBC;AAcD,SAAgB,oBAAoB,CAAI,MAA6E;IACnH,OAAO,eAAe,CAAI,gCACrB,MAAM,KACT,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GACd,CAAC,CAAC;AACjC,CAAC;AALD,oDAKC;AAUD,SAAgB,eAAe,CAAI,MAAgC;IACjE,OAAO,oBAAoB,CAAM;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,EAAS;QACpB,IAAI,EAAE,CAAO,CAAC,EAAE,WAAgB,EAAE,EAAE;YAClC,MAAM,MAAM,GAAM,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC,CAAA;KACF,CAAC,CAAC;AACL,CAAC;AAVD,0CAUC;AAYD,SAAgB,gBAAgB,CAAI,MAAiC;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,MAAM,IAAI,GAAG,IAAA,oBAAS,EAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAE5B,OAAO,eAAe,CAAC;QACrB,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,CAAO,CAAC,EAAE,IAAW,EAAE,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAA,iCAAsB,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,GAAQ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC,CAAA;KACF,CAAC,CAAC;AACL,CAAC;AAbD,4CAaC"}
@@ -35,8 +35,8 @@ export declare type MappedUseAsyncFunction<A, I> = <O = void>(input: Maybe<A>, u
35
35
  /**
36
36
  * Creates a MappedUseFunction.
37
37
  */
38
- export declare function mappedUseAsyncFunction<A, I>(map: MapFunction<A, Maybe<PromiseOrValue<I>>>): MappedUseAsyncFunction<A, I>;
38
+ export declare function mappedUseAsyncFunction<A, I>(map: MapFunction<A, Maybe<PromiseOrValue<Maybe<I>>>>): MappedUseAsyncFunction<A, I>;
39
39
  /**
40
40
  * Wraps another MappedUseFunction or MappedUseAsyncFunction and maps the input values.
41
41
  */
42
- export declare function wrapUseAsyncFunction<A, B, I>(mappedUsePromiseFn: MappedUseAsyncFunction<A, B>, map: MapFunction<B, Maybe<PromiseOrValue<I>>>): MappedUseAsyncFunction<A, I>;
42
+ export declare function wrapUseAsyncFunction<A, B, I>(mappedUsePromiseFn: MappedUseAsyncFunction<A, B>, map: MapFunction<B, Maybe<PromiseOrValue<Maybe<I>>>>): MappedUseAsyncFunction<A, I>;
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/use.ts"],"names":[],"mappings":";;;;AAAA,sCAAkF;AAWlF,SAAgB,QAAQ,CAAc,KAAe,EAAE,GAAmB,EAAE,YAAsC;IAChH,IAAI,MAAgB,CAAC;IAErB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAa,CAAC;KACjC;SAAM;QACL,MAAM,GAAG,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;KAC3C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,4BAUC;AAKD;;GAEG;AACH,SAAgB,iBAAiB,CAAO,GAA6B;IACnE,OAAO,eAAe,CAAU,QAAe,EAAE,GAAU,CAAC,CAAC;AAC/D,CAAC;AAFD,8CAEC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAU,WAAoC,EAAE,GAA6B;IAC1G,OAAO,CAAC,CAAW,KAAe,EAAE,KAAqB,EAAE,YAAsC,EAAE,EAAE;QACnG,OAAO,WAAW,CAAI,KAAK,EAAE,CAAC,CAAC,KAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAmB,EAAE,YAAY,CAAC,CAAC;IAC1H,CAAC,CAA4B,CAAC;AAChC,CAAC;AAJD,0CAIC;AAOD;;GAEG;AACH,SAAgB,kBAAkB,CAAO,GAAmB,EAAE,YAA+B;IAC3F,OAAO,CAAC,CAAC,KAAe,EAAE,EAAE;QAC1B,IAAI,MAAgB,CAAC;QAErB,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,GAAG,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;SAC3C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAA0B,CAAC;AAC9B,CAAC;AAZD,gDAYC;AAQD,SAAsB,QAAQ,CAAc,KAAe,EAAE,GAAmB,EAAE,YAAsC;;QACtH,IAAI,MAAgB,CAAC;QAErB,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAa,CAAC;SACzC;aAAM;YACL,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;SACjD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAVD,4BAUC;AAKD;;GAEG;AACH,SAAgB,sBAAsB,CAAO,GAA6C;IACxF,OAAO,oBAAoB,CAAU,QAAe,EAAE,GAAU,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAU,kBAAgD,EAAE,GAA6C;IAC3I,OAAO,CAAC,CAAW,KAAe,EAAE,KAAqB,EAAE,YAA2C,EAAE,EAAE;QACxG,OAAO,kBAAkB,CAAI,KAAK,EAAE,CAAC,CAAO,KAAQ,EAAE,EAAE,wDAAC,OAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA,GAAA,CAAmB,EAAE,YAAY,CAAC,CAAC;IAC7I,CAAC,CAAiC,CAAC;AACrC,CAAC;AAJD,oDAIC"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/use.ts"],"names":[],"mappings":";;;;AAAA,sCAAkF;AAWlF,SAAgB,QAAQ,CAAc,KAAe,EAAE,GAAmB,EAAE,YAAsC;IAChH,IAAI,MAAgB,CAAC;IAErB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAa,CAAC;KACjC;SAAM;QACL,MAAM,GAAG,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;KAC3C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,4BAUC;AAKD;;GAEG;AACH,SAAgB,iBAAiB,CAAO,GAA6B;IACnE,OAAO,eAAe,CAAU,QAAe,EAAE,GAAU,CAAC,CAAC;AAC/D,CAAC;AAFD,8CAEC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAU,WAAoC,EAAE,GAA6B;IAC1G,OAAO,CAAC,CAAW,KAAe,EAAE,KAAqB,EAAE,YAAsC,EAAE,EAAE;QACnG,OAAO,WAAW,CAAI,KAAK,EAAE,CAAC,CAAC,KAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAmB,EAAE,YAAY,CAAC,CAAC;IAC1H,CAAC,CAA4B,CAAC;AAChC,CAAC;AAJD,0CAIC;AAOD;;GAEG;AACH,SAAgB,kBAAkB,CAAO,GAAmB,EAAE,YAA+B;IAC3F,OAAO,CAAC,CAAC,KAAe,EAAE,EAAE;QAC1B,IAAI,MAAgB,CAAC;QAErB,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,GAAG,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;SAC3C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAA0B,CAAC;AAC9B,CAAC;AAZD,gDAYC;AAQD,SAAsB,QAAQ,CAAc,KAAe,EAAE,GAAmB,EAAE,YAAsC;;QACtH,IAAI,MAAgB,CAAC;QAErB,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAa,CAAC;SACzC;aAAM;YACL,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;SACjD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAVD,4BAUC;AAKD;;GAEG;AACH,SAAgB,sBAAsB,CAAO,GAAoD;IAC/F,OAAO,oBAAoB,CAAU,QAAe,EAAE,GAAU,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAU,kBAAgD,EAAE,GAAoD;IAClJ,OAAO,CAAC,CAAW,KAAe,EAAE,KAAqB,EAAE,YAA2C,EAAE,EAAE;QACxG,OAAO,kBAAkB,CAAI,KAAK,EAAE,CAAC,CAAO,KAAQ,EAAE,EAAE,wDAAC,OAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA,GAAA,CAAmB,EAAE,YAAY,CAAC,CAAC;IAC7I,CAAC,CAAiC,CAAC;AACrC,CAAC;AAJD,oDAIC"}
package/test/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.10.0](https://github.com/dereekb/dbx-components/compare/v7.9.0-dev...v7.10.0) (2022-06-11)
6
+
7
+
8
+
9
+ # [7.9.0](https://github.com/dereekb/dbx-components/compare/v7.8.1-dev...v7.9.0) (2022-06-11)
10
+
11
+
12
+
13
+ ## [7.8.1](https://github.com/dereekb/dbx-components/compare/v7.8.0-dev...v7.8.1) (2022-06-10)
14
+
15
+
16
+
5
17
  # [7.8.0](https://github.com/dereekb/dbx-components/compare/v7.7.0-dev...v7.8.0) (2022-06-09)
6
18
 
7
19
 
package/test/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/util/test",
3
- "version": "7.8.0",
3
+ "version": "7.10.0",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@dereekb/util": "7.8.0",
8
+ "@dereekb/util": "7.10.0",
9
9
  "make-error": "^1.3.0",
10
10
  "ts-essentials": "^9.1.2",
11
11
  "extra-set": "^2.2.11",