@dxos/keys 0.8.1-staging.5be625a → 0.8.1-staging.97aedb1

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.
@@ -1,6 +1,14 @@
1
1
  import type { inspect, InspectOptionsStylized } from 'node:util';
2
2
  import { inspectCustom } from '@dxos/debug';
3
3
  import type { SpaceId } from './space-id';
4
+ /**
5
+ * Tags for ECHO DXNs that should resolve the object ID in the local space.
6
+ */
7
+ export declare const LOCAL_SPACE_TAG = "@";
8
+ export declare const QueueSubspaceTags: Readonly<{
9
+ DATA: "data";
10
+ TRACE: "trace";
11
+ }>;
4
12
  /**
5
13
  * DXN unambiguously names a resource like an ECHO object, schema definition, plugin, etc.
6
14
  * Each DXN starts with a dxn prefix, followed by a resource kind.
@@ -9,7 +17,6 @@ import type { SpaceId } from './space-id';
9
17
  * '@' in the place of the space id is used to denote that the DXN should be resolved in the local space.
10
18
  *
11
19
  * @example
12
- *
13
20
  * ```
14
21
  * dxn:echo:<space key>:<echo id>
15
22
  * dxn:echo:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6
@@ -48,11 +55,11 @@ export declare class DXN {
48
55
  /**
49
56
  * @example `dxn:type:example.com/type/Contact`
50
57
  */
51
- static fromTypename(type: string): DXN;
58
+ static fromTypename(typename: string): DXN;
52
59
  /**
53
60
  * @example `dxn:type:example.com/type/Contact:0.1.0`
54
61
  */
55
- static fromTypenameAndVersion(type: string, version: string): DXN;
62
+ static fromTypenameAndVersion(typename: string, version: string): DXN;
56
63
  /**
57
64
  * @example `dxn:echo:@:01J00J9B45YHYSGZQTQMSKMGJ6`
58
65
  */
@@ -60,18 +67,21 @@ export declare class DXN {
60
67
  constructor(kind: string, parts: string[]);
61
68
  get kind(): string;
62
69
  get parts(): string[];
63
- toTypename(): string;
70
+ get typename(): string;
64
71
  hasTypenameOf(typename: string): boolean;
72
+ isLocalObjectId(): boolean;
65
73
  asTypeDXN(): DXN.TypeDXN | undefined;
66
74
  asEchoDXN(): DXN.EchoDXN | undefined;
67
75
  asQueueDXN(): DXN.QueueDXN | undefined;
68
- isLocalObjectId(): boolean;
69
76
  toString(): DXN.String;
70
77
  /**
71
78
  * Used by Node.js to get textual representation of this object when it's printed with a `console.log` statement.
72
79
  */
73
80
  [inspectCustom](depth: number, options: InspectOptionsStylized, inspectFn: typeof inspect): string;
74
81
  }
82
+ /**
83
+ * API namespace.
84
+ */
75
85
  export declare namespace DXN {
76
86
  type TypeDXN = {
77
87
  type: string;
@@ -94,12 +104,4 @@ export declare namespace DXN {
94
104
  __DXNString: never;
95
105
  };
96
106
  }
97
- /**
98
- * Tags for ECHO DXNs that should resolve the object ID in the local space.
99
- */
100
- export declare const LOCAL_SPACE_TAG = "@";
101
- export declare const QueueSubspaceTags: Readonly<{
102
- DATA: "data";
103
- TRACE: "trace";
104
- }>;
105
107
  //# sourceMappingURL=dxn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dxn.d.ts","sourceRoot":"","sources":["../../../src/dxn.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,GAAG;;IACd;;OAEG;IACH,MAAM,CAAC,IAAI;QACT;;WAEG;;QAEH;;;WAGG;;QAEH;;;;;WAKG;;OAEF;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IAI5B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM;IAI9B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAkB9B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAQ3B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;IAIhC;;OAEG;IAEH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAI3D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM;gBAOvB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAsBzC,IAAI,IAAI,WAEP;IAED,IAAI,KAAK,aAER;IAED,UAAU;IAKV,aAAa,CAAC,QAAQ,EAAE,MAAM;IAI9B,SAAS,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS;IAYpC,SAAS,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS;IAYpC,UAAU,IAAI,GAAG,CAAC,QAAQ,GAAG,SAAS;IAkBtC,eAAe;IAIf,QAAQ,IAAI,GAAG,CAAC,MAAM;IAItB;;OAEG;IACH,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,OAAO,OAAO;CAS1F;AAED,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,KAAY,OAAO,GAAG;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAY,OAAO,GAAG;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,KAAY,QAAQ,GAAG;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,GAAG;QAAE,WAAW,EAAE,KAAK,CAAA;KAAE,CAAC;CACtD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,iBAAiB;;;EAG5B,CAAC"}
1
+ {"version":3,"file":"dxn.d.ts","sourceRoot":"","sources":["../../../src/dxn.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,eAAO,MAAM,iBAAiB;;;EAG5B,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,GAAG;;IACd;;OAEG;IACH,MAAM,CAAC,IAAI;QACT;;WAEG;;QAGH;;;WAGG;;QAKH;;;;;WAKG;;OAEF;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IAK5B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM;IAI9B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAkB9B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAQ7C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM;IAIpC;;OAEG;IAEH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAI/D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM;gBAOvB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAsBzC,IAAI,IAAI,WAEP;IAED,IAAI,KAAK,aAER;IAED,IAAI,QAAQ,WAGX;IAED,aAAa,CAAC,QAAQ,EAAE,MAAM;IAI9B,eAAe;IAIf,SAAS,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS;IAYpC,SAAS,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS;IAYpC,UAAU,IAAI,GAAG,CAAC,QAAQ,GAAG,SAAS;IAkBtC,QAAQ,IAAI,GAAG,CAAC,MAAM;IAItB;;OAEG;IACH,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,OAAO,OAAO;CAS1F;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,KAAY,OAAO,GAAG;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAY,OAAO,GAAG;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,KAAY,QAAQ,GAAG;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,GAAG;QAAE,WAAW,EAAE,KAAK,CAAA;KAAE,CAAC;CAItD"}
@@ -1 +1 @@
1
- {"version":3,"file":"space-id.d.ts","sourceRoot":"","sources":["../../../src/space-id.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,OAAO;;oBAEF,UAAU,KAAG,OAAO;oBAMpB,OAAO,KAAG,UAAU;qBAKnB,MAAM,KAAG,KAAK,IAAI,OAAO;kBAG9B,OAAO;EAGnB,CAAC"}
1
+ {"version":3,"file":"space-id.d.ts","sourceRoot":"","sources":["../../../src/space-id.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AAEH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,OAAO;;oBAEF,UAAU,KAAG,OAAO;oBAMpB,OAAO,KAAG,UAAU;qBAKnB,MAAM,KAAG,KAAK,IAAI,OAAO;kBAG9B,OAAO;EAGnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/keys",
3
- "version": "0.8.1-staging.5be625a",
3
+ "version": "0.8.1-staging.97aedb1",
4
4
  "description": "Key utils and definitions.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -27,9 +27,9 @@
27
27
  "src"
28
28
  ],
29
29
  "dependencies": {
30
- "@dxos/debug": "0.8.1-staging.5be625a",
31
- "@dxos/node-std": "0.8.1-staging.5be625a",
32
- "@dxos/invariant": "0.8.1-staging.5be625a"
30
+ "@dxos/debug": "0.8.1-staging.97aedb1",
31
+ "@dxos/invariant": "0.8.1-staging.97aedb1",
32
+ "@dxos/node-std": "0.8.1-staging.97aedb1"
33
33
  },
34
34
  "devDependencies": {
35
35
  "base32-decode": "^1.0.0",
package/src/dxn.ts CHANGED
@@ -9,6 +9,17 @@ import { invariant } from '@dxos/invariant';
9
9
 
10
10
  import type { SpaceId } from './space-id';
11
11
 
12
+ /**
13
+ * Tags for ECHO DXNs that should resolve the object ID in the local space.
14
+ */
15
+ export const LOCAL_SPACE_TAG = '@';
16
+
17
+ // TODO(burdon): Namespace for.
18
+ export const QueueSubspaceTags = Object.freeze({
19
+ DATA: 'data',
20
+ TRACE: 'trace',
21
+ });
22
+
12
23
  /**
13
24
  * DXN unambiguously names a resource like an ECHO object, schema definition, plugin, etc.
14
25
  * Each DXN starts with a dxn prefix, followed by a resource kind.
@@ -17,7 +28,6 @@ import type { SpaceId } from './space-id';
17
28
  * '@' in the place of the space id is used to denote that the DXN should be resolved in the local space.
18
29
  *
19
30
  * @example
20
- *
21
31
  * ```
22
32
  * dxn:echo:<space key>:<echo id>
23
33
  * dxn:echo:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6
@@ -35,11 +45,15 @@ export class DXN {
35
45
  * dxn:type:<type name>[:<version>]
36
46
  */
37
47
  TYPE: 'type',
48
+
38
49
  /**
39
50
  * dxn:echo:<space id>:<echo id>
40
51
  * dxn:echo:@:<echo id>
41
52
  */
53
+ // TODO(burdon): Rename to OBJECT?
54
+ // TODO(burdon): Add separate Kind for space.
42
55
  ECHO: 'echo',
56
+
43
57
  /**
44
58
  * The subspace tag enables us to partition queues by usage within the context of a space.
45
59
  * dxn:queue:<subspace_tag>:<space_id>:<queue_id>[:object_id]
@@ -53,6 +67,7 @@ export class DXN {
53
67
  return a.kind === b.kind && a.parts.length === b.parts.length && a.parts.every((part, i) => part === b.parts[i]);
54
68
  }
55
69
 
70
+ // TODO(burdon): Rename isValid.
56
71
  static isDXNString(dxn: string) {
57
72
  return dxn.startsWith('dxn:');
58
73
  }
@@ -75,7 +90,7 @@ export class DXN {
75
90
  return new DXN(kind, parts);
76
91
  }
77
92
 
78
- static tryParse(dxn: string) {
93
+ static tryParse(dxn: string): DXN | undefined {
79
94
  try {
80
95
  return DXN.parse(dxn);
81
96
  } catch (error) {
@@ -86,16 +101,16 @@ export class DXN {
86
101
  /**
87
102
  * @example `dxn:type:example.com/type/Contact`
88
103
  */
89
- static fromTypename(type: string) {
90
- return new DXN(DXN.kind.TYPE, [type]);
104
+ static fromTypename(typename: string) {
105
+ return new DXN(DXN.kind.TYPE, [typename]);
91
106
  }
92
107
 
93
108
  /**
94
109
  * @example `dxn:type:example.com/type/Contact:0.1.0`
95
110
  */
96
111
  // TODO(dmaretskyi): Consider using @ as the version separator.
97
- static fromTypenameAndVersion(type: string, version: string) {
98
- return new DXN(DXN.kind.TYPE, [type, version]);
112
+ static fromTypenameAndVersion(typename: string, version: string) {
113
+ return new DXN(DXN.kind.TYPE, [typename, version]);
99
114
  }
100
115
 
101
116
  /**
@@ -138,7 +153,7 @@ export class DXN {
138
153
  return this.#parts;
139
154
  }
140
155
 
141
- toTypename() {
156
+ get typename() {
142
157
  invariant(this.#kind === DXN.kind.TYPE);
143
158
  return this.#parts[0];
144
159
  }
@@ -147,6 +162,10 @@ export class DXN {
147
162
  return this.#kind === DXN.kind.TYPE && this.#parts.length === 1 && this.#parts[0] === typename;
148
163
  }
149
164
 
165
+ isLocalObjectId() {
166
+ return this.#kind === DXN.kind.ECHO && this.#parts[0] === LOCAL_SPACE_TAG && this.#parts.length === 2;
167
+ }
168
+
150
169
  asTypeDXN(): DXN.TypeDXN | undefined {
151
170
  if (this.kind !== DXN.kind.TYPE) {
152
171
  return undefined;
@@ -189,10 +208,6 @@ export class DXN {
189
208
  };
190
209
  }
191
210
 
192
- isLocalObjectId() {
193
- return this.#kind === DXN.kind.ECHO && this.#parts[0] === LOCAL_SPACE_TAG && this.#parts.length === 2;
194
- }
195
-
196
211
  toString(): DXN.String {
197
212
  return `dxn:${this.#kind}:${this.#parts.join(':')}` as DXN.String;
198
213
  }
@@ -211,6 +226,9 @@ export class DXN {
211
226
  }
212
227
  }
213
228
 
229
+ /**
230
+ * API namespace.
231
+ */
214
232
  export declare namespace DXN {
215
233
  export type TypeDXN = {
216
234
  type: string;
@@ -219,6 +237,7 @@ export declare namespace DXN {
219
237
 
220
238
  export type EchoDXN = {
221
239
  spaceId?: SpaceId;
240
+ // TODO(burdon): Rename objectId.
222
241
  echoId: string; // TODO(dmaretskyi): ObjectId.
223
242
  };
224
243
 
@@ -233,14 +252,7 @@ export declare namespace DXN {
233
252
  * DXN represented as a javascript string.
234
253
  */
235
254
  export type String = string & { __DXNString: never };
255
+ // TODO(burdon): Make brand.
256
+ // export const String = S.String.pipe(S.brand('DXN'));
257
+ // export type String = S.To(typoeof String);
236
258
  }
237
-
238
- /**
239
- * Tags for ECHO DXNs that should resolve the object ID in the local space.
240
- */
241
- export const LOCAL_SPACE_TAG = '@';
242
-
243
- export const QueueSubspaceTags = Object.freeze({
244
- DATA: 'data',
245
- TRACE: 'trace',
246
- });
package/src/space-id.ts CHANGED
@@ -14,6 +14,7 @@ import { randomBytes } from './random-bytes';
14
14
  * Space keys are generated by creating a keypair, and then taking the first 20 bytes of the SHA-256 hash of the public key and encoding them to multibase RFC4648 base-32 format (prefixed with B, see Multibase Table).
15
15
  * @example BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE
16
16
  */
17
+ // TODO(burdon): Use effect brand.
17
18
  export type SpaceId = string & { __SpaceId: true };
18
19
 
19
20
  export const SpaceId = Object.freeze({