@openwallet-foundation/askar-nodejs 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 (139) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +36 -0
  3. package/build/askar-nodejs/src/NodeJSAskar.d.ts +184 -0
  4. package/build/askar-nodejs/src/NodeJSAskar.js +625 -0
  5. package/build/askar-nodejs/src/NodeJSAskar.js.map +1 -0
  6. package/build/askar-nodejs/src/ffi/alloc.d.ts +12 -0
  7. package/build/askar-nodejs/src/ffi/alloc.js +27 -0
  8. package/build/askar-nodejs/src/ffi/alloc.js.map +1 -0
  9. package/build/askar-nodejs/src/ffi/callback.d.ts +15 -0
  10. package/build/askar-nodejs/src/ffi/callback.js +26 -0
  11. package/build/askar-nodejs/src/ffi/callback.js.map +1 -0
  12. package/build/askar-nodejs/src/ffi/conversion.d.ts +19 -0
  13. package/build/askar-nodejs/src/ffi/conversion.js +27 -0
  14. package/build/askar-nodejs/src/ffi/conversion.js.map +1 -0
  15. package/build/askar-nodejs/src/ffi/index.d.ts +6 -0
  16. package/build/askar-nodejs/src/ffi/index.js +23 -0
  17. package/build/askar-nodejs/src/ffi/index.js.map +1 -0
  18. package/build/askar-nodejs/src/ffi/primitives.d.ts +22 -0
  19. package/build/askar-nodejs/src/ffi/primitives.js +32 -0
  20. package/build/askar-nodejs/src/ffi/primitives.js.map +1 -0
  21. package/build/askar-nodejs/src/ffi/serialize.d.ts +11 -0
  22. package/build/askar-nodejs/src/ffi/serialize.js +54 -0
  23. package/build/askar-nodejs/src/ffi/serialize.js.map +1 -0
  24. package/build/askar-nodejs/src/ffi/structures.d.ts +51 -0
  25. package/build/askar-nodejs/src/ffi/structures.js +56 -0
  26. package/build/askar-nodejs/src/ffi/structures.js.map +1 -0
  27. package/build/askar-nodejs/src/index.d.ts +3 -0
  28. package/build/askar-nodejs/src/index.js +23 -0
  29. package/build/askar-nodejs/src/index.js.map +1 -0
  30. package/build/askar-nodejs/src/library/NativeBindingInterface.d.ts +25 -0
  31. package/build/askar-nodejs/src/library/NativeBindingInterface.js +3 -0
  32. package/build/askar-nodejs/src/library/NativeBindingInterface.js.map +1 -0
  33. package/build/askar-nodejs/src/library/bindings.d.ts +241 -0
  34. package/build/askar-nodejs/src/library/bindings.js +210 -0
  35. package/build/askar-nodejs/src/library/bindings.js.map +1 -0
  36. package/build/askar-nodejs/src/library/index.d.ts +3 -0
  37. package/build/askar-nodejs/src/library/index.js +20 -0
  38. package/build/askar-nodejs/src/library/index.js.map +1 -0
  39. package/build/askar-nodejs/src/library/register.d.ts +86 -0
  40. package/build/askar-nodejs/src/library/register.js +63 -0
  41. package/build/askar-nodejs/src/library/register.js.map +1 -0
  42. package/build/askar-shared/src/askar/Askar.d.ts +437 -0
  43. package/build/askar-shared/src/askar/Askar.js +3 -0
  44. package/build/askar-shared/src/askar/Askar.js.map +1 -0
  45. package/build/askar-shared/src/askar/index.d.ts +2 -0
  46. package/build/askar-shared/src/askar/index.js +19 -0
  47. package/build/askar-shared/src/askar/index.js.map +1 -0
  48. package/build/askar-shared/src/askar/register.d.ts +5 -0
  49. package/build/askar-shared/src/askar/register.js +8 -0
  50. package/build/askar-shared/src/askar/register.js.map +1 -0
  51. package/build/askar-shared/src/crypto/AeadParams.d.ts +9 -0
  52. package/build/askar-shared/src/crypto/AeadParams.js +11 -0
  53. package/build/askar-shared/src/crypto/AeadParams.js.map +1 -0
  54. package/build/askar-shared/src/crypto/CryptoBox.d.ts +24 -0
  55. package/build/askar-shared/src/crypto/CryptoBox.js +23 -0
  56. package/build/askar-shared/src/crypto/CryptoBox.js.map +1 -0
  57. package/build/askar-shared/src/crypto/Ecdh1PU.d.ts +58 -0
  58. package/build/askar-shared/src/crypto/Ecdh1PU.js +77 -0
  59. package/build/askar-shared/src/crypto/Ecdh1PU.js.map +1 -0
  60. package/build/askar-shared/src/crypto/EcdhEs.d.ts +46 -0
  61. package/build/askar-shared/src/crypto/EcdhEs.js +64 -0
  62. package/build/askar-shared/src/crypto/EcdhEs.js.map +1 -0
  63. package/build/askar-shared/src/crypto/EncryptedBuffer.d.ts +20 -0
  64. package/build/askar-shared/src/crypto/EncryptedBuffer.js +36 -0
  65. package/build/askar-shared/src/crypto/EncryptedBuffer.js.map +1 -0
  66. package/build/askar-shared/src/crypto/Jwk.d.ts +18 -0
  67. package/build/askar-shared/src/crypto/Jwk.js +24 -0
  68. package/build/askar-shared/src/crypto/Jwk.js.map +1 -0
  69. package/build/askar-shared/src/crypto/Key.d.ts +73 -0
  70. package/build/askar-shared/src/crypto/Key.js +101 -0
  71. package/build/askar-shared/src/crypto/Key.js.map +1 -0
  72. package/build/askar-shared/src/crypto/handles.d.ts +46 -0
  73. package/build/askar-shared/src/crypto/handles.js +123 -0
  74. package/build/askar-shared/src/crypto/handles.js.map +1 -0
  75. package/build/askar-shared/src/crypto/index.d.ts +8 -0
  76. package/build/askar-shared/src/crypto/index.js +25 -0
  77. package/build/askar-shared/src/crypto/index.js.map +1 -0
  78. package/build/askar-shared/src/enums/EntryOperation.d.ts +5 -0
  79. package/build/askar-shared/src/enums/EntryOperation.js +10 -0
  80. package/build/askar-shared/src/enums/EntryOperation.js.map +1 -0
  81. package/build/askar-shared/src/enums/KeyAlgorithm.d.ts +20 -0
  82. package/build/askar-shared/src/enums/KeyAlgorithm.js +38 -0
  83. package/build/askar-shared/src/enums/KeyAlgorithm.js.map +1 -0
  84. package/build/askar-shared/src/enums/KeyBackend.d.ts +6 -0
  85. package/build/askar-shared/src/enums/KeyBackend.js +24 -0
  86. package/build/askar-shared/src/enums/KeyBackend.js.map +1 -0
  87. package/build/askar-shared/src/enums/KeyMethod.d.ts +4 -0
  88. package/build/askar-shared/src/enums/KeyMethod.js +9 -0
  89. package/build/askar-shared/src/enums/KeyMethod.js.map +1 -0
  90. package/build/askar-shared/src/enums/LogLevel.d.ts +9 -0
  91. package/build/askar-shared/src/enums/LogLevel.js +14 -0
  92. package/build/askar-shared/src/enums/LogLevel.js.map +1 -0
  93. package/build/askar-shared/src/enums/SignatureAlgorithm.d.ts +6 -0
  94. package/build/askar-shared/src/enums/SignatureAlgorithm.js +11 -0
  95. package/build/askar-shared/src/enums/SignatureAlgorithm.js.map +1 -0
  96. package/build/askar-shared/src/enums/index.d.ts +5 -0
  97. package/build/askar-shared/src/enums/index.js +22 -0
  98. package/build/askar-shared/src/enums/index.js.map +1 -0
  99. package/build/askar-shared/src/error.d.ts +12 -0
  100. package/build/askar-shared/src/error.js +21 -0
  101. package/build/askar-shared/src/error.js.map +1 -0
  102. package/build/askar-shared/src/index.d.ts +6 -0
  103. package/build/askar-shared/src/index.js +23 -0
  104. package/build/askar-shared/src/index.js.map +1 -0
  105. package/build/askar-shared/src/migration.d.ts +10 -0
  106. package/build/askar-shared/src/migration.js +11 -0
  107. package/build/askar-shared/src/migration.js.map +1 -0
  108. package/build/askar-shared/src/store/Entry.d.ts +21 -0
  109. package/build/askar-shared/src/store/Entry.js +38 -0
  110. package/build/askar-shared/src/store/Entry.js.map +1 -0
  111. package/build/askar-shared/src/store/EntryList.d.ts +17 -0
  112. package/build/askar-shared/src/store/EntryList.js +40 -0
  113. package/build/askar-shared/src/store/EntryList.js.map +1 -0
  114. package/build/askar-shared/src/store/KeyEntry.d.ts +23 -0
  115. package/build/askar-shared/src/store/KeyEntry.js +40 -0
  116. package/build/askar-shared/src/store/KeyEntry.js.map +1 -0
  117. package/build/askar-shared/src/store/KeyEntryList.d.ts +15 -0
  118. package/build/askar-shared/src/store/KeyEntryList.js +33 -0
  119. package/build/askar-shared/src/store/KeyEntryList.js.map +1 -0
  120. package/build/askar-shared/src/store/OpenSession.d.ts +14 -0
  121. package/build/askar-shared/src/store/OpenSession.js +27 -0
  122. package/build/askar-shared/src/store/OpenSession.js.map +1 -0
  123. package/build/askar-shared/src/store/Scan.d.ts +28 -0
  124. package/build/askar-shared/src/store/Scan.js +67 -0
  125. package/build/askar-shared/src/store/Scan.js.map +1 -0
  126. package/build/askar-shared/src/store/Session.d.ts +86 -0
  127. package/build/askar-shared/src/store/Session.js +182 -0
  128. package/build/askar-shared/src/store/Session.js.map +1 -0
  129. package/build/askar-shared/src/store/Store.d.ts +58 -0
  130. package/build/askar-shared/src/store/Store.js +87 -0
  131. package/build/askar-shared/src/store/Store.js.map +1 -0
  132. package/build/askar-shared/src/store/StoreKeyMethod.d.ts +11 -0
  133. package/build/askar-shared/src/store/StoreKeyMethod.js +20 -0
  134. package/build/askar-shared/src/store/StoreKeyMethod.js.map +1 -0
  135. package/build/askar-shared/src/store/index.d.ts +9 -0
  136. package/build/askar-shared/src/store/index.js +26 -0
  137. package/build/askar-shared/src/store/index.js.map +1 -0
  138. package/package.json +55 -0
  139. package/scripts/install.js +15 -0
@@ -0,0 +1,23 @@
1
+ import type { KeyEntryListHandle } from '../crypto';
2
+ import { Key } from '../crypto';
3
+ export type KeyEntryObject = {
4
+ algorithm: string;
5
+ name: string;
6
+ metadata: string | null;
7
+ tags: Record<string, unknown>;
8
+ key: Key;
9
+ };
10
+ export declare class KeyEntry {
11
+ private _list;
12
+ private _pos;
13
+ constructor({ list, pos }: {
14
+ list: KeyEntryListHandle;
15
+ pos: number;
16
+ });
17
+ get algorithm(): string;
18
+ get name(): string;
19
+ get metadata(): string | null;
20
+ get tags(): Record<string, unknown>;
21
+ get key(): Key;
22
+ toJson(): KeyEntryObject;
23
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyEntry = void 0;
4
+ const crypto_1 = require("../crypto");
5
+ class KeyEntry {
6
+ constructor({ list, pos }) {
7
+ this._list = list;
8
+ this._pos = pos;
9
+ }
10
+ get algorithm() {
11
+ return this._list.getAlgorithm(this._pos);
12
+ }
13
+ get name() {
14
+ return this._list.getName(this._pos);
15
+ }
16
+ get metadata() {
17
+ const metadata = this._list.getMetadata(this._pos);
18
+ return metadata;
19
+ }
20
+ get tags() {
21
+ const tags = this._list.getTags(this._pos);
22
+ if (!tags)
23
+ return {};
24
+ return JSON.parse(tags);
25
+ }
26
+ get key() {
27
+ return new crypto_1.Key(this._list.loadKey(this._pos));
28
+ }
29
+ toJson() {
30
+ return {
31
+ algorithm: this.algorithm,
32
+ name: this.name,
33
+ metadata: this.metadata,
34
+ tags: this.tags,
35
+ key: this.key,
36
+ };
37
+ }
38
+ }
39
+ exports.KeyEntry = KeyEntry;
40
+ //# sourceMappingURL=KeyEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyEntry.js","sourceRoot":"","sources":["../../../../../askar-shared/src/store/KeyEntry.ts"],"names":[],"mappings":";;;AAEA,sCAA+B;AAU/B,MAAa,QAAQ;IAInB,YAAmB,EAAE,IAAI,EAAE,GAAG,EAA6C;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACjB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,IAAW,QAAQ;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAW,IAAI;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAA;IACpD,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,YAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/C,CAAC;IAEM,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAA;IACH,CAAC;CACF;AA3CD,4BA2CC"}
@@ -0,0 +1,15 @@
1
+ import type { KeyEntryObject } from '.';
2
+ import type { KeyEntryListHandle } from '../crypto';
3
+ import { KeyEntry } from './KeyEntry';
4
+ export declare class KeyEntryList {
5
+ private _handle;
6
+ private _len;
7
+ constructor({ handle }: {
8
+ handle: KeyEntryListHandle;
9
+ });
10
+ get handle(): KeyEntryListHandle;
11
+ get length(): number;
12
+ getEntryByIndex(index: number): KeyEntry;
13
+ forEachKeyEntry(cb: (entry: KeyEntry, index?: number) => unknown): void;
14
+ toArray(): KeyEntryObject[];
15
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyEntryList = void 0;
4
+ const askar_1 = require("../askar");
5
+ const KeyEntry_1 = require("./KeyEntry");
6
+ class KeyEntryList {
7
+ constructor({ handle }) {
8
+ this._len = 0;
9
+ this._handle = handle;
10
+ this._len = askar_1.askar.keyEntryListCount({ keyEntryListHandle: handle });
11
+ }
12
+ get handle() {
13
+ return this._handle;
14
+ }
15
+ get length() {
16
+ return this._len;
17
+ }
18
+ getEntryByIndex(index) {
19
+ return new KeyEntry_1.KeyEntry({ list: this.handle, pos: index });
20
+ }
21
+ forEachKeyEntry(cb) {
22
+ for (let i = 0; i < this.length; i++) {
23
+ cb(this.getEntryByIndex(i), i);
24
+ }
25
+ }
26
+ toArray() {
27
+ const list = [];
28
+ this.forEachKeyEntry((key) => list.push(key.toJson()));
29
+ return list;
30
+ }
31
+ }
32
+ exports.KeyEntryList = KeyEntryList;
33
+ //# sourceMappingURL=KeyEntryList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyEntryList.js","sourceRoot":"","sources":["../../../../../askar-shared/src/store/KeyEntryList.ts"],"names":[],"mappings":";;;AAGA,oCAAgC;AAEhC,yCAAqC;AAErC,MAAa,YAAY;IAIvB,YAAmB,EAAE,MAAM,EAAkC;QAFrD,SAAI,GAAG,CAAC,CAAA;QAGd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,aAAK,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,eAAe,CAAC,KAAa;QAClC,OAAO,IAAI,mBAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IACxD,CAAC;IAEM,eAAe,CAAC,EAAgD;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,MAAM,IAAI,GAAqB,EAAE,CAAA;QACjC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACtD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAhCD,oCAgCC"}
@@ -0,0 +1,14 @@
1
+ import type { StoreHandle } from '../crypto';
2
+ import { Session } from './Session';
3
+ export declare class OpenSession {
4
+ private store;
5
+ private profile?;
6
+ private isTxn;
7
+ private session?;
8
+ constructor({ store, isTxn, profile }: {
9
+ store: StoreHandle;
10
+ profile?: string;
11
+ isTxn: boolean;
12
+ });
13
+ open(): Promise<Session>;
14
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSession = void 0;
4
+ const askar_1 = require("../askar");
5
+ const error_1 = require("../error");
6
+ const Session_1 = require("./Session");
7
+ class OpenSession {
8
+ constructor({ store, isTxn, profile }) {
9
+ this.store = store;
10
+ this.isTxn = isTxn;
11
+ this.profile = profile;
12
+ }
13
+ async open() {
14
+ if (!this.store)
15
+ throw error_1.AskarError.customError({ message: 'Cannot start session from closed store' });
16
+ if (this.session)
17
+ throw error_1.AskarError.customError({ message: 'Session already opened' });
18
+ const sessionHandle = await askar_1.askar.sessionStart({
19
+ profile: this.profile,
20
+ asTransaction: this.isTxn,
21
+ storeHandle: this.store,
22
+ });
23
+ return new Session_1.Session({ isTxn: this.isTxn, handle: sessionHandle });
24
+ }
25
+ }
26
+ exports.OpenSession = OpenSession;
27
+ //# sourceMappingURL=OpenSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenSession.js","sourceRoot":"","sources":["../../../../../askar-shared/src/store/OpenSession.ts"],"names":[],"mappings":";;;AAEA,oCAAgC;AAChC,oCAAqC;AAErC,uCAAmC;AAEnC,MAAa,WAAW;IAOtB,YAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAA4D;QACpG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC,CAAA;QACpG,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAA;QACrF,MAAM,aAAa,GAAG,MAAM,aAAK,CAAC,YAAY,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,KAAK;YACzB,WAAW,EAAE,IAAI,CAAC,KAAK;SACxB,CAAC,CAAA;QACF,OAAO,IAAI,iBAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;IAClE,CAAC;CACF;AAvBD,kCAuBC"}
@@ -0,0 +1,28 @@
1
+ import type { ScanHandle } from '../crypto';
2
+ import type { EntryObject } from './Entry';
3
+ import type { Store } from './Store';
4
+ export declare class Scan {
5
+ private _handle?;
6
+ private _listHandle?;
7
+ private store;
8
+ private profile?;
9
+ private category;
10
+ private tagFilter?;
11
+ private offset?;
12
+ private limit?;
13
+ private orderBy?;
14
+ private descending?;
15
+ constructor({ store, category, limit, offset, profile, tagFilter, orderBy, descending, }: {
16
+ store: Store;
17
+ profile?: string;
18
+ category: string;
19
+ tagFilter?: Record<string, unknown>;
20
+ offset?: number;
21
+ limit?: number;
22
+ orderBy?: string;
23
+ descending?: boolean;
24
+ });
25
+ get handle(): ScanHandle | undefined;
26
+ private forEachRow;
27
+ fetchAll(): Promise<EntryObject[]>;
28
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scan = void 0;
4
+ const askar_1 = require("../askar");
5
+ const error_1 = require("../error");
6
+ const EntryList_1 = require("./EntryList");
7
+ class Scan {
8
+ constructor({ store, category, limit, offset, profile, tagFilter, orderBy, descending, }) {
9
+ this.category = category;
10
+ this.profile = profile;
11
+ this.tagFilter = tagFilter;
12
+ this.offset = offset;
13
+ this.limit = limit;
14
+ this.orderBy = orderBy;
15
+ this.descending = descending;
16
+ this.store = store;
17
+ }
18
+ get handle() {
19
+ return this._handle;
20
+ }
21
+ async forEachRow(cb) {
22
+ var _a;
23
+ if (!this.handle) {
24
+ if (!((_a = this.store) === null || _a === void 0 ? void 0 : _a.handle))
25
+ throw error_1.AskarError.customError({ message: 'Cannot scan from closed store' });
26
+ this._handle = await askar_1.askar.scanStart({
27
+ storeHandle: this.store.handle,
28
+ profile: this.profile,
29
+ category: this.category,
30
+ tagFilter: this.tagFilter,
31
+ limit: this.limit,
32
+ offset: this.offset,
33
+ orderBy: this.orderBy,
34
+ descending: this.descending,
35
+ });
36
+ }
37
+ if (!this._handle) {
38
+ throw error_1.AskarError.customError({ message: 'Handle is not set. Invalid state reached.' });
39
+ }
40
+ try {
41
+ let recordCount = 0;
42
+ // Loop while limit not reached (or no limit specified)
43
+ while (!this.limit || recordCount < this.limit) {
44
+ const listHandle = await askar_1.askar.scanNext({ scanHandle: this._handle });
45
+ if (!listHandle)
46
+ break;
47
+ this._listHandle = listHandle;
48
+ const list = new EntryList_1.EntryList({ handle: this._listHandle });
49
+ recordCount = recordCount + list.length;
50
+ for (let index = 0; index < list.length; index++) {
51
+ const entry = list.getEntryByIndex(index);
52
+ cb(entry);
53
+ }
54
+ }
55
+ }
56
+ finally {
57
+ askar_1.askar.scanFree({ scanHandle: this._handle });
58
+ }
59
+ }
60
+ async fetchAll() {
61
+ const rows = [];
62
+ await this.forEachRow((row) => rows.push(row.toJson()));
63
+ return rows;
64
+ }
65
+ }
66
+ exports.Scan = Scan;
67
+ //# sourceMappingURL=Scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scan.js","sourceRoot":"","sources":["../../../../../askar-shared/src/store/Scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { Key, SessionHandle } from '../crypto';
2
+ import type { KeyAlgorithm } from '../enums';
3
+ export declare class Session {
4
+ private _handle?;
5
+ private isTxn;
6
+ constructor({ handle, isTxn }: {
7
+ handle?: SessionHandle;
8
+ isTxn: boolean;
9
+ });
10
+ get isTransaction(): boolean;
11
+ get handle(): SessionHandle | undefined;
12
+ count({ category, tagFilter }: {
13
+ category: string;
14
+ tagFilter?: Record<string, unknown>;
15
+ }): Promise<number>;
16
+ fetch({ category, name, forUpdate, isJson, }: {
17
+ category: string;
18
+ name: string;
19
+ forUpdate?: boolean;
20
+ isJson?: boolean;
21
+ }): Promise<import("./Entry").EntryObject | null>;
22
+ fetchAll({ category, forUpdate, limit, tagFilter, isJson, orderBy, descending, }: {
23
+ category: string;
24
+ tagFilter?: Record<string, unknown>;
25
+ limit?: number;
26
+ forUpdate?: boolean;
27
+ orderBy?: string;
28
+ descending?: boolean;
29
+ isJson?: boolean;
30
+ }): Promise<import("./Entry").EntryObject[]>;
31
+ insert({ category, name, expiryMs, tags, value, }: {
32
+ category: string;
33
+ name: string;
34
+ value: string | Record<string, unknown>;
35
+ tags?: Record<string, unknown>;
36
+ expiryMs?: number;
37
+ }): Promise<void>;
38
+ replace({ category, name, expiryMs, tags, value, }: {
39
+ category: string;
40
+ name: string;
41
+ value: string | Record<string, unknown>;
42
+ tags?: Record<string, unknown>;
43
+ expiryMs?: number;
44
+ }): Promise<void>;
45
+ remove({ category, name }: {
46
+ category: string;
47
+ name: string;
48
+ }): Promise<void>;
49
+ removeAll({ category, tagFilter }: {
50
+ category: string;
51
+ tagFilter?: Record<string, unknown>;
52
+ }): Promise<void>;
53
+ insertKey({ name, key, expiryMs, metadata, tags, }: {
54
+ name: string;
55
+ key: Key;
56
+ metadata?: string;
57
+ tags?: Record<string, unknown>;
58
+ expiryMs?: number;
59
+ }): Promise<void>;
60
+ fetchKey({ name, forUpdate }: {
61
+ name: string;
62
+ forUpdate?: boolean;
63
+ }): Promise<import("@openwallet-foundation/askar-nodejs").KeyEntryObject | null>;
64
+ fetchAllKeys({ forUpdate, algorithm, limit, tagFilter, thumbprint, }: {
65
+ algorithm?: KeyAlgorithm;
66
+ thumbprint?: string;
67
+ tagFilter?: Record<string, unknown>;
68
+ limit?: number;
69
+ forUpdate?: boolean;
70
+ }): Promise<import("@openwallet-foundation/askar-nodejs").KeyEntryObject[]>;
71
+ updateKey({ name, expiryMs, metadata, tags, }: {
72
+ name: string;
73
+ metadata?: string;
74
+ tags?: Record<string, unknown>;
75
+ expiryMs?: number;
76
+ }): Promise<void>;
77
+ removeKey({ name }: {
78
+ name: string;
79
+ }): Promise<void>;
80
+ /**
81
+ * @note also closes the session
82
+ */
83
+ commit(): Promise<void>;
84
+ rollback(): Promise<void>;
85
+ close(): Promise<void>;
86
+ }
@@ -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":["../../../../../askar-shared/src/store/Session.ts"],"names":[],"mappings":";;;AAGA,mCAA+B;AAE/B,oCAAgC;AAChC,4DAAwD;AACxD,oCAAqC;AAErC,mCAA+B;AAC/B,2CAAuC;AACvC,iDAA6C;AAE7C,MAAa,OAAO;IAIlB,YAAmB,EAAE,MAAM,EAAE,KAAK,EAA8C;QAC9E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAA6D;QACnG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAA;QAC/F,OAAO,MAAM,aAAK,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACtF,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,EACjB,QAAQ,EACR,IAAI,EACJ,SAAS,GAAG,KAAK,EACjB,MAAM,GAMP;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAA;QAEjG,MAAM,MAAM,GAAG,MAAM,aAAK,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAClG,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAExB,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QACtD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAExC,MAAM,CAAC,IAAI,EAAE,CAAA;QAEb,OAAO,WAAW,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,EACpB,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,SAAS,EACT,MAAM,EACN,OAAO,EACP,UAAU,GASX;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC,CAAA;QACrG,MAAM,MAAM,GAAG,MAAM,aAAK,CAAC,eAAe,CAAC;YACzC,SAAS;YACT,KAAK;YACL,SAAS;YACT,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,QAAQ;YACR,OAAO;YACP,UAAU;SACX,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QAEtB,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAE9C,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAEvB,OAAO,YAAY,CAAA;IACrB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAClB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,KAAK,GAON;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAA;QAClG,MAAM,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEjF,MAAM,aAAK,CAAC,aAAa,CAAC;YACxB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,eAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpD,QAAQ;YACR,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,SAAS,EAAE,+BAAc,CAAC,MAAM;SACjC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,KAAK,GAON;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAA;QACnG,MAAM,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEjF,MAAM,aAAK,CAAC,aAAa,CAAC;YACxB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,eAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpD,QAAQ;YACR,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,SAAS,EAAE,+BAAc,CAAC,OAAO;SAClC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAsC;QACxE,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAA;QAElG,MAAM,aAAK,CAAC,aAAa,CAAC;YACxB,IAAI;YACJ,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,SAAS,EAAE,+BAAc,CAAC,MAAM;SACjC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAA6D;QACvG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAA;QAEtG,MAAM,aAAK,CAAC,gBAAgB,CAAC;YAC3B,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,SAAS;SACV,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,EACrB,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,IAAI,GAOL;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,CAAA;QAExG,MAAM,aAAK,CAAC,gBAAgB,CAAC;YAC3B,QAAQ;YACR,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,cAAc,EAAE,GAAG,CAAC,MAAM;SAC3B,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAyC;QACtF,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAA;QAEvG,MAAM,MAAM,GAAG,MAAM,aAAK,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3F,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAExB,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QAC/D,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAE1B,OAAO,cAAc,CAAA;IACvB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EACxB,SAAS,GAAG,KAAK,EACjB,SAAS,EACT,KAAK,EACL,SAAS,EACT,UAAU,GAOX;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAA;QAC1G,MAAM,MAAM,GAAG,MAAM,aAAK,CAAC,mBAAmB,CAAC;YAC7C,SAAS;YACT,KAAK;YACL,SAAS;YACT,UAAU;YACV,SAAS;YACT,aAAa,EAAE,IAAI,CAAC,MAAM;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QAEtB,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,EAAE,CAAA;QAC9C,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAE1B,OAAO,eAAe,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,IAAI,GAML;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,CAAA;QACxG,MAAM,aAAK,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9F,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAoB;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,CAAA;QACxG,MAAM,aAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACpE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAA;QAC7F,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAA;QAC/F,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAA;QAC5F,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;CACF;AA9QD,0BA8QC"}
@@ -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("@openwallet-foundation/askar-nodejs").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
+ }