spec-3nweb-server 1.3.8 → 1.4.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 (89) hide show
  1. package/build/3nstorage/3nstorage-app.js +4 -4
  2. package/build/3nstorage/owner.js +21 -21
  3. package/build/3nstorage/resources/store.js +25 -24
  4. package/build/3nstorage/resources/users.js +2 -2
  5. package/build/3nstorage/routes/owner/archive-obj-version.d.ts +2 -2
  6. package/build/3nstorage/routes/owner/archive-obj-version.js +3 -2
  7. package/build/3nstorage/routes/owner/cancel-trans.js +1 -1
  8. package/build/3nstorage/routes/owner/delete-obj.js +1 -1
  9. package/build/3nstorage/routes/owner/get-archived-obj-ver.js +2 -2
  10. package/build/3nstorage/routes/owner/get-current-obj.js +2 -2
  11. package/build/3nstorage/routes/owner/list-obj-archive.js +3 -2
  12. package/build/3nstorage/routes/owner/param-getter.js +3 -2
  13. package/build/3nstorage/routes/owner/param-setter.js +3 -2
  14. package/build/3nstorage/routes/owner/put-current-obj.js +12 -10
  15. package/build/3nstorage/routes/owner/session-params.js +4 -3
  16. package/build/admin/admin-app.js +5 -5
  17. package/build/admin/resources/users.js +42 -42
  18. package/build/admin/routes/add.js +3 -3
  19. package/build/admin/signup-tokens.js +8 -8
  20. package/build/asmail/asmail-app.js +7 -7
  21. package/build/asmail/config.js +9 -8
  22. package/build/asmail/delivery.js +10 -9
  23. package/build/asmail/resources/delivery-sessions.js +4 -3
  24. package/build/asmail/resources/inbox.d.ts +1 -1
  25. package/build/asmail/resources/inbox.js +22 -22
  26. package/build/asmail/resources/recipients.d.ts +2 -1
  27. package/build/asmail/resources/recipients.js +4 -4
  28. package/build/asmail/resources/sessions.js +2 -1
  29. package/build/asmail/retrieval.js +13 -8
  30. package/build/asmail/routes/config/param-getter.js +3 -2
  31. package/build/asmail/routes/config/param-setter.js +3 -2
  32. package/build/asmail/routes/delivery/finalize-delivery.js +3 -2
  33. package/build/asmail/routes/delivery/pre-flight.js +5 -4
  34. package/build/asmail/routes/delivery/provide-recipient-pubkey.js +3 -2
  35. package/build/asmail/routes/delivery/put-metadata.js +3 -2
  36. package/build/asmail/routes/delivery/put-obj.js +4 -4
  37. package/build/asmail/routes/delivery/restart-session.js +4 -3
  38. package/build/asmail/routes/delivery/sender-authorization.d.ts +1 -3
  39. package/build/asmail/routes/delivery/sender-authorization.js +3 -2
  40. package/build/asmail/routes/delivery/start-session.js +5 -4
  41. package/build/asmail/routes/retrieval/get-message-meta.js +3 -2
  42. package/build/asmail/routes/retrieval/get-message-obj.js +4 -3
  43. package/build/asmail/routes/retrieval/list-messages.js +3 -2
  44. package/build/asmail/routes/retrieval/remove-message.js +3 -2
  45. package/build/lib-common/async-fs-node.js +13 -13
  46. package/build/lib-common/byte-streaming/common.js +9 -9
  47. package/build/lib-common/canonical-address.js +1 -1
  48. package/build/lib-common/ipc/generic-ipc.js +12 -12
  49. package/build/lib-common/ipc/ws-ipc.js +2 -2
  50. package/build/lib-common/mid-sigs-NaCl-Ed.js +14 -14
  51. package/build/lib-common/objs-on-disk/file-layout.js +10 -10
  52. package/build/lib-common/objs-on-disk/obj-file.js +11 -11
  53. package/build/lib-common/objs-on-disk/utils.js +3 -3
  54. package/build/lib-common/processes.js +1 -1
  55. package/build/lib-common/random-node.js +7 -7
  56. package/build/lib-common/service-api/3nstorage/owner.d.ts +5 -4
  57. package/build/lib-common/service-api/3nstorage/owner.js +11 -10
  58. package/build/lib-common/service-api/asmail/delivery.js +2 -2
  59. package/build/lib-common/service-api/asmail/retrieval.js +1 -1
  60. package/build/lib-server/conf-util.js +2 -1
  61. package/build/lib-server/middleware/body-parsers.js +16 -16
  62. package/build/lib-server/middleware/error-handler.js +1 -1
  63. package/build/lib-server/resources/mailerid-authorizer.js +3 -3
  64. package/build/lib-server/resources/mem-backed-sessions-factory.js +3 -3
  65. package/build/lib-server/resources/server-data-folders.js +23 -23
  66. package/build/lib-server/resources/sessions.js +5 -5
  67. package/build/lib-server/resources/user-files.js +8 -8
  68. package/build/lib-server/routes/pub-key-login/complete-exchange.js +4 -3
  69. package/build/lib-server/routes/pub-key-login/start-exchange.js +7 -6
  70. package/build/lib-server/routes/sessions/mid-auth.js +6 -5
  71. package/build/lib-server/routes/sessions/start.js +4 -3
  72. package/build/lib-server/web-sockets/app.js +6 -5
  73. package/build/lib-server/web-sockets/server-events.js +5 -4
  74. package/build/mailerId/mailerId-app.js +7 -7
  75. package/build/mailerId/resources/certifier.d.ts +4 -6
  76. package/build/mailerId/resources/certifier.js +8 -7
  77. package/build/mailerId/resources/compute-login-dhshared-key.js +2 -1
  78. package/build/mailerId/resources/sessions.js +2 -1
  79. package/build/mailerId/resources/users.js +4 -4
  80. package/build/mailerId/routes/certify.js +1 -1
  81. package/build/main.js +10 -10
  82. package/build/mock/dns.js +1 -1
  83. package/build/mock/mock-as-child-proc.js +10 -10
  84. package/build/mock/node-child-ipc.js +2 -2
  85. package/build/mock/run-in-proc.js +7 -7
  86. package/build/run-config.js +10 -10
  87. package/build/run.js +4 -4
  88. package/build/services.js +5 -5
  89. package/package.json +7 -4
@@ -131,7 +131,7 @@ var idProvider;
131
131
  idProvider.KID_BYTES_LENGTH = 9;
132
132
  idProvider.MAX_USER_CERT_VALIDITY = 24 * 60 * 60;
133
133
  function makeSelfSignedCert(address, validityPeriod, sjkey, arrFactory) {
134
- const skey = jwkeys_1.keyFromJson(sjkey, exports.KEY_USE.ROOT, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.SECRET_KEY_LENGTH);
134
+ const skey = (0, jwkeys_1.keyFromJson)(sjkey, exports.KEY_USE.ROOT, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.SECRET_KEY_LENGTH);
135
135
  const pkey = {
136
136
  use: sjkey.use,
137
137
  alg: sjkey.alg,
@@ -160,7 +160,7 @@ var idProvider;
160
160
  const rootPair = genSignKeyPair(exports.KEY_USE.ROOT, idProvider.KID_BYTES_LENGTH, random, arrFactory);
161
161
  const now = Math.floor(Date.now() / 1000);
162
162
  const rootCert = makeCert(rootPair.pkey, address, address, now, now + validityPeriod, rootPair.skey, arrFactory);
163
- return { cert: rootCert, skey: jwkeys_1.keyToJson(rootPair.skey) };
163
+ return { cert: rootCert, skey: (0, jwkeys_1.keyToJson)(rootPair.skey) };
164
164
  }
165
165
  idProvider.generateRootKey = generateRootKey;
166
166
  /**
@@ -177,11 +177,11 @@ var idProvider;
177
177
  if (validityPeriod < 1) {
178
178
  throw new Error(`Illegal validity period: ${validityPeriod}`);
179
179
  }
180
- const rootKey = jwkeys_1.keyFromJson(rootJKey, exports.KEY_USE.ROOT, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.SECRET_KEY_LENGTH);
180
+ const rootKey = (0, jwkeys_1.keyFromJson)(rootJKey, exports.KEY_USE.ROOT, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.SECRET_KEY_LENGTH);
181
181
  const provPair = genSignKeyPair(exports.KEY_USE.PROVIDER, idProvider.KID_BYTES_LENGTH, random, arrFactory);
182
182
  const now = Math.floor(Date.now() / 1000);
183
183
  const rootCert = makeCert(provPair.pkey, address, address, now, now + validityPeriod, rootKey, arrFactory);
184
- return { cert: rootCert, skey: jwkeys_1.keyToJson(provPair.skey) };
184
+ return { cert: rootCert, skey: (0, jwkeys_1.keyToJson)(provPair.skey) };
185
185
  }
186
186
  idProvider.generateProviderKey = generateProviderKey;
187
187
  /**
@@ -201,7 +201,7 @@ var idProvider;
201
201
  if ((validityPeriod < 1) || (validityPeriod > idProvider.MAX_USER_CERT_VALIDITY)) {
202
202
  throw new Error(`Given certificate validity is illegal: ${validityPeriod}`);
203
203
  }
204
- let signKey = jwkeys_1.keyFromJson(signJKey, exports.KEY_USE.PROVIDER, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.SECRET_KEY_LENGTH);
204
+ let signKey = (0, jwkeys_1.keyFromJson)(signJKey, exports.KEY_USE.PROVIDER, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.SECRET_KEY_LENGTH);
205
205
  signJKey = undefined;
206
206
  if (!arrFactory) {
207
207
  arrFactory = ecma_nacl_1.arrays.makeFactory();
@@ -246,7 +246,7 @@ var relyingParty;
246
246
  (function (relyingParty) {
247
247
  const minValidityPeriodForCert = 20 * 60;
248
248
  function verifyCertAndGetPubKey(signedCert, use, validAt, arrFactory, issuer, issuerPKey) {
249
- const cert = jwkeys_1.getKeyCert(signedCert);
249
+ const cert = (0, jwkeys_1.getKeyCert)(signedCert);
250
250
  if ((validAt < (cert.issuedAt - minValidityPeriodForCert))
251
251
  || (cert.expiresAt <= validAt)) {
252
252
  throw makeTimeMismatchException(`Certificate is not valid at a given moment ${validAt}, cause it is issued at ${cert.issuedAt}, and expires at ${cert.expiresAt}`);
@@ -264,7 +264,7 @@ var relyingParty;
264
264
  let sig;
265
265
  let load;
266
266
  try {
267
- pkey = jwkeys_1.keyFromJson(cert.cert.publicKey, use, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.PUBLIC_KEY_LENGTH);
267
+ pkey = (0, jwkeys_1.keyFromJson)(cert.cert.publicKey, use, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.PUBLIC_KEY_LENGTH);
268
268
  sig = buffer_utils_1.base64.open(signedCert.sig);
269
269
  load = buffer_utils_1.base64.open(signedCert.load);
270
270
  }
@@ -291,7 +291,7 @@ var relyingParty;
291
291
  // root certificate must be valid when provider's certificate was issued
292
292
  let rootValidityMoment;
293
293
  try {
294
- rootValidityMoment = jwkeys_1.getKeyCert(certs.prov).issuedAt;
294
+ rootValidityMoment = (0, jwkeys_1.getKeyCert)(certs.prov).issuedAt;
295
295
  }
296
296
  catch (err) {
297
297
  throw makeMalformedCertsException(`Provider's certificate is malformed`, err);
@@ -304,7 +304,7 @@ var relyingParty;
304
304
  // provider's certificate must be valid when user's certificate was issued
305
305
  let provValidityMoment;
306
306
  try {
307
- provValidityMoment = jwkeys_1.getKeyCert(certs.user).issuedAt;
307
+ provValidityMoment = (0, jwkeys_1.getKeyCert)(certs.user).issuedAt;
308
308
  }
309
309
  catch (err) {
310
310
  throw makeMalformedCertsException(`User's certificate is malformed`, err);
@@ -388,7 +388,7 @@ var relyingParty;
388
388
  }
389
389
  let cert;
390
390
  try {
391
- cert = jwkeys_1.getKeyCert(keyCert);
391
+ cert = (0, jwkeys_1.getKeyCert)(keyCert);
392
392
  }
393
393
  catch (err) {
394
394
  throw makeMalformedCertsException(`Cannot read certificate`, err);
@@ -427,7 +427,7 @@ var relyingParty;
427
427
  // time moment, for which user's certificate chain must be valid
428
428
  let chainValidityMoment;
429
429
  try {
430
- chainValidityMoment = jwkeys_1.getKeyCert(pubKeyCert).issuedAt;
430
+ chainValidityMoment = (0, jwkeys_1.getKeyCert)(pubKeyCert).issuedAt;
431
431
  }
432
432
  catch (err) {
433
433
  throw makeMalformedCertsException(`Cannot read certificate`, err);
@@ -442,11 +442,11 @@ var relyingParty;
442
442
  })(relyingParty = exports.relyingParty || (exports.relyingParty = {}));
443
443
  Object.freeze(relyingParty);
444
444
  function correlateSKeyWithItsCert(skey, cert) {
445
- const pkey = jwkeys_1.keyFromJson(cert.cert.publicKey, skey.use, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.PUBLIC_KEY_LENGTH);
445
+ const pkey = (0, jwkeys_1.keyFromJson)(cert.cert.publicKey, skey.use, ecma_nacl_1.signing.JWK_ALG_NAME, ecma_nacl_1.signing.PUBLIC_KEY_LENGTH);
446
446
  if (!((pkey.kid === skey.kid) &&
447
447
  (pkey.use === skey.use) &&
448
448
  (pkey.alg === skey.alg) &&
449
- ecma_nacl_1.compareVectors(ecma_nacl_1.signing.extract_pkey(skey.k), pkey.k))) {
449
+ (0, ecma_nacl_1.compareVectors)(ecma_nacl_1.signing.extract_pkey(skey.k), pkey.k))) {
450
450
  throw new Error("Key does not correspond to certificate.");
451
451
  }
452
452
  }
@@ -470,7 +470,7 @@ var user;
470
470
  * keys.
471
471
  */
472
472
  function makeMailerIdSigner(signKey, userCert, provCert, assertionValidity = user.MAX_SIG_VALIDITY, arrFactory) {
473
- const certificate = jwkeys_1.getKeyCert(userCert);
473
+ const certificate = (0, jwkeys_1.getKeyCert)(userCert);
474
474
  if (signKey.use !== exports.KEY_USE.SIGN) {
475
475
  throw new Error(`Given key ${signKey.kid} has incorrect use: ${signKey.use}`);
476
476
  }
@@ -89,8 +89,8 @@ class ObjVersionBytesLayout {
89
89
  return this.headerChunk;
90
90
  }
91
91
  segsLocations(thisVerOfs, len) {
92
- assert_1.assert(Number.isInteger(thisVerOfs) && (thisVerOfs >= 0));
93
- assert_1.assert(Number.isInteger(len) && (len >= 0));
92
+ (0, assert_1.assert)(Number.isInteger(thisVerOfs) && (thisVerOfs >= 0));
93
+ (0, assert_1.assert)(Number.isInteger(len) && (len >= 0));
94
94
  const segInfos = [];
95
95
  const end = thisVerOfs + len;
96
96
  for (let i = 0; (i < this.segsChunks.length) && (len > 0); i += 1) {
@@ -117,7 +117,7 @@ class ObjVersionBytesLayout {
117
117
  len -= chop.len;
118
118
  }
119
119
  else {
120
- const chop = json_utils_1.copy(chunk);
120
+ const chop = (0, json_utils_1.copy)(chunk);
121
121
  chop.thisVerOfs = thisVerOfs;
122
122
  if (chunk.type === 'new-endless') {
123
123
  chop.type = 'new';
@@ -177,7 +177,7 @@ class ObjVersionBytesLayout {
177
177
  }
178
178
  addHeader(len, fileOfs) {
179
179
  this.ensureExpectedFileOfs(fileOfs);
180
- assert_1.assert(Number.isInteger(len) && (len >= 0));
180
+ (0, assert_1.assert)(Number.isInteger(len) && (len >= 0));
181
181
  if (this.headerChunk) {
182
182
  throw new Error(`Header added second time to obj version bytes layout`);
183
183
  }
@@ -187,8 +187,8 @@ class ObjVersionBytesLayout {
187
187
  }
188
188
  addSegsOnFile(thisVerOfs, len, fileOfs) {
189
189
  this.ensureExpectedFileOfs(fileOfs);
190
- assert_1.assert(Number.isInteger(thisVerOfs) && (thisVerOfs >= 0));
191
- assert_1.assert(Number.isInteger(len) && (len >= 0));
190
+ (0, assert_1.assert)(Number.isInteger(thisVerOfs) && (thisVerOfs >= 0));
191
+ (0, assert_1.assert)(Number.isInteger(len) && (len >= 0));
192
192
  const s = {
193
193
  type: 'new-on-disk', thisVerOfs, len, fileOfs
194
194
  };
@@ -197,9 +197,9 @@ class ObjVersionBytesLayout {
197
197
  }
198
198
  addBaseSegsOnFile(thisVerOfs, baseVerOfs, len, fileOfs) {
199
199
  this.ensureExpectedFileOfs(fileOfs);
200
- assert_1.assert(Number.isInteger(thisVerOfs) && (thisVerOfs >= 0));
201
- assert_1.assert(Number.isInteger(baseVerOfs) && (baseVerOfs >= 0));
202
- assert_1.assert(Number.isInteger(len) && (len >= 0));
200
+ (0, assert_1.assert)(Number.isInteger(thisVerOfs) && (thisVerOfs >= 0));
201
+ (0, assert_1.assert)(Number.isInteger(baseVerOfs) && (baseVerOfs >= 0));
202
+ (0, assert_1.assert)(Number.isInteger(len) && (len >= 0));
203
203
  const s = {
204
204
  type: 'base-on-disk', thisVerOfs, baseVerOfs, len, fileOfs
205
205
  };
@@ -222,7 +222,7 @@ function layoutSectionsToSegsChunks(sections) {
222
222
  }
223
223
  const chunk = layoutSectionToSegsChunk(section);
224
224
  if (chunk.type === 'new-endless') {
225
- assert_1.assert(sections[sections.length - 1] === section, `Infinite layout section must be the last section`);
225
+ (0, assert_1.assert)(sections[sections.length - 1] === section, `Infinite layout section must be the last section`);
226
226
  }
227
227
  else {
228
228
  chunks.push(chunk);
@@ -78,7 +78,7 @@ class ObjVersionFile {
78
78
  return this.writeProc.startOrChain(async () => {
79
79
  const fd = await fs.open(this.path, 'r+')
80
80
  .catch(exc => {
81
- throw error_1.errWithCause(exc, `Can't open obj version file ${this.path}`);
81
+ throw (0, error_1.errWithCause)(exc, `Can't open obj version file ${this.path}`);
82
82
  });
83
83
  try {
84
84
  return await action(fd);
@@ -97,7 +97,7 @@ class ObjVersionFile {
97
97
  saveHeader(header, saveLayout) {
98
98
  return this.withRWFile(async (fd) => {
99
99
  const ofs = this.layout.getLayoutOfs();
100
- await fs.writeFromBuf(fd, ofs, buffer_utils_1.toBuffer(header));
100
+ await fs.writeFromBuf(fd, ofs, (0, buffer_utils_1.toBuffer)(header));
101
101
  this.layout.addHeader(header.length, ofs);
102
102
  if (saveLayout) {
103
103
  await this.recordLayout(fd);
@@ -107,7 +107,7 @@ class ObjVersionFile {
107
107
  saveSegs(segsChunks, thisVerOfs, baseVerOfs, saveLayout) {
108
108
  return this.withRWFile(async (fd) => {
109
109
  const ofs = this.layout.getLayoutOfs();
110
- await fs.writeFromBuf(fd, ofs, buffer_utils_1.toBuffer(segsChunks));
110
+ await fs.writeFromBuf(fd, ofs, (0, buffer_utils_1.toBuffer)(segsChunks));
111
111
  if (baseVerOfs === undefined) {
112
112
  this.layout.addSegsOnFile(thisVerOfs, segsChunks.length, ofs);
113
113
  }
@@ -125,7 +125,7 @@ class ObjVersionFile {
125
125
  async withROFile(action) {
126
126
  const fd = await fs.open(this.path, 'r')
127
127
  .catch(exc => {
128
- throw error_1.errWithCause(exc, `Can't open obj version file ${this.path}`);
128
+ throw (0, error_1.errWithCause)(exc, `Can't open obj version file ${this.path}`);
129
129
  });
130
130
  try {
131
131
  return await action(fd);
@@ -158,7 +158,7 @@ class ObjVersionFile {
158
158
  return;
159
159
  }
160
160
  await this.withROFile(async (fd) => {
161
- const src = fs_1.createReadStream('', {
161
+ const src = (0, fs_1.createReadStream)('', {
162
162
  fd,
163
163
  autoClose: false,
164
164
  start: chunkInfo.fileOfs,
@@ -191,7 +191,7 @@ class ObjVersionFile {
191
191
  for (const chunk of chunks) {
192
192
  if ((chunk.type === 'new-on-disk')
193
193
  || (chunk.type === 'base-on-disk')) {
194
- const src = fs_1.createReadStream('', {
194
+ const src = (0, fs_1.createReadStream)('', {
195
195
  fd,
196
196
  autoClose: false,
197
197
  start: chunk.fileOfs,
@@ -227,7 +227,7 @@ exports.ObjVersionFile = ObjVersionFile;
227
227
  Object.freeze(ObjVersionFile.prototype);
228
228
  Object.freeze(ObjVersionFile);
229
229
  async function pipeBytes(src, sink) {
230
- const deferred = processes_1.defer();
230
+ const deferred = (0, processes_1.defer)();
231
231
  src.pipe(sink, { end: false });
232
232
  src.on('error', (err) => {
233
233
  deferred.reject(err);
@@ -260,8 +260,8 @@ async function parseObjVersionBytesLayout(fd) {
260
260
  throw exc;
261
261
  });
262
262
  const fileStart = fstBytes.slice(0, 4);
263
- if (bytes_equal_1.bytesEqual(fileStart, v1_obj_file_format_1.V1_FILE_START)) {
264
- const layoutOfs = v1_obj_file_format_1.uintFrom8Bytes(fstBytes, 4);
263
+ if ((0, bytes_equal_1.bytesEqual)(fileStart, v1_obj_file_format_1.V1_FILE_START)) {
264
+ const layoutOfs = (0, v1_obj_file_format_1.uintFrom8Bytes)(fstBytes, 4);
265
265
  if (layoutOfs === 0) {
266
266
  throw parsingException(`Obj version file is in incomplete state`);
267
267
  }
@@ -287,10 +287,10 @@ async function createNewV1File(path) {
287
287
  await fs.writeFile(path, initContent, { flag: 'wx' });
288
288
  }
289
289
  async function recordLayoutOffsetInV1(fd, ofs) {
290
- const ofsInBytes = v1_obj_file_format_1.uintTo8Bytes(ofs);
290
+ const ofsInBytes = (0, v1_obj_file_format_1.uintTo8Bytes)(ofs);
291
291
  await fs.writeFromBuf(fd, v1_obj_file_format_1.V1_FILE_START.length, ofsInBytes)
292
292
  .catch(exc => {
293
- throw error_1.errWithCause(exc, `Can't record layout offset in obj file`);
293
+ throw (0, error_1.errWithCause)(exc, `Can't record layout offset in obj file`);
294
294
  });
295
295
  }
296
296
  Object.freeze(exports);
@@ -42,7 +42,7 @@ function diffToLayout(diff) {
42
42
  }
43
43
  exports.diffToLayout = diffToLayout;
44
44
  async function streamToObjFile(file, content, src, maxBufferLen) {
45
- let deferred = processes_1.defer();
45
+ let deferred = (0, processes_1.defer)();
46
46
  const contentIter = content.values();
47
47
  let chunk = undefined;
48
48
  let buf = new common_1.BytesFIFOBuffer();
@@ -111,7 +111,7 @@ async function streamToObjFile(file, content, src, maxBufferLen) {
111
111
  });
112
112
  src.on('end', () => {
113
113
  if (chunk) {
114
- complete(file_1.makeFileException(file_1.Code.endOfFile, '<input stream>'));
114
+ complete((0, file_1.makeFileException)(file_1.Code.endOfFile, '<input stream>'));
115
115
  }
116
116
  else {
117
117
  complete();
@@ -125,7 +125,7 @@ exports.streamToObjFile = streamToObjFile;
125
125
  function chunksInOrderedStream(len, headerLen, segsOfs) {
126
126
  const chunks = [];
127
127
  if (typeof headerLen === 'number') {
128
- assert_1.assert(len >= headerLen);
128
+ (0, assert_1.assert)(len >= headerLen);
129
129
  chunks.push({ type: 'header', len: headerLen });
130
130
  len -= headerLen;
131
131
  }
@@ -439,7 +439,7 @@ class PressureValve {
439
439
  }
440
440
  pressWithError(err) {
441
441
  this.toggle(true);
442
- this.stopper.reject(error_1.errWithCause(err, `Backpressure error`));
442
+ this.stopper.reject((0, error_1.errWithCause)(err, `Backpressure error`));
443
443
  }
444
444
  }
445
445
  exports.PressureValve = PressureValve;
@@ -19,11 +19,11 @@ exports.stringOfB64Chars = exports.stringOfB64UrlSafeChars = exports.stringOfB64
19
19
  const buffer_utils_1 = require("./buffer-utils");
20
20
  const crypto_1 = require("crypto");
21
21
  function bytesSync(numOfBytes) {
22
- return crypto_1.randomBytes(numOfBytes);
22
+ return (0, crypto_1.randomBytes)(numOfBytes);
23
23
  }
24
24
  exports.bytesSync = bytesSync;
25
25
  function bytes(numOfBytes) {
26
- return new Promise((res, rej) => crypto_1.randomBytes(numOfBytes, (err, buf) => {
26
+ return new Promise((res, rej) => (0, crypto_1.randomBytes)(numOfBytes, (err, buf) => {
27
27
  if (err) {
28
28
  rej(err);
29
29
  }
@@ -34,15 +34,15 @@ function bytes(numOfBytes) {
34
34
  }
35
35
  exports.bytes = bytes;
36
36
  function uint8Sync() {
37
- return crypto_1.randomBytes(1)[0];
37
+ return (0, crypto_1.randomBytes)(1)[0];
38
38
  }
39
39
  exports.uint8Sync = uint8Sync;
40
40
  async function uint8() {
41
- return (await crypto_1.randomBytes(1))[0];
41
+ return (await (0, crypto_1.randomBytes)(1))[0];
42
42
  }
43
43
  exports.uint8 = uint8;
44
44
  function uint48Sync() {
45
- const b = crypto_1.randomBytes(6);
45
+ const b = (0, crypto_1.randomBytes)(6);
46
46
  const l = b[0] + (b[1] << 8) + (b[2] << 16) + (b[3] << 24);
47
47
  const h = b[4] + (b[5] << 8);
48
48
  return h * 0x100000000 + l;
@@ -57,13 +57,13 @@ async function uint48() {
57
57
  exports.uint48 = uint48;
58
58
  function stringOfB64UrlSafeCharsSync(numOfChars) {
59
59
  const numOfbytes = 3 * (1 + Math.floor(numOfChars / 4));
60
- const byteArr = crypto_1.randomBytes(numOfbytes);
60
+ const byteArr = (0, crypto_1.randomBytes)(numOfbytes);
61
61
  return buffer_utils_1.base64urlSafe.pack(byteArr).substring(0, numOfChars);
62
62
  }
63
63
  exports.stringOfB64UrlSafeCharsSync = stringOfB64UrlSafeCharsSync;
64
64
  function stringOfB64CharsSync(numOfChars) {
65
65
  const numOfbytes = 3 * (1 + Math.floor(numOfChars / 4));
66
- return crypto_1.randomBytes(numOfbytes).toString('base64').substring(0, numOfChars);
66
+ return (0, crypto_1.randomBytes)(numOfbytes).toString('base64').substring(0, numOfChars);
67
67
  }
68
68
  exports.stringOfB64CharsSync = stringOfB64CharsSync;
69
69
  async function stringOfB64UrlSafeChars(numOfChars) {
@@ -67,10 +67,11 @@ export interface GetObjQueryOpts {
67
67
  }
68
68
  export interface PutObjFirstQueryOpts {
69
69
  /**
70
- * This is a new object version parameter. When it is 1 (one), new object
71
- * should be created. If it is greater than one, changes are accepted only
72
- * when a current version on the server is (ver-1), ensuring that a client
73
- * knows current version on server to advance it.
70
+ * This is a flag to indicate that new object should be created.
71
+ */
72
+ create?: boolean;
73
+ /**
74
+ * This parameter is object's new version.
74
75
  */
75
76
  ver: number;
76
77
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- Copyright (C) 2015 - 2017, 2019 3NSoft Inc.
3
+ Copyright (C) 2015 - 2017, 2019, 2022 3NSoft Inc.
4
4
 
5
5
  This program is free software: you can redistribute it and/or modify it under
6
6
  the terms of the GNU General Public License as published by the Free Software
@@ -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.objRemoved = exports.objChanged = exports.wsEventChannel = exports.archiveRoot = exports.archiveObj = exports.cancelRootTransaction = exports.cancelTransaction = exports.addDiffSectionTo = exports.sanitizedDiff = exports.archivedRootVersion = exports.archivedObjVersion = exports.currentRootObj = exports.currentObj = exports.keyDerivParams = exports.PARAM_SC = exports.sessionParams = exports.closeSession = exports.midLogin = exports.BIN_TYPE = exports.HTTP_HEADER = exports.ERR_SC = void 0;
19
20
  /**
@@ -75,15 +76,15 @@ var currentObj;
75
76
  (function (currentObj) {
76
77
  currentObj.EXPRESS_URL_END = 'obj/:objId/current';
77
78
  function getReqUrlEnd(objId, opts) {
78
- return `obj/${objId}/current${opts ? `?${querystring_1.stringify(opts)}` : ''}`;
79
+ return `obj/${objId}/current${opts ? `?${(0, querystring_1.stringify)(opts)}` : ''}`;
79
80
  }
80
81
  currentObj.getReqUrlEnd = getReqUrlEnd;
81
82
  function firstPutReqUrlEnd(objId, opts) {
82
- return `obj/${objId}/current?${querystring_1.stringify(opts)}`;
83
+ return `obj/${objId}/current?${(0, querystring_1.stringify)(opts)}`;
83
84
  }
84
85
  currentObj.firstPutReqUrlEnd = firstPutReqUrlEnd;
85
86
  function secondPutReqUrlEnd(objId, opts) {
86
- return `obj/${objId}/current?${querystring_1.stringify(opts)}`;
87
+ return `obj/${objId}/current?${(0, querystring_1.stringify)(opts)}`;
87
88
  }
88
89
  currentObj.secondPutReqUrlEnd = secondPutReqUrlEnd;
89
90
  currentObj.SC = {
@@ -105,15 +106,15 @@ var currentRootObj;
105
106
  (function (currentRootObj) {
106
107
  currentRootObj.EXPRESS_URL_END = 'root/current';
107
108
  function getReqUrlEnd(opts) {
108
- return `root/current${opts ? `?${querystring_1.stringify(opts)}` : ''}`;
109
+ return `root/current${opts ? `?${(0, querystring_1.stringify)(opts)}` : ''}`;
109
110
  }
110
111
  currentRootObj.getReqUrlEnd = getReqUrlEnd;
111
112
  function firstPutReqUrlEnd(opts) {
112
- return `root/current?${querystring_1.stringify(opts)}`;
113
+ return `root/current?${(0, querystring_1.stringify)(opts)}`;
113
114
  }
114
115
  currentRootObj.firstPutReqUrlEnd = firstPutReqUrlEnd;
115
116
  function secondPutReqUrlEnd(opts) {
116
- return `root/current?${querystring_1.stringify(opts)}`;
117
+ return `root/current?${(0, querystring_1.stringify)(opts)}`;
117
118
  }
118
119
  currentRootObj.secondPutReqUrlEnd = secondPutReqUrlEnd;
119
120
  currentRootObj.SC = currentObj.SC;
@@ -126,7 +127,7 @@ var archivedObjVersion;
126
127
  if (opts) {
127
128
  opts.ver = version;
128
129
  }
129
- const query = (opts ? `?${querystring_1.stringify(opts)}` : '');
130
+ const query = (opts ? `?${(0, querystring_1.stringify)(opts)}` : '');
130
131
  return `/obj/${objId}/archived${query}`;
131
132
  }
132
133
  archivedObjVersion.getReqUrlEnd = getReqUrlEnd;
@@ -146,7 +147,7 @@ var archivedRootVersion;
146
147
  if (opts) {
147
148
  opts.ver = version;
148
149
  }
149
- const query = (opts ? `?${querystring_1.stringify(opts)}` : '');
150
+ const query = (opts ? `?${(0, querystring_1.stringify)(opts)}` : '');
150
151
  return `root/archived${query}`;
151
152
  }
152
153
  archivedRootVersion.getReqUrlEnd = getReqUrlEnd;
@@ -97,11 +97,11 @@ var msgObj;
97
97
  (function (msgObj) {
98
98
  msgObj.EXPRESS_URL_END = 'msg/obj/:objId';
99
99
  function firstPutReqUrlEnd(objId, opts) {
100
- return `msg/obj/${objId}?${querystring_1.stringify(opts)}`;
100
+ return `msg/obj/${objId}?${(0, querystring_1.stringify)(opts)}`;
101
101
  }
102
102
  msgObj.firstPutReqUrlEnd = firstPutReqUrlEnd;
103
103
  function secondPutReqUrlEnd(objId, opts) {
104
- return `msg/obj/${objId}?${querystring_1.stringify(opts)}`;
104
+ return `msg/obj/${objId}?${(0, querystring_1.stringify)(opts)}`;
105
105
  }
106
106
  msgObj.secondPutReqUrlEnd = secondPutReqUrlEnd;
107
107
  msgObj.SC = {
@@ -114,7 +114,7 @@ var msgObj;
114
114
  (function (msgObj) {
115
115
  msgObj.EXPRESS_URL_END = 'msg/:msgId/obj/:objId';
116
116
  function genUrlEnd(msgId, objId, opts) {
117
- let optStr = (opts ? '?' + querystring_1.stringify(opts) : '');
117
+ let optStr = (opts ? '?' + (0, querystring_1.stringify)(opts) : '');
118
118
  return `msg/${msgId}/obj/${objId}${optStr}`;
119
119
  }
120
120
  msgObj.genUrlEnd = genUrlEnd;
@@ -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.stringToNumOfBytes = void 0;
19
20
  const mapAmountEndings = {
@@ -50,10 +50,10 @@ function emptyBody() {
50
50
  // get and check Content-Length
51
51
  const contentLength = parseInt(req.get(HTTP_HEADER.contentLength), 10);
52
52
  if (isNaN(contentLength)) {
53
- return next(error_handler_1.makeErr(411, "Content-Length header is required with proper number."));
53
+ return next((0, error_handler_1.makeErr)(411, "Content-Length header is required with proper number."));
54
54
  }
55
55
  if (contentLength !== 0) {
56
- return next(error_handler_1.makeErr(413, "Request body is too long."));
56
+ return next((0, error_handler_1.makeErr)(413, "Request body is too long."));
57
57
  }
58
58
  next();
59
59
  };
@@ -73,22 +73,22 @@ async function parseBinaryBodyWithExpectedSize(req, expectedLen) {
73
73
  }
74
74
  // check type
75
75
  if (!req.is(TYPES.bin)) {
76
- throw error_handler_1.makeErr(415, `Content-Type must be ${TYPES.bin} for this call.`);
76
+ throw (0, error_handler_1.makeErr)(415, `Content-Type must be ${TYPES.bin} for this call.`);
77
77
  }
78
78
  // check length declared in header
79
79
  const contentLength = parseInt(req.get(HTTP_HEADER.contentLength), 10);
80
80
  if (isNaN(contentLength)) {
81
- throw error_handler_1.makeErr(411, "Content-Length header is required with proper number.");
81
+ throw (0, error_handler_1.makeErr)(411, "Content-Length header is required with proper number.");
82
82
  }
83
83
  if (contentLength !== expectedLen) {
84
- throw error_handler_1.makeErr(400, "Unexpected number of bytes.");
84
+ throw (0, error_handler_1.makeErr)(400, "Unexpected number of bytes.");
85
85
  }
86
86
  }
87
87
  catch (err) {
88
88
  attachByteDrainToRequest(req);
89
89
  throw err;
90
90
  }
91
- const deffered = processes_1.defer();
91
+ const deffered = (0, processes_1.defer)();
92
92
  const bytes = new common_1.BytesFIFOBuffer();
93
93
  // collect body bytes
94
94
  let erred = false;
@@ -101,7 +101,7 @@ async function parseBinaryBodyWithExpectedSize(req, expectedLen) {
101
101
  }
102
102
  else {
103
103
  erred = true;
104
- deffered.reject(error_handler_1.makeErr(400, "Request body is longer than expected."));
104
+ deffered.reject((0, error_handler_1.makeErr)(400, "Request body is longer than expected."));
105
105
  }
106
106
  });
107
107
  req.on('end', () => {
@@ -112,14 +112,14 @@ async function parseBinaryBodyWithExpectedSize(req, expectedLen) {
112
112
  deffered.resolve(bytes.getBytes(undefined));
113
113
  }
114
114
  else {
115
- deffered.reject(error_handler_1.makeErr(400, "Request body is shorter than expected."));
115
+ deffered.reject((0, error_handler_1.makeErr)(400, "Request body is shorter than expected."));
116
116
  }
117
117
  });
118
118
  return deffered.promise;
119
119
  }
120
120
  exports.parseBinaryBodyWithExpectedSize = parseBinaryBodyWithExpectedSize;
121
121
  function byteCollector(maxSize, contentType, parser) {
122
- const maxSizeNum = conf_util_1.stringToNumOfBytes(maxSize);
122
+ const maxSizeNum = (0, conf_util_1.stringToNumOfBytes)(maxSize);
123
123
  if ('string' !== typeof contentType) {
124
124
  throw new Error("Given 'contentType' argument must be a string.");
125
125
  }
@@ -127,19 +127,19 @@ function byteCollector(maxSize, contentType, parser) {
127
127
  // check Content-Type
128
128
  if (!req.is(contentType)) {
129
129
  attachByteDrainToRequest(req);
130
- return next(error_handler_1.makeErr(415, "Content-Type must be " +
130
+ return next((0, error_handler_1.makeErr)(415, "Content-Type must be " +
131
131
  contentType + " for this call."));
132
132
  }
133
133
  // get and check Content-Length
134
134
  const contentLength = parseInt(req.get(HTTP_HEADER.contentLength), 10);
135
135
  if (isNaN(contentLength)) {
136
136
  attachByteDrainToRequest(req);
137
- return next(error_handler_1.makeErr(411, "Content-Length header is required with proper number."));
137
+ return next((0, error_handler_1.makeErr)(411, "Content-Length header is required with proper number."));
138
138
  }
139
139
  // enforce agreed limit on request size
140
140
  if (contentLength > maxSizeNum) {
141
141
  attachByteDrainToRequest(req);
142
- return next(error_handler_1.makeErr(413, "Request body is too long."));
142
+ return next((0, error_handler_1.makeErr)(413, "Request body is too long."));
143
143
  }
144
144
  // XXX we may use fifo here, postponing byte copying till moment, when
145
145
  // everything is downloaded
@@ -160,7 +160,7 @@ function byteCollector(maxSize, contentType, parser) {
160
160
  else {
161
161
  erred = true;
162
162
  req.body = null;
163
- next(error_handler_1.makeErr(413, "Request body is too long."));
163
+ next((0, error_handler_1.makeErr)(413, "Request body is too long."));
164
164
  }
165
165
  });
166
166
  req.on('end', () => {
@@ -201,11 +201,11 @@ function json(maxSize, allowNonObject) {
201
201
  req.body = JSON.parse(bodyAsStr);
202
202
  }
203
203
  catch (err) {
204
- return next(error_handler_1.makeErr(400, "Request body cannot be interpreted as JSON."));
204
+ return next((0, error_handler_1.makeErr)(400, "Request body cannot be interpreted as JSON."));
205
205
  }
206
206
  if (!allowNonObject &&
207
207
  (!req.body || (typeof req.body !== 'object'))) {
208
- return next(error_handler_1.makeErr(400, "Request body is not a JSON object."));
208
+ return next((0, error_handler_1.makeErr)(400, "Request body is not a JSON object."));
209
209
  }
210
210
  next();
211
211
  });
@@ -223,7 +223,7 @@ function textPlain(maxSize) {
223
223
  req.body = req.body.toString('utf8');
224
224
  }
225
225
  catch (err) {
226
- return next(error_handler_1.makeErr(400, "Request body cannot be interpreted as plain utf8 text."));
226
+ return next((0, error_handler_1.makeErr)(400, "Request body cannot be interpreted as plain utf8 text."));
227
227
  }
228
228
  next();
229
229
  });
@@ -27,7 +27,7 @@ const error_1 = require("../../lib-common/exceptions/error");
27
27
  * @param cause
28
28
  */
29
29
  function makeErr(code, msg, cause) {
30
- const err = error_1.errWithCause(cause, msg);
30
+ const err = (0, error_1.errWithCause)(cause, msg);
31
31
  err.status = code;
32
32
  return err;
33
33
  }
@@ -71,14 +71,14 @@ async function validate(rpDomain, sessionId, userId, assertion, userCert, provCe
71
71
  const validAt = Date.now() / 1000;
72
72
  try {
73
73
  // check that certificate is for the user
74
- const addressInCert = jwkeys_1.getPrincipalAddress(userCert);
74
+ const addressInCert = (0, jwkeys_1.getPrincipalAddress)(userCert);
75
75
  if (userId !== addressInCert) {
76
76
  return false;
77
77
  }
78
78
  // check that issuer is the one that provides MailerId service for
79
79
  // user's domain
80
- const issuer = jwkeys_1.getKeyCert(provCert).issuer;
81
- const serviceURL = await dns_1.get3NWebRecords(addressInCert, 'mailerid');
80
+ const issuer = (0, jwkeys_1.getKeyCert)(provCert).issuer;
81
+ const serviceURL = await (0, dns_1.get3NWebRecords)(addressInCert, 'mailerid');
82
82
  const domainInRecord = serviceURL.split('/')[0].split(':')[0];
83
83
  if (issuer !== domainInRecord) {
84
84
  return false;
@@ -51,7 +51,7 @@ class InMemorySessions extends sessions_1.BaseSessionFactory {
51
51
  async generate() {
52
52
  let newSessionId;
53
53
  do {
54
- newSessionId = buffer_utils_1.base64urlSafe.pack(await random_node_1.bytes(ID_BYTES_LEN));
54
+ newSessionId = buffer_utils_1.base64urlSafe.pack(await (0, random_node_1.bytes)(ID_BYTES_LEN));
55
55
  } while (this.sessions.has(strChunk(newSessionId)));
56
56
  const params = this.makeDefaultSessionParams(newSessionId);
57
57
  const session = this.makeSession(newSessionId, params);
@@ -87,7 +87,7 @@ class InMemorySessions extends sessions_1.BaseSessionFactory {
87
87
  static factory(timeout, makeDefaultSessionParams) {
88
88
  const factory = new InMemorySessions(timeout, makeDefaultSessionParams);
89
89
  Object.seal(factory);
90
- return Object.freeze(sessions_1.wrapFactory(factory));
90
+ return Object.freeze((0, sessions_1.wrapFactory)(factory));
91
91
  }
92
92
  }
93
93
  exports.InMemorySessions = InMemorySessions;
@@ -96,7 +96,7 @@ Object.freeze(InMemorySessions);
96
96
  function sameIdBytes(idStr, idBytes) {
97
97
  try {
98
98
  const bytes = buffer_utils_1.base64urlSafe.open(idStr);
99
- return ecma_nacl_1.compareVectors(bytes, idBytes);
99
+ return (0, ecma_nacl_1.compareVectors)(bytes, idBytes);
100
100
  }
101
101
  catch (err) {
102
102
  return false;