@agoric/internal 0.3.3-dev-80f5cb1.0 → 0.3.3-dev-bd19a6f.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/package.json +3 -3
- package/src/utils.d.ts +1 -0
- package/src/utils.d.ts.map +1 -1
- package/src/utils.js +49 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/internal",
|
|
3
|
-
"version": "0.3.3-dev-
|
|
3
|
+
"version": "0.3.3-dev-bd19a6f.0+bd19a6f",
|
|
4
4
|
"description": "Externally unsupported utilities internal to agoric-sdk",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"lint:types": "tsc"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@agoric/base-zone": "0.1.1-dev-
|
|
23
|
+
"@agoric/base-zone": "0.1.1-dev-bd19a6f.0+bd19a6f",
|
|
24
24
|
"@endo/common": "^1.2.5",
|
|
25
25
|
"@endo/errors": "^1.2.5",
|
|
26
26
|
"@endo/far": "^1.1.5",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"typeCoverage": {
|
|
60
60
|
"atLeast": 93.82
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "bd19a6f72106d0f0843a48e8a725e8b426132a1e"
|
|
63
63
|
}
|
package/src/utils.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export const BASIS_POINTS: 10000n;
|
|
|
31
31
|
* @type {<T extends {}>(unfulfilledTerms: T) => Promise<DeeplyAwaited<T>>}
|
|
32
32
|
*/
|
|
33
33
|
export const deeplyFulfilledObject: <T extends {}>(unfulfilledTerms: T) => Promise<DeeplyAwaited<T>>;
|
|
34
|
+
export function deepMapObject(obj: object, mapper: (value: any, name: string, record: object) => any): object;
|
|
34
35
|
export function makeMeasureSeconds(currentTimeMillisec: typeof import("perf_hooks").performance.now): <T>(fn: () => Promise<T>) => Promise<{
|
|
35
36
|
result: T;
|
|
36
37
|
duration: number;
|
package/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"AAWA,kCAAoC;AAEpC,sCAAsC;AAEtC;;;;;GAKG;AAEH;;GAEG;AAEH;;;;;GAKG;AAEH;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,oCAFU,CAAC,CAAY,SAAF,EAAE,EAAE,gBAAgB,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAKxE;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"AAWA,kCAAoC;AAEpC,sCAAsC;AAEtC;;;;;GAKG;AAEH;;GAEG;AAEH;;;;;GAKG;AAEH;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,oCAFU,CAAC,CAAY,SAAF,EAAE,EAAE,gBAAgB,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAKxE;AAgDK,mCAJI,MAAM,UACN,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,GAC/C,MAAM,CAGuC;AAYnD,wDALI,cAAc,YAAY,EAAE,WAAW,CAAC,GAAG,GACzC,CAAC,CAAC,EACd,EAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KACjB,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C;AAgBM,iCALgC,CAAC,SAA1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAE,OAC3B,CAAC,GACC,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAaxC;AAQD,+CAAoD;AAS7C,0BANM,CAAC,WACH,MAAM,CAAC,GAGL,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAYlC;AASG,0BANM,CAAC,WACH,MAAM,CAAC,GAGL,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAelC;AAEJ,mDAAmD;AACnD,kBADW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CACsB;AAErE;;;;GAIG;AACH,wBAJU,CAAC,CAAmC,SAAzB,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAC7C,GAAO,EAAE,CAAC,KACH,OAAO,CAAC,GAAG,CAAY,IAAP,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAMhD;AAWK,gCAJO,CAAC,0BACJ,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,eAC5B,MAAM,mCA0GhB;;;;;;qBAtTY,CAAC,IACD,GAAG,OAAkB,IAAP,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAE,GAAG,EAAE;uBAMzC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;gCAIlB,CAAC,SAAN,EAAI,IACJ,GACP,CAAY,IAAP,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACnE;0BAIS,CAAC,IACD,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,GAC9B,OAAO,CAAC,CAAC,CAAC,GACV,CAAC,SAAS,EAAE,GACV,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC;uBAsFkB,CAAC,SAA1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAE,IACzB,GAAG,CAAY,IAAP,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAE;0BAjHjC,WAAW"}
|
package/src/utils.js
CHANGED
|
@@ -52,6 +52,55 @@ export const deeplyFulfilledObject = async obj => {
|
|
|
52
52
|
return deeplyFulfilled(obj);
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* @param {any} value
|
|
57
|
+
* @param {string | undefined} name
|
|
58
|
+
* @param {object | undefined} container
|
|
59
|
+
* @param {(value: any, name: string, record: object) => any} mapper
|
|
60
|
+
* @returns {any}
|
|
61
|
+
*/
|
|
62
|
+
const deepMapObjectInternal = (value, name, container, mapper) => {
|
|
63
|
+
if (container && typeof name === 'string') {
|
|
64
|
+
const mapped = mapper(value, name, container);
|
|
65
|
+
if (mapped !== value) {
|
|
66
|
+
return mapped;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (typeof value !== 'object' || !value) {
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
let wasMapped = false;
|
|
75
|
+
const mappedEntries = Object.entries(value).map(([innerName, innerValue]) => {
|
|
76
|
+
const mappedInnerValue = deepMapObjectInternal(
|
|
77
|
+
innerValue,
|
|
78
|
+
innerName,
|
|
79
|
+
value,
|
|
80
|
+
mapper,
|
|
81
|
+
);
|
|
82
|
+
wasMapped ||= mappedInnerValue !== innerValue;
|
|
83
|
+
return [innerName, mappedInnerValue];
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
return wasMapped ? Object.fromEntries(mappedEntries) : value;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Traverses a record object structure deeply, calling a replacer for each
|
|
91
|
+
* enumerable string property values of an object. If none of the values are
|
|
92
|
+
* changed, the original object is used as-is, maintaining its identity.
|
|
93
|
+
*
|
|
94
|
+
* When an object is found as a property value, the replacer is first called on
|
|
95
|
+
* it. If not replaced, the object is then traversed.
|
|
96
|
+
*
|
|
97
|
+
* @param {object} obj
|
|
98
|
+
* @param {(value: any, name: string, record: object) => any} mapper
|
|
99
|
+
* @returns {object}
|
|
100
|
+
*/
|
|
101
|
+
export const deepMapObject = (obj, mapper) =>
|
|
102
|
+
deepMapObjectInternal(obj, undefined, undefined, mapper);
|
|
103
|
+
|
|
55
104
|
/**
|
|
56
105
|
* Returns a function that uses a millisecond-based time-since-epoch capability
|
|
57
106
|
* (such as `performance.now`) to measure execution time of an async function
|