@agoric/internal 0.4.0-u19.2 → 0.4.0-u20.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 +19 -16
- package/src/config.d.ts +2 -4
- package/src/config.js +4 -2
- package/src/hex.d.ts +15 -0
- package/src/hex.d.ts.map +1 -0
- package/src/hex.js +105 -0
- package/src/index.d.ts +2 -3
- package/src/index.js +2 -4
- package/src/js-utils.d.ts +29 -4
- package/src/js-utils.d.ts.map +1 -1
- package/src/js-utils.js +144 -23
- package/src/metrics.d.ts +183 -0
- package/src/metrics.d.ts.map +1 -0
- package/src/metrics.js +476 -0
- package/src/module-utils.d.ts +2 -0
- package/src/module-utils.d.ts.map +1 -0
- package/src/module-utils.js +27 -0
- package/src/ses-utils.d.ts +7 -0
- package/src/ses-utils.d.ts.map +1 -1
- package/src/ses-utils.js +66 -2
- package/src/tmpDir.d.ts +2 -0
- package/src/tmpDir.d.ts.map +1 -0
- package/src/tmpDir.js +17 -0
- package/src/types.d.ts +12 -0
- package/src/types.d.ts.map +1 -1
- package/src/types.ts +21 -0
package/src/ses-utils.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export function PromiseAllOrErrors<T>(items: readonly (T | PromiseLike<T>)[]): P
|
|
|
34
34
|
export function aggregateTryFinally<T>(trier: () => Promise<T>, finalizer: (error?: unknown) => Promise<unknown>): ReturnType<() => Promise<T>>;
|
|
35
35
|
export function withDeferredCleanup<T>(fn: (addCleanup: (fn: (err?: unknown) => Promise<void>) => void) => Promise<T>): ReturnType<(addCleanup: (fn: (err?: unknown) => Promise<void>) => void) => Promise<T>>;
|
|
36
36
|
export function assertAllDefined<T extends Record<string, unknown>>(obj: T): asserts obj is AllDefined<T>;
|
|
37
|
+
export function attenuate<T, P extends Permit<T>>(specimen: T, permit: P, transform?: <U, SubP extends Permit<U>>(attenuation: U, permit: SubP) => U): Attenuated<T, P>;
|
|
37
38
|
export const forever: AsyncIterable<undefined>;
|
|
38
39
|
export function whileTrue<T>(produce: () => T): AsyncIterable<Awaited<T>>;
|
|
39
40
|
export function untilTrue<T>(produce: () => T): AsyncIterable<Awaited<T>>;
|
|
@@ -56,6 +57,12 @@ export type Callable = (...args: any[]) => any;
|
|
|
56
57
|
export type DeeplyAwaitedObject<T extends {}> = { [K in keyof T]: T[K] extends Callable ? T[K] : DeeplyAwaited<T[K]>; };
|
|
57
58
|
export type DeeplyAwaited<T> = T extends PromiseLike<any> ? Awaited<T> : T extends {} ? Simplify<DeeplyAwaitedObject<T>> : Awaited<T>;
|
|
58
59
|
export type AllDefined<T extends Record<string, unknown>> = { [P in keyof T]: Exclude<T[P], undefined>; };
|
|
60
|
+
import { objectMap } from '@endo/common/object-map.js';
|
|
61
|
+
import { objectMetaMap } from '@endo/common/object-meta-map.js';
|
|
62
|
+
import { fromUniqueEntries } from '@endo/common/from-unique-entries.js';
|
|
59
63
|
import type { LimitedConsole } from './js-utils.js';
|
|
64
|
+
import type { Permit } from './types.js';
|
|
65
|
+
import type { Attenuated } from './types.js';
|
|
60
66
|
import type { ERef } from '@endo/far';
|
|
67
|
+
export { objectMap, objectMetaMap, fromUniqueEntries };
|
|
61
68
|
//# sourceMappingURL=ses-utils.d.ts.map
|
package/src/ses-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ses-utils.d.ts","sourceRoot":"","sources":["ses-utils.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ses-utils.d.ts","sourceRoot":"","sources":["ses-utils.js"],"names":[],"mappings":"AA8BO,+CADK,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAKvC,cAAc,CACjC;AAGD;;;;;GAKG;AAEH;;GAEG;AAEH;;;;;GAKG;AAEH;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,oCAFU,CAAC,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAKxE;AAsBK,mCAJM,CAAC,SACH,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,GAC7B,OAAO,CAAC,CAAC,EAAE,CAAC,CAiBxB;AAQM,oCALM,CAAC,SACH,MAAM,OAAO,CAAC,CAAC,CAAC,aAChB,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GACnC,UAAU,OAFN,OAAO,CAAC,CAAC,CAAC,CAEG,CAY3B;AAWI,oCANM,CAAC,MACH,CACN,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,KACvD,OAAO,CAAC,CAAC,CAAC,GACL,UAAU,cAFN,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,KACvD,OAAO,CAAC,CAAC,CAAC,CACS,CAmB1B;AAgBM,iCALgC,CAAC,SAA1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAE,OAC3B,CAAC,GACC,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAaxC;AAaM,0BARM,CAAC,EACW,CAAC,SAAb,OAAQ,CAAC,CAAE,YACb,CAAC,UACD,CAAC,cACD,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,GAE5D,WAAW,CAAC,EAAE,CAAC,CAAC,CA4C5B;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,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EACzC,GAAG,EAAE,CAAC,KACH,OAAO,CAAC,GAAG,CAAC,IAAI,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,mCA8GhB;;;;;;qBA9XY,CAAC,IACD,GAAG,OAAO,IAAI,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,CAAC,IAAI,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;uBAmGkB,CAAC,SAA1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAE,IACzB,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAE;0BA3J/B,4BAA4B;8BACxB,iCAAiC;kCAC7B,qCAAqC;oCAUrC,eAAe;4BAIX,YAAY;gCAAZ,YAAY;0BAF1B,WAAW"}
|
package/src/ses-utils.js
CHANGED
|
@@ -5,18 +5,27 @@
|
|
|
5
5
|
* either directly or indirectly (e.g. by @endo imports).
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import { objectMap } from '@endo/common/object-map.js';
|
|
9
|
+
import { objectMetaMap } from '@endo/common/object-meta-map.js';
|
|
10
|
+
import { fromUniqueEntries } from '@endo/common/from-unique-entries.js';
|
|
8
11
|
import { q, Fail, makeError, annotateError, X } from '@endo/errors';
|
|
9
12
|
import { deeplyFulfilled, isObject } from '@endo/marshal';
|
|
10
13
|
import { makePromiseKit } from '@endo/promise-kit';
|
|
11
14
|
import { makeQueue } from '@endo/stream';
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
16
|
+
// @ts-ignore TS7016 The 'jessie.js' library may need to update its package.json or typings
|
|
12
17
|
import { asyncGenerate } from 'jessie.js';
|
|
13
18
|
import { logLevels } from './js-utils.js';
|
|
14
19
|
|
|
15
20
|
/** @import {LimitedConsole} from './js-utils.js'; */
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
/** @import {ERef} from '@endo/far'; */
|
|
23
|
+
/** @import {Primitive} from '@endo/pass-style'; */
|
|
24
|
+
/** @import {Permit, Attenuated} from './types.js'; */
|
|
25
|
+
|
|
26
|
+
export { objectMap, objectMetaMap, fromUniqueEntries };
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
const { fromEntries, keys, values } = Object;
|
|
20
29
|
|
|
21
30
|
/** @param {(level: string) => (...args: unknown[]) => void} makeLogger */
|
|
22
31
|
export const makeLimitedConsole = makeLogger => {
|
|
@@ -175,6 +184,61 @@ export const assertAllDefined = obj => {
|
|
|
175
184
|
}
|
|
176
185
|
};
|
|
177
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Attenuate `specimen` to only properties allowed by `permit`.
|
|
189
|
+
*
|
|
190
|
+
* @template T
|
|
191
|
+
* @template {Permit<T>} P
|
|
192
|
+
* @param {T} specimen
|
|
193
|
+
* @param {P} permit
|
|
194
|
+
* @param {<U, SubP extends Permit<U>>(attenuation: U, permit: SubP) => U} [transform]
|
|
195
|
+
* used to replace the results of recursive picks (but not blanket permits)
|
|
196
|
+
* @returns {Attenuated<T, P>}
|
|
197
|
+
*/
|
|
198
|
+
export const attenuate = (specimen, permit, transform = x => x) => {
|
|
199
|
+
// Fast-path for no attenuation.
|
|
200
|
+
if (permit === true || typeof permit === 'string') {
|
|
201
|
+
return /** @type {Attenuated<T, P>} */ (specimen);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** @type {string[]} */
|
|
205
|
+
const path = [];
|
|
206
|
+
/**
|
|
207
|
+
* @template SubT
|
|
208
|
+
* @template {Exclude<Permit<SubT>, Primitive>} SubP
|
|
209
|
+
* @type {(specimen: SubT, permit: SubP) => Attenuated<SubT, SubP>}
|
|
210
|
+
*/
|
|
211
|
+
const extract = (subSpecimen, subPermit) => {
|
|
212
|
+
if (subPermit === null || typeof subPermit !== 'object') {
|
|
213
|
+
throw path.length === 0
|
|
214
|
+
? Fail`invalid permit: ${q(permit)}`
|
|
215
|
+
: Fail`invalid permit at path ${q(path)}: ${q(subPermit)}`;
|
|
216
|
+
} else if (subSpecimen === null || typeof subSpecimen !== 'object') {
|
|
217
|
+
throw path.length === 0
|
|
218
|
+
? Fail`specimen must be an object for permit ${q(permit)}`
|
|
219
|
+
: Fail`specimen at path ${q(path)} must be an object for permit ${q(subPermit)}`;
|
|
220
|
+
}
|
|
221
|
+
const picks = Object.entries(subPermit).map(([subKey, deepPermit]) => {
|
|
222
|
+
if (!Object.hasOwn(subSpecimen, subKey)) {
|
|
223
|
+
throw Fail`specimen is missing path ${q(path.concat(subKey))}`;
|
|
224
|
+
}
|
|
225
|
+
const deepSpecimen = Reflect.get(subSpecimen, subKey);
|
|
226
|
+
if (deepPermit === true || typeof deepPermit === 'string') {
|
|
227
|
+
return [subKey, deepSpecimen];
|
|
228
|
+
}
|
|
229
|
+
path.push(subKey);
|
|
230
|
+
const extracted = extract(/** @type {any} */ (deepSpecimen), deepPermit);
|
|
231
|
+
const entry = [subKey, extracted];
|
|
232
|
+
path.pop();
|
|
233
|
+
return entry;
|
|
234
|
+
});
|
|
235
|
+
return transform(Object.fromEntries(picks), subPermit);
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// @ts-expect-error cast
|
|
239
|
+
return extract(specimen, permit);
|
|
240
|
+
};
|
|
241
|
+
|
|
178
242
|
/** @type {IteratorResult<undefined, never>} */
|
|
179
243
|
const notDone = harden({ done: false, value: undefined });
|
|
180
244
|
|
package/src/tmpDir.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tmpDir.d.ts","sourceRoot":"","sources":["tmpDir.js"],"names":[],"mappings":"AAMO,wCAFI,IAAI,CAAC,oBAAa,EAAE,SAAS,CAAC,aAGlB,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CASvE"}
|
package/src/tmpDir.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a `tmpDir` function that synchronously creates a temporary directory
|
|
3
|
+
* and a function for deleting it along with any added contents.
|
|
4
|
+
*
|
|
5
|
+
* @param {Pick<import('tmp'), 'dirSync'>} tmp
|
|
6
|
+
*/
|
|
7
|
+
export const makeTempDirFactory = tmp => {
|
|
8
|
+
/** @type {(prefix?: string) => [dirName: string, cleanup: () => void]} */
|
|
9
|
+
const tmpDir = prefix => {
|
|
10
|
+
const { name, removeCallback } = tmp.dirSync({
|
|
11
|
+
prefix,
|
|
12
|
+
unsafeCleanup: true,
|
|
13
|
+
});
|
|
14
|
+
return [name, removeCallback];
|
|
15
|
+
};
|
|
16
|
+
return tmpDir;
|
|
17
|
+
};
|
package/src/types.d.ts
CHANGED
|
@@ -11,6 +11,18 @@ export type TotalMap<K, V> = Omit<Map<K, V>, 'get'> & {
|
|
|
11
11
|
get: (key: K) => V;
|
|
12
12
|
};
|
|
13
13
|
export type TotalMapFrom<M extends Map<any, any>> = M extends Map<infer K, infer V> ? TotalMap<K, V> : never;
|
|
14
|
+
/**
|
|
15
|
+
* A permit is either `true` or a string (both meaning no attenuation, with a
|
|
16
|
+
* string serving as a grouping label for convenience and/or diagram
|
|
17
|
+
* generation), or an object whose keys identify child properties and whose
|
|
18
|
+
* corresponding values are theirselves (recursive) Permits.
|
|
19
|
+
*/
|
|
20
|
+
export type Permit<T> = true | string | Partial<{
|
|
21
|
+
[K in keyof T]: K extends string ? Permit<T[K]> : never;
|
|
22
|
+
}>;
|
|
23
|
+
export type Attenuated<T, P extends Permit<T>> = P extends object ? {
|
|
24
|
+
[K in keyof P]: K extends keyof T ? P[K] extends Permit<T[K]> ? Attenuated<T[K], P[K]> : never : never;
|
|
25
|
+
} : T;
|
|
14
26
|
export declare class Callback<I extends (...args: any[]) => any> {
|
|
15
27
|
private iface;
|
|
16
28
|
target: any;
|
package/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
|
package/src/types.ts
CHANGED
|
@@ -15,6 +15,27 @@ export type TotalMap<K, V> = Omit<Map<K, V>, 'get'> & {
|
|
|
15
15
|
export type TotalMapFrom<M extends Map<any, any>> =
|
|
16
16
|
M extends Map<infer K, infer V> ? TotalMap<K, V> : never;
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* A permit is either `true` or a string (both meaning no attenuation, with a
|
|
20
|
+
* string serving as a grouping label for convenience and/or diagram
|
|
21
|
+
* generation), or an object whose keys identify child properties and whose
|
|
22
|
+
* corresponding values are theirselves (recursive) Permits.
|
|
23
|
+
*/
|
|
24
|
+
export type Permit<T> =
|
|
25
|
+
| true
|
|
26
|
+
| string
|
|
27
|
+
| Partial<{ [K in keyof T]: K extends string ? Permit<T[K]> : never }>;
|
|
28
|
+
|
|
29
|
+
export type Attenuated<T, P extends Permit<T>> = P extends object
|
|
30
|
+
? {
|
|
31
|
+
[K in keyof P]: K extends keyof T
|
|
32
|
+
? P[K] extends Permit<T[K]>
|
|
33
|
+
? Attenuated<T[K], P[K]>
|
|
34
|
+
: never
|
|
35
|
+
: never;
|
|
36
|
+
}
|
|
37
|
+
: T;
|
|
38
|
+
|
|
18
39
|
export declare class Callback<I extends (...args: any[]) => any> {
|
|
19
40
|
private iface: I;
|
|
20
41
|
|