@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,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration = void 0;
4
+ const askar_1 = require("./askar");
5
+ class Migration {
6
+ static async migrate(options) {
7
+ await askar_1.askar.migrateIndySdk(options);
8
+ }
9
+ }
10
+ exports.Migration = Migration;
11
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAS/B,MAAa,SAAS;IACb,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAyB;QACnD,MAAM,aAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;CACF;AAJD,8BAIC"}
@@ -0,0 +1,21 @@
1
+ import type { EntryListHandle } from '../crypto';
2
+ export type EntryObject = {
3
+ name: string;
4
+ value: Record<string, unknown> | string;
5
+ tags: Record<string, unknown>;
6
+ category: string;
7
+ };
8
+ export declare class Entry {
9
+ private _list;
10
+ private _pos;
11
+ constructor({ list, position }: {
12
+ list: EntryListHandle;
13
+ position: number;
14
+ });
15
+ get category(): string;
16
+ get name(): string;
17
+ get value(): string;
18
+ private get rawValue();
19
+ get tags(): Record<string, unknown>;
20
+ toJson(shouldParseValueToJson?: boolean): EntryObject;
21
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entry = void 0;
4
+ const buffer_1 = require("buffer");
5
+ class Entry {
6
+ constructor({ list, position }) {
7
+ this._list = list;
8
+ this._pos = position;
9
+ }
10
+ get category() {
11
+ return this._list.getCategory(this._pos);
12
+ }
13
+ get name() {
14
+ return this._list.getName(this._pos);
15
+ }
16
+ get value() {
17
+ return buffer_1.Buffer.from(this.rawValue).toString();
18
+ }
19
+ get rawValue() {
20
+ return this._list.getValue(this._pos);
21
+ }
22
+ get tags() {
23
+ const tags = this._list.getTags(this._pos);
24
+ if (!tags)
25
+ return {};
26
+ return JSON.parse(tags);
27
+ }
28
+ toJson(shouldParseValueToJson = false) {
29
+ return {
30
+ name: this.name,
31
+ value: shouldParseValueToJson ? JSON.parse(this.value) : this.value,
32
+ tags: this.tags,
33
+ category: this.category,
34
+ };
35
+ }
36
+ }
37
+ exports.Entry = Entry;
38
+ //# sourceMappingURL=Entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entry.js","sourceRoot":"","sources":["../../src/store/Entry.ts"],"names":[],"mappings":";;;AAEA,mCAA+B;AAS/B,MAAa,KAAK;IAIhB,YAAmB,EAAE,IAAI,EAAE,QAAQ,EAA+C;QAChF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;IACtB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC9C,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,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;IAEM,MAAM,CAAC,sBAAsB,GAAG,KAAK;QAC1C,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;YAChG,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;CACF;AAxCD,sBAwCC"}
@@ -0,0 +1,17 @@
1
+ import type { EntryObject } from '.';
2
+ import type { EntryListHandle } from '../crypto';
3
+ import { Entry } from './Entry';
4
+ export declare class EntryList {
5
+ private _handle;
6
+ private _length;
7
+ constructor({ handle, length }: {
8
+ handle: EntryListHandle;
9
+ length?: number;
10
+ });
11
+ get handle(): EntryListHandle;
12
+ get length(): number;
13
+ getEntryByIndex(index: number): Entry;
14
+ private forEachEntry;
15
+ find(cb: (entry: Entry, index?: number) => boolean): Entry | undefined;
16
+ toArray(valuesAreJson?: boolean): EntryObject[];
17
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntryList = void 0;
4
+ const askar_1 = require("../askar");
5
+ const Entry_1 = require("./Entry");
6
+ class EntryList {
7
+ constructor({ handle, length }) {
8
+ this._length = 0;
9
+ this._handle = handle;
10
+ this._length = length || askar_1.askar.entryListCount({ entryListHandle: handle });
11
+ }
12
+ get handle() {
13
+ return this._handle;
14
+ }
15
+ get length() {
16
+ return this._length;
17
+ }
18
+ getEntryByIndex(index) {
19
+ return new Entry_1.Entry({ list: this.handle, position: index });
20
+ }
21
+ forEachEntry(cb) {
22
+ for (let i = 0; i < this.length; i++) {
23
+ cb(this.getEntryByIndex(i), i);
24
+ }
25
+ }
26
+ find(cb) {
27
+ for (let i = 0; i < this.length; i++) {
28
+ const item = this.getEntryByIndex(i);
29
+ if (cb(item))
30
+ return item;
31
+ }
32
+ }
33
+ toArray(valuesAreJson) {
34
+ const list = [];
35
+ this.forEachEntry((entry) => list.push(entry.toJson(valuesAreJson)));
36
+ return list;
37
+ }
38
+ }
39
+ exports.EntryList = EntryList;
40
+ //# sourceMappingURL=EntryList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryList.js","sourceRoot":"","sources":["../../src/store/EntryList.ts"],"names":[],"mappings":";;;AAGA,oCAAgC;AAEhC,mCAA+B;AAE/B,MAAa,SAAS;IAIpB,YAAmB,EAAE,MAAM,EAAE,MAAM,EAAgD;QAF3E,YAAO,GAAG,CAAC,CAAA;QAGjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,aAAK,CAAC,cAAc,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAEM,eAAe,CAAC,KAAa;QAClC,OAAO,IAAI,aAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1D,CAAC;IAEO,YAAY,CAAC,EAA6C;QAChE,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,IAAI,CAAC,EAA6C;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,EAAE,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;QAC3B,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,aAAuB;QACpC,MAAM,IAAI,GAAkB,EAAE,CAAA;QAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAvCD,8BAuCC"}
@@ -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":["../../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":["../../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":["../../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":["../../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("./KeyEntry").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("./KeyEntry").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
+ }