@dxos/keys 0.8.4-main.c1de068 → 0.8.4-main.f5c0578
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/lib/browser/index.mjs +111 -143
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +111 -143
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/dxn.d.ts +14 -5
- package/dist/types/src/dxn.d.ts.map +1 -1
- package/dist/types/src/public-key.d.ts +2 -2
- package/dist/types/src/public-key.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -10
- package/src/dxn.ts +37 -15
- package/src/object-id.ts +2 -2
- package/src/public-key.ts +4 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/keys",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.f5c0578",
|
|
4
4
|
"description": "Key utils and definitions.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -10,12 +10,10 @@
|
|
|
10
10
|
"type": "module",
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
13
|
+
"source": "./src/index.ts",
|
|
14
|
+
"types": "./dist/types/src/index.d.ts",
|
|
13
15
|
"browser": "./dist/lib/browser/index.mjs",
|
|
14
|
-
"node":
|
|
15
|
-
"require": "./dist/lib/node/index.cjs",
|
|
16
|
-
"default": "./dist/lib/node-esm/index.mjs"
|
|
17
|
-
},
|
|
18
|
-
"types": "./dist/types/src/index.d.ts"
|
|
16
|
+
"node": "./dist/lib/node-esm/index.mjs"
|
|
19
17
|
}
|
|
20
18
|
},
|
|
21
19
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -27,11 +25,11 @@
|
|
|
27
25
|
"src"
|
|
28
26
|
],
|
|
29
27
|
"dependencies": {
|
|
30
|
-
"effect": "3.17.
|
|
28
|
+
"effect": "3.17.7",
|
|
31
29
|
"ulidx": "^2.3.0",
|
|
32
|
-
"@dxos/debug": "0.8.4-main.
|
|
33
|
-
"@dxos/invariant": "0.8.4-main.
|
|
34
|
-
"@dxos/node-std": "0.8.4-main.
|
|
30
|
+
"@dxos/debug": "0.8.4-main.f5c0578",
|
|
31
|
+
"@dxos/invariant": "0.8.4-main.f5c0578",
|
|
32
|
+
"@dxos/node-std": "0.8.4-main.f5c0578"
|
|
35
33
|
},
|
|
36
34
|
"devDependencies": {
|
|
37
35
|
"base32-decode": "^1.0.0",
|
package/src/dxn.ts
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import type { InspectOptionsStylized, inspect } from 'node:util';
|
|
6
|
+
|
|
5
7
|
import { Schema } from 'effect';
|
|
6
|
-
import type { inspect, InspectOptionsStylized } from 'node:util';
|
|
7
8
|
|
|
8
|
-
import {
|
|
9
|
+
import { type DevtoolsFormatter, devtoolsFormatter, inspectCustom } from '@dxos/debug';
|
|
9
10
|
import { assertArgument, invariant } from '@dxos/invariant';
|
|
10
11
|
|
|
11
12
|
import { ObjectId } from './object-id';
|
|
@@ -18,6 +19,8 @@ import { SpaceId } from './space-id';
|
|
|
18
19
|
// TODO(dmaretskyi): "@" is a separator character in the URI spec.
|
|
19
20
|
export const LOCAL_SPACE_TAG = '@';
|
|
20
21
|
|
|
22
|
+
export const DXN_ECHO_REGEXP = /@(dxn:[a-zA-Z0-p:@]+)/;
|
|
23
|
+
|
|
21
24
|
// TODO(burdon): Namespace for.
|
|
22
25
|
export const QueueSubspaceTags = Object.freeze({
|
|
23
26
|
DATA: 'data',
|
|
@@ -43,6 +46,7 @@ export type QueueSubspaceTag = (typeof QueueSubspaceTags)[keyof typeof QueueSubs
|
|
|
43
46
|
* ```
|
|
44
47
|
*/
|
|
45
48
|
export class DXN {
|
|
49
|
+
// TODO(burdon): Rename to DXN (i.e., DXN.DXN).
|
|
46
50
|
// TODO(dmaretskyi): Should this be a transformation into the DXN type?
|
|
47
51
|
static Schema = Schema.NonEmptyString.pipe(
|
|
48
52
|
Schema.pattern(/^dxn:([^:]+):(?:[^:]+:?)+[^:]$/),
|
|
@@ -64,16 +68,16 @@ export class DXN {
|
|
|
64
68
|
*/
|
|
65
69
|
static kind = Object.freeze({
|
|
66
70
|
/**
|
|
67
|
-
* dxn:type:<
|
|
71
|
+
* dxn:type:<type_name>[:<version>]
|
|
68
72
|
*/
|
|
69
73
|
TYPE: 'type',
|
|
70
74
|
|
|
71
75
|
/**
|
|
72
|
-
* dxn:echo:<
|
|
73
|
-
* dxn:echo:@:<
|
|
76
|
+
* dxn:echo:<space_id>:<echo_id>
|
|
77
|
+
* dxn:echo:@:<echo_id>
|
|
74
78
|
*/
|
|
75
|
-
// TODO(burdon): Rename to OBJECT? (BREAKING CHANGE).
|
|
76
|
-
// TODO(burdon): Add separate Kind for space
|
|
79
|
+
// TODO(burdon): Rename to OBJECT? (BREAKING CHANGE to update "echo").
|
|
80
|
+
// TODO(burdon): Add separate Kind for space?
|
|
77
81
|
ECHO: 'echo',
|
|
78
82
|
|
|
79
83
|
/**
|
|
@@ -119,7 +123,7 @@ export class DXN {
|
|
|
119
123
|
static tryParse(dxn: string): DXN | undefined {
|
|
120
124
|
try {
|
|
121
125
|
return DXN.parse(dxn);
|
|
122
|
-
} catch
|
|
126
|
+
} catch {
|
|
123
127
|
return undefined;
|
|
124
128
|
}
|
|
125
129
|
}
|
|
@@ -139,6 +143,15 @@ export class DXN {
|
|
|
139
143
|
return new DXN(DXN.kind.TYPE, [typename, version]);
|
|
140
144
|
}
|
|
141
145
|
|
|
146
|
+
/**
|
|
147
|
+
* @example `dxn:echo:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6`
|
|
148
|
+
*/
|
|
149
|
+
static fromSpaceAndObjectId(spaceId: SpaceId, objectId: ObjectId): DXN {
|
|
150
|
+
assertArgument(SpaceId.isValid(spaceId), `Invalid space ID: ${spaceId}`);
|
|
151
|
+
assertArgument(ObjectId.isValid(objectId), `Invalid object ID: ${objectId}`);
|
|
152
|
+
return new DXN(DXN.kind.ECHO, [spaceId, objectId]);
|
|
153
|
+
}
|
|
154
|
+
|
|
142
155
|
/**
|
|
143
156
|
* @example `dxn:echo:@:01J00J9B45YHYSGZQTQMSKMGJ6`
|
|
144
157
|
*/
|
|
@@ -148,9 +161,9 @@ export class DXN {
|
|
|
148
161
|
}
|
|
149
162
|
|
|
150
163
|
static fromQueue(subspaceTag: QueueSubspaceTag, spaceId: SpaceId, queueId: ObjectId, objectId?: ObjectId) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
164
|
+
assertArgument(SpaceId.isValid(spaceId), `Invalid space ID: ${spaceId}`);
|
|
165
|
+
assertArgument(ObjectId.isValid(queueId), `Invalid queue ID: ${queueId}`);
|
|
166
|
+
assertArgument(!objectId || ObjectId.isValid(objectId), `Invalid object ID: ${objectId}`);
|
|
154
167
|
|
|
155
168
|
return new DXN(DXN.kind.QUEUE, [subspaceTag, spaceId, queueId, ...(objectId ? [objectId] : [])]);
|
|
156
169
|
}
|
|
@@ -159,8 +172,11 @@ export class DXN {
|
|
|
159
172
|
#parts: string[];
|
|
160
173
|
|
|
161
174
|
constructor(kind: string, parts: string[]) {
|
|
162
|
-
|
|
163
|
-
|
|
175
|
+
assertArgument(parts.length > 0, `Invalid DXN: ${parts}`);
|
|
176
|
+
assertArgument(
|
|
177
|
+
parts.every((part) => typeof part === 'string' && part.length > 0 && part.indexOf(':') === -1),
|
|
178
|
+
`Invalid DXN: ${parts}`,
|
|
179
|
+
);
|
|
164
180
|
|
|
165
181
|
// Per-type validation.
|
|
166
182
|
switch (kind) {
|
|
@@ -269,6 +285,13 @@ export class DXN {
|
|
|
269
285
|
objectId: objectId as string | undefined,
|
|
270
286
|
};
|
|
271
287
|
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Produces a new DXN with the given parts appended.
|
|
291
|
+
*/
|
|
292
|
+
extend(parts: string[]): DXN {
|
|
293
|
+
return new DXN(this.#kind, [...this.#parts, ...parts]);
|
|
294
|
+
}
|
|
272
295
|
}
|
|
273
296
|
|
|
274
297
|
// TODO(dmaretskyi): Fluent API:
|
|
@@ -305,8 +328,7 @@ export declare namespace DXN {
|
|
|
305
328
|
|
|
306
329
|
export type EchoDXN = {
|
|
307
330
|
spaceId?: SpaceId;
|
|
308
|
-
// TODO(
|
|
309
|
-
echoId: string; // TODO(dmaretskyi): ObjectId.
|
|
331
|
+
echoId: string; // TODO(dmaretskyi): Rename to `objectId` and use `ObjectId` for the type.
|
|
310
332
|
};
|
|
311
333
|
|
|
312
334
|
export type QueueDXN = {
|
package/src/object-id.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { ulid } from 'ulidx';
|
|
|
9
9
|
// export const ObjectIdBrand: unique symbol = Symbol('@dxos/echo/ObjectId');
|
|
10
10
|
// export const ObjectIdSchema = Schema.ULID.pipe(S.brand(ObjectIdBrand));
|
|
11
11
|
const ObjectIdSchema = Schema.String.pipe(Schema.pattern(/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i)).annotations({
|
|
12
|
-
description: '
|
|
12
|
+
description: 'A Universally Unique Lexicographically Sortable Identifier',
|
|
13
13
|
pattern: '^[0-7][0-9A-HJKMNP-TV-Z]{25}$',
|
|
14
14
|
});
|
|
15
15
|
|
|
@@ -31,7 +31,7 @@ export const ObjectId: ObjectIdClass = class extends ObjectIdSchema {
|
|
|
31
31
|
try {
|
|
32
32
|
Schema.decodeSync(ObjectId)(id);
|
|
33
33
|
return true;
|
|
34
|
-
} catch
|
|
34
|
+
} catch {
|
|
35
35
|
return false;
|
|
36
36
|
}
|
|
37
37
|
}
|
package/src/public-key.ts
CHANGED
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
// Copyright 2020 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { type InspectOptionsStylized, type inspect } from 'node:util';
|
|
6
|
+
|
|
5
7
|
import base32Decode from 'base32-decode';
|
|
6
8
|
import base32Encode from 'base32-encode';
|
|
7
|
-
import { type inspect, type InspectOptionsStylized } from 'node:util';
|
|
8
9
|
|
|
9
10
|
import {
|
|
10
|
-
devtoolsFormatter,
|
|
11
11
|
type DevtoolsFormatter,
|
|
12
|
-
equalsSymbol,
|
|
13
12
|
type Equatable,
|
|
13
|
+
devtoolsFormatter,
|
|
14
|
+
equalsSymbol,
|
|
14
15
|
inspectCustom,
|
|
15
16
|
truncateKey,
|
|
16
17
|
} from '@dxos/debug';
|