@secrecy/lib 1.0.0-dev.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +1 -1
  2. package/{lib → dist}/BaseClient.d.ts +62 -69
  3. package/dist/BaseClient.js +1124 -0
  4. package/{lib → dist}/PopupTools.d.ts +1 -1
  5. package/dist/PopupTools.js +212 -0
  6. package/{lib → dist}/ZeusThunder.d.ts +0 -0
  7. package/dist/ZeusThunder.js +79 -0
  8. package/dist/cache.d.ts +6 -0
  9. package/dist/cache.js +4 -0
  10. package/dist/client/admin/index.d.ts +11 -0
  11. package/dist/client/admin/index.js +110 -0
  12. package/{lib → dist}/client/convert/file.d.ts +3 -3
  13. package/dist/client/convert/file.js +34 -0
  14. package/{lib → dist}/client/convert/mail.d.ts +0 -0
  15. package/dist/client/convert/mail.js +46 -0
  16. package/dist/client/convert/node.d.ts +9 -0
  17. package/dist/client/convert/node.js +101 -0
  18. package/{lib → dist}/client/helpers.d.ts +1 -1
  19. package/dist/client/helpers.js +114 -0
  20. package/dist/client/index.d.ts +164 -0
  21. package/dist/client/index.js +3206 -0
  22. package/{lib → dist}/client/storage.d.ts +0 -0
  23. package/dist/client/storage.js +12 -0
  24. package/dist/client/types/File.d.ts +14 -0
  25. package/dist/client/types/File.js +3 -0
  26. package/{lib → dist}/client/types/Inputs.d.ts +2 -7
  27. package/dist/client/types/Inputs.js +3 -0
  28. package/dist/client/types/Node.d.ts +49 -0
  29. package/dist/client/types/Node.js +3 -0
  30. package/{lib → dist}/client/types/UserAppNotifications.d.ts +1 -1
  31. package/dist/client/types/UserAppNotifications.js +3 -0
  32. package/{lib → dist}/client/types/UserAppSettings.d.ts +0 -1
  33. package/dist/client/types/UserAppSettings.js +3 -0
  34. package/{lib → dist}/client/types/index.d.ts +7 -13
  35. package/dist/client/types/index.js +8 -0
  36. package/dist/client/types/selectors.d.ts +476 -0
  37. package/dist/client/types/selectors.js +125 -0
  38. package/{lib → dist}/crypto/file.d.ts +0 -0
  39. package/dist/crypto/file.js +210 -0
  40. package/{lib → dist}/crypto/index.d.ts +0 -0
  41. package/dist/crypto/index.js +47 -0
  42. package/dist/error.d.ts +30 -0
  43. package/dist/error.js +3 -0
  44. package/{lib → dist}/index.d.ts +4 -3
  45. package/dist/index.js +10 -0
  46. package/{lib → dist}/minify/index.d.ts +0 -0
  47. package/dist/minify/index.js +28 -0
  48. package/{lib → dist}/minify/lz4.d.ts +0 -0
  49. package/dist/minify/lz4.js +627 -0
  50. package/{lib → dist}/sodium.d.ts +0 -0
  51. package/dist/sodium.js +6 -0
  52. package/{lib → dist}/utils/store-buddy.d.ts +0 -0
  53. package/dist/utils/store-buddy.js +65 -0
  54. package/{lib → dist}/utils/time.d.ts +0 -0
  55. package/dist/utils/time.js +14 -0
  56. package/{lib → dist/utils}/utils.d.ts +0 -0
  57. package/dist/utils/utils.js +57 -0
  58. package/{lib → dist}/worker/__mock__/sodium.worker.d.ts +0 -0
  59. package/dist/worker/__mock__/sodium.worker.js +49 -0
  60. package/{lib → dist}/worker/md5.d.ts +0 -0
  61. package/dist/worker/md5.js +25 -0
  62. package/{lib → dist}/worker/sodium.d.ts +0 -0
  63. package/dist/worker/sodium.js +120 -0
  64. package/{lib → dist}/worker/workerCodes.d.ts +0 -0
  65. package/dist/worker/workerCodes.js +3 -0
  66. package/{lib → dist}/zeus/const.d.ts +5 -0
  67. package/dist/zeus/const.js +1230 -0
  68. package/dist/zeus/index.d.ts +4069 -0
  69. package/dist/zeus/index.js +657 -0
  70. package/package.json +64 -57
  71. package/lib/BaseClient.js +0 -1332
  72. package/lib/PopupTools.js +0 -213
  73. package/lib/ZeusThunder.js +0 -112
  74. package/lib/cache.d.ts +0 -7
  75. package/lib/cache.js +0 -5
  76. package/lib/client/convert/file.js +0 -39
  77. package/lib/client/convert/folder.d.ts +0 -8
  78. package/lib/client/convert/folder.js +0 -264
  79. package/lib/client/convert/mail.js +0 -46
  80. package/lib/client/convert/vFile.d.ts +0 -5
  81. package/lib/client/convert/vFile.js +0 -164
  82. package/lib/client/helpers.js +0 -116
  83. package/lib/client/index.d.ts +0 -167
  84. package/lib/client/index.js +0 -3746
  85. package/lib/client/storage.js +0 -12
  86. package/lib/client/types/File.d.ts +0 -21
  87. package/lib/client/types/File.js +0 -2
  88. package/lib/client/types/FilesOnUsersOnApplications.d.ts +0 -9
  89. package/lib/client/types/FilesOnUsersOnApplications.js +0 -2
  90. package/lib/client/types/Folder.d.ts +0 -68
  91. package/lib/client/types/Folder.js +0 -7
  92. package/lib/client/types/Inputs.js +0 -2
  93. package/lib/client/types/UserAppNotifications.js +0 -2
  94. package/lib/client/types/UserAppSettings.js +0 -2
  95. package/lib/client/types/VFile.d.ts +0 -62
  96. package/lib/client/types/VFile.js +0 -4
  97. package/lib/client/types/index.js +0 -9
  98. package/lib/client/types/queries.d.ts +0 -535
  99. package/lib/client/types/queries.js +0 -192
  100. package/lib/crypto/file.js +0 -291
  101. package/lib/crypto/index.js +0 -37
  102. package/lib/index.js +0 -40
  103. package/lib/minify/index.js +0 -28
  104. package/lib/minify/lz4.js +0 -633
  105. package/lib/sodium.js +0 -28
  106. package/lib/utils/store-buddy.js +0 -69
  107. package/lib/utils/time.js +0 -22
  108. package/lib/utils.js +0 -188
  109. package/lib/worker/__mock__/sodium.worker.js +0 -57
  110. package/lib/worker/md5.js +0 -43
  111. package/lib/worker/sodium.js +0 -155
  112. package/lib/worker/workerCodes.js +0 -3
  113. package/lib/zeus/const.js +0 -1643
  114. package/lib/zeus/index.d.ts +0 -26220
  115. package/lib/zeus/index.js +0 -552
@@ -0,0 +1,125 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ 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; }
4
+
5
+ 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; }
6
+
7
+ import { Selector } from "../../zeus/index.js";
8
+ export const fileSelector = Selector("File")({
9
+ id: true,
10
+ size: true,
11
+ sizeBefore: true,
12
+ createdAt: true,
13
+ md5: true,
14
+ md5Encrypted: true,
15
+ access: {
16
+ key: true,
17
+ sharedBy: {
18
+ keyPair: {
19
+ pub: true
20
+ }
21
+ }
22
+ }
23
+ });
24
+ export const userSelector = Selector("User")({
25
+ id: true,
26
+ firstname: true,
27
+ lastname: true,
28
+ email: true,
29
+ publicKey: true
30
+ });
31
+ export const nodeSelector = Selector("Node")({
32
+ id: true,
33
+ isFavorite: true,
34
+ type: true,
35
+ createdAt: true,
36
+ deletedAt: true,
37
+ createdBy: {
38
+ user: userSelector
39
+ },
40
+ updatedAt: true,
41
+ name: true,
42
+ access: {
43
+ rights: true,
44
+ isRoot: true,
45
+ nameKey: true,
46
+ sharedBy: {
47
+ keyPair: {
48
+ pub: true
49
+ }
50
+ },
51
+ userApp: {
52
+ user: userSelector
53
+ }
54
+ },
55
+ accesses: {
56
+ rights: true,
57
+ isRoot: true,
58
+ nameKey: true,
59
+ sharedBy: {
60
+ keyPair: {
61
+ pub: true
62
+ }
63
+ },
64
+ userApp: {
65
+ user: userSelector
66
+ }
67
+ },
68
+ breadcrumb: {
69
+ id: true,
70
+ name: true,
71
+ nameKey: true,
72
+ pubKey: true
73
+ },
74
+ history: fileSelector,
75
+ current: fileSelector,
76
+ currentFileId: true
77
+ });
78
+ export const nodeFullSelector = Selector("Node")(_objectSpread(_objectSpread({}, nodeSelector), {}, {
79
+ parent: nodeSelector,
80
+ children: nodeSelector
81
+ }));
82
+ export const mailSelector = Selector("Mail")({
83
+ id: true,
84
+ type: true,
85
+ body: true,
86
+ subject: true,
87
+ openedAt: true,
88
+ createdAt: true,
89
+ deletedAt: true,
90
+ recipients: userSelector,
91
+ recipient: userSelector,
92
+ sender: userSelector,
93
+ mailIntegrity: {
94
+ id: true,
95
+ hash: true,
96
+ hashKey: true,
97
+ replyTo: {
98
+ id: true
99
+ },
100
+ temporaryRecipients: {
101
+ email: true
102
+ },
103
+ recipients: userSelector
104
+ },
105
+ mailIntegrityDraft: {
106
+ id: true,
107
+ hash: true,
108
+ hashKey: true,
109
+ replyTo: {
110
+ id: true
111
+ },
112
+ temporaryRecipients: {
113
+ email: true
114
+ },
115
+ recipients: userSelector
116
+ },
117
+ files: {
118
+ fileKey: true,
119
+ filename: true,
120
+ file: {
121
+ id: true
122
+ }
123
+ }
124
+ });
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWxlY3RvciIsImZpbGVTZWxlY3RvciIsImlkIiwic2l6ZSIsInNpemVCZWZvcmUiLCJjcmVhdGVkQXQiLCJtZDUiLCJtZDVFbmNyeXB0ZWQiLCJhY2Nlc3MiLCJrZXkiLCJzaGFyZWRCeSIsImtleVBhaXIiLCJwdWIiLCJ1c2VyU2VsZWN0b3IiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImVtYWlsIiwicHVibGljS2V5Iiwibm9kZVNlbGVjdG9yIiwiaXNGYXZvcml0ZSIsInR5cGUiLCJkZWxldGVkQXQiLCJjcmVhdGVkQnkiLCJ1c2VyIiwidXBkYXRlZEF0IiwibmFtZSIsInJpZ2h0cyIsImlzUm9vdCIsIm5hbWVLZXkiLCJ1c2VyQXBwIiwiYWNjZXNzZXMiLCJicmVhZGNydW1iIiwicHViS2V5IiwiaGlzdG9yeSIsImN1cnJlbnQiLCJjdXJyZW50RmlsZUlkIiwibm9kZUZ1bGxTZWxlY3RvciIsInBhcmVudCIsImNoaWxkcmVuIiwibWFpbFNlbGVjdG9yIiwiYm9keSIsInN1YmplY3QiLCJvcGVuZWRBdCIsInJlY2lwaWVudHMiLCJyZWNpcGllbnQiLCJzZW5kZXIiLCJtYWlsSW50ZWdyaXR5IiwiaGFzaCIsImhhc2hLZXkiLCJyZXBseVRvIiwidGVtcG9yYXJ5UmVjaXBpZW50cyIsIm1haWxJbnRlZ3JpdHlEcmFmdCIsImZpbGVzIiwiZmlsZUtleSIsImZpbGVuYW1lIiwiZmlsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdHlwZXMvc2VsZWN0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL3pldXMvaW5kZXguanNcIjtcblxuZXhwb3J0IGNvbnN0IGZpbGVTZWxlY3RvciA9IFNlbGVjdG9yKFwiRmlsZVwiKSh7XG4gIGlkOiB0cnVlLFxuICBzaXplOiB0cnVlLFxuICBzaXplQmVmb3JlOiB0cnVlLFxuICBjcmVhdGVkQXQ6IHRydWUsXG4gIG1kNTogdHJ1ZSxcbiAgbWQ1RW5jcnlwdGVkOiB0cnVlLFxuICBhY2Nlc3M6IHtcbiAgICBrZXk6IHRydWUsXG4gICAgc2hhcmVkQnk6IHtcbiAgICAgIGtleVBhaXI6IHtcbiAgICAgICAgcHViOiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHVzZXJTZWxlY3RvciA9IFNlbGVjdG9yKFwiVXNlclwiKSh7XG4gIGlkOiB0cnVlLFxuICBmaXJzdG5hbWU6IHRydWUsXG4gIGxhc3RuYW1lOiB0cnVlLFxuICBlbWFpbDogdHJ1ZSxcbiAgcHVibGljS2V5OiB0cnVlXG59KTtcblxuZXhwb3J0IGNvbnN0IG5vZGVTZWxlY3RvciA9IFNlbGVjdG9yKFwiTm9kZVwiKSh7XG4gIGlkOiB0cnVlLFxuICBpc0Zhdm9yaXRlOiB0cnVlLFxuICB0eXBlOiB0cnVlLFxuICBjcmVhdGVkQXQ6IHRydWUsXG4gIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgY3JlYXRlZEJ5OiB7XG4gICAgdXNlcjogdXNlclNlbGVjdG9yXG4gIH0sXG4gIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgbmFtZTogdHJ1ZSxcbiAgYWNjZXNzOiB7XG4gICAgcmlnaHRzOiB0cnVlLFxuICAgIGlzUm9vdDogdHJ1ZSxcbiAgICBuYW1lS2V5OiB0cnVlLFxuICAgIHNoYXJlZEJ5OiB7XG4gICAgICBrZXlQYWlyOiB7XG4gICAgICAgIHB1YjogdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAgdXNlckFwcDoge1xuICAgICAgdXNlcjogdXNlclNlbGVjdG9yXG4gICAgfVxuICB9LFxuICBhY2Nlc3Nlczoge1xuICAgIHJpZ2h0czogdHJ1ZSxcbiAgICBpc1Jvb3Q6IHRydWUsXG4gICAgbmFtZUtleTogdHJ1ZSxcbiAgICBzaGFyZWRCeToge1xuICAgICAga2V5UGFpcjoge1xuICAgICAgICBwdWI6IHRydWVcbiAgICAgIH1cbiAgICB9LFxuICAgIHVzZXJBcHA6IHtcbiAgICAgIHVzZXI6IHVzZXJTZWxlY3RvclxuICAgIH1cbiAgfSxcbiAgYnJlYWRjcnVtYjoge1xuICAgIGlkOiB0cnVlLFxuICAgIG5hbWU6IHRydWUsXG4gICAgbmFtZUtleTogdHJ1ZSxcbiAgICBwdWJLZXk6IHRydWVcbiAgfSxcbiAgaGlzdG9yeTogZmlsZVNlbGVjdG9yLFxuICBjdXJyZW50OiBmaWxlU2VsZWN0b3IsXG4gIGN1cnJlbnRGaWxlSWQ6IHRydWVcbn0pO1xuXG5leHBvcnQgY29uc3Qgbm9kZUZ1bGxTZWxlY3RvciA9IFNlbGVjdG9yKFwiTm9kZVwiKSh7XG4gIC4uLm5vZGVTZWxlY3RvcixcbiAgcGFyZW50OiBub2RlU2VsZWN0b3IsXG4gIGNoaWxkcmVuOiBub2RlU2VsZWN0b3Jcbn0pO1xuXG5leHBvcnQgY29uc3QgbWFpbFNlbGVjdG9yID0gU2VsZWN0b3IoXCJNYWlsXCIpKHtcbiAgaWQ6IHRydWUsXG4gIHR5cGU6IHRydWUsXG4gIGJvZHk6IHRydWUsXG4gIHN1YmplY3Q6IHRydWUsXG4gIG9wZW5lZEF0OiB0cnVlLFxuICBjcmVhdGVkQXQ6IHRydWUsXG4gIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgcmVjaXBpZW50czogdXNlclNlbGVjdG9yLFxuICByZWNpcGllbnQ6IHVzZXJTZWxlY3RvcixcbiAgc2VuZGVyOiB1c2VyU2VsZWN0b3IsXG4gIG1haWxJbnRlZ3JpdHk6IHtcbiAgICBpZDogdHJ1ZSxcbiAgICBoYXNoOiB0cnVlLFxuICAgIGhhc2hLZXk6IHRydWUsXG4gICAgcmVwbHlUbzoge1xuICAgICAgaWQ6IHRydWVcbiAgICB9LFxuICAgIHRlbXBvcmFyeVJlY2lwaWVudHM6IHtcbiAgICAgIGVtYWlsOiB0cnVlXG4gICAgfSxcbiAgICByZWNpcGllbnRzOiB1c2VyU2VsZWN0b3JcbiAgfSxcbiAgbWFpbEludGVncml0eURyYWZ0OiB7XG4gICAgaWQ6IHRydWUsXG4gICAgaGFzaDogdHJ1ZSxcbiAgICBoYXNoS2V5OiB0cnVlLFxuICAgIHJlcGx5VG86IHtcbiAgICAgIGlkOiB0cnVlXG4gICAgfSxcbiAgICB0ZW1wb3JhcnlSZWNpcGllbnRzOiB7XG4gICAgICBlbWFpbDogdHJ1ZVxuICAgIH0sXG4gICAgcmVjaXBpZW50czogdXNlclNlbGVjdG9yXG4gIH0sXG4gIGZpbGVzOiB7XG4gICAgZmlsZUtleTogdHJ1ZSxcbiAgICBmaWxlbmFtZTogdHJ1ZSxcbiAgICBmaWxlOiB7XG4gICAgICBpZDogdHJ1ZVxuICAgIH1cbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLFFBQVQsUUFBeUIscUJBQXpCO0FBRUEsT0FBTyxNQUFNQyxZQUFZLEdBQUdELFFBQVEsQ0FBQyxNQUFELENBQVIsQ0FBaUI7RUFDM0NFLEVBQUUsRUFBRSxJQUR1QztFQUUzQ0MsSUFBSSxFQUFFLElBRnFDO0VBRzNDQyxVQUFVLEVBQUUsSUFIK0I7RUFJM0NDLFNBQVMsRUFBRSxJQUpnQztFQUszQ0MsR0FBRyxFQUFFLElBTHNDO0VBTTNDQyxZQUFZLEVBQUUsSUFONkI7RUFPM0NDLE1BQU0sRUFBRTtJQUNOQyxHQUFHLEVBQUUsSUFEQztJQUVOQyxRQUFRLEVBQUU7TUFDUkMsT0FBTyxFQUFFO1FBQ1BDLEdBQUcsRUFBRTtNQURFO0lBREQ7RUFGSjtBQVBtQyxDQUFqQixDQUFyQjtBQWlCUCxPQUFPLE1BQU1DLFlBQVksR0FBR2IsUUFBUSxDQUFDLE1BQUQsQ0FBUixDQUFpQjtFQUMzQ0UsRUFBRSxFQUFFLElBRHVDO0VBRTNDWSxTQUFTLEVBQUUsSUFGZ0M7RUFHM0NDLFFBQVEsRUFBRSxJQUhpQztFQUkzQ0MsS0FBSyxFQUFFLElBSm9DO0VBSzNDQyxTQUFTLEVBQUU7QUFMZ0MsQ0FBakIsQ0FBckI7QUFRUCxPQUFPLE1BQU1DLFlBQVksR0FBR2xCLFFBQVEsQ0FBQyxNQUFELENBQVIsQ0FBaUI7RUFDM0NFLEVBQUUsRUFBRSxJQUR1QztFQUUzQ2lCLFVBQVUsRUFBRSxJQUYrQjtFQUczQ0MsSUFBSSxFQUFFLElBSHFDO0VBSTNDZixTQUFTLEVBQUUsSUFKZ0M7RUFLM0NnQixTQUFTLEVBQUUsSUFMZ0M7RUFNM0NDLFNBQVMsRUFBRTtJQUNUQyxJQUFJLEVB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
File without changes
@@ -0,0 +1,210 @@
1
+ import { setup, sodium } from "../sodium.js";
2
+ import SparkMD5 from "spark-md5";
3
+ import { chunks } from "../utils/utils.js";
4
+
5
+ function assert(c, message) {
6
+ if (!c) {
7
+ throw new Error(message);
8
+ }
9
+ }
10
+
11
+ export function secretstreamKeygen() {
12
+ return sodium.crypto_secretstream_xchacha20poly1305_keygen();
13
+ }
14
+
15
+ function encrypt(key) {
16
+ let destroyed = false;
17
+ const {
18
+ state,
19
+ header
20
+ } = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
21
+
22
+ const encrypt = (tag, plaintext) => {
23
+ assert(destroyed === false, "state already destroyed");
24
+ return sodium.crypto_secretstream_xchacha20poly1305_push(state, plaintext, null, tag);
25
+ };
26
+
27
+ function destroy() {
28
+ assert(destroyed === false, "state already destroyed");
29
+ destroyed = true;
30
+ }
31
+
32
+ return {
33
+ encrypt,
34
+ destroy,
35
+ header
36
+ };
37
+ }
38
+
39
+ function decrypt(header, key) {
40
+ assert(header.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES, "header must be at least HEADERBYTES (" + sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES + ") long");
41
+ assert(key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES, "key must be at least KEYBYTES (" + sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES + ") long");
42
+ let destroyed = false;
43
+ const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key);
44
+
45
+ const decrypt = ciphertext => {
46
+ assert(destroyed === false, "state already destroyed");
47
+ return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);
48
+ };
49
+
50
+ function destroy() {
51
+ assert(destroyed === false, "state already destroyed");
52
+ destroyed = true;
53
+ }
54
+
55
+ return {
56
+ decrypt,
57
+ destroy
58
+ };
59
+ }
60
+
61
+ export const CHUNK_SIZE = 8192;
62
+ export async function encryptSecretstream(key, data, progress, abort) {
63
+ await setup();
64
+ const {
65
+ encrypt: crypt,
66
+ destroy,
67
+ header
68
+ } = encrypt(key);
69
+ const cryptedChunk = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
70
+ const max = Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;
71
+ progress == null ? void 0 : progress({
72
+ percent: 0,
73
+ total: max,
74
+ current: 0
75
+ });
76
+ const final = new Uint8Array(max);
77
+ const sparkEncrypted = new SparkMD5.ArrayBuffer();
78
+ const spark = new SparkMD5.ArrayBuffer();
79
+ final.set(header);
80
+ sparkEncrypted.append(header);
81
+ let total = header.byteLength;
82
+ progress == null ? void 0 : progress({
83
+ percent: total / max,
84
+ total: max,
85
+ current: total
86
+ });
87
+ let lastPercent = total / max;
88
+
89
+ for (const chunk of chunks(data, CHUNK_SIZE)) {
90
+ if (abort != null && abort.signal.aborted) {
91
+ throw new Error("Encrypt aborted");
92
+ }
93
+
94
+ spark.append(chunk);
95
+ const tag = chunk.length < CHUNK_SIZE ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;
96
+ const crypted = crypt(tag, chunk);
97
+ sparkEncrypted.append(crypted);
98
+ final.set(crypted, total);
99
+ total += crypted.byteLength;
100
+ const percent = total / max;
101
+
102
+ if (percent > lastPercent + 0.01) {
103
+ progress == null ? void 0 : progress({
104
+ percent,
105
+ total: max,
106
+ current: total
107
+ });
108
+ lastPercent = percent;
109
+ }
110
+ }
111
+
112
+ destroy();
113
+ progress == null ? void 0 : progress({
114
+ percent: 1,
115
+ total,
116
+ current: total
117
+ });
118
+ return {
119
+ data: final.slice(0, total),
120
+ md5Encrypted: sparkEncrypted.end(),
121
+ md5: spark.end()
122
+ };
123
+ }
124
+ export async function decryptSecretstream(key, data, progress, abort) {
125
+ await setup();
126
+ const header = data.slice(0, sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
127
+ data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
128
+ const {
129
+ decrypt: decryptt,
130
+ destroy
131
+ } = decrypt(header, key);
132
+ const chunkSize = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
133
+ const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;
134
+ progress == null ? void 0 : progress({
135
+ percent: 0,
136
+ total: max,
137
+ current: 0
138
+ });
139
+ const final = new Uint8Array(max);
140
+ let total = 0;
141
+ let lastPercent = total / max;
142
+
143
+ for (const chunk of chunks(data, chunkSize)) {
144
+ if (abort != null && abort.signal.aborted) {
145
+ throw new Error("Decrypt aborted");
146
+ }
147
+
148
+ const tmp = decryptt(chunk);
149
+ final.set(tmp.message, total);
150
+ total += tmp.message.byteLength;
151
+ const percent = total / max;
152
+
153
+ if (percent > lastPercent + 0.01) {
154
+ progress == null ? void 0 : progress({
155
+ percent,
156
+ total: max,
157
+ current: total
158
+ });
159
+ lastPercent = percent;
160
+ }
161
+ }
162
+
163
+ destroy();
164
+ progress == null ? void 0 : progress({
165
+ percent: 1,
166
+ total,
167
+ current: total
168
+ });
169
+ return final.slice(0, total);
170
+ } // async function mainSecretstream(random: Uint8Array): Promise<void> {
171
+ // const key = secretstreamKeygen();
172
+ // console.time("secretstream_encrypt");
173
+ // const crypted = encryptSecretstream(key, random);
174
+ // console.timeEnd("secretstream_encrypt");
175
+ // console.time("secretstream_decrypt");
176
+ // const decrypted = decryptSecretstream(key, crypted);
177
+ // console.timeEnd("secretstream_decrypt");
178
+ // const first = to_hex(random).slice(0, 32);
179
+ // const final = to_hex(decrypted).slice(0, 32);
180
+ // console.log({
181
+ // first,
182
+ // final,
183
+ // equals: first === final
184
+ // });
185
+ // }
186
+ // async function mainSecretbox(random: Uint8Array): Promise<void> {
187
+ // const key = generateSecretBox();
188
+ // console.time("secretbox_encrypt");
189
+ // const crypted = encryptFile(random, key);
190
+ // console.timeEnd("secretbox_encrypt");
191
+ // console.time("secretbox_decrypt");
192
+ // const decrypted = decryptFile(crypted, key);
193
+ // console.timeEnd("secretbox_decrypt");
194
+ // const first = to_hex(random).slice(0, 32);
195
+ // const final = to_hex(decrypted).slice(0, 32);
196
+ // console.log({
197
+ // first,
198
+ // final,
199
+ // equals: first === final
200
+ // });
201
+ // }
202
+ // async function main(): Promise<void> {
203
+ // await ready;
204
+ // console.time("randombytes_buf");
205
+ // const random = randombytes_buf(1_000_000 * 1024);
206
+ // console.timeEnd("randombytes_buf");
207
+ // await Promise.all([mainSecretstream(random), mainSecretbox(random)]);
208
+ // }
209
+ // main();
210
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXR1cCIsInNvZGl1bSIsIlNwYXJrTUQ1IiwiY2h1bmtzIiwiYXNzZXJ0IiwiYyIsIm1lc3NhZ2UiLCJFcnJvciIsInNlY3JldHN0cmVhbUtleWdlbiIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuIiwiZW5jcnlwdCIsImtleSIsImRlc3Ryb3llZCIsInN0YXRlIiwiaGVhZGVyIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1c2giLCJ0YWciLCJwbGFpbnRleHQiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2giLCJkZXN0cm95IiwiZGVjcnlwdCIsImJ5dGVMZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdWxsIiwiY2lwaGVydGV4dCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVsbCIsIkNIVU5LX1NJWkUiLCJlbmNyeXB0U2VjcmV0c3RyZWFtIiwiZGF0YSIsInByb2dyZXNzIiwiYWJvcnQiLCJjcnlwdCIsImNyeXB0ZWRDaHVuayIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTIiwibWF4IiwiTWF0aCIsImNlaWwiLCJwZXJjZW50IiwidG90YWwiLCJjdXJyZW50IiwiZmluYWwiLCJVaW50OEFycmF5Iiwic3BhcmtFbmNyeXB0ZWQiLCJBcnJheUJ1ZmZlciIsInNwYXJrIiwic2V0IiwiYXBwZW5kIiwibGFzdFBlcmNlbnQiLCJjaHVuayIsInNpZ25hbCIsImFib3J0ZWQiLCJsZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19GSU5BTCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX01FU1NBR0UiLCJjcnlwdGVkIiwic2xpY2UiLCJtZDVFbmNyeXB0ZWQiLCJlbmQiLCJtZDUiLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwiZGVjcnlwdHQiLCJjaHVua1NpemUiLCJ0bXAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY3J5cHRvL2ZpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXNzYWdlVGFnIH0gZnJvbSBcImxpYnNvZGl1bS13cmFwcGVyc1wiO1xuaW1wb3J0IHsgc2V0dXAsIHNvZGl1bSB9IGZyb20gXCIuLi9zb2RpdW0uanNcIjtcbmltcG9ydCBTcGFya01ENSBmcm9tIFwic3BhcmstbWQ1XCI7XG5pbXBvcnQgeyBjaHVua3MgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgRW5jcnlwdGVkRmlsZSA9IHtcbiAgZGF0YTogVWludDhBcnJheTtcbiAgbWQ1OiBzdHJpbmc7XG4gIG1kNUVuY3J5cHRlZDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gYXNzZXJ0KGM6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxudHlwZSBFbmNyeXB0Rm4gPSAodGFnOiBudW1iZXIsIHBsYWludGV4dDogVWludDhBcnJheSkgPT4gVWludDhBcnJheTtcblxudHlwZSBEZWNyeXB0Rm4gPSAoY2lwaGVydGV4dDogVWludDhBcnJheSkgPT4gTWVzc2FnZVRhZztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3JldHN0cmVhbUtleWdlbigpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2tleWdlbigpO1xufVxuXG5mdW5jdGlvbiBlbmNyeXB0KGtleTogVWludDhBcnJheSk6IHtcbiAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgZW5jcnlwdDogRW5jcnlwdEZuO1xuICBoZWFkZXI6IFVpbnQ4QXJyYXk7XG59IHtcbiAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlO1xuICBjb25zdCB7IHN0YXRlLCBoZWFkZXIgfSA9XG4gICAgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdXNoKGtleSk7XG5cbiAgY29uc3QgZW5jcnlwdDogRW5jcnlwdEZuID0gKHRhZywgcGxhaW50ZXh0KSA9PiB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG5cbiAgICByZXR1cm4gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVzaChcbiAgICAgIHN0YXRlLFxuICAgICAgcGxhaW50ZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIHRhZ1xuICAgICk7XG4gIH07XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpOiB2b2lkIHtcbiAgICBhc3NlcnQoZGVzdHJveWVkID09PSBmYWxzZSwgXCJzdGF0ZSBhbHJlYWR5IGRlc3Ryb3llZFwiKTtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmNyeXB0LFxuICAgIGRlc3Ryb3ksXG4gICAgaGVhZGVyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlY3J5cHQoXG4gIGhlYWRlcjogVWludDhBcnJheSxcbiAga2V5OiBVaW50OEFycmF5XG4pOiB7XG4gIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gIGRlY3J5cHQ6IERlY3J5cHRGbjtcbn0ge1xuICBhc3NlcnQoXG4gICAgaGVhZGVyLmJ5dGVMZW5ndGggPj1cbiAgICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTLFxuICAgIGBoZWFkZXIgbXVzdCBiZSBhdCBsZWFzdCBIRUFERVJCWVRFUyAoJHtzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFU30pIGxvbmdgXG4gICk7XG4gIGFzc2VydChcbiAgICBrZXkuYnl0ZUxlbmd0aCA+PSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyxcbiAgICBga2V5IG11c3QgYmUgYXQgbGVhc3QgS0VZQllURVMgKCR7c29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfS0VZQllURVN9KSBsb25nYFxuICApO1xuXG4gIGxldCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgY29uc3Qgc3RhdGUgPSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1bGwoXG4gICAgaGVhZGVyLFxuICAgIGtleVxuICApO1xuXG4gIGNvbnN0IGRlY3J5cHQ6IERlY3J5cHRGbiA9IGNpcGhlcnRleHQgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1bGwoc3RhdGUsIGNpcGhlcnRleHQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVjcnlwdCxcbiAgICBkZXN0cm95XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBDSFVOS19TSVpFID0gODE5MjtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3MgPSB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgY3VycmVudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRTZWNyZXRzdHJlYW0oXG4gIGtleTogVWludDhBcnJheSxcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IFByb2dyZXNzKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBhYm9ydD86IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxFbmNyeXB0ZWRGaWxlPiB7XG4gIGF3YWl0IHNldHVwKCk7XG4gIGNvbnN0IHsgZW5jcnlwdDogY3J5cHQsIGRlc3Ryb3ksIGhlYWRlciB9ID0gZW5jcnlwdChrZXkpO1xuICBjb25zdCBjcnlwdGVkQ2h1bmsgPVxuICAgIENIVU5LX1NJWkUgKyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9BQllURVM7XG4gIGNvbnN0IG1heCA9XG4gICAgTWF0aC5jZWlsKGRhdGEuYnl0ZUxlbmd0aCAvIENIVU5LX1NJWkUpICogY3J5cHRlZENodW5rICsgaGVhZGVyLmJ5dGVMZW5ndGg7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgY29uc3Qgc3BhcmtFbmNyeXB0ZWQgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcbiAgY29uc3Qgc3BhcmsgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcblxuICBmaW5hbC5zZXQoaGVhZGVyKTtcbiAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGhlYWRlcik7XG4gIGxldCB0b3RhbCA9IGhlYWRlci5ieXRlTGVuZ3RoO1xuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiB0b3RhbCAvIG1heCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IHRvdGFsXG4gIH0pO1xuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBDSFVOS19TSVpFKSkge1xuICAgIGlmIChhYm9ydD8uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5jcnlwdCBhYm9ydGVkYCk7XG4gICAgfVxuICAgIHNwYXJrLmFwcGVuZChjaHVuayk7XG4gICAgY29uc3QgdGFnID1cbiAgICAgIGNodW5rLmxlbmd0aCA8IENIVU5LX1NJWkVcbiAgICAgICAgPyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfRklOQUxcbiAgICAgICAgOiBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfTUVTU0FHRTtcbiAgICBjb25zdCBjcnlwdGVkID0gY3J5cHQodGFnLCBjaHVuayk7XG4gICAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGNyeXB0ZWQpO1xuICAgIGZpbmFsLnNldChjcnlwdGVkLCB0b3RhbCk7XG4gICAgdG90YWwgKz0gY3J5cHRlZC5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHBlcmNlbnQgPSB0b3RhbCAvIG1heDtcbiAgICBpZiAocGVyY2VudCA+IGxhc3RQZXJjZW50ICsgMC4wMSkge1xuICAgICAgcHJvZ3Jlc3M/Lih7XG4gICAgICAgIHBlcmNlbnQsXG4gICAgICAgIHRvdGFsOiBtYXgsXG4gICAgICAgIGN1cnJlbnQ6IHRvdGFsXG4gICAgICB9KTtcbiAgICAgIGxhc3RQZXJjZW50ID0gcGVyY2VudDtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCk7XG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDEsXG4gICAgdG90YWwsXG4gICAgY3VycmVudDogdG90YWxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZGF0YTogZmluYWwuc2xpY2UoMCwgdG90YWwpLFxuICAgIG1kNUVuY3J5cHRlZDogc3BhcmtFbmNyeXB0ZWQuZW5kKCksXG4gICAgbWQ1OiBzcGFyay5lbmQoKVxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdFNlY3JldHN0cmVhbShcbiAga2V5OiBVaW50OEFycmF5LFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwcm9ncmVzcz86IChwcm9ncmVzczogUHJvZ3Jlc3MpID0+IFByb21pc2U8dm9pZD4sXG4gIGFib3J0PzogQWJvcnRDb250cm9sbGVyXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgYXdhaXQgc2V0dXAoKTtcbiAgY29uc3QgaGVhZGVyID0gZGF0YS5zbGljZShcbiAgICAwLFxuICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTXG4gICk7XG4gIGRhdGEgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTKTtcblxuICBjb25zdCB7IGRlY3J5cHQ6IGRlY3J5cHR0LCBkZXN0cm95IH0gPSBkZWNyeXB0KGhlYWRlciwga2V5KTtcbiAgY29uc3QgY2h1bmtTaXplID1cbiAgICBDSFVOS19TSVpFICsgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTO1xuICBjb25zdCBtYXggPSBNYXRoLmNlaWwoZGF0YS5ieXRlTGVuZ3RoIC8gY2h1bmtTaXplKSAqIENIVU5LX1NJWkU7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgbGV0IHRvdGFsID0gMDtcblxuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBjaHVua1NpemUpKSB7XG4gICAgaWYgKGFib3J0Py5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWNyeXB0IGFib3J0ZWRgKTtcbiAgICB9XG4gICAgY29uc3QgdG1wID0gZGVjcnlwdHQoY2h1bmspO1xuICAgIGZpbmFsLnNldCh0bXAubWVzc2FnZSwgdG90YWwpO1xuICAgIHRvdGFsICs9IHRtcC5tZXNzYWdlLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgcGVyY2VudCA9IHRvdGFsIC8gbWF4O1xuICAgIGlmIChwZXJjZW50ID4gbGFzdFBlcmNlbnQgKyAwLjAxKSB7XG4gICAgICBwcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudCxcbiAgICAgICAgdG90YWw6IG1heCxcbiAgICAgICAgY3VycmVudDogdG90YWxcbiAgICAgIH0pO1xuICAgICAgbGFzdFBlcmNlbnQgPSBwZXJjZW50O1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTtcbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMSxcbiAgICB0b3RhbCxcbiAgICBjdXJyZW50OiB0b3RhbFxuICB9KTtcbiAgcmV0dXJuIGZpbmFsLnNsaWNlKDAsIHRvdGFsKTtcbn1cblxuLy8gYXN5bmMgZnVuY3Rpb24gbWFpblNlY3JldHN0cmVhbShyYW5kb206IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHZvaWQ+IHtcbi8vICAgY29uc3Qga2V5ID0gc2VjcmV0c3RyZWFtS2V5Z2VuKCk7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zdCBjcnlwdGVkID0gZW5jcnlwdFNlY3JldHN0cmVhbShrZXksIHJhbmRvbSk7XG4vLyAgIGNvbnNvbGUudGltZUVuZChcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZGVjcnlwdGVkID0gZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIGNyeXB0ZWQpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG4vLyBhc3luYyBmdW5jdGlvbiBtYWluU2VjcmV0Ym94KHJhbmRvbTogVWludDhBcnJheSk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBjb25zdCBrZXkgPSBnZW5lcmF0ZVNlY3JldEJveCgpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRib3hfZW5jcnlwdFwiKTtcbi8vICAgY29uc3QgY3J5cHRlZCA9IGVuY3J5cHRGaWxlKHJhbmRvbSwga2V5KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwic2VjcmV0Ym94X2VuY3J5cHRcIik7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldGJveF9kZWNyeXB0XCIpO1xuLy8gICBjb25zdCBkZWNyeXB0ZWQgPSBkZWNyeXB0RmlsZShjcnlwdGVkLCBrZXkpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRib3hfZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4vLyAgIGF3YWl0IHJlYWR5O1xuLy8gICBjb25zb2xlLnRpbWUoXCJyYW5kb21ieXRlc19idWZcIik7XG4vLyAgIGNvbnN0IHJhbmRvbSA9IHJhbmRvbWJ5dGVzX2J1ZigxXzAwMF8wMDAgKiAxMDI0KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwicmFuZG9tYnl0ZXNfYnVmXCIpO1xuLy8gICBhd2FpdCBQcm9taXNlLmFsbChbbWFpblNlY3JldHN0cmVhbShyYW5kb20pLCBtYWluU2VjcmV0Ym94KHJhbmRvbSldKTtcbi8vIH1cblxuLy8gbWFpbigpO1xuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxLQUFULEVBQWdCQyxNQUFoQixRQUE4QixjQUE5QjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsV0FBckI7QUFDQSxTQUFTQyxNQUFULFFBQXVCLG1CQUF2Qjs7QUFRQSxTQUFTQyxNQUFULENBQWdCQyxDQUFoQixFQUE0QkMsT0FBNUIsRUFBbUQ7RUFDakQsSUFBSSxDQUFDRCxDQUFMLEVBQVE7SUFDTixNQUFNLElBQUlFLEtBQUosQ0FBVUQsT0FBVixDQUFOO0VBQ0Q7QUFDRjs7QUFNRCxPQUFPLFNBQVNFLGtCQUFULEdBQTBDO0VBQy9DLE9BQU9QLE1BQU0sQ0FBQ1EsNENBQVAsRUFBUDtBQUNEOztBQUVELFNBQVNDLE9BQVQsQ0FBaUJDLEdBQWpCLEVBSUU7RUFDQSxJQUFJQyxTQUFTLEdBQUcsS0FBaEI7RUFDQSxNQUFNO0lBQUVDLEtBQUY7SUFBU0M7RUFBVCxJQUNKYixNQUFNLENBQUNjLCtDQUFQLENBQXVESixHQUF2RCxDQURGOztFQUdBLE1BQU1ELE9BQWtCLEdBQUcsQ0FBQ00sR0FBRCxFQUFNQyxTQUFOLEtBQW9CO0lBQzdDYixNQUFNLENBQUNRLFNBQVMsS0FBSyxLQUFmLEVBQXNCLHlCQUF0QixDQUFOO0lBRUEsT0FBT1gsTUFBTSxDQUFDaUIsMENBQVAsQ0FDTEwsS0FESyxFQUVMSSxTQUZLLEVBR0wsSUFISyxFQUlMRCxHQUpLLENBQVA7RUFNRCxDQVREOztFQVdBLFNBQVNHLE9BQVQsR0FBeUI7SUFDdkJmLE1BQU0sQ0FBQ1EsU0FBUyxLQUFLLEtBQWYsRUFBc0IseUJBQXRCLENBQU47SUFDQUEsU0FBUyxHQUFHLElBQVo7RUFDRDs7RUFFRCxPQUFPO0lBQ0xGLE9BREs7SUFFTFMsT0FGSztJQUdMTDtFQUhLLENBQVA7QUFLRDs7QUFFRCxTQUFTTSxPQUFULENBQ0VOLE1BREYsRUFFRUgsR0FGRixFQU1FO0VBQ0FQLE1BQU0sQ0FDSlUsTUFBTSxDQUFDTyxVQUFQLElBQ0VwQixNQUFNLENBQUNxQixpREFGTCw0Q0FHb0NyQixNQUFNLENBQUNxQixpREFIM0MsWUFBTjtFQUtBbEIsTUFBTSxDQUNKTyxHQUFHLENBQUNVLFVBQUosSUFBa0JwQixNQUFNLENBQUNzQiw4Q0FEckIsc0NBRThCdEIsTUFBTSxDQUFDc0IsOENBRnJDLFlBQU47RUFLQSxJQUFJWCxTQUFTLEdBQUcsS0FBaEI7RUFDQSxNQUFNQyxLQUFLLEdBQUdaLE1BQU0sQ0FBQ3VCLCtDQUFQLENBQ1pWLE1BRFksRUFFWkgsR0FGWSxDQUFkOztFQUtBLE1BQU1TLE9BQWtCLEdBQUdLLFVBQVUsSUFBSTtJQUN2Q3JCLE1BQU0sQ0FBQ1EsU0FBUyxLQUFLLEtBQWYsRUFBc0IseUJBQXRCLENBQU47SUFFQSxPQUFPWCxNQUFNLENBQUN5QiwwQ0FBUCxDQUFrRGIsS0FBbEQsRUFBeURZLFVBQXpELENBQVA7RUFDRCxDQUpEOztFQU1BLFNBQVNOLE9BQVQsR0FBeUI7SUFDdkJmLE1BQU0sQ0FBQ1EsU0FBUyxLQUFLLEtBQWYsRUFBc0IseUJBQXRCLENBQU47SUFDQUEsU0FBUyxHQUFHLElBQVo7RUFDRDs7RUFFRCxPQUFPO0lBQ0xRLE9BREs7SUFFTEQ7RUFGSyxDQUFQO0FBSUQ7O0FBRUQsT0FBTyxNQUFNUSxVQUFVLEdBQUcsSUFBbkI7QUFRUCxPQUFPLGVBQWVDLG1CQUFmLENBQ0xqQixHQURLLEVBRUxrQixJQUZLLEVBR0xDLFFBSEssRUFJTEMsS0FKSyxFQUttQjtFQUN4QixNQUFNL0IsS0FBSyxFQUFYO0VBQ0EsTUFBTTtJQUFFVSxPQUFPLEVBQUVzQixLQUFYO0lBQWtCYixPQUFsQjtJQUEyQkw7RUFBM0IsSUFBc0NKLE9BQU8sQ0FBQ0MsR0FBRCxDQUFuRDtFQUNBLE1BQU1zQixZQUFZLEdBQ2hCTixVQUFVLEdBQUcxQixNQUFNLENBQUNpQyw0Q0FEdEI7RUFFQSxNQUFNQyxHQUFHLEdBQ1BDLElBQUksQ0FBQ0MsSUFBTCxDQUFVUixJQUFJLENBQUNSLFVBQUwsR0FBa0JNLFVBQTVCLElBQTBDTSxZQUExQyxHQUF5RG5CLE1BQU0sQ0FBQ08sVUFEbEU7RUFHQVMsUUFBUSxRQUFSLFlBQUFBLFFBQVEsQ0FBRztJQUNUUSxPQUFPLEVBQUUsQ0FEQTtJQUVUQyxLQUFLLEVBQUVKLEdBRkU7SUFHVEssT0FBTyxFQUFFO0VBSEEsQ0FBSCxDQUFSO0VBS0EsTUFBTUMsS0FBSyxHQUFHLElBQUlDLFVBQUosQ0FBZVAsR0FBZixDQUFkO0VBQ0EsTUFBTVEsY0FBYyxHQUFHLElBQUl6QyxRQUFRLENBQUMwQyxXQUFiLEVBQXZCO0VBQ0EsTUFBTUMsS0FBSyxHQUFHLElBQUkzQyxRQUFRLENBQUMwQyxXQUFiLEVBQWQ7RUFFQUgsS0FBSyxDQUFDSyxHQUFOLENBQVVoQyxNQUFWO0VBQ0E2QixjQUFjLENBQUNJLE1BQWYsQ0FBc0JqQyxNQUF0QjtFQUNBLElBQUl5QixLQUFLLEdBQUd6QixNQUFNLENBQUNPLFVBQW5CO0VBQ0FTLFFBQVEsUUFBUixZQUFBQSxRQUFRLENBQUc7SUFDVFEsT0FBTyxFQUFFQyxLQUFLLEdBQUdKLEdBRFI7SUFFVEksS0FBSyxFQUFFSixHQUZFO0lBR1RLLE9BQU8sRUFBRUQ7RUFIQSxDQUFILENBQVI7RUFLQSxJQUFJUyxXQUFXLEdBQUdULEtBQUssR0FBR0osR0FBMUI7O0VBRUEsS0FBSyxNQUFNYyxLQUFYLElBQW9COUMsTUFBTSxDQUFDMEIsSUFBRCxFQUFPRixVQUFQLENBQTFCLEVBQThDO0lBQzVDLElBQUlJLEtBQUosWUFBSUEsS0FBSyxDQUFFbUIsTUFBUCxDQUFjQyxPQUFsQixFQUEyQjtNQUN6QixNQUFNLElBQUk1QyxLQUFKLG1CQUFOO0lBQ0Q7O0lBQ0RzQyxLQUFLLENBQUNFLE1BQU4sQ0FBYUUsS0FBYjtJQUNBLE1BQU1qQyxHQUFHLEdBQ1BpQyxLQUFLLENBQUNHLE1BQU4sR0FBZXpCLFVBQWYsR0FDSTFCLE1BQU0sQ0FBQ29ELCtDQURYLEdBRUlwRCxNQUFNLENBQUNxRCxpREFIYjtJQUlBLE1BQU1DLE9BQU8sR0FBR3ZCLEtBQUssQ0FBQ2hCLEdBQUQsRUFBTWlDLEtBQU4sQ0FBckI7SUFDQU4sY0FBYyxDQUFDSSxNQUFmLENBQXNCUSxPQUF0QjtJQUNBZCxLQUFLLENBQUNLLEdBQU4sQ0FBVVMsT0FBVixFQUFtQmhCLEtBQW5CO0lBQ0FBLEtBQUssSUFBSWdCLE9BQU8sQ0FBQ2xDLFVBQWpCO0lBQ0EsTUFBTWlCLE9BQU8sR0FBR0MsS0FBSyxHQUFHSixHQUF4Qjs7SUFDQSxJQUFJRyxPQUFPLEdBQUdVLFdBQVcsR0FBRyxJQUE1QixFQUFrQztNQUNoQ2xCLFFBQVEsUUFBUixZQUFBQSxRQUFRLENBQUc7UUFDVFEsT0FEUztRQUVUQyxLQUFLLEVBQUVKLEdBRkU7UUFHVEssT0FBTyxFQUFFRDtNQUhBLENBQUgsQ0FBUjtNQUtBUyxXQUFXLEdBQUdWLE9BQWQ7SUFDRDtFQUNGOztFQUVEbkIsT0FBTztFQUNQVyxRQUFRLFFBQVIsWUFBQUEsUUFBUSxDQUFHO0lBQ1RRLE9BQU8sRUFBRSxDQURBO0lBRVRDLEtBRlM7SUFHVEMsT0FBTyxFQUFFRDtFQUhBLENBQUgsQ0FBUjtFQUtBLE9BQU87SUFDTFYsSUFBSSxFQUFFWSxLQUFLLENBQUNlLEtBQU4sQ0FBWSxDQUFaLEVBQWVqQixLQUFmLENBREQ7SUFFTGtCLFlBQVksRUFBRWQsY0FBYyxDQUFDZSxHQUFmLEVBRlQ7SUFHTEMsR0FBRyxFQUFFZCxLQUFLLENBQUNhLEdBQU47RUFIQSxDQUFQO0FBS0Q7QUFFRCxPQUFPLGVBQWVFLG1CQUFmLENBQ0xqRCxHQURLLEVBRUxrQixJQUZLLEVBR0xDLFFBSEssRUFJTEMsS0FKSyxFQUtnQjtFQUNyQixNQUFNL0IsS0FBSyxFQUFYO0VBQ0EsTUFBTWMsTUFBTSxHQUFHZSxJQUFJLENBQUMyQixLQUFMLENBQ2IsQ0FEYSxFQUVidkQsTUFBTSxDQUFDcUIsaURBRk0sQ0FBZjtFQUlBTyxJQUFJLEdBQUdBLElBQUksQ0FBQzJCLEtBQUwsQ0FBV3ZELE1BQU0sQ0FBQ3FCLGlEQUFsQixDQUFQO0VBRUEsTUFBTTtJQUFFRixPQUFPLEVBQUV5QyxRQUFYO0lBQXFCMUM7RUFBckIsSUFBaUNDLE9BQU8sQ0FBQ04sTUFBRCxFQUFTSCxHQUFULENBQTlDO0VBQ0EsTUFBTW1ELFNBQVMsR0FDYm5DLFVBQVUsR0FBRzFCLE1BQU0sQ0FBQ2lDLDRDQUR0QjtFQUVBLE1BQU1DLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLElBQUksQ0FBQ1IsVUFBTCxHQUFrQnlDLFNBQTVCLElBQXlDbkMsVUFBckQ7RUFFQUcsUUFBUSxRQUFSLFlBQUFBLFFBQVEsQ0FBRztJQUNUUSxPQUFPLEVBQUUsQ0FEQTtJQUVUQyxLQUFLLEVBQUVKLEdBRkU7SUFHVEssT0FBTyxFQUFFO0VBSEEsQ0FBSCxDQUFSO0VBS0EsTUFBTUMsS0FBSyxHQUFHLElBQUlDLFVBQUosQ0FBZVAsR0FBZixDQUFkO0VBQ0EsSUFBSUksS0FBSyxHQUFHLENBQVo7RUFFQSxJQUFJUyxXQUFXLEdBQUdULEtBQUssR0FBR0osR0FBMUI7O0VBRUEsS0FBSyxNQUFNYyxLQUFYLElBQW9COUMsTUFBTSxDQUFDMEIsSUFBRCxFQUFPaUMsU0FBUCxDQUExQixFQUE2QztJQUMzQyxJQUFJL0IsS0FBSixZQUFJQSxLQUFLLENBQUVtQixNQUFQLENBQWNDLE9BQWxCLEVBQTJCO01BQ3pCLE1BQU0sSUFBSTVDLEtBQUosbUJBQU47SUFDRDs7SUFDRCxNQUFNd0QsR0FBRyxHQUFHRixRQUFRLENBQUNaLEtBQUQsQ0FBcEI7SUFDQVIsS0FBSyxDQUFDSyxHQUFOLENBQVVpQixHQUFHLENBQUN6RCxPQUFkLEVBQXVCaUMsS0FBdkI7SUFDQUEsS0FBSyxJQUFJd0IsR0FBRyxDQUFDekQsT0FBSixDQUFZZSxVQUFyQjtJQUNBLE1BQU1pQixPQUFPLEdBQUdDLEtBQUssR0FBR0osR0FBeEI7O0lBQ0EsSUFBSUcsT0FBTyxHQUFHVSxXQUFXLEdBQUcsSUFBNUIsRUFBa0M7TUFDaENsQixRQUFRLFFBQVIsWUFBQUEsUUFBUSxDQUFHO1FBQ1RRLE9BRFM7UUFFVEMsS0FBSyxFQUFFSixHQUZFO1FBR1RLLE9BQU8sRUFBRUQ7TUFIQSxDQUFILENBQVI7TUFLQVMsV0FBVyxHQUFHVixPQUFkO0lBQ0Q7RUFDRjs7RUFFRG5CLE9BQU87RUFDUFcsUUFBUSxRQUFSLFlBQUFBLFFBQVEsQ0FBRztJQUNUUSxPQUFPLEVBQUUsQ0FEQTtJQUVUQyxLQUZTO0lBR1RDLE9BQU8sRUFBRUQ7RUFIQSxDQUFILENBQVI7RUFLQSxPQUFPRSxLQUFLLENBQUNlLEtBQU4sQ0FBWSxDQUFaLEVBQWVqQixLQUFmLENBQVA7QUFDRCxDLENBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEifQ==
File without changes
@@ -0,0 +1,47 @@
1
+ import { concatenate } from "../utils/utils.js";
2
+ import { sodium } from "../sodium.js";
3
+ export function encryptCryptoBox(data, publicKeyBob, privateKeyAlice) {
4
+ const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
5
+ const crypt = sodium.crypto_box_easy(data, nonce, sodium.from_hex(publicKeyBob), sodium.from_hex(privateKeyAlice));
6
+ return concatenate(nonce, crypt);
7
+ }
8
+ export function generateCryptoBoxKeyPair() {
9
+ return sodium.crypto_box_keypair("hex");
10
+ }
11
+ export function decryptCryptoBox(data, publicKeyAlice, privateKeyBob) {
12
+ if (data.length < sodium.crypto_box_NONCEBYTES + sodium.crypto_box_MACBYTES) {
13
+ throw "data too short";
14
+ }
15
+
16
+ const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);
17
+ const cipher = data.slice(sodium.crypto_box_NONCEBYTES);
18
+ return sodium.crypto_box_open_easy(cipher, nonce, sodium.from_hex(publicKeyAlice), sodium.from_hex(privateKeyBob));
19
+ }
20
+ export function generateSecretBoxKey() {
21
+ return sodium.randombytes_buf(sodium.crypto_secretbox_KEYBYTES, "hex");
22
+ }
23
+ export function encryptSecretBox(data, key) {
24
+ const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
25
+ const crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));
26
+ return concatenate(nonce, crypt);
27
+ }
28
+ export function decryptSecretBox(data, key) {
29
+ if (data.length < sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {
30
+ throw "data too short";
31
+ }
32
+
33
+ const nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);
34
+ const cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);
35
+ return sodium.crypto_secretbox_open_easy(cipher, nonce, sodium.from_hex(key));
36
+ }
37
+ export function encryptAnonymous(data, receiverPublicKey) {
38
+ return sodium.crypto_box_seal(data, sodium.from_hex(receiverPublicKey));
39
+ }
40
+ export function decryptAnonymous(data, _ref) {
41
+ let {
42
+ privateKey,
43
+ publicKey
44
+ } = _ref;
45
+ return sodium.crypto_box_seal_open(data, sodium.from_hex(publicKey), sodium.from_hex(privateKey));
46
+ }
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25jYXRlbmF0ZSIsInNvZGl1bSIsImVuY3J5cHRDcnlwdG9Cb3giLCJkYXRhIiwicHVibGljS2V5Qm9iIiwicHJpdmF0ZUtleUFsaWNlIiwibm9uY2UiLCJyYW5kb21ieXRlc19idWYiLCJjcnlwdG9fYm94X05PTkNFQllURVMiLCJjcnlwdCIsImNyeXB0b19ib3hfZWFzeSIsImZyb21faGV4IiwiZ2VuZXJhdGVDcnlwdG9Cb3hLZXlQYWlyIiwiY3J5cHRvX2JveF9rZXlwYWlyIiwiZGVjcnlwdENyeXB0b0JveCIsInB1YmxpY0tleUFsaWNlIiwicHJpdmF0ZUtleUJvYiIsImxlbmd0aCIsImNyeXB0b19ib3hfTUFDQllURVMiLCJzbGljZSIsImNpcGhlciIsImNyeXB0b19ib3hfb3Blbl9lYXN5IiwiZ2VuZXJhdGVTZWNyZXRCb3hLZXkiLCJjcnlwdG9fc2VjcmV0Ym94X0tFWUJZVEVTIiwiZW5jcnlwdFNlY3JldEJveCIsImtleSIsImNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyIsImNyeXB0b19zZWNyZXRib3hfZWFzeSIsImRlY3J5cHRTZWNyZXRCb3giLCJjcnlwdG9fc2VjcmV0Ym94X01BQ0JZVEVTIiwiY3J5cHRvX3NlY3JldGJveF9vcGVuX2Vhc3kiLCJlbmNyeXB0QW5vbnltb3VzIiwicmVjZWl2ZXJQdWJsaWNLZXkiLCJjcnlwdG9fYm94X3NlYWwiLCJkZWNyeXB0QW5vbnltb3VzIiwicHJpdmF0ZUtleSIsInB1YmxpY0tleSIsImNyeXB0b19ib3hfc2VhbF9vcGVuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NyeXB0by9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXRlbmF0ZSB9IGZyb20gXCIuLi91dGlscy91dGlscy5qc1wiO1xuaW1wb3J0IHsgc29kaXVtIH0gZnJvbSBcIi4uL3NvZGl1bS5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXIge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdENyeXB0b0JveChcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHVibGljS2V5Qm9iOiBzdHJpbmcsXG4gIHByaXZhdGVLZXlBbGljZTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgY29uc3Qgbm9uY2UgPSBzb2RpdW0ucmFuZG9tYnl0ZXNfYnVmKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjcnlwdCA9IHNvZGl1bS5jcnlwdG9fYm94X2Vhc3koXG4gICAgZGF0YSxcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5Qm9iKSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHJpdmF0ZUtleUFsaWNlKVxuICApO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ3J5cHRvQm94S2V5UGFpcigpOiBLZXlQYWlyIHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X2tleXBhaXIoXCJoZXhcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0Q3J5cHRvQm94KFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwdWJsaWNLZXlBbGljZTogc3RyaW5nLFxuICBwcml2YXRlS2V5Qm9iOiBzdHJpbmdcbik6IFVpbnQ4QXJyYXkge1xuICBpZiAoZGF0YS5sZW5ndGggPCBzb2RpdW0uY3J5cHRvX2JveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19ib3hfTUFDQllURVMpIHtcbiAgICB0aHJvdyBcImRhdGEgdG9vIHNob3J0XCI7XG4gIH1cbiAgY29uc3Qgbm9uY2UgPSBkYXRhLnNsaWNlKDAsIHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjaXBoZXIgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfb3Blbl9lYXN5KFxuICAgIGNpcGhlcixcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5QWxpY2UpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5Qm9iKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXRCb3hLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfS0VZQllURVMsIFwiaGV4XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdFNlY3JldEJveChkYXRhOiBVaW50OEFycmF5LCBrZXk6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBub25jZSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyk7XG4gIGNvbnN0IGNyeXB0ID0gc29kaXVtLmNyeXB0b19zZWNyZXRib3hfZWFzeShkYXRhLCBub25jZSwgc29kaXVtLmZyb21faGV4KGtleSkpO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXRCb3goZGF0YTogVWludDhBcnJheSwga2V5OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgaWYgKFxuICAgIGRhdGEubGVuZ3RoIDxcbiAgICBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTUFDQllURVNcbiAgKSB7XG4gICAgdGhyb3cgXCJkYXRhIHRvbyBzaG9ydFwiO1xuICB9XG4gIGNvbnN0IG5vbmNlID0gZGF0YS5zbGljZSgwLCBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgY29uc3QgY2lwaGVyID0gZGF0YS5zbGljZShzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X29wZW5fZWFzeShjaXBoZXIsIG5vbmNlLCBzb2RpdW0uZnJvbV9oZXgoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICByZWNlaXZlclB1YmxpY0tleTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWwoZGF0YSwgc29kaXVtLmZyb21faGV4KHJlY2VpdmVyUHVibGljS2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICB7IHByaXZhdGVLZXksIHB1YmxpY0tleSB9OiBLZXlQYWlyXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWxfb3BlbihcbiAgICBkYXRhLFxuICAgIHNvZGl1bS5mcm9tX2hleChwdWJsaWNLZXkpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFULFFBQTRCLG1CQUE1QjtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsY0FBdkI7QUFPQSxPQUFPLFNBQVNDLGdCQUFULENBQ0xDLElBREssRUFFTEMsWUFGSyxFQUdMQyxlQUhLLEVBSU87RUFDWixNQUFNQyxLQUFLLEdBQUdMLE1BQU0sQ0FBQ00sZUFBUCxDQUF1Qk4sTUFBTSxDQUFDTyxxQkFBOUIsQ0FBZDtFQUNBLE1BQU1DLEtBQUssR0FBR1IsTUFBTSxDQUFDUyxlQUFQLENBQ1pQLElBRFksRUFFWkcsS0FGWSxFQUdaTCxNQUFNLENBQUNVLFFBQVAsQ0FBZ0JQLFlBQWhCLENBSFksRUFJWkgsTUFBTSxDQUFDVSxRQUFQLENBQWdCTixlQUFoQixDQUpZLENBQWQ7RUFNQSxPQUFPTCxXQUFXLENBQUNNLEtBQUQsRUFBUUcsS0FBUixDQUFsQjtBQUNEO0FB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
@@ -0,0 +1,30 @@
1
+ export declare type ErrorType = "ErrorUpgradePlan" | "ErrorNotFound" | "ErrorNotExist" | "ErrorAccessDenied" | "ErrorLangNotExist" | "ErrorLimit" | "ErrorBasic";
2
+ export interface ErrorBase {
3
+ message: string;
4
+ __typename: ErrorType;
5
+ }
6
+ export interface ErrorUpgradePlan extends ErrorBase {
7
+ __typename: "ErrorUpgradePlan";
8
+ }
9
+ export interface ErrorNotFound extends ErrorBase {
10
+ __typename: "ErrorNotFound";
11
+ field?: string | undefined;
12
+ }
13
+ export interface ErrorNotExist extends ErrorBase {
14
+ __typename: "ErrorNotExist";
15
+ field?: string | undefined;
16
+ }
17
+ export interface ErrorAccessDenied extends ErrorBase {
18
+ __typename: "ErrorAccessDenied";
19
+ }
20
+ export interface ErrorLangNotExist extends ErrorBase {
21
+ __typename: "ErrorLangNotExist";
22
+ }
23
+ export interface ErrorLimit extends ErrorBase {
24
+ __typename: "ErrorLimit";
25
+ field?: string | undefined;
26
+ }
27
+ export interface ErrorBasic extends ErrorBase {
28
+ __typename: "ErrorBasic";
29
+ }
30
+ export declare type SecrecyError = ErrorUpgradePlan | ErrorNotFound | ErrorNotExist | ErrorAccessDenied | ErrorLangNotExist | ErrorLimit | ErrorBasic;
package/dist/error.js ADDED
@@ -0,0 +1,3 @@
1
+ export {};
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVycm9yVHlwZSA9XG4gIHwgXCJFcnJvclVwZ3JhZGVQbGFuXCJcbiAgfCBcIkVycm9yTm90Rm91bmRcIlxuICB8IFwiRXJyb3JOb3RFeGlzdFwiXG4gIHwgXCJFcnJvckFjY2Vzc0RlbmllZFwiXG4gIHwgXCJFcnJvckxhbmdOb3RFeGlzdFwiXG4gIHwgXCJFcnJvckxpbWl0XCJcbiAgfCBcIkVycm9yQmFzaWNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckJhc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIF9fdHlwZW5hbWU6IEVycm9yVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvclVwZ3JhZGVQbGFuIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvclVwZ3JhZGVQbGFuXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JOb3RGb3VuZCBleHRlbmRzIEVycm9yQmFzZSB7XG4gIF9fdHlwZW5hbWU6IFwiRXJyb3JOb3RGb3VuZFwiO1xuICBmaWVsZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvck5vdEV4aXN0IGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvck5vdEV4aXN0XCI7XG4gIGZpZWxkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQWNjZXNzRGVuaWVkIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvckFjY2Vzc0RlbmllZFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGFuZ05vdEV4aXN0IGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvckxhbmdOb3RFeGlzdFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGltaXQgZXh0ZW5kcyBFcnJvckJhc2Uge1xuICBfX3R5cGVuYW1lOiBcIkVycm9yTGltaXRcIjtcbiAgZmllbGQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JCYXNpYyBleHRlbmRzIEVycm9yQmFzZSB7XG4gIF9fdHlwZW5hbWU6IFwiRXJyb3JCYXNpY1wiO1xufVxuXG5leHBvcnQgdHlwZSBTZWNyZWN5RXJyb3IgPVxuICB8IEVycm9yVXBncmFkZVBsYW5cbiAgfCBFcnJvck5vdEZvdW5kXG4gIHwgRXJyb3JOb3RFeGlzdFxuICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gIHwgRXJyb3JMYW5nTm90RXhpc3RcbiAgfCBFcnJvckxpbWl0XG4gIHwgRXJyb3JCYXNpYztcbiJdLCJtYXBwaW5ncyI6IiJ9
@@ -1,11 +1,12 @@
1
1
  export * from "./client/index.js";
2
+ export * from "./client/admin/index.js";
2
3
  export * from "./crypto/index.js";
3
4
  export type { Progress } from "./crypto/file.js";
4
- export type { User, QueryLimits, DownloadProgress, UserData, FolderSize, MailLimitsValues, CloudLimits, FaqItem, BlogItem, SecrecyPlansCodes, Limits, MailLimits, Plan, PaymentInfos, Subscription, RecurlyInvoices, SubscriptionCollectionMethod, SubscriptionState, SendReport, PayInput } from "./BaseClient.js";
5
+ export type { User, QueryLimits, DownloadProgress, UserData, FolderSize, MailLimitsValues, CloudLimits, FaqItem, BlogItem, SecrecyPlansCodes, Limits, MailLimits, Plan, PaymentInfos, Subscription, RecurlyInvoices, SubscriptionCollectionMethod, SubscriptionState, SendReport, PayInput, SuccessResponse } from "./BaseClient.js";
5
6
  export { BaseClient, isValidPlan } from "./BaseClient.js";
6
- export type { File, Folder, FolderFull, VFile, FolderBreadcrumbItem, VFileWithFolder, SecrecyUserApp, BaseMail, ReceivedMail, SentMail, PublicUser, UserAppSettings, UserAppNotifications, Session, UserSession, AppSession, MailFile, MailIntegrity, DraftMail, Mail, WaitingReceivedMail, MailRecipientInput } from "./client/types/index.js";
7
- export { isFolder, isVFile } from "./client/types/index.js";
7
+ export type { FileMetadata, SecrecyUserApp, BaseMail, ReceivedMail, SentMail, PublicUser, UserAppSettings, UserAppNotifications, Session, UserSession, AppSession, MailFile, MailIntegrity, DraftMail, Mail, WaitingReceivedMail, MailRecipientInput } from "./client/types/index.js";
8
8
  export * from "./client/helpers.js";
9
9
  export * from "./sodium.js";
10
10
  export * from "./utils/store-buddy.js";
11
11
  export { Lang, FileContentType, MailType, PlanKind, Rights, PayInputType, UserRole } from "./zeus/index.js";
12
+ export * from "./error.js";
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from "./client/index.js";
2
+ export * from "./client/admin/index.js";
3
+ export * from "./crypto/index.js";
4
+ export { BaseClient, isValidPlan } from "./BaseClient.js";
5
+ export * from "./client/helpers.js";
6
+ export * from "./sodium.js";
7
+ export * from "./utils/store-buddy.js";
8
+ export { Lang, FileContentType, MailType, PlanKind, Rights, PayInputType, UserRole } from "./zeus/index.js";
9
+ export * from "./error.js";
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ2xpZW50IiwiaXNWYWxpZFBsYW4iLCJMYW5nIiwiRmlsZUNvbnRlbnRUeXBlIiwiTWFpbFR5cGUiLCJQbGFuS2luZCIsIlJpZ2h0cyIsIlBheUlucHV0VHlwZSIsIlVzZXJSb2xlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NsaWVudC9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2FkbWluL2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jcnlwdG8vaW5kZXguanNcIjtcbmV4cG9ydCB0eXBlIHsgUHJvZ3Jlc3MgfSBmcm9tIFwiLi9jcnlwdG8vZmlsZS5qc1wiO1xuZXhwb3J0IHR5cGUge1xuICBVc2VyLFxuICBRdWVyeUxpbWl0cyxcbiAgRG93bmxvYWRQcm9ncmVzcyxcbiAgVXNlckRhdGEsXG4gIEZvbGRlclNpemUsXG4gIE1haWxMaW1pdHNWYWx1ZXMsXG4gIENsb3VkTGltaXRzLFxuICBGYXFJdGVtLFxuICBCbG9nSXRlbSxcbiAgU2VjcmVjeVBsYW5zQ29kZXMsXG4gIExpbWl0cyxcbiAgTWFpbExpbWl0cyxcbiAgUGxhbixcbiAgUGF5bWVudEluZm9zLFxuICBTdWJzY3JpcHRpb24sXG4gIFJlY3VybHlJbnZvaWNlcyxcbiAgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgU3Vic2NyaXB0aW9uU3RhdGUsXG4gIFNlbmRSZXBvcnQsXG4gIFBheUlucHV0LFxuICBTdWNjZXNzUmVzcG9uc2Vcbn0gZnJvbSBcIi4vQmFzZUNsaWVudC5qc1wiO1xuZXhwb3J0IHsgQmFzZUNsaWVudCwgaXNWYWxpZFBsYW4gfSBmcm9tIFwiLi9CYXNlQ2xpZW50LmpzXCI7XG5leHBvcnQgdHlwZSB7XG4gIEZpbGVNZXRhZGF0YSxcbiAgU2VjcmVjeVVzZXJBcHAsXG4gIEJhc2VNYWlsLFxuICBSZWNlaXZlZE1haWwsXG4gIFNlbnRNYWlsLFxuICBQdWJsaWNVc2VyLFxuICBVc2VyQXBwU2V0dGluZ3MsXG4gIFVzZXJBcHBOb3RpZmljYXRpb25zLFxuICBTZXNzaW9uLFxuICBVc2VyU2Vzc2lvbixcbiAgQXBwU2Vzc2lvbixcbiAgTWFpbEZpbGUsXG4gIE1haWxJbnRlZ3JpdHksXG4gIERyYWZ0TWFpbCxcbiAgTWFpbCxcbiAgV2FpdGluZ1JlY2VpdmVkTWFpbCxcbiAgTWFpbFJlY2lwaWVudElucHV0XG59IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NvZGl1bS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvc3RvcmUtYnVkZHkuanNcIjtcbmV4cG9ydCB7XG4gIExhbmcsXG4gIEZpbGVDb250ZW50VHlwZSxcbiAgTWFpbFR5cGUsXG4gIFBsYW5LaW5kLFxuICBSaWdodHMsXG4gIFBheUlucHV0VHlwZSxcbiAgVXNlclJvbGVcbn0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvci5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFkO0FBQ0EsY0FBYyx5QkFBZDtBQUNBLGNBQWMsbUJBQWQ7QUF5QkEsU0FBU0EsVUFBVCxFQUFxQkMsV0FBckIsUUFBd0MsaUJBQXhDO0FBb0JBLGNBQWMscUJBQWQ7QUFDQSxjQUFjLGFBQWQ7QUFDQSxjQUFjLHdCQUFkO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxlQUZGLEVBR0VDLFFBSEYsRUFJRUMsUUFKRixFQUtFQyxNQUxGLEVBTUVDLFlBTkYsRUFPRUMsUUFQRixRQVFPLGlCQVJQO0FBVUEsY0FBYyxZQUFkIn0=
File without changes
@@ -0,0 +1,28 @@
1
+ import { calcUncompressedLen, compressBlockBound, compressBlockHC, uncompressBlock } from "./lz4.js";
2
+ import { concatenate } from "../utils/utils.js";
3
+ export function compress(data) {
4
+ if (data.byteLength > 15000000) {
5
+ return concatenate(new Uint8Array([0]), data);
6
+ }
7
+
8
+ const compressed = new Uint8Array(compressBlockBound(data.byteLength));
9
+ const compressedSize = compressBlockHC(data, compressed, 0);
10
+
11
+ if (compressedSize === 0) {
12
+ return concatenate(new Uint8Array([0]), data);
13
+ }
14
+
15
+ return concatenate(new Uint8Array([1]), compressed.slice(0, compressedSize));
16
+ }
17
+ export function uncompress(data) {
18
+ const realData = data.slice(1);
19
+
20
+ if (data[0] === 0) {
21
+ return realData;
22
+ }
23
+
24
+ const dst = new Uint8Array(calcUncompressedLen(realData));
25
+ const uncompressedSize = uncompressBlock(realData, dst);
26
+ return dst.slice(0, uncompressedSize);
27
+ }
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYWxjVW5jb21wcmVzc2VkTGVuIiwiY29tcHJlc3NCbG9ja0JvdW5kIiwiY29tcHJlc3NCbG9ja0hDIiwidW5jb21wcmVzc0Jsb2NrIiwiY29uY2F0ZW5hdGUiLCJjb21wcmVzcyIsImRhdGEiLCJieXRlTGVuZ3RoIiwiVWludDhBcnJheSIsImNvbXByZXNzZWQiLCJjb21wcmVzc2VkU2l6ZSIsInNsaWNlIiwidW5jb21wcmVzcyIsInJlYWxEYXRhIiwiZHN0IiwidW5jb21wcmVzc2VkU2l6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taW5pZnkvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY2FsY1VuY29tcHJlc3NlZExlbixcbiAgY29tcHJlc3NCbG9ja0JvdW5kLFxuICBjb21wcmVzc0Jsb2NrSEMsXG4gIHVuY29tcHJlc3NCbG9ja1xufSBmcm9tIFwiLi9sejQuanNcIjtcbmltcG9ydCB7IGNvbmNhdGVuYXRlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wcmVzcyhkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGlmIChkYXRhLmJ5dGVMZW5ndGggPiAxNV8wMDBfMDAwKSB7XG4gICAgcmV0dXJuIGNvbmNhdGVuYXRlKG5ldyBVaW50OEFycmF5KFswXSksIGRhdGEpO1xuICB9XG4gIGNvbnN0IGNvbXByZXNzZWQgPSBuZXcgVWludDhBcnJheShjb21wcmVzc0Jsb2NrQm91bmQoZGF0YS5ieXRlTGVuZ3RoKSk7XG4gIGNvbnN0IGNvbXByZXNzZWRTaXplID0gY29tcHJlc3NCbG9ja0hDKGRhdGEsIGNvbXByZXNzZWQsIDApO1xuICBpZiAoY29tcHJlc3NlZFNpemUgPT09IDApIHtcbiAgICByZXR1cm4gY29uY2F0ZW5hdGUobmV3IFVpbnQ4QXJyYXkoWzBdKSwgZGF0YSk7XG4gIH1cbiAgcmV0dXJuIGNvbmNhdGVuYXRlKG5ldyBVaW50OEFycmF5KFsxXSksIGNvbXByZXNzZWQuc2xpY2UoMCwgY29tcHJlc3NlZFNpemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuY29tcHJlc3MoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCByZWFsRGF0YSA9IGRhdGEuc2xpY2UoMSk7XG4gIGlmIChkYXRhWzBdID09PSAwKSB7XG4gICAgcmV0dXJuIHJlYWxEYXRhO1xuICB9XG4gIGNvbnN0IGRzdCA9IG5ldyBVaW50OEFycmF5KGNhbGNVbmNvbXByZXNzZWRMZW4ocmVhbERhdGEpKTtcbiAgY29uc3QgdW5jb21wcmVzc2VkU2l6ZSA9IHVuY29tcHJlc3NCbG9jayhyZWFsRGF0YSwgZHN0KTtcbiAgcmV0dXJuIGRzdC5zbGljZSgwLCB1bmNvbXByZXNzZWRTaXplKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsbUJBREYsRUFFRUMsa0JBRkYsRUFHRUMsZUFIRixFQUlFQyxlQUpGLFFBS08sVUFMUDtBQU1BLFNBQVNDLFdBQVQsUUFBNEIsbUJBQTVCO0FBRUEsT0FBTyxTQUFTQyxRQUFULENBQWtCQyxJQUFsQixFQUFnRDtFQUNyRCxJQUFJQSxJQUFJLENBQUNDLFVBQUwsR0FBa0IsUUFBdEIsRUFBa0M7SUFDaEMsT0FBT0gsV0FBVyxDQUFDLElBQUlJLFVBQUosQ0FBZSxDQUFDLENBQUQsQ0FBZixDQUFELEVBQXNCRixJQUF0QixDQUFsQjtFQUNEOztFQUNELE1BQU1HLFVBQVUsR0FBRyxJQUFJRCxVQUFKLENBQWVQLGtCQUFrQixDQUFDSyxJQUFJLENBQUNDLFVBQU4sQ0FBakMsQ0FBbkI7RUFDQSxNQUFNRyxjQUFjLEdBQUdSLGVBQWUsQ0FBQ0ksSUFBRCxFQUFPRyxVQUFQLEVBQW1CLENBQW5CLENBQXRDOztFQUNBLElBQUlDLGNBQWMsS0FBSyxDQUF2QixFQUEwQjtJQUN4QixPQUFPTixXQUFXLENBQUMsSUFBSUksVUFBSixDQUFlLENBQUMsQ0FBRCxDQUFmLENBQUQsRUFBc0JGLElBQXRCLENBQWxCO0VBQ0Q7O0VBQ0QsT0FBT0YsV0FBVyxDQUFDLElBQUlJLFVBQUosQ0FBZSxDQUFDLENBQUQsQ0FBZixDQUFELEVBQXNCQyxVQUFVLENBQUNFLEtBQVgsQ0FBaUIsQ0FBakIsRUFBb0JELGNBQXBCLENBQXRCLENBQWxCO0FBQ0Q7QUFFRCxPQUFPLFNBQVNFLFVBQVQsQ0FBb0JOLElBQXBCLEVBQWtEO0VBQ3ZELE1BQU1PLFFBQVEsR0FBR1AsSUFBSSxDQUFDSyxLQUFMLENBQVcsQ0FBWCxDQUFqQjs7RUFDQSxJQUFJTCxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksQ0FBaEIsRUFBbUI7SUFDakIsT0FBT08sUUFBUDtFQUNEOztFQUNELE1BQU1DLEdBQUcsR0FBRyxJQUFJTixVQUFKLENBQWVSLG1CQUFtQixDQUFDYSxRQUFELENBQWxDLENBQVo7RUFDQSxNQUFNRSxnQkFBZ0IsR0FBR1osZUFBZSxDQUFDVSxRQUFELEVBQVdDLEdBQVgsQ0FBeEM7RUFDQSxPQUFPQSxHQUFHLENBQUNILEtBQUosQ0FBVSxDQUFWLEVBQWFJLGdCQUFiLENBQVA7QUFDRCJ9
File without changes