@atproto/common-web 0.4.21 → 0.5.0-next.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/ipld.js CHANGED
@@ -1,35 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ipldEquals = exports.ipldToJson = exports.jsonToIpld = void 0;
4
- const lex_data_1 = require("@atproto/lex-data");
5
- const lex_json_1 = require("@atproto/lex-json");
1
+ import { lexEquals } from '@atproto/lex-data';
2
+ import { jsonToLex, lexToJson } from '@atproto/lex-json';
6
3
  /**
7
4
  * Converts a JSON-compatible value to an IPLD-compatible value.
8
5
  * @deprecated Use {@link jsonToLex} from `@atproto/lex-cbor` instead.
9
6
  */
10
- const jsonToIpld = (val) => {
11
- return (0, lex_json_1.jsonToLex)(val, { strict: false });
7
+ export const jsonToIpld = (val) => {
8
+ return jsonToLex(val, { strict: false });
12
9
  };
13
- exports.jsonToIpld = jsonToIpld;
14
10
  /**
15
11
  * Converts an IPLD-compatible value to a JSON-compatible value.
16
12
  * @deprecated Use {@link lexToJson} from `@atproto/lex-cbor` instead.
17
13
  */
18
- const ipldToJson = (val) => {
14
+ export const ipldToJson = (val) => {
19
15
  // Legacy behavior(s)
20
16
  if (val === undefined)
21
17
  return val;
22
18
  if (Number.isNaN(val))
23
19
  return val;
24
- return (0, lex_json_1.lexToJson)(val);
20
+ return lexToJson(val);
25
21
  };
26
- exports.ipldToJson = ipldToJson;
27
22
  /**
28
23
  * Compares two IPLD-compatible values for deep equality.
29
24
  * @deprecated Use {@link lexEquals} from `@atproto/lex-cbor` instead.
30
25
  */
31
- const ipldEquals = (a, b) => {
32
- if (!(0, lex_data_1.lexEquals)(a, b))
26
+ export const ipldEquals = (a, b) => {
27
+ if (!lexEquals(a, b))
33
28
  return false;
34
29
  // @NOTE The previous implementation used "===" which treats NaN as unequal to
35
30
  // NaN.
@@ -37,5 +32,4 @@ const ipldEquals = (a, b) => {
37
32
  return false;
38
33
  return true;
39
34
  };
40
- exports.ipldEquals = ipldEquals;
41
35
  //# sourceMappingURL=ipld.js.map
package/dist/ipld.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ipld.js","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":";;;AAAA,gDAAuD;AACvD,gDAAmE;AAcnE;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,GAAoB,EAAa,EAAE;IAC5D,OAAO,IAAA,oBAAS,EAAC,GAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAED;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,GAAc,EAAmB,EAAE;IAC5D,qBAAqB;IACrB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAEjC,OAAO,IAAA,oBAAS,EAAC,GAAe,CAAC,CAAA;AACnC,CAAC,CAAA;AANY,QAAA,UAAU,cAMtB;AAED;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,CAAY,EAAE,CAAY,EAAW,EAAE;IAChE,IAAI,CAAC,IAAA,oBAAS,EAAC,CAAa,EAAE,CAAa,CAAC;QAAE,OAAO,KAAK,CAAA;IAE1D,8EAA8E;IAC9E,OAAO;IACP,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAEjC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AARY,QAAA,UAAU,cAQtB","sourcesContent":["import { LexValue, lexEquals } from '@atproto/lex-data'\nimport { JsonValue, jsonToLex, lexToJson } from '@atproto/lex-json'\n\n/**\n * @deprecated Use {@link JsonValue} from `@atproto/lex-cbor` instead.\n */\nexport type LegacyJsonValue = unknown\n\nexport type { LegacyJsonValue as JsonValue }\n\n/**\n * @deprecated Use {@link LexValue} from `@atproto/lex-cbor` instead.\n */\nexport type IpldValue = unknown\n\n/**\n * Converts a JSON-compatible value to an IPLD-compatible value.\n * @deprecated Use {@link jsonToLex} from `@atproto/lex-cbor` instead.\n */\nexport const jsonToIpld = (val: LegacyJsonValue): IpldValue => {\n return jsonToLex(val as JsonValue, { strict: false })\n}\n\n/**\n * Converts an IPLD-compatible value to a JSON-compatible value.\n * @deprecated Use {@link lexToJson} from `@atproto/lex-cbor` instead.\n */\nexport const ipldToJson = (val: IpldValue): LegacyJsonValue => {\n // Legacy behavior(s)\n if (val === undefined) return val\n if (Number.isNaN(val)) return val\n\n return lexToJson(val as LexValue)\n}\n\n/**\n * Compares two IPLD-compatible values for deep equality.\n * @deprecated Use {@link lexEquals} from `@atproto/lex-cbor` instead.\n */\nexport const ipldEquals = (a: IpldValue, b: IpldValue): boolean => {\n if (!lexEquals(a as LexValue, b as LexValue)) return false\n\n // @NOTE The previous implementation used \"===\" which treats NaN as unequal to\n // NaN.\n if (Number.isNaN(a)) return false\n\n return true\n}\n"]}
1
+ {"version":3,"file":"ipld.js","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAa,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAcnE;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAoB,EAAa,EAAE;IAC5D,OAAO,SAAS,CAAC,GAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAc,EAAmB,EAAE;IAC5D,qBAAqB;IACrB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAEjC,OAAO,SAAS,CAAC,GAAe,CAAC,CAAA;AACnC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAY,EAAE,CAAY,EAAW,EAAE;IAChE,IAAI,CAAC,SAAS,CAAC,CAAa,EAAE,CAAa,CAAC;QAAE,OAAO,KAAK,CAAA;IAE1D,8EAA8E;IAC9E,OAAO;IACP,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAEjC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA","sourcesContent":["import { LexValue, lexEquals } from '@atproto/lex-data'\nimport { JsonValue, jsonToLex, lexToJson } from '@atproto/lex-json'\n\n/**\n * @deprecated Use {@link JsonValue} from `@atproto/lex-cbor` instead.\n */\nexport type LegacyJsonValue = unknown\n\nexport type { LegacyJsonValue as JsonValue }\n\n/**\n * @deprecated Use {@link LexValue} from `@atproto/lex-cbor` instead.\n */\nexport type IpldValue = unknown\n\n/**\n * Converts a JSON-compatible value to an IPLD-compatible value.\n * @deprecated Use {@link jsonToLex} from `@atproto/lex-cbor` instead.\n */\nexport const jsonToIpld = (val: LegacyJsonValue): IpldValue => {\n return jsonToLex(val as JsonValue, { strict: false })\n}\n\n/**\n * Converts an IPLD-compatible value to a JSON-compatible value.\n * @deprecated Use {@link lexToJson} from `@atproto/lex-cbor` instead.\n */\nexport const ipldToJson = (val: IpldValue): LegacyJsonValue => {\n // Legacy behavior(s)\n if (val === undefined) return val\n if (Number.isNaN(val)) return val\n\n return lexToJson(val as LexValue)\n}\n\n/**\n * Compares two IPLD-compatible values for deep equality.\n * @deprecated Use {@link lexEquals} from `@atproto/lex-cbor` instead.\n */\nexport const ipldEquals = (a: IpldValue, b: IpldValue): boolean => {\n if (!lexEquals(a as LexValue, b as LexValue)) return false\n\n // @NOTE The previous implementation used \"===\" which treats NaN as unequal to\n // NaN.\n if (Number.isNaN(a)) return false\n\n return true\n}\n"]}
package/dist/retry.js CHANGED
@@ -1,10 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retry = retry;
4
- exports.createRetryable = createRetryable;
5
- exports.backoffMs = backoffMs;
6
- const util_1 = require("./util");
7
- async function retry(fn, opts = {}) {
1
+ import { wait } from './util.js';
2
+ export async function retry(fn, opts = {}) {
8
3
  const { maxRetries = 3, retryable = () => true, getWaitMs = backoffMs } = opts;
9
4
  let retries = 0;
10
5
  let doneError;
@@ -18,7 +13,7 @@ async function retry(fn, opts = {}) {
18
13
  if (willRetry) {
19
14
  retries += 1;
20
15
  if (waitMs !== 0) {
21
- await (0, util_1.wait)(waitMs);
16
+ await wait(waitMs);
22
17
  }
23
18
  }
24
19
  else {
@@ -28,11 +23,11 @@ async function retry(fn, opts = {}) {
28
23
  }
29
24
  throw doneError;
30
25
  }
31
- function createRetryable(retryable) {
26
+ export function createRetryable(retryable) {
32
27
  return async (fn, opts) => retry(fn, { ...opts, retryable });
33
28
  }
34
29
  // Waits exponential backoff with max and jitter: ~100, ~200, ~400, ~800, ~1000, ~1000, ...
35
- function backoffMs(n, multiplier = 100, max = 1000) {
30
+ export function backoffMs(n, multiplier = 100, max = 1000) {
36
31
  const exponentialMs = Math.pow(2, n) * multiplier;
37
32
  const ms = Math.min(exponentialMs, max);
38
33
  return jitter(ms);
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
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","sourcesContent":["import { wait } from './util'\n\nexport type RetryOptions = {\n maxRetries?: number\n getWaitMs?: (n: number) => number | null\n}\n\nexport async function retry<T>(\n fn: () => Promise<T>,\n opts: RetryOptions & {\n retryable?: (err: unknown) => boolean\n } = {},\n): Promise<T> {\n const { maxRetries = 3, retryable = () => true, getWaitMs = backoffMs } = opts\n let retries = 0\n let doneError: unknown\n while (!doneError) {\n try {\n return await fn()\n } catch (err) {\n const waitMs = getWaitMs(retries)\n const willRetry =\n retries < maxRetries && waitMs !== null && retryable(err)\n if (willRetry) {\n retries += 1\n if (waitMs !== 0) {\n await wait(waitMs)\n }\n } else {\n doneError = err\n }\n }\n }\n throw doneError\n}\n\nexport function createRetryable(retryable: (err: unknown) => boolean) {\n return async <T>(fn: () => Promise<T>, opts?: RetryOptions) =>\n retry(fn, { ...opts, retryable })\n}\n\n// Waits exponential backoff with max and jitter: ~100, ~200, ~400, ~800, ~1000, ~1000, ...\nexport function backoffMs(n: number, multiplier = 100, max = 1000) {\n const exponentialMs = Math.pow(2, n) * multiplier\n const ms = Math.min(exponentialMs, max)\n return jitter(ms)\n}\n\n// Adds randomness +/-15% of value\nfunction jitter(value: number) {\n const delta = value * 0.15\n return value + randomRange(-delta, delta)\n}\n\nfunction randomRange(from: number, to: number) {\n const rand = Math.random() * (to - from)\n return rand + from\n}\n"]}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAOhC,MAAM,CAAC,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,IAAI,CAAC,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,MAAM,UAAU,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,MAAM,UAAU,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","sourcesContent":["import { wait } from './util.js'\n\nexport type RetryOptions = {\n maxRetries?: number\n getWaitMs?: (n: number) => number | null\n}\n\nexport async function retry<T>(\n fn: () => Promise<T>,\n opts: RetryOptions & {\n retryable?: (err: unknown) => boolean\n } = {},\n): Promise<T> {\n const { maxRetries = 3, retryable = () => true, getWaitMs = backoffMs } = opts\n let retries = 0\n let doneError: unknown\n while (!doneError) {\n try {\n return await fn()\n } catch (err) {\n const waitMs = getWaitMs(retries)\n const willRetry =\n retries < maxRetries && waitMs !== null && retryable(err)\n if (willRetry) {\n retries += 1\n if (waitMs !== 0) {\n await wait(waitMs)\n }\n } else {\n doneError = err\n }\n }\n }\n throw doneError\n}\n\nexport function createRetryable(retryable: (err: unknown) => boolean) {\n return async <T>(fn: () => Promise<T>, opts?: RetryOptions) =>\n retry(fn, { ...opts, retryable })\n}\n\n// Waits exponential backoff with max and jitter: ~100, ~200, ~400, ~800, ~1000, ~1000, ...\nexport function backoffMs(n: number, multiplier = 100, max = 1000) {\n const exponentialMs = Math.pow(2, n) * multiplier\n const ms = Math.min(exponentialMs, max)\n return jitter(ms)\n}\n\n// Adds randomness +/-15% of value\nfunction jitter(value: number) {\n const delta = value * 0.15\n return value + randomRange(-delta, delta)\n}\n\nfunction randomRange(from: number, to: number) {\n const rand = Math.random() * (to - from)\n return rand + from\n}\n"]}
package/dist/strings.js CHANGED
@@ -1,39 +1,34 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.b64UrlToUtf8 = exports.utf8ToB64Url = exports.validateLanguage = exports.parseLanguage = exports.utf8Len = exports.graphemeLen = void 0;
4
- const lex_data_1 = require("@atproto/lex-data");
5
- const syntax_1 = require("@atproto/syntax");
1
+ import { fromBase64, graphemeLen, toBase64, utf8Len } from '@atproto/lex-data';
2
+ import { isValidLanguage, parseLanguageString, } from '@atproto/syntax';
6
3
  /**
7
4
  * @deprecated Use {@link graphemeLen} from `@atproto/lex-data` instead.
8
5
  */
9
- const graphemeLenLegacy = lex_data_1.graphemeLen;
10
- exports.graphemeLen = graphemeLenLegacy;
6
+ const graphemeLenLegacy = graphemeLen;
7
+ export { graphemeLenLegacy as graphemeLen };
11
8
  /**
12
9
  * @deprecated Use {@link utf8Len} from `@atproto/lex-data` instead.
13
10
  */
14
- const utf8LenLegacy = lex_data_1.utf8Len;
15
- exports.utf8Len = utf8LenLegacy;
11
+ const utf8LenLegacy = utf8Len;
12
+ export { utf8LenLegacy as utf8Len };
16
13
  /**
17
14
  * @deprecated Use {@link parseLanguageString} from `@atproto/syntax` instead.
18
15
  */
19
- const parseLanguageLegacy = syntax_1.parseLanguageString;
20
- exports.parseLanguage = parseLanguageLegacy;
16
+ const parseLanguageLegacy = parseLanguageString;
17
+ export { parseLanguageLegacy as parseLanguage };
21
18
  /**
22
19
  * @deprecated Use {@link isLanguageString} from `@atproto/syntax` instead.
23
20
  */
24
- exports.validateLanguage = syntax_1.isValidLanguage;
21
+ export const validateLanguage = isValidLanguage;
25
22
  /**
26
23
  * @deprecated Use {@link toBase64} from `@atproto/lex-data` instead.
27
24
  */
28
- const utf8ToB64Url = (utf8) => {
29
- return (0, lex_data_1.toBase64)(new TextEncoder().encode(utf8), 'base64url');
25
+ export const utf8ToB64Url = (utf8) => {
26
+ return toBase64(new TextEncoder().encode(utf8), 'base64url');
30
27
  };
31
- exports.utf8ToB64Url = utf8ToB64Url;
32
28
  /**
33
29
  * @deprecated Use {@link fromBase64} from `@atproto/lex-data` instead.
34
30
  */
35
- const b64UrlToUtf8 = (b64) => {
36
- return new TextDecoder().decode((0, lex_data_1.fromBase64)(b64, 'base64url'));
31
+ export const b64UrlToUtf8 = (b64) => {
32
+ return new TextDecoder().decode(fromBase64(b64, 'base64url'));
37
33
  };
38
- exports.b64UrlToUtf8 = b64UrlToUtf8;
39
34
  //# sourceMappingURL=strings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strings.js","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":";;;AAAA,gDAA8E;AAC9E,4CAIwB;AAExB;;GAEG;AACH,MAAM,iBAAiB,GAAG,sBAAW,CAAA;AACP,wCAAW;AAEzC;;GAEG;AACH,MAAM,aAAa,GAAG,kBAAO,CAAA;AACH,gCAAO;AAQjC;;GAEG;AACH,MAAM,mBAAmB,GAAG,4BAAmB,CAAA;AACf,4CAAa;AAE7C;;GAEG;AACU,QAAA,gBAAgB,GAAG,wBAAe,CAAA;AAE/C;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IACnD,OAAO,IAAA,mBAAQ,EAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAA;AAC9D,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB;AAED;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;IAClD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAA,qBAAU,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAA;AAC/D,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB","sourcesContent":["import { fromBase64, graphemeLen, toBase64, utf8Len } from '@atproto/lex-data'\nimport {\n LanguageTag,\n isValidLanguage,\n parseLanguageString,\n} from '@atproto/syntax'\n\n/**\n * @deprecated Use {@link graphemeLen} from `@atproto/lex-data` instead.\n */\nconst graphemeLenLegacy = graphemeLen\nexport { graphemeLenLegacy as graphemeLen }\n\n/**\n * @deprecated Use {@link utf8Len} from `@atproto/lex-data` instead.\n */\nconst utf8LenLegacy = utf8Len\nexport { utf8LenLegacy as utf8Len }\n\n/**\n * @deprecated Use {@link LanguageTag} from `@atproto/lex-data` instead.\n */\ntype LanguageTagLegacy = LanguageTag\nexport type { LanguageTagLegacy as LanguageTag }\n\n/**\n * @deprecated Use {@link parseLanguageString} from `@atproto/syntax` instead.\n */\nconst parseLanguageLegacy = parseLanguageString\nexport { parseLanguageLegacy as parseLanguage }\n\n/**\n * @deprecated Use {@link isLanguageString} from `@atproto/syntax` instead.\n */\nexport const validateLanguage = isValidLanguage\n\n/**\n * @deprecated Use {@link toBase64} from `@atproto/lex-data` instead.\n */\nexport const utf8ToB64Url = (utf8: string): string => {\n return toBase64(new TextEncoder().encode(utf8), 'base64url')\n}\n\n/**\n * @deprecated Use {@link fromBase64} from `@atproto/lex-data` instead.\n */\nexport const b64UrlToUtf8 = (b64: string): string => {\n return new TextDecoder().decode(fromBase64(b64, 'base64url'))\n}\n"]}
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAEL,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAExB;;GAEG;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAA;AACrC,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,CAAA;AAE3C;;GAEG;AACH,MAAM,aAAa,GAAG,OAAO,CAAA;AAC7B,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAQnC;;GAEG;AACH,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,IAAI,aAAa,EAAE,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IACnD,OAAO,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;IAClD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAA;AAC/D,CAAC,CAAA","sourcesContent":["import { fromBase64, graphemeLen, toBase64, utf8Len } from '@atproto/lex-data'\nimport {\n LanguageTag,\n isValidLanguage,\n parseLanguageString,\n} from '@atproto/syntax'\n\n/**\n * @deprecated Use {@link graphemeLen} from `@atproto/lex-data` instead.\n */\nconst graphemeLenLegacy = graphemeLen\nexport { graphemeLenLegacy as graphemeLen }\n\n/**\n * @deprecated Use {@link utf8Len} from `@atproto/lex-data` instead.\n */\nconst utf8LenLegacy = utf8Len\nexport { utf8LenLegacy as utf8Len }\n\n/**\n * @deprecated Use {@link LanguageTag} from `@atproto/lex-data` instead.\n */\ntype LanguageTagLegacy = LanguageTag\nexport type { LanguageTagLegacy as LanguageTag }\n\n/**\n * @deprecated Use {@link parseLanguageString} from `@atproto/syntax` instead.\n */\nconst parseLanguageLegacy = parseLanguageString\nexport { parseLanguageLegacy as parseLanguage }\n\n/**\n * @deprecated Use {@link isLanguageString} from `@atproto/syntax` instead.\n */\nexport const validateLanguage = isValidLanguage\n\n/**\n * @deprecated Use {@link toBase64} from `@atproto/lex-data` instead.\n */\nexport const utf8ToB64Url = (utf8: string): string => {\n return toBase64(new TextEncoder().encode(utf8), 'base64url')\n}\n\n/**\n * @deprecated Use {@link fromBase64} from `@atproto/lex-data` instead.\n */\nexport const b64UrlToUtf8 = (b64: string): string => {\n return new TextDecoder().decode(fromBase64(b64, 'base64url'))\n}\n"]}
package/dist/tid.js CHANGED
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TID = void 0;
4
- const util_1 = require("./util");
1
+ import { s32decode, s32encode } from './util.js';
5
2
  const TID_LEN = 13;
6
3
  let lastTimestamp = 0;
7
4
  let timestampCount = 0;
@@ -9,14 +6,8 @@ let clockid = null;
9
6
  function dedash(str) {
10
7
  return str.replaceAll('-', '');
11
8
  }
12
- class TID {
9
+ export class TID {
13
10
  constructor(str) {
14
- Object.defineProperty(this, "str", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: void 0
19
- });
20
11
  const noDashes = dedash(str);
21
12
  if (noDashes.length !== TID_LEN) {
22
13
  throw new Error(`Poorly formatted TID: ${noDashes.length} length`);
@@ -49,7 +40,7 @@ class TID {
49
40
  }
50
41
  static fromTime(timestamp, clockid) {
51
42
  // base32 encode with encoding variant sort (s32)
52
- const str = `${(0, util_1.s32encode)(timestamp)}${(0, util_1.s32encode)(clockid).padStart(2, '2')}`;
43
+ const str = `${s32encode(timestamp)}${s32encode(clockid).padStart(2, '2')}`;
53
44
  return new TID(str);
54
45
  }
55
46
  static fromStr(str) {
@@ -65,10 +56,10 @@ class TID {
65
56
  return dedash(str).length === TID_LEN;
66
57
  }
67
58
  timestamp() {
68
- return (0, util_1.s32decode)(this.str.slice(0, 11));
59
+ return s32decode(this.str.slice(0, 11));
69
60
  }
70
61
  clockid() {
71
- return (0, util_1.s32decode)(this.str.slice(11, 13));
62
+ return s32decode(this.str.slice(11, 13));
72
63
  }
73
64
  formatted() {
74
65
  const str = this.toString();
@@ -95,5 +86,4 @@ class TID {
95
86
  return this.compareTo(other) < 0;
96
87
  }
97
88
  }
98
- exports.TID = TID;
99
89
  //# sourceMappingURL=tid.js.map
package/dist/tid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tid.js","sourceRoot":"","sources":["../src/tid.ts"],"names":[],"mappings":"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","sourcesContent":["import { s32decode, s32encode } from './util'\n\nconst TID_LEN = 13\n\nlet lastTimestamp = 0\nlet timestampCount = 0\nlet clockid: number | null = null\n\nfunction dedash(str: string): string {\n return str.replaceAll('-', '')\n}\n\nexport class TID {\n str: string\n\n constructor(str: string) {\n const noDashes = dedash(str)\n if (noDashes.length !== TID_LEN) {\n throw new Error(`Poorly formatted TID: ${noDashes.length} length`)\n }\n this.str = noDashes\n }\n\n static next(prev?: TID): TID {\n // javascript does not have microsecond precision\n // instead, we append a counter to the timestamp to indicate if multiple timestamps were created within the same millisecond\n // take max of current time & last timestamp to prevent tids moving backwards if system clock drifts backwards\n const time = Math.max(Date.now(), lastTimestamp)\n if (time === lastTimestamp) {\n timestampCount++\n }\n lastTimestamp = time\n const timestamp = time * 1000 + timestampCount\n // the bottom 32 clock ids can be randomized & are not guaranteed to be collision resistant\n // we use the same clockid for all tids coming from this machine\n if (clockid === null) {\n clockid = Math.floor(Math.random() * 32)\n }\n const tid = TID.fromTime(timestamp, clockid)\n if (!prev || tid.newerThan(prev)) {\n return tid\n }\n return TID.fromTime(prev.timestamp() + 1, clockid)\n }\n\n static nextStr(prev?: string): string {\n return TID.next(prev ? new TID(prev) : undefined).toString()\n }\n\n static fromTime(timestamp: number, clockid: number): TID {\n // base32 encode with encoding variant sort (s32)\n const str = `${s32encode(timestamp)}${s32encode(clockid).padStart(2, '2')}`\n return new TID(str)\n }\n\n static fromStr(str: string): TID {\n return new TID(str)\n }\n\n static oldestFirst(a: TID, b: TID): number {\n return a.compareTo(b)\n }\n\n static newestFirst(a: TID, b: TID): number {\n return b.compareTo(a)\n }\n\n static is(str: string): boolean {\n return dedash(str).length === TID_LEN\n }\n\n timestamp(): number {\n return s32decode(this.str.slice(0, 11))\n }\n\n clockid(): number {\n return s32decode(this.str.slice(11, 13))\n }\n\n formatted(): string {\n const str = this.toString()\n return `${str.slice(0, 4)}-${str.slice(4, 7)}-${str.slice(\n 7,\n 11,\n )}-${str.slice(11, 13)}`\n }\n\n toString(): string {\n return this.str\n }\n\n // newer > older\n compareTo(other: TID): number {\n if (this.str > other.str) return 1\n if (this.str < other.str) return -1\n return 0\n }\n\n equals(other: TID): boolean {\n return this.str === other.str\n }\n\n newerThan(other: TID): boolean {\n return this.compareTo(other) > 0\n }\n\n olderThan(other: TID): boolean {\n return this.compareTo(other) < 0\n }\n}\n"]}
1
+ {"version":3,"file":"tid.js","sourceRoot":"","sources":["../src/tid.ts"],"names":[],"mappings":"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","sourcesContent":["import { s32decode, s32encode } from './util.js'\n\nconst TID_LEN = 13\n\nlet lastTimestamp = 0\nlet timestampCount = 0\nlet clockid: number | null = null\n\nfunction dedash(str: string): string {\n return str.replaceAll('-', '')\n}\n\nexport class TID {\n str: string\n\n constructor(str: string) {\n const noDashes = dedash(str)\n if (noDashes.length !== TID_LEN) {\n throw new Error(`Poorly formatted TID: ${noDashes.length} length`)\n }\n this.str = noDashes\n }\n\n static next(prev?: TID): TID {\n // javascript does not have microsecond precision\n // instead, we append a counter to the timestamp to indicate if multiple timestamps were created within the same millisecond\n // take max of current time & last timestamp to prevent tids moving backwards if system clock drifts backwards\n const time = Math.max(Date.now(), lastTimestamp)\n if (time === lastTimestamp) {\n timestampCount++\n }\n lastTimestamp = time\n const timestamp = time * 1000 + timestampCount\n // the bottom 32 clock ids can be randomized & are not guaranteed to be collision resistant\n // we use the same clockid for all tids coming from this machine\n if (clockid === null) {\n clockid = Math.floor(Math.random() * 32)\n }\n const tid = TID.fromTime(timestamp, clockid)\n if (!prev || tid.newerThan(prev)) {\n return tid\n }\n return TID.fromTime(prev.timestamp() + 1, clockid)\n }\n\n static nextStr(prev?: string): string {\n return TID.next(prev ? new TID(prev) : undefined).toString()\n }\n\n static fromTime(timestamp: number, clockid: number): TID {\n // base32 encode with encoding variant sort (s32)\n const str = `${s32encode(timestamp)}${s32encode(clockid).padStart(2, '2')}`\n return new TID(str)\n }\n\n static fromStr(str: string): TID {\n return new TID(str)\n }\n\n static oldestFirst(a: TID, b: TID): number {\n return a.compareTo(b)\n }\n\n static newestFirst(a: TID, b: TID): number {\n return b.compareTo(a)\n }\n\n static is(str: string): boolean {\n return dedash(str).length === TID_LEN\n }\n\n timestamp(): number {\n return s32decode(this.str.slice(0, 11))\n }\n\n clockid(): number {\n return s32decode(this.str.slice(11, 13))\n }\n\n formatted(): string {\n const str = this.toString()\n return `${str.slice(0, 4)}-${str.slice(4, 7)}-${str.slice(\n 7,\n 11,\n )}-${str.slice(11, 13)}`\n }\n\n toString(): string {\n return this.str\n }\n\n // newer > older\n compareTo(other: TID): number {\n if (this.str > other.str) return 1\n if (this.str < other.str) return -1\n return 0\n }\n\n equals(other: TID): boolean {\n return this.str === other.str\n }\n\n newerThan(other: TID): boolean {\n return this.compareTo(other) > 0\n }\n\n olderThan(other: TID): boolean {\n return this.compareTo(other) < 0\n }\n}\n"]}
package/dist/times.js CHANGED
@@ -1,19 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addHoursToDate = exports.lessThanAgoMs = exports.DAY = exports.HOUR = exports.MINUTE = exports.SECOND = void 0;
4
- exports.SECOND = 1000;
5
- exports.MINUTE = exports.SECOND * 60;
6
- exports.HOUR = exports.MINUTE * 60;
7
- exports.DAY = exports.HOUR * 24;
8
- const lessThanAgoMs = (time, range) => {
1
+ export const SECOND = 1000;
2
+ export const MINUTE = SECOND * 60;
3
+ export const HOUR = MINUTE * 60;
4
+ export const DAY = HOUR * 24;
5
+ export const lessThanAgoMs = (time, range) => {
9
6
  return Date.now() < time.getTime() + range;
10
7
  };
11
- exports.lessThanAgoMs = lessThanAgoMs;
12
- const addHoursToDate = (hours, startingDate) => {
8
+ export const addHoursToDate = (hours, startingDate) => {
13
9
  // When date is passed, clone before calling `setHours()` so that we are not mutating the original date
14
10
  const currentDate = startingDate ? new Date(startingDate) : new Date();
15
11
  currentDate.setHours(currentDate.getHours() + hours);
16
12
  return currentDate;
17
13
  };
18
- exports.addHoursToDate = addHoursToDate;
19
14
  //# sourceMappingURL=times.js.map
package/dist/times.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"times.js","sourceRoot":"","sources":["../src/times.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAA;AACb,QAAA,MAAM,GAAG,cAAM,GAAG,EAAE,CAAA;AACpB,QAAA,IAAI,GAAG,cAAM,GAAG,EAAE,CAAA;AAClB,QAAA,GAAG,GAAG,YAAI,GAAG,EAAE,CAAA;AAErB,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,KAAa,EAAE,EAAE;IACzD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAA;AAC5C,CAAC,CAAA;AAFY,QAAA,aAAa,iBAEzB;AAEM,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,YAAmB,EAAQ,EAAE;IACzE,uGAAuG;IACvG,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;IACtE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAA;IACpD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AALY,QAAA,cAAc,kBAK1B","sourcesContent":["export const SECOND = 1000\nexport const MINUTE = SECOND * 60\nexport const HOUR = MINUTE * 60\nexport const DAY = HOUR * 24\n\nexport const lessThanAgoMs = (time: Date, range: number) => {\n return Date.now() < time.getTime() + range\n}\n\nexport const addHoursToDate = (hours: number, startingDate?: Date): Date => {\n // When date is passed, clone before calling `setHours()` so that we are not mutating the original date\n const currentDate = startingDate ? new Date(startingDate) : new Date()\n currentDate.setHours(currentDate.getHours() + hours)\n return currentDate\n}\n"]}
1
+ {"version":3,"file":"times.js","sourceRoot":"","sources":["../src/times.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAA;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAA;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAA;AAC/B,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,KAAa,EAAE,EAAE;IACzD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,YAAmB,EAAQ,EAAE;IACzE,uGAAuG;IACvG,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;IACtE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAA;IACpD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA","sourcesContent":["export const SECOND = 1000\nexport const MINUTE = SECOND * 60\nexport const HOUR = MINUTE * 60\nexport const DAY = HOUR * 24\n\nexport const lessThanAgoMs = (time: Date, range: number) => {\n return Date.now() < time.getTime() + range\n}\n\nexport const addHoursToDate = (hours: number, startingDate?: Date): Date => {\n // When date is passed, clone before calling `setHours()` so that we are not mutating the original date\n const currentDate = startingDate ? new Date(startingDate) : new Date()\n currentDate.setHours(currentDate.getHours() + hours)\n return currentDate\n}\n"]}
package/dist/types.d.ts CHANGED
@@ -1,30 +1,30 @@
1
1
  import { z } from 'zod';
2
2
  import { CID } from '@atproto/lex-data';
3
- import { Def } from './check';
3
+ import { Def } from './check.js';
4
4
  declare const carHeader: z.ZodObject<{
5
5
  version: z.ZodLiteral<1>;
6
- roots: z.ZodArray<z.ZodEffects<z.ZodUnknown, CID, unknown>, "many">;
6
+ roots: z.ZodArray<z.ZodEffects<z.ZodUnknown, CID<unknown, number, number, import("multiformats/cid").Version>, unknown>, "many">;
7
7
  }, "strip", z.ZodTypeAny, {
8
8
  version: 1;
9
- roots: CID[];
9
+ roots: CID<unknown, number, number, import("multiformats/cid").Version>[];
10
10
  }, {
11
11
  version: 1;
12
12
  roots: unknown[];
13
13
  }>;
14
14
  export type CarHeader = z.infer<typeof carHeader>;
15
15
  export declare const schema: {
16
- cid: z.ZodEffects<z.ZodUnknown, CID, unknown>;
16
+ cid: z.ZodEffects<z.ZodUnknown, CID<unknown, number, number, import("multiformats/cid").Version>, unknown>;
17
17
  carHeader: z.ZodObject<{
18
18
  version: z.ZodLiteral<1>;
19
- roots: z.ZodArray<z.ZodEffects<z.ZodUnknown, CID, unknown>, "many">;
19
+ roots: z.ZodArray<z.ZodEffects<z.ZodUnknown, CID<unknown, number, number, import("multiformats/cid").Version>, unknown>, "many">;
20
20
  }, "strip", z.ZodTypeAny, {
21
21
  version: 1;
22
- roots: CID[];
22
+ roots: CID<unknown, number, number, import("multiformats/cid").Version>[];
23
23
  }, {
24
24
  version: 1;
25
25
  roots: unknown[];
26
26
  }>;
27
- bytes: z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>>;
27
+ bytes: z.ZodType<Uint8Array<ArrayBufferLike>, z.ZodTypeDef, Uint8Array<ArrayBufferLike>>;
28
28
  string: z.ZodString;
29
29
  array: z.ZodArray<z.ZodUnknown, "many">;
30
30
  map: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAgB7B,QAAA,MAAM,SAAS;;;;;;;;;EAGb,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAQlB,CAAA;AAED,eAAO,MAAM,GAAG;SAIT,GAAG,CAAC,GAAG,CAAC;eAIR,GAAG,CAAC,SAAS,CAAC;WAId,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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAgBhC,QAAA,MAAM,SAAS;;;;;;;;;EAGb,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAQlB,CAAA;AAED,eAAO,MAAM,GAAG;SAIT,GAAG,CAAC,GAAG,CAAC;eAIR,GAAG,CAAC,SAAS,CAAC;WAId,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/types.js CHANGED
@@ -1,56 +1,53 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.def = exports.schema = void 0;
4
- const zod_1 = require("zod");
5
- const lex_data_1 = require("@atproto/lex-data");
6
- const cidSchema = zod_1.z.unknown().transform((obj, ctx) => {
7
- const cid = lex_data_1.CID.asCID(obj);
1
+ import { z } from 'zod';
2
+ import { CID } from '@atproto/lex-data';
3
+ const cidSchema = z.unknown().transform((obj, ctx) => {
4
+ const cid = CID.asCID(obj);
8
5
  if (cid == null) {
9
6
  ctx.addIssue({
10
- code: zod_1.z.ZodIssueCode.custom,
7
+ code: z.ZodIssueCode.custom,
11
8
  message: 'Not a valid CID',
12
9
  });
13
- return zod_1.z.NEVER;
10
+ return z.NEVER;
14
11
  }
15
12
  return cid;
16
13
  });
17
- const carHeader = zod_1.z.object({
18
- version: zod_1.z.literal(1),
19
- roots: zod_1.z.array(cidSchema),
14
+ const carHeader = z.object({
15
+ version: z.literal(1),
16
+ roots: z.array(cidSchema),
20
17
  });
21
- exports.schema = {
18
+ export const schema = {
22
19
  cid: cidSchema,
23
20
  carHeader,
24
- bytes: zod_1.z.instanceof(Uint8Array),
25
- string: zod_1.z.string(),
26
- array: zod_1.z.array(zod_1.z.unknown()),
27
- map: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
28
- unknown: zod_1.z.unknown(),
21
+ bytes: z.instanceof((Uint8Array)),
22
+ string: z.string(),
23
+ array: z.array(z.unknown()),
24
+ map: z.record(z.string(), z.unknown()),
25
+ unknown: z.unknown(),
29
26
  };
30
- exports.def = {
27
+ export const def = {
31
28
  cid: {
32
29
  name: 'cid',
33
- schema: exports.schema.cid,
30
+ schema: schema.cid,
34
31
  },
35
32
  carHeader: {
36
33
  name: 'CAR header',
37
- schema: exports.schema.carHeader,
34
+ schema: schema.carHeader,
38
35
  },
39
36
  bytes: {
40
37
  name: 'bytes',
41
- schema: exports.schema.bytes,
38
+ schema: schema.bytes,
42
39
  },
43
40
  string: {
44
41
  name: 'string',
45
- schema: exports.schema.string,
42
+ schema: schema.string,
46
43
  },
47
44
  map: {
48
45
  name: 'map',
49
- schema: exports.schema.map,
46
+ schema: schema.map,
50
47
  },
51
48
  unknown: {
52
49
  name: 'unknown',
53
- schema: exports.schema.unknown,
50
+ schema: schema.unknown,
54
51
  },
55
52
  };
56
53
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AACvB,gDAAuC;AAGvC,MAAM,SAAS,GAAG,OAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAO,EAAE;IACxD,MAAM,GAAG,GAAG,cAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE1B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAA;QACF,OAAO,OAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IACzB,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC,CAAA;AAGW,QAAA,MAAM,GAAG;IACpB,GAAG,EAAE,SAAS;IACd,SAAS;IACT,KAAK,EAAE,OAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAC/B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;CACrB,CAAA;AAEY,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,cAAM,CAAC,GAAG;KACP;IACb,SAAS,EAAE;QACT,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,cAAM,CAAC,SAAS;KACP;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,cAAM,CAAC,KAAK;KACF;IACpB,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,cAAM,CAAC,MAAM;KACP;IAChB,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,cAAM,CAAC,GAAG;KACa;IACjC,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,cAAM,CAAC,OAAO;KACP;CAClB,CAAA","sourcesContent":["import { z } from 'zod'\nimport { CID } from '@atproto/lex-data'\nimport { Def } from './check'\n\nconst cidSchema = z.unknown().transform((obj, ctx): CID => {\n const cid = CID.asCID(obj)\n\n if (cid == null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Not a valid CID',\n })\n return z.NEVER\n }\n\n return cid\n})\n\nconst carHeader = z.object({\n version: z.literal(1),\n roots: z.array(cidSchema),\n})\nexport type CarHeader = z.infer<typeof carHeader>\n\nexport const schema = {\n cid: cidSchema,\n carHeader,\n bytes: z.instanceof(Uint8Array),\n string: z.string(),\n array: z.array(z.unknown()),\n map: z.record(z.string(), z.unknown()),\n unknown: z.unknown(),\n}\n\nexport const def = {\n cid: {\n name: 'cid',\n schema: schema.cid,\n } as Def<CID>,\n carHeader: {\n name: 'CAR header',\n schema: schema.carHeader,\n } as Def<CarHeader>,\n bytes: {\n name: 'bytes',\n schema: schema.bytes,\n } as Def<Uint8Array>,\n string: {\n name: 'string',\n schema: schema.string,\n } as Def<string>,\n map: {\n name: 'map',\n schema: schema.map,\n } as Def<Record<string, unknown>>,\n unknown: {\n name: 'unknown',\n schema: schema.unknown,\n } as Def<unknown>,\n}\n\nexport type ArrayEl<A> = A extends readonly (infer T)[] ? T : never\n\nexport type NotEmptyArray<T> = [T, ...T[]]\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAGvC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAO,EAAE;IACxD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE1B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,SAAS;IACd,SAAS;IACT,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA,UAA2B,CAAA,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,MAAM,CAAC,GAAG;KACP;IACb,SAAS,EAAE;QACT,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,MAAM,CAAC,SAAS;KACP;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,MAAM,CAAC,KAAK;KACF;IACpB,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM,CAAC,MAAM;KACP;IAChB,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,MAAM,CAAC,GAAG;KACa;IACjC,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,MAAM,CAAC,OAAO;KACP;CAClB,CAAA","sourcesContent":["import { z } from 'zod'\nimport { CID } from '@atproto/lex-data'\nimport { Def } from './check.js'\n\nconst cidSchema = z.unknown().transform((obj, ctx): CID => {\n const cid = CID.asCID(obj)\n\n if (cid == null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Not a valid CID',\n })\n return z.NEVER\n }\n\n return cid\n})\n\nconst carHeader = z.object({\n version: z.literal(1),\n roots: z.array(cidSchema),\n})\nexport type CarHeader = z.infer<typeof carHeader>\n\nexport const schema = {\n cid: cidSchema,\n carHeader,\n bytes: z.instanceof(Uint8Array<ArrayBufferLike>),\n string: z.string(),\n array: z.array(z.unknown()),\n map: z.record(z.string(), z.unknown()),\n unknown: z.unknown(),\n}\n\nexport const def = {\n cid: {\n name: 'cid',\n schema: schema.cid,\n } as Def<CID>,\n carHeader: {\n name: 'CAR header',\n schema: schema.carHeader,\n } as Def<CarHeader>,\n bytes: {\n name: 'bytes',\n schema: schema.bytes,\n } as Def<Uint8Array>,\n string: {\n name: 'string',\n schema: schema.string,\n } as Def<string>,\n map: {\n name: 'map',\n schema: schema.map,\n } as Def<Record<string, unknown>>,\n unknown: {\n name: 'unknown',\n schema: schema.unknown,\n } as Def<unknown>,\n}\n\nexport type ArrayEl<A> = A extends readonly (infer T)[] ? T : never\n\nexport type NotEmptyArray<T> = [T, ...T[]]\n"]}
package/dist/util.js CHANGED
@@ -1,9 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
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.aggregateErrors = aggregateErrors;
5
- exports.omit = omit;
6
- const noUndefinedVals = (obj) => {
1
+ export const noUndefinedVals = (obj) => {
7
2
  for (const k of Object.keys(obj)) {
8
3
  if (obj[k] === undefined) {
9
4
  delete obj[k];
@@ -11,8 +6,7 @@ const noUndefinedVals = (obj) => {
11
6
  }
12
7
  return obj;
13
8
  };
14
- exports.noUndefinedVals = noUndefinedVals;
15
- function aggregateErrors(errors, message) {
9
+ export function aggregateErrors(errors, message) {
16
10
  if (errors.length === 1) {
17
11
  return errors[0] instanceof Error
18
12
  ? errors[0]
@@ -28,7 +22,7 @@ function stringifyError(reason) {
28
22
  }
29
23
  return String(reason);
30
24
  }
31
- function omit(src, rejectedKeys) {
25
+ export function omit(src, rejectedKeys) {
32
26
  // Hot path
33
27
  if (!src)
34
28
  return src;
@@ -42,15 +36,13 @@ function omit(src, rejectedKeys) {
42
36
  }
43
37
  return dst;
44
38
  }
45
- const jitter = (maxMs) => {
39
+ export const jitter = (maxMs) => {
46
40
  return Math.round((Math.random() - 0.5) * maxMs * 2);
47
41
  };
48
- exports.jitter = jitter;
49
- const wait = (ms) => {
42
+ export const wait = (ms) => {
50
43
  return new Promise((res) => setTimeout(res, ms));
51
44
  };
52
- exports.wait = wait;
53
- const bailableWait = (ms) => {
45
+ export const bailableWait = (ms) => {
54
46
  let bail;
55
47
  const waitPromise = new Promise((res) => {
56
48
  const timeout = setTimeout(res, ms);
@@ -61,8 +53,7 @@ const bailableWait = (ms) => {
61
53
  });
62
54
  return { bail, wait: () => waitPromise };
63
55
  };
64
- exports.bailableWait = bailableWait;
65
- const flattenUint8Arrays = (arrs) => {
56
+ export const flattenUint8Arrays = (arrs) => {
66
57
  const length = arrs.reduce((acc, cur) => {
67
58
  return acc + cur.length;
68
59
  }, 0);
@@ -74,17 +65,15 @@ const flattenUint8Arrays = (arrs) => {
74
65
  });
75
66
  return flattened;
76
67
  };
77
- exports.flattenUint8Arrays = flattenUint8Arrays;
78
- const streamToBuffer = async (stream) => {
68
+ export const streamToBuffer = async (stream) => {
79
69
  const arrays = [];
80
70
  for await (const chunk of stream) {
81
71
  arrays.push(chunk);
82
72
  }
83
- return (0, exports.flattenUint8Arrays)(arrays);
73
+ return flattenUint8Arrays(arrays);
84
74
  };
85
- exports.streamToBuffer = streamToBuffer;
86
75
  const S32_CHAR = '234567abcdefghijklmnopqrstuvwxyz';
87
- const s32encode = (i) => {
76
+ export const s32encode = (i) => {
88
77
  let s = '';
89
78
  while (i) {
90
79
  const c = i % 32;
@@ -93,29 +82,24 @@ const s32encode = (i) => {
93
82
  }
94
83
  return s;
95
84
  };
96
- exports.s32encode = s32encode;
97
- const s32decode = (s) => {
85
+ export const s32decode = (s) => {
98
86
  let i = 0;
99
87
  for (const c of s) {
100
88
  i = i * 32 + S32_CHAR.indexOf(c);
101
89
  }
102
90
  return i;
103
91
  };
104
- exports.s32decode = s32decode;
105
- const asyncFilter = async (arr, fn) => {
92
+ export const asyncFilter = async (arr, fn) => {
106
93
  const results = await Promise.all(arr.map((t) => fn(t)));
107
94
  return arr.filter((_, i) => results[i]);
108
95
  };
109
- exports.asyncFilter = asyncFilter;
110
- const isErrnoException = (err) => {
96
+ export const isErrnoException = (err) => {
111
97
  return !!err && err['code'];
112
98
  };
113
- exports.isErrnoException = isErrnoException;
114
- const errHasMsg = (err, msg) => {
99
+ export const errHasMsg = (err, msg) => {
115
100
  return !!err && typeof err === 'object' && err['message'] === msg;
116
101
  };
117
- exports.errHasMsg = errHasMsg;
118
- const chunkArray = (arr, chunkSize) => {
102
+ export const chunkArray = (arr, chunkSize) => {
119
103
  return arr.reduce((acc, cur, i) => {
120
104
  const chunkI = Math.floor(i / chunkSize);
121
105
  if (!acc[chunkI]) {
@@ -125,22 +109,18 @@ const chunkArray = (arr, chunkSize) => {
125
109
  return acc;
126
110
  }, []);
127
111
  };
128
- exports.chunkArray = chunkArray;
129
- const range = (num) => {
112
+ export const range = (num) => {
130
113
  const nums = [];
131
114
  for (let i = 0; i < num; i++) {
132
115
  nums.push(i);
133
116
  }
134
117
  return nums;
135
118
  };
136
- exports.range = range;
137
- const dedupeStrs = (strs) => {
119
+ export const dedupeStrs = (strs) => {
138
120
  return [...new Set(strs)];
139
121
  };
140
- exports.dedupeStrs = dedupeStrs;
141
- const parseIntWithFallback = (value, fallback) => {
122
+ export const parseIntWithFallback = (value, fallback) => {
142
123
  const parsed = parseInt(value || '', 10);
143
124
  return isNaN(parsed) ? fallback : parsed;
144
125
  };
145
- exports.parseIntWithFallback = parseIntWithFallback;
146
126
  //# sourceMappingURL=util.js.map