@didcid/keymaster 0.1.3

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.
Files changed (70) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/cjs/db/abstract-base.cjs +25 -0
  4. package/dist/cjs/db/cache.cjs +27 -0
  5. package/dist/cjs/db/chrome.cjs +32 -0
  6. package/dist/cjs/db/json-memory.cjs +24 -0
  7. package/dist/cjs/db/json.cjs +35 -0
  8. package/dist/cjs/db/mongo.cjs +57 -0
  9. package/dist/cjs/db/redis.cjs +55 -0
  10. package/dist/cjs/db/sqlite.cjs +69 -0
  11. package/dist/cjs/db/typeGuards.cjs +11 -0
  12. package/dist/cjs/db/web.cjs +29 -0
  13. package/dist/cjs/encryption.cjs +59 -0
  14. package/dist/cjs/index.cjs +32 -0
  15. package/dist/cjs/keymaster-client.cjs +1139 -0
  16. package/dist/cjs/keymaster.cjs +3787 -0
  17. package/dist/cjs/node.cjs +45 -0
  18. package/dist/cjs/search-client.cjs +87 -0
  19. package/dist/esm/db/abstract-base.js +22 -0
  20. package/dist/esm/db/abstract-base.js.map +1 -0
  21. package/dist/esm/db/cache.js +21 -0
  22. package/dist/esm/db/cache.js.map +1 -0
  23. package/dist/esm/db/chrome.js +26 -0
  24. package/dist/esm/db/chrome.js.map +1 -0
  25. package/dist/esm/db/json-memory.js +18 -0
  26. package/dist/esm/db/json-memory.js.map +1 -0
  27. package/dist/esm/db/json.js +29 -0
  28. package/dist/esm/db/json.js.map +1 -0
  29. package/dist/esm/db/mongo.js +51 -0
  30. package/dist/esm/db/mongo.js.map +1 -0
  31. package/dist/esm/db/redis.js +49 -0
  32. package/dist/esm/db/redis.js.map +1 -0
  33. package/dist/esm/db/sqlite.js +63 -0
  34. package/dist/esm/db/sqlite.js.map +1 -0
  35. package/dist/esm/db/typeGuards.js +7 -0
  36. package/dist/esm/db/typeGuards.js.map +1 -0
  37. package/dist/esm/db/web.js +23 -0
  38. package/dist/esm/db/web.js.map +1 -0
  39. package/dist/esm/encryption.js +55 -0
  40. package/dist/esm/encryption.js.map +1 -0
  41. package/dist/esm/index.js +11 -0
  42. package/dist/esm/index.js.map +1 -0
  43. package/dist/esm/keymaster-client.js +1133 -0
  44. package/dist/esm/keymaster-client.js.map +1 -0
  45. package/dist/esm/keymaster.js +2733 -0
  46. package/dist/esm/keymaster.js.map +1 -0
  47. package/dist/esm/node.js +7 -0
  48. package/dist/esm/node.js.map +1 -0
  49. package/dist/esm/search-client.js +81 -0
  50. package/dist/esm/search-client.js.map +1 -0
  51. package/dist/esm/types.js +2 -0
  52. package/dist/esm/types.js.map +1 -0
  53. package/dist/types/db/abstract-base.d.ts +7 -0
  54. package/dist/types/db/cache.d.ts +9 -0
  55. package/dist/types/db/chrome.d.ts +8 -0
  56. package/dist/types/db/json-memory.d.ts +7 -0
  57. package/dist/types/db/json.d.ts +9 -0
  58. package/dist/types/db/mongo.d.ts +15 -0
  59. package/dist/types/db/redis.d.ts +13 -0
  60. package/dist/types/db/sqlite.d.ts +12 -0
  61. package/dist/types/db/typeGuards.d.ts +3 -0
  62. package/dist/types/db/web.d.ts +8 -0
  63. package/dist/types/encryption.d.ts +10 -0
  64. package/dist/types/index.d.ts +10 -0
  65. package/dist/types/keymaster-client.d.ts +134 -0
  66. package/dist/types/keymaster.d.ts +211 -0
  67. package/dist/types/node.d.ts +6 -0
  68. package/dist/types/search-client.d.ts +9 -0
  69. package/dist/types/types.d.ts +373 -0
  70. package/package.json +171 -0
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var keymaster = require('./keymaster.cjs');
6
+ var keymasterClient = require('./keymaster-client.cjs');
7
+ var searchClient = require('./search-client.cjs');
8
+ var db_jsonMemory = require('./db/json-memory.cjs');
9
+ var db_web = require('./db/web.cjs');
10
+ var db_cache = require('./db/cache.cjs');
11
+ var db_chrome = require('./db/chrome.cjs');
12
+ var db_abstractBase = require('./db/abstract-base.cjs');
13
+ var db_typeGuards = require('./db/typeGuards.cjs');
14
+ var db_json = require('./db/json.cjs');
15
+ var db_redis = require('./db/redis.cjs');
16
+ var db_mongo = require('./db/mongo.cjs');
17
+ var db_sqlite = require('./db/sqlite.cjs');
18
+ require('image-size');
19
+ require('file-type');
20
+ require('crypto');
21
+ require('./encryption.cjs');
22
+ require('buffer');
23
+ require('axios');
24
+ require('fs');
25
+ require('ioredis');
26
+ require('mongodb');
27
+ require('sqlite3');
28
+ require('sqlite');
29
+
30
+
31
+
32
+ exports.default = keymaster.default;
33
+ exports.KeymasterClient = keymasterClient.default;
34
+ exports.SearchClient = searchClient.default;
35
+ exports.WalletJsonMemory = db_jsonMemory.default;
36
+ exports.WalletWeb = db_web.default;
37
+ exports.WalletCache = db_cache.default;
38
+ exports.WalletChrome = db_chrome.default;
39
+ exports.AbstractBase = db_abstractBase.AbstractBase;
40
+ exports.isWalletEncFile = db_typeGuards.isWalletEncFile;
41
+ exports.isWalletFile = db_typeGuards.isWalletFile;
42
+ exports.WalletJson = db_json.default;
43
+ exports.WalletRedis = db_redis.default;
44
+ exports.WalletMongo = db_mongo.default;
45
+ exports.WalletSQLite = db_sqlite.default;
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var axiosModule = require('axios');
6
+
7
+ const axios = axiosModule?.default ??
8
+ axiosModule;
9
+ const VERSION = '/api/v1';
10
+ function throwError(error) {
11
+ if (error.response) {
12
+ throw error.response.data;
13
+ }
14
+ throw error;
15
+ }
16
+ class SearchClient {
17
+ API = "/api/v1";
18
+ // Factory method
19
+ static async create(options) {
20
+ const searchClient = new SearchClient();
21
+ await searchClient.connect(options);
22
+ return searchClient;
23
+ }
24
+ async connect(options = {}) {
25
+ if (options.url) {
26
+ this.API = `${options.url}${VERSION}`;
27
+ }
28
+ // Only used for unit testing
29
+ // TBD replace console with a real logging package
30
+ if (options.console) {
31
+ // eslint-disable-next-line
32
+ console = options.console;
33
+ }
34
+ if (options.waitUntilReady) {
35
+ await this.waitUntilReady(options);
36
+ }
37
+ }
38
+ async waitUntilReady(options = {}) {
39
+ let { intervalSeconds = 5, chatty = false, becomeChattyAfter = 0, maxRetries = 0 } = options;
40
+ let ready = false;
41
+ let retries = 0;
42
+ if (chatty) {
43
+ console.log(`Connecting to Search-server at ${this.API}`);
44
+ }
45
+ while (!ready) {
46
+ ready = await this.isReady();
47
+ if (!ready) {
48
+ if (chatty) {
49
+ console.log('Waiting for Search-server to be ready...');
50
+ }
51
+ // wait for 1 second before checking again
52
+ await new Promise(resolve => setTimeout(resolve, intervalSeconds * 1000));
53
+ }
54
+ retries += 1;
55
+ if (maxRetries > 0 && retries > maxRetries) {
56
+ return;
57
+ }
58
+ if (!chatty && becomeChattyAfter > 0 && retries > becomeChattyAfter) {
59
+ console.log(`Connecting to Search-server at ${this.API}`);
60
+ chatty = true;
61
+ }
62
+ }
63
+ if (chatty) {
64
+ console.log('Search-server is ready!');
65
+ }
66
+ }
67
+ async isReady() {
68
+ try {
69
+ const response = await axios.get(`${this.API}/ready`);
70
+ return response.data.ready;
71
+ }
72
+ catch (error) {
73
+ return false;
74
+ }
75
+ }
76
+ async search(where) {
77
+ try {
78
+ const response = await axios.post(`${this.API}/query`, where);
79
+ return response.data;
80
+ }
81
+ catch (error) {
82
+ throwError(error);
83
+ }
84
+ }
85
+ }
86
+
87
+ exports.default = SearchClient;
@@ -0,0 +1,22 @@
1
+ export class AbstractBase {
2
+ _lock = Promise.resolve();
3
+ async updateWallet(mutator) {
4
+ const run = async () => {
5
+ const wallet = await this.loadWallet();
6
+ if (!wallet) {
7
+ throw new Error('updateWallet: no wallet found to update');
8
+ }
9
+ const before = JSON.stringify(wallet);
10
+ await mutator(wallet);
11
+ const after = JSON.stringify(wallet);
12
+ if (before === after) {
13
+ return;
14
+ }
15
+ await this.saveWallet(wallet, true);
16
+ };
17
+ const chained = this._lock.then(run, run);
18
+ this._lock = chained.catch(() => { });
19
+ return chained;
20
+ }
21
+ }
22
+ //# sourceMappingURL=abstract-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-base.js","sourceRoot":"","sources":["../../../src/db/abstract-base.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IACtB,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAKjD,KAAK,CAAC,YAAY,CACd,OAAuD;QAEvD,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;YACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO;YACX,CAAC;YAED,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
@@ -0,0 +1,21 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ export default class WalletCache extends AbstractBase {
3
+ baseWallet;
4
+ cachedWallet;
5
+ constructor(baseWallet) {
6
+ super();
7
+ this.baseWallet = baseWallet;
8
+ this.cachedWallet = null;
9
+ }
10
+ async saveWallet(wallet, overwrite = false) {
11
+ this.cachedWallet = wallet;
12
+ return this.baseWallet.saveWallet(wallet, overwrite);
13
+ }
14
+ async loadWallet() {
15
+ if (!this.cachedWallet) {
16
+ this.cachedWallet = await this.baseWallet.loadWallet();
17
+ }
18
+ return this.cachedWallet;
19
+ }
20
+ }
21
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/db/cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IACzC,UAAU,CAAa;IACvB,YAAY,CAAe;IAEnC,YAAY,UAAsB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ"}
@@ -0,0 +1,26 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ export default class WalletChrome extends AbstractBase {
3
+ walletName;
4
+ constructor(walletName = 'archon-keymaster') {
5
+ super();
6
+ this.walletName = walletName;
7
+ }
8
+ async saveWallet(wallet, overwrite = false) {
9
+ if (!overwrite) {
10
+ const res = await chrome.storage.local.get([this.walletName]);
11
+ if (res[this.walletName]) {
12
+ return false;
13
+ }
14
+ }
15
+ await chrome.storage.local.set({ [this.walletName]: JSON.stringify(wallet) });
16
+ return true;
17
+ }
18
+ async loadWallet() {
19
+ const res = await chrome.storage.local.get([this.walletName]);
20
+ if (res[this.walletName]) {
21
+ return JSON.parse(res[this.walletName]);
22
+ }
23
+ return null;
24
+ }
25
+ }
26
+ //# sourceMappingURL=chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/db/chrome.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IAClD,UAAU,CAAS;IAEnB,YAAY,aAAqB,kBAAkB;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9D,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAE9D,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,18 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ export default class WalletJsonMemory extends AbstractBase {
3
+ walletCache = null;
4
+ async saveWallet(wallet, overwrite = false) {
5
+ if (this.walletCache && !overwrite) {
6
+ return false;
7
+ }
8
+ this.walletCache = JSON.stringify(wallet);
9
+ return true;
10
+ }
11
+ async loadWallet() {
12
+ if (!this.walletCache) {
13
+ return null;
14
+ }
15
+ return JSON.parse(this.walletCache);
16
+ }
17
+ }
18
+ //# sourceMappingURL=json-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-memory.js","sourceRoot":"","sources":["../../../src/db/json-memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,YAAY;IACtD,WAAW,GAAkB,IAAI,CAAC;IAElC,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;CACJ"}
@@ -0,0 +1,29 @@
1
+ import fs from 'fs';
2
+ import { AbstractBase } from './abstract-base.js';
3
+ export default class WalletJson extends AbstractBase {
4
+ dataFolder;
5
+ walletName;
6
+ constructor(walletFileName = 'wallet.json', dataFolder = 'data') {
7
+ super();
8
+ this.dataFolder = dataFolder;
9
+ this.walletName = `${dataFolder}/${walletFileName}`;
10
+ }
11
+ async saveWallet(wallet, overwrite = false) {
12
+ if (fs.existsSync(this.walletName) && !overwrite) {
13
+ return false;
14
+ }
15
+ if (!fs.existsSync(this.dataFolder)) {
16
+ fs.mkdirSync(this.dataFolder, { recursive: true });
17
+ }
18
+ fs.writeFileSync(this.walletName, JSON.stringify(wallet, null, 4));
19
+ return true;
20
+ }
21
+ async loadWallet() {
22
+ if (!fs.existsSync(this.walletName)) {
23
+ return null;
24
+ }
25
+ const walletJson = fs.readFileSync(this.walletName, 'utf-8');
26
+ return JSON.parse(walletJson);
27
+ }
28
+ }
29
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/db/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAC/B,UAAU,CAAS;IACpC,UAAU,CAAS;IAEnB,YAAY,cAAc,GAAG,aAAa,EAAE,UAAU,GAAG,MAAM;QAC3D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;CACJ"}
@@ -0,0 +1,51 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ import { MongoClient } from 'mongodb';
3
+ export default class WalletMongo extends AbstractBase {
4
+ client;
5
+ db;
6
+ collection;
7
+ dbName = 'keymaster';
8
+ collectionName;
9
+ static async create() {
10
+ const wallet = new WalletMongo();
11
+ await wallet.connect();
12
+ return wallet;
13
+ }
14
+ constructor(walletKey = 'wallet') {
15
+ super();
16
+ const url = process.env.ARCHON_MONGODB_URL || 'mongodb://localhost:27017';
17
+ this.client = new MongoClient(url);
18
+ this.collectionName = walletKey;
19
+ }
20
+ async connect() {
21
+ await this.client.connect();
22
+ this.db = this.client.db(this.dbName);
23
+ this.collection = this.db.collection(this.collectionName);
24
+ }
25
+ async disconnect() {
26
+ await this.client.close();
27
+ }
28
+ async saveWallet(wallet, overwrite = false) {
29
+ if (!this.collection) {
30
+ throw new Error('Not connected to MongoDB. Call connect() first or use WalletMongo.create().');
31
+ }
32
+ const exists = await this.collection.findOne({});
33
+ if (exists && !overwrite) {
34
+ return false;
35
+ }
36
+ await this.collection.replaceOne({}, wallet, { upsert: true });
37
+ return true;
38
+ }
39
+ async loadWallet() {
40
+ if (!this.collection) {
41
+ throw new Error('Not connected to MongoDB. Call connect() first or use WalletMongo.create().');
42
+ }
43
+ const wallet = await this.collection.findOne({});
44
+ if (!wallet) {
45
+ return null;
46
+ }
47
+ const { _id, ...rest } = wallet;
48
+ return rest;
49
+ }
50
+ }
51
+ //# sourceMappingURL=mongo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../../src/db/mongo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAA;AAErD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IACzC,MAAM,CAAc;IACpB,EAAE,CAAM;IACR,UAAU,CAAc;IACxB,MAAM,GAAG,WAAW,CAAA;IACX,cAAc,CAAS;IAEjC,MAAM,CAAC,KAAK,CAAC,MAAM;QACtB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,YAAY,YAAoB,QAAQ;QACpC,KAAK,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,2BAA2B,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAmC,EAAE,YAAqB,KAAK;QAC5E,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;QAClG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;QAClG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC/B,OAAO,IAAoB,CAAC;IAChC,CAAC;CACJ"}
@@ -0,0 +1,49 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ import { Redis } from 'ioredis';
3
+ export default class WalletRedis extends AbstractBase {
4
+ walletKey;
5
+ url;
6
+ redis;
7
+ static async create(walletKey = 'wallet') {
8
+ const wallet = new WalletRedis(walletKey);
9
+ await wallet.connect();
10
+ return wallet;
11
+ }
12
+ constructor(walletKey = 'wallet') {
13
+ super();
14
+ this.url = process.env.ARCHON_REDIS_URL || 'redis://localhost:6379';
15
+ this.walletKey = walletKey;
16
+ this.redis = null;
17
+ }
18
+ async connect() {
19
+ this.redis = new Redis(this.url);
20
+ }
21
+ async disconnect() {
22
+ if (this.redis) {
23
+ await this.redis.quit();
24
+ this.redis = null;
25
+ }
26
+ }
27
+ async saveWallet(wallet, overwrite = false) {
28
+ if (!this.redis) {
29
+ throw new Error('Redis is not connected. Call connect() first or use WalletRedis.create().');
30
+ }
31
+ const exists = await this.redis.exists(this.walletKey);
32
+ if (exists && !overwrite) {
33
+ return false;
34
+ }
35
+ await this.redis.set(this.walletKey, JSON.stringify(wallet));
36
+ return true;
37
+ }
38
+ async loadWallet() {
39
+ if (!this.redis) {
40
+ throw new Error('Redis is not connected. Call connect() first or use WalletRedis.create().');
41
+ }
42
+ const walletJson = await this.redis.get(this.walletKey);
43
+ if (!walletJson) {
44
+ return null;
45
+ }
46
+ return JSON.parse(walletJson);
47
+ }
48
+ }
49
+ //# sourceMappingURL=redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/db/redis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IAChC,SAAS,CAAS;IAClB,GAAG,CAAS;IACrB,KAAK,CAAc;IAEpB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAoB,QAAQ;QACnD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,YAAY,YAAoB,QAAQ;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACrB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAChG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAChG,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;CACJ"}
@@ -0,0 +1,63 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ import sqlite3 from 'sqlite3';
3
+ import { open } from 'sqlite';
4
+ export default class WalletSQLite extends AbstractBase {
5
+ walletName;
6
+ db;
7
+ static async create(walletFileName = 'wallet.db', dataFolder = 'data') {
8
+ const wallet = new WalletSQLite(walletFileName, dataFolder);
9
+ await wallet.connect();
10
+ return wallet;
11
+ }
12
+ constructor(walletFileName = 'wallet.db', dataFolder = 'data') {
13
+ super();
14
+ this.walletName = `${dataFolder}/${walletFileName}`;
15
+ this.db = null;
16
+ }
17
+ async connect() {
18
+ if (this.db) {
19
+ return;
20
+ }
21
+ this.db = await open({
22
+ filename: this.walletName,
23
+ driver: sqlite3.Database
24
+ });
25
+ await this.db.exec(`
26
+ CREATE TABLE IF NOT EXISTS wallet (
27
+ id INTEGER PRIMARY KEY,
28
+ data TEXT NOT NULL
29
+ )
30
+ `);
31
+ }
32
+ async disconnect() {
33
+ if (this.db) {
34
+ await this.db.close();
35
+ this.db = null;
36
+ }
37
+ }
38
+ async saveWallet(wallet, overwrite = false) {
39
+ await this.connect();
40
+ if (!this.db) {
41
+ throw new Error('DB failed to connect.');
42
+ }
43
+ const exists = await this.db.get('SELECT 1 FROM wallet LIMIT 1');
44
+ if (exists && !overwrite) {
45
+ return false;
46
+ }
47
+ await this.db.run('DELETE FROM wallet');
48
+ await this.db.run('INSERT INTO wallet (data) VALUES (?)', JSON.stringify(wallet));
49
+ return true;
50
+ }
51
+ async loadWallet() {
52
+ await this.connect();
53
+ if (!this.db) {
54
+ throw new Error('DB failed to connect.');
55
+ }
56
+ const row = await this.db.get('SELECT data FROM wallet LIMIT 1');
57
+ if (!row) {
58
+ return null;
59
+ }
60
+ return JSON.parse(row.data);
61
+ }
62
+ }
63
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/db/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACjC,UAAU,CAAS;IAC5B,EAAE,CAAkB;IAE5B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAyB,WAAW,EAAE,aAAqB,MAAM;QACjF,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,YAAY,iBAAyB,WAAW,EAAE,aAAqB,MAAM;QACzE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;QACpD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC;YACjB,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,MAAM,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;SAKlB,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YACrB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;QAClB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACjE,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ"}
@@ -0,0 +1,7 @@
1
+ export function isWalletEncFile(obj) {
2
+ return !!obj && obj.version === 1 && typeof obj.enc === 'string' && obj.seed?.mnemonicEnc;
3
+ }
4
+ export function isWalletFile(obj) {
5
+ return !!obj && obj.version === 1 && obj.seed?.mnemonicEnc && !('enc' in obj);
6
+ }
7
+ //# sourceMappingURL=typeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/db/typeGuards.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,GAAQ;IACpC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAQ;IACjC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { AbstractBase } from './abstract-base.js';
2
+ export default class WalletWeb extends AbstractBase {
3
+ walletName;
4
+ constructor(walletName = 'archon-keymaster') {
5
+ super();
6
+ this.walletName = walletName;
7
+ }
8
+ async saveWallet(wallet, overwrite = false) {
9
+ if (!overwrite && window.localStorage.getItem(this.walletName)) {
10
+ return false;
11
+ }
12
+ window.localStorage.setItem(this.walletName, JSON.stringify(wallet));
13
+ return true;
14
+ }
15
+ async loadWallet() {
16
+ const walletJson = window.localStorage.getItem(this.walletName);
17
+ if (walletJson) {
18
+ return JSON.parse(walletJson);
19
+ }
20
+ return null;
21
+ }
22
+ }
23
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/db/web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,YAAY;IAC/C,UAAU,CAAS;IAEnB,YAAY,aAAqB,kBAAkB;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,YAAqB,KAAK;QAC7D,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhE,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,55 @@
1
+ const ENC_ALG = 'AES-GCM';
2
+ const ENC_KDF = 'PBKDF2';
3
+ const ENC_HASH = 'SHA-512';
4
+ const ENC_ITER_DEFAULT = 100_000;
5
+ const IV_LEN = 12;
6
+ const SALT_LEN = 16;
7
+ function getIterations() {
8
+ if (typeof process !== 'undefined' && process.env?.PBKDF2_ITERATIONS) {
9
+ const parsed = parseInt(process.env.PBKDF2_ITERATIONS, 10);
10
+ if (!isNaN(parsed) && parsed > 0) {
11
+ return parsed;
12
+ }
13
+ }
14
+ return ENC_ITER_DEFAULT;
15
+ }
16
+ export async function encMnemonic(mnemonic, pass) {
17
+ if (!hasSubtle()) {
18
+ throw new Error('Web Cryptography API not available');
19
+ }
20
+ const salt = await randBytes(SALT_LEN);
21
+ const iv = await randBytes(IV_LEN);
22
+ const key = await deriveKey(pass, salt);
23
+ const ct = await crypto.subtle.encrypt({ name: ENC_ALG, iv: iv }, key, new TextEncoder().encode(mnemonic));
24
+ return { salt: b64(salt), iv: b64(iv), data: b64(new Uint8Array(ct)) };
25
+ }
26
+ export async function decMnemonic(blob, pass) {
27
+ if (!hasSubtle()) {
28
+ throw new Error('Web Cryptography API not available');
29
+ }
30
+ const salt = ub64(blob.salt);
31
+ const iv = ub64(blob.iv);
32
+ const data = ub64(blob.data);
33
+ const key = await deriveKey(pass, salt);
34
+ const pt = await crypto.subtle.decrypt({ name: ENC_ALG, iv }, key, data);
35
+ return new TextDecoder().decode(pt);
36
+ }
37
+ const b64 = (buf) => {
38
+ return Buffer.from(buf).toString('base64');
39
+ };
40
+ const ub64 = (b64) => {
41
+ return new Uint8Array(Buffer.from(b64, 'base64'));
42
+ };
43
+ const hasSubtle = () => typeof globalThis !== 'undefined' &&
44
+ !!(globalThis.crypto && globalThis.crypto.subtle);
45
+ async function randBytes(len) {
46
+ const u8 = new Uint8Array(len);
47
+ crypto.getRandomValues(u8);
48
+ return u8;
49
+ }
50
+ async function deriveKey(pass, salt) {
51
+ const enc = new TextEncoder();
52
+ const passKey = await crypto.subtle.importKey('raw', enc.encode(pass), { name: ENC_KDF }, false, ['deriveKey']);
53
+ return crypto.subtle.deriveKey({ name: ENC_KDF, salt: salt, iterations: getIterations(), hash: ENC_HASH }, passKey, { name: ENC_ALG, length: 256 }, false, ['encrypt', 'decrypt']);
54
+ }
55
+ //# sourceMappingURL=encryption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/encryption.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { default } from './keymaster.js';
2
+ export { default as KeymasterClient } from './keymaster-client.js';
3
+ export { default as SearchClient } from './search-client.js';
4
+ export { default as WalletJsonMemory } from './db/json-memory.js';
5
+ export { default as WalletWeb } from './db/web.js';
6
+ export { default as WalletCache } from './db/cache.js';
7
+ export { default as WalletChrome } from './db/chrome.js';
8
+ export { AbstractBase } from './db/abstract-base.js';
9
+ export * from './db/typeGuards.js';
10
+ export * from './types.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}