core-3nweb-client-lib 0.26.1 → 0.27.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 (199) hide show
  1. package/build/api-defs/asmail.d.ts +1 -1
  2. package/build/api-defs/files.d.ts +278 -69
  3. package/build/core/app-files.js +7 -7
  4. package/build/core/asmail/config/common.js +2 -2
  5. package/build/core/asmail/config/index.js +2 -2
  6. package/build/core/asmail/config/published-intro-key.js +1 -1
  7. package/build/core/asmail/delivery/common.js +7 -7
  8. package/build/core/asmail/delivery/index.js +5 -5
  9. package/build/core/asmail/delivery/msg.js +4 -4
  10. package/build/core/asmail/delivery/per-recipient-wip.js +1 -1
  11. package/build/core/asmail/inbox/attachments/fs.js +5 -1
  12. package/build/core/asmail/inbox/cached-msgs.js +1 -1
  13. package/build/core/asmail/inbox/inbox-events.js +4 -4
  14. package/build/core/asmail/inbox/index.js +10 -10
  15. package/build/core/asmail/inbox/msg-downloader.js +1 -1
  16. package/build/core/asmail/inbox/msg-indexing.js +1 -1
  17. package/build/core/asmail/inbox/msg-on-disk.js +5 -5
  18. package/build/core/asmail/index.d.ts +3 -3
  19. package/build/core/asmail/index.js +13 -8
  20. package/build/core/asmail/key-verification.js +5 -5
  21. package/build/core/asmail/keyring/common.js +7 -6
  22. package/build/core/asmail/keyring/correspondent-keys.js +8 -7
  23. package/build/core/asmail/keyring/id-to-email-map.js +2 -1
  24. package/build/core/asmail/keyring/index.d.ts +7 -8
  25. package/build/core/asmail/keyring/index.js +15 -14
  26. package/build/core/asmail/keyring/keyring-storage.js +2 -1
  27. package/build/core/asmail/msg/opener.js +3 -3
  28. package/build/core/asmail/msg/packer.js +13 -13
  29. package/build/core/asmail/sending-params/own-params.js +2 -2
  30. package/build/core/asmail/sending-params/params-from-others.js +1 -1
  31. package/build/core/id-manager.js +6 -3
  32. package/build/core/index.d.ts +2 -1
  33. package/build/core/index.js +14 -14
  34. package/build/core/sign-in.js +5 -5
  35. package/build/core/sign-up.js +9 -9
  36. package/build/core/storage/common/json-saving.js +2 -2
  37. package/build/core/storage/common/obj-info-file.d.ts +12 -4
  38. package/build/core/storage/common/obj-info-file.js +66 -34
  39. package/build/core/storage/common/utils.d.ts +2 -0
  40. package/build/core/storage/common/utils.js +32 -0
  41. package/build/core/storage/index.d.ts +3 -17
  42. package/build/core/storage/index.js +56 -76
  43. package/build/core/storage/local/obj-files-gc.d.ts +2 -0
  44. package/build/core/storage/local/obj-files-gc.js +49 -37
  45. package/build/core/storage/local/obj-files.d.ts +4 -7
  46. package/build/core/storage/local/obj-files.js +7 -10
  47. package/build/core/storage/local/obj-status.d.ts +12 -6
  48. package/build/core/storage/local/obj-status.js +24 -9
  49. package/build/core/storage/local/storage.d.ts +9 -6
  50. package/build/core/storage/local/storage.js +29 -18
  51. package/build/core/storage/synced/downloader.js +1 -1
  52. package/build/core/storage/synced/obj-files-gc.d.ts +5 -1
  53. package/build/core/storage/synced/obj-files-gc.js +91 -37
  54. package/build/core/storage/synced/obj-files.d.ts +42 -36
  55. package/build/core/storage/synced/obj-files.js +178 -147
  56. package/build/core/storage/synced/obj-status.d.ts +87 -85
  57. package/build/core/storage/synced/obj-status.js +463 -259
  58. package/build/core/storage/synced/remote-events.d.ts +11 -12
  59. package/build/core/storage/synced/remote-events.js +73 -56
  60. package/build/core/storage/synced/storage.d.ts +18 -9
  61. package/build/core/storage/synced/storage.js +108 -48
  62. package/build/core/storage/synced/upload-header-file.d.ts +4 -0
  63. package/build/core/storage/synced/upload-header-file.js +64 -0
  64. package/build/core/storage/synced/upsyncer.d.ts +12 -7
  65. package/build/core/storage/synced/upsyncer.js +205 -280
  66. package/build/core/storage/system-folders/apps-data.d.ts +16 -0
  67. package/build/core/storage/system-folders/apps-data.js +110 -0
  68. package/build/core/storage/system-folders/index.d.ts +18 -0
  69. package/build/core/storage/system-folders/index.js +77 -0
  70. package/build/core-ipc/common-caps.js +3 -3
  71. package/build/core-ipc/generic.js +8 -8
  72. package/build/core-ipc/startup-caps.js +2 -2
  73. package/build/cryptors.js +6 -2
  74. package/build/ipc-via-protobuf/asmail-cap.js +58 -57
  75. package/build/ipc-via-protobuf/bytes.js +16 -17
  76. package/build/ipc-via-protobuf/connector-clients-side.d.ts +1 -0
  77. package/build/ipc-via-protobuf/connector-clients-side.js +14 -15
  78. package/build/ipc-via-protobuf/connector-services-side.js +10 -10
  79. package/build/ipc-via-protobuf/connector.js +4 -4
  80. package/build/ipc-via-protobuf/file.d.ts +48 -12
  81. package/build/ipc-via-protobuf/file.js +474 -126
  82. package/build/ipc-via-protobuf/fs.d.ts +8 -0
  83. package/build/ipc-via-protobuf/fs.js +577 -142
  84. package/build/ipc-via-protobuf/log-cap.js +2 -2
  85. package/build/ipc-via-protobuf/mailerid.js +3 -3
  86. package/build/ipc-via-protobuf/protobuf-msg.d.ts +1 -0
  87. package/build/ipc-via-protobuf/protobuf-msg.js +11 -7
  88. package/build/ipc-via-protobuf/startup-cap.js +21 -21
  89. package/build/ipc-via-protobuf/storage-cap.js +12 -12
  90. package/build/ipc.js +7 -2
  91. package/build/lib-client/3nstorage/exceptions.d.ts +3 -0
  92. package/build/lib-client/3nstorage/exceptions.js +13 -1
  93. package/build/lib-client/3nstorage/service.d.ts +16 -2
  94. package/build/lib-client/3nstorage/service.js +104 -38
  95. package/build/lib-client/3nstorage/util/file-based-json.d.ts +2 -1
  96. package/build/lib-client/3nstorage/util/file-based-json.js +1 -1
  97. package/build/lib-client/3nstorage/xsp-fs/attrs.js +17 -17
  98. package/build/lib-client/3nstorage/xsp-fs/common.d.ts +42 -18
  99. package/build/lib-client/3nstorage/xsp-fs/common.js +29 -19
  100. package/build/lib-client/3nstorage/xsp-fs/file-node.d.ts +1 -0
  101. package/build/lib-client/3nstorage/xsp-fs/file-node.js +17 -13
  102. package/build/lib-client/3nstorage/xsp-fs/file.d.ts +31 -6
  103. package/build/lib-client/3nstorage/xsp-fs/file.js +73 -25
  104. package/build/lib-client/3nstorage/xsp-fs/folder-node-serialization.js +4 -4
  105. package/build/lib-client/3nstorage/xsp-fs/folder-node.d.ts +24 -11
  106. package/build/lib-client/3nstorage/xsp-fs/folder-node.js +575 -179
  107. package/build/lib-client/3nstorage/xsp-fs/fs.d.ts +35 -4
  108. package/build/lib-client/3nstorage/xsp-fs/fs.js +231 -110
  109. package/build/lib-client/3nstorage/xsp-fs/link-node.d.ts +1 -0
  110. package/build/lib-client/3nstorage/xsp-fs/link-node.js +7 -2
  111. package/build/lib-client/3nstorage/xsp-fs/node-in-fs.d.ts +30 -24
  112. package/build/lib-client/3nstorage/xsp-fs/node-in-fs.js +229 -123
  113. package/build/lib-client/3nstorage/xsp-fs/node-persistence.d.ts +1 -1
  114. package/build/lib-client/3nstorage/xsp-fs/node-persistence.js +17 -18
  115. package/build/lib-client/3nstorage/xsp-fs/xsp-payload-v1.js +3 -3
  116. package/build/lib-client/3nstorage/xsp-fs/xsp-payload-v2.js +53 -53
  117. package/build/lib-client/3nweb-signup.js +4 -4
  118. package/build/lib-client/asmail/recipient.js +15 -15
  119. package/build/lib-client/asmail/sender.js +22 -22
  120. package/build/lib-client/asmail/service-config.js +3 -3
  121. package/build/lib-client/cryptor/cryptor-in-worker.js +18 -16
  122. package/build/lib-client/cryptor/cryptor-wasm.js +1 -1
  123. package/build/lib-client/cryptor/cryptor.js +4 -2
  124. package/build/lib-client/cryptor/cryptor.wasm +0 -0
  125. package/build/lib-client/cryptor/in-proc-js.js +1 -1
  126. package/build/lib-client/cryptor/in-proc-wasm.js +6 -6
  127. package/build/lib-client/cryptor/worker-js.js +2 -2
  128. package/build/lib-client/cryptor/worker-wasm.js +2 -2
  129. package/build/lib-client/files-select.js +1 -1
  130. package/build/lib-client/files.d.ts +1 -1
  131. package/build/lib-client/files.js +71 -6
  132. package/build/lib-client/fs-collection.js +1 -1
  133. package/build/lib-client/fs-sync-utils.d.ts +5 -0
  134. package/build/lib-client/fs-sync-utils.js +61 -0
  135. package/build/lib-client/fs-view.d.ts +14 -0
  136. package/build/lib-client/fs-view.js +33 -0
  137. package/build/lib-client/key-derivation.js +1 -1
  138. package/build/lib-client/local-files/dev-file-sink.js +9 -9
  139. package/build/lib-client/local-files/dev-file-src.js +2 -2
  140. package/build/lib-client/local-files/device-fs.d.ts +1 -1
  141. package/build/lib-client/local-files/device-fs.js +56 -54
  142. package/build/lib-client/logging/log-to-file.d.ts +1 -1
  143. package/build/lib-client/logging/log-to-file.js +7 -7
  144. package/build/lib-client/mailer-id/login.js +7 -7
  145. package/build/lib-client/mailer-id/provisioner.js +12 -12
  146. package/build/lib-client/objs-on-disk/file-writing-proc.js +3 -3
  147. package/build/lib-client/objs-on-disk/obj-folders.js +31 -31
  148. package/build/lib-client/objs-on-disk/obj-on-disk.d.ts +13 -2
  149. package/build/lib-client/objs-on-disk/obj-on-disk.js +24 -9
  150. package/build/lib-client/request-utils.d.ts +1 -0
  151. package/build/lib-client/request-utils.js +13 -13
  152. package/build/lib-client/server-events.d.ts +3 -3
  153. package/build/lib-client/server-events.js +9 -8
  154. package/build/lib-client/service-locator.js +10 -10
  155. package/build/lib-client/user-with-mid-session.js +7 -7
  156. package/build/lib-client/user-with-pkl-session.js +25 -25
  157. package/build/lib-client/ws-utils.js +2 -2
  158. package/build/lib-common/async-cryptor-wrap.js +4 -4
  159. package/build/lib-common/async-fs-node.d.ts +5 -3
  160. package/build/lib-common/async-fs-node.js +16 -16
  161. package/build/lib-common/byte-streaming/pipe.js +1 -1
  162. package/build/lib-common/byte-streaming/wrapping.js +13 -13
  163. package/build/lib-common/canonical-address.js +1 -1
  164. package/build/lib-common/exceptions/error.d.ts +1 -0
  165. package/build/lib-common/exceptions/error.js +7 -6
  166. package/build/lib-common/exceptions/file.js +4 -0
  167. package/build/lib-common/ipc/ws-ipc.js +2 -2
  168. package/build/lib-common/mid-sigs-NaCl-Ed.js +14 -14
  169. package/build/lib-common/objs-on-disk/file-layout.d.ts +19 -0
  170. package/build/lib-common/objs-on-disk/file-layout.js +130 -12
  171. package/build/lib-common/objs-on-disk/obj-file.d.ts +13 -2
  172. package/build/lib-common/objs-on-disk/obj-file.js +96 -35
  173. package/build/lib-common/objs-on-disk/utils.d.ts +1 -0
  174. package/build/lib-common/objs-on-disk/utils.js +3 -3
  175. package/build/lib-common/objs-on-disk/v1-obj-file-format.js +14 -14
  176. package/build/lib-common/processes/labelled-exec-pools.d.ts +1 -1
  177. package/build/lib-common/processes/labelled-exec-pools.js +1 -1
  178. package/build/lib-common/processes/pressure.js +2 -2
  179. package/build/lib-common/processes/synced.js +1 -1
  180. package/build/lib-common/processes/timeout.js +2 -2
  181. package/build/lib-common/random-node.js +7 -7
  182. package/build/lib-common/service-api/3nstorage/owner.d.ts +95 -35
  183. package/build/lib-common/service-api/3nstorage/owner.js +82 -40
  184. package/build/lib-common/service-api/asmail/delivery.js +2 -2
  185. package/build/lib-common/service-api/asmail/retrieval.js +1 -1
  186. package/build/lib-common/timed-cache.d.ts +1 -0
  187. package/build/lib-common/timed-non-weak-cache.d.ts +1 -0
  188. package/build/lib-common/timed-non-weak-cache.js +11 -0
  189. package/build/lib-common/utils-for-observables.js +4 -4
  190. package/build/lib-common/weak-cache.d.ts +1 -0
  191. package/build/lib-common/weak-cache.js +12 -1
  192. package/build/lib-index.d.ts +2 -1
  193. package/build/lib-index.js +10 -7
  194. package/build/protos/asmail.proto.js +12955 -7496
  195. package/build/protos/file.proto.js +4867 -2744
  196. package/build/protos/fs.proto.js +9227 -3768
  197. package/package.json +6 -5
  198. package/protos/file.proto +91 -19
  199. package/protos/fs.proto +107 -8
@@ -13,9 +13,10 @@
13
13
  See the GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License along with
16
- this program. If not, see <http://www.gnu.org/licenses/>. */
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
17
18
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.KeyRing = void 0;
19
+ exports.KeyRing = exports.KEY_USE = void 0;
19
20
  const correspondent_keys_1 = require("./correspondent-keys");
20
21
  const id_to_email_map_1 = require("./id-to-email-map");
21
22
  const common_1 = require("./common");
@@ -39,11 +40,11 @@ class KeyRing {
39
40
  this.pairIdToEmailMap = new id_to_email_map_1.IdToEmailMap();
40
41
  this.storage = undefined;
41
42
  this.needIntroKeyFor = (address) => {
42
- address = canonical_address_1.toCanonicalAddress(address);
43
+ address = (0, canonical_address_1.toCanonicalAddress)(address);
43
44
  return !this.corrKeys.has(address);
44
45
  };
45
46
  this.generateKeysToSend = async (address, introPKeyFromServer) => {
46
- address = canonical_address_1.toCanonicalAddress(address);
47
+ address = (0, canonical_address_1.toCanonicalAddress)(address);
47
48
  let ck = this.corrKeys.get(address);
48
49
  if (!ck) {
49
50
  if (!introPKeyFromServer) {
@@ -54,12 +55,12 @@ class KeyRing {
54
55
  const { msgMasterKey, currentPair, msgCount } = await ck.getSendingPair(introPKeyFromServer);
55
56
  // prepare message encryptor
56
57
  const nextNonce = await random.bytes(xsp_files_1.NONCE_LENGTH);
57
- const encryptor = async_cryptor_wrap_1.makeEncryptor(this.cryptor, msgMasterKey, nextNonce);
58
+ const encryptor = (0, async_cryptor_wrap_1.makeEncryptor)(this.cryptor, msgMasterKey, nextNonce);
58
59
  msgMasterKey.fill(0);
59
60
  return { encryptor, currentPair, msgCount };
60
61
  };
61
62
  this.nextCrypto = async (address) => {
62
- address = canonical_address_1.toCanonicalAddress(address);
63
+ address = (0, canonical_address_1.toCanonicalAddress)(address);
63
64
  let ck = this.corrKeys.get(address);
64
65
  if (!ck) {
65
66
  throw new Error(`No correspondent keys found for ${address}`);
@@ -91,11 +92,11 @@ class KeyRing {
91
92
  if (pkey.k !== msgMeta.senderPKey) {
92
93
  throw new Error(`Key certificates in the message are not for a key that encrypted this message.`);
93
94
  }
94
- decrInfo.correspondent = canonical_address_1.toCanonicalAddress(address);
95
+ decrInfo.correspondent = (0, canonical_address_1.toCanonicalAddress)(address);
95
96
  }
96
97
  // check that sender is the same as the trusted correspondent
97
98
  const sender = openedMsg.sender;
98
- if (!sender || !canonical_address_1.areAddressesEqual(sender, decrInfo.correspondent)) {
99
+ if (!sender || !(0, canonical_address_1.areAddressesEqual)(sender, decrInfo.correspondent)) {
99
100
  throw new Error(`Mismatch between message sender field '${sender}', and address '${decrInfo.correspondent}', associated with decrypting key.`);
100
101
  }
101
102
  // update received msg counts and a time stamp
@@ -137,7 +138,7 @@ class KeyRing {
137
138
  if (this.storage) {
138
139
  throw new Error("Keyring has already been initialized.");
139
140
  }
140
- this.storage = keyring_storage_1.makeKeyringStorage(fs);
141
+ this.storage = (0, keyring_storage_1.makeKeyringStorage)(fs);
141
142
  await this.storage.start();
142
143
  const serialForm = await this.storage.load();
143
144
  if (serialForm) {
@@ -175,11 +176,11 @@ class KeyRing {
175
176
  return;
176
177
  }
177
178
  const h = await getMainObjHeader();
178
- const msgKeyPackLen = common_1.msgKeyPackSizeFor(recipKey.pair.skey.alg);
179
+ const msgKeyPackLen = (0, common_1.msgKeyPackSizeFor)(recipKey.pair.skey.alg);
179
180
  if (h.length < msgKeyPackLen) {
180
181
  return;
181
182
  }
182
- const masterDecr = correspondent_keys_1.msgMasterDecryptor(this.cryptor, recipKey.pair.skey, { kid: '', k: senderPKey });
183
+ const masterDecr = (0, correspondent_keys_1.msgMasterDecryptor)(this.cryptor, recipKey.pair.skey, { kid: '', k: senderPKey });
183
184
  try {
184
185
  const mainObjFileKey = await masterDecr.open(h.subarray(0, msgKeyPackLen));
185
186
  const info = {
@@ -232,7 +233,7 @@ class KeyRing {
232
233
  const h = await getMainObjHeader();
233
234
  for (const { correspondent, pair, role } of pairs) {
234
235
  const masterKey = buffer_utils_1.base64.open(pair.msgMasterKey);
235
- const masterDecr = async_cryptor_wrap_1.makeDecryptor(this.cryptor, masterKey);
236
+ const masterDecr = (0, async_cryptor_wrap_1.makeDecryptor)(this.cryptor, masterKey);
236
237
  masterKey.fill(0);
237
238
  try {
238
239
  const msgKeyPackLen = msgKeyPackLenForPair(pair);
@@ -278,7 +279,7 @@ class KeyRing {
278
279
  if (!rp.receivedMsgs) {
279
280
  rp.receivedMsgs = { counts: [], lastTS };
280
281
  }
281
- common_2.addToNumberLineSegments(rp.receivedMsgs.counts, msgCount);
282
+ (0, common_2.addToNumberLineSegments)(rp.receivedMsgs.counts, msgCount);
282
283
  rp.receivedMsgs.lastTS = lastTS;
283
284
  this.saveChanges();
284
285
  }
@@ -308,6 +309,6 @@ exports.KeyRing = KeyRing;
308
309
  Object.freeze(KeyRing.prototype);
309
310
  Object.freeze(KeyRing);
310
311
  function msgKeyPackLenForPair(p) {
311
- return common_1.msgKeyPackSizeFor(p.recipientKey.skey.alg);
312
+ return (0, common_1.msgKeyPackSizeFor)(p.recipientKey.skey.alg);
312
313
  }
313
314
  Object.freeze(exports);
@@ -13,7 +13,8 @@
13
13
  See the GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License along with
16
- this program. If not, see <http://www.gnu.org/licenses/>. */
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
17
18
  Object.defineProperty(exports, "__esModule", { value: true });
18
19
  exports.makeKeyringStorage = void 0;
19
20
  const synced_1 = require("../../../lib-common/processes/synced");
@@ -77,8 +77,8 @@ Object.freeze(OpenedMsg);
77
77
  async function openMsg(msgId, mainObjId, mainObj, headerOfs, fKey, cryptor) {
78
78
  try {
79
79
  const header = await mainObj.readHeader();
80
- const segReader = await xsp_files_1.makeSegmentsReader(fKey, xsp_files_1.idToHeaderNonce(mainObjId), 0, header.subarray(headerOfs), cryptor);
81
- const byteSrc = await xsp_files_1.makeDecryptedByteSource(mainObj.segSrc, segReader);
80
+ const segReader = await (0, xsp_files_1.makeSegmentsReader)(fKey, (0, xsp_files_1.idToHeaderNonce)(mainObjId), 0, header.subarray(headerOfs), cryptor);
81
+ const byteSrc = await (0, xsp_files_1.makeDecryptedByteSource)(mainObj.segSrc, segReader);
82
82
  const bytes = await byteSrc.read(undefined);
83
83
  if (!bytes) {
84
84
  throw new Error(`End of bytes is reached too soon`);
@@ -87,7 +87,7 @@ async function openMsg(msgId, mainObjId, mainObj, headerOfs, fKey, cryptor) {
87
87
  return new OpenedMsg(msgId, jsonOfMain);
88
88
  }
89
89
  catch (err) {
90
- throw error_1.errWithCause(err, `Cannot open main object of message ${msgId}`);
90
+ throw (0, error_1.errWithCause)(err, `Cannot open main object of message ${msgId}`);
91
91
  }
92
92
  }
93
93
  exports.openMsg = openMsg;
@@ -97,7 +97,7 @@ class MsgPacker {
97
97
  const packer = new MsgPacker(segSizeIn256bs);
98
98
  packer.readyPack = p;
99
99
  packer.mainObjId = p.meta.objIds[0];
100
- Object.values(json_utils_1.copy(p.objs))
100
+ Object.values((0, json_utils_1.copy)(p.objs))
101
101
  .forEach(obj => {
102
102
  packer.allObjs.set(obj.id, obj);
103
103
  turnKeyStingsToBytes(obj);
@@ -286,12 +286,12 @@ class MsgPacker {
286
286
  const attachments = { nodes: {}, ctime: Date.now() };
287
287
  // populate attachments json
288
288
  const path = { start: 'attachments', path: [] };
289
- if (att.container && !attachments_container_1.isContainerEmpty(att.container)) {
290
- for (const f of attachments_container_1.iterFilesIn(att.container)) {
289
+ if (att.container && !(0, attachments_container_1.isContainerEmpty)(att.container)) {
290
+ for (const f of (0, attachments_container_1.iterFilesIn)(att.container)) {
291
291
  const filePath = appendedPath(path, f.fileName);
292
292
  this.addFileInto(attachments, f.fileName, filePath);
293
293
  }
294
- for (const f of attachments_container_1.iterFoldersIn(att.container)) {
294
+ for (const f of (0, attachments_container_1.iterFoldersIn)(att.container)) {
295
295
  const fsPath = appendedPath(path, f.folderName);
296
296
  await this.addFolderInto(attachments, f.folderName, f.folder, fsPath);
297
297
  }
@@ -347,7 +347,7 @@ class MsgPacker {
347
347
  }
348
348
  const msgKeyPack = await msgKeyEnc.pack(obj.key);
349
349
  const bytes = buffer_utils_1.utf8.pack(JSON.stringify(obj.json));
350
- const segWriter = await xsp_files_1.makeSegmentsWriter(obj.key, xsp_files_1.idToHeaderNonce(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
350
+ const segWriter = await (0, xsp_files_1.makeSegmentsWriter)(obj.key, (0, xsp_files_1.idToHeaderNonce)(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
351
351
  // make source that inserts message key pack into header
352
352
  return makeMainObjSrc(msgKeyPack, bytes, segWriter);
353
353
  }
@@ -410,24 +410,24 @@ class MsgPacker {
410
410
  // make object segments writer
411
411
  let segWriter;
412
412
  if (header) {
413
- segWriter = await xsp_files_1.makeSegmentsWriter(obj.key, xsp_files_1.idToHeaderNonce(obj.id), 0, { type: 'restart', header }, random.bytes, cryptor);
413
+ segWriter = await (0, xsp_files_1.makeSegmentsWriter)(obj.key, (0, xsp_files_1.idToHeaderNonce)(obj.id), 0, { type: 'restart', header }, random.bytes, cryptor);
414
414
  }
415
415
  else {
416
- segWriter = await xsp_files_1.makeSegmentsWriter(obj.key, xsp_files_1.idToHeaderNonce(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
416
+ segWriter = await (0, xsp_files_1.makeSegmentsWriter)(obj.key, (0, xsp_files_1.idToHeaderNonce)(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
417
417
  }
418
418
  // make object source
419
419
  let src;
420
420
  if (obj.json) {
421
421
  const bytes = buffer_utils_1.utf8.pack(JSON.stringify(obj.json));
422
- src = await xsp_files_1.makeObjSourceFromArrays(bytes, segWriter);
422
+ src = await (0, xsp_files_1.makeObjSourceFromArrays)(bytes, segWriter);
423
423
  }
424
424
  else if (obj.file) {
425
425
  const byteSrc = fileSrcToByteSrc(await this.getFileByteSrc(obj.file));
426
- src = await xsp_files_1.makeEncryptingObjSource(byteSrc, segWriter);
426
+ src = await (0, xsp_files_1.makeEncryptingObjSource)(byteSrc, segWriter);
427
427
  }
428
428
  else if (obj.folder) {
429
- const folderBytes = folder_node_serialization_1.serializeFolderInfo(obj.folder);
430
- src = await xsp_files_1.makeObjSourceFromArrays(folderBytes, segWriter);
429
+ const folderBytes = (0, folder_node_serialization_1.serializeFolderInfo)(obj.folder);
430
+ src = await (0, xsp_files_1.makeObjSourceFromArrays)(folderBytes, segWriter);
431
431
  }
432
432
  else {
433
433
  throw new Error(`Object ${objId} is broken`);
@@ -443,7 +443,7 @@ class MsgPacker {
443
443
  meta.objIds = [];
444
444
  const objs = {};
445
445
  for (const objEntry of this.allObjs) {
446
- const obj = json_utils_1.copy(objEntry[1]);
446
+ const obj = (0, json_utils_1.copy)(objEntry[1]);
447
447
  turnKeysToB64(obj);
448
448
  objs[objEntry[0]] = obj;
449
449
  if (objEntry[0] !== this.mainObjId) {
@@ -460,7 +460,7 @@ exports.MsgPacker = MsgPacker;
460
460
  Object.freeze(MsgPacker.prototype);
461
461
  Object.freeze(MsgPacker);
462
462
  async function makeMainObjSrc(msgKeyPack, content, segWriter) {
463
- const src = await xsp_files_1.makeObjSourceFromArrays(content, segWriter);
463
+ const src = await (0, xsp_files_1.makeObjSourceFromArrays)(content, segWriter);
464
464
  const wrap = {
465
465
  version: src.version,
466
466
  segSrc: src.segSrc,
@@ -51,7 +51,7 @@ class OwnSendingParams extends file_based_json_1.JsonFileProc {
51
51
  }
52
52
  p = {
53
53
  address,
54
- suggested: json_utils_1.copy(this.defaultParams)
54
+ suggested: (0, json_utils_1.copy)(this.defaultParams)
55
55
  };
56
56
  p.suggested.timestamp = Date.now();
57
57
  this.params.set(p.address, p);
@@ -116,7 +116,7 @@ class OwnSendingParams extends file_based_json_1.JsonFileProc {
116
116
  this.defaultParams = json.default;
117
117
  }
118
118
  async onFileEvent(ev) {
119
- if (!ev.isRemote) {
119
+ if (ev.src === 'local') {
120
120
  return;
121
121
  }
122
122
  if (ev.type === 'removed') {
@@ -55,7 +55,7 @@ class ParamsFromOthers extends file_based_json_1.JsonFileProc {
55
55
  json.forEach(p => this.params.set(p.address, p));
56
56
  }
57
57
  async onFileEvent(ev) {
58
- if (!ev.isRemote) {
58
+ if (ev.src === 'local') {
59
59
  return;
60
60
  }
61
61
  if (ev.type === 'removed') {
@@ -148,6 +148,9 @@ class IdManager {
148
148
  };
149
149
  await this.localFS.writeJSONFile(LOGIN_KEY_FILE_NAME, json);
150
150
  await this.syncedFS.writeJSONFile(LOGIN_KEY_FILE_NAME, json);
151
+ // XXX must add work with not-online condition
152
+ await this.syncedFS.v.sync.upload(LOGIN_KEY_FILE_NAME);
153
+ await this.syncedFS.v.sync.upload('');
151
154
  }
152
155
  else {
153
156
  await this.ensureLocalCacheOfKeys();
@@ -203,7 +206,7 @@ class IdManager {
203
206
  if (!key) {
204
207
  throw new Error(`No saved MailerId login key can be found`);
205
208
  }
206
- const skey = jwkeys_1.keyFromJson(key, jwkeys_1.use.MID_PKLOGIN, ecma_nacl_1.box.JWK_ALG_NAME, ecma_nacl_1.box.KEY_LENGTH);
209
+ const skey = (0, jwkeys_1.keyFromJson)(key, jwkeys_1.use.MID_PKLOGIN, ecma_nacl_1.box.JWK_ALG_NAME, ecma_nacl_1.box.KEY_LENGTH);
207
210
  const provisioning = await provisioner.provisionSigner(skey.kid);
208
211
  this.signer = await provisioning.complete(() => {
209
212
  const dhshared = ecma_nacl_1.box.calc_dhshared_key(provisioning.serverPKey, skey.k);
@@ -252,11 +255,11 @@ function notFoundOrReThrow(exc) {
252
255
  }
253
256
  }
254
257
  async function doMidLogin(loginUrl, userId, net, signer) {
255
- const { sessionId, redirect } = await login_1.startMidSession(userId, net, loginUrl);
258
+ const { sessionId, redirect } = await (0, login_1.startMidSession)(userId, net, loginUrl);
256
259
  if (!sessionId) {
257
260
  throw Error(`Unexpected redirect of MailerId login from ${loginUrl} to ${redirect}`);
258
261
  }
259
- await login_1.authenticateMidSession(sessionId, signer, net, loginUrl);
262
+ await (0, login_1.authenticateMidSession)(sessionId, signer, net, loginUrl);
260
263
  return sessionId;
261
264
  }
262
265
  Object.freeze(exports);
@@ -8,6 +8,7 @@ export interface CoreConf {
8
8
  dataDir: string;
9
9
  signUpUrl: string;
10
10
  }
11
+ export declare type MakeNet = () => NetClient;
11
12
  export declare class Core {
12
13
  private readonly makeNet;
13
14
  private readonly makeResolver;
@@ -21,7 +22,7 @@ export declare class Core {
21
22
  private isInitialized;
22
23
  private closingProc;
23
24
  private constructor();
24
- static make(conf: CoreConf, makeNet: () => NetClient, makeResolver: ServiceLocatorMaker, makeCryptor: makeCryptor): Core;
25
+ static make(conf: CoreConf, makeNet: MakeNet, makeResolver: ServiceLocatorMaker, makeCryptor: makeCryptor): Core;
25
26
  start(): {
26
27
  capsForStartup: web3n.startup.W3N;
27
28
  coreInit: Promise<string>;
@@ -42,7 +42,7 @@ class Core {
42
42
  this.closingProc = undefined;
43
43
  this.initForNewUser = async (u) => {
44
44
  // 1) init of id manager without setting fs
45
- const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(u.address, u.midSKey.default, this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
45
+ const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(u.address, u.midSKey.default, this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
46
46
  if (!idManager) {
47
47
  throw new Error(`Failed to provision MailerId identity`);
48
48
  }
@@ -57,7 +57,7 @@ class Core {
57
57
  };
58
58
  this.initForExistingUserWithoutCache = async (address) => {
59
59
  // 1) init of id manager without setting fs
60
- const stepTwo = await id_manager_1.IdManager.initWithoutStore(address, this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
60
+ const stepTwo = await id_manager_1.IdManager.initWithoutStore(address, this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
61
61
  if (!stepTwo) {
62
62
  return;
63
63
  }
@@ -82,14 +82,14 @@ class Core {
82
82
  if (!completeStorageInit) {
83
83
  return;
84
84
  }
85
- const idManager = await id_manager_1.IdManager.initFromLocalStore(address, await this.storages.makeLocalFSForApp(MAILERID_APP_NAME), this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
85
+ const idManager = await id_manager_1.IdManager.initFromLocalStore(address, await this.storages.makeLocalFSForApp(MAILERID_APP_NAME), this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
86
86
  if (idManager) {
87
87
  const res = await completeStorageInit(idManager.getSigner);
88
88
  await idManager.setStorages(undefined, await this.storages.makeSyncedFSForApp(MAILERID_APP_NAME));
89
89
  return (res ? idManager : undefined);
90
90
  }
91
91
  return async (midLoginKey) => {
92
- const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(address, midLoginKey, this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
92
+ const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(address, midLoginKey, this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
93
93
  if (!idManager) {
94
94
  return;
95
95
  }
@@ -106,13 +106,13 @@ class Core {
106
106
  Object.seal(this);
107
107
  }
108
108
  static make(conf, makeNet, makeResolver, makeCryptor) {
109
- const dirs = app_files_1.appDirs(conf.dataDir);
110
- const logger = log_to_file_1.makeLogger(dirs.getUtilFS());
109
+ const dirs = (0, app_files_1.appDirs)(conf.dataDir);
110
+ const logger = (0, log_to_file_1.makeLogger)(dirs.getUtilFS());
111
111
  const core = new Core(makeNet, makeResolver, makeCryptor, dirs, logger, conf.signUpUrl);
112
112
  return core;
113
113
  }
114
114
  start() {
115
- const signUp = new sign_up_1.SignUp(this.signUpUrl, this.cryptor.cryptor, this.makeNet, this.appDirs.getUsersOnDisk, this.logger.logError);
115
+ const signUp = new sign_up_1.SignUp(this.signUpUrl, this.cryptor.cryptor, () => this.makeNet(), this.appDirs.getUsersOnDisk, this.logger.logError);
116
116
  const signIn = new sign_in_1.SignIn(this.cryptor.cryptor, this.initForExistingUserWithoutCache, this.initForExistingUserWithCache, this.appDirs.getUsersOnDisk, this.logger.logError);
117
117
  const capsForStartup = {
118
118
  signUp: signUp.exposedService(),
@@ -120,10 +120,10 @@ class Core {
120
120
  };
121
121
  Object.freeze(capsForStartup);
122
122
  const initFromSignUp$ = signUp.newUser$
123
- .pipe(operators_1.mergeMap(this.initForNewUser, 1));
123
+ .pipe((0, operators_1.mergeMap)(this.initForNewUser, 1));
124
124
  const initFromSignIn$ = signIn.existingUser$;
125
- const coreInit = rxjs_1.merge(initFromSignIn$, initFromSignUp$)
126
- .pipe(operators_1.take(1), operators_1.mergeMap(idManager => this.initCore(idManager), 1))
125
+ const coreInit = (0, rxjs_1.merge)(initFromSignIn$, initFromSignUp$)
126
+ .pipe((0, operators_1.take)(1), (0, operators_1.mergeMap)(idManager => this.initCore(idManager), 1))
127
127
  .toPromise();
128
128
  return { coreInit, capsForStartup };
129
129
  }
@@ -201,7 +201,7 @@ class Core {
201
201
  return this.idManager.getId();
202
202
  }
203
203
  catch (err) {
204
- throw error_1.errWithCause(err, 'Failed to initialize core');
204
+ throw (0, error_1.errWithCause)(err, 'Failed to initialize core');
205
205
  }
206
206
  }
207
207
  getStorages() {
@@ -229,7 +229,7 @@ function makeStoragePolicy(appDomain, requestedCAPs) {
229
229
  const okDomains = capReq.appFS
230
230
  .filter(fsInfo => (fsInfo.domain === appDomain) ||
231
231
  fsInfo.domain.endsWith('.' + appDomain))
232
- .map(fsInfo => json_utils_1.copy(fsInfo));
232
+ .map(fsInfo => (0, json_utils_1.copy)(fsInfo));
233
233
  policy = {
234
234
  canOpenAppFS: severalDomainsAppFSChecker(okDomains)
235
235
  };
@@ -259,7 +259,7 @@ function makeStoragePolicy(appDomain, requestedCAPs) {
259
259
  }
260
260
  const noFS = () => false;
261
261
  function singleDomainAppFSChecker(appFS) {
262
- const revDomain = storage_1.reverseDomain(appFS.domain);
262
+ const revDomain = (0, storage_1.reverseDomain)(appFS.domain);
263
263
  const allowedType = appFS.storage;
264
264
  return (appFolder, type) => {
265
265
  return (appFSTypeAllowed(allowedType, type) && (appFolder === revDomain));
@@ -286,7 +286,7 @@ function appFSTypeAllowed(allowed, type) {
286
286
  }
287
287
  function severalDomainsAppFSChecker(appFSs) {
288
288
  const settings = appFSs.map(s => ({
289
- revDomain: storage_1.reverseDomain(s.domain),
289
+ revDomain: (0, storage_1.reverseDomain)(s.domain),
290
290
  storage: s.storage
291
291
  }));
292
292
  return (appFolder, type) => !!settings.find(s => ((s.revDomain === appFolder) && appFSTypeAllowed(s.storage, type)));
@@ -43,9 +43,9 @@ class SignIn {
43
43
  }
44
44
  try {
45
45
  const midKeyProgressCB = makeKeyGenProgressCB(0, 50, progressCB);
46
- const midKeyGen = async (params) => (await key_derivation_1.deriveMidKeyPair(this.cryptor, pass, params, midKeyProgressCB)).skey;
46
+ const midKeyGen = async (params) => (await (0, key_derivation_1.deriveMidKeyPair)(this.cryptor, pass, params, midKeyProgressCB)).skey;
47
47
  const storeKeyProgressCB = makeKeyGenProgressCB(51, 100, progressCB);
48
- const storeKeyGen = (params) => key_derivation_1.deriveStorageSKey(this.cryptor, pass, params, storeKeyProgressCB);
48
+ const storeKeyGen = (params) => (0, key_derivation_1.deriveStorageSKey)(this.cryptor, pass, params, storeKeyProgressCB);
49
49
  const idManager = await this.completeInitWithoutCache(midKeyGen, storeKeyGen);
50
50
  if (!idManager) {
51
51
  return false;
@@ -62,7 +62,7 @@ class SignIn {
62
62
  this.useExistingStorage = async (user, pass, progressCB) => {
63
63
  try {
64
64
  const storeKeyProgressCB = makeKeyGenProgressCB(0, 99, progressCB);
65
- const storeKeyGen = params => key_derivation_1.deriveStorageSKey(this.cryptor, pass, params, storeKeyProgressCB);
65
+ const storeKeyGen = params => (0, key_derivation_1.deriveStorageSKey)(this.cryptor, pass, params, storeKeyProgressCB);
66
66
  const res = await this.initWithCache(user, storeKeyGen);
67
67
  if (!res) {
68
68
  return false;
@@ -73,7 +73,7 @@ class SignIn {
73
73
  }
74
74
  progressCB(49);
75
75
  const midKeyProgressCB = makeKeyGenProgressCB(50, 99, progressCB);
76
- const midKeyGen = async (params) => (await key_derivation_1.deriveMidKeyPair(this.cryptor, pass, params, midKeyProgressCB)).skey;
76
+ const midKeyGen = async (params) => (await (0, key_derivation_1.deriveMidKeyPair)(this.cryptor, pass, params, midKeyProgressCB)).skey;
77
77
  const idManager = await res(midKeyGen);
78
78
  if (!idManager) {
79
79
  return false;
@@ -98,7 +98,7 @@ class SignIn {
98
98
  }
99
99
  async logAndWrap(err, msg) {
100
100
  await this.logError(err, msg);
101
- return error_1.errWithCause(err, msg);
101
+ return (0, error_1.errWithCause)(err, msg);
102
102
  }
103
103
  }
104
104
  exports.SignIn = SignIn;
@@ -42,13 +42,13 @@ const SALT_LEN = 32;
42
42
  const KEY_ID_LEN = 10;
43
43
  async function makeLabeledMidLoginKey(cryptor) {
44
44
  const sk = await random.bytes(ecma_nacl_1.box.KEY_LENGTH);
45
- const skey = jwkeys_1.keyToJson({
45
+ const skey = (0, jwkeys_1.keyToJson)({
46
46
  k: sk,
47
47
  alg: ecma_nacl_1.box.JWK_ALG_NAME,
48
48
  use: jwkeys_1.use.MID_PKLOGIN,
49
49
  kid: await random.stringOfB64Chars(KEY_ID_LEN)
50
50
  });
51
- const pkey = jwkeys_1.keyToJson({
51
+ const pkey = (0, jwkeys_1.keyToJson)({
52
52
  k: await cryptor.box.generate_pubkey(sk),
53
53
  alg: skey.alg,
54
54
  use: skey.use,
@@ -66,7 +66,7 @@ class SignUp {
66
66
  this.store = undefined;
67
67
  this.netLazyInit = undefined;
68
68
  this.getAvailableAddresses = async (name, signupToken) => {
69
- const addresses = await _3nweb_signup_1.checkAvailableAddressesForName(this.net, this.serviceURL, name, signupToken);
69
+ const addresses = await (0, _3nweb_signup_1.checkAvailableAddressesForName)(this.net, this.serviceURL, name, signupToken);
70
70
  return addresses;
71
71
  };
72
72
  this.createUserParams = async (pass, progressCB) => {
@@ -75,11 +75,11 @@ class SignUp {
75
75
  };
76
76
  this.addUser = async (address, signupToken) => {
77
77
  for (const user of await this.getUsersOnDisk()) {
78
- if (canonical_address_1.areAddressesEqual(address, user)) {
78
+ if ((0, canonical_address_1.areAddressesEqual)(address, user)) {
79
79
  throw new Error(`Account ${user} already exists on a disk.`);
80
80
  }
81
81
  }
82
- const accountCreated = await _3nweb_signup_1.addUser(this.net, this.serviceURL, {
82
+ const accountCreated = await (0, _3nweb_signup_1.addUser)(this.net, this.serviceURL, {
83
83
  userId: address,
84
84
  mailerId: this.mid.params,
85
85
  storage: this.store.params,
@@ -113,7 +113,7 @@ class SignUp {
113
113
  return this.netLazyInit;
114
114
  }
115
115
  setServiceURL(serviceURL) {
116
- const url = url_1.parse(serviceURL);
116
+ const url = (0, url_1.parse)(serviceURL);
117
117
  if (url.protocol !== 'https:') {
118
118
  throw new Error("Url protocol must be https.");
119
119
  }
@@ -138,7 +138,7 @@ class SignUp {
138
138
  p: defaultDerivParams.p,
139
139
  salt: buffer_utils_1.base64.pack(await random.bytes(SALT_LEN))
140
140
  };
141
- const progressCB = sign_in_1.makeKeyGenProgressCB(progressStart, progressEnd, originalProgressCB);
141
+ const progressCB = (0, sign_in_1.makeKeyGenProgressCB)(progressStart, progressEnd, originalProgressCB);
142
142
  const skey = await keyDeriv.deriveStorageSKey(this.cryptor, pass, derivParams, progressCB);
143
143
  this.store = {
144
144
  skey: skey,
@@ -154,7 +154,7 @@ class SignUp {
154
154
  p: defaultDerivParams.p,
155
155
  salt: buffer_utils_1.base64.pack(await random.bytes(SALT_LEN))
156
156
  };
157
- const progressCB = sign_in_1.makeKeyGenProgressCB(progressStart, progressEnd, originalProgressCB);
157
+ const progressCB = (0, sign_in_1.makeKeyGenProgressCB)(progressStart, progressEnd, originalProgressCB);
158
158
  const defaultPair = await keyDeriv.deriveMidKeyPair(this.cryptor, pass, derivParams, progressCB, jwkeys_1.use.MID_PKLOGIN, '_');
159
159
  const labeledKey = await makeLabeledMidLoginKey(this.cryptor);
160
160
  this.mid = {
@@ -171,7 +171,7 @@ class SignUp {
171
171
  }
172
172
  async logAndWrap(err, msg) {
173
173
  await this.logError(err, msg);
174
- return error_1.errWithCause(err, msg);
174
+ return (0, error_1.errWithCause)(err, msg);
175
175
  }
176
176
  forgetKeys() {
177
177
  this.store = undefined;
@@ -54,7 +54,7 @@ class JSONSavingProc {
54
54
  this.jsonNeedsSaving = false;
55
55
  const serialForm = this.getForSerialization();
56
56
  if (serialForm === undefined) {
57
- await async_fs_node_1.unlink(this.path)
57
+ await (0, async_fs_node_1.unlink)(this.path)
58
58
  .catch((e) => {
59
59
  if (!e.notFound) {
60
60
  throw e;
@@ -63,7 +63,7 @@ class JSONSavingProc {
63
63
  }
64
64
  else {
65
65
  const json = JSON.stringify(serialForm);
66
- await async_fs_node_1.writeFile(this.path, json, { encoding: 'utf8' });
66
+ await (0, async_fs_node_1.writeFile)(this.path, json, { encoding: 'utf8' });
67
67
  }
68
68
  }
69
69
  finally {
@@ -9,10 +9,10 @@ export interface VersionsInfo {
9
9
  */
10
10
  archived?: number[];
11
11
  /**
12
- * This is a map from base version to diff-ed version(s), that use(s) base.
12
+ * This is a map from base version to diff-ed version, that uses base.
13
13
  */
14
14
  baseToDiff: {
15
- [baseVersion: number]: number[];
15
+ [baseVersion: number]: number;
16
16
  };
17
17
  /**
18
18
  * This is a map from diff version to base version.
@@ -27,7 +27,8 @@ export interface VersionsInfo {
27
27
  * @param diffVer
28
28
  * @param baseVer
29
29
  */
30
- export declare function addBaseToDiffLinkInStatus(versions: VersionsInfo, diffVer: number, baseVer: number): void;
30
+ export declare function addBaseToDiffLinkInVersInfo(versions: VersionsInfo, diffVer: number, baseVer: number): void;
31
+ export declare function isVersionIn(version: number, vers: VersionsInfo): boolean;
31
32
  /**
32
33
  * This function removes given version from versions info, if it is neither
33
34
  * archived, nor is a base for another version. If given version is itself
@@ -37,8 +38,15 @@ export declare function addBaseToDiffLinkInStatus(versions: VersionsInfo, diffVe
37
38
  * @param ver
38
39
  */
39
40
  export declare function rmNonArchVersionsIn(versions: VersionsInfo, ver: number): void;
40
- export declare function rmArchVersionsIn(versions: VersionsInfo, ver: number): void;
41
+ export declare function rmArchVersionFrom(versions: VersionsInfo, ver: number): boolean;
41
42
  export declare function setCurrentVersionIn(versions: VersionsInfo, version: number, baseVer: number | undefined): void;
42
43
  export declare function rmCurrentVersionIn(versions: VersionsInfo): number | undefined;
44
+ export declare function rmVersionIn(version: number, vers: VersionsInfo): void;
43
45
  export declare function nonGarbageVersionsIn(versions: VersionsInfo): Set<number>;
46
+ export interface NonGarbageVersions {
47
+ gcMaxVer?: number;
48
+ nonGarbage: Set<number>;
49
+ }
44
50
  export declare function addWithBasesTo(nonGarbage: Set<number>, ver: number | undefined, versions: VersionsInfo): void;
51
+ export declare function addArchived(versions: VersionsInfo, version: number): boolean;
52
+ export declare function isEmptyVersions(versions: VersionsInfo): boolean;