@secrecy/lib 1.0.0-dev.9 → 1.0.1

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 (133) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/BaseClient.d.ts +111 -0
  4. package/dist/BaseClient.js +506 -0
  5. package/{lib → dist}/PopupTools.d.ts +4 -4
  6. package/dist/PopupTools.js +195 -0
  7. package/{lib → dist}/ZeusThunder.d.ts +0 -0
  8. package/dist/ZeusThunder.js +65 -0
  9. package/dist/cache.d.ts +6 -0
  10. package/dist/cache.js +4 -0
  11. package/dist/client/SecrecyAppClient.d.ts +17 -0
  12. package/dist/client/SecrecyAppClient.js +226 -0
  13. package/dist/client/SecrecyCloudClient.d.ts +89 -0
  14. package/dist/client/SecrecyCloudClient.js +1405 -0
  15. package/dist/client/SecrecyDbClient.d.ts +21 -0
  16. package/dist/client/SecrecyDbClient.js +177 -0
  17. package/dist/client/SecrecyMailClient.d.ts +42 -0
  18. package/dist/client/SecrecyMailClient.js +1022 -0
  19. package/dist/client/SecrecyPayClient.d.ts +28 -0
  20. package/dist/client/SecrecyPayClient.js +68 -0
  21. package/dist/client/SecrecyWalletClient.d.ts +30 -0
  22. package/dist/client/SecrecyWalletClient.js +73 -0
  23. package/{lib → dist}/client/convert/file.d.ts +3 -3
  24. package/dist/client/convert/file.js +33 -0
  25. package/dist/client/convert/mail.d.ts +3 -0
  26. package/dist/client/convert/mail.js +42 -0
  27. package/dist/client/convert/node.d.ts +9 -0
  28. package/dist/client/convert/node.js +87 -0
  29. package/{lib → dist}/client/helpers.d.ts +9 -4
  30. package/dist/client/helpers.js +119 -0
  31. package/dist/client/index.d.ts +34 -0
  32. package/dist/client/index.js +46 -0
  33. package/{lib → dist}/client/storage.d.ts +0 -0
  34. package/dist/client/storage.js +12 -0
  35. package/dist/client/types/File.d.ts +14 -0
  36. package/dist/client/types/File.js +3 -0
  37. package/dist/client/types/Inputs.d.ts +16 -0
  38. package/dist/client/types/Inputs.js +3 -0
  39. package/dist/client/types/Node.d.ts +56 -0
  40. package/dist/client/types/Node.js +3 -0
  41. package/dist/client/types/UserAppNotifications.d.ts +6 -0
  42. package/dist/client/types/UserAppNotifications.js +3 -0
  43. package/dist/client/types/UserAppSettings.d.ts +5 -0
  44. package/dist/client/types/UserAppSettings.js +3 -0
  45. package/{lib → dist}/client/types/index.d.ts +25 -59
  46. package/dist/client/types/index.js +8 -0
  47. package/dist/client/types/selectors.d.ts +400 -0
  48. package/dist/client/types/selectors.js +135 -0
  49. package/{lib → dist}/crypto/file.d.ts +2 -2
  50. package/dist/crypto/file.js +195 -0
  51. package/{lib → dist}/crypto/index.d.ts +0 -0
  52. package/dist/crypto/index.js +45 -0
  53. package/dist/error.d.ts +33 -0
  54. package/dist/error.js +3 -0
  55. package/dist/index.d.ts +14 -0
  56. package/dist/index.js +10 -0
  57. package/{lib → dist}/minify/index.d.ts +0 -0
  58. package/dist/minify/index.js +23 -0
  59. package/{lib → dist}/minify/lz4.d.ts +0 -0
  60. package/dist/minify/lz4.js +539 -0
  61. package/{lib → dist}/sodium.d.ts +0 -0
  62. package/dist/sodium.js +6 -0
  63. package/{lib → dist}/utils/store-buddy.d.ts +1 -1
  64. package/dist/utils/store-buddy.js +58 -0
  65. package/{lib → dist}/utils/time.d.ts +0 -0
  66. package/dist/utils/time.js +12 -0
  67. package/{lib → dist/utils}/utils.d.ts +0 -0
  68. package/dist/utils/utils.js +47 -0
  69. package/{lib → dist}/worker/md5.d.ts +0 -0
  70. package/dist/worker/md5.js +24 -0
  71. package/{lib → dist}/worker/sodium.d.ts +0 -0
  72. package/dist/worker/sodium.js +118 -0
  73. package/{lib → dist}/worker/workerCodes.d.ts +0 -0
  74. package/dist/worker/workerCodes.js +255 -0
  75. package/{lib → dist}/zeus/const.d.ts +5 -0
  76. package/dist/zeus/const.js +1679 -0
  77. package/dist/zeus/index.d.ts +7941 -0
  78. package/dist/zeus/index.js +599 -0
  79. package/package.json +64 -54
  80. package/lib/BaseClient.d.ts +0 -266
  81. package/lib/BaseClient.js +0 -1332
  82. package/lib/PopupTools.js +0 -213
  83. package/lib/ZeusThunder.js +0 -115
  84. package/lib/cache.d.ts +0 -7
  85. package/lib/cache.js +0 -5
  86. package/lib/client/admin/index.d.ts +0 -10
  87. package/lib/client/admin/index.js +0 -145
  88. package/lib/client/convert/file.js +0 -39
  89. package/lib/client/convert/folder.d.ts +0 -8
  90. package/lib/client/convert/folder.js +0 -264
  91. package/lib/client/convert/mail.d.ts +0 -3
  92. package/lib/client/convert/mail.js +0 -46
  93. package/lib/client/convert/vFile.d.ts +0 -5
  94. package/lib/client/convert/vFile.js +0 -164
  95. package/lib/client/helpers.js +0 -116
  96. package/lib/client/index.d.ts +0 -169
  97. package/lib/client/index.js +0 -3803
  98. package/lib/client/storage.js +0 -12
  99. package/lib/client/types/File.d.ts +0 -21
  100. package/lib/client/types/File.js +0 -2
  101. package/lib/client/types/FilesOnUsersOnApplications.d.ts +0 -9
  102. package/lib/client/types/FilesOnUsersOnApplications.js +0 -2
  103. package/lib/client/types/Folder.d.ts +0 -68
  104. package/lib/client/types/Folder.js +0 -7
  105. package/lib/client/types/Inputs.d.ts +0 -21
  106. package/lib/client/types/Inputs.js +0 -2
  107. package/lib/client/types/UserAppNotifications.d.ts +0 -6
  108. package/lib/client/types/UserAppNotifications.js +0 -2
  109. package/lib/client/types/UserAppSettings.d.ts +0 -7
  110. package/lib/client/types/UserAppSettings.js +0 -2
  111. package/lib/client/types/VFile.d.ts +0 -62
  112. package/lib/client/types/VFile.js +0 -4
  113. package/lib/client/types/index.js +0 -9
  114. package/lib/client/types/queries.d.ts +0 -535
  115. package/lib/client/types/queries.js +0 -192
  116. package/lib/crypto/file.js +0 -291
  117. package/lib/crypto/index.js +0 -37
  118. package/lib/index.d.ts +0 -12
  119. package/lib/index.js +0 -41
  120. package/lib/minify/index.js +0 -28
  121. package/lib/minify/lz4.js +0 -633
  122. package/lib/sodium.js +0 -28
  123. package/lib/utils/store-buddy.js +0 -69
  124. package/lib/utils/time.js +0 -22
  125. package/lib/utils.js +0 -188
  126. package/lib/worker/__mock__/sodium.worker.d.ts +0 -19
  127. package/lib/worker/__mock__/sodium.worker.js +0 -57
  128. package/lib/worker/md5.js +0 -43
  129. package/lib/worker/sodium.js +0 -155
  130. package/lib/worker/workerCodes.js +0 -3
  131. package/lib/zeus/const.js +0 -1671
  132. package/lib/zeus/index.d.ts +0 -33302
  133. package/lib/zeus/index.js +0 -558
@@ -0,0 +1,28 @@
1
+ import type { SecrecyClient, SecrecyEnv } from "../index.js";
2
+ import type { KeyPair } from "../crypto/index.js";
3
+ import type { Thunder } from "../zeus/index.js";
4
+ type SuccessPayResponse<T> = {
5
+ success: true;
6
+ data: T;
7
+ };
8
+ type ErrorPayResponse = {
9
+ success: false;
10
+ error: string;
11
+ };
12
+ export type SecrecyPayResponse<T> = SuccessPayResponse<T> | ErrorPayResponse;
13
+ export declare class SecrecyPayClient {
14
+ #private;
15
+ constructor(client: SecrecyClient, keys: KeyPair, thunder: ReturnType<typeof Thunder>);
16
+ confirmPaymentIntent({ env, paymentIntentId, secrecyIdWhoCreatedPaymentIntent, secrecyIdWhoNeedToConfirmPaymentIntent, amount, currency }: {
17
+ env?: SecrecyEnv;
18
+ paymentIntentId: string;
19
+ secrecyIdWhoCreatedPaymentIntent: string;
20
+ secrecyIdWhoNeedToConfirmPaymentIntent: string;
21
+ amount: number;
22
+ currency: "eur" | "usd";
23
+ }): Promise<SecrecyPayResponse<{
24
+ id: string;
25
+ message: string;
26
+ }>>;
27
+ }
28
+ export {};
@@ -0,0 +1,68 @@
1
+ import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase";
2
+ import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey";
3
+ /* eslint-disable @typescript-eslint/naming-convention */
4
+
5
+ import { getUrl } from "../index.js";
6
+ import { popup } from "../PopupTools.js";
7
+ var _client = /*#__PURE__*/_classPrivateFieldLooseKey("client");
8
+ var _keys = /*#__PURE__*/_classPrivateFieldLooseKey("keys");
9
+ var _thunder = /*#__PURE__*/_classPrivateFieldLooseKey("thunder");
10
+ export class SecrecyPayClient {
11
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
+ // @ts-ignore
13
+
14
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
15
+ // @ts-ignore
16
+
17
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
18
+ // @ts-ignore
19
+
20
+ constructor(client, keys, thunder) {
21
+ Object.defineProperty(this, _client, {
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ Object.defineProperty(this, _keys, {
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ Object.defineProperty(this, _thunder, {
30
+ writable: true,
31
+ value: void 0
32
+ });
33
+ _classPrivateFieldLooseBase(this, _client)[_client] = client;
34
+ _classPrivateFieldLooseBase(this, _keys)[_keys] = keys;
35
+ _classPrivateFieldLooseBase(this, _thunder)[_thunder] = thunder;
36
+ }
37
+ async confirmPaymentIntent(_ref) {
38
+ let {
39
+ env = "prod",
40
+ paymentIntentId,
41
+ secrecyIdWhoCreatedPaymentIntent,
42
+ secrecyIdWhoNeedToConfirmPaymentIntent,
43
+ amount,
44
+ currency
45
+ } = _ref;
46
+ const url = getUrl({
47
+ env,
48
+ hash: Buffer.from(JSON.stringify({
49
+ appSession: _classPrivateFieldLooseBase(this, _client)[_client].sessionId,
50
+ paymentIntentId,
51
+ secrecyIdWhoCreatedPaymentIntent,
52
+ secrecyIdWhoNeedToConfirmPaymentIntent,
53
+ amount,
54
+ currency
55
+ })).toString("base64"),
56
+ path: "/account/iframe/pay-confirm"
57
+ });
58
+ return new Promise((resolve, reject) => popup(url, "Secrecy Pay - Confirm Payment Intent", {
59
+ width: 500
60
+ }, (err, data) => {
61
+ if (err) {
62
+ return reject(err);
63
+ }
64
+ return resolve(data);
65
+ }));
66
+ }
67
+ }
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVcmwiLCJwb3B1cCIsIlNlY3JlY3lQYXlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImNsaWVudCIsImtleXMiLCJ0aHVuZGVyIiwiY29uZmlybVBheW1lbnRJbnRlbnQiLCJlbnYiLCJwYXltZW50SW50ZW50SWQiLCJzZWNyZWN5SWRXaG9DcmVhdGVkUGF5bWVudEludGVudCIsInNlY3JlY3lJZFdob05lZWRUb0NvbmZpcm1QYXltZW50SW50ZW50IiwiYW1vdW50IiwiY3VycmVuY3kiLCJ1cmwiLCJoYXNoIiwiQnVmZmVyIiwiZnJvbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcHBTZXNzaW9uIiwic2Vzc2lvbklkIiwidG9TdHJpbmciLCJwYXRoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ3aWR0aCIsImVyciIsImRhdGEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L1NlY3JlY3lQYXlDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lDbGllbnQsIFNlY3JlY3lFbnYgfSBmcm9tIFwiLi4vaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFVybCB9IGZyb20gXCIuLi9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXlQYWlyIH0gZnJvbSBcIi4uL2NyeXB0by9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUaHVuZGVyIH0gZnJvbSBcIi4uL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IHBvcHVwIH0gZnJvbSBcIi4uL1BvcHVwVG9vbHMuanNcIjtcblxudHlwZSBTdWNjZXNzUGF5UmVzcG9uc2U8VD4gPSB7XG4gIHN1Y2Nlc3M6IHRydWU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIEVycm9yUGF5UmVzcG9uc2UgPSB7XG4gIHN1Y2Nlc3M6IGZhbHNlO1xuICBlcnJvcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBheVJlc3BvbnNlPFQ+ID0gU3VjY2Vzc1BheVJlc3BvbnNlPFQ+IHwgRXJyb3JQYXlSZXNwb25zZTtcblxuZXhwb3J0IGNsYXNzIFNlY3JlY3lQYXlDbGllbnQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgI2NsaWVudDogU2VjcmVjeUNsaWVudDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgI2tleXM6IEtleVBhaXI7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gICN0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAga2V5czogS2V5UGFpcixcbiAgICB0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPlxuICApIHtcbiAgICB0aGlzLiNjbGllbnQgPSBjbGllbnQ7XG4gICAgdGhpcy4ja2V5cyA9IGtleXM7XG4gICAgdGhpcy4jdGh1bmRlciA9IHRodW5kZXI7XG4gIH1cblxuICBhc3luYyBjb25maXJtUGF5bWVudEludGVudCh7XG4gICAgZW52ID0gXCJwcm9kXCIsXG4gICAgcGF5bWVudEludGVudElkLFxuICAgIHNlY3JlY3lJZFdob0NyZWF0ZWRQYXltZW50SW50ZW50LFxuICAgIHNlY3JlY3lJZFdob05lZWRUb0NvbmZpcm1QYXltZW50SW50ZW50LFxuICAgIGFtb3VudCxcbiAgICBjdXJyZW5jeVxuICB9OiB7XG4gICAgZW52PzogU2VjcmVjeUVudjtcbiAgICBwYXltZW50SW50ZW50SWQ6IHN0cmluZztcbiAgICBzZWNyZWN5SWRXaG9DcmVhdGVkUGF5bWVudEludGVudDogc3RyaW5nO1xuICAgIHNlY3JlY3lJZFdob05lZWRUb0NvbmZpcm1QYXltZW50SW50ZW50OiBzdHJpbmc7XG4gICAgYW1vdW50OiBudW1iZXI7XG4gICAgY3VycmVuY3k6IFwiZXVyXCIgfCBcInVzZFwiO1xuICB9KTogUHJvbWlzZTxTZWNyZWN5UGF5UmVzcG9uc2U8eyBpZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfT4+IHtcbiAgICBjb25zdCB1cmwgPSBnZXRVcmwoe1xuICAgICAgZW52LFxuICAgICAgaGFzaDogQnVmZmVyLmZyb20oXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBhcHBTZXNzaW9uOiB0aGlzLiNjbGllbnQuc2Vzc2lvbklkLFxuICAgICAgICAgIHBheW1lbnRJbnRlbnRJZCxcbiAgICAgICAgICBzZWNyZWN5SWRXaG9DcmVhdGVkUGF5bWVudEludGVudCxcbiAgICAgICAgICBzZWNyZWN5SWRXaG9OZWVkVG9Db25maXJtUGF5bWVudEludGVudCxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgY3VycmVuY3lcbiAgICAgICAgfSlcbiAgICAgICkudG9TdHJpbmcoXCJiYXNlNjRcIiksXG4gICAgICBwYXRoOiBcIi9hY2NvdW50L2lmcmFtZS9wYXktY29uZmlybVwiXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICBwb3B1cChcbiAgICAgICAgdXJsLFxuICAgICAgICBcIlNlY3JlY3kgUGF5IC0gQ29uZmlybSBQYXltZW50IEludGVudFwiLFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6IDUwMFxuICAgICAgICB9LFxuICAgICAgICAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShcbiAgICAgICAgICAgIGRhdGEgYXMgU2VjcmVjeVBheVJlc3BvbnNlPHsgaWQ6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFFQSxTQUFTQSxNQUFNLFFBQVEsYUFBYTtBQUdwQyxTQUFTQyxLQUFLLFFBQVEsa0JBQWtCO0FBQUM7QUFBQTtBQUFBO0FBY3pDLE9BQU8sTUFBTUMsZ0JBQWdCLENBQUM7RUFDNUI7RUFDQTs7RUFHQTtFQUNBOztFQUdBO0VBQ0E7O0VBR0FDLFdBQVcsQ0FDVEMsTUFBcUIsRUFDckJDLElBQWEsRUFDYkMsT0FBbUMsRUFDbkM7SUFBQTtNQUFBO01BQUE7SUFBQTtJQUFBO01BQUE7TUFBQTtJQUFBO0lBQUE7TUFBQTtNQUFBO0lBQUE7SUFDQSxnQ0FBSSxzQkFBV0YsTUFBTTtJQUNyQixnQ0FBSSxrQkFBU0MsSUFBSTtJQUNqQixnQ0FBSSx3QkFBWUMsT0FBTztFQUN6QjtFQUVBLE1BQU1DLG9CQUFvQixPQWN1QztJQUFBLElBZHRDO01BQ3pCQyxHQUFHLEdBQUcsTUFBTTtNQUNaQyxlQUFlO01BQ2ZDLGdDQUFnQztNQUNoQ0Msc0NBQXNDO01BQ3RDQyxNQUFNO01BQ05DO0lBUUYsQ0FBQztJQUNDLE1BQU1DLEdBQUcsR0FBR2QsTUFBTSxDQUFDO01BQ2pCUSxHQUFHO01BQ0hPLElBQUksRUFBRUMsTUFBTSxDQUFDQyxJQUFJLENBQ2ZDLElBQUksQ0FBQ0MsU0FBUyxDQUFDO1FBQ2JDLFVBQVUsRUFBRSxnQ0FBSSxvQkFBU0MsU0FBUztRQUNsQ1osZUFBZTtRQUNmQyxnQ0FBZ0M7UUFDaENDLHNDQUFzQztRQUN0Q0MsTUFBTTtRQUNOQztNQUNGLENBQUMsQ0FBQyxDQUNILENBQUNTLFFBQVEsQ0FBQyxRQUFRLENBQUM7TUFDcEJDLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztJQUNGLE9BQU8sSUFBSUMsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRUMsTUFBTSxLQUNqQ3pCLEtBQUssQ0FDSGEsR0FBRyxFQUNILHNDQUFzQyxFQUN0QztNQUNFYSxLQUFLLEVBQUU7SUFDVCxDQUFDLEVBQ0QsQ0FBQ0MsR0FBRyxFQUFFQyxJQUFJLEtBQUs7TUFDYixJQUFJRCxHQUFHLEVBQUU7UUFDUCxPQUFPRixNQUFNLENBQUNFLEdBQUcsQ0FBQztNQUNwQjtNQUNBLE9BQU9ILE9BQU8sQ0FDWkksSUFBSSxDQUNMO0lBQ0gsQ0FBQyxDQUNGLENBQ0Y7RUFDSDtBQUNGIn0=
@@ -0,0 +1,30 @@
1
+ import type { SecrecyClient, SecrecyEnv } from "../index.js";
2
+ import { InfuraNetwork } from "../zeus/index.js";
3
+ import type { providers } from "ethers";
4
+ type SuccessWalletResponse<T> = {
5
+ success: true;
6
+ data: T;
7
+ };
8
+ type ErrorWalletResponse = {
9
+ success: false;
10
+ error: string;
11
+ };
12
+ export type SecrecyWalletResponse<T> = SuccessWalletResponse<T> | ErrorWalletResponse;
13
+ export declare class SecrecyWalletClient {
14
+ #private;
15
+ constructor(client: SecrecyClient);
16
+ createTransaction({ env, network, tx }: {
17
+ env?: SecrecyEnv;
18
+ network?: InfuraNetwork;
19
+ tx: providers.TransactionRequest;
20
+ }): Promise<SecrecyWalletResponse<{
21
+ id: string;
22
+ hash: string;
23
+ }>>;
24
+ createSignature({ env, network, message }: {
25
+ env?: SecrecyEnv;
26
+ network?: InfuraNetwork;
27
+ message: string;
28
+ }): Promise<SecrecyWalletResponse<string>>;
29
+ }
30
+ export {};
@@ -0,0 +1,73 @@
1
+ import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase";
2
+ import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey";
3
+ /* eslint-disable @typescript-eslint/naming-convention */
4
+
5
+ import { getUrl } from "../index.js";
6
+ import { InfuraNetwork } from "../zeus/index.js";
7
+ import { popup } from "../PopupTools.js";
8
+ var _client = /*#__PURE__*/_classPrivateFieldLooseKey("client");
9
+ export class SecrecyWalletClient {
10
+ // #keys: KeyPair;
11
+
12
+ // #thunder: ReturnType<typeof Thunder>;
13
+
14
+ constructor(client) {
15
+ Object.defineProperty(this, _client, {
16
+ writable: true,
17
+ value: void 0
18
+ });
19
+ _classPrivateFieldLooseBase(this, _client)[_client] = client;
20
+ // this.#keys = keys;
21
+ // this.#thunder = thunder;
22
+ }
23
+
24
+ async createTransaction(_ref) {
25
+ let {
26
+ env = "prod",
27
+ network = InfuraNetwork.mainnet,
28
+ tx
29
+ } = _ref;
30
+ const url = getUrl({
31
+ env,
32
+ hash: Buffer.from(JSON.stringify({
33
+ appSession: _classPrivateFieldLooseBase(this, _client)[_client].sessionId,
34
+ network,
35
+ tx
36
+ })).toString("base64"),
37
+ path: "/account/iframe/wallet-transaction"
38
+ });
39
+ return new Promise((resolve, reject) => popup(url, "Secrecy Wallet - Transaction", {
40
+ width: 500
41
+ }, (err, data) => {
42
+ if (err) {
43
+ return reject(err);
44
+ }
45
+ return resolve(data);
46
+ }));
47
+ }
48
+ async createSignature(_ref2) {
49
+ let {
50
+ env = "prod",
51
+ network = InfuraNetwork.mainnet,
52
+ message
53
+ } = _ref2;
54
+ const url = getUrl({
55
+ env,
56
+ hash: Buffer.from(JSON.stringify({
57
+ appSession: _classPrivateFieldLooseBase(this, _client)[_client].sessionId,
58
+ network,
59
+ message
60
+ })).toString("base64"),
61
+ path: "/account/iframe/wallet-signature"
62
+ });
63
+ return new Promise((resolve, reject) => popup(url, "Secrecy Wallet - Signature", {
64
+ width: 500
65
+ }, (err, data) => {
66
+ if (err) {
67
+ return reject(err);
68
+ }
69
+ return resolve(data);
70
+ }));
71
+ }
72
+ }
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVcmwiLCJJbmZ1cmFOZXR3b3JrIiwicG9wdXAiLCJTZWNyZWN5V2FsbGV0Q2xpZW50IiwiY29uc3RydWN0b3IiLCJjbGllbnQiLCJjcmVhdGVUcmFuc2FjdGlvbiIsImVudiIsIm5ldHdvcmsiLCJtYWlubmV0IiwidHgiLCJ1cmwiLCJoYXNoIiwiQnVmZmVyIiwiZnJvbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcHBTZXNzaW9uIiwic2Vzc2lvbklkIiwidG9TdHJpbmciLCJwYXRoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ3aWR0aCIsImVyciIsImRhdGEiLCJjcmVhdGVTaWduYXR1cmUiLCJtZXNzYWdlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9TZWNyZWN5V2FsbGV0Q2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5Q2xpZW50LCBTZWNyZWN5RW52IH0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRVcmwgfSBmcm9tIFwiLi4vaW5kZXguanNcIjtcbmltcG9ydCB7IEluZnVyYU5ldHdvcmsgfSBmcm9tIFwiLi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcG9wdXAgfSBmcm9tIFwiLi4vUG9wdXBUb29scy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBwcm92aWRlcnMgfSBmcm9tIFwiZXRoZXJzXCI7XG5cbnR5cGUgU3VjY2Vzc1dhbGxldFJlc3BvbnNlPFQ+ID0ge1xuICBzdWNjZXNzOiB0cnVlO1xuICBkYXRhOiBUO1xufTtcblxudHlwZSBFcnJvcldhbGxldFJlc3BvbnNlID0ge1xuICBzdWNjZXNzOiBmYWxzZTtcbiAgZXJyb3I6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNlY3JlY3lXYWxsZXRSZXNwb25zZTxUPiA9XG4gIHwgU3VjY2Vzc1dhbGxldFJlc3BvbnNlPFQ+XG4gIHwgRXJyb3JXYWxsZXRSZXNwb25zZTtcblxuZXhwb3J0IGNsYXNzIFNlY3JlY3lXYWxsZXRDbGllbnQge1xuICAjY2xpZW50OiBTZWNyZWN5Q2xpZW50O1xuXG4gIC8vICNrZXlzOiBLZXlQYWlyO1xuXG4gIC8vICN0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnQ6IFNlY3JlY3lDbGllbnRcbiAgICAvLyBfa2V5czogS2V5UGFpcixcbiAgICAvLyBfdGh1bmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj5cbiAgKSB7XG4gICAgdGhpcy4jY2xpZW50ID0gY2xpZW50O1xuICAgIC8vIHRoaXMuI2tleXMgPSBrZXlzO1xuICAgIC8vIHRoaXMuI3RodW5kZXIgPSB0aHVuZGVyO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVHJhbnNhY3Rpb24oe1xuICAgIGVudiA9IFwicHJvZFwiLFxuICAgIG5ldHdvcmsgPSBJbmZ1cmFOZXR3b3JrLm1haW5uZXQsXG4gICAgdHhcbiAgfToge1xuICAgIGVudj86IFNlY3JlY3lFbnY7XG4gICAgbmV0d29yaz86IEluZnVyYU5ldHdvcms7XG4gICAgdHg6IHByb3ZpZGVycy5UcmFuc2FjdGlvblJlcXVlc3Q7XG4gIH0pOiBQcm9taXNlPFNlY3JlY3lXYWxsZXRSZXNwb25zZTx7IGlkOiBzdHJpbmc7IGhhc2g6IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHVybCA9IGdldFVybCh7XG4gICAgICBlbnYsXG4gICAgICBoYXNoOiBCdWZmZXIuZnJvbShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGFwcFNlc3Npb246IHRoaXMuI2NsaWVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgICB0eFxuICAgICAgICB9KVxuICAgICAgKS50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgIHBhdGg6IFwiL2FjY291bnQvaWZyYW1lL3dhbGxldC10cmFuc2FjdGlvblwiXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICBwb3B1cChcbiAgICAgICAgdXJsLFxuICAgICAgICBcIlNlY3JlY3kgV2FsbGV0IC0gVHJhbnNhY3Rpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIHdpZHRoOiA1MDBcbiAgICAgICAgfSxcbiAgICAgICAgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoXG4gICAgICAgICAgICBkYXRhIGFzIFNlY3JlY3lXYWxsZXRSZXNwb25zZTx7IGlkOiBzdHJpbmc7IGhhc2g6IHN0cmluZyB9PlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlU2lnbmF0dXJlKHtcbiAgICBlbnYgPSBcInByb2RcIixcbiAgICBuZXR3b3JrID0gSW5mdXJhTmV0d29yay5tYWlubmV0LFxuICAgIG1lc3NhZ2VcbiAgfToge1xuICAgIGVudj86IFNlY3JlY3lFbnY7XG4gICAgbmV0d29yaz86IEluZnVyYU5ldHdvcms7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxTZWNyZWN5V2FsbGV0UmVzcG9uc2U8c3RyaW5nPj4ge1xuICAgIGNvbnN0IHVybCA9IGdldFVybCh7XG4gICAgICBlbnYsXG4gICAgICBoYXNoOiBCdWZmZXIuZnJvbShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGFwcFNlc3Npb246IHRoaXMuI2NsaWVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgICBtZXNzYWdlXG4gICAgICAgIH0pXG4gICAgICApLnRvU3RyaW5nKFwiYmFzZTY0XCIpLFxuICAgICAgcGF0aDogXCIvYWNjb3VudC9pZnJhbWUvd2FsbGV0LXNpZ25hdHVyZVwiXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICBwb3B1cChcbiAgICAgICAgdXJsLFxuICAgICAgICBcIlNlY3JlY3kgV2FsbGV0IC0gU2lnbmF0dXJlXCIsXG4gICAgICAgIHtcbiAgICAgICAgICB3aWR0aDogNTAwXG4gICAgICAgIH0sXG4gICAgICAgIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEgYXMgU2VjcmVjeVdhbGxldFJlc3BvbnNlPHN0cmluZz4pO1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBLFNBQVNBLE1BQU0sUUFBUSxhQUFhO0FBQ3BDLFNBQVNDLGFBQWEsUUFBUSxrQkFBa0I7QUFDaEQsU0FBU0MsS0FBSyxRQUFRLGtCQUFrQjtBQUFDO0FBaUJ6QyxPQUFPLE1BQU1DLG1CQUFtQixDQUFDO0VBRy9COztFQUVBOztFQUVBQyxXQUFXLENBQ1RDLE1BQXFCLEVBR3JCO0lBQUE7TUFBQTtNQUFBO0lBQUE7SUFDQSxnQ0FBSSxzQkFBV0EsTUFBTTtJQUNyQjtJQUNBO0VBQ0Y7O0VBRUEsTUFBTUMsaUJBQWlCLE9BUTBDO0lBQUEsSUFSekM7TUFDdEJDLEdBQUcsR0FBRyxNQUFNO01BQ1pDLE9BQU8sR0FBR1AsYUFBYSxDQUFDUSxPQUFPO01BQy9CQztJQUtGLENBQUM7SUFDQyxNQUFNQyxHQUFHLEdBQUdYLE1BQU0sQ0FBQztNQUNqQk8sR0FBRztNQUNISyxJQUFJLEVBQUVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUNmQyxJQUFJLENBQUNDLFNBQVMsQ0FBQztRQUNiQyxVQUFVLEVBQUUsZ0NBQUksb0JBQVNDLFNBQVM7UUFDbENWLE9BQU87UUFDUEU7TUFDRixDQUFDLENBQUMsQ0FDSCxDQUFDUyxRQUFRLENBQUMsUUFBUSxDQUFDO01BQ3BCQyxJQUFJLEVBQUU7SUFDUixDQUFDLENBQUM7SUFDRixPQUFPLElBQUlDLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FDakNyQixLQUFLLENBQ0hTLEdBQUcsRUFDSCw4QkFBOEIsRUFDOUI7TUFDRWEsS0FBSyxFQUFFO0lBQ1QsQ0FBQyxFQUNELENBQUNDLEdBQUcsRUFBRUMsSUFBSSxLQUFLO01BQ2IsSUFBSUQsR0FBRyxFQUFFO1FBQ1AsT0FBT0YsTUFBTSxDQUFDRSxHQUFHLENBQUM7TUFDcEI7TUFDQSxPQUFPSCxPQUFPLENBQ1pJLElBQUksQ0FDTDtJQUNILENBQUMsQ0FDRixDQUNGO0VBQ0g7RUFFQSxNQUFNQyxlQUFlLFFBUXNCO0lBQUEsSUFSckI7TUFDcEJwQixHQUFHLEdBQUcsTUFBTTtNQUNaQyxPQUFPLEdBQUdQLGFBQWEsQ0FBQ1EsT0FBTztNQUMvQm1CO0lBS0YsQ0FBQztJQUNDLE1BQU1qQixHQUFHLEdBQUdYLE1BQU0sQ0FBQztNQUNqQk8sR0FBRztNQUNISyxJQUFJLEVBQUVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUNmQyxJQUFJLENBQUNDLFNBQVMsQ0FBQztRQUNiQyxVQUFVLEVBQUUsZ0NBQUksb0JBQVNDLFNBQVM7UUFDbENWLE9BQU87UUFDUG9CO01BQ0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQ1QsUUFBUSxDQUFDLFFBQVEsQ0FBQztNQUNwQkMsSUFBSSxFQUFFO0lBQ1IsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxJQUFJQyxPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQ2pDckIsS0FBSyxDQUNIUyxHQUFHLEVBQ0gsNEJBQTRCLEVBQzVCO01BQ0VhLEtBQUssRUFBRTtJQUNULENBQUMsRUFDRCxDQUFDQyxHQUFHLEVBQUVDLElBQUksS0FBSztNQUNiLElBQUlELEdBQUcsRUFBRTtRQUNQLE9BQU9GLE1BQU0sQ0FBQ0UsR0FBRyxDQUFDO01BQ3BCO01BQ0EsT0FBT0gsT0FBTyxDQUFDSSxJQUFJLENBQWtDO0lBQ3ZELENBQUMsQ0FDRixDQUNGO0VBQ0g7QUFDRiJ9
@@ -1,5 +1,5 @@
1
1
  import type { KeyPair } from "../../crypto/index.js";
2
- import type { GQLFile, InternalFile, File } from "../types/index.js";
2
+ import type { GQLFile, InternalFile, FileMetadata } from "../types/index.js";
3
3
  export declare function gqlFileToInternal(gql: GQLFile, keyPair: KeyPair): InternalFile;
4
- export declare function internalFileToFile(internal: InternalFile): File;
5
- export declare function gqlFileToExternal(gql: GQLFile, keyPair: KeyPair): File;
4
+ export declare function internalFileToFile(internal: InternalFile): FileMetadata;
5
+ export declare function gqlFileToExternal(gql: GQLFile, keyPair: KeyPair): FileMetadata;
@@ -0,0 +1,33 @@
1
+ import { filesCache } from "../../cache.js";
2
+ import { decryptCryptoBox } from "../../crypto/index.js";
3
+ import { sodium } from "../../sodium.js";
4
+ export function gqlFileToInternal(gql, keyPair) {
5
+ if (!gql.access || !gql.access.sharedBy.keyPair) {
6
+ throw `File ${gql.id} doesn't have access`;
7
+ }
8
+ const file = {
9
+ id: gql.id,
10
+ md5: gql.md5,
11
+ md5Encrypted: gql.md5Encrypted,
12
+ createdAt: new Date(gql.createdAt),
13
+ size: BigInt(gql.size),
14
+ sizeBefore: BigInt(gql.sizeBefore),
15
+ key: sodium.to_hex(decryptCryptoBox(sodium.from_hex(gql.access.key), gql.access.sharedBy.keyPair.pub, keyPair.privateKey))
16
+ };
17
+ filesCache.set(file.id, file);
18
+ return file;
19
+ }
20
+ export function internalFileToFile(internal) {
21
+ return {
22
+ id: internal.id,
23
+ md5: internal.md5,
24
+ md5Encrypted: internal.md5Encrypted,
25
+ createdAt: internal.createdAt,
26
+ size: internal.size,
27
+ sizeBefore: internal.sizeBefore
28
+ };
29
+ }
30
+ export function gqlFileToExternal(gql, keyPair) {
31
+ return internalFileToFile(gqlFileToInternal(gql, keyPair));
32
+ }
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlc0NhY2hlIiwiZGVjcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImdxbEZpbGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsInNoYXJlZEJ5IiwiaWQiLCJmaWxlIiwibWQ1IiwibWQ1RW5jcnlwdGVkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInNpemUiLCJCaWdJbnQiLCJzaXplQmVmb3JlIiwia2V5IiwidG9faGV4IiwiZnJvbV9oZXgiLCJwdWIiLCJwcml2YXRlS2V5Iiwic2V0IiwiaW50ZXJuYWxGaWxlVG9GaWxlIiwiaW50ZXJuYWwiLCJncWxGaWxlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVzQ2FjaGUgfSBmcm9tIFwiLi4vLi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTEZpbGUsIEludGVybmFsRmlsZSwgRmlsZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9JbnRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBJbnRlcm5hbEZpbGUge1xuICBpZiAoIWdxbC5hY2Nlc3MgfHwgIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgIHRocm93IGBGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgYWNjZXNzYDtcbiAgfVxuXG4gIGNvbnN0IGZpbGU6IEludGVybmFsRmlsZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIG1kNTogZ3FsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGdxbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgc2l6ZTogQmlnSW50KGdxbC5zaXplIGFzIHN0cmluZyksXG4gICAgc2l6ZUJlZm9yZTogQmlnSW50KGdxbC5zaXplQmVmb3JlIGFzIHN0cmluZyksXG4gICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgZGVjcnlwdENyeXB0b0JveChcbiAgICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3Mua2V5KSxcbiAgICAgICAgZ3FsLmFjY2Vzcy5zaGFyZWRCeS5rZXlQYWlyLnB1YixcbiAgICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKVxuICB9O1xuXG4gIGZpbGVzQ2FjaGUuc2V0KGZpbGUuaWQsIGZpbGUpO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsOiBJbnRlcm5hbEZpbGUpOiBGaWxlTWV0YWRhdGEge1xuICByZXR1cm4ge1xuICAgIGlkOiBpbnRlcm5hbC5pZCxcbiAgICBtZDU6IGludGVybmFsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGludGVybmFsLm1kNUVuY3J5cHRlZCxcbiAgICBjcmVhdGVkQXQ6IGludGVybmFsLmNyZWF0ZWRBdCxcbiAgICBzaXplOiBpbnRlcm5hbC5zaXplLFxuICAgIHNpemVCZWZvcmU6IGludGVybmFsLnNpemVCZWZvcmVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdxbEZpbGVUb0V4dGVybmFsKFxuICBncWw6IEdRTEZpbGUsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IEZpbGVNZXRhZGF0YSB7XG4gIHJldHVybiBpbnRlcm5hbEZpbGVUb0ZpbGUoZ3FsRmlsZVRvSW50ZXJuYWwoZ3FsLCBrZXlQYWlyKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxnQkFBZ0I7QUFFM0MsU0FBU0MsZ0JBQWdCLFFBQVEsdUJBQXVCO0FBQ3hELFNBQVNDLE1BQU0sUUFBUSxpQkFBaUI7QUFHeEMsT0FBTyxTQUFTQyxpQkFBaUIsQ0FDL0JDLEdBQVksRUFDWkMsT0FBZ0IsRUFDRjtFQUNkLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxNQUFNLElBQUksQ0FBQ0YsR0FBRyxDQUFDRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsT0FBTyxFQUFFO0lBQy9DLE1BQU8sUUFBT0QsR0FBRyxDQUFDSSxFQUFHLHNCQUFxQjtFQUM1QztFQUVBLE1BQU1DLElBQWtCLEdBQUc7SUFDekJELEVBQUUsRUFBRUosR0FBRyxDQUFDSSxFQUFFO0lBQ1ZFLEdBQUcsRUFBRU4sR0FBRyxDQUFDTSxHQUFHO0lBQ1pDLFlBQVksRUFBRVAsR0FBRyxDQUFDTyxZQUFZO0lBQzlCQyxTQUFTLEVBQUUsSUFBSUMsSUFBSSxDQUFDVCxHQUFHLENBQUNRLFNBQVMsQ0FBVztJQUM1Q0UsSUFBSSxFQUFFQyxNQUFNLENBQUNYLEdBQUcsQ0FBQ1UsSUFBSSxDQUFXO0lBQ2hDRSxVQUFVLEVBQUVELE1BQU0sQ0FBQ1gsR0FBRyxDQUFDWSxVQUFVLENBQVc7SUFDNUNDLEdBQUcsRUFBRWYsTUFBTSxDQUFDZ0IsTUFBTSxDQUNoQmpCLGdCQUFnQixDQUNkQyxNQUFNLENBQUNpQixRQUFRLENBQUNmLEdBQUcsQ0FBQ0UsTUFBTSxDQUFDVyxHQUFHLENBQUMsRUFDL0JiLEdBQUcsQ0FBQ0UsTUFBTSxDQUFDQyxRQUFRLENBQUNGLE9BQU8sQ0FBQ2UsR0FBRyxFQUMvQmYsT0FBTyxDQUFDZ0IsVUFBVSxDQUNuQjtFQUVMLENBQUM7RUFFRHJCLFVBQVUsQ0FBQ3NCLEdBQUcsQ0FBQ2IsSUFBSSxDQUFDRCxFQUFFLEVBQUVDLElBQUksQ0FBQztFQUU3QixPQUFPQSxJQUFJO0FBQ2I7QUFFQSxPQUFPLFNBQVNjLGtCQUFrQixDQUFDQyxRQUFzQixFQUFnQjtFQUN2RSxPQUFPO0lBQ0xoQixFQUFFLEVBQUVnQixRQUFRLENBQUNoQixFQUFFO0lBQ2ZFLEdBQUcsRUFBRWMsUUFBUSxDQUFDZCxHQUFHO0lBQ2pCQyxZQUFZLEVBQUVhLFFBQVEsQ0FBQ2IsWUFBWTtJQUNuQ0MsU0FBUyxFQUFFWSxRQUFRLENBQUNaLFNBQVM7SUFDN0JFLElBQUksRUFBRVUsUUFBUSxDQUFDVixJQUFJO0lBQ25CRSxVQUFVLEVBQUVRLFFBQVEsQ0FBQ1I7RUFDdkIsQ0FBQztBQUNIO0FBRUEsT0FBTyxTQUFTUyxpQkFBaUIsQ0FDL0JyQixHQUFZLEVBQ1pDLE9BQWdCLEVBQ0Y7RUFDZCxPQUFPa0Isa0JBQWtCLENBQUNwQixpQkFBaUIsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLENBQUMsQ0FBQztBQUM1RCJ9
@@ -0,0 +1,3 @@
1
+ import type { KeyPair } from "../../crypto/index.js";
2
+ import type { GQLMail, Mail } from "../types/index.js";
3
+ export declare function convertInternalMailToExternal(data: GQLMail, keys: KeyPair): Mail | null;
@@ -0,0 +1,42 @@
1
+ import { sodium, decryptCryptoBox } from "../../index.js";
2
+ export function convertInternalMailToExternal(data, keys) {
3
+ let type = data.type;
4
+ if (data.mailIntegrityDraft) {
5
+ type = "draft";
6
+ }
7
+ const mI = type === "draft" ? data.mailIntegrityDraft : data.mailIntegrity;
8
+ if (!mI) {
9
+ return null;
10
+ }
11
+ const pubKey = data.type === "received" ? data.sender.publicKey : keys.publicKey;
12
+ const body = sodium.to_string(decryptCryptoBox(sodium.from_hex(data.body), pubKey, keys.privateKey));
13
+ const subject = sodium.to_string(decryptCryptoBox(sodium.from_hex(data.subject), pubKey, keys.privateKey));
14
+ const hash = sodium.crypto_generichash(sodium.crypto_generichash_BYTES, JSON.stringify({
15
+ body,
16
+ subject
17
+ }), mI.hashKey, "hex");
18
+ return {
19
+ type,
20
+ id: data.id,
21
+ mailIntegrityId: mI.id,
22
+ replyTo: mI.replyTo?.id,
23
+ body,
24
+ subject,
25
+ createdAt: new Date(data.createdAt),
26
+ deletedAt: data.deletedAt ? new Date(data.deletedAt) : null,
27
+ openedAt: data.openedAt ? new Date(data.openedAt) : null,
28
+ isAltered: hash !== mI.hash,
29
+ temporaryRecipients: mI.temporaryRecipients,
30
+ recipients: type === "draft" ? mI.recipients : data.recipients,
31
+ sender: data.sender,
32
+ files: data.files.map(f => {
33
+ const name = sodium.to_string(decryptCryptoBox(sodium.from_hex(f.filename), pubKey, keys.privateKey));
34
+ return {
35
+ id: f.file.id,
36
+ name,
37
+ key: f.fileKey
38
+ };
39
+ })
40
+ };
41
+ }
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94IiwiY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwiLCJkYXRhIiwia2V5cyIsInR5cGUiLCJtYWlsSW50ZWdyaXR5RHJhZnQiLCJtSSIsIm1haWxJbnRlZ3JpdHkiLCJwdWJLZXkiLCJzZW5kZXIiLCJwdWJsaWNLZXkiLCJib2R5IiwidG9fc3RyaW5nIiwiZnJvbV9oZXgiLCJwcml2YXRlS2V5Iiwic3ViamVjdCIsImhhc2giLCJjcnlwdG9fZ2VuZXJpY2hhc2giLCJjcnlwdG9fZ2VuZXJpY2hhc2hfQllURVMiLCJKU09OIiwic3RyaW5naWZ5IiwiaGFzaEtleSIsImlkIiwibWFpbEludGVncml0eUlkIiwicmVwbHlUbyIsImNyZWF0ZWRBdCIsIkRhdGUiLCJkZWxldGVkQXQiLCJvcGVuZWRBdCIsImlzQWx0ZXJlZCIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJyZWNpcGllbnRzIiwiZmlsZXMiLCJtYXAiLCJmIiwibmFtZSIsImZpbGVuYW1lIiwiZmlsZSIsImtleSIsImZpbGVLZXkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L2NvbnZlcnQvbWFpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTE1haWwsIE1haWwsIE1haWxUeXBlIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0sIGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKFxuICBkYXRhOiBHUUxNYWlsLFxuICBrZXlzOiBLZXlQYWlyXG4pOiBNYWlsIHwgbnVsbCB7XG4gIGxldCB0eXBlOiBNYWlsVHlwZSA9IGRhdGEudHlwZTtcbiAgaWYgKGRhdGEubWFpbEludGVncml0eURyYWZ0KSB7XG4gICAgdHlwZSA9IFwiZHJhZnRcIjtcbiAgfVxuXG4gIGNvbnN0IG1JID0gdHlwZSA9PT0gXCJkcmFmdFwiID8gZGF0YS5tYWlsSW50ZWdyaXR5RHJhZnQgOiBkYXRhLm1haWxJbnRlZ3JpdHk7XG5cbiAgaWYgKCFtSSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcHViS2V5ID1cbiAgICBkYXRhLnR5cGUgPT09IFwicmVjZWl2ZWRcIiA/IGRhdGEuc2VuZGVyLnB1YmxpY0tleSA6IGtleXMucHVibGljS2V5O1xuXG4gIGNvbnN0IGJvZHkgPSBzb2RpdW0udG9fc3RyaW5nKFxuICAgIGRlY3J5cHRDcnlwdG9Cb3goc29kaXVtLmZyb21faGV4KGRhdGEuYm9keSksIHB1YktleSwga2V5cy5wcml2YXRlS2V5KVxuICApO1xuXG4gIGNvbnN0IHN1YmplY3QgPSBzb2RpdW0udG9fc3RyaW5nKFxuICAgIGRlY3J5cHRDcnlwdG9Cb3goc29kaXVtLmZyb21faGV4KGRhdGEuc3ViamVjdCksIHB1YktleSwga2V5cy5wcml2YXRlS2V5KVxuICApO1xuXG4gIGNvbnN0IGhhc2ggPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKFxuICAgIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2hfQllURVMsXG4gICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgIG1JLmhhc2hLZXksXG4gICAgXCJoZXhcIlxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZSxcbiAgICBpZDogZGF0YS5pZCxcbiAgICBtYWlsSW50ZWdyaXR5SWQ6IG1JLmlkLFxuICAgIHJlcGx5VG86IG1JLnJlcGx5VG8/LmlkLFxuICAgIGJvZHksXG4gICAgc3ViamVjdCxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGRhdGEuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgZGVsZXRlZEF0OiBkYXRhLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKGRhdGEuZGVsZXRlZEF0IGFzIHN0cmluZykgOiBudWxsLFxuICAgIG9wZW5lZEF0OiBkYXRhLm9wZW5lZEF0ID8gbmV3IERhdGUoZGF0YS5vcGVuZWRBdCBhcyBzdHJpbmcpIDogbnVsbCxcbiAgICBpc0FsdGVyZWQ6IGhhc2ggIT09IG1JLmhhc2gsXG4gICAgdGVtcG9yYXJ5UmVjaXBpZW50czogbUkudGVtcG9yYXJ5UmVjaXBpZW50cyxcbiAgICByZWNpcGllbnRzOiB0eXBlID09PSBcImRyYWZ0XCIgPyBtSS5yZWNpcGllbnRzIDogZGF0YS5yZWNpcGllbnRzLFxuICAgIHNlbmRlcjogZGF0YS5zZW5kZXIsXG4gICAgZmlsZXM6IGRhdGEuZmlsZXMubWFwKGYgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHNvZGl1bS50b19zdHJpbmcoXG4gICAgICAgIGRlY3J5cHRDcnlwdG9Cb3goc29kaXVtLmZyb21faGV4KGYuZmlsZW5hbWUpLCBwdWJLZXksIGtleXMucHJpdmF0ZUtleSlcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBmLmZpbGUuaWQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGtleTogZi5maWxlS2V5XG4gICAgICB9O1xuICAgIH0pXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLE1BQU0sRUFBRUMsZ0JBQWdCLFFBQVEsZ0JBQWdCO0FBRXpELE9BQU8sU0FBU0MsNkJBQTZCLENBQzNDQyxJQUFhLEVBQ2JDLElBQWEsRUFDQTtFQUNiLElBQUlDLElBQWMsR0FBR0YsSUFBSSxDQUFDRSxJQUFJO0VBQzlCLElBQUlGLElBQUksQ0FBQ0csa0JBQWtCLEVBQUU7SUFDM0JELElBQUksR0FBRyxPQUFPO0VBQ2hCO0VBRUEsTUFBTUUsRUFBRSxHQUFHRixJQUFJLEtBQUssT0FBTyxHQUFHRixJQUFJLENBQUNHLGtCQUFrQixHQUFHSCxJQUFJLENBQUNLLGFBQWE7RUFFMUUsSUFBSSxDQUFDRCxFQUFFLEVBQUU7SUFDUCxPQUFPLElBQUk7RUFDYjtFQUVBLE1BQU1FLE1BQU0sR0FDVk4sSUFBSSxDQUFDRSxJQUFJLEtBQUssVUFBVSxHQUFHRixJQUFJLENBQUNPLE1BQU0sQ0FBQ0MsU0FBUyxHQUFHUCxJQUFJLENBQUNPLFNBQVM7RUFFbkUsTUFBTUMsSUFBSSxHQUFHWixNQUFNLENBQUNhLFNBQVMsQ0FDM0JaLGdCQUFnQixDQUFDRCxNQUFNLENBQUNjLFFBQVEsQ0FBQ1gsSUFBSSxDQUFDUyxJQUFJLENBQUMsRUFBRUgsTUFBTSxFQUFFTCxJQUFJLENBQUNXLFVBQVUsQ0FBQyxDQUN0RTtFQUVELE1BQU1DLE9BQU8sR0FBR2hCLE1BQU0sQ0FBQ2EsU0FBUyxDQUM5QlosZ0JBQWdCLENBQUNELE1BQU0sQ0FBQ2MsUUFBUSxDQUFDWCxJQUFJLENBQUNhLE9BQU8sQ0FBQyxFQUFFUCxNQUFNLEVBQUVMLElBQUksQ0FBQ1csVUFBVSxDQUFDLENBQ3pFO0VBRUQsTUFBTUUsSUFBSSxHQUFHakIsTUFBTSxDQUFDa0Isa0JBQWtCLENBQ3BDbEIsTUFBTSxDQUFDbUIsd0JBQXdCLEVBQy9CQyxJQUFJLENBQUNDLFNBQVMsQ0FBQztJQUFFVCxJQUFJO0lBQUVJO0VBQVEsQ0FBQyxDQUFDLEVBQ2pDVCxFQUFFLENBQUNlLE9BQU8sRUFDVixLQUFLLENBQ047RUFFRCxPQUFPO0lBQ0xqQixJQUFJO0lBQ0prQixFQUFFLEVBQUVwQixJQUFJLENBQUNvQixFQUFFO0lBQ1hDLGVBQWUsRUFBRWpCLEVBQUUsQ0FBQ2dCLEVBQUU7SUFDdEJFLE9BQU8sRUFBRWxCLEVBQUUsQ0FBQ2tCLE9BQU8sRUFBRUYsRUFBRTtJQUN2QlgsSUFBSTtJQUNKSSxPQUFPO0lBQ1BVLFNBQVMsRUFBRSxJQUFJQyxJQUFJLENBQUN4QixJQUFJLENBQUN1QixTQUFTLENBQVc7SUFDN0NFLFNBQVMsRUFBRXpCLElBQUksQ0FBQ3lCLFNBQVMsR0FBRyxJQUFJRCxJQUFJLENBQUN4QixJQUFJLENBQUN5QixTQUFTLENBQVcsR0FBRyxJQUFJO0lBQ3JFQyxRQUFRLEVBQUUxQixJQUFJLENBQUMwQixRQUFRLEdBQUcsSUFBSUYsSUFBSSxDQUFDeEIsSUFBSSxDQUFDMEIsUUFBUSxDQUFXLEdBQUcsSUFBSTtJQUNsRUMsU0FBUyxFQUFFYixJQUFJLEtBQUtWLEVBQUUsQ0FBQ1UsSUFBSTtJQUMzQmMsbUJBQW1CLEVBQUV4QixFQUFFLENBQUN3QixtQkFBbUI7SUFDM0NDLFVBQVUsRUFBRTNCLElBQUksS0FBSyxPQUFPLEdBQUdFLEVBQUUsQ0FBQ3lCLFVBQVUsR0FBRzdCLElBQUksQ0FBQzZCLFVBQVU7SUFDOUR0QixNQUFNLEVBQUVQLElBQUksQ0FBQ08sTUFBTTtJQUNuQnVCLEtBQUssRUFBRTlCLElBQUksQ0FBQzhCLEtBQUssQ0FBQ0MsR0FBRyxDQUFDQyxDQUFDLElBQUk7TUFDekIsTUFBTUMsSUFBSSxHQUFHcEMsTUFBTSxDQUFDYSxTQUFTLENBQzNCWixnQkFBZ0IsQ0FBQ0QsTUFBTSxDQUFDYyxRQUFRLENBQUNxQixDQUFDLENBQUNFLFFBQVEsQ0FBQyxFQUFFNUIsTUFBTSxFQUFFTCxJQUFJLENBQUNXLFVBQVUsQ0FBQyxDQUN2RTtNQUVELE9BQU87UUFDTFEsRUFBRSxFQUFFWSxDQUFDLENBQUNHLElBQUksQ0FBQ2YsRUFBRTtRQUNiYSxJQUFJO1FBQ0pHLEdBQUcsRUFBRUosQ0FBQyxDQUFDSztNQUNULENBQUM7SUFDSCxDQUFDO0VBQ0gsQ0FBQztBQUNIIn0=
@@ -0,0 +1,9 @@
1
+ import type { KeyPair } from "../../crypto/index.js";
2
+ import type { Node } from "../types/index.js";
3
+ import type { GQLNode, InternalNode, GQLNodeFull, InternalNodeFull, NodeFull } from "../types/index.js";
4
+ export declare function gqlNodeToInternal(gql: GQLNode, keyPair: KeyPair): Promise<InternalNode>;
5
+ export declare function gqlNodeFullToInternalFull(gql: GQLNodeFull, keyPair: KeyPair): Promise<InternalNodeFull>;
6
+ export declare function internalNodeToNode(internal: InternalNode): Node;
7
+ export declare function internalNodeFullToNodeFull(internal: InternalNodeFull): NodeFull;
8
+ export declare function gqlNodeToExternalNodeFull(gql: GQLNodeFull, keyPair: KeyPair): Promise<NodeFull>;
9
+ export declare function gqlNodeToExternal(gql: GQLNode, keyPair: KeyPair): Promise<Node>;
@@ -0,0 +1,87 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ import { sodium } from "../../sodium.js";
5
+ import { decryptCryptoBox } from "../../crypto/index.js";
6
+ import { nodesCache } from "../../cache.js";
7
+ import { decryptSecretstream } from "../../crypto/file.js";
8
+ import { gqlFileToInternal, internalFileToFile } from "./file.js";
9
+ export async function gqlNodeToInternal(gql, keyPair) {
10
+ if (!gql.access) {
11
+ throw `Can't access Node ${gql.id}`;
12
+ }
13
+ const internal = {
14
+ id: gql.id,
15
+ type: gql.type,
16
+ access: gql.access,
17
+ name: gql.name,
18
+ isFavorite: gql.isFavorite,
19
+ breadcrumb: gql.breadcrumb,
20
+ createdBy: gql.createdBy.user,
21
+ sizes: {
22
+ size: BigInt(gql.sizes.size),
23
+ sizeBefore: BigInt(gql.sizes.sizeBefore)
24
+ },
25
+ createdAt: new Date(gql.createdAt),
26
+ updatedAt: new Date(gql.updatedAt),
27
+ deletedAt: gql.deletedAt ? new Date(gql.deletedAt) : null,
28
+ users: gql.accesses.map(u => [u.userApp.user, u.rights]),
29
+ parentId: gql.parentId ?? null,
30
+ currentFileId: gql.currentFileId ?? null
31
+ };
32
+ internal.access = _objectSpread({}, gql.access);
33
+ if (gql.access.nameKey) {
34
+ if (!gql.access.sharedBy.keyPair) {
35
+ throw new Error(`Can't find keyPair for access`);
36
+ }
37
+ const key = decryptCryptoBox(sodium.from_hex(gql.access.nameKey), gql.createdBy.user.publicKey, keyPair.privateKey);
38
+ internal.name = sodium.to_string(await decryptSecretstream(key, sodium.from_hex(internal.name)));
39
+ internal.access.nameKey = sodium.to_hex(key);
40
+ }
41
+ for (const b of internal.breadcrumb) {
42
+ if (!b.nameKey) {
43
+ continue;
44
+ }
45
+ const key = decryptCryptoBox(sodium.from_hex(b.nameKey), b.pubKey, keyPair.privateKey);
46
+ b.nameKey = sodium.to_hex(key);
47
+ b.name = sodium.to_string(await decryptSecretstream(key, sodium.from_hex(b.name)));
48
+ }
49
+ nodesCache.set(internal.id, internal);
50
+ return internal;
51
+ }
52
+ export async function gqlNodeFullToInternalFull(gql, keyPair) {
53
+ const f = await gqlNodeToInternal(gql, keyPair);
54
+ return _objectSpread(_objectSpread({}, f), {}, {
55
+ current: gql.current ? gqlFileToInternal(gql.current, keyPair) : undefined,
56
+ parent: gql.parent ? await gqlNodeToInternal(gql.parent, keyPair) : null,
57
+ children: await Promise.all(gql.children.map(s => gqlNodeToInternal(s, keyPair))),
58
+ history: gql.history.map(f => gqlFileToInternal(f, keyPair))
59
+ });
60
+ }
61
+ export function internalNodeToNode(internal) {
62
+ const node = _objectSpread(_objectSpread({}, internal), {}, {
63
+ access: internal.access ? _objectSpread({}, internal.access) : undefined
64
+ });
65
+ for (const b of node.breadcrumb) {
66
+ // @ts-ignore
67
+ delete b.pubKey;
68
+ }
69
+ // @ts-ignore
70
+ delete node.access?.nameKey;
71
+ return node;
72
+ }
73
+ export function internalNodeFullToNodeFull(internal) {
74
+ return _objectSpread(_objectSpread({}, internalNodeToNode(internal)), {}, {
75
+ parent: internal.parent ? internalNodeToNode(internal.parent) : null,
76
+ children: internal.children.map(internalNodeToNode),
77
+ history: internal.history.map(f => internalFileToFile(f)),
78
+ current: internal.current ? internalFileToFile(internal.current) : undefined
79
+ });
80
+ }
81
+ export async function gqlNodeToExternalNodeFull(gql, keyPair) {
82
+ return internalNodeFullToNodeFull(await gqlNodeFullToInternalFull(gql, keyPair));
83
+ }
84
+ export async function gqlNodeToExternal(gql, keyPair) {
85
+ return internalNodeToNode(await gqlNodeToInternal(gql, keyPair));
86
+ }
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94Iiwibm9kZXNDYWNoZSIsImRlY3J5cHRTZWNyZXRzdHJlYW0iLCJncWxGaWxlVG9JbnRlcm5hbCIsImludGVybmFsRmlsZVRvRmlsZSIsImdxbE5vZGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsImlkIiwiaW50ZXJuYWwiLCJ0eXBlIiwibmFtZSIsImlzRmF2b3JpdGUiLCJicmVhZGNydW1iIiwiY3JlYXRlZEJ5IiwidXNlciIsInNpemVzIiwic2l6ZSIsIkJpZ0ludCIsInNpemVCZWZvcmUiLCJjcmVhdGVkQXQiLCJEYXRlIiwidXBkYXRlZEF0IiwiZGVsZXRlZEF0IiwidXNlcnMiLCJhY2Nlc3NlcyIsIm1hcCIsInUiLCJ1c2VyQXBwIiwicmlnaHRzIiwicGFyZW50SWQiLCJjdXJyZW50RmlsZUlkIiwibmFtZUtleSIsInNoYXJlZEJ5IiwiRXJyb3IiLCJrZXkiLCJmcm9tX2hleCIsInB1YmxpY0tleSIsInByaXZhdGVLZXkiLCJ0b19zdHJpbmciLCJ0b19oZXgiLCJiIiwicHViS2V5Iiwic2V0IiwiZ3FsTm9kZUZ1bGxUb0ludGVybmFsRnVsbCIsImYiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwicGFyZW50IiwiY2hpbGRyZW4iLCJQcm9taXNlIiwiYWxsIiwicyIsImhpc3RvcnkiLCJpbnRlcm5hbE5vZGVUb05vZGUiLCJub2RlIiwiaW50ZXJuYWxOb2RlRnVsbFRvTm9kZUZ1bGwiLCJncWxOb2RlVG9FeHRlcm5hbE5vZGVGdWxsIiwiZ3FsTm9kZVRvRXh0ZXJuYWwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L2NvbnZlcnQvbm9kZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBkZWNyeXB0Q3J5cHRvQm94IH0gZnJvbSBcIi4uLy4uL2NyeXB0by9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBOb2RlIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdRTE5vZGUsXG4gIEludGVybmFsTm9kZSxcbiAgR1FMTm9kZUZ1bGwsXG4gIEludGVybmFsTm9kZUZ1bGwsXG4gIE5vZGVGdWxsXG59IGZyb20gXCIuLi90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbm9kZXNDYWNoZSB9IGZyb20gXCIuLi8uLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHsgZGVjcnlwdFNlY3JldHN0cmVhbSB9IGZyb20gXCIuLi8uLi9jcnlwdG8vZmlsZS5qc1wiO1xuaW1wb3J0IHsgZ3FsRmlsZVRvSW50ZXJuYWwsIGludGVybmFsRmlsZVRvRmlsZSB9IGZyb20gXCIuL2ZpbGUuanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbE5vZGVUb0ludGVybmFsKFxuICBncWw6IEdRTE5vZGUsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8SW50ZXJuYWxOb2RlPiB7XG4gIGlmICghZ3FsLmFjY2Vzcykge1xuICAgIHRocm93IGBDYW4ndCBhY2Nlc3MgTm9kZSAke2dxbC5pZH1gO1xuICB9XG5cbiAgY29uc3QgaW50ZXJuYWw6IEludGVybmFsTm9kZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIHR5cGU6IGdxbC50eXBlLFxuICAgIGFjY2VzczogZ3FsLmFjY2VzcyxcbiAgICBuYW1lOiBncWwubmFtZSxcbiAgICBpc0Zhdm9yaXRlOiBncWwuaXNGYXZvcml0ZSxcbiAgICBicmVhZGNydW1iOiBncWwuYnJlYWRjcnVtYixcbiAgICBjcmVhdGVkQnk6IGdxbC5jcmVhdGVkQnkudXNlcixcbiAgICBzaXplczoge1xuICAgICAgc2l6ZTogQmlnSW50KGdxbC5zaXplcy5zaXplIGFzIHN0cmluZyksXG4gICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZ3FsLnNpemVzLnNpemVCZWZvcmUgYXMgc3RyaW5nKVxuICAgIH0sXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgdXBkYXRlZEF0OiBuZXcgRGF0ZShncWwudXBkYXRlZEF0IGFzIHN0cmluZyksXG4gICAgZGVsZXRlZEF0OiBncWwuZGVsZXRlZEF0ID8gbmV3IERhdGUoZ3FsLmRlbGV0ZWRBdCBhcyBzdHJpbmcpIDogbnVsbCxcbiAgICB1c2VyczogZ3FsLmFjY2Vzc2VzLm1hcCh1ID0+IFt1LnVzZXJBcHAudXNlciwgdS5yaWdodHNdKSxcbiAgICBwYXJlbnRJZDogZ3FsLnBhcmVudElkID8/IG51bGwsXG4gICAgY3VycmVudEZpbGVJZDogZ3FsLmN1cnJlbnRGaWxlSWQgPz8gbnVsbFxuICB9O1xuXG4gIGludGVybmFsLmFjY2VzcyA9IHsgLi4uZ3FsLmFjY2VzcyB9O1xuXG4gIGlmIChncWwuYWNjZXNzLm5hbWVLZXkpIHtcbiAgICBpZiAoIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIGtleVBhaXIgZm9yIGFjY2Vzc2ApO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3MubmFtZUtleSksXG4gICAgICBncWwuY3JlYXRlZEJ5LnVzZXIucHVibGljS2V5LFxuICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBpbnRlcm5hbC5uYW1lID0gc29kaXVtLnRvX3N0cmluZyhcbiAgICAgIGF3YWl0IGRlY3J5cHRTZWNyZXRzdHJlYW0oa2V5LCBzb2RpdW0uZnJvbV9oZXgoaW50ZXJuYWwubmFtZSkpXG4gICAgKTtcblxuICAgIGludGVybmFsLmFjY2Vzcy5uYW1lS2V5ID0gc29kaXVtLnRvX2hleChrZXkpO1xuICB9XG5cbiAgZm9yIChjb25zdCBiIG9mIGludGVybmFsLmJyZWFkY3J1bWIpIHtcbiAgICBpZiAoIWIubmFtZUtleSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGRlY3J5cHRDcnlwdG9Cb3goXG4gICAgICBzb2RpdW0uZnJvbV9oZXgoYi5uYW1lS2V5KSxcbiAgICAgIGIucHViS2V5LFxuICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgKTtcblxuICAgIGIubmFtZUtleSA9IHNvZGl1bS50b19oZXgoa2V5KTtcblxuICAgIGIubmFtZSA9IHNvZGl1bS50b19zdHJpbmcoXG4gICAgICBhd2FpdCBkZWNyeXB0U2VjcmV0c3RyZWFtKGtleSwgc29kaXVtLmZyb21faGV4KGIubmFtZSkpXG4gICAgKTtcbiAgfVxuXG4gIG5vZGVzQ2FjaGUuc2V0KGludGVybmFsLmlkLCBpbnRlcm5hbCk7XG4gIHJldHVybiBpbnRlcm5hbDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbE5vZGVGdWxsVG9JbnRlcm5hbEZ1bGwoXG4gIGdxbDogR1FMTm9kZUZ1bGwsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8SW50ZXJuYWxOb2RlRnVsbD4ge1xuICBjb25zdCBmID0gYXdhaXQgZ3FsTm9kZVRvSW50ZXJuYWwoZ3FsLCBrZXlQYWlyKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5mLFxuICAgIGN1cnJlbnQ6IGdxbC5jdXJyZW50ID8gZ3FsRmlsZVRvSW50ZXJuYWwoZ3FsLmN1cnJlbnQsIGtleVBhaXIpIDogdW5kZWZpbmVkLFxuICAgIHBhcmVudDogZ3FsLnBhcmVudCA/IGF3YWl0IGdxbE5vZGVUb0ludGVybmFsKGdxbC5wYXJlbnQsIGtleVBhaXIpIDogbnVsbCxcbiAgICBjaGlsZHJlbjogYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBncWwuY2hpbGRyZW4ubWFwKHMgPT4gZ3FsTm9kZVRvSW50ZXJuYWwocywga2V5UGFpcikpXG4gICAgKSxcbiAgICBoaXN0b3J5OiBncWwuaGlzdG9yeS5tYXAoZiA9PiBncWxGaWxlVG9JbnRlcm5hbChmLCBrZXlQYWlyKSlcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbDogSW50ZXJuYWxOb2RlKTogTm9kZSB7XG4gIGNvbnN0IG5vZGU6IE5vZGUgPSB7XG4gICAgLi4uaW50ZXJuYWwsXG4gICAgYWNjZXNzOiBpbnRlcm5hbC5hY2Nlc3MgPyB7IC4uLmludGVybmFsLmFjY2VzcyB9IDogdW5kZWZpbmVkXG4gIH07XG5cbiAgZm9yIChjb25zdCBiIG9mIG5vZGUuYnJlYWRjcnVtYikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkZWxldGUgYi5wdWJLZXk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBkZWxldGUgbm9kZS5hY2Nlc3M/Lm5hbWVLZXk7XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxOb2RlRnVsbFRvTm9kZUZ1bGwoXG4gIGludGVybmFsOiBJbnRlcm5hbE5vZGVGdWxsXG4pOiBOb2RlRnVsbCB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxOb2RlVG9Ob2RlKGludGVybmFsKSxcbiAgICBwYXJlbnQ6IGludGVybmFsLnBhcmVudCA/IGludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbC5wYXJlbnQpIDogbnVsbCxcbiAgICBjaGlsZHJlbjogaW50ZXJuYWwuY2hpbGRyZW4ubWFwKGludGVybmFsTm9kZVRvTm9kZSksXG4gICAgaGlzdG9yeTogaW50ZXJuYWwuaGlzdG9yeS5tYXAoZiA9PiBpbnRlcm5hbEZpbGVUb0ZpbGUoZikpLFxuICAgIGN1cnJlbnQ6IGludGVybmFsLmN1cnJlbnQgPyBpbnRlcm5hbEZpbGVUb0ZpbGUoaW50ZXJuYWwuY3VycmVudCkgOiB1bmRlZmluZWRcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbE5vZGVUb0V4dGVybmFsTm9kZUZ1bGwoXG4gIGdxbDogR1FMTm9kZUZ1bGwsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8Tm9kZUZ1bGw+IHtcbiAgcmV0dXJuIGludGVybmFsTm9kZUZ1bGxUb05vZGVGdWxsKFxuICAgIGF3YWl0IGdxbE5vZGVGdWxsVG9JbnRlcm5hbEZ1bGwoZ3FsLCBrZXlQYWlyKVxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsTm9kZVRvRXh0ZXJuYWwoXG4gIGdxbDogR1FMTm9kZSxcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxOb2RlPiB7XG4gIHJldHVybiBpbnRlcm5hbE5vZGVUb05vZGUoYXdhaXQgZ3FsTm9kZVRvSW50ZXJuYWwoZ3FsLCBrZXlQYWlyKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLE1BQU0sUUFBUSxpQkFBaUI7QUFFeEMsU0FBU0MsZ0JBQWdCLFFBQVEsdUJBQXVCO0FBU3hELFNBQVNDLFVBQVUsUUFBUSxnQkFBZ0I7QUFDM0MsU0FBU0MsbUJBQW1CLFFBQVEsc0JBQXNCO0FBQzFELFNBQVNDLGlCQUFpQixFQUFFQyxrQkFBa0IsUUFBUSxXQUFXO0FBRWpFLE9BQU8sZUFBZUMsaUJBQWlCLENBQ3JDQyxHQUFZLEVBQ1pDLE9BQWdCLEVBQ087RUFDdkIsSUFBSSxDQUFDRCxHQUFHLENBQUNFLE1BQU0sRUFBRTtJQUNmLE1BQU8scUJBQW9CRixHQUFHLENBQUNHLEVBQUcsRUFBQztFQUNyQztFQUVBLE1BQU1DLFFBQXNCLEdBQUc7SUFDN0JELEVBQUUsRUFBRUgsR0FBRyxDQUFDRyxFQUFFO0lBQ1ZFLElBQUksRUFBRUwsR0FBRyxDQUFDSyxJQUFJO0lBQ2RILE1BQU0sRUFBRUYsR0FBRyxDQUFDRSxNQUFNO0lBQ2xCSSxJQUFJLEVBQUVOLEdBQUcsQ0FBQ00sSUFBSTtJQUNkQyxVQUFVLEVBQUVQLEdBQUcsQ0FBQ08sVUFBVTtJQUMxQkMsVUFBVSxFQUFFUixHQUFHLENBQUNRLFVBQVU7SUFDMUJDLFNBQVMsRUFBRVQsR0FBRyxDQUFDUyxTQUFTLENBQUNDLElBQUk7SUFDN0JDLEtBQUssRUFBRTtNQUNMQyxJQUFJ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
@@ -1,7 +1,12 @@
1
1
  import { SecrecyClient } from "./index.js";
2
2
  import type { SecrecyUserApp } from "./types/index.js";
3
3
  export declare function parseInfos(): SecrecyUserApp | null;
4
- export declare type HashInfos = {
4
+ export declare const getUrl: ({ env, hash, path }: {
5
+ env: string;
6
+ hash: string;
7
+ path: string;
8
+ }) => string;
9
+ export type HashInfos = {
5
10
  appUrl: string;
6
11
  backPath?: string;
7
12
  appCode?: string | null | undefined;
@@ -11,12 +16,12 @@ export declare type HashInfos = {
11
16
  email: boolean;
12
17
  };
13
18
  };
14
- export declare type SecrecyEnv = "dev" | "staging" | "prod";
15
- export declare type UseSecrecyParams = Omit<HashInfos, "appUrl"> & {
19
+ export type SecrecyEnv = "dev" | "prod";
20
+ export type UseSecrecyParams = Omit<HashInfos, "appUrl"> & {
16
21
  env: SecrecyEnv;
17
22
  session?: boolean | undefined;
18
23
  };
19
- export declare type Value<T extends UseSecrecyParams> = T extends {
24
+ export type Value<T extends UseSecrecyParams> = T extends {
20
25
  redirect: true;
21
26
  } ? SecrecyClient | null : SecrecyClient;
22
27
  export declare function getSecrecyClient(env: SecrecyEnv, session?: boolean | undefined): SecrecyClient | null;
@@ -0,0 +1,119 @@
1
+ import { SecrecyClient } from "./index.js";
2
+ import { popup } from "../PopupTools.js";
3
+ import { getStorage } from "./storage.js";
4
+ export function parseInfos() {
5
+ if (!window.location.hash) {
6
+ return null;
7
+ }
8
+ const hash = window.location.hash.substr(1);
9
+ try {
10
+ const res = JSON.parse(atob(hash));
11
+ window.location.hash = "";
12
+ // TODO Add object content validation
13
+ return res;
14
+ } catch {
15
+ return null;
16
+ }
17
+ }
18
+ export const getUrl = _ref => {
19
+ let {
20
+ env,
21
+ hash,
22
+ path
23
+ } = _ref;
24
+ let envStr = "";
25
+ if (env === "dev") {
26
+ envStr = "dev.";
27
+ }
28
+ const lang = document.documentElement.lang;
29
+ return process.env.NEXT_PUBLIC_SECRECY_API_URL ? `http://localhost:3002${lang ? `/${lang}` : ""}${path.startsWith("/") ? path : `/${path}`}#${hash}` : `https://auth.${envStr}secrecy.me${lang ? `/${lang}` : ""}${path.startsWith("/") ? path : `/${path}`}#${hash}`;
30
+ };
31
+ export function getSecrecyClient(env, session) {
32
+ const storage = getStorage(session);
33
+ const uaSession = storage.userAppSession.load();
34
+ const uaKeys = storage.userAppKeys.load();
35
+ const uaJwt = storage.jwt.load();
36
+ if (!uaSession || !uaKeys || !uaJwt) {
37
+ const infos = parseInfos();
38
+ if (infos) {
39
+ storage.userAppKeys.save(infos.keys);
40
+ storage.userAppSession.save(infos.uaSession);
41
+ storage.jwt.save(infos.jwt);
42
+ return new SecrecyClient(infos.uaSession, infos.keys, infos.jwt, env);
43
+ }
44
+ return null;
45
+ }
46
+ return new SecrecyClient(uaSession, uaKeys, uaJwt, env);
47
+ }
48
+ export function login(_temp) {
49
+ let {
50
+ appCode,
51
+ path,
52
+ redirect,
53
+ scopes,
54
+ backPath,
55
+ env,
56
+ session
57
+ } = _temp === void 0 ? {} : _temp;
58
+ return new Promise((resolve, reject) => {
59
+ const appUrl = window.location.origin;
60
+ if (appCode && !appUrl.includes("localhost")) {
61
+ return reject("Can't use appCode if not in localhost");
62
+ }
63
+ const client = getSecrecyClient(env);
64
+ if (!client) {
65
+ const infos = {
66
+ appUrl,
67
+ appCode,
68
+ redirect,
69
+ path,
70
+ scopes,
71
+ backPath
72
+ };
73
+ const data = btoa(JSON.stringify(infos)).replaceAll("=", "");
74
+ const url = getUrl({
75
+ env,
76
+ hash: data,
77
+ path: "login"
78
+ });
79
+ const validate = infos => {
80
+ const storage = getStorage(session);
81
+ storage.userAppSession.save(infos.uaSession);
82
+ storage.userAppKeys.save(infos.keys);
83
+ storage.jwt.save(infos.jwt);
84
+ return resolve(new SecrecyClient(infos.uaSession, infos.keys, infos.jwt, env));
85
+ };
86
+ if (redirect) {
87
+ const infos = parseInfos();
88
+ if (infos) {
89
+ return validate(infos);
90
+ } else {
91
+ window.location.href = url;
92
+ return resolve(null);
93
+ }
94
+ } else {
95
+ popup(url, "Secrecy Login", {
96
+ width: 500,
97
+ height: 750,
98
+ resizable: "no",
99
+ menubar: "no",
100
+ location: "no",
101
+ centered: true,
102
+ scrollbars: "no"
103
+ }, (err, data) => {
104
+ if (err) {
105
+ return reject(err);
106
+ } else {
107
+ const infos = data;
108
+ if (infos) {
109
+ return validate(infos);
110
+ }
111
+ }
112
+ });
113
+ }
114
+ } else {
115
+ return resolve(client);
116
+ }
117
+ });
118
+ }
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWNyZWN5Q2xpZW50IiwicG9wdXAiLCJnZXRTdG9yYWdlIiwicGFyc2VJbmZvcyIsIndpbmRvdyIsImxvY2F0aW9uIiwiaGFzaCIsInN1YnN0ciIsInJlcyIsIkpTT04iLCJwYXJzZSIsImF0b2IiLCJnZXRVcmwiLCJlbnYiLCJwYXRoIiwiZW52U3RyIiwibGFuZyIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwicHJvY2VzcyIsIk5FWFRfUFVCTElDX1NFQ1JFQ1lfQVBJX1VSTCIsInN0YXJ0c1dpdGgiLCJnZXRTZWNyZWN5Q2xpZW50Iiwic2Vzc2lvbiIsInN0b3JhZ2UiLCJ1YVNlc3Npb24iLCJ1c2VyQXBwU2Vzc2lvbiIsImxvYWQiLCJ1YUtleXMiLCJ1c2VyQXBwS2V5cyIsInVhSnd0Iiwiand0IiwiaW5mb3MiLCJzYXZlIiwia2V5cyIsImxvZ2luIiwiYXBwQ29kZSIsInJlZGlyZWN0Iiwic2NvcGVzIiwiYmFja1BhdGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFwcFVybCIsIm9yaWdpbiIsImluY2x1ZGVzIiwiY2xpZW50IiwiZGF0YSIsImJ0b2EiLCJzdHJpbmdpZnkiLCJyZXBsYWNlQWxsIiwidXJsIiwidmFsaWRhdGUiLCJocmVmIiwid2lkdGgiLCJoZWlnaHQiLCJyZXNpemFibGUiLCJtZW51YmFyIiwiY2VudGVyZWQiLCJzY3JvbGxiYXJzIiwiZXJyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlY3JlY3lDbGllbnQgfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcG9wdXAgfSBmcm9tIFwiLi4vUG9wdXBUb29scy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5VXNlckFwcCB9IGZyb20gXCIuL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIi4vc3RvcmFnZS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbmZvcygpOiBTZWNyZWN5VXNlckFwcCB8IG51bGwge1xuICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5oYXNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnN1YnN0cigxKTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBKU09OLnBhcnNlKGF0b2IoaGFzaCkpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gXCJcIjtcbiAgICAvLyBUT0RPIEFkZCBvYmplY3QgY29udGVudCB2YWxpZGF0aW9uXG4gICAgcmV0dXJuIHJlcztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFVybCA9ICh7XG4gIGVudixcbiAgaGFzaCxcbiAgcGF0aFxufToge1xuICBlbnY6IHN0cmluZztcbiAgaGFzaDogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG59KTogc3RyaW5nID0+IHtcbiAgbGV0IGVudlN0ciA9IFwiXCI7XG4gIGlmIChlbnYgPT09IFwiZGV2XCIpIHtcbiAgICBlbnZTdHIgPSBcImRldi5cIjtcbiAgfVxuICBjb25zdCBsYW5nID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhbmc7XG4gIHJldHVybiBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19TRUNSRUNZX0FQSV9VUkxcbiAgICA/IGBodHRwOi8vbG9jYWxob3N0OjMwMDIke2xhbmcgPyBgLyR7bGFuZ31gIDogXCJcIn0ke1xuICAgICAgICBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gcGF0aCA6IGAvJHtwYXRofWBcbiAgICAgIH0jJHtoYXNofWBcbiAgICA6IGBodHRwczovL2F1dGguJHtlbnZTdHJ9c2VjcmVjeS5tZSR7bGFuZyA/IGAvJHtsYW5nfWAgOiBcIlwifSR7XG4gICAgICAgIHBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBwYXRoIDogYC8ke3BhdGh9YFxuICAgICAgfSMke2hhc2h9YDtcbn07XG5cbmV4cG9ydCB0eXBlIEhhc2hJbmZvcyA9IHtcbiAgYXBwVXJsOiBzdHJpbmc7XG4gIGJhY2tQYXRoPzogc3RyaW5nO1xuICBhcHBDb2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF0aD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHJlZGlyZWN0PzogYm9vbGVhbjtcbiAgc2NvcGVzPzoge1xuICAgIGVtYWlsOiBib29sZWFuO1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIFNlY3JlY3lFbnYgPSBcImRldlwiIHwgXCJwcm9kXCI7XG5leHBvcnQgdHlwZSBVc2VTZWNyZWN5UGFyYW1zID0gT21pdDxIYXNoSW5mb3MsIFwiYXBwVXJsXCI+ICYge1xuICBlbnY6IFNlY3JlY3lFbnY7XG4gIHNlc3Npb24/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsdWU8VCBleHRlbmRzIFVzZVNlY3JlY3lQYXJhbXM+ID0gVCBleHRlbmRzIHsgcmVkaXJlY3Q6IHRydWUgfVxuICA/IFNlY3JlY3lDbGllbnQgfCBudWxsXG4gIDogU2VjcmVjeUNsaWVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3JlY3lDbGllbnQoXG4gIGVudjogU2VjcmVjeUVudixcbiAgc2Vzc2lvbj86IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IFNlY3JlY3lDbGllbnQgfCBudWxsIHtcbiAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2Uoc2Vzc2lvbik7XG4gIGNvbnN0IHVhU2Vzc2lvbiA9IHN0b3JhZ2UudXNlckFwcFNlc3Npb24ubG9hZCgpO1xuICBjb25zdCB1YUtleXMgPSBzdG9yYWdlLnVzZXJBcHBLZXlzLmxvYWQoKTtcbiAgY29uc3QgdWFKd3QgPSBzdG9yYWdlLmp3dC5sb2FkKCk7XG4gIGlmICghdWFTZXNzaW9uIHx8ICF1YUtleXMgfHwgIXVhSnd0KSB7XG4gICAgY29uc3QgaW5mb3MgPSBwYXJzZUluZm9zKCk7XG4gICAgaWYgKGluZm9zKSB7XG4gICAgICBzdG9yYWdlLnVzZXJBcHBLZXlzLnNhdmUoaW5mb3Mua2V5cyk7XG4gICAgICBzdG9yYWdlLnVzZXJBcHBTZXNzaW9uLnNhdmUoaW5mb3MudWFTZXNzaW9uKTtcbiAgICAgIHN0b3JhZ2Uuand0LnNhdmUoaW5mb3Muand0KTtcbiAgICAgIHJldHVybiBuZXcgU2VjcmVjeUNsaWVudChpbmZvcy51YVNlc3Npb24sIGluZm9zLmtleXMsIGluZm9zLmp3dCwgZW52KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IFNlY3JlY3lDbGllbnQodWFTZXNzaW9uLCB1YUtleXMsIHVhSnd0LCBlbnYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9naW48VCBleHRlbmRzIFVzZVNlY3JlY3lQYXJhbXM+KFxuICB7IGFwcENvZGUsIHBhdGgsIHJlZGlyZWN0LCBzY29wZXMsIGJhY2tQYXRoLCBlbnYsIHNlc3Npb24gfTogVCA9IHt9IGFzIFRcbik6IFByb21pc2U8VmFsdWU8VD4+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBhcHBVcmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgIGlmIChhcHBDb2RlICYmICFhcHBVcmwuaW5jbHVkZXMoXCJsb2NhbGhvc3RcIikpIHtcbiAgICAgIHJldHVybiByZWplY3QoXCJDYW4ndCB1c2UgYXBwQ29kZSBpZiBub3QgaW4gbG9jYWxob3N0XCIpO1xuICAgIH1cbiAgICBjb25zdCBjbGllbnQgPSBnZXRTZWNyZWN5Q2xpZW50KGVudik7XG5cbiAgICBpZiAoIWNsaWVudCkge1xuICAgICAgY29uc3QgaW5mb3M6IEhhc2hJbmZvcyA9IHtcbiAgICAgICAgYXBwVXJsLFxuICAgICAgICBhcHBDb2RlLFxuICAgICAgICByZWRpcmVjdCxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgc2NvcGVzLFxuICAgICAgICBiYWNrUGF0aFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGRhdGEgPSBidG9hKEpTT04uc3RyaW5naWZ5KGluZm9zKSkucmVwbGFjZUFsbChcIj1cIiwgXCJcIik7XG5cbiAgICAgIGNvbnN0IHVybCA9IGdldFVybCh7XG4gICAgICAgIGVudixcbiAgICAgICAgaGFzaDogZGF0YSxcbiAgICAgICAgcGF0aDogXCJsb2dpblwiXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdmFsaWRhdGUgPSAoaW5mb3M6IFNlY3JlY3lVc2VyQXBwKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHNlc3Npb24pO1xuICAgICAgICBzdG9yYWdlLnVzZXJBcHBTZXNzaW9uLnNhdmUoaW5mb3MudWFTZXNzaW9uKTtcbiAgICAgICAgc3RvcmFnZS51c2VyQXBwS2V5cy5zYXZlKGluZm9zLmtleXMpO1xuICAgICAgICBzdG9yYWdlLmp3dC5zYXZlKGluZm9zLmp3dCk7XG4gICAgICAgIHJldHVybiByZXNvbHZlKFxuICAgICAgICAgIG5ldyBTZWNyZWN5Q2xpZW50KFxuICAgICAgICAgICAgaW5mb3MudWFTZXNzaW9uLFxuICAgICAgICAgICAgaW5mb3Mua2V5cyxcbiAgICAgICAgICAgIGluZm9zLmp3dCxcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICkgYXMgVmFsdWU8VD5cbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChyZWRpcmVjdCkge1xuICAgICAgICBjb25zdCBpbmZvcyA9IHBhcnNlSW5mb3MoKTtcbiAgICAgICAgaWYgKGluZm9zKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlKGluZm9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShudWxsIGFzIFZhbHVlPFQ+KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcG9wdXAoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIFwiU2VjcmVjeSBMb2dpblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiA1MDAsXG4gICAgICAgICAgICBoZWlnaHQ6IDc1MCxcbiAgICAgICAgICAgIHJlc2l6YWJsZTogXCJub1wiLFxuICAgICAgICAgICAgbWVudWJhcjogXCJub1wiLFxuICAgICAgICAgICAgbG9jYXRpb246IFwibm9cIixcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgc2Nyb2xsYmFyczogXCJub1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZm9zID0gZGF0YSBhcyBTZWNyZWN5VXNlckFwcDtcbiAgICAgICAgICAgICAgaWYgKGluZm9zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlKGluZm9zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc29sdmUoY2xpZW50IGFzIFZhbHVlPFQ+KTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLFFBQVEsWUFBWTtBQUMxQyxTQUFTQyxLQUFLLFFBQVEsa0JBQWtCO0FBRXhDLFNBQVNDLFVBQVUsUUFBUSxjQUFjO0FBRXpDLE9BQU8sU0FBU0MsVUFBVSxHQUEwQjtFQUNsRCxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLEVBQUU7SUFDekIsT0FBTyxJQUFJO0VBQ2I7RUFDQSxNQUFNQSxJQUFJLEdBQUdGLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUM7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