@andersbakken/fisk 4.0.27 → 4.0.29
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/builder/VM_runtime.js +254 -238
- package/builder/fisk-builder.js +7272 -7041
- package/daemon/fisk-daemon.js +363 -349
- package/monitor/fisk-monitor.js +21 -17
- package/package.json +9 -8
- package/scheduler/fisk-scheduler.js +446 -173
package/daemon/fisk-daemon.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var require$$
|
|
4
|
+
var require$$1$2 = require('fs');
|
|
5
5
|
var require$$1$1 = require('path');
|
|
6
6
|
var require$$1 = require('module');
|
|
7
7
|
var os$1 = require('os');
|
|
8
8
|
var EventEmitter = require('events');
|
|
9
|
-
var require$$0
|
|
10
|
-
var require$$0$
|
|
9
|
+
var require$$0 = require('constants');
|
|
10
|
+
var require$$0$1 = require('stream');
|
|
11
11
|
var require$$4 = require('util');
|
|
12
12
|
var assert$1 = require('assert');
|
|
13
13
|
var net = require('net');
|
|
14
14
|
|
|
15
15
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
16
|
|
|
17
|
-
var require$$
|
|
17
|
+
var require$$1__default$2 = /*#__PURE__*/_interopDefaultLegacy(require$$1$2);
|
|
18
18
|
var require$$1__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$1$1);
|
|
19
19
|
var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
|
|
20
20
|
var os__default = /*#__PURE__*/_interopDefaultLegacy(os$1);
|
|
21
21
|
var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
|
|
22
|
+
var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
|
|
22
23
|
var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
|
|
23
|
-
var require$$0__default$2 = /*#__PURE__*/_interopDefaultLegacy(require$$0$2);
|
|
24
24
|
var require$$4__default = /*#__PURE__*/_interopDefaultLegacy(require$$4);
|
|
25
25
|
var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert$1);
|
|
26
26
|
var net__default = /*#__PURE__*/_interopDefaultLegacy(net);
|
|
@@ -191,273 +191,269 @@ var xdgBasedir = {};
|
|
|
191
191
|
}
|
|
192
192
|
} (xdgBasedir));
|
|
193
193
|
|
|
194
|
-
|
|
195
|
-
var
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
hasRequiredMinimist = 1;
|
|
200
|
-
minimist = function (args, opts) {
|
|
201
|
-
if (!opts) opts = {};
|
|
202
|
-
|
|
203
|
-
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
204
|
-
|
|
205
|
-
if (typeof opts['unknown'] === 'function') {
|
|
206
|
-
flags.unknownFn = opts['unknown'];
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
210
|
-
flags.allBools = true;
|
|
211
|
-
} else {
|
|
212
|
-
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
213
|
-
flags.bools[key] = true;
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
var aliases = {};
|
|
218
|
-
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
219
|
-
aliases[key] = [].concat(opts.alias[key]);
|
|
220
|
-
aliases[key].forEach(function (x) {
|
|
221
|
-
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
222
|
-
return x !== y;
|
|
223
|
-
}));
|
|
224
|
-
});
|
|
225
|
-
});
|
|
194
|
+
function hasKey(obj, keys) {
|
|
195
|
+
var o = obj;
|
|
196
|
+
keys.slice(0, -1).forEach(function (key) {
|
|
197
|
+
o = o[key] || {};
|
|
198
|
+
});
|
|
226
199
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
function argDefined(key, arg) {
|
|
249
|
-
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
250
|
-
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function setArg (key, val, arg) {
|
|
254
|
-
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
255
|
-
if (flags.unknownFn(arg) === false) return;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
var value = !flags.strings[key] && isNumber(val)
|
|
259
|
-
? Number(val) : val
|
|
260
|
-
;
|
|
261
|
-
setKey(argv, key.split('.'), value);
|
|
262
|
-
|
|
263
|
-
(aliases[key] || []).forEach(function (x) {
|
|
264
|
-
setKey(argv, x.split('.'), value);
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
function setKey (obj, keys, value) {
|
|
269
|
-
var o = obj;
|
|
270
|
-
for (var i = 0; i < keys.length-1; i++) {
|
|
271
|
-
var key = keys[i];
|
|
272
|
-
if (isConstructorOrProto(o, key)) return;
|
|
273
|
-
if (o[key] === undefined) o[key] = {};
|
|
274
|
-
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
275
|
-
|| o[key] === String.prototype) o[key] = {};
|
|
276
|
-
if (o[key] === Array.prototype) o[key] = [];
|
|
277
|
-
o = o[key];
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
var key = keys[keys.length - 1];
|
|
281
|
-
if (isConstructorOrProto(o, key)) return;
|
|
282
|
-
if (o === Object.prototype || o === Number.prototype
|
|
283
|
-
|| o === String.prototype) o = {};
|
|
284
|
-
if (o === Array.prototype) o = [];
|
|
285
|
-
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
286
|
-
o[key] = value;
|
|
287
|
-
}
|
|
288
|
-
else if (Array.isArray(o[key])) {
|
|
289
|
-
o[key].push(value);
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
o[key] = [ o[key], value ];
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
function aliasIsBoolean(key) {
|
|
297
|
-
return aliases[key].some(function (x) {
|
|
298
|
-
return flags.bools[x];
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
for (var i = 0; i < args.length; i++) {
|
|
303
|
-
var arg = args[i];
|
|
304
|
-
|
|
305
|
-
if (/^--.+=/.test(arg)) {
|
|
306
|
-
// Using [\s\S] instead of . because js doesn't support the
|
|
307
|
-
// 'dotall' regex modifier. See:
|
|
308
|
-
// http://stackoverflow.com/a/1068308/13216
|
|
309
|
-
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
310
|
-
var key = m[1];
|
|
311
|
-
var value = m[2];
|
|
312
|
-
if (flags.bools[key]) {
|
|
313
|
-
value = value !== 'false';
|
|
314
|
-
}
|
|
315
|
-
setArg(key, value, arg);
|
|
316
|
-
}
|
|
317
|
-
else if (/^--no-.+/.test(arg)) {
|
|
318
|
-
var key = arg.match(/^--no-(.+)/)[1];
|
|
319
|
-
setArg(key, false, arg);
|
|
320
|
-
}
|
|
321
|
-
else if (/^--.+/.test(arg)) {
|
|
322
|
-
var key = arg.match(/^--(.+)/)[1];
|
|
323
|
-
var next = args[i + 1];
|
|
324
|
-
if (next !== undefined && !/^-/.test(next)
|
|
325
|
-
&& !flags.bools[key]
|
|
326
|
-
&& !flags.allBools
|
|
327
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
328
|
-
setArg(key, next, arg);
|
|
329
|
-
i++;
|
|
330
|
-
}
|
|
331
|
-
else if (/^(true|false)$/.test(next)) {
|
|
332
|
-
setArg(key, next === 'true', arg);
|
|
333
|
-
i++;
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
else if (/^-[^-]+/.test(arg)) {
|
|
340
|
-
var letters = arg.slice(1,-1).split('');
|
|
341
|
-
|
|
342
|
-
var broken = false;
|
|
343
|
-
for (var j = 0; j < letters.length; j++) {
|
|
344
|
-
var next = arg.slice(j+2);
|
|
345
|
-
|
|
346
|
-
if (next === '-') {
|
|
347
|
-
setArg(letters[j], next, arg);
|
|
348
|
-
continue;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
352
|
-
setArg(letters[j], next.split('=')[1], arg);
|
|
353
|
-
broken = true;
|
|
354
|
-
break;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
if (/[A-Za-z]/.test(letters[j])
|
|
358
|
-
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
359
|
-
setArg(letters[j], next, arg);
|
|
360
|
-
broken = true;
|
|
361
|
-
break;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
365
|
-
setArg(letters[j], arg.slice(j+2), arg);
|
|
366
|
-
broken = true;
|
|
367
|
-
break;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
var key = arg.slice(-1)[0];
|
|
375
|
-
if (!broken && key !== '-') {
|
|
376
|
-
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
377
|
-
&& !flags.bools[key]
|
|
378
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
379
|
-
setArg(key, args[i+1], arg);
|
|
380
|
-
i++;
|
|
381
|
-
}
|
|
382
|
-
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
383
|
-
setArg(key, args[i+1] === 'true', arg);
|
|
384
|
-
i++;
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
else {
|
|
392
|
-
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
393
|
-
argv._.push(
|
|
394
|
-
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
395
|
-
);
|
|
396
|
-
}
|
|
397
|
-
if (opts.stopEarly) {
|
|
398
|
-
argv._.push.apply(argv._, args.slice(i + 1));
|
|
399
|
-
break;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
Object.keys(defaults).forEach(function (key) {
|
|
405
|
-
if (!hasKey(argv, key.split('.'))) {
|
|
406
|
-
setKey(argv, key.split('.'), defaults[key]);
|
|
407
|
-
|
|
408
|
-
(aliases[key] || []).forEach(function (x) {
|
|
409
|
-
setKey(argv, x.split('.'), defaults[key]);
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
if (opts['--']) {
|
|
415
|
-
argv['--'] = new Array();
|
|
416
|
-
notFlags.forEach(function(key) {
|
|
417
|
-
argv['--'].push(key);
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
else {
|
|
421
|
-
notFlags.forEach(function(key) {
|
|
422
|
-
argv._.push(key);
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
return argv;
|
|
200
|
+
var key = keys[keys.length - 1];
|
|
201
|
+
return key in o;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function isNumber(x) {
|
|
205
|
+
if (typeof x === 'number') { return true; }
|
|
206
|
+
if ((/^0x[0-9a-f]+$/i).test(x)) { return true; }
|
|
207
|
+
return (/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/).test(x);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function isConstructorOrProto(obj, key) {
|
|
211
|
+
return (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
var minimist = function (args, opts) {
|
|
215
|
+
if (!opts) { opts = {}; }
|
|
216
|
+
|
|
217
|
+
var flags = {
|
|
218
|
+
bools: {},
|
|
219
|
+
strings: {},
|
|
220
|
+
unknownFn: null,
|
|
427
221
|
};
|
|
428
222
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
o = (o[key] || {});
|
|
433
|
-
});
|
|
223
|
+
if (typeof opts.unknown === 'function') {
|
|
224
|
+
flags.unknownFn = opts.unknown;
|
|
225
|
+
}
|
|
434
226
|
|
|
435
|
-
|
|
436
|
-
|
|
227
|
+
if (typeof opts.boolean === 'boolean' && opts.boolean) {
|
|
228
|
+
flags.allBools = true;
|
|
229
|
+
} else {
|
|
230
|
+
[].concat(opts.boolean).filter(Boolean).forEach(function (key) {
|
|
231
|
+
flags.bools[key] = true;
|
|
232
|
+
});
|
|
437
233
|
}
|
|
438
234
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
235
|
+
var aliases = {};
|
|
236
|
+
|
|
237
|
+
function aliasIsBoolean(key) {
|
|
238
|
+
return aliases[key].some(function (x) {
|
|
239
|
+
return flags.bools[x];
|
|
240
|
+
});
|
|
443
241
|
}
|
|
444
242
|
|
|
243
|
+
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
244
|
+
aliases[key] = [].concat(opts.alias[key]);
|
|
245
|
+
aliases[key].forEach(function (x) {
|
|
246
|
+
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
247
|
+
return x !== y;
|
|
248
|
+
}));
|
|
249
|
+
});
|
|
250
|
+
});
|
|
445
251
|
|
|
446
|
-
function
|
|
447
|
-
|
|
252
|
+
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
253
|
+
flags.strings[key] = true;
|
|
254
|
+
if (aliases[key]) {
|
|
255
|
+
[].concat(aliases[key]).forEach(function (k) {
|
|
256
|
+
flags.strings[k] = true;
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
var defaults = opts.default || {};
|
|
262
|
+
|
|
263
|
+
var argv = { _: [] };
|
|
264
|
+
|
|
265
|
+
function argDefined(key, arg) {
|
|
266
|
+
return (flags.allBools && (/^--[^=]+$/).test(arg))
|
|
267
|
+
|| flags.strings[key]
|
|
268
|
+
|| flags.bools[key]
|
|
269
|
+
|| aliases[key];
|
|
448
270
|
}
|
|
449
|
-
return minimist;
|
|
450
|
-
}
|
|
451
271
|
|
|
452
|
-
|
|
272
|
+
function setKey(obj, keys, value) {
|
|
273
|
+
var o = obj;
|
|
274
|
+
for (var i = 0; i < keys.length - 1; i++) {
|
|
275
|
+
var key = keys[i];
|
|
276
|
+
if (isConstructorOrProto(o, key)) { return; }
|
|
277
|
+
if (o[key] === undefined) { o[key] = {}; }
|
|
278
|
+
if (
|
|
279
|
+
o[key] === Object.prototype
|
|
280
|
+
|| o[key] === Number.prototype
|
|
281
|
+
|| o[key] === String.prototype
|
|
282
|
+
) {
|
|
283
|
+
o[key] = {};
|
|
284
|
+
}
|
|
285
|
+
if (o[key] === Array.prototype) { o[key] = []; }
|
|
286
|
+
o = o[key];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
var lastKey = keys[keys.length - 1];
|
|
290
|
+
if (isConstructorOrProto(o, lastKey)) { return; }
|
|
291
|
+
if (
|
|
292
|
+
o === Object.prototype
|
|
293
|
+
|| o === Number.prototype
|
|
294
|
+
|| o === String.prototype
|
|
295
|
+
) {
|
|
296
|
+
o = {};
|
|
297
|
+
}
|
|
298
|
+
if (o === Array.prototype) { o = []; }
|
|
299
|
+
if (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {
|
|
300
|
+
o[lastKey] = value;
|
|
301
|
+
} else if (Array.isArray(o[lastKey])) {
|
|
302
|
+
o[lastKey].push(value);
|
|
303
|
+
} else {
|
|
304
|
+
o[lastKey] = [o[lastKey], value];
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function setArg(key, val, arg) {
|
|
309
|
+
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
310
|
+
if (flags.unknownFn(arg) === false) { return; }
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
var value = !flags.strings[key] && isNumber(val)
|
|
314
|
+
? Number(val)
|
|
315
|
+
: val;
|
|
316
|
+
setKey(argv, key.split('.'), value);
|
|
317
|
+
|
|
318
|
+
(aliases[key] || []).forEach(function (x) {
|
|
319
|
+
setKey(argv, x.split('.'), value);
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
Object.keys(flags.bools).forEach(function (key) {
|
|
324
|
+
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
var notFlags = [];
|
|
328
|
+
|
|
329
|
+
if (args.indexOf('--') !== -1) {
|
|
330
|
+
notFlags = args.slice(args.indexOf('--') + 1);
|
|
331
|
+
args = args.slice(0, args.indexOf('--'));
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
for (var i = 0; i < args.length; i++) {
|
|
335
|
+
var arg = args[i];
|
|
336
|
+
var key;
|
|
337
|
+
var next;
|
|
338
|
+
|
|
339
|
+
if ((/^--.+=/).test(arg)) {
|
|
340
|
+
// Using [\s\S] instead of . because js doesn't support the
|
|
341
|
+
// 'dotall' regex modifier. See:
|
|
342
|
+
// http://stackoverflow.com/a/1068308/13216
|
|
343
|
+
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
344
|
+
key = m[1];
|
|
345
|
+
var value = m[2];
|
|
346
|
+
if (flags.bools[key]) {
|
|
347
|
+
value = value !== 'false';
|
|
348
|
+
}
|
|
349
|
+
setArg(key, value, arg);
|
|
350
|
+
} else if ((/^--no-.+/).test(arg)) {
|
|
351
|
+
key = arg.match(/^--no-(.+)/)[1];
|
|
352
|
+
setArg(key, false, arg);
|
|
353
|
+
} else if ((/^--.+/).test(arg)) {
|
|
354
|
+
key = arg.match(/^--(.+)/)[1];
|
|
355
|
+
next = args[i + 1];
|
|
356
|
+
if (
|
|
357
|
+
next !== undefined
|
|
358
|
+
&& !(/^(-|--)[^-]/).test(next)
|
|
359
|
+
&& !flags.bools[key]
|
|
360
|
+
&& !flags.allBools
|
|
361
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)
|
|
362
|
+
) {
|
|
363
|
+
setArg(key, next, arg);
|
|
364
|
+
i += 1;
|
|
365
|
+
} else if ((/^(true|false)$/).test(next)) {
|
|
366
|
+
setArg(key, next === 'true', arg);
|
|
367
|
+
i += 1;
|
|
368
|
+
} else {
|
|
369
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
370
|
+
}
|
|
371
|
+
} else if ((/^-[^-]+/).test(arg)) {
|
|
372
|
+
var letters = arg.slice(1, -1).split('');
|
|
373
|
+
|
|
374
|
+
var broken = false;
|
|
375
|
+
for (var j = 0; j < letters.length; j++) {
|
|
376
|
+
next = arg.slice(j + 2);
|
|
377
|
+
|
|
378
|
+
if (next === '-') {
|
|
379
|
+
setArg(letters[j], next, arg);
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {
|
|
384
|
+
setArg(letters[j], next.slice(1), arg);
|
|
385
|
+
broken = true;
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
if (
|
|
390
|
+
(/[A-Za-z]/).test(letters[j])
|
|
391
|
+
&& (/-?\d+(\.\d*)?(e-?\d+)?$/).test(next)
|
|
392
|
+
) {
|
|
393
|
+
setArg(letters[j], next, arg);
|
|
394
|
+
broken = true;
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
if (letters[j + 1] && letters[j + 1].match(/\W/)) {
|
|
399
|
+
setArg(letters[j], arg.slice(j + 2), arg);
|
|
400
|
+
broken = true;
|
|
401
|
+
break;
|
|
402
|
+
} else {
|
|
403
|
+
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
453
406
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
407
|
+
key = arg.slice(-1)[0];
|
|
408
|
+
if (!broken && key !== '-') {
|
|
409
|
+
if (
|
|
410
|
+
args[i + 1]
|
|
411
|
+
&& !(/^(-|--)[^-]/).test(args[i + 1])
|
|
412
|
+
&& !flags.bools[key]
|
|
413
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)
|
|
414
|
+
) {
|
|
415
|
+
setArg(key, args[i + 1], arg);
|
|
416
|
+
i += 1;
|
|
417
|
+
} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {
|
|
418
|
+
setArg(key, args[i + 1] === 'true', arg);
|
|
419
|
+
i += 1;
|
|
420
|
+
} else {
|
|
421
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
} else {
|
|
425
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
426
|
+
argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));
|
|
427
|
+
}
|
|
428
|
+
if (opts.stopEarly) {
|
|
429
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
458
434
|
|
|
459
|
-
function
|
|
460
|
-
{
|
|
435
|
+
Object.keys(defaults).forEach(function (k) {
|
|
436
|
+
if (!hasKey(argv, k.split('.'))) {
|
|
437
|
+
setKey(argv, k.split('.'), defaults[k]);
|
|
438
|
+
|
|
439
|
+
(aliases[k] || []).forEach(function (x) {
|
|
440
|
+
setKey(argv, x.split('.'), defaults[k]);
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
if (opts['--']) {
|
|
446
|
+
argv['--'] = notFlags.slice();
|
|
447
|
+
} else {
|
|
448
|
+
notFlags.forEach(function (k) {
|
|
449
|
+
argv._.push(k);
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return argv;
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
function split(data) {
|
|
461
457
|
const pre = data.split("\n");
|
|
462
458
|
// rejoin with lines that starts with a whitespace
|
|
463
459
|
const out = [];
|
|
@@ -476,7 +472,8 @@ function split(data)
|
|
|
476
472
|
--idx;
|
|
477
473
|
if (idx < cur.length - 1)
|
|
478
474
|
cur = cur.substr(0, idx + 1);
|
|
479
|
-
}
|
|
475
|
+
}
|
|
476
|
+
else if (cur.length > 0) {
|
|
480
477
|
out.push(cur.trim());
|
|
481
478
|
cur = line.trim();
|
|
482
479
|
}
|
|
@@ -486,9 +483,7 @@ function split(data)
|
|
|
486
483
|
}
|
|
487
484
|
return out;
|
|
488
485
|
}
|
|
489
|
-
|
|
490
|
-
function realValue(v)
|
|
491
|
-
{
|
|
486
|
+
function realValue(v) {
|
|
492
487
|
if (typeof v !== "string")
|
|
493
488
|
return v;
|
|
494
489
|
if (/^[-0-9.]+$/.exec(v)) {
|
|
@@ -497,119 +492,130 @@ function realValue(v)
|
|
|
497
492
|
return vf;
|
|
498
493
|
}
|
|
499
494
|
switch (v) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
495
|
+
case "true":
|
|
496
|
+
return true;
|
|
497
|
+
case "false":
|
|
498
|
+
return false;
|
|
504
499
|
}
|
|
505
500
|
return v;
|
|
506
501
|
}
|
|
507
|
-
|
|
508
|
-
|
|
502
|
+
class Engine {
|
|
503
|
+
argv;
|
|
504
|
+
prefix;
|
|
505
|
+
additionalFiles;
|
|
506
|
+
applicationPath;
|
|
507
|
+
debug;
|
|
508
|
+
options;
|
|
509
|
+
configDirs;
|
|
509
510
|
constructor(options, argv) {
|
|
510
511
|
this.argv = Object.assign({}, argv);
|
|
511
512
|
this.prefix = options.prefix;
|
|
512
513
|
this.additionalFiles = options.additionalFiles || [];
|
|
513
|
-
this.applicationPath = options.noApplicationPath ? "" :
|
|
514
|
-
this.debug = options.debug;
|
|
514
|
+
this.applicationPath = options.noApplicationPath ? "" : appRootPath.toString();
|
|
515
|
+
this.debug = options.debug ?? false;
|
|
515
516
|
this.options = {};
|
|
516
|
-
this.configDirs = this.argv["config-dir"] ||
|
|
517
|
+
this.configDirs = this.argv["config-dir"] || options.configDirs || xdgBasedir.configDirs;
|
|
517
518
|
this._read();
|
|
518
519
|
}
|
|
519
|
-
|
|
520
520
|
value(name) {
|
|
521
521
|
// foo-bar becomes FOO_BAR as env
|
|
522
|
-
if (name in this.argv)
|
|
522
|
+
if (name in this.argv) {
|
|
523
523
|
return this.argv[name];
|
|
524
|
+
}
|
|
524
525
|
const envname = (this.prefix + "_" + name).replace(/-/g, "_").toUpperCase();
|
|
525
|
-
if (envname in process.env)
|
|
526
|
+
if (envname in process.env) {
|
|
526
527
|
return realValue(process.env[envname]);
|
|
527
|
-
|
|
528
|
-
if (name in this.options)
|
|
528
|
+
}
|
|
529
|
+
if (name in this.options) {
|
|
529
530
|
return this.options[name];
|
|
531
|
+
}
|
|
530
532
|
return undefined;
|
|
531
533
|
}
|
|
532
|
-
|
|
534
|
+
string(name) {
|
|
535
|
+
const ret = this.value(name);
|
|
536
|
+
if (ret === undefined) {
|
|
537
|
+
return undefined;
|
|
538
|
+
}
|
|
539
|
+
return String(ret);
|
|
540
|
+
}
|
|
533
541
|
_homedir() {
|
|
534
542
|
let home = process.env.home;
|
|
535
543
|
if (home) {
|
|
536
|
-
return
|
|
544
|
+
return require$$1__default$1["default"].join(home, ".config");
|
|
537
545
|
}
|
|
538
546
|
return undefined;
|
|
539
547
|
}
|
|
540
|
-
|
|
541
548
|
_log(...args) {
|
|
542
549
|
if (this.debug)
|
|
543
550
|
console.log(...args);
|
|
544
551
|
}
|
|
545
|
-
|
|
546
552
|
_read() {
|
|
547
553
|
// if we have a config file passed, read it
|
|
548
|
-
let file = this.
|
|
554
|
+
let file = this.string("config-file");
|
|
549
555
|
if (!file && this.prefix)
|
|
550
556
|
file = this.prefix + ".conf";
|
|
551
557
|
if (!file)
|
|
552
558
|
return;
|
|
553
|
-
|
|
554
559
|
let data = [];
|
|
555
560
|
let seen = new Set();
|
|
556
|
-
const
|
|
557
|
-
const Success = 1;
|
|
558
|
-
const Seen = 2;
|
|
559
|
-
const read = file => {
|
|
561
|
+
const read = (file) => {
|
|
560
562
|
if (seen.has(file))
|
|
561
|
-
return Seen
|
|
563
|
+
return 2 /* OptionsReadResult.Seen */;
|
|
562
564
|
seen.add(file);
|
|
563
565
|
try {
|
|
564
|
-
const contents =
|
|
566
|
+
const contents = require$$1__default$2["default"].readFileSync(file, "utf8");
|
|
565
567
|
this._log(`Loaded ${contents.length} bytes from ${file}`);
|
|
566
|
-
|
|
567
568
|
if (contents) {
|
|
568
|
-
data.push({ file
|
|
569
|
-
return Success
|
|
569
|
+
data.push({ file, contents });
|
|
570
|
+
return 1 /* OptionsReadResult.Success */;
|
|
570
571
|
}
|
|
571
|
-
}
|
|
572
|
+
}
|
|
573
|
+
catch (e) {
|
|
572
574
|
this._log(`Failed to load ${file}`);
|
|
573
575
|
}
|
|
574
|
-
return Failed
|
|
576
|
+
return 0 /* OptionsReadResult.Failed */;
|
|
575
577
|
};
|
|
576
|
-
|
|
577
578
|
// console.log("about to read file", file, "additionalFiles", this.additionalFiles, "configDirs", this.configDirs, "applicationPath", this.applicationPath, "homedir", this._homedir());
|
|
578
|
-
if (
|
|
579
|
+
if (require$$1__default$1["default"].isAbsolute(file)) {
|
|
579
580
|
read(file);
|
|
580
|
-
}
|
|
581
|
+
}
|
|
582
|
+
else {
|
|
581
583
|
this.additionalFiles.forEach(file => {
|
|
582
|
-
if (
|
|
584
|
+
if (require$$1__default$1["default"].isAbsolute(file) && read(file) == 0 /* OptionsReadResult.Failed */) {
|
|
583
585
|
read(file + ".conf");
|
|
586
|
+
}
|
|
584
587
|
});
|
|
585
588
|
([this.applicationPath, this._homedir()].concat(this.configDirs)).forEach(root => {
|
|
586
589
|
// in case we appended with undefined
|
|
587
|
-
if (!root)
|
|
590
|
+
if (!root) {
|
|
588
591
|
return;
|
|
592
|
+
}
|
|
589
593
|
this.additionalFiles.forEach(additional => {
|
|
590
|
-
if (!
|
|
591
|
-
let file =
|
|
592
|
-
if (read(file) == Failed)
|
|
594
|
+
if (!require$$1__default$1["default"].isAbsolute(additional)) {
|
|
595
|
+
let file = require$$1__default$1["default"].join(root, additional);
|
|
596
|
+
if (read(file) == 0 /* OptionsReadResult.Failed */)
|
|
593
597
|
read(file + ".conf");
|
|
594
598
|
}
|
|
595
599
|
});
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
if (read(filePath) == Failed)
|
|
600
|
+
let filePath = require$$1__default$1["default"].join(root, file);
|
|
601
|
+
if (read(filePath) == 0 /* OptionsReadResult.Failed */) {
|
|
599
602
|
read(filePath + ".conf");
|
|
603
|
+
}
|
|
600
604
|
});
|
|
601
605
|
}
|
|
602
606
|
for (let i = data.length - 1; i >= 0; --i) {
|
|
603
607
|
let str = data[i].contents;
|
|
604
|
-
if (!str)
|
|
608
|
+
if (!str) {
|
|
605
609
|
continue;
|
|
610
|
+
}
|
|
606
611
|
try {
|
|
607
612
|
let obj = JSON.parse(str);
|
|
608
613
|
for (let key in obj) {
|
|
609
614
|
this._log(`Assigning ${JSON.stringify(obj[key])} over ${JSON.stringify(this.options[key])} for ${key} from ${data[i].file} (JSON)`);
|
|
610
615
|
this.options[key] = obj[key];
|
|
611
616
|
}
|
|
612
|
-
}
|
|
617
|
+
}
|
|
618
|
+
catch (err) {
|
|
613
619
|
const items = split(str);
|
|
614
620
|
for (let j = 0; j < items.length; ++j) {
|
|
615
621
|
const item = items[j].trim();
|
|
@@ -622,12 +628,12 @@ class Options {
|
|
|
622
628
|
this._log("Couldn't find =", item);
|
|
623
629
|
continue;
|
|
624
630
|
}
|
|
625
|
-
const key = item.
|
|
631
|
+
const key = item.substring(0, eq).trim();
|
|
626
632
|
if (!key.length) {
|
|
627
633
|
this._log("empty key", item);
|
|
628
634
|
continue;
|
|
629
635
|
}
|
|
630
|
-
const value = item.
|
|
636
|
+
const value = item.substring(eq + 1).trim();
|
|
631
637
|
this._log(`Assigning ${value} over ${this.options[key]} for ${key} from ${data[i].file} (INI)`);
|
|
632
638
|
this.options[key] = value;
|
|
633
639
|
}
|
|
@@ -635,37 +641,34 @@ class Options {
|
|
|
635
641
|
}
|
|
636
642
|
}
|
|
637
643
|
}
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
if (!
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
const val = data.options.value(name);
|
|
650
|
-
if (typeof val === "undefined")
|
|
644
|
+
function options (optionsOptions, argv) {
|
|
645
|
+
if (!argv) {
|
|
646
|
+
argv = minimist(process.argv.slice(2));
|
|
647
|
+
}
|
|
648
|
+
if (!(optionsOptions instanceof Object)) {
|
|
649
|
+
optionsOptions = { prefix: optionsOptions || "" };
|
|
650
|
+
}
|
|
651
|
+
const engine = new Engine(optionsOptions, argv);
|
|
652
|
+
function value(name, defaultValue) {
|
|
653
|
+
const val = engine.value(name);
|
|
654
|
+
if (val === undefined)
|
|
651
655
|
return defaultValue;
|
|
652
656
|
return val;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
const v = parseInt(data.options.value(name));
|
|
657
|
+
}
|
|
658
|
+
function float(name, defaultValue) {
|
|
659
|
+
const v = parseFloat(engine.string(name) || "");
|
|
657
660
|
if (typeof v === "number" && !isNaN(v))
|
|
658
661
|
return v;
|
|
659
662
|
return defaultValue;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
const v =
|
|
663
|
+
}
|
|
664
|
+
function int(name, defaultValue) {
|
|
665
|
+
const v = parseInt(engine.string(name) || "");
|
|
663
666
|
if (typeof v === "number" && !isNaN(v))
|
|
664
667
|
return v;
|
|
665
668
|
return defaultValue;
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
const opt =
|
|
669
|
+
}
|
|
670
|
+
function json(name, defaultValue) {
|
|
671
|
+
const opt = engine.value(name);
|
|
669
672
|
if (opt === undefined)
|
|
670
673
|
return defaultValue;
|
|
671
674
|
if (typeof opt !== "string")
|
|
@@ -673,12 +676,22 @@ var options = function(options, argv) {
|
|
|
673
676
|
try {
|
|
674
677
|
const json = JSON.parse(opt);
|
|
675
678
|
return json;
|
|
676
|
-
}
|
|
679
|
+
}
|
|
680
|
+
catch (e) {
|
|
677
681
|
}
|
|
678
682
|
return defaultValue;
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
|
|
683
|
+
}
|
|
684
|
+
function string(name, defaultValue) {
|
|
685
|
+
return engine.string(name) ?? defaultValue;
|
|
686
|
+
}
|
|
687
|
+
return Object.assign(value, {
|
|
688
|
+
prefix: optionsOptions.prefix,
|
|
689
|
+
float,
|
|
690
|
+
int,
|
|
691
|
+
json,
|
|
692
|
+
string,
|
|
693
|
+
});
|
|
694
|
+
}
|
|
682
695
|
|
|
683
696
|
const Constants = {
|
|
684
697
|
// client codes
|
|
@@ -714,6 +727,9 @@ class ClientBuffer {
|
|
|
714
727
|
this.buffers = [];
|
|
715
728
|
this.offset = 0;
|
|
716
729
|
}
|
|
730
|
+
get available() {
|
|
731
|
+
return this.buffers.reduce((total, buf) => total + buf.length, 0) - this.offset;
|
|
732
|
+
}
|
|
717
733
|
write(buffer) {
|
|
718
734
|
this.buffers.push(buffer);
|
|
719
735
|
// console.log("write", buffer.length, this.buffers.length, this.available);
|
|
@@ -768,17 +784,14 @@ class ClientBuffer {
|
|
|
768
784
|
}
|
|
769
785
|
return ret;
|
|
770
786
|
}
|
|
771
|
-
get available() {
|
|
772
|
-
return this.buffers.reduce((total, buf) => total + buf.length, 0) - this.offset;
|
|
773
|
-
}
|
|
774
787
|
}
|
|
775
788
|
|
|
776
789
|
class Compile extends EventEmitter__default["default"] {
|
|
777
|
-
constructor(
|
|
790
|
+
constructor(connection, id, option) {
|
|
778
791
|
super();
|
|
779
|
-
this.
|
|
792
|
+
this.connection = connection;
|
|
780
793
|
this.id = id;
|
|
781
|
-
this.
|
|
794
|
+
this.debug = option("debug");
|
|
782
795
|
this.buffer = new ClientBuffer();
|
|
783
796
|
this.messageLength = 0;
|
|
784
797
|
this.pid = undefined;
|
|
@@ -934,7 +947,7 @@ universalify.fromPromise = function (fn) {
|
|
|
934
947
|
}, 'name', { value: fn.name })
|
|
935
948
|
};
|
|
936
949
|
|
|
937
|
-
var constants = require$$0__default
|
|
950
|
+
var constants = require$$0__default["default"];
|
|
938
951
|
|
|
939
952
|
var origCwd = process.cwd;
|
|
940
953
|
var cwd = null;
|
|
@@ -1290,7 +1303,7 @@ function patch$1 (fs) {
|
|
|
1290
1303
|
}
|
|
1291
1304
|
}
|
|
1292
1305
|
|
|
1293
|
-
var Stream = require$$0__default$
|
|
1306
|
+
var Stream = require$$0__default$1["default"].Stream;
|
|
1294
1307
|
|
|
1295
1308
|
var legacyStreams = legacy$1;
|
|
1296
1309
|
|
|
@@ -1431,7 +1444,7 @@ function clone$1 (obj) {
|
|
|
1431
1444
|
return copy
|
|
1432
1445
|
}
|
|
1433
1446
|
|
|
1434
|
-
var fs$i = require$$
|
|
1447
|
+
var fs$i = require$$1__default$2["default"];
|
|
1435
1448
|
var polyfills = polyfills$1;
|
|
1436
1449
|
var legacy = legacyStreams;
|
|
1437
1450
|
var clone = clone_1;
|
|
@@ -3064,7 +3077,7 @@ var remove$2 = {
|
|
|
3064
3077
|
};
|
|
3065
3078
|
|
|
3066
3079
|
const u$7 = universalify.fromCallback;
|
|
3067
|
-
const fs$a = require$$
|
|
3080
|
+
const fs$a = require$$1__default$2["default"];
|
|
3068
3081
|
const path$9 = require$$1__default$1["default"];
|
|
3069
3082
|
const mkdir$5 = mkdirs_1;
|
|
3070
3083
|
const remove$1 = remove$2;
|
|
@@ -3434,7 +3447,7 @@ var _fs;
|
|
|
3434
3447
|
try {
|
|
3435
3448
|
_fs = gracefulFs;
|
|
3436
3449
|
} catch (_) {
|
|
3437
|
-
_fs = require$$
|
|
3450
|
+
_fs = require$$1__default$2["default"];
|
|
3438
3451
|
}
|
|
3439
3452
|
|
|
3440
3453
|
function readFile (file, options, callback) {
|
|
@@ -3892,7 +3905,7 @@ var output = {
|
|
|
3892
3905
|
|
|
3893
3906
|
// Export fs.promises as a getter property so that we don't trigger
|
|
3894
3907
|
// ExperimentalWarning before fs.promises is actually accessed.
|
|
3895
|
-
const fs = require$$
|
|
3908
|
+
const fs = require$$1__default$2["default"];
|
|
3896
3909
|
if (Object.getOwnPropertyDescriptor(fs, 'promises')) {
|
|
3897
3910
|
Object.defineProperty(module.exports, 'promises', {
|
|
3898
3911
|
get () { return fs.promises }
|
|
@@ -3905,6 +3918,7 @@ var fs = libExports;
|
|
|
3905
3918
|
class Server extends EventEmitter__default["default"] {
|
|
3906
3919
|
constructor(option, common) {
|
|
3907
3920
|
super();
|
|
3921
|
+
this.option = option;
|
|
3908
3922
|
this.debug = option("debug");
|
|
3909
3923
|
this.file = option("socket", require$$1__default$1["default"].join(common.cacheDir(), "socket"));
|
|
3910
3924
|
this.server = undefined;
|
|
@@ -3979,8 +3993,8 @@ class Slots extends EventEmitter__default["default"] {
|
|
|
3979
3993
|
super();
|
|
3980
3994
|
this.count = count;
|
|
3981
3995
|
this.name = name;
|
|
3982
|
-
this.used = new Map();
|
|
3983
3996
|
this.debug = debug;
|
|
3997
|
+
this.used = new Map();
|
|
3984
3998
|
this.pending = new Map();
|
|
3985
3999
|
if (this.debug) {
|
|
3986
4000
|
console.log("Slots created", this.toString());
|