ai-hero-cli 0.0.26 → 0.1.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/bin.cjs +17 -313
- package/package.json +1 -1
package/bin.cjs
CHANGED
|
@@ -8,7 +8,6 @@ var OS = require('os');
|
|
|
8
8
|
var path4 = require('path');
|
|
9
9
|
var NodeUrl = require('url');
|
|
10
10
|
var readline = require('readline');
|
|
11
|
-
var readline2 = require('readline/promises');
|
|
12
11
|
var util = require('util');
|
|
13
12
|
|
|
14
13
|
function _interopNamespace(e) {
|
|
@@ -36,7 +35,6 @@ var OS__namespace = /*#__PURE__*/_interopNamespace(OS);
|
|
|
36
35
|
var path4__namespace = /*#__PURE__*/_interopNamespace(path4);
|
|
37
36
|
var NodeUrl__namespace = /*#__PURE__*/_interopNamespace(NodeUrl);
|
|
38
37
|
var readline__namespace = /*#__PURE__*/_interopNamespace(readline);
|
|
39
|
-
var readline2__namespace = /*#__PURE__*/_interopNamespace(readline2);
|
|
40
38
|
|
|
41
39
|
var __create = Object.create;
|
|
42
40
|
var __defProp = Object.defineProperty;
|
|
@@ -11646,7 +11644,7 @@ var require_util = __commonJS({
|
|
|
11646
11644
|
// node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/prompt.js
|
|
11647
11645
|
var require_prompt = __commonJS({
|
|
11648
11646
|
"node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/prompt.js"(exports, module) {
|
|
11649
|
-
var
|
|
11647
|
+
var readline2 = __require("readline");
|
|
11650
11648
|
var _require = require_util();
|
|
11651
11649
|
var action = _require.action;
|
|
11652
11650
|
var EventEmitter = __require("events");
|
|
@@ -11661,11 +11659,11 @@ var require_prompt = __commonJS({
|
|
|
11661
11659
|
this.in = opts.stdin || process.stdin;
|
|
11662
11660
|
this.out = opts.stdout || process.stdout;
|
|
11663
11661
|
this.onRender = (opts.onRender || (() => void 0)).bind(this);
|
|
11664
|
-
const rl =
|
|
11662
|
+
const rl = readline2.createInterface({
|
|
11665
11663
|
input: this.in,
|
|
11666
11664
|
escapeCodeTimeout: 50
|
|
11667
11665
|
});
|
|
11668
|
-
|
|
11666
|
+
readline2.emitKeypressEvents(this.in, rl);
|
|
11669
11667
|
if (this.in.isTTY) this.in.setRawMode(true);
|
|
11670
11668
|
const isSelect = ["SelectPrompt", "MultiselectPrompt"].indexOf(this.constructor.name) > -1;
|
|
11671
11669
|
const keypress = (str, key) => {
|
|
@@ -14080,7 +14078,7 @@ var require_util2 = __commonJS({
|
|
|
14080
14078
|
// node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/prompt.js
|
|
14081
14079
|
var require_prompt2 = __commonJS({
|
|
14082
14080
|
"node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/prompt.js"(exports, module) {
|
|
14083
|
-
var
|
|
14081
|
+
var readline2 = __require("readline");
|
|
14084
14082
|
var { action } = require_util2();
|
|
14085
14083
|
var EventEmitter = __require("events");
|
|
14086
14084
|
var { beep: beep4, cursor } = require_src();
|
|
@@ -14092,8 +14090,8 @@ var require_prompt2 = __commonJS({
|
|
|
14092
14090
|
this.in = opts.stdin || process.stdin;
|
|
14093
14091
|
this.out = opts.stdout || process.stdout;
|
|
14094
14092
|
this.onRender = (opts.onRender || (() => void 0)).bind(this);
|
|
14095
|
-
const rl =
|
|
14096
|
-
|
|
14093
|
+
const rl = readline2.createInterface({ input: this.in, escapeCodeTimeout: 50 });
|
|
14094
|
+
readline2.emitKeypressEvents(this.in, rl);
|
|
14097
14095
|
if (this.in.isTTY) this.in.setRawMode(true);
|
|
14098
14096
|
const isSelect = ["SelectPrompt", "MultiselectPrompt"].indexOf(this.constructor.name) > -1;
|
|
14099
14097
|
const keypress = (str, key) => {
|
|
@@ -83386,306 +83384,8 @@ var LessonEntrypointNotFoundError = class extends Data_exports.TaggedError(
|
|
|
83386
83384
|
"LessonEntrypointNotFoundError"
|
|
83387
83385
|
) {
|
|
83388
83386
|
};
|
|
83389
|
-
var shortcuts = {
|
|
83390
|
-
enter: "Choose a new exercise to run",
|
|
83391
|
-
n: "Go to the next exercise",
|
|
83392
|
-
p: "Go to the previous exercise",
|
|
83393
|
-
q: "Quit the exercise"
|
|
83394
|
-
};
|
|
83395
83387
|
var runLesson = Effect_exports.fn("runLesson")(function* (opts) {
|
|
83396
|
-
|
|
83397
|
-
return yield* runLessonSimple(opts);
|
|
83398
|
-
}
|
|
83399
|
-
const { cwd, envFilePath, lesson, root } = opts;
|
|
83400
|
-
const service2 = yield* LessonParserService;
|
|
83401
|
-
const lessons = yield* service2.getLessonsFromRepo(root);
|
|
83402
|
-
const foundLessonIndex = lessons.findIndex(
|
|
83403
|
-
(l) => l.num === lesson
|
|
83404
|
-
);
|
|
83405
|
-
if (foundLessonIndex === -1) {
|
|
83406
|
-
return yield* new LessonNotFoundError({
|
|
83407
|
-
lesson,
|
|
83408
|
-
message: `Lesson ${lesson} not found`
|
|
83409
|
-
});
|
|
83410
|
-
}
|
|
83411
|
-
const foundLesson = lessons[foundLessonIndex];
|
|
83412
|
-
const previousLesson = lessons[foundLessonIndex - 1];
|
|
83413
|
-
const nextLesson = lessons[foundLessonIndex + 1];
|
|
83414
|
-
const subfolders = yield* foundLesson.subfolders();
|
|
83415
|
-
if (subfolders.length === 0) {
|
|
83416
|
-
return yield* new LessonEntrypointNotFoundError({
|
|
83417
|
-
lesson,
|
|
83418
|
-
message: `No subfolders found for lesson ${lesson}`
|
|
83419
|
-
});
|
|
83420
|
-
}
|
|
83421
|
-
let subfolderIndex = opts.forceSubfolderIndex;
|
|
83422
|
-
if (subfolderIndex === void 0) {
|
|
83423
|
-
if (subfolders.length === 1) {
|
|
83424
|
-
subfolderIndex = 0;
|
|
83425
|
-
} else {
|
|
83426
|
-
const result = yield* selectSubfolderIndex({
|
|
83427
|
-
lesson: foundLesson
|
|
83428
|
-
});
|
|
83429
|
-
subfolderIndex = result.subfolderIndex;
|
|
83430
|
-
}
|
|
83431
|
-
}
|
|
83432
|
-
const subfolder = subfolders[subfolderIndex];
|
|
83433
|
-
let nextExerciseToRun;
|
|
83434
|
-
const nextSubfolder = subfolders[subfolderIndex + 1];
|
|
83435
|
-
if (nextSubfolder) {
|
|
83436
|
-
nextExerciseToRun = {
|
|
83437
|
-
lessonNumber: foundLesson.num,
|
|
83438
|
-
lessonName: foundLesson.name,
|
|
83439
|
-
subfolderIndex: subfolderIndex + 1,
|
|
83440
|
-
subfolder: nextSubfolder
|
|
83441
|
-
};
|
|
83442
|
-
} else if (nextLesson) {
|
|
83443
|
-
nextExerciseToRun = {
|
|
83444
|
-
lessonNumber: nextLesson.num,
|
|
83445
|
-
lessonName: nextLesson.name,
|
|
83446
|
-
subfolderIndex: 0,
|
|
83447
|
-
subfolder: (yield* nextLesson.subfolders())[0]
|
|
83448
|
-
};
|
|
83449
|
-
} else {
|
|
83450
|
-
nextExerciseToRun = void 0;
|
|
83451
|
-
}
|
|
83452
|
-
let previousExerciseToRun;
|
|
83453
|
-
if (subfolderIndex > 0) {
|
|
83454
|
-
previousExerciseToRun = {
|
|
83455
|
-
lessonNumber: foundLesson.num,
|
|
83456
|
-
lessonName: foundLesson.name,
|
|
83457
|
-
subfolderIndex: subfolderIndex - 1,
|
|
83458
|
-
subfolder: subfolders[subfolderIndex - 1]
|
|
83459
|
-
};
|
|
83460
|
-
} else if (previousLesson) {
|
|
83461
|
-
const previousLessonSubfolders = yield* previousLesson.subfolders();
|
|
83462
|
-
const previousLessonLastSubfolderIndex = previousLessonSubfolders.length - 1;
|
|
83463
|
-
previousExerciseToRun = {
|
|
83464
|
-
lessonNumber: previousLesson.num,
|
|
83465
|
-
lessonName: previousLesson.name,
|
|
83466
|
-
subfolderIndex: previousLessonLastSubfolderIndex,
|
|
83467
|
-
subfolder: previousLessonSubfolders[previousLessonLastSubfolderIndex]
|
|
83468
|
-
};
|
|
83469
|
-
} else {
|
|
83470
|
-
previousExerciseToRun = void 0;
|
|
83471
|
-
}
|
|
83472
|
-
const { mainFile, readmeFile } = yield* getMainAndReadmeFiles({
|
|
83473
|
-
lesson: foundLesson,
|
|
83474
|
-
subfolder
|
|
83475
|
-
});
|
|
83476
|
-
yield* Console_exports.clear;
|
|
83477
|
-
yield* Console_exports.log(
|
|
83478
|
-
util.styleText(
|
|
83479
|
-
"bold",
|
|
83480
|
-
`Running ${foundLesson.num} ${subfolder}...`
|
|
83481
|
-
)
|
|
83482
|
-
);
|
|
83483
|
-
yield* Console_exports.log(
|
|
83484
|
-
util.styleText(
|
|
83485
|
-
"dim",
|
|
83486
|
-
" Press n + enter to go to the next exercise"
|
|
83487
|
-
)
|
|
83488
|
-
);
|
|
83489
|
-
yield* Console_exports.log(
|
|
83490
|
-
util.styleText("dim", " Press h + enter for more shortcuts\n")
|
|
83491
|
-
);
|
|
83492
|
-
if (readmeFile) {
|
|
83493
|
-
yield* logReadmeFile({ readmeFile });
|
|
83494
|
-
}
|
|
83495
|
-
const command2 = Command_exports.make(
|
|
83496
|
-
"pnpm",
|
|
83497
|
-
"tsx",
|
|
83498
|
-
`--env-file`,
|
|
83499
|
-
envFilePath,
|
|
83500
|
-
mainFile
|
|
83501
|
-
).pipe(
|
|
83502
|
-
Command_exports.stdout("inherit"),
|
|
83503
|
-
Command_exports.stderr("inherit"),
|
|
83504
|
-
Command_exports.workingDirectory(cwd)
|
|
83505
|
-
);
|
|
83506
|
-
const processOutcome = yield* Effect_exports.raceAll([
|
|
83507
|
-
Effect_exports.gen(function* () {
|
|
83508
|
-
const proc = yield* Command_exports.start(command2);
|
|
83509
|
-
const killWithLogging = () => Effect_exports.gen(function* () {
|
|
83510
|
-
if (yield* proc.isRunning) {
|
|
83511
|
-
return yield* proc.kill();
|
|
83512
|
-
}
|
|
83513
|
-
}).pipe(
|
|
83514
|
-
Effect_exports.catchAll(
|
|
83515
|
-
(e) => Effect_exports.logDebug(
|
|
83516
|
-
`Error occurred when killing child process.`,
|
|
83517
|
-
e
|
|
83518
|
-
)
|
|
83519
|
-
)
|
|
83520
|
-
);
|
|
83521
|
-
yield* Effect_exports.addFinalizer(() => killWithLogging());
|
|
83522
|
-
const killAsCallback = () => killWithLogging().pipe(Effect_exports.runPromise);
|
|
83523
|
-
yield* Effect_exports.fork(
|
|
83524
|
-
Effect_exports.sync(() => {
|
|
83525
|
-
process.on("SIGINT", killAsCallback);
|
|
83526
|
-
})
|
|
83527
|
-
);
|
|
83528
|
-
yield* Effect_exports.fork(
|
|
83529
|
-
Effect_exports.sync(() => {
|
|
83530
|
-
process.on("SIGTERM", killAsCallback);
|
|
83531
|
-
})
|
|
83532
|
-
);
|
|
83533
|
-
yield* Effect_exports.addFinalizer(() => {
|
|
83534
|
-
return Effect_exports.sync(
|
|
83535
|
-
() => process.removeListener("SIGINT", killAsCallback)
|
|
83536
|
-
);
|
|
83537
|
-
});
|
|
83538
|
-
yield* Effect_exports.addFinalizer(() => {
|
|
83539
|
-
return Effect_exports.sync(
|
|
83540
|
-
() => process.removeListener("SIGTERM", killAsCallback)
|
|
83541
|
-
);
|
|
83542
|
-
});
|
|
83543
|
-
const result = yield* proc.exitCode;
|
|
83544
|
-
return result === 0 ? "exit" : "failed";
|
|
83545
|
-
}),
|
|
83546
|
-
Effect_exports.gen(function* () {
|
|
83547
|
-
const rl = readline2__namespace.createInterface({
|
|
83548
|
-
input: process.stdin
|
|
83549
|
-
});
|
|
83550
|
-
yield* Effect_exports.addFinalizer(() => {
|
|
83551
|
-
return Effect_exports.succeed(rl.close());
|
|
83552
|
-
});
|
|
83553
|
-
while (true) {
|
|
83554
|
-
const line4 = yield* Effect_exports.promise(async (signal) => {
|
|
83555
|
-
const result = await rl.question("", { signal });
|
|
83556
|
-
rl.close();
|
|
83557
|
-
return result;
|
|
83558
|
-
});
|
|
83559
|
-
if (line4 === "h") {
|
|
83560
|
-
yield* Console_exports.log(util.styleText("bold", "Shortcuts:"));
|
|
83561
|
-
for (const [key, value5] of Object.entries(shortcuts)) {
|
|
83562
|
-
yield* Console_exports.log(
|
|
83563
|
-
` ${key} ${util.styleText("dim", `- ${value5}`)}`
|
|
83564
|
-
);
|
|
83565
|
-
}
|
|
83566
|
-
} else if (line4 === "q") {
|
|
83567
|
-
return "quit";
|
|
83568
|
-
} else if (line4 === "n") {
|
|
83569
|
-
return "next";
|
|
83570
|
-
} else if (line4 === "p") {
|
|
83571
|
-
return "previous";
|
|
83572
|
-
} else if (line4.trim() === "") {
|
|
83573
|
-
return "choose-exercise";
|
|
83574
|
-
}
|
|
83575
|
-
}
|
|
83576
|
-
})
|
|
83577
|
-
]).pipe(Effect_exports.scoped);
|
|
83578
|
-
yield* Console_exports.log("");
|
|
83579
|
-
if (processOutcome === "next" && nextExerciseToRun) {
|
|
83580
|
-
return yield* runLesson({
|
|
83581
|
-
simple: opts.simple,
|
|
83582
|
-
lesson: nextExerciseToRun.lessonNumber,
|
|
83583
|
-
root,
|
|
83584
|
-
envFilePath,
|
|
83585
|
-
cwd,
|
|
83586
|
-
forceSubfolderIndex: nextExerciseToRun.subfolderIndex
|
|
83587
|
-
});
|
|
83588
|
-
} else if (processOutcome === "previous" && previousExerciseToRun) {
|
|
83589
|
-
return yield* runLesson({
|
|
83590
|
-
simple: opts.simple,
|
|
83591
|
-
lesson: previousExerciseToRun.lessonNumber,
|
|
83592
|
-
root,
|
|
83593
|
-
envFilePath,
|
|
83594
|
-
cwd,
|
|
83595
|
-
forceSubfolderIndex: previousExerciseToRun.subfolderIndex
|
|
83596
|
-
});
|
|
83597
|
-
} else if (processOutcome === "choose-exercise") {
|
|
83598
|
-
return yield* chooseLessonAndRunIt({
|
|
83599
|
-
simple: opts.simple,
|
|
83600
|
-
root,
|
|
83601
|
-
envFilePath,
|
|
83602
|
-
cwd
|
|
83603
|
-
});
|
|
83604
|
-
}
|
|
83605
|
-
const isExplainer = yield* foundLesson.isExplainer();
|
|
83606
|
-
if (isExplainer && readmeFile) {
|
|
83607
|
-
yield* logReadmeFile({ readmeFile });
|
|
83608
|
-
}
|
|
83609
|
-
const lessonNoun = isExplainer ? {
|
|
83610
|
-
successMessage: `Explainer executed! Once you've read the readme and understand the code, you can go to the next exercise.`,
|
|
83611
|
-
failureMessage: `Looks like the explainer errored! Want to try again?`,
|
|
83612
|
-
lowercase: "explainer"
|
|
83613
|
-
} : {
|
|
83614
|
-
successMessage: "Exercise complete! What's next?",
|
|
83615
|
-
failureMessage: `Looks like the exercise errored! Want to try again?`,
|
|
83616
|
-
lowercase: "exercise"
|
|
83617
|
-
};
|
|
83618
|
-
const { choice: choice6 } = yield* runPrompt(
|
|
83619
|
-
() => (0, import_prompts.default)([
|
|
83620
|
-
{
|
|
83621
|
-
type: "select",
|
|
83622
|
-
name: "choice",
|
|
83623
|
-
message: processOutcome === "exit" ? lessonNoun.successMessage : lessonNoun.failureMessage,
|
|
83624
|
-
choices: [
|
|
83625
|
-
{
|
|
83626
|
-
title: processOutcome === "failed" ? `\u{1F504} Run the ${lessonNoun.lowercase} again` : `\u{1F504} Try the ${lessonNoun.lowercase} again`,
|
|
83627
|
-
value: "run-again"
|
|
83628
|
-
},
|
|
83629
|
-
...nextExerciseToRun ? [
|
|
83630
|
-
{
|
|
83631
|
-
title: `\u27A1\uFE0F Run the next exercise: ${nextExerciseToRun?.lessonNumber}-${nextExerciseToRun?.lessonName} ${nextExerciseToRun?.subfolder}`,
|
|
83632
|
-
value: "next-exercise"
|
|
83633
|
-
}
|
|
83634
|
-
] : [],
|
|
83635
|
-
...previousExerciseToRun ? [
|
|
83636
|
-
{
|
|
83637
|
-
title: `\u2B05\uFE0F Run the previous exercise: ${previousExerciseToRun?.lessonNumber}-${previousExerciseToRun?.lessonName} ${previousExerciseToRun?.subfolder}`,
|
|
83638
|
-
value: "previous-exercise"
|
|
83639
|
-
}
|
|
83640
|
-
] : [],
|
|
83641
|
-
{
|
|
83642
|
-
title: "\u{1F4CB} Choose a new exercise",
|
|
83643
|
-
value: "choose-exercise"
|
|
83644
|
-
},
|
|
83645
|
-
{
|
|
83646
|
-
title: "\u2705 Finish",
|
|
83647
|
-
value: "finish"
|
|
83648
|
-
}
|
|
83649
|
-
]
|
|
83650
|
-
}
|
|
83651
|
-
])
|
|
83652
|
-
);
|
|
83653
|
-
if (choice6 === "run-again") {
|
|
83654
|
-
return yield* runLesson({
|
|
83655
|
-
lesson,
|
|
83656
|
-
root,
|
|
83657
|
-
envFilePath,
|
|
83658
|
-
cwd,
|
|
83659
|
-
// Run the same exercise again, with the same subfolder index
|
|
83660
|
-
forceSubfolderIndex: subfolderIndex,
|
|
83661
|
-
simple: opts.simple
|
|
83662
|
-
});
|
|
83663
|
-
} else if (choice6 === "choose-exercise") {
|
|
83664
|
-
return yield* chooseLessonAndRunIt({
|
|
83665
|
-
root,
|
|
83666
|
-
envFilePath,
|
|
83667
|
-
cwd,
|
|
83668
|
-
simple: opts.simple
|
|
83669
|
-
});
|
|
83670
|
-
} else if (choice6 === "next-exercise" && nextExerciseToRun) {
|
|
83671
|
-
return yield* runLesson({
|
|
83672
|
-
lesson: nextExerciseToRun.lessonNumber,
|
|
83673
|
-
root,
|
|
83674
|
-
envFilePath,
|
|
83675
|
-
cwd,
|
|
83676
|
-
forceSubfolderIndex: nextExerciseToRun.subfolderIndex,
|
|
83677
|
-
simple: opts.simple
|
|
83678
|
-
});
|
|
83679
|
-
} else if (choice6 === "previous-exercise" && previousExerciseToRun) {
|
|
83680
|
-
return yield* runLesson({
|
|
83681
|
-
lesson: previousExerciseToRun.lessonNumber,
|
|
83682
|
-
root,
|
|
83683
|
-
envFilePath,
|
|
83684
|
-
cwd,
|
|
83685
|
-
forceSubfolderIndex: previousExerciseToRun.subfolderIndex,
|
|
83686
|
-
simple: opts.simple
|
|
83687
|
-
});
|
|
83688
|
-
}
|
|
83388
|
+
return yield* runLessonSimple(opts);
|
|
83689
83389
|
});
|
|
83690
83390
|
var logReadmeFile = Effect_exports.fn("logReadmeFile")(
|
|
83691
83391
|
function* (opts) {
|
|
@@ -83738,8 +83438,7 @@ var chooseLessonAndRunIt = (opts) => Effect_exports.gen(function* () {
|
|
|
83738
83438
|
root: opts.root,
|
|
83739
83439
|
envFilePath: opts.envFilePath,
|
|
83740
83440
|
cwd: opts.cwd,
|
|
83741
|
-
forceSubfolderIndex: void 0
|
|
83742
|
-
simple: opts.simple
|
|
83441
|
+
forceSubfolderIndex: void 0
|
|
83743
83442
|
});
|
|
83744
83443
|
}).pipe(Effect_exports.catchAll(Console_exports.log));
|
|
83745
83444
|
var exercise = Command_exports2.make(
|
|
@@ -83766,6 +83465,13 @@ var exercise = Command_exports2.make(
|
|
|
83766
83465
|
},
|
|
83767
83466
|
({ cwd, debug: debug3, envFilePath, lesson, root, simple: simple3 }) => {
|
|
83768
83467
|
return Effect_exports.gen(function* () {
|
|
83468
|
+
if (simple3) {
|
|
83469
|
+
return yield* Effect_exports.fail(
|
|
83470
|
+
new Error(
|
|
83471
|
+
"Simple is now the default mode, so you no longer need to include the --simple flag"
|
|
83472
|
+
)
|
|
83473
|
+
);
|
|
83474
|
+
}
|
|
83769
83475
|
const resolvedEnvFilePath = path4__namespace.relative(
|
|
83770
83476
|
cwd,
|
|
83771
83477
|
envFilePath
|
|
@@ -83776,8 +83482,7 @@ var exercise = Command_exports2.make(
|
|
|
83776
83482
|
root,
|
|
83777
83483
|
envFilePath: resolvedEnvFilePath,
|
|
83778
83484
|
cwd,
|
|
83779
|
-
forceSubfolderIndex: void 0
|
|
83780
|
-
simple: simple3
|
|
83485
|
+
forceSubfolderIndex: void 0
|
|
83781
83486
|
}).pipe(
|
|
83782
83487
|
Logger_exports.withMinimumLogLevel(
|
|
83783
83488
|
debug3 ? LogLevel_exports.Debug : LogLevel_exports.Info
|
|
@@ -83787,8 +83492,7 @@ var exercise = Command_exports2.make(
|
|
|
83787
83492
|
return yield* chooseLessonAndRunIt({
|
|
83788
83493
|
root,
|
|
83789
83494
|
envFilePath: resolvedEnvFilePath,
|
|
83790
|
-
cwd
|
|
83791
|
-
simple: simple3
|
|
83495
|
+
cwd
|
|
83792
83496
|
}).pipe(
|
|
83793
83497
|
Logger_exports.withMinimumLogLevel(
|
|
83794
83498
|
debug3 ? LogLevel_exports.Debug : LogLevel_exports.Info
|