spec-3nweb-server 1.3.5 → 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.
- package/build/3nstorage/3nstorage-app.js +4 -4
- package/build/3nstorage/owner.js +21 -21
- package/build/3nstorage/resources/store.js +25 -24
- package/build/3nstorage/resources/users.js +2 -2
- package/build/3nstorage/routes/owner/archive-obj-version.d.ts +2 -2
- package/build/3nstorage/routes/owner/archive-obj-version.js +3 -2
- package/build/3nstorage/routes/owner/cancel-trans.js +1 -1
- package/build/3nstorage/routes/owner/delete-obj.js +1 -1
- package/build/3nstorage/routes/owner/get-archived-obj-ver.js +2 -2
- package/build/3nstorage/routes/owner/get-current-obj.js +2 -2
- package/build/3nstorage/routes/owner/list-obj-archive.js +3 -2
- package/build/3nstorage/routes/owner/param-getter.js +3 -2
- package/build/3nstorage/routes/owner/param-setter.js +3 -2
- package/build/3nstorage/routes/owner/put-current-obj.js +12 -10
- package/build/3nstorage/routes/owner/session-params.js +4 -3
- package/build/admin/admin-app.js +7 -5
- package/build/admin/resources/users.d.ts +10 -4
- package/build/admin/resources/users.js +90 -37
- package/build/admin/routes/add.js +3 -3
- package/build/admin/routes/get-available-domains.d.ts +3 -0
- package/build/admin/routes/get-available-domains.js +38 -0
- package/build/admin/signup-tokens.js +11 -11
- package/build/asmail/asmail-app.js +7 -7
- package/build/asmail/config.js +9 -8
- package/build/asmail/delivery.js +10 -9
- package/build/asmail/resources/delivery-sessions.js +5 -4
- package/build/asmail/resources/inbox.d.ts +1 -1
- package/build/asmail/resources/inbox.js +22 -22
- package/build/asmail/resources/recipients.d.ts +2 -1
- package/build/asmail/resources/recipients.js +4 -4
- package/build/asmail/resources/sessions.js +2 -1
- package/build/asmail/retrieval.js +13 -8
- package/build/asmail/routes/config/param-getter.js +3 -2
- package/build/asmail/routes/config/param-setter.js +3 -2
- package/build/asmail/routes/delivery/finalize-delivery.js +3 -2
- package/build/asmail/routes/delivery/pre-flight.js +5 -4
- package/build/asmail/routes/delivery/provide-recipient-pubkey.js +3 -2
- package/build/asmail/routes/delivery/put-metadata.js +3 -2
- package/build/asmail/routes/delivery/put-obj.js +4 -4
- package/build/asmail/routes/delivery/restart-session.js +4 -3
- package/build/asmail/routes/delivery/sender-authorization.d.ts +1 -3
- package/build/asmail/routes/delivery/sender-authorization.js +3 -2
- package/build/asmail/routes/delivery/start-session.js +5 -4
- package/build/asmail/routes/retrieval/get-message-meta.js +3 -2
- package/build/asmail/routes/retrieval/get-message-obj.js +4 -3
- package/build/asmail/routes/retrieval/list-messages.js +3 -2
- package/build/asmail/routes/retrieval/remove-message.js +3 -2
- package/build/lib-common/admin-api/signup.d.ts +9 -0
- package/build/lib-common/admin-api/signup.js +11 -2
- package/build/lib-common/async-fs-node.js +13 -13
- package/build/lib-common/byte-streaming/common.js +9 -9
- package/build/lib-common/canonical-address.js +1 -1
- package/build/lib-common/ipc/generic-ipc.js +12 -12
- package/build/lib-common/ipc/ws-ipc.js +2 -2
- package/build/lib-common/mid-sigs-NaCl-Ed.js +14 -14
- package/build/lib-common/objs-on-disk/file-layout.js +10 -10
- package/build/lib-common/objs-on-disk/obj-file.js +11 -11
- package/build/lib-common/objs-on-disk/utils.js +3 -3
- package/build/lib-common/processes.js +1 -1
- package/build/lib-common/random-node.js +7 -7
- package/build/lib-common/service-api/3nstorage/owner.d.ts +5 -4
- package/build/lib-common/service-api/3nstorage/owner.js +11 -10
- package/build/lib-common/service-api/asmail/delivery.js +2 -2
- package/build/lib-common/service-api/asmail/retrieval.js +1 -1
- package/build/lib-server/conf-util.js +2 -1
- package/build/lib-server/middleware/body-parsers.js +16 -16
- package/build/lib-server/middleware/error-handler.js +1 -1
- package/build/lib-server/resources/mailerid-authorizer.js +3 -3
- package/build/lib-server/resources/mem-backed-sessions-factory.d.ts +1 -1
- package/build/lib-server/resources/mem-backed-sessions-factory.js +35 -10
- package/build/lib-server/resources/server-data-folders.js +23 -23
- package/build/lib-server/resources/sessions.js +5 -5
- package/build/lib-server/resources/user-files.js +8 -8
- package/build/lib-server/routes/pub-key-login/complete-exchange.js +4 -3
- package/build/lib-server/routes/pub-key-login/start-exchange.js +7 -6
- package/build/lib-server/routes/sessions/mid-auth.js +6 -5
- package/build/lib-server/routes/sessions/start.js +4 -3
- package/build/lib-server/web-sockets/app.js +6 -5
- package/build/lib-server/web-sockets/server-events.js +5 -4
- package/build/mailerId/mailerId-app.js +7 -7
- package/build/mailerId/resources/certifier.d.ts +4 -6
- package/build/mailerId/resources/certifier.js +8 -7
- package/build/mailerId/resources/compute-login-dhshared-key.js +2 -1
- package/build/mailerId/resources/sessions.js +2 -1
- package/build/mailerId/resources/users.js +4 -4
- package/build/mailerId/routes/certify.js +1 -1
- package/build/main.js +10 -10
- package/build/mock/dns.js +1 -1
- package/build/mock/mock-as-child-proc.js +10 -10
- package/build/mock/node-child-ipc.js +2 -2
- package/build/mock/run-in-proc.js +7 -7
- package/build/run-config.js +10 -10
- package/build/run.js +4 -4
- package/build/services.js +5 -5
- package/package.json +7 -4
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.copyTree = exports.copyFile = exports.streamFromFile = exports.rmDirWithContent = exports.read = exports.streamToExistingFile = exports.append = exports.write = exports.getFolderContentSize = exports.getFileSize = exports.existsFolderSync = exports.createEmptyFile = exports.writeFromBuf = exports.readToBuf = exports.ftruncate = exports.truncate = exports.rename = exports.unlink = exports.rmdir = exports.readdir = exports.fstat = exports.stat = exports.lstat = exports.readlink = exports.symlink = exports.close = exports.open = exports.mkdir = exports.writeFile = exports.readFile = void 0;
|
|
19
|
+
exports.copyTree = exports.copyFile = exports.streamFromFile = exports.rmDirWithContent = exports.read = exports.streamToExistingFile = exports.append = exports.write = exports.getFolderContentSize = exports.getFileSize = exports.existsFolderSync = exports.createEmptyFile = exports.writeFromBuf = exports.readToBuf = exports.ftruncate = exports.truncate = exports.rename = exports.unlink = exports.rmdir = exports.readdir = exports.fstat = exports.stat = exports.lstat = exports.readlink = exports.symlink = exports.close = exports.open = exports.mkdir = exports.writeFile = exports.readFile = exports.Stats = void 0;
|
|
20
20
|
const fs = require("fs");
|
|
21
21
|
const fs_1 = require("fs");
|
|
22
22
|
const file_1 = require("./exceptions/file");
|
|
@@ -27,7 +27,7 @@ const path_1 = require("path");
|
|
|
27
27
|
var fs_2 = require("fs");
|
|
28
28
|
Object.defineProperty(exports, "Stats", { enumerable: true, get: function () { return fs_2.Stats; } });
|
|
29
29
|
function makeFileExceptionFromNodes(nodeExc) {
|
|
30
|
-
return file_1.makeFileException(nodeExc.code, nodeExc.path);
|
|
30
|
+
return (0, file_1.makeFileException)(nodeExc.code, nodeExc.path);
|
|
31
31
|
}
|
|
32
32
|
function readFile(path, options) {
|
|
33
33
|
return new Promise((resolve, reject) => {
|
|
@@ -292,7 +292,7 @@ async function readToBuf(fd, pos, buf) {
|
|
|
292
292
|
while (bytesRead < buf.length) {
|
|
293
293
|
const bNum = await readOrig(fd, buf, bytesRead, buf.length - bytesRead, pos);
|
|
294
294
|
if (bNum === 0) {
|
|
295
|
-
throw file_1.makeFileException(file_1.Code.endOfFile, '<file descriptor>');
|
|
295
|
+
throw (0, file_1.makeFileException)(file_1.Code.endOfFile, '<file descriptor>');
|
|
296
296
|
}
|
|
297
297
|
bytesRead += bNum;
|
|
298
298
|
pos += bNum;
|
|
@@ -358,11 +358,11 @@ exports.createEmptyFile = createEmptyFile;
|
|
|
358
358
|
*/
|
|
359
359
|
function existsFolderSync(path) {
|
|
360
360
|
try {
|
|
361
|
-
if (fs_1.statSync(path).isDirectory()) {
|
|
361
|
+
if ((0, fs_1.statSync)(path).isDirectory()) {
|
|
362
362
|
return true;
|
|
363
363
|
}
|
|
364
364
|
else {
|
|
365
|
-
throw file_1.makeFileException(file_1.Code.notDirectory, path);
|
|
365
|
+
throw (0, file_1.makeFileException)(file_1.Code.notDirectory, path);
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
catch (e) {
|
|
@@ -473,7 +473,7 @@ async function streamToExistingFile(filePath, pos, len, src, bufSize) {
|
|
|
473
473
|
let bytesWritten = 0;
|
|
474
474
|
let bytesRead = 0;
|
|
475
475
|
const buf = new common_1.BytesFIFOBuffer();
|
|
476
|
-
let deferred = processes_1.defer();
|
|
476
|
+
let deferred = (0, processes_1.defer)();
|
|
477
477
|
let doneReading = false;
|
|
478
478
|
const complete = (err) => {
|
|
479
479
|
if (!deferred) {
|
|
@@ -510,7 +510,7 @@ async function streamToExistingFile(filePath, pos, len, src, bufSize) {
|
|
|
510
510
|
if (!bytesToWrite) {
|
|
511
511
|
return;
|
|
512
512
|
}
|
|
513
|
-
await writeToExistingFile(filePath, pos, buffer_utils_1.toBuffer(bytesToWrite));
|
|
513
|
+
await writeToExistingFile(filePath, pos, (0, buffer_utils_1.toBuffer)(bytesToWrite));
|
|
514
514
|
pos += bytesToWrite.length;
|
|
515
515
|
bytesWritten += bytesToWrite.length;
|
|
516
516
|
if (bytesWritten < len) {
|
|
@@ -527,7 +527,7 @@ async function streamToExistingFile(filePath, pos, len, src, bufSize) {
|
|
|
527
527
|
if (doneReading) {
|
|
528
528
|
return;
|
|
529
529
|
}
|
|
530
|
-
complete(file_1.makeFileException(file_1.Code.endOfFile, '<input stream>'));
|
|
530
|
+
complete((0, file_1.makeFileException)(file_1.Code.endOfFile, '<input stream>'));
|
|
531
531
|
});
|
|
532
532
|
src.on('error', (err) => {
|
|
533
533
|
complete(err);
|
|
@@ -555,7 +555,7 @@ async function read(fd, pos, buf) {
|
|
|
555
555
|
while (bytesRead < buf.length) {
|
|
556
556
|
const bNum = await readOrig(fd, buf, bytesRead, buf.length - bytesRead, pos);
|
|
557
557
|
if (bNum === 0) {
|
|
558
|
-
throw file_1.makeFileException(file_1.Code.endOfFile, '<file descriptor>');
|
|
558
|
+
throw (0, file_1.makeFileException)(file_1.Code.endOfFile, '<file descriptor>');
|
|
559
559
|
}
|
|
560
560
|
bytesRead += bNum;
|
|
561
561
|
pos += bNum;
|
|
@@ -670,8 +670,8 @@ exports.streamFromFile = streamFromFile;
|
|
|
670
670
|
*/
|
|
671
671
|
function copyFile(src, dst, overwrite = false, dstMode = '660') {
|
|
672
672
|
return new Promise((resolve, reject) => {
|
|
673
|
-
const srcStream = fs_1.createReadStream(src);
|
|
674
|
-
const dstStream = fs_1.createWriteStream(dst, {
|
|
673
|
+
const srcStream = (0, fs_1.createReadStream)(src);
|
|
674
|
+
const dstStream = (0, fs_1.createWriteStream)(dst, {
|
|
675
675
|
mode: parseInt(dstMode, 8),
|
|
676
676
|
flags: (overwrite ? 'w' : 'wx')
|
|
677
677
|
});
|
|
@@ -713,8 +713,8 @@ async function copyTree(src, dst, fileOverwrite = false) {
|
|
|
713
713
|
const srcFNames = await readdir(src);
|
|
714
714
|
const cpTasks = [];
|
|
715
715
|
for (const fName of srcFNames) {
|
|
716
|
-
const srcPath = path_1.join(src, fName);
|
|
717
|
-
const dstPath = path_1.join(dst, fName);
|
|
716
|
+
const srcPath = (0, path_1.join)(src, fName);
|
|
717
|
+
const dstPath = (0, path_1.join)(dst, fName);
|
|
718
718
|
const task = stat(srcPath)
|
|
719
719
|
.then((stats) => {
|
|
720
720
|
if (stats.isFile()) {
|
|
@@ -19,12 +19,12 @@ exports.sourceFromArray = exports.BytesFIFOBuffer = exports.wrapByteSinkImplemen
|
|
|
19
19
|
const binding_1 = require("../binding");
|
|
20
20
|
function wrapByteSourceImplementation(src) {
|
|
21
21
|
const wrap = {
|
|
22
|
-
read: binding_1.bind(src, src.read),
|
|
23
|
-
getSize: binding_1.bind(src, src.getSize)
|
|
22
|
+
read: (0, binding_1.bind)(src, src.read),
|
|
23
|
+
getSize: (0, binding_1.bind)(src, src.getSize)
|
|
24
24
|
};
|
|
25
25
|
if (src.seek) {
|
|
26
|
-
wrap.seek = binding_1.bind(src, src.seek);
|
|
27
|
-
wrap.getPosition = binding_1.bind(src, src.getPosition);
|
|
26
|
+
wrap.seek = (0, binding_1.bind)(src, src.seek);
|
|
27
|
+
wrap.getPosition = (0, binding_1.bind)(src, src.getPosition);
|
|
28
28
|
}
|
|
29
29
|
wrap.$_transferrable_type_id_$ = 'ByteSource';
|
|
30
30
|
return wrap;
|
|
@@ -32,13 +32,13 @@ function wrapByteSourceImplementation(src) {
|
|
|
32
32
|
exports.wrapByteSourceImplementation = wrapByteSourceImplementation;
|
|
33
33
|
function wrapByteSinkImplementation(sink) {
|
|
34
34
|
const wrap = {
|
|
35
|
-
setSize: binding_1.bind(sink, sink.setSize),
|
|
36
|
-
write: binding_1.bind(sink, sink.write),
|
|
37
|
-
getSize: binding_1.bind(sink, sink.getSize)
|
|
35
|
+
setSize: (0, binding_1.bind)(sink, sink.setSize),
|
|
36
|
+
write: (0, binding_1.bind)(sink, sink.write),
|
|
37
|
+
getSize: (0, binding_1.bind)(sink, sink.getSize)
|
|
38
38
|
};
|
|
39
39
|
if (sink.seek) {
|
|
40
|
-
wrap.seek = binding_1.bind(sink, sink.seek);
|
|
41
|
-
wrap.getPosition = binding_1.bind(sink, sink.getPosition);
|
|
40
|
+
wrap.seek = (0, binding_1.bind)(sink, sink.seek);
|
|
41
|
+
wrap.getPosition = (0, binding_1.bind)(sink, sink.getPosition);
|
|
42
42
|
}
|
|
43
43
|
wrap.$_transferrable_type_id_$ = 'ByteSink';
|
|
44
44
|
return wrap;
|
|
@@ -159,8 +159,8 @@ class RequestingSide extends MessageHandler {
|
|
|
159
159
|
wrap() {
|
|
160
160
|
const w = {
|
|
161
161
|
makeRequest: this.makeRequest.bind(this),
|
|
162
|
-
close: binding_1.bind(this, this.close),
|
|
163
|
-
on: binding_1.bind(this, this.on)
|
|
162
|
+
close: (0, binding_1.bind)(this, this.close),
|
|
163
|
+
on: (0, binding_1.bind)(this, this.on)
|
|
164
164
|
};
|
|
165
165
|
return Object.freeze(w);
|
|
166
166
|
}
|
|
@@ -261,10 +261,10 @@ class ReplyingSide extends MessageHandler {
|
|
|
261
261
|
}
|
|
262
262
|
wrap() {
|
|
263
263
|
const w = {
|
|
264
|
-
addHandler: binding_1.bind(this, this.addHandler),
|
|
265
|
-
notifyOfProgressOnRequest: binding_1.bind(this, this.notifyOfProgressOnRequest),
|
|
266
|
-
close: binding_1.bind(this, this.close),
|
|
267
|
-
on: binding_1.bind(this, this.on)
|
|
264
|
+
addHandler: (0, binding_1.bind)(this, this.addHandler),
|
|
265
|
+
notifyOfProgressOnRequest: (0, binding_1.bind)(this, this.notifyOfProgressOnRequest),
|
|
266
|
+
close: (0, binding_1.bind)(this, this.close),
|
|
267
|
+
on: (0, binding_1.bind)(this, this.on)
|
|
268
268
|
};
|
|
269
269
|
return Object.freeze(w);
|
|
270
270
|
}
|
|
@@ -287,8 +287,8 @@ class EventsSendingSide extends ReplyingSide {
|
|
|
287
287
|
super(channel, comm);
|
|
288
288
|
this.subscriptionGroups = [];
|
|
289
289
|
this.subscribedEvents = new Set();
|
|
290
|
-
this.addHandler(ipc_api_1.events.subscribe.REQ_NAME, binding_1.bind(this, this.handleSubscribe));
|
|
291
|
-
this.addHandler(ipc_api_1.events.unsubscribe.REQ_NAME, binding_1.bind(this, this.handleUnsubscribe));
|
|
290
|
+
this.addHandler(ipc_api_1.events.subscribe.REQ_NAME, (0, binding_1.bind)(this, this.handleSubscribe));
|
|
291
|
+
this.addHandler(ipc_api_1.events.unsubscribe.REQ_NAME, (0, binding_1.bind)(this, this.handleUnsubscribe));
|
|
292
292
|
}
|
|
293
293
|
findGroup(eventChannel) {
|
|
294
294
|
for (const gr of this.subscriptionGroups) {
|
|
@@ -373,9 +373,9 @@ class EventsSendingSide extends ReplyingSide {
|
|
|
373
373
|
notifyOfProgressOnRequest: reqServer.notifyOfProgressOnRequest,
|
|
374
374
|
close: reqServer.close,
|
|
375
375
|
on: reqServer.on,
|
|
376
|
-
addEventGroup: binding_1.bind(this, this.addEventGroup),
|
|
377
|
-
sendEvent: binding_1.bind(this, this.sendEvent),
|
|
378
|
-
endEvent: binding_1.bind(this, this.endEvent)
|
|
376
|
+
addEventGroup: (0, binding_1.bind)(this, this.addEventGroup),
|
|
377
|
+
sendEvent: (0, binding_1.bind)(this, this.sendEvent),
|
|
378
|
+
endEvent: (0, binding_1.bind)(this, this.endEvent)
|
|
379
379
|
};
|
|
380
380
|
return Object.freeze(w);
|
|
381
381
|
}
|
|
@@ -536,7 +536,7 @@ class EventsReceivingSide extends RequestingSide {
|
|
|
536
536
|
makeRequest: reqClient.makeRequest,
|
|
537
537
|
close: reqClient.close,
|
|
538
538
|
on: reqClient.on,
|
|
539
|
-
subscribe: binding_1.bind(this, this.subscribe)
|
|
539
|
+
subscribe: (0, binding_1.bind)(this, this.subscribe)
|
|
540
540
|
};
|
|
541
541
|
return Object.freeze(w);
|
|
542
542
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
16
|
this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.makeSubscriber = exports.makeJsonCommPoint = void 0;
|
|
18
|
+
exports.makeSubscriber = exports.makeJsonCommPoint = exports.makeEventfulServer = void 0;
|
|
19
19
|
const generic_ipc_1 = require("./generic-ipc");
|
|
20
20
|
var generic_ipc_2 = require("./generic-ipc");
|
|
21
21
|
Object.defineProperty(exports, "makeEventfulServer", { enumerable: true, get: function () { return generic_ipc_2.makeEventfulServer; } });
|
|
@@ -93,7 +93,7 @@ function onError(ws, observers) {
|
|
|
93
93
|
}
|
|
94
94
|
function makeSubscriber(ws, ipcChannel) {
|
|
95
95
|
const comm = makeJsonCommPoint(ws);
|
|
96
|
-
return generic_ipc_1.makeSubscribingClient(ipcChannel, comm);
|
|
96
|
+
return (0, generic_ipc_1.makeSubscribingClient)(ipcChannel, comm);
|
|
97
97
|
}
|
|
98
98
|
exports.makeSubscriber = makeSubscriber;
|
|
99
99
|
Object.freeze(exports);
|
|
@@ -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
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
/**
|