just-test-node 1.5.0 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/lib/Discover.d.ts +25 -0
  2. package/lib/Discover.js +4 -0
  3. package/lib/OptionsDefinitions.d.ts +15 -0
  4. package/lib/OptionsDefinitions.js +55 -0
  5. package/lib/StackTrace.d.ts +1 -0
  6. package/lib/StackTrace.js +44 -0
  7. package/lib/Suite.d.ts +45 -0
  8. package/lib/Suite.js +115 -0
  9. package/lib/Test.d.ts +9 -6
  10. package/lib/Test.js +16 -12
  11. package/lib/TestStage.d.ts +1 -1
  12. package/lib/TestStage.js +2 -1
  13. package/lib/code-position-resolution.d.ts +2 -0
  14. package/lib/code-position-resolution.js +50 -0
  15. package/lib/exampleTestFile.test.js +48 -45
  16. package/lib/help.d.ts +1 -1
  17. package/lib/help.js +2 -1
  18. package/lib/index.d.ts +1 -0
  19. package/lib/index.js +62 -39
  20. package/lib/reporters/JsonReporter.d.ts +20 -0
  21. package/lib/reporters/JsonReporter.js +39 -0
  22. package/lib/reporters/Reporter.d.ts +4 -0
  23. package/lib/reporters/Reporter.js +4 -0
  24. package/lib/reporters/SpecReporter.d.ts +14 -0
  25. package/lib/reporters/SpecReporter.js +90 -0
  26. package/lib/reporters/index.d.ts +3 -0
  27. package/lib/reporters/index.js +17 -0
  28. package/lib/run-results/SuiteRunResult.d.ts +11 -0
  29. package/lib/run-results/SuiteRunResult.js +19 -0
  30. package/lib/run-results/TestRunResult.d.ts +9 -0
  31. package/lib/run-results/TestRunResult.js +15 -0
  32. package/lib/run-results/index.d.ts +2 -0
  33. package/lib/run-results/index.js +16 -0
  34. package/package.json +69 -64
  35. package/lib/OptionsDefinition.d.ts +0 -5
  36. package/lib/OptionsDefinition.js +0 -29
  37. package/lib/PerformancePolyfill.d.ts +0 -1
  38. package/lib/PerformancePolyfill.js +0 -16
  39. package/lib/SpecReporter.d.ts +0 -12
  40. package/lib/SpecReporter.js +0 -76
  41. package/lib/TestRunResult.d.ts +0 -9
  42. package/lib/TestRunResult.js +0 -13
  43. package/lib/TestSuiteClass.d.ts +0 -28
  44. package/lib/TestSuiteClass.js +0 -78
@@ -0,0 +1,25 @@
1
+ export interface TextPosition {
2
+ /**
3
+ * Zero based line.
4
+ */
5
+ line: number;
6
+ /**
7
+ * Zero based column.
8
+ */
9
+ column: number;
10
+ }
11
+ export interface FunctionCodeRange {
12
+ filePath: string;
13
+ start: TextPosition;
14
+ end: TextPosition;
15
+ }
16
+ export interface DiscoveredSuite {
17
+ title: string;
18
+ location: FunctionCodeRange;
19
+ tests: DiscoveredTest[];
20
+ suites: DiscoveredSuite[];
21
+ }
22
+ export interface DiscoveredTest {
23
+ title: string;
24
+ location: FunctionCodeRange;
25
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpc2NvdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiRGlzY292ZXIuanMiLCJzb3VyY2VSb290IjoiLi5cXHNyYyJ9
@@ -0,0 +1,15 @@
1
+ import { OptionDefinition as ArgsOptionDefinition } from "command-line-args";
2
+ export interface Options {
3
+ glob: string;
4
+ filter: string;
5
+ help: boolean;
6
+ debug: boolean;
7
+ discover: boolean;
8
+ reporter: "spec" | "json";
9
+ testFailureExitCode: number;
10
+ }
11
+ export declare function validateOptions(options: Options): void;
12
+ export interface OptionDefinition extends ArgsOptionDefinition {
13
+ description: string;
14
+ }
15
+ export declare const optionsDefinitions: OptionDefinition[];
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optionsDefinitions = exports.validateOptions = void 0;
4
+ function validateOptions(options) {
5
+ if (!["spec", "json"].includes(options.reporter))
6
+ throw "invalid reporter.";
7
+ }
8
+ exports.validateOptions = validateOptions;
9
+ exports.optionsDefinitions = [
10
+ {
11
+ name: 'glob', alias: 'g',
12
+ type: String,
13
+ defaultValue: "./!(node_modules)/**/*.test.js",
14
+ description: "Test files glob pattern."
15
+ },
16
+ {
17
+ name: "filter", alias: "f",
18
+ type: String,
19
+ defaultOption: true,
20
+ defaultValue: "",
21
+ description: "Filters tests."
22
+ },
23
+ {
24
+ name: 'help', alias: 'h',
25
+ type: Boolean,
26
+ defaultValue: false,
27
+ description: "Show help."
28
+ },
29
+ {
30
+ name: 'debug',
31
+ type: Boolean,
32
+ defaultValue: false,
33
+ description: "Debug mode. Will disable timeouts."
34
+ },
35
+ {
36
+ name: 'discover',
37
+ type: Boolean,
38
+ defaultValue: false,
39
+ description: "Outputs the available the tests as json."
40
+ },
41
+ {
42
+ name: "reporter",
43
+ type: String,
44
+ defaultValue: "spec",
45
+ description: `The reporter to use for ouput. Options: "spec", "json"`,
46
+ },
47
+ {
48
+ name: "testFailureExitCode",
49
+ type: Number,
50
+ defaultValue: 1,
51
+ description: `The exit code to use when has test failures.`,
52
+ }
53
+ ];
54
+
55
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk9wdGlvbnNEZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFZQSxTQUFnQixlQUFlLENBQUMsT0FBZ0I7SUFDL0MsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQy9DLE1BQU0sbUJBQW1CLENBQUM7QUFDNUIsQ0FBQztBQUhELDBDQUdDO0FBTVksUUFBQSxrQkFBa0IsR0FBdUI7SUFDckQ7UUFDQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHO1FBQ3hCLElBQUksRUFBRSxNQUFNO1FBQ1osWUFBWSxFQUFFLGdDQUFnQztRQUM5QyxXQUFXLEVBQUUsMEJBQTBCO0tBQ3ZDO0lBQ0Q7UUFDQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHO1FBQzFCLElBQUksRUFBRSxNQUFNO1FBQ1osYUFBYSxFQUFFLElBQUk7UUFDbkIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsV0FBVyxFQUFFLGdCQUFnQjtLQUM3QjtJQUNEO1FBQ0MsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRztRQUN4QixJQUFJLEVBQUUsT0FBTztRQUNiLFlBQVksRUFBRSxLQUFLO1FBQ25CLFdBQVcsRUFBRSxZQUFZO0tBQ3pCO0lBQ0Q7UUFDQyxJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLG9DQUFvQztLQUNqRDtJQUNEO1FBQ0MsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLE9BQU87UUFDYixZQUFZLEVBQUUsS0FBSztRQUNuQixXQUFXLEVBQUUsMENBQTBDO0tBQ3ZEO0lBQ0Q7UUFDQyxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsTUFBTTtRQUNaLFlBQVksRUFBRSxNQUFNO1FBQ3BCLFdBQVcsRUFBRSx3REFBd0Q7S0FDckU7SUFDRDtRQUNDLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsSUFBSSxFQUFFLE1BQU07UUFDWixZQUFZLEVBQUUsQ0FBQztRQUNmLFdBQVcsRUFBRSw4Q0FBOEM7S0FDM0Q7Q0FDRCxDQUFDIiwiZmlsZSI6Ik9wdGlvbnNEZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
@@ -0,0 +1 @@
1
+ export declare function getCallerLocationText(currentFunction: Function): string;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCallerLocationText = void 0;
4
+ function getCallerLocationText(currentFunction) {
5
+ const originalLimit = Error.stackTraceLimit;
6
+ const originalPrepare = Error.prepareStackTrace;
7
+ Error.stackTraceLimit = 1;
8
+ Error.prepareStackTrace = getFirstCallLocation;
9
+ const object = { stack: "", originalPrepare: originalPrepare };
10
+ Error.captureStackTrace(object, currentFunction);
11
+ const location = object.stack;
12
+ Error.stackTraceLimit = originalLimit;
13
+ Error.prepareStackTrace = originalPrepare;
14
+ return location;
15
+ }
16
+ exports.getCallerLocationText = getCallerLocationText;
17
+ function getFirstCallLocation(object, stack) {
18
+ const callSite = stack[0];
19
+ if (!object.originalPrepare)
20
+ return `${callSite.getFileName()}:${callSite.getLineNumber()}:${callSite.getColumnNumber()}`;
21
+ // Support for ts-node
22
+ const formattedByRuntime = object.originalPrepare(object, [new SimplifiedCallSite(callSite)]);
23
+ return formattedByRuntime.slice("Error\n at ".length);
24
+ }
25
+ class SimplifiedCallSite {
26
+ constructor(callSite) {
27
+ this.callSite = callSite;
28
+ }
29
+ getThis() { return undefined; }
30
+ getTypeName() { return null; }
31
+ getFunction() { return undefined; }
32
+ getFunctionName() { return null; }
33
+ getMethodName() { return null; }
34
+ getFileName() { return this.callSite.getFileName(); }
35
+ getLineNumber() { return this.callSite.getLineNumber(); }
36
+ getColumnNumber() { return this.callSite.getColumnNumber(); }
37
+ getEvalOrigin() { return undefined; }
38
+ isToplevel() { return true; }
39
+ isEval() { return false; }
40
+ isNative() { return false; }
41
+ isConstructor() { return false; }
42
+ }
43
+
44
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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
package/lib/Suite.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { TestSuite, TestParams } from "just-test-api";
2
+ import { Event1 } from "itay-events";
3
+ import { Test } from "./Test";
4
+ import { TestRunResult } from "./run-results/TestRunResult";
5
+ import { SuiteRunResult } from "./run-results/SuiteRunResult";
6
+ import { DiscoveredSuite, FunctionCodeRange } from "./Discover";
7
+ export interface RunParams {
8
+ debug: boolean;
9
+ }
10
+ export interface TestEndedArgs {
11
+ test: Test;
12
+ result: TestRunResult;
13
+ }
14
+ export interface SuiteEndedArgs {
15
+ suite: Suite;
16
+ result: SuiteRunResult;
17
+ }
18
+ export declare class Suite implements TestSuite {
19
+ title: string;
20
+ location: FunctionCodeRange;
21
+ parent?: Suite;
22
+ childrenSuites: Suite[];
23
+ tests: Test[];
24
+ private isPartial;
25
+ onSuiteStarted: Event1<Suite>;
26
+ onSuiteEnded: Event1<SuiteEndedArgs>;
27
+ onTestStarted: Event1<Test>;
28
+ onTestEnded: Event1<TestEndedArgs>;
29
+ constructor();
30
+ discover(): DiscoveredSuite;
31
+ describe(title: string | {
32
+ name: string;
33
+ }, suiteFunction: (suite: Suite) => void): void;
34
+ test(title: string, testFunction: (test: TestParams) => Promise<void> | void): void;
35
+ testFunc(namedTestFunction: (test: TestParams) => Promise<void> | void): void;
36
+ testFuncs(...namedTestFunctions: ((test: TestParams) => Promise<void> | void)[]): void;
37
+ private getTitleFor;
38
+ run(params: RunParams): Promise<boolean>;
39
+ private getStatus;
40
+ treeShake(lowerCasedFilter: string): boolean;
41
+ private calcIsPartial;
42
+ private isTitlePassingFilter;
43
+ private runDirectDescendantsTests;
44
+ private runSubSuites;
45
+ }
package/lib/Suite.js ADDED
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Suite = void 0;
4
+ const itay_events_1 = require("itay-events");
5
+ const Test_1 = require("./Test");
6
+ const SuiteRunResult_1 = require("./run-results/SuiteRunResult");
7
+ const code_position_resolution_1 = require("./code-position-resolution");
8
+ class Suite {
9
+ constructor() {
10
+ this.title = "";
11
+ this.location = null;
12
+ this.childrenSuites = [];
13
+ this.tests = [];
14
+ this.isPartial = false;
15
+ this.onSuiteStarted = new itay_events_1.Event1();
16
+ this.onSuiteEnded = new itay_events_1.Event1();
17
+ this.onTestStarted = new itay_events_1.Event1();
18
+ this.onTestEnded = new itay_events_1.Event1();
19
+ }
20
+ discover() {
21
+ return {
22
+ title: this.title,
23
+ location: this.location,
24
+ tests: this.tests.map(e => e.discover()),
25
+ suites: this.childrenSuites.map(e => e.discover())
26
+ };
27
+ }
28
+ describe(title, suiteFunction) {
29
+ let childSuite = new Suite();
30
+ childSuite.title = typeof (title) === "string" ? title : title.name;
31
+ childSuite.location = (0, code_position_resolution_1.getFunctionCodeRange)(suiteFunction, this.describe);
32
+ childSuite.onTestStarted.add(t => this.onTestStarted.trigger(t));
33
+ childSuite.onTestEnded.add(result => this.onTestEnded.trigger(result));
34
+ childSuite.onSuiteStarted.add(s => this.onSuiteStarted.trigger(s));
35
+ childSuite.onSuiteEnded.add(s => this.onSuiteEnded.trigger(s));
36
+ childSuite.parent = this;
37
+ this.childrenSuites.push(childSuite);
38
+ suiteFunction(childSuite);
39
+ }
40
+ test(title, testFunction) {
41
+ const location = (0, code_position_resolution_1.getFunctionCodeRange)(testFunction, this.test);
42
+ this.tests.push(new Test_1.Test(title, testFunction, this, location));
43
+ }
44
+ testFunc(namedTestFunction) {
45
+ const location = (0, code_position_resolution_1.getFunctionCodeRange)(namedTestFunction, this.testFunc);
46
+ this.tests.push(new Test_1.Test(this.getTitleFor(namedTestFunction), namedTestFunction, this, location));
47
+ }
48
+ testFuncs(...namedTestFunctions) {
49
+ for (const test of namedTestFunctions) {
50
+ const location = (0, code_position_resolution_1.getFunctionCodeRange)(test, this.testFuncs);
51
+ this.tests.push(new Test_1.Test(this.getTitleFor(test), test, this, location));
52
+ }
53
+ }
54
+ getTitleFor(func) {
55
+ return func.name.replace(/_/g, " ");
56
+ }
57
+ async run(params) {
58
+ this.onSuiteStarted.trigger(this);
59
+ const startTime = performance.now();
60
+ const testsPassed = await this.runDirectDescendantsTests(params);
61
+ const subSuitesPassed = await this.runSubSuites(params);
62
+ const passed = testsPassed && subSuitesPassed;
63
+ this.onSuiteEnded.trigger({
64
+ suite: this,
65
+ result: new SuiteRunResult_1.SuiteRunResult(this.title, performance.now() - startTime, this.getStatus(passed))
66
+ });
67
+ return passed;
68
+ }
69
+ getStatus(runPassed) {
70
+ if (!runPassed)
71
+ return SuiteRunResult_1.SuiteResultStatus.Failed;
72
+ if (this.isPartial)
73
+ return SuiteRunResult_1.SuiteResultStatus.Partial;
74
+ return SuiteRunResult_1.SuiteResultStatus.Passed;
75
+ }
76
+ treeShake(lowerCasedFilter) {
77
+ if (this.isTitlePassingFilter(lowerCasedFilter))
78
+ return true;
79
+ const originalTestsCount = this.tests.length;
80
+ const originalchildrenSuitesCount = this.childrenSuites.length;
81
+ this.tests = this.tests.filter(e => e.title.toLowerCase().includes(lowerCasedFilter));
82
+ this.childrenSuites = this.childrenSuites.filter(e => e.treeShake(lowerCasedFilter));
83
+ this.isPartial = this.calcIsPartial(originalTestsCount, originalchildrenSuitesCount);
84
+ return this.tests.length > 0 || this.childrenSuites.length > 0;
85
+ }
86
+ calcIsPartial(originalTestsCount, originalchildrenSuitesCount) {
87
+ return this.tests.length < originalTestsCount ||
88
+ this.childrenSuites.length < originalchildrenSuitesCount ||
89
+ this.childrenSuites.some(e => e.isPartial);
90
+ }
91
+ isTitlePassingFilter(lowerCasedFilter) {
92
+ return this.title.toLowerCase().includes(lowerCasedFilter.toLowerCase());
93
+ }
94
+ async runDirectDescendantsTests(testRunOptions) {
95
+ let passed = true;
96
+ for (let test of this.tests) {
97
+ this.onTestStarted.trigger(test);
98
+ let result = await test.run(testRunOptions);
99
+ passed = passed && result.passed;
100
+ this.onTestEnded.trigger({ test, result });
101
+ }
102
+ return passed;
103
+ }
104
+ async runSubSuites(params) {
105
+ let passed = true;
106
+ for (let suite of this.childrenSuites) {
107
+ let suitePassed = await suite.run(params);
108
+ passed = passed && suitePassed;
109
+ }
110
+ return passed;
111
+ }
112
+ }
113
+ exports.Suite = Suite;
114
+
115
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxhQUFhLENBQUMsa0JBQTBCLEVBQUUsMkJBQW1DO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsa0JBQWtCO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLDJCQUEyQjtZQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsZ0JBQXdCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sS0FBSyxDQUFDLHlCQUF5QixDQUFDLGNBQThCO1FBQ3JFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUVsQixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakMsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUVqQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFpQjtRQUMzQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbEIsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RDLElBQUksV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxNQUFNLEdBQUcsTUFBTSxJQUFJLFdBQVcsQ0FBQztTQUMvQjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztDQUNEO0FBaEpELHNCQWdKQyIsImZpbGUiOiJTdWl0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
package/lib/Test.d.ts CHANGED
@@ -1,15 +1,18 @@
1
1
  import { TestParams } from "just-test-api";
2
- import { TestRunResult } from "./TestRunResult";
3
- import { TestSuiteClass } from "./TestSuiteClass";
2
+ import { DiscoveredTest, FunctionCodeRange } from "./Discover";
3
+ import { TestRunResult } from "./run-results/TestRunResult";
4
+ import { Suite } from "./Suite";
4
5
  export interface TestRunOptions {
5
6
  debug: boolean;
6
7
  }
7
8
  export declare class Test {
8
9
  title: string;
9
10
  testFunction: (test: TestParams) => Promise<void> | void;
10
- parent: TestSuiteClass;
11
- constructor(title: string, testFunction: (test: TestParams) => Promise<void> | void, parent: TestSuiteClass);
11
+ parent: Suite;
12
+ location: FunctionCodeRange;
13
+ constructor(title: string, testFunction: (test: TestParams) => Promise<void> | void, parent: Suite, location: FunctionCodeRange);
14
+ discover(): DiscoveredTest;
12
15
  run(options: TestRunOptions): Promise<TestRunResult>;
13
- private isPromise(result);
14
- private timeout(promise, timeout);
16
+ private isPromise;
17
+ private withTimeout;
15
18
  }
package/lib/Test.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const TestRunResult_1 = require("./TestRunResult");
3
+ exports.Test = void 0;
4
+ const TestRunResult_1 = require("./run-results/TestRunResult");
4
5
  const TestStage_1 = require("./TestStage");
5
6
  class TestParamsClass {
6
7
  constructor() {
@@ -18,33 +19,36 @@ class TestParamsClass {
18
19
  }
19
20
  }
20
21
  class Test {
21
- constructor(title, testFunction, parent) {
22
+ constructor(title, testFunction, parent, location) {
22
23
  this.title = title;
23
24
  this.testFunction = testFunction;
24
25
  this.parent = parent;
26
+ this.location = location;
27
+ }
28
+ discover() {
29
+ return { title: this.title, location: this.location };
25
30
  }
26
31
  async run(options) {
27
- let testParams = new TestParamsClass();
32
+ const testParams = new TestParamsClass();
33
+ const startTime = performance.now();
28
34
  try {
29
35
  let result = this.testFunction(testParams);
30
36
  if (result && this.isPromise(result)) {
31
- if (options.debug) {
37
+ if (options.debug)
32
38
  await result;
33
- }
34
- else {
35
- await this.timeout(result, testParams.timeout);
36
- }
39
+ else
40
+ await this.withTimeout(result, testParams.timeout);
37
41
  }
42
+ return Promise.resolve(new TestRunResult_1.TestRunResult(this.title, performance.now() - startTime, testParams.stage, true));
38
43
  }
39
44
  catch (reason) {
40
- return Promise.resolve(new TestRunResult_1.TestRunResult(this, testParams.stage, false, reason));
45
+ return Promise.resolve(new TestRunResult_1.TestRunResult(this.title, performance.now() - startTime, testParams.stage, false, reason));
41
46
  }
42
- return Promise.resolve(new TestRunResult_1.TestRunResult(this, testParams.stage, true));
43
47
  }
44
48
  isPromise(result) {
45
49
  return typeof result.then === "function";
46
50
  }
47
- async timeout(promise, timeout) {
51
+ async withTimeout(promise, timeout) {
48
52
  let timer = undefined;
49
53
  let firstValue = await Promise.race([
50
54
  promise,
@@ -62,4 +66,4 @@ class Test {
62
66
  }
63
67
  exports.Test = Test;
64
68
 
65
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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
69
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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
@@ -2,5 +2,5 @@ export declare enum TestStage {
2
2
  NoStage = 0,
3
3
  Arrange = 1,
4
4
  Act = 2,
5
- Assert = 3,
5
+ Assert = 3
6
6
  }
package/lib/TestStage.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestStage = void 0;
3
4
  var TestStage;
4
5
  (function (TestStage) {
5
6
  TestStage[TestStage["NoStage"] = 0] = "NoStage";
@@ -8,4 +9,4 @@ var TestStage;
8
9
  TestStage[TestStage["Assert"] = 3] = "Assert";
9
10
  })(TestStage = exports.TestStage || (exports.TestStage = {}));
10
11
 
11
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlc3RTdGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNqQiwrQ0FBTyxDQUFBO0lBQ1AsK0NBQU8sQ0FBQTtJQUNQLHVDQUFHLENBQUE7SUFDSCw2Q0FBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBS3BCIiwiZmlsZSI6IlRlc3RTdGFnZS5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
12
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlc3RTdGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDakIsK0NBQU8sQ0FBQTtJQUNQLCtDQUFPLENBQUE7SUFDUCx1Q0FBRyxDQUFBO0lBQ0gsNkNBQU0sQ0FBQTtBQUNWLENBQUMsRUFMVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUtwQiIsImZpbGUiOiJUZXN0U3RhZ2UuanMiLCJzb3VyY2VSb290IjoiLi5cXHNyYyJ9
@@ -0,0 +1,2 @@
1
+ import { FunctionCodeRange } from "./Discover";
2
+ export declare function getFunctionCodeRange(func: Function, definingFunc: Function): FunctionCodeRange;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFunctionCodeRange = void 0;
4
+ const StackTrace_1 = require("./StackTrace");
5
+ function getFunctionCodeRange(func, definingFunc) {
6
+ const { filePath, callPosition } = getCallerPosition(definingFunc);
7
+ const endLocation = isInline(func) ?
8
+ getInlineFuncEndPosition(func, callPosition) :
9
+ callPosition;
10
+ const location = { filePath, start: callPosition, end: endLocation };
11
+ return location;
12
+ }
13
+ exports.getFunctionCodeRange = getFunctionCodeRange;
14
+ function getCallerPosition(func) {
15
+ const callSiteText = (0, StackTrace_1.getCallerLocationText)(func);
16
+ const separator2 = callSiteText.lastIndexOf(":");
17
+ const separator1 = callSiteText.lastIndexOf(":", separator2 - 1);
18
+ const filePath = callSiteText.slice(0, separator1);
19
+ const rowText = callSiteText.slice(separator1 + 1, separator2);
20
+ const columnText = callSiteText.slice(separator2 + 1);
21
+ const line = parseInt(rowText);
22
+ const column = parseInt(columnText);
23
+ return { filePath, callPosition: { line: line - 1, column: column - 1 } };
24
+ }
25
+ function getInlineFuncEndPosition(func, start) {
26
+ const position = getFuncRelativeEndPosition(func);
27
+ const endLine = start.line + position.line;
28
+ const endColumn = position.line == 0 ?
29
+ start.column :
30
+ position.column;
31
+ return { line: endLine, column: endColumn };
32
+ }
33
+ function getFuncRelativeEndPosition(func) {
34
+ let line = 0;
35
+ let column = 0;
36
+ const text = func.toString();
37
+ for (let i = 0; i < text.length; i++) {
38
+ if (text[i] == "\n") {
39
+ line++;
40
+ column = 0;
41
+ }
42
+ column++;
43
+ }
44
+ return { line, column };
45
+ }
46
+ function isInline(func) {
47
+ return func.name.length == 0;
48
+ }
49
+
50
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvZGUtcG9zaXRpb24tcmVzb2x1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBcUQ7QUFFckQsU0FBZ0Isb0JBQW9CLENBQUMsSUFBYyxFQUFFLFlBQXNCO0lBQzFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbkUsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDOUMsWUFBWSxDQUFDO0lBRWQsTUFBTSxRQUFRLEdBQXNCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRXhGLE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUM7QUFWRCxvREFVQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBYztJQUN4QyxNQUFNLFlBQVksR0FBRyxJQUFBLGtDQUFxQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUV0RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXBDLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNFLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQWMsRUFBRSxLQUFtQjtJQUNwRSxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFFM0MsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxRQUFRLENBQUMsTUFBTSxDQUFDO0lBRWpCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxJQUFjO0lBQ2pELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVmLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7UUFFRCxNQUFNLEVBQUUsQ0FBQztLQUNUO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBYztJQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDIiwiZmlsZSI6ImNvZGUtcG9zaXRpb24tcmVzb2x1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
@@ -2,58 +2,61 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function someFunction() { }
4
4
  function default_1(suite) {
5
- suite.describe("Some suite title", suite => {
6
- suite.describe("Pass suite", suite => {
7
- suite.test("Nothing", t => {
8
- });
9
- suite.test("Async", async (t) => {
10
- await Promise.resolve("Hi");
11
- });
12
- suite.describe(someFunction, suite => {
13
- suite.test("Nothing", t => {
14
- });
15
- });
5
+ suite.describe("Passing suite", suite => {
6
+ suite.test("Simple test", t => {
16
7
  });
17
- suite.describe("Fail suite", suite => {
18
- suite.test("No stage error", t => {
19
- throw "asdf";
20
- });
21
- suite.test("Arrage error", t => {
22
- t.arrange();
23
- throw "asdf";
24
- });
25
- suite.test("Act error", t => {
26
- t.act();
27
- throw "asdf";
28
- });
29
- suite.test("Assert error", t => {
30
- t.assert();
31
- throw "asdf";
32
- });
33
- suite.test("Throw Error", t => {
34
- t.assert();
35
- throw new Error("Some error message.");
36
- });
37
- suite.test("Throws after await", async (t) => {
38
- await new Promise(r => setTimeout(r, 1));
39
- t.assert();
40
- throw "error";
41
- });
42
- suite.test("Timeout reached.", async (t) => {
43
- t.timeout = 1;
44
- await new Promise(r => setTimeout(r, 100));
45
- });
8
+ suite.test("Async", async (t) => {
9
+ await Promise.resolve("Hi");
46
10
  });
47
- suite.describe("Pass suite 2", suite => {
48
- suite.test("Nothing", t => {
11
+ suite.describe(someFunction, suite => {
12
+ suite.test("Test", t => {
49
13
  });
50
14
  });
51
15
  });
52
- suite.describe("Some suite title2", suite => {
53
- suite.test("Nothing", t => {
16
+ suite.describe("Failing suite", suite => {
17
+ suite.test("No stage error", t => {
18
+ throw "asdf";
19
+ });
20
+ suite.test("Arrage error", t => {
21
+ t.arrange();
22
+ throw "asdf";
23
+ });
24
+ suite.test("Act error", t => {
25
+ t.act();
26
+ throw "asdf";
27
+ });
28
+ suite.test("Assert error", t => {
29
+ t.assert();
30
+ throw "asdf";
31
+ });
32
+ suite.test("Throw Error", t => {
33
+ t.assert();
34
+ throw new Error("Some error message.");
35
+ });
36
+ suite.test("Throws after await", async (t) => {
37
+ await new Promise(r => setTimeout(r, 1));
38
+ t.assert();
39
+ throw "error";
40
+ });
41
+ suite.test("Timeout reached.", async (t) => {
42
+ t.timeout = 1;
43
+ await new Promise(r => setTimeout(r, 100));
54
44
  });
55
45
  });
46
+ suite.describe("Empty suite", suite => {
47
+ });
48
+ suite.describe("Named functions", suite => {
49
+ suite.testFunc(named_function_test_with_spaces);
50
+ suite.testFunc(function inline_function() { });
51
+ suite.testFuncs(test1, test2);
52
+ });
56
53
  }
57
54
  exports.default = default_1;
55
+ function named_function_test_with_spaces(t) {
56
+ }
57
+ function test1(t) {
58
+ }
59
+ function test2(t) {
60
+ }
58
61
 
59
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4YW1wbGVUZXN0RmlsZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsMEJBQTBCLENBQUM7QUFFM0IsbUJBQXlCLEtBQWdCO0lBQ3hDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFFMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFFcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQzdCLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFFcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUMzQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQzFDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXpDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLE9BQU8sQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQ3hDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBRXRDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUosQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFyRUQsNEJBcUVDIiwiZmlsZSI6ImV4YW1wbGVUZXN0RmlsZS50ZXN0LmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4YW1wbGVUZXN0RmlsZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBUyxZQUFZLEtBQUssQ0FBQztBQUUzQixtQkFBeUIsS0FBZ0I7SUFDeEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFFdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDN0IsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFFdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNoQyxNQUFNLE1BQU0sQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxNQUFNLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQzNCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNSLE1BQU0sTUFBTSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUM5QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLE1BQU0sQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDMUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6QyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLE9BQU8sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDeEMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDZCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRTtJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDekMsS0FBSyxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0MsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBL0RELDRCQStEQztBQUVELFNBQVMsK0JBQStCLENBQUMsQ0FBYTtBQUN0RCxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUMsQ0FBYTtBQUM1QixDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUMsQ0FBYTtBQUM1QixDQUFDIiwiZmlsZSI6ImV4YW1wbGVUZXN0RmlsZS50ZXN0LmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
package/lib/help.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { OptionDefinition } from "./OptionsDefinition";
1
+ import { OptionDefinition } from "./OptionsDefinitions";
2
2
  export declare function printHelp(optionsDefinitions: OptionDefinition[]): void;
package/lib/help.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printHelp = void 0;
3
4
  function printHelp(optionsDefinitions) {
4
5
  console.log();
5
6
  console.log("Help");
@@ -19,4 +20,4 @@ function printHelp(optionsDefinitions) {
19
20
  }
20
21
  exports.printHelp = printHelp;
21
22
 
22
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxtQkFBMEIsa0JBQXNDO0lBQy9ELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNaLFlBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQztRQUVELFlBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDbkIsWUFBWSxJQUFJLGVBQWUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2hEO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFyQkQsOEJBcUJDIiwiZmlsZSI6ImhlbHAuanMiLCJzb3VyY2VSb290IjoiLi5cXHNyYyJ9
23
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsU0FBZ0IsU0FBUyxDQUFDLGtCQUFzQztJQUMvRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVkLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUM5QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWixZQUFZLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEM7UUFFRCxZQUFZLElBQUksS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ25CLFlBQVksSUFBSSxlQUFlLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNoRDtRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBckJELDhCQXFCQyIsImZpbGUiOiJoZWxwLmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
package/lib/index.d.ts CHANGED
@@ -1 +1,2 @@
1
+ #!/usr/bin/env node
1
2
  export {};