@dxos/keyring 0.6.12 → 0.6.13-main.548ca8d

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 +1 @@
1
- {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/keyring.ts":{"bytes":16965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/testing.ts":{"bytes":5257,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/index.ts":{"bytes":584,"imports":[{"path":"packages/core/halo/keyring/src/keyring.ts","kind":"import-statement","original":"./keyring"},{"path":"packages/core/halo/keyring/src/testing.ts","kind":"import-statement","original":"./testing"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/halo/keyring/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10611},"packages/core/halo/keyring/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}],"exports":["Keyring","generateJWKKeyPair","parseJWKKeyPair"],"entryPoint":"packages/core/halo/keyring/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/halo/keyring/src/keyring.ts":{"bytesInOutput":4920},"packages/core/halo/keyring/src/index.ts":{"bytesInOutput":0},"packages/core/halo/keyring/src/testing.ts":{"bytesInOutput":1103}},"bytes":6360}}}
1
+ {"inputs":{"inject-globals:@inject-globals":{"bytes":324,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/keyring.ts":{"bytes":16965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/testing.ts":{"bytes":5257,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/index.ts":{"bytes":584,"imports":[{"path":"packages/core/halo/keyring/src/keyring.ts","kind":"import-statement","original":"./keyring"},{"path":"packages/core/halo/keyring/src/testing.ts","kind":"import-statement","original":"./testing"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/halo/keyring/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10611},"packages/core/halo/keyring/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}],"exports":["Keyring","generateJWKKeyPair","parseJWKKeyPair"],"entryPoint":"packages/core/halo/keyring/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/halo/keyring/src/keyring.ts":{"bytesInOutput":4920},"packages/core/halo/keyring/src/index.ts":{"bytesInOutput":0},"packages/core/halo/keyring/src/testing.ts":{"bytesInOutput":1103}},"bytes":6360}}}
@@ -0,0 +1,194 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // packages/core/halo/keyring/src/keyring.ts
4
+ import { Event, synchronized } from "@dxos/async";
5
+ import { subtleCrypto } from "@dxos/crypto";
6
+ import { todo } from "@dxos/debug";
7
+ import { invariant } from "@dxos/invariant";
8
+ import { PublicKey } from "@dxos/keys";
9
+ import { schema } from "@dxos/protocols/proto";
10
+ import { createStorage, StorageType } from "@dxos/random-access-storage";
11
+ import { ComplexMap, arrayToBuffer } from "@dxos/util";
12
+ function _ts_decorate(decorators, target, key, desc) {
13
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17
+ }
18
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/halo/keyring/src/keyring.ts";
19
+ var KeyRecord = schema.getCodecForType("dxos.halo.keyring.KeyRecord");
20
+ var Keyring = class {
21
+ constructor(_storage = createStorage({
22
+ type: StorageType.RAM
23
+ }).createDirectory("keyring")) {
24
+ this._storage = _storage;
25
+ this._keyCache = new ComplexMap(PublicKey.hash);
26
+ this.keysUpdate = new Event();
27
+ invariant(subtleCrypto, "SubtleCrypto not available in this environment.", {
28
+ F: __dxlog_file,
29
+ L: 30,
30
+ S: this,
31
+ A: [
32
+ "subtleCrypto",
33
+ "'SubtleCrypto not available in this environment.'"
34
+ ]
35
+ });
36
+ }
37
+ async sign(key, message) {
38
+ const keyPair = await this._getKey(key);
39
+ return new Uint8Array(await subtleCrypto.sign({
40
+ name: "ECDSA",
41
+ hash: "SHA-256"
42
+ }, keyPair.privateKey, message));
43
+ }
44
+ async createKey() {
45
+ const keyPair = await subtleCrypto.generateKey({
46
+ name: "ECDSA",
47
+ namedCurve: "P-256"
48
+ }, true, [
49
+ "sign",
50
+ "verify"
51
+ ]);
52
+ await this._setKey(keyPair);
53
+ return keyPairToPublicKey(keyPair);
54
+ }
55
+ async _getKey(key) {
56
+ if (!this._keyCache.has(key)) {
57
+ const file = this._storage.getOrCreateFile(key.toHex());
58
+ const { size } = await file.stat();
59
+ if (size === 0) {
60
+ throw new Error(`Key not found: ${key.toHex()}`);
61
+ }
62
+ const recordBytes = await file.read(0, size);
63
+ await file.close();
64
+ const record = KeyRecord.decode(recordBytes);
65
+ const publicKey = PublicKey.from(record.publicKey);
66
+ invariant(key.equals(publicKey), "Corrupted keyring: Key mismatch", {
67
+ F: __dxlog_file,
68
+ L: 77,
69
+ S: this,
70
+ A: [
71
+ "key.equals(publicKey)",
72
+ "'Corrupted keyring: Key mismatch'"
73
+ ]
74
+ });
75
+ invariant(record.privateKey, "Corrupted keyring: Missing private key", {
76
+ F: __dxlog_file,
77
+ L: 78,
78
+ S: this,
79
+ A: [
80
+ "record.privateKey",
81
+ "'Corrupted keyring: Missing private key'"
82
+ ]
83
+ });
84
+ const keyPair = {
85
+ publicKey: await subtleCrypto.importKey("raw", record.publicKey, {
86
+ name: "ECDSA",
87
+ namedCurve: "P-256"
88
+ }, true, [
89
+ "verify"
90
+ ]),
91
+ privateKey: await subtleCrypto.importKey("pkcs8", record.privateKey, {
92
+ name: "ECDSA",
93
+ namedCurve: "P-256"
94
+ }, true, [
95
+ "sign"
96
+ ])
97
+ };
98
+ this._keyCache.set(publicKey, keyPair);
99
+ }
100
+ return this._keyCache.get(key);
101
+ }
102
+ async _setKey(keyPair) {
103
+ const publicKey = await keyPairToPublicKey(keyPair);
104
+ this._keyCache.set(publicKey, keyPair);
105
+ const record = {
106
+ publicKey: publicKey.asUint8Array(),
107
+ privateKey: new Uint8Array(await subtleCrypto.exportKey("pkcs8", keyPair.privateKey))
108
+ };
109
+ const file = this._storage.getOrCreateFile(publicKey.toHex());
110
+ await file.write(0, arrayToBuffer(KeyRecord.encode(record)));
111
+ await file.close();
112
+ await file.flush?.();
113
+ this.keysUpdate.emit();
114
+ }
115
+ // TODO(burdon): ???
116
+ deleteKey(key) {
117
+ return todo("We need a method to delete a file.");
118
+ }
119
+ async list() {
120
+ const keys = [];
121
+ for (const path of await this._storage.list()) {
122
+ const fileName = path.split("/").pop();
123
+ invariant(fileName, "Invalid file name", {
124
+ F: __dxlog_file,
125
+ L: 134,
126
+ S: this,
127
+ A: [
128
+ "fileName",
129
+ "'Invalid file name'"
130
+ ]
131
+ });
132
+ keys.push({
133
+ publicKey: PublicKey.fromHex(fileName).asUint8Array()
134
+ });
135
+ }
136
+ return keys;
137
+ }
138
+ async importKeyPair(keyPair) {
139
+ await this._setKey(keyPair);
140
+ return keyPairToPublicKey(keyPair);
141
+ }
142
+ };
143
+ _ts_decorate([
144
+ synchronized
145
+ ], Keyring.prototype, "_getKey", null);
146
+ _ts_decorate([
147
+ synchronized
148
+ ], Keyring.prototype, "_setKey", null);
149
+ var keyPairToPublicKey = async (keyPair) => {
150
+ return PublicKey.from(new Uint8Array(await subtleCrypto.exportKey("raw", keyPair.publicKey)));
151
+ };
152
+
153
+ // packages/core/halo/keyring/src/testing.ts
154
+ import { subtleCrypto as subtleCrypto2 } from "@dxos/crypto";
155
+ var generateJWKKeyPair = async () => {
156
+ const keyPair = await subtleCrypto2.generateKey({
157
+ name: "ECDSA",
158
+ namedCurve: "P-256"
159
+ }, true, [
160
+ "sign",
161
+ "verify"
162
+ ]);
163
+ const privateKeyExported = await subtleCrypto2.exportKey("jwk", keyPair.privateKey);
164
+ const publicKeyExported = await subtleCrypto2.exportKey("jwk", keyPair.publicKey);
165
+ const publicKeyBuffer = new Uint8Array(await subtleCrypto2.exportKey("raw", keyPair.publicKey));
166
+ const publicKeyHex = Array.from(publicKeyBuffer).map((byte) => byte.toString(16).padStart(2, "0")).join("");
167
+ return {
168
+ privateKey: privateKeyExported,
169
+ publicKey: publicKeyExported,
170
+ publicKeyHex
171
+ };
172
+ };
173
+ var parseJWKKeyPair = async (privateKey, publicKey) => {
174
+ return {
175
+ privateKey: await subtleCrypto2.importKey("jwk", privateKey, {
176
+ name: "ECDSA",
177
+ namedCurve: "P-256"
178
+ }, true, [
179
+ "sign"
180
+ ]),
181
+ publicKey: await subtleCrypto2.importKey("jwk", publicKey, {
182
+ name: "ECDSA",
183
+ namedCurve: "P-256"
184
+ }, true, [
185
+ "verify"
186
+ ])
187
+ };
188
+ };
189
+ export {
190
+ Keyring,
191
+ generateJWKKeyPair,
192
+ parseJWKKeyPair
193
+ };
194
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/keyring.ts", "../../../src/testing.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Event, synchronized } from '@dxos/async';\nimport { type ProtoCodec } from '@dxos/codec-protobuf';\nimport { subtleCrypto, type Signer } from '@dxos/crypto';\nimport { todo } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { schema } from '@dxos/protocols/proto';\nimport { type KeyRecord } from '@dxos/protocols/proto/dxos/halo/keyring';\nimport { createStorage, type Directory, StorageType } from '@dxos/random-access-storage';\nimport { ComplexMap, arrayToBuffer } from '@dxos/util';\n\nconst KeyRecord: ProtoCodec<KeyRecord> = schema.getCodecForType('dxos.halo.keyring.KeyRecord');\n\n/**\n * Manages keys.\n */\nexport class Keyring implements Signer {\n private readonly _keyCache = new ComplexMap<PublicKey, CryptoKeyPair>(PublicKey.hash);\n readonly keysUpdate = new Event();\n\n constructor(\n private readonly _storage: Directory = createStorage({\n type: StorageType.RAM,\n }).createDirectory('keyring'),\n ) {\n invariant(subtleCrypto, 'SubtleCrypto not available in this environment.');\n }\n\n async sign(key: PublicKey, message: Uint8Array): Promise<Uint8Array> {\n const keyPair = await this._getKey(key);\n\n return new Uint8Array(\n await subtleCrypto.sign(\n {\n name: 'ECDSA',\n hash: 'SHA-256',\n },\n keyPair.privateKey,\n message,\n ),\n );\n }\n\n async createKey(): Promise<PublicKey> {\n const keyPair = await subtleCrypto.generateKey(\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n true,\n ['sign', 'verify'],\n );\n\n await this._setKey(keyPair);\n\n return keyPairToPublicKey(keyPair);\n }\n\n @synchronized\n private async _getKey(key: PublicKey): Promise<CryptoKeyPair> {\n if (!this._keyCache.has(key)) {\n const file = this._storage.getOrCreateFile(key.toHex());\n const { size } = await file.stat();\n if (size === 0) {\n throw new Error(`Key not found: ${key.toHex()}`);\n }\n\n const recordBytes = await file.read(0, size);\n await file.close();\n\n const record = KeyRecord.decode(recordBytes);\n const publicKey = PublicKey.from(record.publicKey);\n invariant(key.equals(publicKey), 'Corrupted keyring: Key mismatch');\n invariant(record.privateKey, 'Corrupted keyring: Missing private key');\n const keyPair: CryptoKeyPair = {\n publicKey: await subtleCrypto.importKey(\n 'raw',\n record.publicKey,\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n true,\n ['verify'],\n ),\n privateKey: await subtleCrypto.importKey(\n 'pkcs8',\n record.privateKey,\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n true,\n ['sign'],\n ),\n };\n\n this._keyCache.set(publicKey, keyPair);\n }\n\n return this._keyCache.get(key)!; // TODO(burdon): Fail if null?\n }\n\n @synchronized\n private async _setKey(keyPair: CryptoKeyPair) {\n const publicKey = await keyPairToPublicKey(keyPair);\n this._keyCache.set(publicKey, keyPair);\n\n const record: KeyRecord = {\n publicKey: publicKey.asUint8Array(),\n privateKey: new Uint8Array(await subtleCrypto.exportKey('pkcs8', keyPair.privateKey)),\n };\n\n const file = this._storage.getOrCreateFile(publicKey.toHex());\n await file.write(0, arrayToBuffer(KeyRecord.encode(record)));\n await file.close();\n await file.flush?.();\n this.keysUpdate.emit();\n }\n\n // TODO(burdon): ???\n deleteKey(key: PublicKey): Promise<void> {\n return todo('We need a method to delete a file.');\n }\n\n async list(): Promise<KeyRecord[]> {\n const keys: KeyRecord[] = [];\n for (const path of await this._storage.list()) {\n const fileName = path.split('/').pop(); // get last portion of the path\n invariant(fileName, 'Invalid file name');\n keys.push({ publicKey: PublicKey.fromHex(fileName).asUint8Array() });\n }\n return keys;\n }\n\n async importKeyPair(keyPair: CryptoKeyPair): Promise<PublicKey> {\n await this._setKey(keyPair);\n return keyPairToPublicKey(keyPair);\n }\n}\n\nconst keyPairToPublicKey = async (keyPair: CryptoKeyPair): Promise<PublicKey> => {\n return PublicKey.from(new Uint8Array(await subtleCrypto.exportKey('raw', keyPair.publicKey)));\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { subtleCrypto } from '@dxos/crypto';\n\nexport type TestKeyPair = {\n privateKey: JsonWebKey;\n publicKey: JsonWebKey;\n publicKeyHex: string;\n};\n\n/**\n * Generate a key pair which for testing purposes.\n * @returns {Promise<TestKeyPair>}\n */\nexport const generateJWKKeyPair = async (): Promise<TestKeyPair> => {\n const keyPair = await subtleCrypto.generateKey(\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n true,\n ['sign', 'verify'],\n );\n\n const privateKeyExported = await subtleCrypto.exportKey('jwk', keyPair.privateKey);\n const publicKeyExported = await subtleCrypto.exportKey('jwk', keyPair.publicKey);\n\n // Convert the public key to hex format\n const publicKeyBuffer = new Uint8Array(await subtleCrypto.exportKey('raw', keyPair.publicKey));\n const publicKeyHex = Array.from(publicKeyBuffer)\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n\n return {\n privateKey: privateKeyExported,\n publicKey: publicKeyExported,\n publicKeyHex,\n };\n};\n\n/**\n * Parse a key pair from JWK format.\n */\nexport const parseJWKKeyPair = async (privateKey: JsonWebKey, publicKey: JsonWebKey): Promise<CryptoKeyPair> => {\n return {\n privateKey: await subtleCrypto.importKey('jwk', privateKey, { name: 'ECDSA', namedCurve: 'P-256' }, true, ['sign']),\n publicKey: await subtleCrypto.importKey('jwk', publicKey, { name: 'ECDSA', namedCurve: 'P-256' }, true, ['verify']),\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Event", "synchronized", "subtleCrypto", "todo", "invariant", "PublicKey", "schema", "createStorage", "StorageType", "ComplexMap", "arrayToBuffer", "KeyRecord", "getCodecForType", "Keyring", "constructor", "_storage", "type", "RAM", "createDirectory", "_keyCache", "hash", "keysUpdate", "sign", "key", "message", "keyPair", "_getKey", "Uint8Array", "name", "privateKey", "createKey", "generateKey", "namedCurve", "_setKey", "keyPairToPublicKey", "has", "file", "getOrCreateFile", "toHex", "size", "stat", "Error", "recordBytes", "read", "close", "record", "decode", "publicKey", "from", "equals", "importKey", "set", "get", "asUint8Array", "exportKey", "write", "encode", "flush", "emit", "deleteKey", "list", "keys", "path", "fileName", "split", "pop", "push", "fromHex", "importKeyPair", "subtleCrypto", "generateJWKKeyPair", "keyPair", "subtleCrypto", "generateKey", "name", "namedCurve", "privateKeyExported", "exportKey", "privateKey", "publicKeyExported", "publicKey", "publicKeyBuffer", "Uint8Array", "publicKeyHex", "Array", "from", "map", "byte", "toString", "padStart", "join", "parseJWKKeyPair", "importKey"]
7
+ }
@@ -0,0 +1 @@
1
+ {"inputs":{"packages/core/halo/keyring/src/keyring.ts":{"bytes":16965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/testing.ts":{"bytes":5257,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true}],"format":"esm"},"packages/core/halo/keyring/src/index.ts":{"bytes":584,"imports":[{"path":"packages/core/halo/keyring/src/keyring.ts","kind":"import-statement","original":"./keyring"},{"path":"packages/core/halo/keyring/src/testing.ts","kind":"import-statement","original":"./testing"}],"format":"esm"}},"outputs":{"packages/core/halo/keyring/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10604},"packages/core/halo/keyring/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}],"exports":["Keyring","generateJWKKeyPair","parseJWKKeyPair"],"entryPoint":"packages/core/halo/keyring/src/index.ts","inputs":{"packages/core/halo/keyring/src/keyring.ts":{"bytesInOutput":4920},"packages/core/halo/keyring/src/index.ts":{"bytesInOutput":0},"packages/core/halo/keyring/src/testing.ts":{"bytesInOutput":1103}},"bytes":6305}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/keyring",
3
- "version": "0.6.12",
3
+ "version": "0.6.13-main.548ca8d",
4
4
  "description": "Halo Keyring.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,7 +10,8 @@
10
10
  ".": {
11
11
  "browser": "./dist/lib/browser/index.mjs",
12
12
  "node": {
13
- "default": "./dist/lib/node/index.cjs"
13
+ "require": "./dist/lib/node/index.cjs",
14
+ "default": "./dist/lib/node-esm/index.mjs"
14
15
  },
15
16
  "types": "./dist/types/src/index.d.ts"
16
17
  }
@@ -24,20 +25,19 @@
24
25
  "src"
25
26
  ],
26
27
  "dependencies": {
27
- "@dxos/async": "0.6.12",
28
- "@dxos/crypto": "0.6.12",
29
- "@dxos/codec-protobuf": "0.6.12",
30
- "@dxos/invariant": "0.6.12",
31
- "@dxos/debug": "0.6.12",
32
- "@dxos/keys": "0.6.12",
33
- "@dxos/log": "0.6.12",
34
- "@dxos/node-std": "0.6.12",
35
- "@dxos/random-access-storage": "0.6.12",
36
- "@dxos/util": "0.6.12",
37
- "@dxos/protocols": "0.6.12"
28
+ "@dxos/async": "0.6.13-main.548ca8d",
29
+ "@dxos/crypto": "0.6.13-main.548ca8d",
30
+ "@dxos/codec-protobuf": "0.6.13-main.548ca8d",
31
+ "@dxos/debug": "0.6.13-main.548ca8d",
32
+ "@dxos/invariant": "0.6.13-main.548ca8d",
33
+ "@dxos/keys": "0.6.13-main.548ca8d",
34
+ "@dxos/node-std": "0.6.13-main.548ca8d",
35
+ "@dxos/protocols": "0.6.13-main.548ca8d",
36
+ "@dxos/util": "0.6.13-main.548ca8d",
37
+ "@dxos/random-access-storage": "0.6.13-main.548ca8d"
38
38
  },
39
39
  "devDependencies": {
40
- "@types/node": "^18.11.9"
40
+ "@types/node": "^22.7.4"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"
@@ -2,12 +2,11 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import expect from 'expect';
5
+ import { describe, expect, test } from 'vitest';
6
6
 
7
7
  import { verifySignature } from '@dxos/crypto';
8
8
  import { PublicKey } from '@dxos/keys';
9
9
  import { createStorage, StorageType } from '@dxos/random-access-storage';
10
- import { describe, test } from '@dxos/test';
11
10
 
12
11
  import { Keyring } from './keyring';
13
12
  import { generateJWKKeyPair, parseJWKKeyPair } from './testing';