@dereekb/util 0.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 +7 -0
- package/package.json +10 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +6 -0
- package/src/index.js.map +1 -0
- package/src/lib/array/array.boolean.d.ts +28 -0
- package/src/lib/array/array.boolean.js +59 -0
- package/src/lib/array/array.boolean.js.map +1 -0
- package/src/lib/array/array.d.ts +60 -0
- package/src/lib/array/array.filter.d.ts +13 -0
- package/src/lib/array/array.filter.js +48 -0
- package/src/lib/array/array.filter.js.map +1 -0
- package/src/lib/array/array.js +149 -0
- package/src/lib/array/array.js.map +1 -0
- package/src/lib/array/array.limit.d.ts +13 -0
- package/src/lib/array/array.limit.js +19 -0
- package/src/lib/array/array.limit.js.map +1 -0
- package/src/lib/array/array.map.d.ts +18 -0
- package/src/lib/array/array.map.js +26 -0
- package/src/lib/array/array.map.js.map +1 -0
- package/src/lib/array/array.number.d.ts +21 -0
- package/src/lib/array/array.number.js +58 -0
- package/src/lib/array/array.number.js.map +1 -0
- package/src/lib/array/array.set.d.ts +20 -0
- package/src/lib/array/array.set.js +64 -0
- package/src/lib/array/array.set.js.map +1 -0
- package/src/lib/array/array.string.d.ts +8 -0
- package/src/lib/array/array.string.js +36 -0
- package/src/lib/array/array.string.js.map +1 -0
- package/src/lib/array/array.unique.d.ts +6 -0
- package/src/lib/array/array.unique.js +29 -0
- package/src/lib/array/array.unique.js.map +1 -0
- package/src/lib/array/array.value.d.ts +3 -0
- package/src/lib/array/array.value.js +17 -0
- package/src/lib/array/array.value.js.map +1 -0
- package/src/lib/array/index.d.ts +10 -0
- package/src/lib/array/index.js +14 -0
- package/src/lib/array/index.js.map +1 -0
- package/src/lib/assertion/assert.d.ts +15 -0
- package/src/lib/assertion/assert.error.d.ts +32 -0
- package/src/lib/assertion/assert.error.js +43 -0
- package/src/lib/assertion/assert.error.js.map +1 -0
- package/src/lib/assertion/assert.js +3 -0
- package/src/lib/assertion/assert.js.map +1 -0
- package/src/lib/assertion/assertion.d.ts +18 -0
- package/src/lib/assertion/assertion.generic.d.ts +3 -0
- package/src/lib/assertion/assertion.generic.js +10 -0
- package/src/lib/assertion/assertion.generic.js.map +1 -0
- package/src/lib/assertion/assertion.js +40 -0
- package/src/lib/assertion/assertion.js.map +1 -0
- package/src/lib/assertion/assertion.number.d.ts +3 -0
- package/src/lib/assertion/assertion.number.js +20 -0
- package/src/lib/assertion/assertion.number.js.map +1 -0
- package/src/lib/assertion/index.d.ts +5 -0
- package/src/lib/assertion/index.js +9 -0
- package/src/lib/assertion/index.js.map +1 -0
- package/src/lib/boolean.d.ts +5 -0
- package/src/lib/boolean.js +30 -0
- package/src/lib/boolean.js.map +1 -0
- package/src/lib/contact/domain.d.ts +16 -0
- package/src/lib/contact/domain.js +45 -0
- package/src/lib/contact/domain.js.map +1 -0
- package/src/lib/contact/email.d.ts +17 -0
- package/src/lib/contact/email.js +32 -0
- package/src/lib/contact/email.js.map +1 -0
- package/src/lib/contact/index.d.ts +3 -0
- package/src/lib/contact/index.js +7 -0
- package/src/lib/contact/index.js.map +1 -0
- package/src/lib/contact/phone.d.ts +8 -0
- package/src/lib/contact/phone.js +3 -0
- package/src/lib/contact/phone.js.map +1 -0
- package/src/lib/context/context.d.ts +1 -0
- package/src/lib/context/context.js +6 -0
- package/src/lib/context/context.js.map +1 -0
- package/src/lib/context/index.d.ts +0 -0
- package/src/lib/context/index.js +2 -0
- package/src/lib/context/index.js.map +1 -0
- package/src/lib/date/date.d.ts +52 -0
- package/src/lib/date/date.js +12 -0
- package/src/lib/date/date.js.map +1 -0
- package/src/lib/date/date.time.d.ts +29 -0
- package/src/lib/date/date.time.js +27 -0
- package/src/lib/date/date.time.js.map +1 -0
- package/src/lib/date/index.d.ts +2 -0
- package/src/lib/date/index.js +6 -0
- package/src/lib/date/index.js.map +1 -0
- package/src/lib/error/error.d.ts +30 -0
- package/src/lib/error/error.js +36 -0
- package/src/lib/error/error.js.map +1 -0
- package/src/lib/error/error.server.d.ts +37 -0
- package/src/lib/error/error.server.js +22 -0
- package/src/lib/error/error.server.js.map +1 -0
- package/src/lib/error/index.d.ts +2 -0
- package/src/lib/error/index.js +6 -0
- package/src/lib/error/index.js.map +1 -0
- package/src/lib/filter/filter.d.ts +5 -0
- package/src/lib/filter/filter.js +3 -0
- package/src/lib/filter/filter.js.map +1 -0
- package/src/lib/filter/index.d.ts +1 -0
- package/src/lib/filter/index.js +5 -0
- package/src/lib/filter/index.js.map +1 -0
- package/src/lib/getter.d.ts +16 -0
- package/src/lib/getter.js +19 -0
- package/src/lib/getter.js.map +1 -0
- package/src/lib/grouping.d.ts +98 -0
- package/src/lib/grouping.js +164 -0
- package/src/lib/grouping.js.map +1 -0
- package/src/lib/hash.d.ts +5 -0
- package/src/lib/hash.js +21 -0
- package/src/lib/hash.js.map +1 -0
- package/src/lib/index.d.ts +26 -0
- package/src/lib/index.js +31 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/iterate.d.ts +6 -0
- package/src/lib/iterate.js +16 -0
- package/src/lib/iterate.js.map +1 -0
- package/src/lib/key.d.ts +11 -0
- package/src/lib/key.js +3 -0
- package/src/lib/key.js.map +1 -0
- package/src/lib/lifecycle.d.ts +12 -0
- package/src/lib/lifecycle.js +3 -0
- package/src/lib/lifecycle.js.map +1 -0
- package/src/lib/map.d.ts +2 -0
- package/src/lib/map.js +3 -0
- package/src/lib/map.js.map +1 -0
- package/src/lib/model.d.ts +74 -0
- package/src/lib/model.js +138 -0
- package/src/lib/model.js.map +1 -0
- package/src/lib/number.d.ts +18 -0
- package/src/lib/number.js +29 -0
- package/src/lib/number.js.map +1 -0
- package/src/lib/object/index.d.ts +3 -0
- package/src/lib/object/index.js +7 -0
- package/src/lib/object/index.js.map +1 -0
- package/src/lib/object/object.array.d.ts +9 -0
- package/src/lib/object/object.array.js +35 -0
- package/src/lib/object/object.array.js.map +1 -0
- package/src/lib/object/object.d.ts +12 -0
- package/src/lib/object/object.equal.d.ts +4 -0
- package/src/lib/object/object.equal.js +12 -0
- package/src/lib/object/object.equal.js.map +1 -0
- package/src/lib/object/object.js +38 -0
- package/src/lib/object/object.js.map +1 -0
- package/src/lib/page/index.d.ts +3 -0
- package/src/lib/page/index.js +7 -0
- package/src/lib/page/index.js.map +1 -0
- package/src/lib/page/page.calculator.d.ts +24 -0
- package/src/lib/page/page.calculator.js +37 -0
- package/src/lib/page/page.calculator.js.map +1 -0
- package/src/lib/page/page.d.ts +28 -0
- package/src/lib/page/page.filter.d.ts +54 -0
- package/src/lib/page/page.filter.js +68 -0
- package/src/lib/page/page.filter.js.map +1 -0
- package/src/lib/page/page.js +30 -0
- package/src/lib/page/page.js.map +1 -0
- package/src/lib/promise/index.d.ts +2 -0
- package/src/lib/promise/index.js +6 -0
- package/src/lib/promise/index.js.map +1 -0
- package/src/lib/promise/promise.d.ts +42 -0
- package/src/lib/promise/promise.js +117 -0
- package/src/lib/promise/promise.js.map +1 -0
- package/src/lib/promise/promise.loop.d.ts +12 -0
- package/src/lib/promise/promise.loop.js +30 -0
- package/src/lib/promise/promise.loop.js.map +1 -0
- package/src/lib/relation/index.d.ts +1 -0
- package/src/lib/relation/index.js +5 -0
- package/src/lib/relation/index.js.map +1 -0
- package/src/lib/relation/relation.d.ts +95 -0
- package/src/lib/relation/relation.js +209 -0
- package/src/lib/relation/relation.js.map +1 -0
- package/src/lib/set.d.ts +0 -0
- package/src/lib/set.hashset.d.ts +28 -0
- package/src/lib/set.hashset.js +66 -0
- package/src/lib/set.hashset.js.map +1 -0
- package/src/lib/set.js +2 -0
- package/src/lib/set.js.map +1 -0
- package/src/lib/sort.d.ts +45 -0
- package/src/lib/sort.js +25 -0
- package/src/lib/sort.js.map +1 -0
- package/src/lib/storage/index.d.ts +4 -0
- package/src/lib/storage/index.js +8 -0
- package/src/lib/storage/index.js.map +1 -0
- package/src/lib/storage/storage.d.ts +11 -0
- package/src/lib/storage/storage.error.d.ts +12 -0
- package/src/lib/storage/storage.error.js +20 -0
- package/src/lib/storage/storage.error.js.map +1 -0
- package/src/lib/storage/storage.js +3 -0
- package/src/lib/storage/storage.js.map +1 -0
- package/src/lib/storage/storage.memory.d.ts +14 -0
- package/src/lib/storage/storage.memory.js +47 -0
- package/src/lib/storage/storage.memory.js.map +1 -0
- package/src/lib/storage/storage.object.d.ts +32 -0
- package/src/lib/storage/storage.object.js +39 -0
- package/src/lib/storage/storage.object.js.map +1 -0
- package/src/lib/string.d.ts +19 -0
- package/src/lib/string.js +27 -0
- package/src/lib/string.js.map +1 -0
- package/src/lib/type.d.ts +9 -0
- package/src/lib/type.js +3 -0
- package/src/lib/type.js.map +1 -0
- package/src/lib/value.d.ts +43 -0
- package/src/lib/value.js +28 -0
- package/src/lib/value.js.map +1 -0
- package/src/test/index.d.ts +2 -0
- package/src/test/index.js +6 -0
- package/src/test/index.js.map +1 -0
- package/src/test/jest.d.ts +80 -0
- package/src/test/jest.js +80 -0
- package/src/test/jest.js.map +1 -0
- package/src/test/jest.wrap.d.ts +61 -0
- package/src/test/jest.wrap.js +66 -0
- package/src/test/jest.wrap.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.memory.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/storage/storage.memory.ts"],"names":[],"mappings":";;;AAGA,MAAa,qBAAqB;IAAlC;QAEU,YAAO,GAAG,CAAC,CAAC;QACZ,aAAQ,GAA8B,EAAE,CAAC;IA0CnD,CAAC;IAxCC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;;QACf,OAAO,MAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,mCAAI,IAAI,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,GAAW;;QACjB,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,IAAmB;QACtC,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aACjC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;SACnC;IACH,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,sBAAsB;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;SACjC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;CAEF;AA7CD,sDA6CC;AAEY,QAAA,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Maybe } from '../value';
|
|
2
|
+
import { StoredDataStorageKey } from './storage';
|
|
3
|
+
/**
|
|
4
|
+
* Limited Class/Interface for storing string values synchronously.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class SimpleStorageObject {
|
|
7
|
+
abstract getItem(key: StoredDataStorageKey): Maybe<string>;
|
|
8
|
+
abstract setItem(key: StoredDataStorageKey, item: Maybe<string>): void;
|
|
9
|
+
abstract removeItem(key: StoredDataStorageKey): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Synchronous Class/Interface for storing string values.
|
|
13
|
+
*
|
|
14
|
+
* Has the same interface as localStorage for the web.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class StorageObject extends SimpleStorageObject {
|
|
17
|
+
abstract readonly length: number;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the string key for the index.
|
|
20
|
+
*
|
|
21
|
+
* Returns null if no key available.
|
|
22
|
+
*/
|
|
23
|
+
abstract key(index: number): string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare abstract class FullStorageObject extends StorageObject {
|
|
26
|
+
abstract readonly isPersistant: boolean;
|
|
27
|
+
abstract readonly isAvailable: boolean;
|
|
28
|
+
abstract removeAll(): string[];
|
|
29
|
+
}
|
|
30
|
+
export declare class StorageObjectUtility {
|
|
31
|
+
static allKeysFromStorageObject(storageObject: StorageObject, prefix?: string): StoredDataStorageKey[];
|
|
32
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageObjectUtility = exports.FullStorageObject = exports.StorageObject = exports.SimpleStorageObject = void 0;
|
|
4
|
+
const array_1 = require("../array");
|
|
5
|
+
/**
|
|
6
|
+
* Limited Class/Interface for storing string values synchronously.
|
|
7
|
+
*/
|
|
8
|
+
class SimpleStorageObject {
|
|
9
|
+
}
|
|
10
|
+
exports.SimpleStorageObject = SimpleStorageObject;
|
|
11
|
+
/**
|
|
12
|
+
* Synchronous Class/Interface for storing string values.
|
|
13
|
+
*
|
|
14
|
+
* Has the same interface as localStorage for the web.
|
|
15
|
+
*/
|
|
16
|
+
class StorageObject extends SimpleStorageObject {
|
|
17
|
+
}
|
|
18
|
+
exports.StorageObject = StorageObject;
|
|
19
|
+
class FullStorageObject extends StorageObject {
|
|
20
|
+
}
|
|
21
|
+
exports.FullStorageObject = FullStorageObject;
|
|
22
|
+
class StorageObjectUtility {
|
|
23
|
+
static allKeysFromStorageObject(storageObject, prefix) {
|
|
24
|
+
const length = storageObject.length;
|
|
25
|
+
let result;
|
|
26
|
+
if (length > 0) {
|
|
27
|
+
result = (0, array_1.range)({ start: 0, end: length }).map((x) => storageObject.key(x)).filter(array_1.filterMaybeValuesFn);
|
|
28
|
+
if (prefix) {
|
|
29
|
+
result = result.filter((x) => x.startsWith(prefix));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
result = [];
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.StorageObjectUtility = StorageObjectUtility;
|
|
39
|
+
//# sourceMappingURL=storage.object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/storage/storage.object.ts"],"names":[],"mappings":";;;AACA,oCAAsD;AAGtD;;GAEG;AACH,MAAsB,mBAAmB;CAQxC;AARD,kDAQC;AAED;;;;GAIG;AACH,MAAsB,aAAc,SAAQ,mBAAmB;CAW9D;AAXD,sCAWC;AAED,MAAsB,iBAAkB,SAAQ,aAAa;CAQ5D;AARD,8CAQC;AAED,MAAa,oBAAoB;IAE/B,MAAM,CAAC,wBAAwB,CAAC,aAA4B,EAAE,MAAe;QAC3E,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACpC,IAAI,MAA8B,CAAC;QAEnC,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,MAAM,GAAG,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAC;YAEvG,IAAI,MAAM,EAAE;gBACV,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;aACrD;SACF;aAAM;YACL,MAAM,GAAG,EAAE,CAAC;SACb;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAEF;AAnBD,oDAmBC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MapStringFn } from "./map";
|
|
2
|
+
import { Maybe } from "./value";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a string that is made up of comma-separated values.
|
|
5
|
+
*
|
|
6
|
+
* I.E. 0,1,2
|
|
7
|
+
*/
|
|
8
|
+
export declare type CommaSeparatedString<T = any> = string;
|
|
9
|
+
export declare function caseInsensitiveString(input: string): string;
|
|
10
|
+
export declare function caseInsensitiveString(input: undefined): undefined;
|
|
11
|
+
export declare function caseInsensitiveString(input: Maybe<string>): Maybe<string>;
|
|
12
|
+
export declare function splitCommaSeparatedString(input: CommaSeparatedString<string>): string[];
|
|
13
|
+
export declare function splitCommaSeparatedString<T = any>(input: CommaSeparatedString<T>, mapFn: MapStringFn<T>): T[];
|
|
14
|
+
/**
|
|
15
|
+
* Adds a plus prefix to the input value and converts it to a string. If the value is negative or 0, no prefix is added.
|
|
16
|
+
*
|
|
17
|
+
* Undefined is returned if a null/undefined value is input.
|
|
18
|
+
*/
|
|
19
|
+
export declare function addPlusPrefixToNumber(value?: Maybe<number>, prefix?: string): string | undefined;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addPlusPrefixToNumber = exports.splitCommaSeparatedString = exports.caseInsensitiveString = void 0;
|
|
4
|
+
function caseInsensitiveString(input) {
|
|
5
|
+
return input === null || input === void 0 ? void 0 : input.toLocaleLowerCase();
|
|
6
|
+
}
|
|
7
|
+
exports.caseInsensitiveString = caseInsensitiveString;
|
|
8
|
+
function splitCommaSeparatedString(input, mapFn = (x) => x) {
|
|
9
|
+
const splits = input.split(',');
|
|
10
|
+
return splits.map(x => mapFn(x.trim()));
|
|
11
|
+
}
|
|
12
|
+
exports.splitCommaSeparatedString = splitCommaSeparatedString;
|
|
13
|
+
/**
|
|
14
|
+
* Adds a plus prefix to the input value and converts it to a string. If the value is negative or 0, no prefix is added.
|
|
15
|
+
*
|
|
16
|
+
* Undefined is returned if a null/undefined value is input.
|
|
17
|
+
*/
|
|
18
|
+
function addPlusPrefixToNumber(value, prefix = '+') {
|
|
19
|
+
if (value != null) {
|
|
20
|
+
return (value > 0) ? `${prefix}${value}` : `${value}`;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.addPlusPrefixToNumber = addPlusPrefixToNumber;
|
|
27
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/string.ts"],"names":[],"mappings":";;;AAaA,SAAgB,qBAAqB,CAAC,KAAU;IAC9C,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,EAAE,CAAC;AACpC,CAAC;AAFD,sDAEC;AAID,SAAgB,yBAAyB,CAAU,KAA8B,EAAE,QAAwB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAQ;IACxH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAHD,8DAGC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAqB,EAAE,MAAM,GAAG,GAAG;IACvE,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;KACvD;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAND,sDAMC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare type ClassType<T> = {
|
|
2
|
+
new (...args: any[]): T;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Special type used to defined other type definitions that state the defined type has every key of one type, but each key has a single/new value type.
|
|
6
|
+
*/
|
|
7
|
+
export declare type KeyValueTransformMap<T, V, K extends keyof T = keyof T> = {
|
|
8
|
+
[k in K]: V;
|
|
9
|
+
};
|
package/src/lib/type.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A value that might exist, or be null/undefined instead.
|
|
3
|
+
*/
|
|
4
|
+
export declare type Maybe<T> = T | null | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if the value is not null or undefined.
|
|
7
|
+
*
|
|
8
|
+
* @param value
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export declare function hasNonNullValue<T>(value: Maybe<T>): value is T;
|
|
12
|
+
export declare function hasNonNullValue(value: any): boolean;
|
|
13
|
+
export declare function hasNonNullValue(value: true): true;
|
|
14
|
+
export declare function hasNonNullValue(value: false): true;
|
|
15
|
+
export declare function hasNonNullValue(value: number): true;
|
|
16
|
+
export declare function hasNonNullValue(value: ''): true;
|
|
17
|
+
export declare function hasNonNullValue(value: null): false;
|
|
18
|
+
export declare function hasNonNullValue(value: undefined): false;
|
|
19
|
+
/**
|
|
20
|
+
* Whether or not the input has any value.
|
|
21
|
+
*
|
|
22
|
+
* Will return false for:
|
|
23
|
+
* - empty arrays
|
|
24
|
+
* - empty strings
|
|
25
|
+
* - null/undefined values.
|
|
26
|
+
*
|
|
27
|
+
* NaN has undefined behavior.
|
|
28
|
+
*/
|
|
29
|
+
export declare function hasValueOrNotEmpty(value: any): boolean;
|
|
30
|
+
export declare function hasValueOrNotEmpty(value: true): true;
|
|
31
|
+
export declare function hasValueOrNotEmpty(value: false): true;
|
|
32
|
+
export declare function hasValueOrNotEmpty(value: number): true;
|
|
33
|
+
export declare function hasValueOrNotEmpty(value: ''): false;
|
|
34
|
+
export declare function hasValueOrNotEmpty(value: null): false;
|
|
35
|
+
export declare function hasValueOrNotEmpty(value: undefined): false;
|
|
36
|
+
/**
|
|
37
|
+
* Returns true if both the inputs are not null/undefined but the same value.
|
|
38
|
+
*
|
|
39
|
+
* @param a
|
|
40
|
+
* @param b
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
export declare function isSameNonNullValue<T>(a: Maybe<T>, b: Maybe<T>): a is T;
|
package/src/lib/value.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSameNonNullValue = exports.hasValueOrNotEmpty = exports.hasNonNullValue = void 0;
|
|
4
|
+
function hasNonNullValue(value) {
|
|
5
|
+
return value != null;
|
|
6
|
+
}
|
|
7
|
+
exports.hasNonNullValue = hasNonNullValue;
|
|
8
|
+
function hasValueOrNotEmpty(value) {
|
|
9
|
+
if (Array.isArray(value)) {
|
|
10
|
+
return value.length > 0;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return value != null && value !== '';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.hasValueOrNotEmpty = hasValueOrNotEmpty;
|
|
17
|
+
/**
|
|
18
|
+
* Returns true if both the inputs are not null/undefined but the same value.
|
|
19
|
+
*
|
|
20
|
+
* @param a
|
|
21
|
+
* @param b
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
function isSameNonNullValue(a, b) {
|
|
25
|
+
return (a === b && a != null);
|
|
26
|
+
}
|
|
27
|
+
exports.isSameNonNullValue = isSameNonNullValue;
|
|
28
|
+
//# sourceMappingURL=value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/value.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,eAAe,CAAI,KAAe;IAChD,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAFD,0CAEC;AAmBD,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KACzB;SAAM;QACL,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;KACtC;AACH,CAAC;AAND,gDAMC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAI,CAAW,EAAE,CAAW;IAC5D,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,gDAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/util/src/test/index.ts"],"names":[],"mappings":";;;AAAA,sDAAuB;AACvB,2DAA4B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fixture instance that is generated new for each test run.
|
|
3
|
+
*/
|
|
4
|
+
export declare type JestTestFixtureInstance<I> = I;
|
|
5
|
+
/**
|
|
6
|
+
* The test fixture is used as a singleton across tests used in a single context.
|
|
7
|
+
*
|
|
8
|
+
* This allows us to define tests while referencing the instance.
|
|
9
|
+
*/
|
|
10
|
+
export interface JestTestFixture<I> {
|
|
11
|
+
readonly instance: JestTestFixtureInstance<I>;
|
|
12
|
+
}
|
|
13
|
+
export declare type JestTestContextFixtureClearInstanceFunction = () => void;
|
|
14
|
+
/**
|
|
15
|
+
* JestTestFixture with additional functions that the JestTestContextFactory sees for managing the instance.
|
|
16
|
+
*/
|
|
17
|
+
export interface JestTestContextFixture<I> extends JestTestFixture<I> {
|
|
18
|
+
/**
|
|
19
|
+
* Sets the instance before the tests run, and returns a function to clean the instance later.
|
|
20
|
+
*
|
|
21
|
+
* If called again before the instance is finished being used, this should thrown an exception.
|
|
22
|
+
*
|
|
23
|
+
* @param instance
|
|
24
|
+
*/
|
|
25
|
+
setInstance(instance: I): JestTestContextFixtureClearInstanceFunction;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Abstract JestTestContextFixture instance.
|
|
29
|
+
*/
|
|
30
|
+
export declare abstract class AbstractJestTestContextFixture<I> implements JestTestContextFixture<I> {
|
|
31
|
+
private _instance?;
|
|
32
|
+
get instance(): I;
|
|
33
|
+
setInstance(instance: I): JestTestContextFixtureClearInstanceFunction;
|
|
34
|
+
}
|
|
35
|
+
export declare type JestBuildTestsWithContextFunction<F> = (fixture: F) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Used for Jest tests to execute a number of tests using the fixture.
|
|
38
|
+
*
|
|
39
|
+
* The fixture is automatically setup and torn down each test per the configuration with a clean fixture instance.
|
|
40
|
+
*/
|
|
41
|
+
export declare type JestTestContextFactory<F> = (buildTests: JestBuildTestsWithContextFunction<F>) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Used to configure a JestTestContextFactory for building tests.
|
|
44
|
+
*/
|
|
45
|
+
export declare type JestTestContextBuilderFunction<I, F extends JestTestContextFixture<I>, C> = (config?: Partial<C>) => JestTestContextFactory<F>;
|
|
46
|
+
export interface JestTestContextBuilderConfig<I, F extends JestTestContextFixture<I>, C> {
|
|
47
|
+
/**
|
|
48
|
+
* Builds a config given the optional, partial input config. This is used across all tests.
|
|
49
|
+
*/
|
|
50
|
+
buildConfig: (config?: Partial<C>) => C;
|
|
51
|
+
/**
|
|
52
|
+
* Builds a new fixture to use across all tests encapsulated tests.
|
|
53
|
+
*/
|
|
54
|
+
buildFixture: (config: C) => F;
|
|
55
|
+
/**
|
|
56
|
+
* Arbitrary before each function, called before the instance is setup.
|
|
57
|
+
*/
|
|
58
|
+
beforeEach?: () => Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Use for building an instance.
|
|
61
|
+
*
|
|
62
|
+
* When the promise resolves it should be ready to be used by the test being executed.
|
|
63
|
+
*/
|
|
64
|
+
setupInstance: (config: C) => Promise<I>;
|
|
65
|
+
/**
|
|
66
|
+
* Use for cleaning up the instance before the next test.
|
|
67
|
+
*/
|
|
68
|
+
teardownInstance: (instance: I, config: C) => Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Arbitrary after each function.
|
|
71
|
+
*/
|
|
72
|
+
afterEach?: () => Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Creates a JestTestContextBuilderFunction given the input builder.
|
|
76
|
+
*
|
|
77
|
+
* @param builder
|
|
78
|
+
* @returns
|
|
79
|
+
*/
|
|
80
|
+
export declare function jestTestContextBuilder<I, F extends JestTestContextFixture<I>, C>(builder: JestTestContextBuilderConfig<I, F, C>): JestTestContextBuilderFunction<I, F, C>;
|
package/src/test/jest.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jestTestContextBuilder = exports.AbstractJestTestContextFixture = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Abstract JestTestContextFixture instance.
|
|
7
|
+
*/
|
|
8
|
+
class AbstractJestTestContextFixture {
|
|
9
|
+
get instance() {
|
|
10
|
+
return this._instance;
|
|
11
|
+
}
|
|
12
|
+
setInstance(instance) {
|
|
13
|
+
if (this._instance != null) {
|
|
14
|
+
throw new Error(`The testing fixture is locked. Don't call setInstance() directly.`);
|
|
15
|
+
}
|
|
16
|
+
this._instance = instance;
|
|
17
|
+
return () => {
|
|
18
|
+
delete this._instance;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.AbstractJestTestContextFixture = AbstractJestTestContextFixture;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a JestTestContextBuilderFunction given the input builder.
|
|
25
|
+
*
|
|
26
|
+
* @param builder
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
function jestTestContextBuilder(builder) {
|
|
30
|
+
return (inputConfig) => {
|
|
31
|
+
const config = builder.buildConfig(inputConfig);
|
|
32
|
+
return (buildTests) => {
|
|
33
|
+
const fixture = builder.buildFixture(config);
|
|
34
|
+
let instance;
|
|
35
|
+
let clearInstance;
|
|
36
|
+
// Before
|
|
37
|
+
if (builder.beforeEach != null) {
|
|
38
|
+
beforeEach(builder.beforeEach);
|
|
39
|
+
}
|
|
40
|
+
// Create an instance
|
|
41
|
+
beforeEach(() => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
42
|
+
try {
|
|
43
|
+
instance = yield builder.setupInstance(config);
|
|
44
|
+
clearInstance = fixture.setInstance(instance);
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
console.error('Failed building a test instance due to an error in buildInstance(). Error: ', e);
|
|
48
|
+
clearInstance();
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
/**
|
|
53
|
+
* Build tests by passing the fixture to the testing functions.
|
|
54
|
+
*
|
|
55
|
+
* This will inject all tests and sub Jest lifecycle items.
|
|
56
|
+
*/
|
|
57
|
+
buildTests(fixture);
|
|
58
|
+
// Cleanup
|
|
59
|
+
afterEach(() => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
60
|
+
clearInstance();
|
|
61
|
+
if (fixture.instance != null) {
|
|
62
|
+
console.warn('Expected instance to be set on fixture for cleanup but was set to something else.');
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
yield builder.teardownInstance(instance, config);
|
|
66
|
+
instance = undefined;
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
console.error('Failed due to error in destroyingInstance()');
|
|
70
|
+
throw e;
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
if (builder.afterEach != null) {
|
|
74
|
+
afterEach(builder.afterEach);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.jestTestContextBuilder = jestTestContextBuilder;
|
|
80
|
+
//# sourceMappingURL=jest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest.js","sourceRoot":"","sources":["../../../../../packages/util/src/test/jest.ts"],"names":[],"mappings":";;;;AAgCA;;GAEG;AACH,MAAsB,8BAA8B;IAIlD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAU,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAW;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;SACtF;QAED,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,OAAO,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC;CAEF;AApBD,wEAoBC;AAmDD;;;;;GAKG;AACH,SAAgB,sBAAsB,CAA4C,OAA8C;IAC9H,OAAO,CAAC,WAAwB,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEhD,OAAO,CAAC,UAAgD,EAAE,EAAE;YAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,QAAW,CAAC;YAChB,IAAI,aAA0D,CAAC;YAE/D,SAAS;YACT,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;gBAC9B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAChC;YAED,qBAAqB;YACrB,UAAU,CAAC,GAAS,EAAE;gBACpB,IAAI;oBACF,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAC/C,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBAC/C;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,KAAK,CAAC,6EAA6E,EAAE,CAAC,CAAC,CAAC;oBAChG,aAAa,EAAE,CAAC;oBAChB,MAAM,CAAC,CAAC;iBACT;YACH,CAAC,CAAA,CAAC,CAAC;YAEH;;;;eAIG;YACH,UAAU,CAAC,OAAO,CAAC,CAAC;YAEpB,UAAU;YACV,SAAS,CAAC,GAAS,EAAE;gBACnB,aAAa,EAAE,CAAC;gBAEhB,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;oBAC5B,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;iBACnG;gBAED,IAAI;oBACF,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACjD,QAAQ,GAAG,SAAgB,CAAC;iBAC7B;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBAC7D,MAAM,CAAC,CAAC;iBACT;YACH,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aAC9B;QACH,CAAC,CAAA;IACH,CAAC,CAAC;AACJ,CAAC;AAvDD,wDAuDC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { AbstractJestTestContextFixture, JestTestContextFactory } from "./jest";
|
|
2
|
+
export declare abstract class AbstractWrappedFixture<F> {
|
|
3
|
+
readonly fixture: F;
|
|
4
|
+
constructor(fixture: F);
|
|
5
|
+
}
|
|
6
|
+
export declare abstract class AbstractWrappedFixtureWithInstance<I, F> extends AbstractJestTestContextFixture<I> {
|
|
7
|
+
readonly parent: F;
|
|
8
|
+
constructor(parent: F);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Used to wrap a JestTestContextFactory of one fixture type to another.
|
|
12
|
+
*
|
|
13
|
+
* This is useful for cases where the base fixture may be used in a lot of places and contexts, but the wrapped version can configure
|
|
14
|
+
* tests more specifically.
|
|
15
|
+
*/
|
|
16
|
+
export declare type JestTestWrappedContextFactoryBuilder<W, F> = (factory: JestTestContextFactory<F>) => JestTestContextFactory<W>;
|
|
17
|
+
export interface JestWrapTestContextConfig<W, F, E = any> {
|
|
18
|
+
/**
|
|
19
|
+
* Wraps the fixture. This occurs once before any tests execute.
|
|
20
|
+
*/
|
|
21
|
+
wrapFixture: (fixture: F) => W;
|
|
22
|
+
/**
|
|
23
|
+
* Use for doing any setup that may be required on a per-test basis.
|
|
24
|
+
*
|
|
25
|
+
* This occurs before every test, but after the fixture's instance has already been configured.
|
|
26
|
+
*
|
|
27
|
+
* The setup can return an effect. This effect is passed to the teardown function later, if provided.
|
|
28
|
+
*/
|
|
29
|
+
setupWrap?: (wrap: W) => Promise<E>;
|
|
30
|
+
/**
|
|
31
|
+
* Use for cleaning up the instance before the next function.
|
|
32
|
+
*
|
|
33
|
+
* This occurs after every test, but after the fixture's instance has already been configured.
|
|
34
|
+
*/
|
|
35
|
+
teardownWrap?: (wrap: W, effect: E) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Wraps the input JestTestContextFactory to emit another type of Fixture for tests.
|
|
39
|
+
*
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
export declare function wrapJestTestContextFactory<W, F, E = any>(config: JestWrapTestContextConfig<W, F, E>): (factory: JestTestContextFactory<F>) => JestTestContextFactory<W>;
|
|
43
|
+
export interface InstanceJestWrapTestContextConfig<I, W extends AbstractWrappedFixtureWithInstance<I, F>, F> extends Pick<JestWrapTestContextConfig<W, F>, 'wrapFixture'> {
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new instance for the tests.
|
|
46
|
+
*/
|
|
47
|
+
makeInstance: (wrap: W) => I | Promise<I>;
|
|
48
|
+
/**
|
|
49
|
+
* Use for doing any setup that may be required on a per-test basis.
|
|
50
|
+
*
|
|
51
|
+
* This occurs before every test, but after the fixture's instance has already been configured.
|
|
52
|
+
*/
|
|
53
|
+
setupInstance?: (instance: I, wrap: W) => void | Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Use for cleaning up the instance before the next function.
|
|
56
|
+
*
|
|
57
|
+
* This occurs after every test, but after the fixture's instance has already been configured.
|
|
58
|
+
*/
|
|
59
|
+
teardownInstance?: (instance: I) => void | Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
export declare function instanceWrapJestTestContextFactory<I, W extends AbstractWrappedFixtureWithInstance<I, F>, F>(config: InstanceJestWrapTestContextConfig<I, W, F>): (factory: JestTestContextFactory<F>) => JestTestContextFactory<W>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.instanceWrapJestTestContextFactory = exports.wrapJestTestContextFactory = exports.AbstractWrappedFixtureWithInstance = exports.AbstractWrappedFixture = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jest_1 = require("./jest");
|
|
6
|
+
class AbstractWrappedFixture {
|
|
7
|
+
constructor(fixture) {
|
|
8
|
+
this.fixture = fixture;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.AbstractWrappedFixture = AbstractWrappedFixture;
|
|
12
|
+
class AbstractWrappedFixtureWithInstance extends jest_1.AbstractJestTestContextFixture {
|
|
13
|
+
constructor(parent) {
|
|
14
|
+
super();
|
|
15
|
+
this.parent = parent;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.AbstractWrappedFixtureWithInstance = AbstractWrappedFixtureWithInstance;
|
|
19
|
+
/**
|
|
20
|
+
* Wraps the input JestTestContextFactory to emit another type of Fixture for tests.
|
|
21
|
+
*
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
function wrapJestTestContextFactory(config) {
|
|
25
|
+
return (factory) => {
|
|
26
|
+
return (buildTests) => {
|
|
27
|
+
factory((inputFixture) => {
|
|
28
|
+
const wrap = config.wrapFixture(inputFixture);
|
|
29
|
+
let effect;
|
|
30
|
+
if (config.setupWrap != null) {
|
|
31
|
+
beforeEach(() => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
32
|
+
effect = yield config.setupWrap(wrap);
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
buildTests(wrap);
|
|
36
|
+
if (config.teardownWrap != null) {
|
|
37
|
+
afterEach(() => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
38
|
+
yield config.teardownWrap(wrap, effect);
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
exports.wrapJestTestContextFactory = wrapJestTestContextFactory;
|
|
46
|
+
function instanceWrapJestTestContextFactory(config) {
|
|
47
|
+
return wrapJestTestContextFactory({
|
|
48
|
+
wrapFixture: config.wrapFixture,
|
|
49
|
+
setupWrap: (wrap) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
50
|
+
const instance = yield config.makeInstance(wrap);
|
|
51
|
+
const effect = wrap.setInstance(instance);
|
|
52
|
+
if (config.setupInstance) {
|
|
53
|
+
yield config.setupInstance(instance, wrap);
|
|
54
|
+
}
|
|
55
|
+
return effect;
|
|
56
|
+
}),
|
|
57
|
+
teardownWrap: (wrap, deleteInstanceEffect) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
58
|
+
deleteInstanceEffect();
|
|
59
|
+
if (config.teardownInstance) {
|
|
60
|
+
yield config.teardownInstance(wrap.instance);
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
exports.instanceWrapJestTestContextFactory = instanceWrapJestTestContextFactory;
|
|
66
|
+
//# sourceMappingURL=jest.wrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest.wrap.js","sourceRoot":"","sources":["../../../../../packages/util/src/test/jest.wrap.ts"],"names":[],"mappings":";;;;AAAA,iCAAgK;AAEhK,MAAsB,sBAAsB;IAE1C,YAAqB,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAI,CAAC;CAErC;AAJD,wDAIC;AAED,MAAsB,kCAAyC,SAAQ,qCAAiC;IAEtG,YAAqB,MAAS;QAC5B,KAAK,EAAE,CAAC;QADW,WAAM,GAAN,MAAM,CAAG;IAE9B,CAAC;CAEF;AAND,gFAMC;AAmCD;;;;GAIG;AACH,SAAgB,0BAA0B,CAAgB,MAA0C;IAClG,OAAO,CAAC,OAAkC,EAAE,EAAE;QAC5C,OAAO,CAAC,UAAgD,EAAE,EAAE;YAC1D,OAAO,CAAC,CAAC,YAAe,EAAE,EAAE;gBAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,MAAS,CAAC;gBAEd,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;oBAC5B,UAAU,CAAC,GAAS,EAAE;wBACpB,MAAM,GAAG,MAAM,MAAM,CAAC,SAAU,CAAC,IAAI,CAAC,CAAC;oBACzC,CAAC,CAAA,CAAC,CAAC;iBACJ;gBAED,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEjB,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;oBAC/B,SAAS,CAAC,GAAS,EAAE;wBACnB,MAAM,MAAM,CAAC,YAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC3C,CAAC,CAAA,CAAC,CAAC;iBACJ;YAEH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAA;AACH,CAAC;AAxBD,gEAwBC;AA0BD,SAAgB,kCAAkC,CAA2D,MAAkD;IAC7J,OAAO,0BAA0B,CAAoD;QACnF,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,CAAO,IAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,MAAM,CAAC,aAAa,EAAE;gBACxB,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;aAC5C;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAA;QACD,YAAY,EAAE,CAAO,IAAO,EAAE,oBAAiE,EAAE,EAAE;YACjG,oBAAoB,EAAE,CAAC;YAEvB,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBAC3B,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9C;QACH,CAAC,CAAA;KACF,CAAC,CAAC;AACL,CAAC;AArBD,gFAqBC"}
|