@augment-vir/common 22.2.2 → 22.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/augments/object/any-object.js +2 -0
- package/dist/cjs/augments/object/get-or-set.js +41 -0
- package/dist/cjs/index.js +2 -1
- package/dist/esm/augments/object/any-object.js +1 -0
- package/dist/esm/augments/object/get-or-set.js +36 -0
- package/dist/esm/index.js +2 -1
- package/dist/types/augments/object/any-object.d.ts +2 -0
- package/dist/types/augments/object/get-or-set.d.ts +26 -0
- package/dist/types/index.d.ts +2 -1
- package/package.json +1 -1
- package/dist/cjs/augments/map.js +0 -15
- package/dist/esm/augments/map.js +0 -11
- package/dist/types/augments/map.d.ts +0 -6
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrSet = exports.getOrSetFromMap = void 0;
|
|
4
|
+
const run_time_assertions_1 = require("run-time-assertions");
|
|
5
|
+
function getOrSetFromMap(map, key, createNewValueCallback) {
|
|
6
|
+
const mapKey = key;
|
|
7
|
+
if (map.has(mapKey)) {
|
|
8
|
+
return map.get(mapKey);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
const newValue = createNewValueCallback();
|
|
12
|
+
map.set(mapKey, newValue);
|
|
13
|
+
return newValue;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.getOrSetFromMap = getOrSetFromMap;
|
|
17
|
+
function getOrSet(originalObject, key, createCallback) {
|
|
18
|
+
if (key in originalObject) {
|
|
19
|
+
return originalObject[key];
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const createdValue = createCallback();
|
|
23
|
+
if ((0, run_time_assertions_1.isPromise)(createdValue)) {
|
|
24
|
+
return new Promise(async (resolve, reject) => {
|
|
25
|
+
try {
|
|
26
|
+
const awaitedValue = await createdValue;
|
|
27
|
+
originalObject[key] = awaitedValue;
|
|
28
|
+
resolve(awaitedValue);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
reject(error);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
originalObject[key] = createdValue;
|
|
37
|
+
return createdValue;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.getOrSet = getOrSet;
|
package/dist/cjs/index.js
CHANGED
|
@@ -27,9 +27,10 @@ __exportStar(require("./augments/esm-path"), exports);
|
|
|
27
27
|
__exportStar(require("./augments/function"), exports);
|
|
28
28
|
__exportStar(require("./augments/json"), exports);
|
|
29
29
|
__exportStar(require("./augments/json-compatible"), exports);
|
|
30
|
-
__exportStar(require("./augments/
|
|
30
|
+
__exportStar(require("./augments/object/any-object"), exports);
|
|
31
31
|
__exportStar(require("./augments/object/enum"), exports);
|
|
32
32
|
__exportStar(require("./augments/object/filter-object"), exports);
|
|
33
|
+
__exportStar(require("./augments/object/get-or-set"), exports);
|
|
33
34
|
__exportStar(require("./augments/object/has-key"), exports);
|
|
34
35
|
__exportStar(require("./augments/object/jsonify"), exports);
|
|
35
36
|
__exportStar(require("./augments/object/map-object"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isPromise } from 'run-time-assertions';
|
|
2
|
+
export function getOrSetFromMap(map, key, createNewValueCallback) {
|
|
3
|
+
const mapKey = key;
|
|
4
|
+
if (map.has(mapKey)) {
|
|
5
|
+
return map.get(mapKey);
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
const newValue = createNewValueCallback();
|
|
9
|
+
map.set(mapKey, newValue);
|
|
10
|
+
return newValue;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function getOrSet(originalObject, key, createCallback) {
|
|
14
|
+
if (key in originalObject) {
|
|
15
|
+
return originalObject[key];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const createdValue = createCallback();
|
|
19
|
+
if (isPromise(createdValue)) {
|
|
20
|
+
return new Promise(async (resolve, reject) => {
|
|
21
|
+
try {
|
|
22
|
+
const awaitedValue = await createdValue;
|
|
23
|
+
originalObject[key] = awaitedValue;
|
|
24
|
+
resolve(awaitedValue);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
reject(error);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
originalObject[key] = createdValue;
|
|
33
|
+
return createdValue;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
package/dist/esm/index.js
CHANGED
|
@@ -11,9 +11,10 @@ export * from './augments/esm-path';
|
|
|
11
11
|
export * from './augments/function';
|
|
12
12
|
export * from './augments/json';
|
|
13
13
|
export * from './augments/json-compatible';
|
|
14
|
-
export * from './augments/
|
|
14
|
+
export * from './augments/object/any-object';
|
|
15
15
|
export * from './augments/object/enum';
|
|
16
16
|
export * from './augments/object/filter-object';
|
|
17
|
+
export * from './augments/object/get-or-set';
|
|
17
18
|
export * from './augments/object/has-key';
|
|
18
19
|
export * from './augments/object/jsonify';
|
|
19
20
|
export * from './augments/object/map-object';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { MaybePromise } from '../promise/promise';
|
|
2
|
+
/**
|
|
3
|
+
* Get a value from a map or call the callback and return its result and store the result in the
|
|
4
|
+
* map.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getOrSetFromMap<MapKey extends object, MapValue>(map: WeakMap<MapKey, MapValue>, key: MapKey, createNewValueCallback: () => MapValue): MapValue;
|
|
7
|
+
export declare function getOrSetFromMap<MapKey, MapValue>(map: Map<MapKey, MapValue>, key: MapKey, createNewValueCallback: () => MapValue): MapValue;
|
|
8
|
+
/**
|
|
9
|
+
* Given an object, tries to get the given key in that object. If the key is not in that object,
|
|
10
|
+
* then the given `createCallback` is used to create a new value which is then stored in the given
|
|
11
|
+
* object and returned. Automatically handles `createCallback` returning a promise, if it does.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // instead of doing this
|
|
15
|
+
* if (!myObject[myKey]) {
|
|
16
|
+
* myObject[myKey] = myValue;
|
|
17
|
+
* }
|
|
18
|
+
* // notice the not null assertion here
|
|
19
|
+
* retrievedValue![nextKey] = 'some value';
|
|
20
|
+
*
|
|
21
|
+
* // do this
|
|
22
|
+
* getOrSetInObject(myObject, myKey, () => myValue);
|
|
23
|
+
*/
|
|
24
|
+
export declare function getOrSet<OriginalObject extends object, Key extends keyof OriginalObject>(originalObject: OriginalObject, key: Key, createCallback: () => OriginalObject[Key]): Required<OriginalObject>[Key];
|
|
25
|
+
export declare function getOrSet<OriginalObject extends object, Key extends keyof OriginalObject>(originalObject: OriginalObject, key: Key, createCallback: () => Promise<OriginalObject[Key]>): Promise<Required<OriginalObject>[Key]>;
|
|
26
|
+
export declare function getOrSet<OriginalObject extends object, Key extends keyof OriginalObject>(originalObject: OriginalObject, key: Key, createCallback: () => MaybePromise<OriginalObject[Key]>): MaybePromise<Required<OriginalObject>[Key]>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -11,9 +11,10 @@ export * from './augments/esm-path';
|
|
|
11
11
|
export * from './augments/function';
|
|
12
12
|
export * from './augments/json';
|
|
13
13
|
export * from './augments/json-compatible';
|
|
14
|
-
export * from './augments/
|
|
14
|
+
export * from './augments/object/any-object';
|
|
15
15
|
export * from './augments/object/enum';
|
|
16
16
|
export * from './augments/object/filter-object';
|
|
17
|
+
export * from './augments/object/get-or-set';
|
|
17
18
|
export * from './augments/object/has-key';
|
|
18
19
|
export * from './augments/object/jsonify';
|
|
19
20
|
export * from './augments/object/map-object';
|
package/package.json
CHANGED
package/dist/cjs/augments/map.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOrSetFromMap = void 0;
|
|
4
|
-
function getOrSetFromMap(map, key, createNewValueCallback) {
|
|
5
|
-
const mapKey = key;
|
|
6
|
-
if (map.has(mapKey)) {
|
|
7
|
-
return map.get(mapKey);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
const newValue = createNewValueCallback();
|
|
11
|
-
map.set(mapKey, newValue);
|
|
12
|
-
return newValue;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.getOrSetFromMap = getOrSetFromMap;
|
package/dist/esm/augments/map.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get a value from a map or call the callback and return its result and store the result in the
|
|
3
|
-
* map.
|
|
4
|
-
*/
|
|
5
|
-
export declare function getOrSetFromMap<MapKey extends object, MapValue>(map: WeakMap<MapKey, MapValue>, key: MapKey, createNewValueCallback: () => MapValue): MapValue;
|
|
6
|
-
export declare function getOrSetFromMap<MapKey, MapValue>(map: Map<MapKey, MapValue>, key: MapKey, createNewValueCallback: () => MapValue): MapValue;
|