@dxos/keys 0.8.4-main.b97322e → 0.8.4-main.bc2380dfbc

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.
@@ -100,29 +100,70 @@ init_inject_globals();
100
100
 
101
101
  // src/dxn.ts
102
102
  init_inject_globals();
103
- import { Schema as Schema3 } from "effect";
103
+ import * as Schema3 from "effect/Schema";
104
104
  import { devtoolsFormatter, inspectCustom } from "@dxos/debug";
105
105
  import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
106
106
 
107
107
  // src/object-id.ts
108
108
  init_inject_globals();
109
- import { Schema } from "effect";
110
- import { ulid } from "ulidx";
109
+ import * as Schema from "effect/Schema";
110
+ import { monotonicFactory } from "ulidx";
111
111
  var ObjectIdSchema = Schema.String.pipe(Schema.pattern(/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i)).annotations({
112
- description: "a Universally Unique Lexicographically Sortable Identifier",
112
+ description: "A Universally Unique Lexicographically Sortable Identifier",
113
113
  pattern: "^[0-7][0-9A-HJKMNP-TV-Z]{25}$"
114
114
  });
115
115
  var ObjectId = class extends ObjectIdSchema {
116
+ static #factory = monotonicFactory();
117
+ static #seedTime = void 0;
116
118
  static isValid(id) {
117
119
  try {
118
120
  Schema.decodeSync(ObjectId)(id);
119
121
  return true;
120
- } catch (err) {
122
+ } catch {
121
123
  return false;
122
124
  }
123
125
  }
124
126
  static random() {
125
- return ulid();
127
+ return this.#factory(this.#seedTime);
128
+ }
129
+ static dangerouslyDisableRandomness() {
130
+ this.#factory = monotonicFactory(makeTestPRNG());
131
+ this.#seedTime = (/* @__PURE__ */ new Date("2025-01-01")).getTime();
132
+ }
133
+ };
134
+ var makeTestPRNG = () => {
135
+ const rng = new SimplePRNG();
136
+ return () => {
137
+ return rng.next();
138
+ };
139
+ };
140
+ var SimplePRNG = class _SimplePRNG {
141
+ #seed;
142
+ // LCG parameters (from Numerical Recipes)
143
+ static #a = 1664525;
144
+ static #c = 1013904223;
145
+ static #m = Math.pow(2, 32);
146
+ /**
147
+ * Creates a new PRNG instance.
148
+ * @param seed - Initial seed value. If not provided, uses 0.
149
+ */
150
+ constructor(seed = 0) {
151
+ this.#seed = seed;
152
+ }
153
+ /**
154
+ * Generates the next pseudo-random number in the range [0, 1).
155
+ * @returns A pseudo-random number between 0 (inclusive) and 1 (exclusive).
156
+ */
157
+ next() {
158
+ this.#seed = (_SimplePRNG.#a * this.#seed + _SimplePRNG.#c) % _SimplePRNG.#m;
159
+ return this.#seed / _SimplePRNG.#m;
160
+ }
161
+ /**
162
+ * Resets the generator with a new seed.
163
+ * @param seed - New seed value.
164
+ */
165
+ reset(seed) {
166
+ this.#seed = seed;
126
167
  }
127
168
  };
128
169
 
@@ -194,7 +235,7 @@ function base32Encode(data, variant, options) {
194
235
  }
195
236
 
196
237
  // src/space-id.ts
197
- import { Schema as Schema2 } from "effect";
238
+ import * as Schema2 from "effect/Schema";
198
239
  import { invariant } from "@dxos/invariant";
199
240
 
200
241
  // src/random-bytes.ts
@@ -207,121 +248,88 @@ var randomBytes = (length) => {
207
248
  };
208
249
 
209
250
  // src/space-id.ts
210
- var __dxlog_file = "/__w/dxos/dxos/packages/common/keys/src/space-id.ts";
211
251
  var MULTIBASE_PREFIX = "B";
212
252
  var ENCODED_LENGTH = 33;
213
253
  var isValid = (value) => {
214
254
  return typeof value === "string" && value.startsWith(MULTIBASE_PREFIX) && value.length === ENCODED_LENGTH;
215
255
  };
216
256
  var SpaceId = class extends Schema2.String.pipe(Schema2.filter(isValid)) {
217
- static {
218
- this.byteLength = 20;
219
- }
220
- static {
221
- this.encode = (value) => {
222
- invariant(value instanceof Uint8Array, "Invalid type", {
223
- F: __dxlog_file,
224
- L: 43,
225
- S: this,
226
- A: [
227
- "value instanceof Uint8Array",
228
- "'Invalid type'"
229
- ]
230
- });
231
- invariant(value.length === SpaceId.byteLength, "Invalid length", {
232
- F: __dxlog_file,
233
- L: 44,
234
- S: this,
235
- A: [
236
- "value.length === SpaceId.byteLength",
237
- "'Invalid length'"
238
- ]
239
- });
240
- return MULTIBASE_PREFIX + base32Encode(value, "RFC4648");
241
- };
242
- }
243
- static {
244
- this.decode = (value) => {
245
- invariant(value.startsWith(MULTIBASE_PREFIX), "Invalid multibase32 encoding", {
246
- F: __dxlog_file,
247
- L: 49,
248
- S: this,
249
- A: [
250
- "value.startsWith(MULTIBASE_PREFIX)",
251
- "'Invalid multibase32 encoding'"
252
- ]
253
- });
254
- return new Uint8Array((0, import_base32_decode.default)(value.slice(1), "RFC4648"));
255
- };
256
- }
257
- static {
258
- this.isValid = isValid;
259
- }
260
- static {
261
- this.random = () => {
262
- return SpaceId.encode(randomBytes(SpaceId.byteLength));
263
- };
264
- }
257
+ static byteLength = 20;
258
+ static encode = (value) => {
259
+ invariant(value instanceof Uint8Array, "Invalid type");
260
+ invariant(value.length === SpaceId.byteLength, "Invalid length");
261
+ return MULTIBASE_PREFIX + base32Encode(value, "RFC4648");
262
+ };
263
+ static decode = (value) => {
264
+ invariant(value.startsWith(MULTIBASE_PREFIX), "Invalid multibase32 encoding");
265
+ return new Uint8Array((0, import_base32_decode.default)(value.slice(1), "RFC4648"));
266
+ };
267
+ static isValid = isValid;
268
+ static random = () => {
269
+ return SpaceId.encode(randomBytes(SpaceId.byteLength));
270
+ };
265
271
  };
266
272
 
267
273
  // src/dxn.ts
268
- var __dxlog_file2 = "/__w/dxos/dxos/packages/common/keys/src/dxn.ts";
269
274
  var LOCAL_SPACE_TAG = "@";
275
+ var DXN_ECHO_REGEXP = /@(dxn:[a-zA-Z0-p:@]+)/;
270
276
  var QueueSubspaceTags = Object.freeze({
271
277
  DATA: "data",
272
278
  TRACE: "trace"
273
279
  });
274
280
  var DXN = class _DXN {
275
- static {
276
- // TODO(dmaretskyi): Should this be a transformation into the DXN type?
277
- this.Schema = Schema3.NonEmptyString.pipe(
278
- Schema3.pattern(/^dxn:([^:]+):(?:[^:]+:?)+[^:]$/),
279
- // TODO(dmaretskyi): To set the format we need to move the annotation IDs out of the echo-schema package.
280
- // FormatAnnotation.set(FormatEnum.DXN),
281
- Schema3.annotations({
282
- title: "DXN",
283
- description: "DXN URI",
284
- examples: [
285
- "dxn:type:example.com/type/MyType",
286
- "dxn:echo:@:01J00J9B45YHYSGZQTQMSKMGJ6"
287
- ]
288
- })
289
- );
290
- }
281
+ // TODO(burdon): Rename to DXN (i.e., DXN.DXN).
282
+ // TODO(dmaretskyi): Should this be a transformation into the DXN type?
283
+ static Schema = Schema3.NonEmptyString.pipe(
284
+ Schema3.pattern(/^dxn:([^:]+):(?:[^:]+:?)+[^:]$/),
285
+ // TODO(dmaretskyi): To set the format we need to move the annotation IDs out of the echo-schema package.
286
+ // FormatAnnotation.set(TypeFormat.DXN),
287
+ Schema3.annotations({
288
+ title: "DXN",
289
+ description: "DXN URI",
290
+ examples: [
291
+ "dxn:type:com.example.type.my-type",
292
+ "dxn:echo:@:01J00J9B45YHYSGZQTQMSKMGJ6"
293
+ ]
294
+ })
295
+ );
291
296
  static hash(dxn) {
292
297
  return dxn.toString();
293
298
  }
294
- static {
299
+ /**
300
+ * Kind constants.
301
+ */
302
+ static kind = Object.freeze({
295
303
  /**
296
- * Kind constants.
304
+ * dxn:type:<type_name>[:<version>]
297
305
  */
298
- this.kind = Object.freeze({
299
- /**
300
- * dxn:type:<type name>[:<version>]
301
- */
302
- TYPE: "type",
303
- /**
304
- * dxn:echo:<space id>:<echo id>
305
- * dxn:echo:@:<echo id>
306
- */
307
- // TODO(burdon): Rename to OBJECT? (BREAKING CHANGE).
308
- // TODO(burdon): Add separate Kind for space.
309
- ECHO: "echo",
310
- /**
311
- * The subspace tag enables us to partition queues by usage within the context of a space.
312
- * dxn:queue:<subspace_tag>:<space_id>:<queue_id>[:object_id]
313
- * dxn:queue:data:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6
314
- * dxn:queue:trace:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6
315
- */
316
- QUEUE: "queue"
317
- });
318
- }
319
- get kind() {
320
- return this.#kind;
321
- }
306
+ TYPE: "type",
307
+ /**
308
+ * dxn:echo:<space_id>:<echo_id>
309
+ * dxn:echo:@:<echo_id>
310
+ */
311
+ // TODO(burdon): Rename to OBJECT? (BREAKING CHANGE to update "echo").
312
+ // TODO(burdon): Add separate Kind for space?
313
+ ECHO: "echo",
314
+ /**
315
+ * The subspace tag enables us to partition queues by usage within the context of a space.
316
+ * dxn:queue:<subspace_tag>:<space_id>:<queue_id>[:object_id]
317
+ * dxn:queue:data:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6
318
+ * dxn:queue:trace:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6
319
+ */
320
+ QUEUE: "queue"
321
+ });
322
+ /**
323
+ * Exactly equals.
324
+ */
322
325
  static equals(a, b) {
323
326
  return a.kind === b.kind && a.parts.length === b.parts.length && a.parts.every((part, i) => part === b.parts[i]);
324
327
  }
328
+ static equalsEchoId(a, b) {
329
+ const a1 = a.asEchoDXN();
330
+ const b1 = b.asEchoDXN();
331
+ return !!a1 && !!b1 && a1.echoId === b1.echoId;
332
+ }
325
333
  // TODO(burdon): Rename isValid.
326
334
  static isDXNString(dxn) {
327
335
  return dxn.startsWith("dxn:");
@@ -345,12 +353,12 @@ var DXN = class _DXN {
345
353
  static tryParse(dxn) {
346
354
  try {
347
355
  return _DXN.parse(dxn);
348
- } catch (error) {
356
+ } catch {
349
357
  return void 0;
350
358
  }
351
359
  }
352
360
  /**
353
- * @example `dxn:type:example.com/type/Contact`
361
+ * @example `dxn:type:com.example.type.person`
354
362
  */
355
363
  static fromTypename(typename) {
356
364
  return new _DXN(_DXN.kind.TYPE, [
@@ -358,7 +366,7 @@ var DXN = class _DXN {
358
366
  ]);
359
367
  }
360
368
  /**
361
- * @example `dxn:type:example.com/type/Contact:0.1.0`
369
+ * @example `dxn:type:com.example.type.person:0.1.0`
362
370
  */
363
371
  // TODO(dmaretskyi): Consider using @ as the version separator.
364
372
  static fromTypenameAndVersion(typename, version) {
@@ -368,43 +376,30 @@ var DXN = class _DXN {
368
376
  ]);
369
377
  }
370
378
  /**
379
+ * @example `dxn:echo:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6`
380
+ */
381
+ static fromSpaceAndObjectId(spaceId, objectId) {
382
+ assertArgument(SpaceId.isValid(spaceId), `Invalid space ID: ${spaceId}`);
383
+ assertArgument(ObjectId.isValid(objectId), "objectId", `Invalid object ID: ${objectId}`);
384
+ return new _DXN(_DXN.kind.ECHO, [
385
+ spaceId,
386
+ objectId
387
+ ]);
388
+ }
389
+ /**
371
390
  * @example `dxn:echo:@:01J00J9B45YHYSGZQTQMSKMGJ6`
372
391
  */
373
392
  static fromLocalObjectId(id) {
374
- assertArgument(ObjectId.isValid(id), `Invalid object ID: ${id}`);
393
+ assertArgument(ObjectId.isValid(id), "id", `Invalid object ID: ${id}`);
375
394
  return new _DXN(_DXN.kind.ECHO, [
376
395
  LOCAL_SPACE_TAG,
377
396
  id
378
397
  ]);
379
398
  }
380
399
  static fromQueue(subspaceTag, spaceId, queueId, objectId) {
381
- invariant2(SpaceId.isValid(spaceId), void 0, {
382
- F: __dxlog_file2,
383
- L: 151,
384
- S: this,
385
- A: [
386
- "SpaceId.isValid(spaceId)",
387
- ""
388
- ]
389
- });
390
- invariant2(ObjectId.isValid(queueId), void 0, {
391
- F: __dxlog_file2,
392
- L: 152,
393
- S: this,
394
- A: [
395
- "ObjectId.isValid(queueId)",
396
- ""
397
- ]
398
- });
399
- invariant2(!objectId || ObjectId.isValid(objectId), void 0, {
400
- F: __dxlog_file2,
401
- L: 153,
402
- S: this,
403
- A: [
404
- "!objectId || ObjectId.isValid(objectId)",
405
- ""
406
- ]
407
- });
400
+ assertArgument(SpaceId.isValid(spaceId), `Invalid space ID: ${spaceId}`);
401
+ assertArgument(ObjectId.isValid(queueId), "queueId", `Invalid queue ID: ${queueId}`);
402
+ assertArgument(!objectId || ObjectId.isValid(objectId), "objectId", `Invalid object ID: ${objectId}`);
408
403
  return new _DXN(_DXN.kind.QUEUE, [
409
404
  subspaceTag,
410
405
  spaceId,
@@ -417,33 +412,17 @@ var DXN = class _DXN {
417
412
  #kind;
418
413
  #parts;
419
414
  constructor(kind, parts) {
420
- invariant2(parts.length > 0, void 0, {
421
- F: __dxlog_file2,
422
- L: 162,
423
- S: this,
424
- A: [
425
- "parts.length > 0",
426
- ""
427
- ]
428
- });
429
- invariant2(parts.every((part) => typeof part === "string" && part.length > 0 && part.indexOf(":") === -1), void 0, {
430
- F: __dxlog_file2,
431
- L: 163,
432
- S: this,
433
- A: [
434
- "parts.every((part) => typeof part === 'string' && part.length > 0 && part.indexOf(':') === -1)",
435
- ""
436
- ]
437
- });
415
+ assertArgument(parts.length > 0, "parts", `Invalid DXN: ${parts}`);
416
+ assertArgument(parts.every((part) => typeof part === "string" && part.length > 0 && part.indexOf(":") === -1), "parts", `Invalid DXN: ${parts}`);
438
417
  switch (kind) {
439
418
  case _DXN.kind.TYPE:
440
419
  if (parts.length > 2) {
441
- throw new Error('Invalid "type" DXN');
420
+ throw new Error("Invalid DXN.kind.TYPE");
442
421
  }
443
422
  break;
444
423
  case _DXN.kind.ECHO:
445
424
  if (parts.length !== 2) {
446
- throw new Error('Invalid "echo" DXN');
425
+ throw new Error("Invalid DXN.kind.ECHO");
447
426
  }
448
427
  break;
449
428
  }
@@ -478,22 +457,20 @@ var DXN = class _DXN {
478
457
  }
479
458
  };
480
459
  }
460
+ get kind() {
461
+ return this.#kind;
462
+ }
481
463
  get parts() {
482
464
  return this.#parts;
483
465
  }
484
466
  // TODO(burdon): Should getters fail?
485
467
  get typename() {
486
- invariant2(this.#kind === _DXN.kind.TYPE, void 0, {
487
- F: __dxlog_file2,
488
- L: 218,
489
- S: this,
490
- A: [
491
- "this.#kind === DXN.kind.TYPE",
492
- ""
493
- ]
494
- });
468
+ invariant2(this.#kind === _DXN.kind.TYPE);
495
469
  return this.#parts[0];
496
470
  }
471
+ equals(other) {
472
+ return _DXN.equals(this, other);
473
+ }
497
474
  hasTypenameOf(typename) {
498
475
  return this.#kind === _DXN.kind.TYPE && this.#parts.length === 1 && this.#parts[0] === typename;
499
476
  }
@@ -518,6 +495,7 @@ var DXN = class _DXN {
518
495
  const [spaceId, echoId] = this.#parts;
519
496
  return {
520
497
  spaceId: spaceId === LOCAL_SPACE_TAG ? void 0 : spaceId,
498
+ // TODO(burdon): objectId.
521
499
  echoId
522
500
  };
523
501
  }
@@ -536,46 +514,30 @@ var DXN = class _DXN {
536
514
  objectId
537
515
  };
538
516
  }
517
+ /**
518
+ * Produces a new DXN with the given parts appended.
519
+ */
520
+ extend(parts) {
521
+ return new _DXN(this.#kind, [
522
+ ...this.#parts,
523
+ ...parts
524
+ ]);
525
+ }
539
526
  };
540
527
 
541
528
  // src/identity-did.ts
542
529
  init_inject_globals();
543
530
  var import_base32_decode2 = __toESM(require_base32_decode(), 1);
544
531
  import { invariant as invariant3 } from "@dxos/invariant";
545
- var __dxlog_file3 = "/__w/dxos/dxos/packages/common/keys/src/identity-did.ts";
546
532
  var IdentityDid = Object.freeze({
547
533
  byteLength: 20,
548
534
  encode: (value) => {
549
- invariant3(value instanceof Uint8Array, "Invalid type", {
550
- F: __dxlog_file3,
551
- L: 22,
552
- S: void 0,
553
- A: [
554
- "value instanceof Uint8Array",
555
- "'Invalid type'"
556
- ]
557
- });
558
- invariant3(value.length === IdentityDid.byteLength, "Invalid length", {
559
- F: __dxlog_file3,
560
- L: 23,
561
- S: void 0,
562
- A: [
563
- "value.length === IdentityDid.byteLength",
564
- "'Invalid length'"
565
- ]
566
- });
535
+ invariant3(value instanceof Uint8Array, "Invalid type");
536
+ invariant3(value.length === IdentityDid.byteLength, "Invalid length");
567
537
  return DID_PREFIX + MULTIBASE_PREFIX2 + base32Encode(value, "RFC4648");
568
538
  },
569
539
  decode: (value) => {
570
- invariant3(value.startsWith(DID_PREFIX + MULTIBASE_PREFIX2), "Invalid multibase32 encoding", {
571
- F: __dxlog_file3,
572
- L: 28,
573
- S: void 0,
574
- A: [
575
- "value.startsWith(DID_PREFIX + MULTIBASE_PREFIX)",
576
- "'Invalid multibase32 encoding'"
577
- ]
578
- });
540
+ invariant3(value.startsWith(DID_PREFIX + MULTIBASE_PREFIX2), "Invalid multibase32 encoding");
579
541
  return new Uint8Array((0, import_base32_decode2.default)(value.slice(10), "RFC4648"));
580
542
  },
581
543
  isValid: (value) => {
@@ -589,34 +551,51 @@ var MULTIBASE_PREFIX2 = "B";
589
551
  var DID_PREFIX = "did:halo:";
590
552
  var ENCODED_LENGTH2 = 42;
591
553
 
554
+ // src/parse-id.ts
555
+ init_inject_globals();
556
+ var SPACE_ID_LENGTH = 33;
557
+ var OBJECT_ID_LENGTH = 26;
558
+ var FQ_ID_LENGTH = SPACE_ID_LENGTH + OBJECT_ID_LENGTH + 1;
559
+ var parseId = (id) => {
560
+ if (!id) {
561
+ return {};
562
+ } else if (id.length === SPACE_ID_LENGTH) {
563
+ return {
564
+ spaceId: id
565
+ };
566
+ } else if (id.length === OBJECT_ID_LENGTH) {
567
+ return {
568
+ objectId: id
569
+ };
570
+ } else if (id.length === FQ_ID_LENGTH && id.indexOf(":") === SPACE_ID_LENGTH) {
571
+ const [spaceId, objectId] = id.split(":");
572
+ return {
573
+ spaceId,
574
+ objectId
575
+ };
576
+ } else {
577
+ return {};
578
+ }
579
+ };
580
+
592
581
  // src/public-key.ts
593
582
  init_inject_globals();
594
583
  var import_base32_decode3 = __toESM(require_base32_decode(), 1);
595
584
  import { devtoolsFormatter as devtoolsFormatter2, equalsSymbol, inspectCustom as inspectCustom2, truncateKey } from "@dxos/debug";
596
585
  import { invariant as invariant4 } from "@dxos/invariant";
597
- var __dxlog_file4 = "/__w/dxos/dxos/packages/common/keys/src/public-key.ts";
598
586
  var PUBLIC_KEY_LENGTH = 32;
599
587
  var SECRET_KEY_LENGTH = 64;
600
588
  var isLikeArrayBuffer = (value) => typeof value === "object" && value !== null && Object.getPrototypeOf(value).constructor.name === "ArrayBuffer";
601
589
  var PublicKey = class _PublicKey {
602
- static {
603
- this.ZERO = _PublicKey.from("00".repeat(PUBLIC_KEY_LENGTH));
604
- }
590
+ _value;
591
+ static ZERO = _PublicKey.from("00".repeat(PUBLIC_KEY_LENGTH));
605
592
  /**
606
593
  * Creates new instance of PublicKey automatically determining the input format.
607
594
  * @param source A Buffer, or Uint8Array, or hex encoded string, or something with an `asUint8Array` method on it
608
595
  * @returns PublicKey
609
596
  */
610
597
  static from(source) {
611
- invariant4(source, void 0, {
612
- F: __dxlog_file4,
613
- L: 49,
614
- S: this,
615
- A: [
616
- "source",
617
- ""
618
- ]
619
- });
598
+ invariant4(source);
620
599
  if (source instanceof _PublicKey) {
621
600
  return source;
622
601
  } else if (source instanceof Buffer2) {
@@ -700,15 +679,7 @@ var PublicKey = class _PublicKey {
700
679
  * @deprecated All keys should be represented as instances of PublicKey.
701
680
  */
702
681
  static bufferize(str) {
703
- invariant4(typeof str === "string", "Invalid type", {
704
- F: __dxlog_file4,
705
- L: 152,
706
- S: this,
707
- A: [
708
- "typeof str === 'string'",
709
- "'Invalid type'"
710
- ]
711
- });
682
+ invariant4(typeof str === "string", "Invalid type");
712
683
  const buffer = Buffer2.from(str, "hex");
713
684
  return buffer;
714
685
  }
@@ -723,15 +694,7 @@ var PublicKey = class _PublicKey {
723
694
  } else if (key instanceof Uint8Array) {
724
695
  key = Buffer2.from(key.buffer, key.byteOffset, key.byteLength);
725
696
  }
726
- invariant4(key instanceof Buffer2, "Invalid type", {
727
- F: __dxlog_file4,
728
- L: 171,
729
- S: this,
730
- A: [
731
- "key instanceof Buffer",
732
- "'Invalid type'"
733
- ]
734
- });
697
+ invariant4(key instanceof Buffer2, "Invalid type");
735
698
  return key.toString("hex");
736
699
  }
737
700
  /**
@@ -742,15 +705,7 @@ var PublicKey = class _PublicKey {
742
705
  return key.toHex();
743
706
  }
744
707
  static fromMultibase32(encoded) {
745
- invariant4(encoded.startsWith("B"), "Invalid multibase32 encoding", {
746
- F: __dxlog_file4,
747
- L: 184,
748
- S: this,
749
- A: [
750
- "encoded.startsWith('B')",
751
- "'Invalid multibase32 encoding'"
752
- ]
753
- });
708
+ invariant4(encoded.startsWith("B"), "Invalid multibase32 encoding");
754
709
  return new _PublicKey(new Uint8Array((0, import_base32_decode3.default)(encoded.slice(1), "RFC4648")));
755
710
  }
756
711
  constructor(_value) {
@@ -777,7 +732,7 @@ var PublicKey = class _PublicKey {
777
732
  toMultibase32() {
778
733
  return "B" + base32Encode(this._value, "RFC4648");
779
734
  }
780
- truncate(length = void 0) {
735
+ truncate(length) {
781
736
  return truncateKey(this, length);
782
737
  }
783
738
  asBuffer() {
@@ -883,13 +838,19 @@ var PublicKey = class _PublicKey {
883
838
  };
884
839
  export {
885
840
  DXN,
841
+ DXN_ECHO_REGEXP,
842
+ FQ_ID_LENGTH,
886
843
  IdentityDid,
887
844
  LOCAL_SPACE_TAG,
845
+ OBJECT_ID_LENGTH,
888
846
  ObjectId,
889
847
  PUBLIC_KEY_LENGTH,
890
848
  PublicKey,
891
849
  QueueSubspaceTags,
892
850
  SECRET_KEY_LENGTH,
893
- SpaceId
851
+ SPACE_ID_LENGTH,
852
+ SimplePRNG,
853
+ SpaceId,
854
+ parseId
894
855
  };
895
856
  //# sourceMappingURL=index.mjs.map