dop-wallet-v6 1.2.2 → 1.2.4

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 (155) hide show
  1. package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +1 -1
  2. package/dist/services/artifacts/artifact-downloader.d.ts +1 -1
  3. package/dist/services/artifacts/artifact-downloader.js.map +1 -1
  4. package/dist/services/artifacts/artifact-hash.d.ts +1 -1
  5. package/dist/services/artifacts/artifact-hash.js.map +1 -1
  6. package/dist/services/artifacts/artifact-util.d.ts +1 -1
  7. package/dist/services/artifacts/artifact-util.js.map +1 -1
  8. package/dist/services/dop/core/__tests__/providers.test.js +2 -2
  9. package/dist/services/dop/core/__tests__/providers.test.js.map +1 -1
  10. package/dist/services/dop/core/artifacts.d.ts +2 -2
  11. package/dist/services/dop/core/artifacts.js.map +1 -1
  12. package/dist/services/dop/core/encrypts.d.ts +1 -1
  13. package/dist/services/dop/core/encrypts.js.map +1 -1
  14. package/dist/services/dop/core/engine.d.ts +1 -1
  15. package/dist/services/dop/core/engine.js.map +1 -1
  16. package/dist/services/dop/core/init.d.ts +2 -2
  17. package/dist/services/dop/core/init.js.map +1 -1
  18. package/dist/services/dop/core/load-provider.d.ts +1 -1
  19. package/dist/services/dop/core/load-provider.js.map +1 -1
  20. package/dist/services/dop/core/merkletree.d.ts +2 -2
  21. package/dist/services/dop/core/merkletree.js.map +1 -1
  22. package/dist/services/dop/core/prover.d.ts +1 -1
  23. package/dist/services/dop/core/prover.js.map +1 -1
  24. package/dist/services/dop/core/providers.d.ts +2 -2
  25. package/dist/services/dop/core/providers.js.map +1 -1
  26. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js.map +1 -1
  27. package/dist/services/dop/dop-txids/blinded-commitments.d.ts +1 -1
  28. package/dist/services/dop/dop-txids/blinded-commitments.js.map +1 -1
  29. package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.d.ts +1 -1
  30. package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.js.map +1 -1
  31. package/dist/services/dop/dop-txids/dop-txid-merkletrees.d.ts +1 -1
  32. package/dist/services/dop/dop-txids/dop-txid-merkletrees.js.map +1 -1
  33. package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.d.ts +1 -1
  34. package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.js.map +1 -1
  35. package/dist/services/dop/dop-txids/graphql/index.js +1 -1
  36. package/dist/services/dop/dop-txids/graphql/index.js.map +1 -1
  37. package/dist/services/dop/history/transaction-history.d.ts +2 -2
  38. package/dist/services/dop/history/transaction-history.js.map +1 -1
  39. package/dist/services/dop/index.d.ts +1 -0
  40. package/dist/services/dop/index.js +1 -0
  41. package/dist/services/dop/index.js.map +1 -1
  42. package/dist/services/dop/process/extract-transaction-data.d.ts +1 -1
  43. package/dist/services/dop/process/extract-transaction-data.js.map +1 -1
  44. package/dist/services/dop/profile/__tests__/profile-manager.test.d.ts +1 -0
  45. package/dist/services/dop/profile/__tests__/profile-manager.test.js +170 -0
  46. package/dist/services/dop/profile/__tests__/profile-manager.test.js.map +1 -0
  47. package/dist/services/dop/profile/__tests__/selective-transparency.test.d.ts +1 -0
  48. package/dist/services/dop/profile/__tests__/selective-transparency.test.js +256 -0
  49. package/dist/services/dop/profile/__tests__/selective-transparency.test.js.map +1 -0
  50. package/dist/services/dop/profile/__tests__/storage.test.d.ts +1 -0
  51. package/dist/services/dop/profile/__tests__/storage.test.js +174 -0
  52. package/dist/services/dop/profile/__tests__/storage.test.js.map +1 -0
  53. package/dist/services/dop/profile/index.d.ts +3 -0
  54. package/dist/services/dop/profile/index.js +20 -0
  55. package/dist/services/dop/profile/index.js.map +1 -0
  56. package/dist/services/dop/profile/profile-manager.d.ts +32 -0
  57. package/dist/services/dop/profile/profile-manager.js +235 -0
  58. package/dist/services/dop/profile/profile-manager.js.map +1 -0
  59. package/dist/services/dop/profile/selective-transparency.d.ts +82 -0
  60. package/dist/services/dop/profile/selective-transparency.js +447 -0
  61. package/dist/services/dop/profile/selective-transparency.js.map +1 -0
  62. package/dist/services/dop/profile/storage.d.ts +27 -0
  63. package/dist/services/dop/profile/storage.js +648 -0
  64. package/dist/services/dop/profile/storage.js.map +1 -0
  65. package/dist/services/dop/profile/types.d.ts +106 -0
  66. package/dist/services/dop/profile/types.js +3 -0
  67. package/dist/services/dop/profile/types.js.map +1 -0
  68. package/dist/services/dop/profile/usage-example.d.ts +11 -0
  69. package/dist/services/dop/profile/usage-example.js +143 -0
  70. package/dist/services/dop/profile/usage-example.js.map +1 -0
  71. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js.map +1 -1
  72. package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.d.ts +1 -1
  73. package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.js.map +1 -1
  74. package/dist/services/dop/quick-sync/V2/graphql/index.js +1 -1
  75. package/dist/services/dop/quick-sync/V2/graphql/index.js.map +1 -1
  76. package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.d.ts +1 -1
  77. package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.js.map +1 -1
  78. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +1 -1
  79. package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.d.ts +1 -1
  80. package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.js.map +1 -1
  81. package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.d.ts +1 -1
  82. package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.js.map +1 -1
  83. package/dist/services/dop/quick-sync/graph-query.d.ts +1 -1
  84. package/dist/services/dop/quick-sync/graph-query.js.map +1 -1
  85. package/dist/services/dop/quick-sync/quick-sync-events.d.ts +1 -1
  86. package/dist/services/dop/quick-sync/quick-sync-events.js.map +1 -1
  87. package/dist/services/dop/quick-sync/shared-formatters.d.ts +1 -1
  88. package/dist/services/dop/quick-sync/shared-formatters.js.map +1 -1
  89. package/dist/services/dop/util/__tests__/bytes-util.test.js +1 -1
  90. package/dist/services/dop/util/__tests__/bytes-util.test.js.map +1 -1
  91. package/dist/services/dop/util/bytes.d.ts +1 -1
  92. package/dist/services/dop/util/bytes.js.map +1 -1
  93. package/dist/services/dop/util/crypto.d.ts +2 -2
  94. package/dist/services/dop/util/crypto.js.map +1 -1
  95. package/dist/services/dop/wallets/__tests__/balances-live.test.js.map +1 -1
  96. package/dist/services/dop/wallets/__tests__/balances-update.test.js.map +1 -1
  97. package/dist/services/dop/wallets/__tests__/balances.test.js.map +1 -1
  98. package/dist/services/dop/wallets/__tests__/wallets.test.js.map +1 -1
  99. package/dist/services/dop/wallets/balance-update.d.ts +2 -2
  100. package/dist/services/dop/wallets/balance-update.js.map +1 -1
  101. package/dist/services/dop/wallets/balances.d.ts +1 -1
  102. package/dist/services/dop/wallets/balances.js.map +1 -1
  103. package/dist/services/dop/wallets/wallets.d.ts +2 -2
  104. package/dist/services/dop/wallets/wallets.js.map +1 -1
  105. package/dist/services/ethers/ethers-util.js.map +1 -1
  106. package/dist/services/transactions/__tests__/proof-cache.test.js.map +1 -1
  107. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +6 -6
  108. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +1 -1
  109. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js.map +1 -1
  110. package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +1 -1
  111. package/dist/services/transactions/__tests__/tx-notes.test.js.map +1 -1
  112. package/dist/services/transactions/__tests__/tx-transfer.test.js +9 -9
  113. package/dist/services/transactions/__tests__/tx-transfer.test.js.map +1 -1
  114. package/dist/services/transactions/proof-cache.d.ts +1 -1
  115. package/dist/services/transactions/proof-cache.js.map +1 -1
  116. package/dist/services/transactions/tx-cross-contract-calls.d.ts +2 -2
  117. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
  118. package/dist/services/transactions/tx-decrypt.d.ts +1 -1
  119. package/dist/services/transactions/tx-decrypt.js.map +1 -1
  120. package/dist/services/transactions/tx-encrypt-base-token.d.ts +1 -1
  121. package/dist/services/transactions/tx-encrypt-base-token.js.map +1 -1
  122. package/dist/services/transactions/tx-encrypt.d.ts +1 -1
  123. package/dist/services/transactions/tx-encrypt.js.map +1 -1
  124. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.d.ts +2 -2
  125. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js.map +1 -1
  126. package/dist/services/transactions/tx-gas-details.d.ts +1 -1
  127. package/dist/services/transactions/tx-gas-details.js.map +1 -1
  128. package/dist/services/transactions/tx-generator.d.ts +2 -2
  129. package/dist/services/transactions/tx-generator.js.map +1 -1
  130. package/dist/services/transactions/tx-notes.d.ts +2 -2
  131. package/dist/services/transactions/tx-notes.js.map +1 -1
  132. package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
  133. package/dist/services/transactions/tx-nullifiers.js.map +1 -1
  134. package/dist/services/transactions/tx-proof-decrypt.d.ts +1 -1
  135. package/dist/services/transactions/tx-proof-decrypt.js.map +1 -1
  136. package/dist/services/transactions/tx-proof-transfer.d.ts +1 -1
  137. package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
  138. package/dist/services/transactions/tx-transfer.d.ts +1 -1
  139. package/dist/services/transactions/tx-transfer.js.map +1 -1
  140. package/dist/tests/helper.test.d.ts +1 -1
  141. package/dist/tests/helper.test.js.map +1 -1
  142. package/dist/tests/mocks.test.d.ts +2 -2
  143. package/dist/tests/mocks.test.js.map +1 -1
  144. package/dist/tests/poi/test-wallet-poi-requester.test.d.ts +2 -2
  145. package/dist/tests/poi/test-wallet-poi-requester.test.js.map +1 -1
  146. package/dist/tests/setup.test.d.ts +1 -1
  147. package/dist/tests/setup.test.js.map +1 -1
  148. package/dist/tests/stubs/engine-stubs.test.d.ts +1 -1
  149. package/dist/tests/stubs/engine-stubs.test.js.map +1 -1
  150. package/dist/utils/blocked-address.js.map +1 -1
  151. package/dist/utils/error.js.map +1 -1
  152. package/dist/utils/gas-price.d.ts +1 -1
  153. package/dist/utils/gas-price.js.map +1 -1
  154. package/package.json +13 -3
  155. package/postinstall.js +1 -1
@@ -0,0 +1,648 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setProfileStorage = exports.getProfileStorage = exports.ProfileStorage = void 0;
4
+ const engine_1 = require("../core/engine");
5
+ const error_1 = require("../../../utils/error");
6
+ // Database key prefixes for different data types
7
+ const PROFILE_PREFIX = 'profile:';
8
+ const SETTINGS_PREFIX = 'settings:';
9
+ const PROOF_PREFIX = 'proof:';
10
+ const VIEWING_REQUEST_PREFIX = 'viewing:';
11
+ /**
12
+ * Storage utility for profile and selective transparency data using LevelDown
13
+ */
14
+ class ProfileStorage {
15
+ db;
16
+ constructor(db) {
17
+ this.db = db;
18
+ }
19
+ // Profile operations
20
+ async getProfile(walletId) {
21
+ try {
22
+ const key = `${PROFILE_PREFIX}${walletId}`;
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ const data = await new Promise((resolve, reject) => {
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ this.db.get(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ (err, value) => {
29
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
30
+ if (err) {
31
+ reject(err);
32
+ }
33
+ else {
34
+ resolve(value);
35
+ }
36
+ });
37
+ });
38
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
39
+ return JSON.parse(data.toString());
40
+ }
41
+ catch (err) {
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ const error = err;
45
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
46
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
47
+ if ( // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
48
+ error.notFound || error.type === 'NotFoundError' || error.message?.includes('NotFound')) {
49
+ return undefined;
50
+ }
51
+ throw (0, error_1.reportAndSanitizeError)('getProfile', err);
52
+ }
53
+ }
54
+ async setProfile(walletId, profile) {
55
+ try {
56
+ const key = `${PROFILE_PREFIX}${walletId}`;
57
+ // eslint-disable-next-line no-await-in-loop
58
+ await new Promise((resolve, reject) => {
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
+ this.db.put(key, JSON.stringify(profile), // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ (err) => {
63
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
64
+ if (err) {
65
+ reject(err);
66
+ }
67
+ else {
68
+ resolve();
69
+ }
70
+ });
71
+ });
72
+ }
73
+ catch (err) {
74
+ throw (0, error_1.reportAndSanitizeError)('setProfile', err);
75
+ }
76
+ }
77
+ async deleteProfile(walletId) {
78
+ try {
79
+ const key = `${PROFILE_PREFIX}${walletId}`;
80
+ // eslint-disable-next-line no-await-in-loop
81
+ await new Promise((resolve, reject) => {
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+ this.db.del(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ (err) => {
86
+ if (err && !err.notFound && err.type !== 'NotFoundError' && !err.message?.includes('NotFound')) {
87
+ reject(err);
88
+ }
89
+ else {
90
+ resolve();
91
+ }
92
+ });
93
+ });
94
+ }
95
+ catch (err) {
96
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
+ const error = err;
99
+ if (!error.notFound && error.type !== 'NotFoundError' && !error.message?.includes('NotFound')) {
100
+ throw (0, error_1.reportAndSanitizeError)('deleteProfile', err);
101
+ }
102
+ }
103
+ }
104
+ // Selective transparency settings operations
105
+ async getSettings(walletId) {
106
+ try {
107
+ const key = `${SETTINGS_PREFIX}${walletId}`;
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ const data = await new Promise((resolve, reject) => {
110
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
+ this.db.get(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
+ (err, value) => {
114
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
115
+ if (err) {
116
+ reject(err);
117
+ }
118
+ else {
119
+ resolve(value);
120
+ }
121
+ });
122
+ });
123
+ const settings = JSON.parse(data.toString());
124
+ // Convert date strings back to Date objects
125
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
126
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
127
+ if (settings.createdAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
128
+ settings.createdAt = new Date(settings.createdAt);
129
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
130
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
131
+ if (settings.updatedAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
132
+ settings.updatedAt = new Date(settings.updatedAt);
133
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
134
+ return settings;
135
+ }
136
+ catch (err) {
137
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
138
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
139
+ const error = err;
140
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
141
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
142
+ if ( // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
143
+ error.notFound || error.type === 'NotFoundError' || error.message?.includes('NotFound')) {
144
+ return undefined;
145
+ }
146
+ throw (0, error_1.reportAndSanitizeError)('getSettings', err);
147
+ }
148
+ }
149
+ async setSettings(walletId, settings) {
150
+ try {
151
+ const key = `${SETTINGS_PREFIX}${walletId}`;
152
+ // eslint-disable-next-line no-await-in-loop
153
+ await new Promise((resolve, reject) => {
154
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+ this.db.put(key, JSON.stringify(settings), // eslint-disable-next-line @typescript-eslint/no-explicit-any
157
+ (err) => {
158
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
159
+ if (err) {
160
+ reject(err);
161
+ }
162
+ else {
163
+ resolve();
164
+ }
165
+ });
166
+ });
167
+ }
168
+ catch (err) {
169
+ throw (0, error_1.reportAndSanitizeError)('setSettings', err);
170
+ }
171
+ }
172
+ async deleteSettings(walletId) {
173
+ try {
174
+ const key = `${SETTINGS_PREFIX}${walletId}`;
175
+ // eslint-disable-next-line no-await-in-loop
176
+ await new Promise((resolve, reject) => {
177
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
+ this.db.del(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
180
+ (err) => {
181
+ if (err && !err.notFound) {
182
+ reject(err);
183
+ }
184
+ else {
185
+ resolve();
186
+ }
187
+ });
188
+ });
189
+ }
190
+ catch (err) {
191
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
192
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
193
+ const error = err;
194
+ if (!error.notFound) {
195
+ throw (0, error_1.reportAndSanitizeError)('deleteSettings', err);
196
+ }
197
+ }
198
+ }
199
+ // Visibility proof operations
200
+ async getProof(proofId) {
201
+ try {
202
+ const key = `${PROOF_PREFIX}${proofId}`;
203
+ const data = await new Promise((resolve, reject) => {
204
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
205
+ this.db.get(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
206
+ (err, value) => {
207
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
208
+ if (err) {
209
+ reject(err);
210
+ }
211
+ else {
212
+ resolve(value);
213
+ }
214
+ });
215
+ });
216
+ const proof = JSON.parse(data.toString());
217
+ // Convert date strings back to Date objects
218
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
219
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
220
+ if (proof.createdAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
221
+ proof.createdAt = new Date(proof.createdAt);
222
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
223
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
224
+ if (proof.expiresAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
225
+ proof.expiresAt = new Date(proof.expiresAt);
226
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
227
+ return proof;
228
+ }
229
+ catch // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
+ (err) {
231
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
232
+ if ( // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
233
+ err.notFound || err.type === 'NotFoundError' || err.message?.includes('NotFound')) {
234
+ return undefined;
235
+ }
236
+ throw (0, error_1.reportAndSanitizeError)('getProof', err);
237
+ }
238
+ }
239
+ async setProof(proofId, proof) {
240
+ try {
241
+ const key = `${PROOF_PREFIX}${proofId}`;
242
+ // eslint-disable-next-line no-await-in-loop
243
+ await new Promise((resolve, reject) => {
244
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
245
+ this.db.put(key, JSON.stringify(proof), // eslint-disable-next-line @typescript-eslint/no-explicit-any
246
+ (err) => {
247
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
248
+ if (err) {
249
+ reject(err);
250
+ }
251
+ else {
252
+ resolve();
253
+ }
254
+ });
255
+ });
256
+ }
257
+ catch (err) {
258
+ throw (0, error_1.reportAndSanitizeError)('setProof', err);
259
+ }
260
+ }
261
+ async deleteProof(proofId) {
262
+ try {
263
+ const key = `${PROOF_PREFIX}${proofId}`;
264
+ // eslint-disable-next-line no-await-in-loop
265
+ await new Promise((resolve, reject) => {
266
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
267
+ this.db.del(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
268
+ (err) => {
269
+ if (err && !err.notFound) {
270
+ reject(err);
271
+ }
272
+ else {
273
+ resolve();
274
+ }
275
+ });
276
+ });
277
+ }
278
+ catch // eslint-disable-next-line @typescript-eslint/no-explicit-any
279
+ (err) {
280
+ if (!err.notFound) {
281
+ throw (0, error_1.reportAndSanitizeError)('deleteProof', err);
282
+ }
283
+ }
284
+ }
285
+ // Viewing request operations
286
+ async getViewingRequest(requestId) {
287
+ try {
288
+ // Since the key now includes wallet ID, we need to scan to find the request
289
+ const iterator = // eslint-disable-next-line @typescript-eslint/no-explicit-any
290
+ this.db.iterator({
291
+ gte: `${VIEWING_REQUEST_PREFIX}`,
292
+ lt: `${VIEWING_REQUEST_PREFIX}~`,
293
+ });
294
+ return new Promise((resolve, reject) => {
295
+ const processNext = () => {
296
+ iterator.next(// eslint-disable-next-line @typescript-eslint/no-explicit-any
297
+ (err, key, value) => {
298
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
299
+ if (err) {
300
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('getViewingRequest', err)));
301
+ return;
302
+ }
303
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
304
+ if (key === undefined) {
305
+ iterator.end(() => resolve(undefined));
306
+ return;
307
+ }
308
+ try {
309
+ const request = JSON.parse(value.toString());
310
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
311
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
312
+ if (request.id === requestId) {
313
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
314
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
315
+ if (request.createdAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
316
+ request.createdAt = new Date(request.createdAt);
317
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
318
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
319
+ if (request.expiresAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
320
+ request.expiresAt = new Date(request.expiresAt);
321
+ iterator.end(() => resolve(request));
322
+ return;
323
+ }
324
+ }
325
+ catch (parseErr) {
326
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('getViewingRequest', parseErr)));
327
+ return;
328
+ }
329
+ processNext();
330
+ });
331
+ };
332
+ processNext();
333
+ });
334
+ }
335
+ catch (err) {
336
+ throw (0, error_1.reportAndSanitizeError)('getViewingRequest', err);
337
+ }
338
+ }
339
+ async setViewingRequest(requestId, request) {
340
+ try {
341
+ // Store with wallet ID included in the key for efficient querying
342
+ const key = `${VIEWING_REQUEST_PREFIX}${request.walletId}:${requestId}`;
343
+ // eslint-disable-next-line no-await-in-loop
344
+ await new Promise((resolve, reject) => {
345
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
346
+ this.db.put(key, JSON.stringify(request), // eslint-disable-next-line @typescript-eslint/no-explicit-any
347
+ (err) => {
348
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
349
+ if (err) {
350
+ reject(err);
351
+ }
352
+ else {
353
+ resolve();
354
+ }
355
+ });
356
+ });
357
+ }
358
+ catch (err) {
359
+ throw (0, error_1.reportAndSanitizeError)('setViewingRequest', err);
360
+ }
361
+ }
362
+ async deleteViewingRequest(requestId) {
363
+ try {
364
+ const key = `${VIEWING_REQUEST_PREFIX}${requestId}`;
365
+ // eslint-disable-next-line no-await-in-loop
366
+ await new Promise((resolve, reject) => {
367
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
368
+ this.db.del(key, // eslint-disable-next-line @typescript-eslint/no-explicit-any
369
+ (err) => {
370
+ if (err && !err.notFound) {
371
+ reject(err);
372
+ }
373
+ else {
374
+ resolve();
375
+ }
376
+ });
377
+ });
378
+ }
379
+ catch // eslint-disable-next-line @typescript-eslint/no-explicit-any
380
+ (err) {
381
+ if (!err.notFound) {
382
+ throw (0, error_1.reportAndSanitizeError)('deleteViewingRequest', err);
383
+ }
384
+ }
385
+ }
386
+ // Batch operations for better performance
387
+ async getAllProofsForWallet(walletId) {
388
+ try {
389
+ const proofs = [];
390
+ const iterator = // eslint-disable-next-line @typescript-eslint/no-explicit-any
391
+ this.db.iterator({
392
+ gte: `${PROOF_PREFIX}${walletId}:`,
393
+ lt: `${PROOF_PREFIX}${walletId}:~`,
394
+ });
395
+ return new Promise((resolve, reject) => {
396
+ const processNext = () => {
397
+ iterator.next(// eslint-disable-next-line @typescript-eslint/no-explicit-any
398
+ (err, key, value) => {
399
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
400
+ if (err) {
401
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('getAllProofsForWallet', err)));
402
+ return;
403
+ }
404
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
405
+ if (key === undefined) {
406
+ iterator.end(() => resolve(proofs));
407
+ return;
408
+ }
409
+ try {
410
+ const proof = JSON.parse(value.toString());
411
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
412
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
413
+ if (proof.createdAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
414
+ proof.createdAt = new Date(proof.createdAt);
415
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
416
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
417
+ if (proof.expiresAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
418
+ proof.expiresAt = new Date(proof.expiresAt);
419
+ proofs.push(proof);
420
+ }
421
+ catch (parseErr) {
422
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('getAllProofsForWallet', parseErr)));
423
+ return;
424
+ }
425
+ processNext();
426
+ });
427
+ };
428
+ processNext();
429
+ });
430
+ }
431
+ catch (err) {
432
+ throw (0, error_1.reportAndSanitizeError)('getAllProofsForWallet', err);
433
+ }
434
+ }
435
+ async getAllViewingRequestsForWallet(walletId) {
436
+ try {
437
+ const requests = [];
438
+ const iterator = // eslint-disable-next-line @typescript-eslint/no-explicit-any
439
+ this.db.iterator({
440
+ gte: `${VIEWING_REQUEST_PREFIX}${walletId}:`,
441
+ lt: `${VIEWING_REQUEST_PREFIX}${walletId}:~`,
442
+ });
443
+ return new Promise((resolve, reject) => {
444
+ const processNext = () => {
445
+ iterator.next(// eslint-disable-next-line @typescript-eslint/no-explicit-any
446
+ (err, key, value) => {
447
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
448
+ if (err) {
449
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('getAllViewingRequestsForWallet', err)));
450
+ return;
451
+ }
452
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
453
+ if (key === undefined) {
454
+ iterator.end(() => resolve(requests));
455
+ return;
456
+ }
457
+ try {
458
+ const request = JSON.parse(value.toString());
459
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
460
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
461
+ if (request.createdAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
462
+ request.createdAt = new Date(request.createdAt);
463
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
464
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
465
+ if (request.expiresAt) // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
466
+ request.expiresAt = new Date(request.expiresAt);
467
+ requests.push(request);
468
+ }
469
+ catch (parseErr) {
470
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('getAllViewingRequestsForWallet', parseErr)));
471
+ return;
472
+ }
473
+ processNext();
474
+ });
475
+ };
476
+ processNext();
477
+ });
478
+ }
479
+ catch (err) {
480
+ throw (0, error_1.reportAndSanitizeError)('getAllViewingRequestsForWallet', err);
481
+ }
482
+ }
483
+ // Cleanup expired data
484
+ async cleanupExpiredProofs() {
485
+ try {
486
+ const now = new Date();
487
+ const iterator = // eslint-disable-next-line @typescript-eslint/no-explicit-any
488
+ this.db.iterator({
489
+ gte: PROOF_PREFIX,
490
+ lt: `${PROOF_PREFIX}~`,
491
+ });
492
+ const expiredKeys = [];
493
+ return new Promise((resolve, reject) => {
494
+ const processNext = () => {
495
+ iterator.next(// eslint-disable-next-line @typescript-eslint/no-explicit-any
496
+ (err, key, value) => {
497
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
498
+ if (err) {
499
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('cleanupExpiredProofs', err)));
500
+ return;
501
+ }
502
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
503
+ if (key === undefined) {
504
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
505
+ iterator.end(async () => {
506
+ // Delete expired keys
507
+ // eslint-disable-next-line no-await-in-loop
508
+ for (const expiredKey of expiredKeys) {
509
+ try {
510
+ // eslint-disable-next-line no-await-in-loop
511
+ await new Promise((resolve, reject) => {
512
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
513
+ this.db.del(expiredKey, // eslint-disable-next-line @typescript-eslint/no-explicit-any
514
+ (err) => {
515
+ if (err && !err.notFound) {
516
+ reject(err);
517
+ }
518
+ else {
519
+ resolve();
520
+ }
521
+ });
522
+ });
523
+ }
524
+ catch (delErr) {
525
+ // Ignore if key doesn't exist
526
+ }
527
+ }
528
+ resolve();
529
+ });
530
+ return;
531
+ }
532
+ try {
533
+ const proof = JSON.parse(value.toString());
534
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
535
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
536
+ if (proof.expiresAt && new Date(proof.expiresAt) < now) {
537
+ expiredKeys.push(key.toString());
538
+ }
539
+ }
540
+ catch (parseErr) {
541
+ // Skip malformed entries
542
+ }
543
+ processNext();
544
+ });
545
+ };
546
+ processNext();
547
+ });
548
+ }
549
+ catch (err) {
550
+ throw (0, error_1.reportAndSanitizeError)('cleanupExpiredProofs', err);
551
+ }
552
+ }
553
+ async cleanupExpiredViewingRequests() {
554
+ try {
555
+ const now = new Date();
556
+ const iterator = // eslint-disable-next-line @typescript-eslint/no-explicit-any
557
+ this.db.iterator({
558
+ gte: VIEWING_REQUEST_PREFIX,
559
+ lt: `${VIEWING_REQUEST_PREFIX}~`,
560
+ });
561
+ const expiredKeys = [];
562
+ return new Promise((resolve, reject) => {
563
+ const processNext = () => {
564
+ iterator.next(// eslint-disable-next-line @typescript-eslint/no-explicit-any
565
+ (err, key, value) => {
566
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
567
+ if (err) {
568
+ iterator.end(() => reject((0, error_1.reportAndSanitizeError)('cleanupExpiredViewingRequests', err)));
569
+ return;
570
+ }
571
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
572
+ if (key === undefined) {
573
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
574
+ iterator.end(async () => {
575
+ // Delete expired keys
576
+ // eslint-disable-next-line no-await-in-loop
577
+ for (const expiredKey of expiredKeys) {
578
+ try {
579
+ // eslint-disable-next-line no-await-in-loop
580
+ await new Promise((resolve, reject) => {
581
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
582
+ this.db.del(expiredKey, // eslint-disable-next-line @typescript-eslint/no-explicit-any
583
+ (err) => {
584
+ if (err && !err.notFound) {
585
+ reject(err);
586
+ }
587
+ else {
588
+ resolve();
589
+ }
590
+ });
591
+ });
592
+ }
593
+ catch (delErr) {
594
+ // Ignore if key doesn't exist
595
+ }
596
+ }
597
+ resolve();
598
+ });
599
+ return;
600
+ }
601
+ try {
602
+ const request = JSON.parse(value.toString());
603
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
604
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
605
+ if (request.expiresAt && new Date(request.expiresAt) < now) {
606
+ expiredKeys.push(key.toString());
607
+ }
608
+ }
609
+ catch (parseErr) {
610
+ // Skip malformed entries
611
+ }
612
+ processNext();
613
+ });
614
+ };
615
+ processNext();
616
+ });
617
+ }
618
+ catch (err) {
619
+ throw (0, error_1.reportAndSanitizeError)('cleanupExpiredViewingRequests', err);
620
+ }
621
+ }
622
+ }
623
+ exports.ProfileStorage = ProfileStorage;
624
+ // Singleton instance that uses the same database as the DOP engine
625
+ let storageInstance;
626
+ const getProfileStorage = () => {
627
+ if (!storageInstance) {
628
+ const engine = (0, engine_1.getEngine)();
629
+ // Access the database from the engine's internals
630
+ // Note: This assumes the DOP engine exposes its database instance
631
+ // If not available, you might need to store the db instance separately
632
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
633
+ const db = engine.db || engine.database || engine.leveldb;
634
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
635
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
636
+ if (!db) {
637
+ throw new Error('Cannot access database instance from DOP engine');
638
+ }
639
+ storageInstance = new ProfileStorage(db);
640
+ }
641
+ return storageInstance;
642
+ };
643
+ exports.getProfileStorage = getProfileStorage;
644
+ const setProfileStorage = (storage) => {
645
+ storageInstance = storage;
646
+ };
647
+ exports.setProfileStorage = setProfileStorage;
648
+ //# sourceMappingURL=storage.js.map