@atproto/common-web 0.3.0 → 0.3.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atproto/common-web
2
2
 
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#3177](https://github.com/bluesky-social/atproto/pull/3177) [`72eba67af`](https://github.com/bluesky-social/atproto/commit/72eba67af1af8320b5400bcb9319d5c3c8407d99) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `createRetryable` utility function
8
+
9
+ - [#3177](https://github.com/bluesky-social/atproto/pull/3177) [`72eba67af`](https://github.com/bluesky-social/atproto/commit/72eba67af1af8320b5400bcb9319d5c3c8407d99) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `allFulfilled` utility
10
+
11
+ ## 0.3.1
12
+
13
+ ### Patch Changes
14
+
15
+ - [#2770](https://github.com/bluesky-social/atproto/pull/2770) [`a07b21151`](https://github.com/bluesky-social/atproto/commit/a07b21151f1850340c4b7797ebb11521b1a6cdf3) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add omit() utility
16
+
17
+ - [#2770](https://github.com/bluesky-social/atproto/pull/2770) [`a07b21151`](https://github.com/bluesky-social/atproto/commit/a07b21151f1850340c4b7797ebb11521b1a6cdf3) Thanks [@matthieusieben](https://github.com/matthieusieben)! - DID document parsing optimization
18
+
19
+ - [#2835](https://github.com/bluesky-social/atproto/pull/2835) [`eb20ff64a`](https://github.com/bluesky-social/atproto/commit/eb20ff64a2d8e3061c652e1e247bf9b0fe3c41a6) Thanks [@matthieusieben](https://github.com/matthieusieben)! - ponyfill URL.canParse
20
+
3
21
  ## 0.3.0
4
22
 
5
23
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,qBAAsB,MAAM,sBAK7C,CAAA;AAED,eAAO,MAAM,UAAU,wDAYtB,CAAA"}
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,CAAC,OAAO,CAAC,EAAE,OAAO,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAQhE,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,OACxB,CAAC,EAAE,MACJ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,KAC5B,CAAC,EASH,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,CAAI,GAAQ,EAAE,GAAW,EAAqB,EAAE;IACnE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;QACnB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAuB,CAAC,CAAA;AAC7B,CAAC,CAAA;AALY,QAAA,KAAK,SAKjB;AAEM,MAAM,UAAU,GAAG,CACxB,GAAQ,EACR,EAA6B,EACxB,EAAE;IACP,MAAM,MAAM,GAAQ,EAAE,CAAA;IACtB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAZY,QAAA,UAAU,cAYtB"}
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,CAAI,GAAQ,EAAE,GAAW,EAAqB,EAAE;IACnE,OAAO,GAAG,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;QACnB,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAAuB,CACxB,CAAA;AACH,CAAC,CAAA;AARY,QAAA,KAAK,SAQjB;AAEM,MAAM,UAAU,GAAG,CACxB,GAAQ,EACR,EAA6B,EACxB,EAAE;IACP,MAAM,MAAM,GAAQ,EAAE,CAAA;IACtB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAZY,QAAA,UAAU,cAYtB"}
package/dist/async.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const readFromGenerator: <T>(gen: AsyncGenerator<T, any, unknown>, isDone: (last?: T | undefined) => Promise<boolean> | boolean, waitFor?: Promise<unknown>, maxLength?: number) => Promise<T[]>;
1
+ export declare const readFromGenerator: <T>(gen: AsyncGenerator<T>, isDone: (last?: T) => Promise<boolean> | boolean, waitFor?: Promise<unknown>, maxLength?: number) => Promise<T[]>;
2
2
  export type Deferrable = {
3
3
  resolve: () => void;
4
4
  complete: Promise<void>;
@@ -27,5 +27,19 @@ export declare class AsyncBuffer<T> {
27
27
  export declare class AsyncBufferFullError extends Error {
28
28
  constructor(maxSize: number);
29
29
  }
30
- export declare const handleAllSettledErrors: (results: PromiseSettledResult<unknown>[]) => void;
30
+ /**
31
+ * Utility function that behaves like {@link Promise.allSettled} but returns the
32
+ * same result as {@link Promise.all} in case every promise is fulfilled, and
33
+ * throws an {@link AggregateError} if there are more than one errors.
34
+ */
35
+ export declare function allFulfilled<T extends readonly unknown[] | []>(promises: T): Promise<{
36
+ -readonly [P in keyof T]: Awaited<T[P]>;
37
+ }>;
38
+ export declare function allFulfilled<T>(promises: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
39
+ export declare function handleAllSettledErrors<T extends readonly PromiseSettledResult<unknown>[] | []>(results: T): {
40
+ -readonly [P in keyof T]: T[P] extends PromiseSettledResult<infer U> ? U : never;
41
+ };
42
+ export declare function handleAllSettledErrors<T>(results: PromiseSettledResult<T>[]): T[];
43
+ export declare function isRejectedResult(result: PromiseSettledResult<unknown>): result is PromiseRejectedResult;
44
+ export declare function isFulfilledResult<T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T>;
31
45
  //# sourceMappingURL=async.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,8EAEN,QAAQ,OAAO,CAAC,GAAG,OAAO,YACvC,QAAQ,OAAO,CAAC,qCAmC1B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAO,UAMnC,CAAA;AAED,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,UAAU,EAM3D,CAAA;AAED,eAAO,MAAM,WAAW,gBAAuB,UAAU,EAAE,KAAG,QAAQ,IAAI,CAEzE,CAAA;AAED,qBAAa,WAAW,CAAC,CAAC;IAOL,OAAO,CAAC;IAN3B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAqB;gBAEjB,OAAO,CAAC,oBAAQ;IAOnC,IAAI,IAAI,IAAI,CAAC,EAAE,CAEd;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,YAAY;IAIZ,IAAI,CAAC,IAAI,EAAE,CAAC;IAKZ,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE;IAKZ,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IA0BlC,KAAK,CAAC,GAAG,EAAE,OAAO;IAMlB,KAAK;CAIN;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAG5B;AAED,eAAO,MAAM,sBAAsB,YACxB,qBAAqB,OAAO,CAAC,EAAE,SAazC,CAAA"}
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,GAAU,CAAC,OAClC,cAAc,CAAC,CAAC,CAAC,UACd,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,YACvC,OAAO,CAAC,OAAO,CAAC,yBAExB,OAAO,CAAC,CAAC,EAAE,CAiCb,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAO,UAMnC,CAAA;AAED,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,UAAU,EAM3D,CAAA;AAED,eAAO,MAAM,WAAW,gBAAuB,UAAU,EAAE,KAAG,OAAO,CAAC,IAAI,CAEzE,CAAA;AAED,qBAAa,WAAW,CAAC,CAAC;IAOL,OAAO,CAAC,EAAE,MAAM;IANnC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAqB;gBAEjB,OAAO,CAAC,EAAE,MAAM,YAAA;IAOnC,IAAI,IAAI,IAAI,CAAC,EAAE,CAEd;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,YAAY;IAIZ,IAAI,CAAC,IAAI,EAAE,CAAC;IAKZ,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE;IAKZ,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IA0BlC,KAAK,CAAC,GAAG,EAAE,OAAO;IAMlB,KAAK;CAIN;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAG5B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,EAC5D,QAAQ,EAAE,CAAC,GACV,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACvD,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAOxB,wBAAgB,sBAAsB,CACpC,CAAC,SAAS,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAEvD,OAAO,EAAE,CAAC,GACT;IACD,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAChE,CAAC,GACD,KAAK;CACV,CAAA;AACD,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,GACjC,CAAC,EAAE,CAAA;AAkBN,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACpC,MAAM,IAAI,qBAAqB,CAEjC;AAMD,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,MAAM,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAErC"}
package/dist/async.js CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleAllSettledErrors = exports.AsyncBufferFullError = exports.AsyncBuffer = exports.allComplete = exports.createDeferrables = exports.createDeferrable = exports.readFromGenerator = void 0;
3
+ exports.AsyncBufferFullError = exports.AsyncBuffer = exports.allComplete = exports.createDeferrables = exports.createDeferrable = exports.readFromGenerator = void 0;
4
+ exports.allFulfilled = allFulfilled;
5
+ exports.handleAllSettledErrors = handleAllSettledErrors;
6
+ exports.isRejectedResult = isRejectedResult;
7
+ exports.isFulfilledResult = isFulfilledResult;
4
8
  const util_1 = require("./util");
5
9
  // reads values from a generator into a list
6
10
  // breaks when isDone signals `true` AND `waitFor` completes OR when a max length is reached
@@ -170,18 +174,36 @@ class AsyncBufferFullError extends Error {
170
174
  }
171
175
  }
172
176
  exports.AsyncBufferFullError = AsyncBufferFullError;
173
- const handleAllSettledErrors = (results) => {
174
- const errors = results.filter(isRejected).map((res) => res.reason);
177
+ function allFulfilled(promises) {
178
+ return Promise.allSettled(promises).then(handleAllSettledErrors);
179
+ }
180
+ function handleAllSettledErrors(results) {
181
+ const errors = results.filter(isRejectedResult).map(extractReason);
175
182
  if (errors.length === 0) {
176
- return;
183
+ // No need to filter here, it is safe to assume that all promises are fulfilled
184
+ return results.map(extractValue);
177
185
  }
178
186
  if (errors.length === 1) {
179
187
  throw errors[0];
180
188
  }
181
- throw new AggregateError(errors, 'Multiple errors: ' + errors.map((err) => err?.message).join('\n'));
182
- };
183
- exports.handleAllSettledErrors = handleAllSettledErrors;
184
- const isRejected = (result) => {
189
+ throw new AggregateError(errors, `Multiple errors: ${errors.map(stringifyReason).join('\n')}`);
190
+ }
191
+ function isRejectedResult(result) {
185
192
  return result.status === 'rejected';
186
- };
193
+ }
194
+ function extractReason(result) {
195
+ return result.reason;
196
+ }
197
+ function isFulfilledResult(result) {
198
+ return result.status === 'fulfilled';
199
+ }
200
+ function extractValue(result) {
201
+ return result.value;
202
+ }
203
+ function stringifyReason(reason) {
204
+ if (reason instanceof Error) {
205
+ return reason.message;
206
+ }
207
+ return String(reason);
208
+ }
187
209
  //# sourceMappingURL=async.js.map
package/dist/async.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"async.js","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"}
package/dist/check.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { ZodError } from 'zod';
2
1
  export interface Checkable<T> {
3
2
  parse: (obj: unknown) => T;
4
3
  safeParse: (obj: unknown) => {
@@ -6,7 +5,7 @@ export interface Checkable<T> {
6
5
  data: T;
7
6
  } | {
8
7
  success: false;
9
- error: ZodError;
8
+ error: Error;
10
9
  };
11
10
  }
12
11
  export interface Def<T> {
@@ -14,6 +13,7 @@ export interface Def<T> {
14
13
  schema: Checkable<T>;
15
14
  }
16
15
  export declare const is: <T>(obj: unknown, def: Checkable<T>) => obj is T;
16
+ export declare const create: <T>(def: Checkable<T>) => (v: unknown) => v is T;
17
17
  export declare const assure: <T>(def: Checkable<T>, obj: unknown) => T;
18
18
  export declare const isObject: (obj: unknown) => obj is Record<string, unknown>;
19
19
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE9B,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,CAAA;IAC1B,SAAS,EAAE,CACT,GAAG,EAAE,OAAO,KACT;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CACtE;AAED,MAAM,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CACrB;AAED,eAAO,MAAM,EAAE,WAAY,OAAO,gCAEjC,CAAA;AAED,eAAO,MAAM,MAAM,8BAA+B,OAAO,MAExD,CAAA;AAED,eAAO,MAAM,QAAQ,QAAS,OAAO,mCAEpC,CAAA"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,CAAA;IAC1B,SAAS,EAAE,CACT,GAAG,EAAE,OAAO,KACT;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAA;CACnE;AAED,MAAM,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CACrB;AAED,eAAO,MAAM,EAAE,GAAI,CAAC,OAAO,OAAO,OAAO,SAAS,CAAC,CAAC,CAAC,KAAG,GAAG,IAAI,CAE9D,CAAA;AAED,eAAO,MAAM,MAAM,GAChB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,SACjB,OAAO,KAAG,CAAC,IAAI,CACO,CAAA;AAE5B,eAAO,MAAM,MAAM,GAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,KAAG,CAE3D,CAAA;AAED,eAAO,MAAM,QAAQ,QAAS,OAAO,KAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAEpE,CAAA"}
package/dist/check.js CHANGED
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
+ // Explicitly not using "zod" types here to avoid mismatching types due to
3
+ // version differences.
2
4
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isObject = exports.assure = exports.is = void 0;
5
+ exports.isObject = exports.assure = exports.create = exports.is = void 0;
4
6
  const is = (obj, def) => {
5
7
  return def.safeParse(obj).success;
6
8
  };
7
9
  exports.is = is;
10
+ const create = (def) => (v) => def.safeParse(v).success;
11
+ exports.create = create;
8
12
  const assure = (def, obj) => {
9
13
  return def.parse(obj);
10
14
  };
package/dist/check.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":";;;AAcO,MAAM,EAAE,GAAG,CAAI,GAAY,EAAE,GAAiB,EAAY,EAAE;IACjE,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,EAAE,MAEd;AAEM,MAAM,MAAM,GAAG,CAAI,GAAiB,EAAE,GAAY,EAAK,EAAE;IAC9D,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA;AAFY,QAAA,MAAM,UAElB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAkC,EAAE;IACvE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAA;AAChD,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,uBAAuB;;;AAchB,MAAM,EAAE,GAAG,CAAI,GAAY,EAAE,GAAiB,EAAY,EAAE;IACjE,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,EAAE,MAEd;AAEM,MAAM,MAAM,GACjB,CAAI,GAAiB,EAAE,EAAE,CACzB,CAAC,CAAU,EAAU,EAAE,CACrB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AAHf,QAAA,MAAM,UAGS;AAErB,MAAM,MAAM,GAAG,CAAI,GAAiB,EAAE,GAAY,EAAK,EAAE;IAC9D,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA;AAFY,QAAA,MAAM,UAElB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAkC,EAAE;IACvE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAA;AAChD,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB"}
package/dist/did-doc.d.ts CHANGED
@@ -1,19 +1,5 @@
1
1
  import { z } from 'zod';
2
- export declare const isValidDidDoc: (doc: unknown) => doc is {
3
- id: string;
4
- alsoKnownAs?: string[] | undefined;
5
- verificationMethod?: {
6
- id: string;
7
- type: string;
8
- controller: string;
9
- publicKeyMultibase?: string | undefined;
10
- }[] | undefined;
11
- service?: {
12
- id: string;
13
- type: string;
14
- serviceEndpoint: (string | Record<string, unknown>) & (string | Record<string, unknown> | undefined);
15
- }[] | undefined;
16
- };
2
+ export declare const isValidDidDoc: (doc: unknown) => doc is DidDocument;
17
3
  export declare const getDid: (doc: DidDocument) => string;
18
4
  export declare const getHandle: (doc: DidDocument) => string | undefined;
19
5
  export declare const getSigningKey: (doc: DidDocument) => {
@@ -58,11 +44,11 @@ export declare const didDocument: z.ZodObject<{
58
44
  }, "strip", z.ZodTypeAny, {
59
45
  id: string;
60
46
  type: string;
61
- serviceEndpoint: (string | Record<string, unknown>) & (string | Record<string, unknown> | undefined);
47
+ serviceEndpoint: string | Record<string, unknown>;
62
48
  }, {
63
49
  id: string;
64
50
  type: string;
65
- serviceEndpoint: (string | Record<string, unknown>) & (string | Record<string, unknown> | undefined);
51
+ serviceEndpoint: string | Record<string, unknown>;
66
52
  }>, "many">>;
67
53
  }, "strip", z.ZodTypeAny, {
68
54
  id: string;
@@ -76,7 +62,7 @@ export declare const didDocument: z.ZodObject<{
76
62
  service?: {
77
63
  id: string;
78
64
  type: string;
79
- serviceEndpoint: (string | Record<string, unknown>) & (string | Record<string, unknown> | undefined);
65
+ serviceEndpoint: string | Record<string, unknown>;
80
66
  }[] | undefined;
81
67
  }, {
82
68
  id: string;
@@ -90,7 +76,7 @@ export declare const didDocument: z.ZodObject<{
90
76
  service?: {
91
77
  id: string;
92
78
  type: string;
93
- serviceEndpoint: (string | Record<string, unknown>) & (string | Record<string, unknown> | undefined);
79
+ serviceEndpoint: string | Record<string, unknown>;
94
80
  }[] | undefined;
95
81
  }>;
96
82
  export type DidDocument = z.infer<typeof didDocument>;
@@ -1 +1 @@
1
- {"version":3,"file":"did-doc.d.ts","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,aAAa,QAAS,OAAO;;;;;;;;;;;;;;CAEzC,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,WAAW,KAAG,MAMzC,CAAA;AAED,eAAO,MAAM,SAAS,QAAS,WAAW,KAAG,MAAM,GAAG,SAOrD,CAAA;AAGD,eAAO,MAAM,aAAa,QACnB,WAAW,KACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAEjD,CAAA;AAED,eAAO,MAAM,uBAAuB,QAC7B,WAAW,SACT,MAAM,KACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAgBjD,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,WAAW,KAAG,MAAM,GAAG,SAI5D,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,WAAW,KAAG,MAAM,GAAG,SAK1D,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAS,WAAW,KAAG,MAAM,GAAG,SAK9D,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,WAAW,KAAG,MAAM,GAAG,SAK5D,CAAA;AAED,eAAO,MAAM,kBAAkB,QACxB,WAAW,QACV;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,uBAoBpC,CAAA;AAmCD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"did-doc.d.ts","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,aAAa,QAAS,OAAO,KAAG,GAAG,IAAI,WAEnD,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,WAAW,KAAG,MAMzC,CAAA;AAED,eAAO,MAAM,SAAS,QAAS,WAAW,KAAG,MAAM,GAAG,SAYrD,CAAA;AAGD,eAAO,MAAM,aAAa,QACnB,WAAW,KACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAEjD,CAAA;AAED,eAAO,MAAM,uBAAuB,QAC7B,WAAW,SACT,MAAM,KACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,SAgBjD,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,WAAW,KAAG,MAAM,GAAG,SAI5D,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,WAAW,KAAG,MAAM,GAAG,SAK1D,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAS,WAAW,KAAG,MAAM,GAAG,SAK9D,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,WAAW,KAAG,MAAM,GAAG,SAK5D,CAAA;AAED,eAAO,MAAM,kBAAkB,QACxB,WAAW,QACV;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,uBAkBpC,CAAA;AA4ED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
package/dist/did-doc.js CHANGED
@@ -18,13 +18,16 @@ const getDid = (doc) => {
18
18
  exports.getDid = getDid;
19
19
  const getHandle = (doc) => {
20
20
  const aka = doc.alsoKnownAs;
21
- if (!aka)
22
- return undefined;
23
- const found = aka.find((name) => name.startsWith('at://'));
24
- if (!found)
25
- return undefined;
26
- // strip off at:// prefix
27
- return found.slice(5);
21
+ if (aka) {
22
+ for (let i = 0; i < aka.length; i++) {
23
+ const alias = aka[i];
24
+ if (alias.startsWith('at://')) {
25
+ // strip off "at://" prefix
26
+ return alias.slice(5);
27
+ }
28
+ }
29
+ }
30
+ return undefined;
28
31
  };
29
32
  exports.getHandle = getHandle;
30
33
  // @NOTE we parse to type/publicKeyMultibase to avoid the dependency on @atproto/crypto
@@ -33,21 +36,17 @@ const getSigningKey = (doc) => {
33
36
  };
34
37
  exports.getSigningKey = getSigningKey;
35
38
  const getVerificationMaterial = (doc, keyId) => {
36
- const did = (0, exports.getDid)(doc);
37
- let keys = doc.verificationMethod;
38
- if (!keys)
39
- return undefined;
40
- if (typeof keys !== 'object')
39
+ // /!\ Hot path
40
+ const key = findItemById(doc, 'verificationMethod', `#${keyId}`);
41
+ if (!key) {
41
42
  return undefined;
42
- if (!Array.isArray(keys)) {
43
- keys = [keys];
44
43
  }
45
- const found = keys.find((key) => key.id === `#${keyId}` || key.id === `${did}#${keyId}`);
46
- if (!found?.publicKeyMultibase)
44
+ if (!key.publicKeyMultibase) {
47
45
  return undefined;
46
+ }
48
47
  return {
49
- type: found.type,
50
- publicKeyMultibase: found.publicKeyMultibase,
48
+ type: key.type,
49
+ publicKeyMultibase: key.publicKeyMultibase,
51
50
  };
52
51
  };
53
52
  exports.getVerificationMaterial = getVerificationMaterial;
@@ -80,46 +79,62 @@ const getNotifEndpoint = (doc) => {
80
79
  };
81
80
  exports.getNotifEndpoint = getNotifEndpoint;
82
81
  const getServiceEndpoint = (doc, opts) => {
83
- const did = (0, exports.getDid)(doc);
84
- let services = doc.service;
85
- if (!services)
86
- return undefined;
87
- if (typeof services !== 'object')
82
+ // /!\ Hot path
83
+ const service = findItemById(doc, 'service', opts.id);
84
+ if (!service) {
88
85
  return undefined;
89
- if (!Array.isArray(services)) {
90
- services = [services];
91
86
  }
92
- const found = services.find((service) => service.id === opts.id || service.id === `${did}${opts.id}`);
93
- if (!found)
94
- return undefined;
95
- if (opts.type && found.type !== opts.type) {
87
+ if (opts.type && service.type !== opts.type) {
96
88
  return undefined;
97
89
  }
98
- if (typeof found.serviceEndpoint !== 'string') {
90
+ if (typeof service.serviceEndpoint !== 'string') {
99
91
  return undefined;
100
92
  }
101
- return validateUrl(found.serviceEndpoint);
93
+ return validateUrl(service.serviceEndpoint);
102
94
  };
103
95
  exports.getServiceEndpoint = getServiceEndpoint;
96
+ function findItemById(doc, type, id) {
97
+ // /!\ Hot path
98
+ const items = doc[type];
99
+ if (items) {
100
+ for (let i = 0; i < items.length; i++) {
101
+ const item = items[i];
102
+ const itemId = item.id;
103
+ if (itemId[0] === '#'
104
+ ? itemId === id
105
+ : // Optimized version of: itemId === `${doc.id}${id}`
106
+ itemId.length === doc.id.length + id.length &&
107
+ itemId[doc.id.length] === '#' &&
108
+ itemId.endsWith(id) &&
109
+ itemId.startsWith(doc.id) // <== We could probably skip this check
110
+ ) {
111
+ return item;
112
+ }
113
+ }
114
+ }
115
+ return undefined;
116
+ }
104
117
  // Check protocol and hostname to prevent potential SSRF
105
118
  const validateUrl = (urlStr) => {
106
- let url;
107
- try {
108
- url = new URL(urlStr);
109
- }
110
- catch {
111
- return undefined;
112
- }
113
- if (!['http:', 'https:'].includes(url.protocol)) {
119
+ if (!urlStr.startsWith('http://') && !urlStr.startsWith('https://')) {
114
120
  return undefined;
115
121
  }
116
- else if (!url.hostname) {
122
+ if (!canParseUrl(urlStr)) {
117
123
  return undefined;
118
124
  }
119
- else {
120
- return urlStr;
121
- }
125
+ return urlStr;
122
126
  };
127
+ const canParseUrl = URL.canParse ??
128
+ // URL.canParse is not available in Node.js < 18.17.0
129
+ ((urlStr) => {
130
+ try {
131
+ new URL(urlStr);
132
+ return true;
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ });
123
138
  // Types
124
139
  // --------
125
140
  const verificationMethod = zod_1.z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"did-doc.js","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"did-doc.js","sourceRoot":"","sources":["../src/did-doc.ts"],"names":[],"mappings":"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"}
package/dist/retry.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export type RetryOptions = {
2
2
  maxRetries?: number;
3
3
  getWaitMs?: (n: number) => number | null;
4
- retryable?: (err: unknown) => boolean;
5
4
  };
6
- export declare function retry<T>(fn: () => Promise<T>, opts?: RetryOptions): Promise<T>;
5
+ export declare function retry<T>(fn: () => Promise<T>, opts?: RetryOptions & {
6
+ retryable?: (err: unknown) => boolean;
7
+ }): Promise<T>;
8
+ export declare function createRetryable(retryable: (err: unknown) => boolean): <T>(fn: () => Promise<T>, opts?: RetryOptions) => Promise<T>;
7
9
  export declare function backoffMs(n: number, multiplier?: number, max?: number): number;
8
10
  //# sourceMappingURL=retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACxC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAA;CACtC,CAAA;AAED,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,SAAM,EAAE,GAAG,SAAO,UAIhE"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CACzC,CAAA;AAED,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,YAAY,GAAG;IACnB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAA;CACjC,GACL,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,IACpD,CAAC,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,YAAY,gBAE3D;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,SAAM,EAAE,GAAG,SAAO,UAIhE"}
package/dist/retry.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.backoffMs = exports.retry = void 0;
3
+ exports.retry = retry;
4
+ exports.createRetryable = createRetryable;
5
+ exports.backoffMs = backoffMs;
4
6
  const util_1 = require("./util");
5
7
  async function retry(fn, opts = {}) {
6
8
  const { maxRetries = 3, retryable = () => true, getWaitMs = backoffMs } = opts;
@@ -26,14 +28,15 @@ async function retry(fn, opts = {}) {
26
28
  }
27
29
  throw doneError;
28
30
  }
29
- exports.retry = retry;
31
+ function createRetryable(retryable) {
32
+ return async (fn, opts) => retry(fn, { ...opts, retryable });
33
+ }
30
34
  // Waits exponential backoff with max and jitter: ~100, ~200, ~400, ~800, ~1000, ~1000, ...
31
35
  function backoffMs(n, multiplier = 100, max = 1000) {
32
36
  const exponentialMs = Math.pow(2, n) * multiplier;
33
37
  const ms = Math.min(exponentialMs, max);
34
38
  return jitter(ms);
35
39
  }
36
- exports.backoffMs = backoffMs;
37
40
  // Adds randomness +/-15% of value
38
41
  function jitter(value) {
39
42
  const delta = value * 0.15;
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAQtB,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,OAAqB,EAAE;IAEvB,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI,CAAA;IAC9E,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,SAAkB,CAAA;IACtB,OAAO,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,SAAS,GACb,OAAO,GAAG,UAAU,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAA;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,CAAA;gBACZ,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM,IAAA,WAAI,EAAC,MAAM,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,GAAG,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAA;AACjB,CAAC;AAzBD,sBAyBC;AAED,2FAA2F;AAC3F,SAAgB,SAAS,CAAC,CAAS,EAAE,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI;IAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAA;IACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;IACvC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAJD,8BAIC;AAED,kCAAkC;AAClC,SAAS,MAAM,CAAC,KAAa;IAC3B,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;IAC1B,OAAO,KAAK,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,EAAU;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACxC,OAAO,IAAI,GAAG,IAAI,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":";;AAOA,sBA2BC;AAED,0CAGC;AAGD,8BAIC;AA9CD,iCAA6B;AAOtB,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,OAEI,EAAE;IAEN,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI,CAAA;IAC9E,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,SAAkB,CAAA;IACtB,OAAO,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,SAAS,GACb,OAAO,GAAG,UAAU,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAA;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,CAAA;gBACZ,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM,IAAA,WAAI,EAAC,MAAM,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,GAAG,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAA;AACjB,CAAC;AAED,SAAgB,eAAe,CAAC,SAAoC;IAClE,OAAO,KAAK,EAAK,EAAoB,EAAE,IAAmB,EAAE,EAAE,CAC5D,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AACrC,CAAC;AAED,2FAA2F;AAC3F,SAAgB,SAAS,CAAC,CAAS,EAAE,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI;IAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAA;IACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;IACvC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAED,kCAAkC;AAClC,SAAS,MAAM,CAAC,KAAa;IAC3B,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;IAC1B,OAAO,KAAK,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,EAAU;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACxC,OAAO,IAAI,GAAG,IAAI,CAAA;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAS7B,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;CAqBf,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAS7B,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAA;AAED,eAAO,MAAM,GAAG;SAIT,GAAG,CAAC,GAAG,CAAC;WAIR,GAAG,CAAC,UAAU,CAAC;YAIf,GAAG,CAAC,MAAM,CAAC;SAIX,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAI5B,GAAG,CAAC,OAAO,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA"}
package/dist/util.d.ts CHANGED
@@ -1,5 +1,9 @@
1
- /// <reference types="node" />
2
1
  export declare const noUndefinedVals: <T>(obj: Record<string, T | undefined>) => Record<string, T>;
2
+ /**
3
+ * Returns a shallow copy of the object without the specified keys. If the input
4
+ * is nullish, it returns the input.
5
+ */
6
+ export declare function omit<T extends undefined | null | Record<string, unknown>, K extends keyof NonNullable<T>>(object: T, rejectedKeys: readonly K[]): T extends undefined ? undefined : T extends null ? null : Omit<T, K>;
3
7
  export declare const jitter: (maxMs: number) => number;
4
8
  export declare const wait: (ms: number) => Promise<unknown>;
5
9
  export type BailableWait = {
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA,eAAO,MAAM,eAAe,8DAS3B,CAAA;AAED,eAAO,MAAM,MAAM,UAAW,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAE9B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,YAAY,OAAQ,MAAM,KAAG,YAUzC,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAU,UAAU,EAAE,KAAG,UAWvD,CAAA;AAED,eAAO,MAAM,cAAc,WACjB,cAAc,UAAU,CAAC,KAChC,QAAQ,UAAU,CAMpB,CAAA;AAID,eAAO,MAAM,SAAS,MAAO,MAAM,KAAG,MAQrC,CAAA;AAED,eAAO,MAAM,SAAS,MAAO,MAAM,KAAG,MAMrC,CAAA;AAED,eAAO,MAAM,WAAW,8BAER,QAAQ,OAAO,CAAC,iBAI/B,CAAA;AAED,eAAO,MAAM,gBAAgB,QACtB,OAAO,iCAGb,CAAA;AAED,eAAO,MAAM,SAAS,QAAS,OAAO,OAAO,MAAM,KAAG,OAErD,CAAA;AAED,eAAO,MAAM,UAAU,2BAA4B,MAAM,UASxD,CAAA;AAED,eAAO,MAAM,KAAK,QAAS,MAAM,KAAG,MAAM,EAMzC,CAAA;AAED,eAAO,MAAM,UAAU,SAAU,MAAM,EAAE,KAAG,MAAM,EAEjD,CAAA;AAED,eAAO,MAAM,oBAAoB,aACxB,MAAM,GAAG,SAAS,4BAK1B,CAAA"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAAI,CAAC,OAC1B,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,KACjC,MAAM,CAAC,MAAM,EAAE,CAAC,CAOlB,CAAA;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAClB,CAAC,SAAS,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpD,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,EAE9B,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,SAAS,CAAC,EAAE,GACzB,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAoBvE,eAAO,MAAM,MAAM,UAAW,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAE9B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,YAAY,OAAQ,MAAM,KAAG,YAUzC,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAU,UAAU,EAAE,KAAG,UAWvD,CAAA;AAED,eAAO,MAAM,cAAc,WACjB,aAAa,CAAC,UAAU,CAAC,KAChC,OAAO,CAAC,UAAU,CAMpB,CAAA;AAID,eAAO,MAAM,SAAS,MAAO,MAAM,KAAG,MAQrC,CAAA;AAED,eAAO,MAAM,SAAS,MAAO,MAAM,KAAG,MAMrC,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,CAAC,OAC5B,CAAC,EAAE,MACJ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,iBAI/B,CAAA;AAED,eAAO,MAAM,gBAAgB,QACtB,OAAO,KACX,GAAG,IAAI,MAAM,CAAC,cAEhB,CAAA;AAED,eAAO,MAAM,SAAS,QAAS,OAAO,OAAO,MAAM,KAAG,OAErD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,KAAG,CAAC,EAAE,EAS9D,CAAA;AAED,eAAO,MAAM,KAAK,QAAS,MAAM,KAAG,MAAM,EAMzC,CAAA;AAED,eAAO,MAAM,UAAU,SAAU,MAAM,EAAE,KAAG,MAAM,EAEjD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAC7B,MAAM,GAAG,SAAS,YACf,CAAC,KACV,MAAM,GAAG,CAGX,CAAA"}
package/dist/util.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseIntWithFallback = exports.dedupeStrs = exports.range = exports.chunkArray = exports.errHasMsg = exports.isErrnoException = exports.asyncFilter = exports.s32decode = exports.s32encode = exports.streamToBuffer = exports.flattenUint8Arrays = exports.bailableWait = exports.wait = exports.jitter = exports.noUndefinedVals = void 0;
4
+ exports.omit = omit;
4
5
  const noUndefinedVals = (obj) => {
5
6
  Object.keys(obj).forEach((k) => {
6
7
  if (obj[k] === undefined) {
@@ -10,6 +11,20 @@ const noUndefinedVals = (obj) => {
10
11
  return obj;
11
12
  };
12
13
  exports.noUndefinedVals = noUndefinedVals;
14
+ function omit(src, rejectedKeys) {
15
+ // Hot path
16
+ if (!src)
17
+ return src;
18
+ const dst = {};
19
+ const srcKeys = Object.keys(src);
20
+ for (let i = 0; i < srcKeys.length; i++) {
21
+ const key = srcKeys[i];
22
+ if (!rejectedKeys.includes(key)) {
23
+ dst[key] = src[key];
24
+ }
25
+ }
26
+ return dst;
27
+ }
13
28
  const jitter = (maxMs) => {
14
29
  return Math.round((Math.random() - 0.5) * maxMs * 2);
15
30
  };
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/common-web",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "license": "MIT",
5
5
  "description": "Shared web-platform-friendly code for atproto libraries",
6
6
  "keywords": [
@@ -18,10 +18,11 @@
18
18
  "graphemer": "^1.4.0",
19
19
  "multiformats": "^9.9.0",
20
20
  "uint8arrays": "3.0.0",
21
- "zod": "^3.21.4"
21
+ "zod": "^3.23.8"
22
22
  },
23
23
  "devDependencies": {
24
- "jest": "^28.1.2"
24
+ "jest": "^28.1.2",
25
+ "typescript": "^5.6.3"
25
26
  },
26
27
  "scripts": {
27
28
  "test": "jest",
package/src/arrays.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  export const keyBy = <T>(arr: T[], key: string): Record<string, T> => {
2
- return arr.reduce((acc, cur) => {
3
- acc[cur[key]] = cur
4
- return acc
5
- }, {} as Record<string, T>)
2
+ return arr.reduce(
3
+ (acc, cur) => {
4
+ acc[cur[key]] = cur
5
+ return acc
6
+ },
7
+ {} as Record<string, T>,
8
+ )
6
9
  }
7
10
 
8
11
  export const mapDefined = <T, S>(
package/src/async.ts CHANGED
@@ -152,24 +152,75 @@ export class AsyncBufferFullError extends Error {
152
152
  }
153
153
  }
154
154
 
155
- export const handleAllSettledErrors = (
155
+ /**
156
+ * Utility function that behaves like {@link Promise.allSettled} but returns the
157
+ * same result as {@link Promise.all} in case every promise is fulfilled, and
158
+ * throws an {@link AggregateError} if there are more than one errors.
159
+ */
160
+ export function allFulfilled<T extends readonly unknown[] | []>(
161
+ promises: T,
162
+ ): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }>
163
+ export function allFulfilled<T>(
164
+ promises: Iterable<T | PromiseLike<T>>,
165
+ ): Promise<Awaited<T>[]>
166
+ export function allFulfilled(
167
+ promises: Iterable<Promise<unknown>>,
168
+ ): Promise<unknown[]> {
169
+ return Promise.allSettled(promises).then(handleAllSettledErrors)
170
+ }
171
+
172
+ export function handleAllSettledErrors<
173
+ T extends readonly PromiseSettledResult<unknown>[] | [],
174
+ >(
175
+ results: T,
176
+ ): {
177
+ -readonly [P in keyof T]: T[P] extends PromiseSettledResult<infer U>
178
+ ? U
179
+ : never
180
+ }
181
+ export function handleAllSettledErrors<T>(
182
+ results: PromiseSettledResult<T>[],
183
+ ): T[]
184
+ export function handleAllSettledErrors(
156
185
  results: PromiseSettledResult<unknown>[],
157
- ) => {
158
- const errors = results.filter(isRejected).map((res) => res.reason)
186
+ ): unknown[] {
187
+ const errors = results.filter(isRejectedResult).map(extractReason)
159
188
  if (errors.length === 0) {
160
- return
189
+ // No need to filter here, it is safe to assume that all promises are fulfilled
190
+ return (results as PromiseFulfilledResult<unknown>[]).map(extractValue)
161
191
  }
162
192
  if (errors.length === 1) {
163
193
  throw errors[0]
164
194
  }
165
195
  throw new AggregateError(
166
196
  errors,
167
- 'Multiple errors: ' + errors.map((err) => err?.message).join('\n'),
197
+ `Multiple errors: ${errors.map(stringifyReason).join('\n')}`,
168
198
  )
169
199
  }
170
200
 
171
- const isRejected = (
201
+ export function isRejectedResult(
172
202
  result: PromiseSettledResult<unknown>,
173
- ): result is PromiseRejectedResult => {
203
+ ): result is PromiseRejectedResult {
174
204
  return result.status === 'rejected'
175
205
  }
206
+
207
+ function extractReason(result: PromiseRejectedResult): unknown {
208
+ return result.reason
209
+ }
210
+
211
+ export function isFulfilledResult<T>(
212
+ result: PromiseSettledResult<T>,
213
+ ): result is PromiseFulfilledResult<T> {
214
+ return result.status === 'fulfilled'
215
+ }
216
+
217
+ function extractValue<T>(result: PromiseFulfilledResult<T>): T {
218
+ return result.value
219
+ }
220
+
221
+ function stringifyReason(reason: unknown): string {
222
+ if (reason instanceof Error) {
223
+ return reason.message
224
+ }
225
+ return String(reason)
226
+ }
package/src/check.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { ZodError } from 'zod'
1
+ // Explicitly not using "zod" types here to avoid mismatching types due to
2
+ // version differences.
2
3
 
3
4
  export interface Checkable<T> {
4
5
  parse: (obj: unknown) => T
5
6
  safeParse: (
6
7
  obj: unknown,
7
- ) => { success: true; data: T } | { success: false; error: ZodError }
8
+ ) => { success: true; data: T } | { success: false; error: Error }
8
9
  }
9
10
 
10
11
  export interface Def<T> {
@@ -16,6 +17,11 @@ export const is = <T>(obj: unknown, def: Checkable<T>): obj is T => {
16
17
  return def.safeParse(obj).success
17
18
  }
18
19
 
20
+ export const create =
21
+ <T>(def: Checkable<T>) =>
22
+ (v: unknown): v is T =>
23
+ def.safeParse(v).success
24
+
19
25
  export const assure = <T>(def: Checkable<T>, obj: unknown): T => {
20
26
  return def.parse(obj)
21
27
  }
package/src/did-doc.ts CHANGED
@@ -17,11 +17,16 @@ export const getDid = (doc: DidDocument): string => {
17
17
 
18
18
  export const getHandle = (doc: DidDocument): string | undefined => {
19
19
  const aka = doc.alsoKnownAs
20
- if (!aka) return undefined
21
- const found = aka.find((name) => name.startsWith('at://'))
22
- if (!found) return undefined
23
- // strip off at:// prefix
24
- return found.slice(5)
20
+ if (aka) {
21
+ for (let i = 0; i < aka.length; i++) {
22
+ const alias = aka[i]
23
+ if (alias.startsWith('at://')) {
24
+ // strip off "at://" prefix
25
+ return alias.slice(5)
26
+ }
27
+ }
28
+ }
29
+ return undefined
25
30
  }
26
31
 
27
32
  // @NOTE we parse to type/publicKeyMultibase to avoid the dependency on @atproto/crypto
@@ -35,20 +40,20 @@ export const getVerificationMaterial = (
35
40
  doc: DidDocument,
36
41
  keyId: string,
37
42
  ): { type: string; publicKeyMultibase: string } | undefined => {
38
- const did = getDid(doc)
39
- let keys = doc.verificationMethod
40
- if (!keys) return undefined
41
- if (typeof keys !== 'object') return undefined
42
- if (!Array.isArray(keys)) {
43
- keys = [keys]
43
+ // /!\ Hot path
44
+
45
+ const key = findItemById(doc, 'verificationMethod', `#${keyId}`)
46
+ if (!key) {
47
+ return undefined
48
+ }
49
+
50
+ if (!key.publicKeyMultibase) {
51
+ return undefined
44
52
  }
45
- const found = keys.find(
46
- (key) => key.id === `#${keyId}` || key.id === `${did}#${keyId}`,
47
- )
48
- if (!found?.publicKeyMultibase) return undefined
53
+
49
54
  return {
50
- type: found.type,
51
- publicKeyMultibase: found.publicKeyMultibase,
55
+ type: key.type,
56
+ publicKeyMultibase: key.publicKeyMultibase,
52
57
  }
53
58
  }
54
59
 
@@ -83,43 +88,82 @@ export const getServiceEndpoint = (
83
88
  doc: DidDocument,
84
89
  opts: { id: string; type?: string },
85
90
  ) => {
86
- const did = getDid(doc)
87
- let services = doc.service
88
- if (!services) return undefined
89
- if (typeof services !== 'object') return undefined
90
- if (!Array.isArray(services)) {
91
- services = [services]
91
+ // /!\ Hot path
92
+
93
+ const service = findItemById(doc, 'service', opts.id)
94
+ if (!service) {
95
+ return undefined
92
96
  }
93
- const found = services.find(
94
- (service) => service.id === opts.id || service.id === `${did}${opts.id}`,
95
- )
96
- if (!found) return undefined
97
- if (opts.type && found.type !== opts.type) {
97
+
98
+ if (opts.type && service.type !== opts.type) {
98
99
  return undefined
99
100
  }
100
- if (typeof found.serviceEndpoint !== 'string') {
101
+
102
+ if (typeof service.serviceEndpoint !== 'string') {
101
103
  return undefined
102
104
  }
103
- return validateUrl(found.serviceEndpoint)
105
+
106
+ return validateUrl(service.serviceEndpoint)
107
+ }
108
+
109
+ function findItemById<
110
+ D extends DidDocument,
111
+ T extends 'verificationMethod' | 'service',
112
+ >(doc: D, type: T, id: string): NonNullable<D[T]>[number] | undefined
113
+ function findItemById(
114
+ doc: DidDocument,
115
+ type: 'verificationMethod' | 'service',
116
+ id: string,
117
+ ) {
118
+ // /!\ Hot path
119
+
120
+ const items = doc[type]
121
+ if (items) {
122
+ for (let i = 0; i < items.length; i++) {
123
+ const item = items[i]
124
+ const itemId = item.id
125
+
126
+ if (
127
+ itemId[0] === '#'
128
+ ? itemId === id
129
+ : // Optimized version of: itemId === `${doc.id}${id}`
130
+ itemId.length === doc.id.length + id.length &&
131
+ itemId[doc.id.length] === '#' &&
132
+ itemId.endsWith(id) &&
133
+ itemId.startsWith(doc.id) // <== We could probably skip this check
134
+ ) {
135
+ return item
136
+ }
137
+ }
138
+ }
139
+ return undefined
104
140
  }
105
141
 
106
142
  // Check protocol and hostname to prevent potential SSRF
107
143
  const validateUrl = (urlStr: string): string | undefined => {
108
- let url
109
- try {
110
- url = new URL(urlStr)
111
- } catch {
144
+ if (!urlStr.startsWith('http://') && !urlStr.startsWith('https://')) {
112
145
  return undefined
113
146
  }
114
- if (!['http:', 'https:'].includes(url.protocol)) {
115
- return undefined
116
- } else if (!url.hostname) {
147
+
148
+ if (!canParseUrl(urlStr)) {
117
149
  return undefined
118
- } else {
119
- return urlStr
120
150
  }
151
+
152
+ return urlStr
121
153
  }
122
154
 
155
+ const canParseUrl =
156
+ URL.canParse ??
157
+ // URL.canParse is not available in Node.js < 18.17.0
158
+ ((urlStr: string): boolean => {
159
+ try {
160
+ new URL(urlStr)
161
+ return true
162
+ } catch {
163
+ return false
164
+ }
165
+ })
166
+
123
167
  // Types
124
168
  // --------
125
169
 
package/src/retry.ts CHANGED
@@ -3,12 +3,13 @@ import { wait } from './util'
3
3
  export type RetryOptions = {
4
4
  maxRetries?: number
5
5
  getWaitMs?: (n: number) => number | null
6
- retryable?: (err: unknown) => boolean
7
6
  }
8
7
 
9
8
  export async function retry<T>(
10
9
  fn: () => Promise<T>,
11
- opts: RetryOptions = {},
10
+ opts: RetryOptions & {
11
+ retryable?: (err: unknown) => boolean
12
+ } = {},
12
13
  ): Promise<T> {
13
14
  const { maxRetries = 3, retryable = () => true, getWaitMs = backoffMs } = opts
14
15
  let retries = 0
@@ -33,6 +34,11 @@ export async function retry<T>(
33
34
  throw doneError
34
35
  }
35
36
 
37
+ export function createRetryable(retryable: (err: unknown) => boolean) {
38
+ return async <T>(fn: () => Promise<T>, opts?: RetryOptions) =>
39
+ retry(fn, { ...opts, retryable })
40
+ }
41
+
36
42
  // Waits exponential backoff with max and jitter: ~100, ~200, ~400, ~800, ~1000, ~1000, ...
37
43
  export function backoffMs(n: number, multiplier = 100, max = 1000) {
38
44
  const exponentialMs = Math.pow(2, n) * multiplier
package/src/util.ts CHANGED
@@ -9,6 +9,36 @@ export const noUndefinedVals = <T>(
9
9
  return obj as Record<string, T>
10
10
  }
11
11
 
12
+ /**
13
+ * Returns a shallow copy of the object without the specified keys. If the input
14
+ * is nullish, it returns the input.
15
+ */
16
+ export function omit<
17
+ T extends undefined | null | Record<string, unknown>,
18
+ K extends keyof NonNullable<T>,
19
+ >(
20
+ object: T,
21
+ rejectedKeys: readonly K[],
22
+ ): T extends undefined ? undefined : T extends null ? null : Omit<T, K>
23
+ export function omit(
24
+ src: undefined | null | Record<string, unknown>,
25
+ rejectedKeys: readonly string[],
26
+ ): undefined | null | Record<string, unknown> {
27
+ // Hot path
28
+
29
+ if (!src) return src
30
+
31
+ const dst = {}
32
+ const srcKeys = Object.keys(src)
33
+ for (let i = 0; i < srcKeys.length; i++) {
34
+ const key = srcKeys[i]
35
+ if (!rejectedKeys.includes(key)) {
36
+ dst[key] = src[key]
37
+ }
38
+ }
39
+ return dst
40
+ }
41
+
12
42
  export const jitter = (maxMs: number) => {
13
43
  return Math.round((Math.random() - 0.5) * maxMs * 2)
14
44
  }
@@ -0,0 +1 @@
1
+ {"root":["./src/arrays.ts","./src/async.ts","./src/check.ts","./src/did-doc.ts","./src/index.ts","./src/ipld.ts","./src/retry.ts","./src/strings.ts","./src/tid.ts","./src/times.ts","./src/types.ts","./src/util.ts"],"version":"5.6.3"}
@@ -0,0 +1 @@
1
+ {"root":["./tests/check.test.ts","./tests/retry.test.ts","./tests/strings.test.ts","./tests/tid.test.ts","./tests/util.test.ts"],"version":"5.6.3"}