@plugjs/tsrun 0.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/dist/tsrun.mjs ADDED
@@ -0,0 +1,1225 @@
1
+ #!/usr/bin/env node
2
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
+ }) : x)(function(x) {
5
+ if (typeof require !== "undefined")
6
+ return require.apply(this, arguments);
7
+ throw new Error('Dynamic require of "' + x + '" is not supported');
8
+ });
9
+
10
+ // src/tsrun.mts
11
+ import _os from "node:os";
12
+ import _path from "node:path";
13
+ import _repl from "node:repl";
14
+ import _module2 from "node:module";
15
+
16
+ // node_modules/yargs-parser/build/lib/index.js
17
+ import { format } from "util";
18
+ import { normalize, resolve } from "path";
19
+
20
+ // node_modules/yargs-parser/build/lib/string-utils.js
21
+ function camelCase(str) {
22
+ const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();
23
+ if (!isCamelCase) {
24
+ str = str.toLowerCase();
25
+ }
26
+ if (str.indexOf("-") === -1 && str.indexOf("_") === -1) {
27
+ return str;
28
+ } else {
29
+ let camelcase = "";
30
+ let nextChrUpper = false;
31
+ const leadingHyphens = str.match(/^-+/);
32
+ for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {
33
+ let chr = str.charAt(i);
34
+ if (nextChrUpper) {
35
+ nextChrUpper = false;
36
+ chr = chr.toUpperCase();
37
+ }
38
+ if (i !== 0 && (chr === "-" || chr === "_")) {
39
+ nextChrUpper = true;
40
+ } else if (chr !== "-" && chr !== "_") {
41
+ camelcase += chr;
42
+ }
43
+ }
44
+ return camelcase;
45
+ }
46
+ }
47
+ function decamelize(str, joinString) {
48
+ const lowercase = str.toLowerCase();
49
+ joinString = joinString || "-";
50
+ let notCamelcase = "";
51
+ for (let i = 0; i < str.length; i++) {
52
+ const chrLower = lowercase.charAt(i);
53
+ const chrString = str.charAt(i);
54
+ if (chrLower !== chrString && i > 0) {
55
+ notCamelcase += `${joinString}${lowercase.charAt(i)}`;
56
+ } else {
57
+ notCamelcase += chrString;
58
+ }
59
+ }
60
+ return notCamelcase;
61
+ }
62
+ function looksLikeNumber(x) {
63
+ if (x === null || x === void 0)
64
+ return false;
65
+ if (typeof x === "number")
66
+ return true;
67
+ if (/^0x[0-9a-f]+$/i.test(x))
68
+ return true;
69
+ if (/^0[^.]/.test(x))
70
+ return false;
71
+ return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
72
+ }
73
+
74
+ // node_modules/yargs-parser/build/lib/tokenize-arg-string.js
75
+ function tokenizeArgString(argString) {
76
+ if (Array.isArray(argString)) {
77
+ return argString.map((e) => typeof e !== "string" ? e + "" : e);
78
+ }
79
+ argString = argString.trim();
80
+ let i = 0;
81
+ let prevC = null;
82
+ let c = null;
83
+ let opening = null;
84
+ const args = [];
85
+ for (let ii = 0; ii < argString.length; ii++) {
86
+ prevC = c;
87
+ c = argString.charAt(ii);
88
+ if (c === " " && !opening) {
89
+ if (!(prevC === " ")) {
90
+ i++;
91
+ }
92
+ continue;
93
+ }
94
+ if (c === opening) {
95
+ opening = null;
96
+ } else if ((c === "'" || c === '"') && !opening) {
97
+ opening = c;
98
+ }
99
+ if (!args[i])
100
+ args[i] = "";
101
+ args[i] += c;
102
+ }
103
+ return args;
104
+ }
105
+
106
+ // node_modules/yargs-parser/build/lib/yargs-parser-types.js
107
+ var DefaultValuesForTypeKey;
108
+ (function(DefaultValuesForTypeKey2) {
109
+ DefaultValuesForTypeKey2["BOOLEAN"] = "boolean";
110
+ DefaultValuesForTypeKey2["STRING"] = "string";
111
+ DefaultValuesForTypeKey2["NUMBER"] = "number";
112
+ DefaultValuesForTypeKey2["ARRAY"] = "array";
113
+ })(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {}));
114
+
115
+ // node_modules/yargs-parser/build/lib/yargs-parser.js
116
+ var mixin;
117
+ var YargsParser = class {
118
+ constructor(_mixin) {
119
+ mixin = _mixin;
120
+ }
121
+ parse(argsInput, options) {
122
+ const opts = Object.assign({
123
+ alias: void 0,
124
+ array: void 0,
125
+ boolean: void 0,
126
+ config: void 0,
127
+ configObjects: void 0,
128
+ configuration: void 0,
129
+ coerce: void 0,
130
+ count: void 0,
131
+ default: void 0,
132
+ envPrefix: void 0,
133
+ narg: void 0,
134
+ normalize: void 0,
135
+ string: void 0,
136
+ number: void 0,
137
+ __: void 0,
138
+ key: void 0
139
+ }, options);
140
+ const args = tokenizeArgString(argsInput);
141
+ const inputIsString = typeof argsInput === "string";
142
+ const aliases = combineAliases(Object.assign(/* @__PURE__ */ Object.create(null), opts.alias));
143
+ const configuration = Object.assign({
144
+ "boolean-negation": true,
145
+ "camel-case-expansion": true,
146
+ "combine-arrays": false,
147
+ "dot-notation": true,
148
+ "duplicate-arguments-array": true,
149
+ "flatten-duplicate-arrays": true,
150
+ "greedy-arrays": true,
151
+ "halt-at-non-option": false,
152
+ "nargs-eats-options": false,
153
+ "negation-prefix": "no-",
154
+ "parse-numbers": true,
155
+ "parse-positional-numbers": true,
156
+ "populate--": false,
157
+ "set-placeholder-key": false,
158
+ "short-option-groups": true,
159
+ "strip-aliased": false,
160
+ "strip-dashed": false,
161
+ "unknown-options-as-args": false
162
+ }, opts.configuration);
163
+ const defaults = Object.assign(/* @__PURE__ */ Object.create(null), opts.default);
164
+ const configObjects = opts.configObjects || [];
165
+ const envPrefix = opts.envPrefix;
166
+ const notFlagsOption = configuration["populate--"];
167
+ const notFlagsArgv = notFlagsOption ? "--" : "_";
168
+ const newAliases = /* @__PURE__ */ Object.create(null);
169
+ const defaulted = /* @__PURE__ */ Object.create(null);
170
+ const __ = opts.__ || mixin.format;
171
+ const flags = {
172
+ aliases: /* @__PURE__ */ Object.create(null),
173
+ arrays: /* @__PURE__ */ Object.create(null),
174
+ bools: /* @__PURE__ */ Object.create(null),
175
+ strings: /* @__PURE__ */ Object.create(null),
176
+ numbers: /* @__PURE__ */ Object.create(null),
177
+ counts: /* @__PURE__ */ Object.create(null),
178
+ normalize: /* @__PURE__ */ Object.create(null),
179
+ configs: /* @__PURE__ */ Object.create(null),
180
+ nargs: /* @__PURE__ */ Object.create(null),
181
+ coercions: /* @__PURE__ */ Object.create(null),
182
+ keys: []
183
+ };
184
+ const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/;
185
+ const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)");
186
+ [].concat(opts.array || []).filter(Boolean).forEach(function(opt) {
187
+ const key = typeof opt === "object" ? opt.key : opt;
188
+ const assignment = Object.keys(opt).map(function(key2) {
189
+ const arrayFlagKeys = {
190
+ boolean: "bools",
191
+ string: "strings",
192
+ number: "numbers"
193
+ };
194
+ return arrayFlagKeys[key2];
195
+ }).filter(Boolean).pop();
196
+ if (assignment) {
197
+ flags[assignment][key] = true;
198
+ }
199
+ flags.arrays[key] = true;
200
+ flags.keys.push(key);
201
+ });
202
+ [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) {
203
+ flags.bools[key] = true;
204
+ flags.keys.push(key);
205
+ });
206
+ [].concat(opts.string || []).filter(Boolean).forEach(function(key) {
207
+ flags.strings[key] = true;
208
+ flags.keys.push(key);
209
+ });
210
+ [].concat(opts.number || []).filter(Boolean).forEach(function(key) {
211
+ flags.numbers[key] = true;
212
+ flags.keys.push(key);
213
+ });
214
+ [].concat(opts.count || []).filter(Boolean).forEach(function(key) {
215
+ flags.counts[key] = true;
216
+ flags.keys.push(key);
217
+ });
218
+ [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) {
219
+ flags.normalize[key] = true;
220
+ flags.keys.push(key);
221
+ });
222
+ if (typeof opts.narg === "object") {
223
+ Object.entries(opts.narg).forEach(([key, value]) => {
224
+ if (typeof value === "number") {
225
+ flags.nargs[key] = value;
226
+ flags.keys.push(key);
227
+ }
228
+ });
229
+ }
230
+ if (typeof opts.coerce === "object") {
231
+ Object.entries(opts.coerce).forEach(([key, value]) => {
232
+ if (typeof value === "function") {
233
+ flags.coercions[key] = value;
234
+ flags.keys.push(key);
235
+ }
236
+ });
237
+ }
238
+ if (typeof opts.config !== "undefined") {
239
+ if (Array.isArray(opts.config) || typeof opts.config === "string") {
240
+ ;
241
+ [].concat(opts.config).filter(Boolean).forEach(function(key) {
242
+ flags.configs[key] = true;
243
+ });
244
+ } else if (typeof opts.config === "object") {
245
+ Object.entries(opts.config).forEach(([key, value]) => {
246
+ if (typeof value === "boolean" || typeof value === "function") {
247
+ flags.configs[key] = value;
248
+ }
249
+ });
250
+ }
251
+ }
252
+ extendAliases(opts.key, aliases, opts.default, flags.arrays);
253
+ Object.keys(defaults).forEach(function(key) {
254
+ (flags.aliases[key] || []).forEach(function(alias) {
255
+ defaults[alias] = defaults[key];
256
+ });
257
+ });
258
+ let error = null;
259
+ checkConfiguration();
260
+ let notFlags = [];
261
+ const argv = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] });
262
+ const argvReturn = {};
263
+ for (let i = 0; i < args.length; i++) {
264
+ const arg = args[i];
265
+ const truncatedArg = arg.replace(/^-{3,}/, "---");
266
+ let broken;
267
+ let key;
268
+ let letters;
269
+ let m;
270
+ let next;
271
+ let value;
272
+ if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) {
273
+ pushPositional(arg);
274
+ } else if (truncatedArg.match(/^---+(=|$)/)) {
275
+ pushPositional(arg);
276
+ continue;
277
+ } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) {
278
+ m = arg.match(/^--?([^=]+)=([\s\S]*)$/);
279
+ if (m !== null && Array.isArray(m) && m.length >= 3) {
280
+ if (checkAllAliases(m[1], flags.arrays)) {
281
+ i = eatArray(i, m[1], args, m[2]);
282
+ } else if (checkAllAliases(m[1], flags.nargs) !== false) {
283
+ i = eatNargs(i, m[1], args, m[2]);
284
+ } else {
285
+ setArg(m[1], m[2], true);
286
+ }
287
+ }
288
+ } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) {
289
+ m = arg.match(negatedBoolean);
290
+ if (m !== null && Array.isArray(m) && m.length >= 2) {
291
+ key = m[1];
292
+ setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);
293
+ }
294
+ } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) {
295
+ m = arg.match(/^--?(.+)/);
296
+ if (m !== null && Array.isArray(m) && m.length >= 2) {
297
+ key = m[1];
298
+ if (checkAllAliases(key, flags.arrays)) {
299
+ i = eatArray(i, key, args);
300
+ } else if (checkAllAliases(key, flags.nargs) !== false) {
301
+ i = eatNargs(i, key, args);
302
+ } else {
303
+ next = args[i + 1];
304
+ if (next !== void 0 && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) {
305
+ setArg(key, next);
306
+ i++;
307
+ } else if (/^(true|false)$/.test(next)) {
308
+ setArg(key, next);
309
+ i++;
310
+ } else {
311
+ setArg(key, defaultValue(key));
312
+ }
313
+ }
314
+ }
315
+ } else if (arg.match(/^-.\..+=/)) {
316
+ m = arg.match(/^-([^=]+)=([\s\S]*)$/);
317
+ if (m !== null && Array.isArray(m) && m.length >= 3) {
318
+ setArg(m[1], m[2]);
319
+ }
320
+ } else if (arg.match(/^-.\..+/) && !arg.match(negative)) {
321
+ next = args[i + 1];
322
+ m = arg.match(/^-(.\..+)/);
323
+ if (m !== null && Array.isArray(m) && m.length >= 2) {
324
+ key = m[1];
325
+ if (next !== void 0 && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) {
326
+ setArg(key, next);
327
+ i++;
328
+ } else {
329
+ setArg(key, defaultValue(key));
330
+ }
331
+ }
332
+ } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
333
+ letters = arg.slice(1, -1).split("");
334
+ broken = false;
335
+ for (let j = 0; j < letters.length; j++) {
336
+ next = arg.slice(j + 2);
337
+ if (letters[j + 1] && letters[j + 1] === "=") {
338
+ value = arg.slice(j + 3);
339
+ key = letters[j];
340
+ if (checkAllAliases(key, flags.arrays)) {
341
+ i = eatArray(i, key, args, value);
342
+ } else if (checkAllAliases(key, flags.nargs) !== false) {
343
+ i = eatNargs(i, key, args, value);
344
+ } else {
345
+ setArg(key, value);
346
+ }
347
+ broken = true;
348
+ break;
349
+ }
350
+ if (next === "-") {
351
+ setArg(letters[j], next);
352
+ continue;
353
+ }
354
+ if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) {
355
+ setArg(letters[j], next);
356
+ broken = true;
357
+ break;
358
+ }
359
+ if (letters[j + 1] && letters[j + 1].match(/\W/)) {
360
+ setArg(letters[j], next);
361
+ broken = true;
362
+ break;
363
+ } else {
364
+ setArg(letters[j], defaultValue(letters[j]));
365
+ }
366
+ }
367
+ key = arg.slice(-1)[0];
368
+ if (!broken && key !== "-") {
369
+ if (checkAllAliases(key, flags.arrays)) {
370
+ i = eatArray(i, key, args);
371
+ } else if (checkAllAliases(key, flags.nargs) !== false) {
372
+ i = eatNargs(i, key, args);
373
+ } else {
374
+ next = args[i + 1];
375
+ if (next !== void 0 && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) {
376
+ setArg(key, next);
377
+ i++;
378
+ } else if (/^(true|false)$/.test(next)) {
379
+ setArg(key, next);
380
+ i++;
381
+ } else {
382
+ setArg(key, defaultValue(key));
383
+ }
384
+ }
385
+ }
386
+ } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) {
387
+ key = arg.slice(1);
388
+ setArg(key, defaultValue(key));
389
+ } else if (arg === "--") {
390
+ notFlags = args.slice(i + 1);
391
+ break;
392
+ } else if (configuration["halt-at-non-option"]) {
393
+ notFlags = args.slice(i);
394
+ break;
395
+ } else {
396
+ pushPositional(arg);
397
+ }
398
+ }
399
+ applyEnvVars(argv, true);
400
+ applyEnvVars(argv, false);
401
+ setConfig(argv);
402
+ setConfigObjects();
403
+ applyDefaultsAndAliases(argv, flags.aliases, defaults, true);
404
+ applyCoercions(argv);
405
+ if (configuration["set-placeholder-key"])
406
+ setPlaceholderKeys(argv);
407
+ Object.keys(flags.counts).forEach(function(key) {
408
+ if (!hasKey(argv, key.split(".")))
409
+ setArg(key, 0);
410
+ });
411
+ if (notFlagsOption && notFlags.length)
412
+ argv[notFlagsArgv] = [];
413
+ notFlags.forEach(function(key) {
414
+ argv[notFlagsArgv].push(key);
415
+ });
416
+ if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) {
417
+ Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => {
418
+ delete argv[key];
419
+ });
420
+ }
421
+ if (configuration["strip-aliased"]) {
422
+ ;
423
+ [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => {
424
+ if (configuration["camel-case-expansion"] && alias.includes("-")) {
425
+ delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")];
426
+ }
427
+ delete argv[alias];
428
+ });
429
+ }
430
+ function pushPositional(arg) {
431
+ const maybeCoercedNumber = maybeCoerceNumber("_", arg);
432
+ if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") {
433
+ argv._.push(maybeCoercedNumber);
434
+ }
435
+ }
436
+ function eatNargs(i, key, args2, argAfterEqualSign) {
437
+ let ii;
438
+ let toEat = checkAllAliases(key, flags.nargs);
439
+ toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat;
440
+ if (toEat === 0) {
441
+ if (!isUndefined(argAfterEqualSign)) {
442
+ error = Error(__("Argument unexpected for: %s", key));
443
+ }
444
+ setArg(key, defaultValue(key));
445
+ return i;
446
+ }
447
+ let available = isUndefined(argAfterEqualSign) ? 0 : 1;
448
+ if (configuration["nargs-eats-options"]) {
449
+ if (args2.length - (i + 1) + available < toEat) {
450
+ error = Error(__("Not enough arguments following: %s", key));
451
+ }
452
+ available = toEat;
453
+ } else {
454
+ for (ii = i + 1; ii < args2.length; ii++) {
455
+ if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii]))
456
+ available++;
457
+ else
458
+ break;
459
+ }
460
+ if (available < toEat)
461
+ error = Error(__("Not enough arguments following: %s", key));
462
+ }
463
+ let consumed = Math.min(available, toEat);
464
+ if (!isUndefined(argAfterEqualSign) && consumed > 0) {
465
+ setArg(key, argAfterEqualSign);
466
+ consumed--;
467
+ }
468
+ for (ii = i + 1; ii < consumed + i + 1; ii++) {
469
+ setArg(key, args2[ii]);
470
+ }
471
+ return i + consumed;
472
+ }
473
+ function eatArray(i, key, args2, argAfterEqualSign) {
474
+ let argsToSet = [];
475
+ let next = argAfterEqualSign || args2[i + 1];
476
+ const nargsCount = checkAllAliases(key, flags.nargs);
477
+ if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) {
478
+ argsToSet.push(true);
479
+ } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) {
480
+ if (defaults[key] !== void 0) {
481
+ const defVal = defaults[key];
482
+ argsToSet = Array.isArray(defVal) ? defVal : [defVal];
483
+ }
484
+ } else {
485
+ if (!isUndefined(argAfterEqualSign)) {
486
+ argsToSet.push(processValue(key, argAfterEqualSign, true));
487
+ }
488
+ for (let ii = i + 1; ii < args2.length; ii++) {
489
+ if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount)
490
+ break;
491
+ next = args2[ii];
492
+ if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))
493
+ break;
494
+ i = ii;
495
+ argsToSet.push(processValue(key, next, inputIsString));
496
+ }
497
+ }
498
+ if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) {
499
+ error = Error(__("Not enough arguments following: %s", key));
500
+ }
501
+ setArg(key, argsToSet);
502
+ return i;
503
+ }
504
+ function setArg(key, val, shouldStripQuotes = inputIsString) {
505
+ if (/-/.test(key) && configuration["camel-case-expansion"]) {
506
+ const alias = key.split(".").map(function(prop) {
507
+ return camelCase(prop);
508
+ }).join(".");
509
+ addNewAlias(key, alias);
510
+ }
511
+ const value = processValue(key, val, shouldStripQuotes);
512
+ const splitKey = key.split(".");
513
+ setKey(argv, splitKey, value);
514
+ if (flags.aliases[key]) {
515
+ flags.aliases[key].forEach(function(x) {
516
+ const keyProperties = x.split(".");
517
+ setKey(argv, keyProperties, value);
518
+ });
519
+ }
520
+ if (splitKey.length > 1 && configuration["dot-notation"]) {
521
+ ;
522
+ (flags.aliases[splitKey[0]] || []).forEach(function(x) {
523
+ let keyProperties = x.split(".");
524
+ const a = [].concat(splitKey);
525
+ a.shift();
526
+ keyProperties = keyProperties.concat(a);
527
+ if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) {
528
+ setKey(argv, keyProperties, value);
529
+ }
530
+ });
531
+ }
532
+ if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {
533
+ const keys = [key].concat(flags.aliases[key] || []);
534
+ keys.forEach(function(key2) {
535
+ Object.defineProperty(argvReturn, key2, {
536
+ enumerable: true,
537
+ get() {
538
+ return val;
539
+ },
540
+ set(value2) {
541
+ val = typeof value2 === "string" ? mixin.normalize(value2) : value2;
542
+ }
543
+ });
544
+ });
545
+ }
546
+ }
547
+ function addNewAlias(key, alias) {
548
+ if (!(flags.aliases[key] && flags.aliases[key].length)) {
549
+ flags.aliases[key] = [alias];
550
+ newAliases[alias] = true;
551
+ }
552
+ if (!(flags.aliases[alias] && flags.aliases[alias].length)) {
553
+ addNewAlias(alias, key);
554
+ }
555
+ }
556
+ function processValue(key, val, shouldStripQuotes) {
557
+ if (shouldStripQuotes) {
558
+ val = stripQuotes(val);
559
+ }
560
+ if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {
561
+ if (typeof val === "string")
562
+ val = val === "true";
563
+ }
564
+ let value = Array.isArray(val) ? val.map(function(v) {
565
+ return maybeCoerceNumber(key, v);
566
+ }) : maybeCoerceNumber(key, val);
567
+ if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) {
568
+ value = increment();
569
+ }
570
+ if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {
571
+ if (Array.isArray(val))
572
+ value = val.map((val2) => {
573
+ return mixin.normalize(val2);
574
+ });
575
+ else
576
+ value = mixin.normalize(val);
577
+ }
578
+ return value;
579
+ }
580
+ function maybeCoerceNumber(key, value) {
581
+ if (!configuration["parse-positional-numbers"] && key === "_")
582
+ return value;
583
+ if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {
584
+ const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`)));
585
+ if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) {
586
+ value = Number(value);
587
+ }
588
+ }
589
+ return value;
590
+ }
591
+ function setConfig(argv2) {
592
+ const configLookup = /* @__PURE__ */ Object.create(null);
593
+ applyDefaultsAndAliases(configLookup, flags.aliases, defaults);
594
+ Object.keys(flags.configs).forEach(function(configKey) {
595
+ const configPath = argv2[configKey] || configLookup[configKey];
596
+ if (configPath) {
597
+ try {
598
+ let config = null;
599
+ const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);
600
+ const resolveConfig = flags.configs[configKey];
601
+ if (typeof resolveConfig === "function") {
602
+ try {
603
+ config = resolveConfig(resolvedConfigPath);
604
+ } catch (e) {
605
+ config = e;
606
+ }
607
+ if (config instanceof Error) {
608
+ error = config;
609
+ return;
610
+ }
611
+ } else {
612
+ config = mixin.require(resolvedConfigPath);
613
+ }
614
+ setConfigObject(config);
615
+ } catch (ex) {
616
+ if (ex.name === "PermissionDenied")
617
+ error = ex;
618
+ else if (argv2[configKey])
619
+ error = Error(__("Invalid JSON config file: %s", configPath));
620
+ }
621
+ }
622
+ });
623
+ }
624
+ function setConfigObject(config, prev) {
625
+ Object.keys(config).forEach(function(key) {
626
+ const value = config[key];
627
+ const fullKey = prev ? prev + "." + key : key;
628
+ if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) {
629
+ setConfigObject(value, fullKey);
630
+ } else {
631
+ if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) {
632
+ setArg(fullKey, value);
633
+ }
634
+ }
635
+ });
636
+ }
637
+ function setConfigObjects() {
638
+ if (typeof configObjects !== "undefined") {
639
+ configObjects.forEach(function(configObject) {
640
+ setConfigObject(configObject);
641
+ });
642
+ }
643
+ }
644
+ function applyEnvVars(argv2, configOnly) {
645
+ if (typeof envPrefix === "undefined")
646
+ return;
647
+ const prefix = typeof envPrefix === "string" ? envPrefix : "";
648
+ const env2 = mixin.env();
649
+ Object.keys(env2).forEach(function(envVar) {
650
+ if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) {
651
+ const keys = envVar.split("__").map(function(key, i) {
652
+ if (i === 0) {
653
+ key = key.substring(prefix.length);
654
+ }
655
+ return camelCase(key);
656
+ });
657
+ if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) {
658
+ setArg(keys.join("."), env2[envVar]);
659
+ }
660
+ }
661
+ });
662
+ }
663
+ function applyCoercions(argv2) {
664
+ let coerce;
665
+ const applied = /* @__PURE__ */ new Set();
666
+ Object.keys(argv2).forEach(function(key) {
667
+ if (!applied.has(key)) {
668
+ coerce = checkAllAliases(key, flags.coercions);
669
+ if (typeof coerce === "function") {
670
+ try {
671
+ const value = maybeCoerceNumber(key, coerce(argv2[key]));
672
+ [].concat(flags.aliases[key] || [], key).forEach((ali) => {
673
+ applied.add(ali);
674
+ argv2[ali] = value;
675
+ });
676
+ } catch (err) {
677
+ error = err;
678
+ }
679
+ }
680
+ }
681
+ });
682
+ }
683
+ function setPlaceholderKeys(argv2) {
684
+ flags.keys.forEach((key) => {
685
+ if (~key.indexOf("."))
686
+ return;
687
+ if (typeof argv2[key] === "undefined")
688
+ argv2[key] = void 0;
689
+ });
690
+ return argv2;
691
+ }
692
+ function applyDefaultsAndAliases(obj, aliases2, defaults2, canLog = false) {
693
+ Object.keys(defaults2).forEach(function(key) {
694
+ if (!hasKey(obj, key.split("."))) {
695
+ setKey(obj, key.split("."), defaults2[key]);
696
+ if (canLog)
697
+ defaulted[key] = true;
698
+ (aliases2[key] || []).forEach(function(x) {
699
+ if (hasKey(obj, x.split(".")))
700
+ return;
701
+ setKey(obj, x.split("."), defaults2[key]);
702
+ });
703
+ }
704
+ });
705
+ }
706
+ function hasKey(obj, keys) {
707
+ let o = obj;
708
+ if (!configuration["dot-notation"])
709
+ keys = [keys.join(".")];
710
+ keys.slice(0, -1).forEach(function(key2) {
711
+ o = o[key2] || {};
712
+ });
713
+ const key = keys[keys.length - 1];
714
+ if (typeof o !== "object")
715
+ return false;
716
+ else
717
+ return key in o;
718
+ }
719
+ function setKey(obj, keys, value) {
720
+ let o = obj;
721
+ if (!configuration["dot-notation"])
722
+ keys = [keys.join(".")];
723
+ keys.slice(0, -1).forEach(function(key2) {
724
+ key2 = sanitizeKey(key2);
725
+ if (typeof o === "object" && o[key2] === void 0) {
726
+ o[key2] = {};
727
+ }
728
+ if (typeof o[key2] !== "object" || Array.isArray(o[key2])) {
729
+ if (Array.isArray(o[key2])) {
730
+ o[key2].push({});
731
+ } else {
732
+ o[key2] = [o[key2], {}];
733
+ }
734
+ o = o[key2][o[key2].length - 1];
735
+ } else {
736
+ o = o[key2];
737
+ }
738
+ });
739
+ const key = sanitizeKey(keys[keys.length - 1]);
740
+ const isTypeArray = checkAllAliases(keys.join("."), flags.arrays);
741
+ const isValueArray = Array.isArray(value);
742
+ let duplicate = configuration["duplicate-arguments-array"];
743
+ if (!duplicate && checkAllAliases(key, flags.nargs)) {
744
+ duplicate = true;
745
+ if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) {
746
+ o[key] = void 0;
747
+ }
748
+ }
749
+ if (value === increment()) {
750
+ o[key] = increment(o[key]);
751
+ } else if (Array.isArray(o[key])) {
752
+ if (duplicate && isTypeArray && isValueArray) {
753
+ o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);
754
+ } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {
755
+ o[key] = value;
756
+ } else {
757
+ o[key] = o[key].concat([value]);
758
+ }
759
+ } else if (o[key] === void 0 && isTypeArray) {
760
+ o[key] = isValueArray ? value : [value];
761
+ } else if (duplicate && !(o[key] === void 0 || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) {
762
+ o[key] = [o[key], value];
763
+ } else {
764
+ o[key] = value;
765
+ }
766
+ }
767
+ function extendAliases(...args2) {
768
+ args2.forEach(function(obj) {
769
+ Object.keys(obj || {}).forEach(function(key) {
770
+ if (flags.aliases[key])
771
+ return;
772
+ flags.aliases[key] = [].concat(aliases[key] || []);
773
+ flags.aliases[key].concat(key).forEach(function(x) {
774
+ if (/-/.test(x) && configuration["camel-case-expansion"]) {
775
+ const c = camelCase(x);
776
+ if (c !== key && flags.aliases[key].indexOf(c) === -1) {
777
+ flags.aliases[key].push(c);
778
+ newAliases[c] = true;
779
+ }
780
+ }
781
+ });
782
+ flags.aliases[key].concat(key).forEach(function(x) {
783
+ if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) {
784
+ const c = decamelize(x, "-");
785
+ if (c !== key && flags.aliases[key].indexOf(c) === -1) {
786
+ flags.aliases[key].push(c);
787
+ newAliases[c] = true;
788
+ }
789
+ }
790
+ });
791
+ flags.aliases[key].forEach(function(x) {
792
+ flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) {
793
+ return x !== y;
794
+ }));
795
+ });
796
+ });
797
+ });
798
+ }
799
+ function checkAllAliases(key, flag) {
800
+ const toCheck = [].concat(flags.aliases[key] || [], key);
801
+ const keys = Object.keys(flag);
802
+ const setAlias = toCheck.find((key2) => keys.includes(key2));
803
+ return setAlias ? flag[setAlias] : false;
804
+ }
805
+ function hasAnyFlag(key) {
806
+ const flagsKeys = Object.keys(flags);
807
+ const toCheck = [].concat(flagsKeys.map((k) => flags[k]));
808
+ return toCheck.some(function(flag) {
809
+ return Array.isArray(flag) ? flag.includes(key) : flag[key];
810
+ });
811
+ }
812
+ function hasFlagsMatching(arg, ...patterns) {
813
+ const toCheck = [].concat(...patterns);
814
+ return toCheck.some(function(pattern) {
815
+ const match = arg.match(pattern);
816
+ return match && hasAnyFlag(match[1]);
817
+ });
818
+ }
819
+ function hasAllShortFlags(arg) {
820
+ if (arg.match(negative) || !arg.match(/^-[^-]+/)) {
821
+ return false;
822
+ }
823
+ let hasAllFlags = true;
824
+ let next;
825
+ const letters = arg.slice(1).split("");
826
+ for (let j = 0; j < letters.length; j++) {
827
+ next = arg.slice(j + 2);
828
+ if (!hasAnyFlag(letters[j])) {
829
+ hasAllFlags = false;
830
+ break;
831
+ }
832
+ if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) {
833
+ break;
834
+ }
835
+ }
836
+ return hasAllFlags;
837
+ }
838
+ function isUnknownOptionAsArg(arg) {
839
+ return configuration["unknown-options-as-args"] && isUnknownOption(arg);
840
+ }
841
+ function isUnknownOption(arg) {
842
+ arg = arg.replace(/^-{3,}/, "--");
843
+ if (arg.match(negative)) {
844
+ return false;
845
+ }
846
+ if (hasAllShortFlags(arg)) {
847
+ return false;
848
+ }
849
+ const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/;
850
+ const normalFlag = /^-+([^=]+?)$/;
851
+ const flagEndingInHyphen = /^-+([^=]+?)-$/;
852
+ const flagEndingInDigits = /^-+([^=]+?\d+)$/;
853
+ const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/;
854
+ return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);
855
+ }
856
+ function defaultValue(key) {
857
+ if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && `${key}` in defaults) {
858
+ return defaults[key];
859
+ } else {
860
+ return defaultForType(guessType(key));
861
+ }
862
+ }
863
+ function defaultForType(type) {
864
+ const def = {
865
+ [DefaultValuesForTypeKey.BOOLEAN]: true,
866
+ [DefaultValuesForTypeKey.STRING]: "",
867
+ [DefaultValuesForTypeKey.NUMBER]: void 0,
868
+ [DefaultValuesForTypeKey.ARRAY]: []
869
+ };
870
+ return def[type];
871
+ }
872
+ function guessType(key) {
873
+ let type = DefaultValuesForTypeKey.BOOLEAN;
874
+ if (checkAllAliases(key, flags.strings))
875
+ type = DefaultValuesForTypeKey.STRING;
876
+ else if (checkAllAliases(key, flags.numbers))
877
+ type = DefaultValuesForTypeKey.NUMBER;
878
+ else if (checkAllAliases(key, flags.bools))
879
+ type = DefaultValuesForTypeKey.BOOLEAN;
880
+ else if (checkAllAliases(key, flags.arrays))
881
+ type = DefaultValuesForTypeKey.ARRAY;
882
+ return type;
883
+ }
884
+ function isUndefined(num) {
885
+ return num === void 0;
886
+ }
887
+ function checkConfiguration() {
888
+ Object.keys(flags.counts).find((key) => {
889
+ if (checkAllAliases(key, flags.arrays)) {
890
+ error = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key));
891
+ return true;
892
+ } else if (checkAllAliases(key, flags.nargs)) {
893
+ error = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key));
894
+ return true;
895
+ }
896
+ return false;
897
+ });
898
+ }
899
+ return {
900
+ aliases: Object.assign({}, flags.aliases),
901
+ argv: Object.assign(argvReturn, argv),
902
+ configuration,
903
+ defaulted: Object.assign({}, defaulted),
904
+ error,
905
+ newAliases: Object.assign({}, newAliases)
906
+ };
907
+ }
908
+ };
909
+ function combineAliases(aliases) {
910
+ const aliasArrays = [];
911
+ const combined = /* @__PURE__ */ Object.create(null);
912
+ let change = true;
913
+ Object.keys(aliases).forEach(function(key) {
914
+ aliasArrays.push([].concat(aliases[key], key));
915
+ });
916
+ while (change) {
917
+ change = false;
918
+ for (let i = 0; i < aliasArrays.length; i++) {
919
+ for (let ii = i + 1; ii < aliasArrays.length; ii++) {
920
+ const intersect = aliasArrays[i].filter(function(v) {
921
+ return aliasArrays[ii].indexOf(v) !== -1;
922
+ });
923
+ if (intersect.length) {
924
+ aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);
925
+ aliasArrays.splice(ii, 1);
926
+ change = true;
927
+ break;
928
+ }
929
+ }
930
+ }
931
+ }
932
+ aliasArrays.forEach(function(aliasArray) {
933
+ aliasArray = aliasArray.filter(function(v, i, self) {
934
+ return self.indexOf(v) === i;
935
+ });
936
+ const lastAlias = aliasArray.pop();
937
+ if (lastAlias !== void 0 && typeof lastAlias === "string") {
938
+ combined[lastAlias] = aliasArray;
939
+ }
940
+ });
941
+ return combined;
942
+ }
943
+ function increment(orig) {
944
+ return orig !== void 0 ? orig + 1 : 1;
945
+ }
946
+ function sanitizeKey(key) {
947
+ if (key === "__proto__")
948
+ return "___proto___";
949
+ return key;
950
+ }
951
+ function stripQuotes(val) {
952
+ return typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0] ? val.substring(1, val.length - 1) : val;
953
+ }
954
+
955
+ // node_modules/yargs-parser/build/lib/index.js
956
+ import { readFileSync } from "fs";
957
+ var _a;
958
+ var _b;
959
+ var _c;
960
+ var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12;
961
+ var nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1);
962
+ if (nodeVersion) {
963
+ const major = Number(nodeVersion.match(/^([^.]+)/)[1]);
964
+ if (major < minNodeVersion) {
965
+ throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
966
+ }
967
+ }
968
+ var env = process ? process.env : {};
969
+ var parser = new YargsParser({
970
+ cwd: process.cwd,
971
+ env: () => {
972
+ return env;
973
+ },
974
+ format,
975
+ normalize,
976
+ resolve,
977
+ // TODO: figure out a way to combine ESM and CJS coverage, such that
978
+ // we can exercise all the lines below:
979
+ require: (path) => {
980
+ if (typeof __require !== "undefined") {
981
+ return __require(path);
982
+ } else if (path.match(/\.json$/)) {
983
+ return JSON.parse(readFileSync(path, "utf8"));
984
+ } else {
985
+ throw Error("only .json config files are supported in ESM");
986
+ }
987
+ }
988
+ });
989
+ var yargsParser = function Parser(args, opts) {
990
+ const result = parser.parse(args.slice(), opts);
991
+ return result.argv;
992
+ };
993
+ yargsParser.detailed = function(args, opts) {
994
+ return parser.parse(args.slice(), opts);
995
+ };
996
+ yargsParser.camelCase = camelCase;
997
+ yargsParser.decamelize = decamelize;
998
+ yargsParser.looksLikeNumber = looksLikeNumber;
999
+ var lib_default = yargsParser;
1000
+
1001
+ // src/cli.mts
1002
+ import _childProcess from "node:child_process";
1003
+ import _module from "node:module";
1004
+ import _url from "node:url";
1005
+ import _util from "node:util";
1006
+ function forceType(type) {
1007
+ const debug = _util.debuglog("plug:cli");
1008
+ const tsLoaderMarker = Symbol.for("plugjs:tsLoader");
1009
+ if (!(tsLoaderMarker in globalThis)) {
1010
+ throw new Error("TypeScript Loader not available");
1011
+ }
1012
+ debug(`Forcing type to "${type}"`);
1013
+ globalThis[tsLoaderMarker] = type;
1014
+ }
1015
+ function main(scriptUrl, callback) {
1016
+ const debug = _util.debuglog("plug:cli");
1017
+ const sourceMapsEnabled = process.execArgv.indexOf("--enable-source-maps") >= 0;
1018
+ const tsLoaderMarker = Symbol.for("plugjs:tsLoader");
1019
+ const typeScriptEnabled = globalThis[tsLoaderMarker];
1020
+ debug("SourceMaps enabled =", sourceMapsEnabled);
1021
+ debug("TypeScript enabled =", typeScriptEnabled || false);
1022
+ if (sourceMapsEnabled && typeScriptEnabled) {
1023
+ const args = process.argv.slice(2).filter((arg) => {
1024
+ if (arg === "--force-esm") {
1025
+ return forceType("module"), false;
1026
+ } else if (arg === "--force-cjs") {
1027
+ return forceType("commonjs"), false;
1028
+ } else {
1029
+ return true;
1030
+ }
1031
+ });
1032
+ Promise.resolve().then(async () => {
1033
+ process.exitCode = 0;
1034
+ await callback(args);
1035
+ }).catch((error) => {
1036
+ console.error(error);
1037
+ process.exitCode = 1;
1038
+ setTimeout(() => {
1039
+ console.log("\n\nProcess %d did not exit in 5 seconds", process.pid);
1040
+ process.exit(2);
1041
+ }, 5e3).unref();
1042
+ });
1043
+ } else {
1044
+ const script = _url.fileURLToPath(scriptUrl);
1045
+ const execArgv = [...process.execArgv];
1046
+ if (!sourceMapsEnabled)
1047
+ execArgv.push("--enable-source-maps");
1048
+ if (!typeScriptEnabled) {
1049
+ const require2 = _module.createRequire(import.meta.url);
1050
+ const loader = require2.resolve("./loader.mjs");
1051
+ debug(`TypeScript loader resolved to "${loader}"`);
1052
+ execArgv.push(`--experimental-loader=${loader}`, "--no-warnings");
1053
+ }
1054
+ debug("Forking", script, ...process.argv.slice(2));
1055
+ const child = _childProcess.fork(script, [...process.argv.slice(2)], {
1056
+ stdio: ["inherit", "inherit", "inherit", "ipc"],
1057
+ execArgv
1058
+ });
1059
+ child.on("error", (error) => {
1060
+ console.log("Error respawning CLI", error);
1061
+ process.exit(1);
1062
+ });
1063
+ child.on("exit", (code, signal) => {
1064
+ if (signal) {
1065
+ console.log(`CLI process exited with signal ${signal}`);
1066
+ process.exit(1);
1067
+ } else if (typeof code !== "number") {
1068
+ console.log("CLI process failed for an unknown reason");
1069
+ process.exit(1);
1070
+ } else {
1071
+ process.exit(code);
1072
+ }
1073
+ });
1074
+ }
1075
+ }
1076
+
1077
+ // src/tsrun.mts
1078
+ var $rst = process.stdout.isTTY ? "\x1B[0m" : "";
1079
+ var $und = process.stdout.isTTY ? "\x1B[4m" : "";
1080
+ var $gry = process.stdout.isTTY ? "\x1B[38;5;240m" : "";
1081
+ var $blu = process.stdout.isTTY ? "\x1B[38;5;69m" : "";
1082
+ var $wht = process.stdout.isTTY ? "\x1B[1;38;5;255m" : "";
1083
+ function _help() {
1084
+ console.log(`${$blu}${$und}Usage:${$rst}
1085
+
1086
+ ${$wht}tsrun${$rst} ${$gry}[${$rst}--options${$gry}] script.ts [...${$rst}script args${$gry}]${$rst}
1087
+
1088
+ ${$blu}${$und}Options:${$rst}
1089
+
1090
+ ${$wht}-h --help ${$rst} Help! You're reading it now!
1091
+ ${$wht}-v --version ${$rst} Version! This one: ${"0.4.0"}!
1092
+ ${$wht}-e --eval ${$rst} Evaluate the script
1093
+ ${$wht}-p --print ${$rst} Evaluate the script and print the result
1094
+ ${$wht} --force-esm${$rst} Force transpilation of ".ts" files to EcmaScript modules
1095
+ ${$wht} --force-cjs${$rst} Force transpilation of ".ts" files to CommonJS modules
1096
+
1097
+ ${$blu}${$und}Description:${$rst}
1098
+
1099
+ ${$wht}tsrun${$rst} is a minimalistic TypeScript loader, using "esbuild" to transpile TS
1100
+ code to JavaScript, and running it. Being extremely un-sofisticated, it's
1101
+ not meant to to be in any way a replacement for more complete alternatives
1102
+ like "ts-node".
1103
+ `);
1104
+ process.exitCode = 1;
1105
+ }
1106
+ main(import.meta.url, (args) => {
1107
+ let _script;
1108
+ let _scriptArgs = [];
1109
+ let _print = false;
1110
+ let _eval = false;
1111
+ const parsed = lib_default(args, {
1112
+ configuration: {
1113
+ "camel-case-expansion": false,
1114
+ "halt-at-non-option": true,
1115
+ "strip-aliased": true,
1116
+ "strip-dashed": true
1117
+ },
1118
+ alias: {
1119
+ "version": ["v"],
1120
+ "help": ["h"],
1121
+ "eval": ["e"],
1122
+ "print": ["p"]
1123
+ },
1124
+ boolean: ["help", "eval", "print", "force-esm", "version", "force-cjs"]
1125
+ });
1126
+ for (const [key, value] of Object.entries(parsed)) {
1127
+ switch (key) {
1128
+ case "_":
1129
+ [_script, ..._scriptArgs] = value;
1130
+ break;
1131
+ case "help":
1132
+ return _help();
1133
+ case "version":
1134
+ console.log(`v${"0.4.0"}`);
1135
+ process.exitCode = 1;
1136
+ return;
1137
+ case "eval":
1138
+ _eval = value;
1139
+ break;
1140
+ case "print":
1141
+ _print = true;
1142
+ _eval = true;
1143
+ break;
1144
+ }
1145
+ }
1146
+ if (!_script) {
1147
+ return new Promise((resolve2, reject) => {
1148
+ console.log(`Welcome to Node.js ${process.version} (tsrun v${"0.4.0"}).`);
1149
+ console.log('Type ".help" for more information.');
1150
+ const repl = _repl.start();
1151
+ const history = _path.resolve(_os.homedir(), ".node_repl_history");
1152
+ repl.setupHistory(history, (error) => {
1153
+ if (!error)
1154
+ return;
1155
+ reject(error);
1156
+ repl.close();
1157
+ });
1158
+ repl.on("exit", () => resolve2());
1159
+ });
1160
+ } else if (_eval) {
1161
+ const script = `
1162
+ globalThis.module = module;
1163
+ globalThis.require = require;
1164
+ globalThis.exports = exports;
1165
+ globalThis.__dirname = __dirname;
1166
+ globalThis.__filename = __filename;
1167
+
1168
+ for (const module of require('repl').builtinModules) {
1169
+ if (module.indexOf('/') >= 0) continue;
1170
+ if (Object.hasOwn(globalThis, module)) continue;
1171
+ Object.defineProperty(globalThis, module, { get: () => require(module) });
1172
+ }
1173
+
1174
+ return require('node:vm').runInThisContext(${JSON.stringify(_script)}, '[eval]')
1175
+ `;
1176
+ const result = new _module2("[eval]")._compile(script, "[eval]");
1177
+ if (_print)
1178
+ console.log(result);
1179
+ } else {
1180
+ _script = _path.resolve(process.cwd(), _script);
1181
+ process.argv = [process.argv0, _script, ..._scriptArgs];
1182
+ import(_script);
1183
+ }
1184
+ });
1185
+ /*! Bundled license information:
1186
+
1187
+ yargs-parser/build/lib/string-utils.js:
1188
+ (**
1189
+ * @license
1190
+ * Copyright (c) 2016, Contributors
1191
+ * SPDX-License-Identifier: ISC
1192
+ *)
1193
+
1194
+ yargs-parser/build/lib/tokenize-arg-string.js:
1195
+ (**
1196
+ * @license
1197
+ * Copyright (c) 2016, Contributors
1198
+ * SPDX-License-Identifier: ISC
1199
+ *)
1200
+
1201
+ yargs-parser/build/lib/yargs-parser-types.js:
1202
+ (**
1203
+ * @license
1204
+ * Copyright (c) 2016, Contributors
1205
+ * SPDX-License-Identifier: ISC
1206
+ *)
1207
+
1208
+ yargs-parser/build/lib/yargs-parser.js:
1209
+ (**
1210
+ * @license
1211
+ * Copyright (c) 2016, Contributors
1212
+ * SPDX-License-Identifier: ISC
1213
+ *)
1214
+
1215
+ yargs-parser/build/lib/index.js:
1216
+ (**
1217
+ * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js
1218
+ * CJS and ESM environments.
1219
+ *
1220
+ * @license
1221
+ * Copyright (c) 2016, Contributors
1222
+ * SPDX-License-Identifier: ISC
1223
+ *)
1224
+ */
1225
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3RzcnVuLm10cyIsICIuLi9ub2RlX21vZHVsZXMveWFyZ3MtcGFyc2VyL2J1aWxkL2xpYi9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMveWFyZ3MtcGFyc2VyL2J1aWxkL2xpYi9zdHJpbmctdXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3lhcmdzLXBhcnNlci9idWlsZC9saWIvdG9rZW5pemUtYXJnLXN0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMveWFyZ3MtcGFyc2VyL2J1aWxkL2xpYi95YXJncy1wYXJzZXItdHlwZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3lhcmdzLXBhcnNlci9idWlsZC9saWIveWFyZ3MtcGFyc2VyLmpzIiwgIi4uL3NyYy9jbGkubXRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7OztBQUdBLE9BQU8sU0FBUztBQUNoQixPQUFPLFdBQVc7QUFDbEIsT0FBTyxXQUFXO0FBQ2xCLE9BQU9BLGNBQWE7OztBQ0dwQixTQUFTLGNBQWM7QUFDdkIsU0FBUyxXQUFXLGVBQWU7OztBQ0w1QixTQUFTLFVBQVUsS0FBSztBQUczQixRQUFNLGNBQWMsUUFBUSxJQUFJLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWTtBQUN6RSxNQUFJLENBQUMsYUFBYTtBQUNkLFVBQU0sSUFBSSxZQUFZO0FBQUEsRUFDMUI7QUFDQSxNQUFJLElBQUksUUFBUSxHQUFHLE1BQU0sTUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUk7QUFDcEQsV0FBTztBQUFBLEVBQ1gsT0FDSztBQUNELFFBQUksWUFBWTtBQUNoQixRQUFJLGVBQWU7QUFDbkIsVUFBTSxpQkFBaUIsSUFBSSxNQUFNLEtBQUs7QUFDdEMsYUFBUyxJQUFJLGlCQUFpQixlQUFlLENBQUMsRUFBRSxTQUFTLEdBQUcsSUFBSSxJQUFJLFFBQVEsS0FBSztBQUM3RSxVQUFJLE1BQU0sSUFBSSxPQUFPLENBQUM7QUFDdEIsVUFBSSxjQUFjO0FBQ2QsdUJBQWU7QUFD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LElBQUksU0FBVztBQUMzQixnQkFBUSxXQUFXO0FBQ25CO0FBQUEsTUFDRixLQUFLO0FBQ0gsZ0JBQVE7QUFDUjtBQUFBLE1BQ0YsS0FBSztBQUNILGlCQUFTO0FBQ1QsZ0JBQVE7QUFDUjtBQUFBLElBQ0o7QUFBQSxFQUNGO0FBR0EsTUFBSSxDQUFFLFNBQVM7QUFFYixXQUFPLElBQUksUUFBUSxDQUFDQyxVQUFTLFdBQVc7QUFFdEMsY0FBUSxJQUFJLHNCQUFzQixRQUFRLG1CQUFtQixXQUFhO0FBQzFFLGNBQVEsSUFBSSxvQ0FBb0M7QUFHaEQsWUFBTSxPQUFPLE1BQU0sTUFBTTtBQUd6QixZQUFNLFVBQVUsTUFBTSxRQUFRLElBQUksUUFBUSxHQUFHLG9CQUFvQjtBQUNqRSxXQUFLLGFBQWEsU0FBUyxDQUFDLFVBQVU7QUFDcEMsWUFBSSxDQUFFO0FBQU87QUFDYixlQUFPLEtBQUs7QUFDWixhQUFLLE1BQU07QUFBQSxNQUNiLENBQUM7QUFHRCxXQUFLLEdBQUcsUUFBUSxNQUFNQSxTQUFRLENBQUM7QUFBQSxJQUNqQyxDQUFDO0FBQUEsRUFDSCxXQUFXLE9BQU87QUFJaEIsVUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbURBYWdDLEtBQUssVUFBVSxPQUFPO0FBQUE7QUFJckUsVUFBTSxTQUFVLElBQUlDLFNBQVEsUUFBUSxFQUFVLFNBQVMsUUFBUSxRQUFRO0FBR3ZFLFFBQUk7QUFBUSxjQUFRLElBQUksTUFBTTtBQUFBLEVBQ2hDLE9BQU87QUFHTCxjQUFVLE1BQU0sUUFBUSxRQUFRLElBQUksR0FBRyxPQUFPO0FBQzlDLFlBQVEsT0FBTyxDQUFFLFFBQVEsT0FBTyxTQUFTLEdBQUcsV0FBWTtBQUN4RCxXQUFPO0FBQUEsRUFDVDtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbIl9tb2R1bGUiLCAiRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXkiLCAia2V5IiwgImFyZ3MiLCAidmFsdWUiLCAidmFsIiwgImFyZ3YiLCAiZW52IiwgImFsaWFzZXMiLCAiZGVmYXVsdHMiLCAicmVxdWlyZSIsICJyZXNvbHZlIiwgIl9tb2R1bGUiXQp9Cg==