@openwallet-foundation/askar-shared 0.3.0

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 (99) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +44 -0
  3. package/build/askar/Askar.d.ts +437 -0
  4. package/build/askar/Askar.js +3 -0
  5. package/build/askar/Askar.js.map +1 -0
  6. package/build/askar/index.d.ts +2 -0
  7. package/build/askar/index.js +19 -0
  8. package/build/askar/index.js.map +1 -0
  9. package/build/askar/register.d.ts +5 -0
  10. package/build/askar/register.js +8 -0
  11. package/build/askar/register.js.map +1 -0
  12. package/build/crypto/AeadParams.d.ts +9 -0
  13. package/build/crypto/AeadParams.js +11 -0
  14. package/build/crypto/AeadParams.js.map +1 -0
  15. package/build/crypto/CryptoBox.d.ts +24 -0
  16. package/build/crypto/CryptoBox.js +23 -0
  17. package/build/crypto/CryptoBox.js.map +1 -0
  18. package/build/crypto/Ecdh1PU.d.ts +58 -0
  19. package/build/crypto/Ecdh1PU.js +77 -0
  20. package/build/crypto/Ecdh1PU.js.map +1 -0
  21. package/build/crypto/EcdhEs.d.ts +46 -0
  22. package/build/crypto/EcdhEs.js +64 -0
  23. package/build/crypto/EcdhEs.js.map +1 -0
  24. package/build/crypto/EncryptedBuffer.d.ts +20 -0
  25. package/build/crypto/EncryptedBuffer.js +36 -0
  26. package/build/crypto/EncryptedBuffer.js.map +1 -0
  27. package/build/crypto/Jwk.d.ts +18 -0
  28. package/build/crypto/Jwk.js +24 -0
  29. package/build/crypto/Jwk.js.map +1 -0
  30. package/build/crypto/Key.d.ts +73 -0
  31. package/build/crypto/Key.js +101 -0
  32. package/build/crypto/Key.js.map +1 -0
  33. package/build/crypto/handles.d.ts +46 -0
  34. package/build/crypto/handles.js +123 -0
  35. package/build/crypto/handles.js.map +1 -0
  36. package/build/crypto/index.d.ts +8 -0
  37. package/build/crypto/index.js +25 -0
  38. package/build/crypto/index.js.map +1 -0
  39. package/build/enums/EntryOperation.d.ts +5 -0
  40. package/build/enums/EntryOperation.js +10 -0
  41. package/build/enums/EntryOperation.js.map +1 -0
  42. package/build/enums/KeyAlgorithm.d.ts +20 -0
  43. package/build/enums/KeyAlgorithm.js +38 -0
  44. package/build/enums/KeyAlgorithm.js.map +1 -0
  45. package/build/enums/KeyBackend.d.ts +6 -0
  46. package/build/enums/KeyBackend.js +24 -0
  47. package/build/enums/KeyBackend.js.map +1 -0
  48. package/build/enums/KeyMethod.d.ts +4 -0
  49. package/build/enums/KeyMethod.js +9 -0
  50. package/build/enums/KeyMethod.js.map +1 -0
  51. package/build/enums/LogLevel.d.ts +9 -0
  52. package/build/enums/LogLevel.js +14 -0
  53. package/build/enums/LogLevel.js.map +1 -0
  54. package/build/enums/SignatureAlgorithm.d.ts +6 -0
  55. package/build/enums/SignatureAlgorithm.js +11 -0
  56. package/build/enums/SignatureAlgorithm.js.map +1 -0
  57. package/build/enums/index.d.ts +5 -0
  58. package/build/enums/index.js +22 -0
  59. package/build/enums/index.js.map +1 -0
  60. package/build/error.d.ts +12 -0
  61. package/build/error.js +21 -0
  62. package/build/error.js.map +1 -0
  63. package/build/index.d.ts +6 -0
  64. package/build/index.js +23 -0
  65. package/build/index.js.map +1 -0
  66. package/build/migration.d.ts +10 -0
  67. package/build/migration.js +11 -0
  68. package/build/migration.js.map +1 -0
  69. package/build/store/Entry.d.ts +21 -0
  70. package/build/store/Entry.js +38 -0
  71. package/build/store/Entry.js.map +1 -0
  72. package/build/store/EntryList.d.ts +17 -0
  73. package/build/store/EntryList.js +40 -0
  74. package/build/store/EntryList.js.map +1 -0
  75. package/build/store/KeyEntry.d.ts +23 -0
  76. package/build/store/KeyEntry.js +40 -0
  77. package/build/store/KeyEntry.js.map +1 -0
  78. package/build/store/KeyEntryList.d.ts +15 -0
  79. package/build/store/KeyEntryList.js +33 -0
  80. package/build/store/KeyEntryList.js.map +1 -0
  81. package/build/store/OpenSession.d.ts +14 -0
  82. package/build/store/OpenSession.js +27 -0
  83. package/build/store/OpenSession.js.map +1 -0
  84. package/build/store/Scan.d.ts +28 -0
  85. package/build/store/Scan.js +67 -0
  86. package/build/store/Scan.js.map +1 -0
  87. package/build/store/Session.d.ts +86 -0
  88. package/build/store/Session.js +182 -0
  89. package/build/store/Session.js.map +1 -0
  90. package/build/store/Store.d.ts +58 -0
  91. package/build/store/Store.js +87 -0
  92. package/build/store/Store.js.map +1 -0
  93. package/build/store/StoreKeyMethod.d.ts +11 -0
  94. package/build/store/StoreKeyMethod.js +20 -0
  95. package/build/store/StoreKeyMethod.js.map +1 -0
  96. package/build/store/index.d.ts +9 -0
  97. package/build/store/index.js +26 -0
  98. package/build/store/index.js.map +1 -0
  99. package/package.json +36 -0
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Session = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const askar_1 = require("../askar");
6
+ const EntryOperation_1 = require("../enums/EntryOperation");
7
+ const error_1 = require("../error");
8
+ const Entry_1 = require("./Entry");
9
+ const EntryList_1 = require("./EntryList");
10
+ const KeyEntryList_1 = require("./KeyEntryList");
11
+ class Session {
12
+ constructor({ handle, isTxn }) {
13
+ this._handle = handle;
14
+ this.isTxn = isTxn;
15
+ }
16
+ get isTransaction() {
17
+ return this.isTxn;
18
+ }
19
+ get handle() {
20
+ return this._handle;
21
+ }
22
+ async count({ category, tagFilter }) {
23
+ if (!this.handle)
24
+ throw error_1.AskarError.customError({ message: 'Cannot count from closed session' });
25
+ return await askar_1.askar.sessionCount({ tagFilter, category, sessionHandle: this.handle });
26
+ }
27
+ async fetch({ category, name, forUpdate = false, isJson, }) {
28
+ if (!this.handle)
29
+ throw error_1.AskarError.customError({ message: 'Cannot fetch from a closed session' });
30
+ const handle = await askar_1.askar.sessionFetch({ forUpdate, name, category, sessionHandle: this.handle });
31
+ if (!handle)
32
+ return null;
33
+ const entry = new Entry_1.Entry({ list: handle, position: 0 });
34
+ const entryObject = entry.toJson(isJson);
35
+ handle.free();
36
+ return entryObject;
37
+ }
38
+ async fetchAll({ category, forUpdate = false, limit, tagFilter, isJson, orderBy, descending, }) {
39
+ if (!this.handle)
40
+ throw error_1.AskarError.customError({ message: 'Cannot fetch all from a closed session' });
41
+ const handle = await askar_1.askar.sessionFetchAll({
42
+ forUpdate,
43
+ limit,
44
+ tagFilter,
45
+ sessionHandle: this.handle,
46
+ category,
47
+ orderBy,
48
+ descending,
49
+ });
50
+ if (!handle)
51
+ return [];
52
+ const entryList = new EntryList_1.EntryList({ handle });
53
+ const entryObjects = entryList.toArray(isJson);
54
+ entryList.handle.free();
55
+ return entryObjects;
56
+ }
57
+ async insert({ category, name, expiryMs, tags, value, }) {
58
+ if (!this.handle)
59
+ throw error_1.AskarError.customError({ message: 'Cannot insert with a closed session' });
60
+ const serializedValue = typeof value === 'string' ? value : JSON.stringify(value);
61
+ await askar_1.askar.sessionUpdate({
62
+ value: Uint8Array.from(buffer_1.Buffer.from(serializedValue)),
63
+ expiryMs,
64
+ tags,
65
+ name,
66
+ category,
67
+ sessionHandle: this.handle,
68
+ operation: EntryOperation_1.EntryOperation.Insert,
69
+ });
70
+ }
71
+ async replace({ category, name, expiryMs, tags, value, }) {
72
+ if (!this.handle)
73
+ throw error_1.AskarError.customError({ message: 'Cannot replace with a closed session' });
74
+ const serializedValue = typeof value === 'string' ? value : JSON.stringify(value);
75
+ await askar_1.askar.sessionUpdate({
76
+ value: Uint8Array.from(buffer_1.Buffer.from(serializedValue)),
77
+ expiryMs,
78
+ tags,
79
+ name,
80
+ category,
81
+ sessionHandle: this.handle,
82
+ operation: EntryOperation_1.EntryOperation.Replace,
83
+ });
84
+ }
85
+ async remove({ category, name }) {
86
+ if (!this.handle)
87
+ throw error_1.AskarError.customError({ message: 'Cannot remove with a closed session' });
88
+ await askar_1.askar.sessionUpdate({
89
+ name,
90
+ category,
91
+ sessionHandle: this.handle,
92
+ operation: EntryOperation_1.EntryOperation.Remove,
93
+ });
94
+ }
95
+ async removeAll({ category, tagFilter }) {
96
+ if (!this.handle)
97
+ throw error_1.AskarError.customError({ message: 'Cannot remove all with a closed session' });
98
+ await askar_1.askar.sessionRemoveAll({
99
+ category,
100
+ sessionHandle: this.handle,
101
+ tagFilter,
102
+ });
103
+ }
104
+ async insertKey({ name, key, expiryMs, metadata, tags, }) {
105
+ if (!this.handle)
106
+ throw error_1.AskarError.customError({ message: 'Cannot insert a key with a closed session' });
107
+ await askar_1.askar.sessionInsertKey({
108
+ expiryMs,
109
+ tags,
110
+ metadata,
111
+ name,
112
+ sessionHandle: this.handle,
113
+ localKeyHandle: key.handle,
114
+ });
115
+ }
116
+ async fetchKey({ name, forUpdate = false }) {
117
+ if (!this.handle)
118
+ throw error_1.AskarError.customError({ message: 'Cannot fetch a key with a closed session' });
119
+ const handle = await askar_1.askar.sessionFetchKey({ forUpdate, name, sessionHandle: this.handle });
120
+ if (!handle)
121
+ return null;
122
+ const keyEntryList = new KeyEntryList_1.KeyEntryList({ handle });
123
+ const keyEntryObject = keyEntryList.getEntryByIndex(0).toJson();
124
+ keyEntryList.handle.free();
125
+ return keyEntryObject;
126
+ }
127
+ async fetchAllKeys({ forUpdate = false, algorithm, limit, tagFilter, thumbprint, }) {
128
+ if (!this.handle)
129
+ throw error_1.AskarError.customError({ message: 'Cannot fetch all keys with a closed session' });
130
+ const handle = await askar_1.askar.sessionFetchAllKeys({
131
+ forUpdate,
132
+ limit,
133
+ tagFilter,
134
+ thumbprint,
135
+ algorithm,
136
+ sessionHandle: this.handle,
137
+ });
138
+ if (!handle)
139
+ return [];
140
+ const keyEntryList = new KeyEntryList_1.KeyEntryList({ handle });
141
+ const keyEntryObjects = keyEntryList.toArray();
142
+ keyEntryList.handle.free();
143
+ return keyEntryObjects;
144
+ }
145
+ async updateKey({ name, expiryMs, metadata, tags, }) {
146
+ if (!this.handle)
147
+ throw error_1.AskarError.customError({ message: 'Cannot update a key with a closed session' });
148
+ await askar_1.askar.sessionUpdateKey({ expiryMs, tags, metadata, name, sessionHandle: this.handle });
149
+ }
150
+ async removeKey({ name }) {
151
+ if (!this.handle)
152
+ throw error_1.AskarError.customError({ message: 'Cannot remove a key with a closed session' });
153
+ await askar_1.askar.sessionRemoveKey({ name, sessionHandle: this.handle });
154
+ }
155
+ /**
156
+ * @note also closes the session
157
+ */
158
+ async commit() {
159
+ if (!this.isTxn)
160
+ throw error_1.AskarError.customError({ message: 'Session is not a transaction' });
161
+ if (!this.handle)
162
+ throw error_1.AskarError.customError({ message: 'Cannot commit a closed session' });
163
+ await this.handle.close(true);
164
+ this._handle = undefined;
165
+ }
166
+ async rollback() {
167
+ if (!this.isTxn)
168
+ throw error_1.AskarError.customError({ message: 'Session is not a transaction' });
169
+ if (!this.handle)
170
+ throw error_1.AskarError.customError({ message: 'Cannot rollback a closed session' });
171
+ await this.handle.close(false);
172
+ this._handle = undefined;
173
+ }
174
+ async close() {
175
+ if (!this.handle)
176
+ throw error_1.AskarError.customError({ message: 'Cannot close a closed session' });
177
+ await this.handle.close(false);
178
+ this._handle = undefined;
179
+ }
180
+ }
181
+ exports.Session = Session;
182
+ //# sourceMappingURL=Session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.js","sourceRoot":"","sources":["../../src/store/Session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { StoreHandle } from '../crypto';
2
+ import type { StoreKeyMethod } from './StoreKeyMethod';
3
+ import { OpenSession } from './OpenSession';
4
+ import { Scan } from './Scan';
5
+ export declare class Store {
6
+ private _handle;
7
+ private _opener?;
8
+ private _uri;
9
+ constructor({ handle, uri }: {
10
+ handle: StoreHandle;
11
+ uri: string;
12
+ });
13
+ get handle(): StoreHandle;
14
+ static generateRawKey(seed?: Uint8Array): string;
15
+ get uri(): string;
16
+ createProfile(name?: string): Promise<string>;
17
+ getDefaultProfile(): Promise<string>;
18
+ setDefaultProfile(name: string): Promise<void>;
19
+ listProfiles(): Promise<string[]>;
20
+ removeProfile(name: string): Promise<number>;
21
+ rekey({ keyMethod, passKey }: {
22
+ keyMethod?: StoreKeyMethod;
23
+ passKey: string;
24
+ }): Promise<void>;
25
+ static provision({ uri, recreate, keyMethod, passKey, profile, }: {
26
+ uri: string;
27
+ keyMethod?: StoreKeyMethod;
28
+ passKey?: string;
29
+ profile?: string;
30
+ recreate: boolean;
31
+ }): Promise<Store>;
32
+ static open({ uri, keyMethod, passKey, profile, }: {
33
+ uri: string;
34
+ keyMethod?: StoreKeyMethod;
35
+ passKey?: string;
36
+ profile?: string;
37
+ }): Promise<Store>;
38
+ close(remove?: boolean): Promise<number | false>;
39
+ static remove(uri: string): Promise<number>;
40
+ session(profile?: string): OpenSession;
41
+ transaction(profile?: string): OpenSession;
42
+ openSession(isTransaction?: boolean): Promise<import("./Session").Session>;
43
+ scan(options: {
44
+ category: string;
45
+ tagFilter?: Record<string, unknown>;
46
+ offset?: number;
47
+ limit?: number;
48
+ profile?: string;
49
+ orderBy?: string;
50
+ descending?: boolean;
51
+ }): Scan;
52
+ copyTo({ uri, keyMethod, passKey, recreate, }: {
53
+ uri: string;
54
+ keyMethod?: StoreKeyMethod;
55
+ passKey?: string;
56
+ recreate: boolean;
57
+ }): Promise<void>;
58
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Store = void 0;
4
+ const askar_1 = require("../askar");
5
+ const OpenSession_1 = require("./OpenSession");
6
+ const Scan_1 = require("./Scan");
7
+ class Store {
8
+ constructor({ handle, uri }) {
9
+ this._handle = handle;
10
+ this._uri = uri;
11
+ }
12
+ get handle() {
13
+ return this._handle;
14
+ }
15
+ static generateRawKey(seed) {
16
+ return askar_1.askar.storeGenerateRawKey({ seed });
17
+ }
18
+ get uri() {
19
+ return this._uri;
20
+ }
21
+ async createProfile(name) {
22
+ return askar_1.askar.storeCreateProfile({ storeHandle: this.handle, profile: name });
23
+ }
24
+ async getDefaultProfile() {
25
+ return askar_1.askar.storeGetDefaultProfile({ storeHandle: this.handle });
26
+ }
27
+ async setDefaultProfile(name) {
28
+ return askar_1.askar.storeSetDefaultProfile({ storeHandle: this.handle, profile: name });
29
+ }
30
+ async listProfiles() {
31
+ return askar_1.askar.storeListProfiles({ storeHandle: this.handle });
32
+ }
33
+ async removeProfile(name) {
34
+ return await askar_1.askar.storeRemoveProfile({ profile: name, storeHandle: this.handle });
35
+ }
36
+ async rekey({ keyMethod, passKey }) {
37
+ return await askar_1.askar.storeRekey({ keyMethod: keyMethod === null || keyMethod === void 0 ? void 0 : keyMethod.toUri(), passKey, storeHandle: this.handle });
38
+ }
39
+ static async provision({ uri, recreate, keyMethod, passKey, profile, }) {
40
+ const handle = await askar_1.askar.storeProvision({
41
+ specUri: uri,
42
+ keyMethod: keyMethod === null || keyMethod === void 0 ? void 0 : keyMethod.toUri(),
43
+ profile,
44
+ passKey,
45
+ recreate,
46
+ });
47
+ return new Store({ handle, uri });
48
+ }
49
+ static async open({ uri, keyMethod, passKey, profile, }) {
50
+ const handle = await askar_1.askar.storeOpen({ profile, passKey, keyMethod: keyMethod === null || keyMethod === void 0 ? void 0 : keyMethod.toUri(), specUri: uri });
51
+ return new Store({ uri, handle });
52
+ }
53
+ async close(remove = false) {
54
+ this._opener = undefined;
55
+ if (this.handle)
56
+ await this.handle.close();
57
+ return remove ? await Store.remove(this.uri) : false;
58
+ }
59
+ static async remove(uri) {
60
+ return await askar_1.askar.storeRemove({ specUri: uri });
61
+ }
62
+ session(profile) {
63
+ return new OpenSession_1.OpenSession({ store: this.handle, profile, isTxn: false });
64
+ }
65
+ transaction(profile) {
66
+ return new OpenSession_1.OpenSession({ store: this.handle, profile, isTxn: true });
67
+ }
68
+ async openSession(isTransaction = false) {
69
+ var _a;
70
+ (_a = this._opener) !== null && _a !== void 0 ? _a : (this._opener = new OpenSession_1.OpenSession({ store: this.handle, isTxn: isTransaction }));
71
+ return await this._opener.open();
72
+ }
73
+ scan(options) {
74
+ return new Scan_1.Scan(Object.assign(Object.assign({}, options), { store: this }));
75
+ }
76
+ async copyTo({ uri, keyMethod, passKey, recreate, }) {
77
+ await askar_1.askar.storeCopyTo({
78
+ storeHandle: this.handle,
79
+ targetUri: uri,
80
+ keyMethod: keyMethod === null || keyMethod === void 0 ? void 0 : keyMethod.toUri(),
81
+ passKey,
82
+ recreate,
83
+ });
84
+ }
85
+ }
86
+ exports.Store = Store;
87
+ //# sourceMappingURL=Store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/store/Store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare enum KdfMethod {
2
+ Raw = "raw",
3
+ None = "none",
4
+ Argon2IMod = "kdf:argon2i:mod",
5
+ Argon2IInt = "kdf:argon2i:int"
6
+ }
7
+ export declare class StoreKeyMethod {
8
+ private method;
9
+ constructor(method: KdfMethod);
10
+ toUri(): string;
11
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreKeyMethod = exports.KdfMethod = void 0;
4
+ var KdfMethod;
5
+ (function (KdfMethod) {
6
+ KdfMethod["Raw"] = "raw";
7
+ KdfMethod["None"] = "none";
8
+ KdfMethod["Argon2IMod"] = "kdf:argon2i:mod";
9
+ KdfMethod["Argon2IInt"] = "kdf:argon2i:int";
10
+ })(KdfMethod || (exports.KdfMethod = KdfMethod = {}));
11
+ class StoreKeyMethod {
12
+ constructor(method) {
13
+ this.method = method;
14
+ }
15
+ toUri() {
16
+ return this.method.toString();
17
+ }
18
+ }
19
+ exports.StoreKeyMethod = StoreKeyMethod;
20
+ //# sourceMappingURL=StoreKeyMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreKeyMethod.js","sourceRoot":"","sources":["../../src/store/StoreKeyMethod.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;IACb,2CAA8B,CAAA;IAC9B,2CAA8B,CAAA;AAChC,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AAED,MAAa,cAAc;IAGzB,YAAmB,MAAiB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC;CACF;AAVD,wCAUC"}
@@ -0,0 +1,9 @@
1
+ export * from './Entry';
2
+ export * from './EntryList';
3
+ export * from './KeyEntry';
4
+ export * from './KeyEntryList';
5
+ export * from './Scan';
6
+ export * from './Store';
7
+ export * from './OpenSession';
8
+ export * from './Session';
9
+ export * from './StoreKeyMethod';
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Entry"), exports);
18
+ __exportStar(require("./EntryList"), exports);
19
+ __exportStar(require("./KeyEntry"), exports);
20
+ __exportStar(require("./KeyEntryList"), exports);
21
+ __exportStar(require("./Scan"), exports);
22
+ __exportStar(require("./Store"), exports);
23
+ __exportStar(require("./OpenSession"), exports);
24
+ __exportStar(require("./Session"), exports);
25
+ __exportStar(require("./StoreKeyMethod"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,8CAA2B;AAC3B,6CAA0B;AAC1B,iDAA8B;AAC9B,yCAAsB;AACtB,0CAAuB;AACvB,gDAA6B;AAC7B,4CAAyB;AACzB,mDAAgC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@openwallet-foundation/askar-shared",
3
+ "version": "0.3.0",
4
+ "license": "Apache-2.0",
5
+ "description": "Shared library for using Askar with NodeJS and React Native",
6
+ "main": "build/index",
7
+ "source": "src/index",
8
+ "types": "build/index",
9
+ "homepage": "https://github.com/openwallet-foundation/askar-wrapper-javascript",
10
+ "author": "Openwallet Foundation (https://github.com/openwallet-foundation)",
11
+ "repository": {
12
+ "url": "https://github.com/openwallet-foundation/askar-wrapper-javascript",
13
+ "type": "git",
14
+ "directory": "packages/askar-shared"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "files": [
20
+ "build",
21
+ "../../LICENSE"
22
+ ],
23
+ "scripts": {
24
+ "types:check": "pnpm compile --noEmit",
25
+ "build": "pnpm clean && pnpm compile",
26
+ "clean": "rimraf -rf ./build",
27
+ "compile": "tsc -p ./tsconfig.build.json"
28
+ },
29
+ "dependencies": {
30
+ "buffer": "^6.0.3"
31
+ },
32
+ "devDependencies": {
33
+ "typescript": "~5.4.5"
34
+ },
35
+ "gitHead": "582233fbdc2270cb9a249bc3e671d4094a5e3852"
36
+ }