@travetto/scaffold 2.2.5 → 3.0.0-rc.1
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/README.md +1 -0
- package/bin/.trv_cache/.base~bin~build.ts +10 -0
- package/bin/.trv_cache/.base~bin~clean.ts +10 -0
- package/bin/.trv_cache/.base~bin~cli-build.ts +36 -0
- package/bin/.trv_cache/.base~bin~cli-clean.ts +33 -0
- package/bin/.trv_cache/.base~bin~init.ts +25 -0
- package/bin/.trv_cache/.base~bin~lib~index.ts +44 -0
- package/bin/.trv_cache/.cli~bin~cli.ts +27 -0
- package/bin/.trv_cache/.cli~src~color.ts +21 -0
- package/bin/.trv_cache/.cli~src~command-manager.ts +62 -0
- package/bin/.trv_cache/.cli~src~command.ts +141 -0
- package/bin/.trv_cache/.cli~src~execute.ts +64 -0
- package/bin/.trv_cache/.cli~src~help.ts +62 -0
- package/bin/.trv_cache/.cli~src~util.ts +108 -0
- package/bin/.trv_cache/.doc~bin~cli-doc.ts +71 -0
- package/bin/.trv_cache/.test~bin~cli-test.ts +103 -0
- package/bin/.trv_cache/.test~bin~lib~run.ts +24 -0
- package/bin/.trv_cache/.test~bin~test-child.ts +37 -0
- package/bin/.trv_cache/.test~bin~test-direct.ts +26 -0
- package/bin/.trv_cache/.test~bin~test-watch.ts +25 -0
- package/bin/.trv_cache/isolated-modules.5381.json +26 -0
- package/bin/lib/features.ts +10 -3
- package/package.json +4 -3
- package/templates/todo/package.json.txt +4 -3
- package/templates/todo/src/rest/todo.ts +16 -13
package/README.md
CHANGED
|
@@ -84,6 +84,7 @@ import { NotFoundError } from '@travetto/model';
|
|
|
84
84
|
import { Inject } from '@travetto/di';
|
|
85
85
|
import { ModelQuery, ModelQueryCrudSupport } from '@travetto/model-query';
|
|
86
86
|
import { Schema } from '@travetto/schema';
|
|
87
|
+
import { AuthContextService } from '@travetto/auth-rest-context';
|
|
87
88
|
|
|
88
89
|
import { Todo } from '../model/todo';
|
|
89
90
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = void 0;
|
|
4
|
+
async function main() {
|
|
5
|
+
const { PhaseManager } = await Promise.resolve().then(() => require('@travetto/base'));
|
|
6
|
+
await PhaseManager.run('init', '@trv:base/transpile');
|
|
7
|
+
}
|
|
8
|
+
exports.main = main;
|
|
9
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdGltL0NvZGUvdHJhdmV0dG8vIiwic291cmNlcyI6WyJtb2R1bGUvYmFzZS9iaW4vYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR08sS0FBSyxVQUFVLElBQUk7SUFDeEIsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLDJDQUFhLGdCQUFnQixFQUFDLENBQUM7SUFFeEQsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFKRCxvQkFJQztBQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = void 0;
|
|
4
|
+
const cache_1 = require("@travetto/boot/src/cache");
|
|
5
|
+
async function main() {
|
|
6
|
+
cache_1.AppCache.clear();
|
|
7
|
+
}
|
|
8
|
+
exports.main = main;
|
|
9
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4uanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdGltL0NvZGUvdHJhdmV0dG8vIiwic291cmNlcyI6WyJtb2R1bGUvYmFzZS9iaW4vY2xlYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQW9EO0FBSzdDLEtBQUssVUFBVSxJQUFJO0lBQ3hCLGdCQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsQ0FBQztBQUZELG9CQUVDO0FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseBuildCommand = void 0;
|
|
4
|
+
const color_1 = require("@travetto/cli/src/color");
|
|
5
|
+
const command_1 = require("@travetto/cli/src/command");
|
|
6
|
+
const lib_1 = require("./lib");
|
|
7
|
+
class BaseBuildCommand extends command_1.CliCommand {
|
|
8
|
+
name = 'build';
|
|
9
|
+
async build() { }
|
|
10
|
+
getOptions() {
|
|
11
|
+
return {
|
|
12
|
+
output: this.option({ desc: 'Output directory', completion: true }),
|
|
13
|
+
quiet: this.boolOption({ desc: 'Quiet operation' })
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
async action() {
|
|
17
|
+
if (this.cmd.output) {
|
|
18
|
+
process.env.TRV_CACHE = this.cmd.output;
|
|
19
|
+
}
|
|
20
|
+
const { AppCache } = await Promise.resolve().then(() => require('@travetto/boot'));
|
|
21
|
+
const path = this.cmd.output ?? AppCache.cacheDir;
|
|
22
|
+
try {
|
|
23
|
+
await lib_1.BuildUtil.build(process.env);
|
|
24
|
+
if (!this.cmd.quiet) {
|
|
25
|
+
console.log((0, color_1.color) `${{ success: 'Successfully' }} wrote to ${{ path }}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
console.error((0, color_1.color) `${{ failure: 'Failed' }} to compile to ${{ path }}`, err);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.BaseBuildCommand = BaseBuildCommand;
|
|
35
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJ1aWxkLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3RpbS9Db2RlL3RyYXZldHRvLyIsInNvdXJjZXMiOlsibW9kdWxlL2Jhc2UvYmluL2NsaS1idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBZ0Q7QUFDaEQsdURBQXFFO0FBRXJFLCtCQUFrQztBQVdsQyxNQUFhLGdCQUFpQixTQUFRLG9CQUFtQjtJQUV2RCxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRU4sS0FBSyxDQUFDLEtBQUssS0FBb0IsQ0FBQztJQUV6QyxVQUFVO1FBQ1IsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNuRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1NBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1NBQ3pDO1FBRUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLDJDQUFhLGdCQUFnQixFQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUVsRCxJQUFJO1lBQ0YsTUFBTSxlQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLE9BQVEsQ0FBQyxHQUFHLENBQUMsSUFBQSxhQUFLLEVBQUEsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMxRTtTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUEsYUFBSyxFQUFBLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtJQUNILENBQUM7Q0FDRjtBQWhDRCw0Q0FnQ0M7QUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseCleanCommand = void 0;
|
|
4
|
+
const fs = require("fs/promises");
|
|
5
|
+
const color_1 = require("@travetto/cli/src/color");
|
|
6
|
+
const command_1 = require("@travetto/cli/src/command");
|
|
7
|
+
const boot_1 = require("@travetto/boot");
|
|
8
|
+
class BaseCleanCommand extends command_1.CliCommand {
|
|
9
|
+
name = 'clean';
|
|
10
|
+
async build() { }
|
|
11
|
+
getOptions() {
|
|
12
|
+
return { quiet: this.boolOption({ desc: 'Quiet operation' }) };
|
|
13
|
+
}
|
|
14
|
+
async action() {
|
|
15
|
+
for (const el of await fs.readdir(boot_1.PathUtil.cwd)) {
|
|
16
|
+
if (el.startsWith('.trv') && (await fs.stat(el)).isDirectory()) {
|
|
17
|
+
const cache = new boot_1.FileCache(el);
|
|
18
|
+
try {
|
|
19
|
+
cache.clear(true);
|
|
20
|
+
if (!this.cmd.quiet) {
|
|
21
|
+
console.log((0, color_1.color) `${{ success: 'Successfully' }} deleted temp dir ${{ path: cache.cacheDir }}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
console.error((0, color_1.color) `${{ failure: 'Failed' }} to delete temp dir ${{ path: cache.cacheDir }}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.BaseCleanCommand = BaseCleanCommand;
|
|
32
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNsZWFuLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3RpbS9Db2RlL3RyYXZldHRvLyIsInNvdXJjZXMiOlsibW9kdWxlL2Jhc2UvYmluL2NsaS1jbGVhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrQ0FBa0M7QUFFbEMsbURBQWdEO0FBQ2hELHVEQUFxRTtBQUNyRSx5Q0FBcUQ7QUFXckQsTUFBYSxnQkFBaUIsU0FBUSxvQkFBbUI7SUFFdkQsSUFBSSxHQUFHLE9BQU8sQ0FBQztJQUVOLEtBQUssQ0FBQyxLQUFLLEtBQW9CLENBQUM7SUFFekMsVUFBVTtRQUNSLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixLQUFLLE1BQU0sRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksZ0JBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEMsSUFBSTtvQkFDRixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7d0JBQ25CLE9BQVEsQ0FBQyxHQUFHLENBQUMsSUFBQSxhQUFLLEVBQUEsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7cUJBQ2xHO2lCQUNGO2dCQUFDLE1BQU07b0JBQ04sT0FBUSxDQUFDLEtBQUssQ0FBQyxJQUFBLGFBQUssRUFBQSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDaEc7YUFDRjtTQUNGO0lBQ0gsQ0FBQztDQUNGO0FBekJELDRDQXlCQztBQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnvInit = void 0;
|
|
4
|
+
const env_1 = require("@travetto/boot/src/env");
|
|
5
|
+
class EnvInit {
|
|
6
|
+
static addToList(k, ...items) {
|
|
7
|
+
process.env[k] = [...new Set(env_1.EnvUtil.getList(k, items))].join(',');
|
|
8
|
+
}
|
|
9
|
+
static init({ env, dynamic, debug, set, append } = {}) {
|
|
10
|
+
process.env.TRV_ENV = env ?? process.env.TRV_ENV ?? process.env.NODE_ENV ?? 'dev';
|
|
11
|
+
const prod = /^prod(uction)$/i.test(process.env.TRV_ENV);
|
|
12
|
+
dynamic ??= env_1.EnvUtil.isTrue('TRV_DYNAMIC');
|
|
13
|
+
Object.assign(process.env, {
|
|
14
|
+
NODE_ENV: prod ? 'production' : 'development',
|
|
15
|
+
...(dynamic !== undefined ? { TRV_DYNAMIC: `${dynamic}` } : {}),
|
|
16
|
+
TRV_DEBUG: env_1.EnvUtil.get('TRV_DEBUG', env_1.EnvUtil.get('DEBUG', debug ?? (prod ? '0' : '')))
|
|
17
|
+
}, set ?? {});
|
|
18
|
+
for (const [key, values] of Object.entries(append ?? {})) {
|
|
19
|
+
this.addToList(key, ...((typeof values === 'string' ? [values] : values) ?? []));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.EnvInit = EnvInit;
|
|
24
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS9iYXNlL2Jpbi9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUFpRDtBQVlqRCxNQUFhLE9BQU87SUFLbEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFTLEVBQUUsR0FBRyxLQUFlO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGFBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUtELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFpQixFQUFFO1FBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDbEYsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsT0FBTyxLQUFLLGFBQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYTtZQUM3QyxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0QsU0FBUyxFQUFFLGFBQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLGFBQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RGLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNsRjtJQUNILENBQUM7Q0FDRjtBQTNCRCwwQkEyQkM7QUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildUtil = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const util_1 = require("@travetto/cli/src/util");
|
|
6
|
+
const boot_1 = require("@travetto/boot");
|
|
7
|
+
const source_1 = require("@travetto/boot/src/internal/source");
|
|
8
|
+
class BuildUtil {
|
|
9
|
+
static async build(env) {
|
|
10
|
+
if (boot_1.EnvUtil.isReadonly()) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const output = env?.TRV_CACHE ?? '';
|
|
14
|
+
boot_1.AppCache.init();
|
|
15
|
+
const { AppManifest } = await Promise.resolve().then(() => require('@travetto/base/src/manifest'));
|
|
16
|
+
let expired;
|
|
17
|
+
let missing;
|
|
18
|
+
for (const entry of source_1.SourceIndex.findByFolders(AppManifest.source)) {
|
|
19
|
+
try {
|
|
20
|
+
if (boot_1.FileCache.isOlder(boot_1.AppCache.statEntry(entry.file), (0, fs_1.statSync)(entry.file))) {
|
|
21
|
+
expired = entry;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
missing = entry;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (!missing && !expired) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
return util_1.CliUtil.waiting(`Building... ${output}`, boot_1.ExecUtil.workerMain(require.resolve('../build'), [], {
|
|
34
|
+
env: {
|
|
35
|
+
...(output ? { TRV_CACHE: output } : {}),
|
|
36
|
+
...(env ?? {})
|
|
37
|
+
},
|
|
38
|
+
stderr: false
|
|
39
|
+
}).result);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.BuildUtil = BuildUtil;
|
|
43
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdGltL0NvZGUvdHJhdmV0dG8vIiwic291cmNlcyI6WyJtb2R1bGUvYmFzZS9iaW4vbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUE4QjtBQUU5QixpREFBaUQ7QUFDakQseUNBQXdFO0FBQ3hFLCtEQUE4RTtBQUs5RSxNQUFhLFNBQVM7SUFLcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBd0M7UUFDekQsSUFBSSxjQUFPLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBRUQsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDcEMsZUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWhCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRywyQ0FBYSw2QkFBNkIsRUFBQyxDQUFDO1FBRXBFLElBQUksT0FBZ0MsQ0FBQztRQUNyQyxJQUFJLE9BQWdDLENBQUM7UUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxvQkFBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakUsSUFBSTtnQkFDRixJQUFJLGdCQUFTLENBQUMsT0FBTyxDQUFDLGVBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUEsYUFBUSxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO29CQUMzRSxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNoQixNQUFNO2lCQUNQO2FBQ0Y7WUFBQyxNQUFNO2dCQUNOLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ2hCLE1BQU07YUFDUDtTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFHRCxPQUFPLGNBQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxNQUFNLEVBQUUsRUFDNUMsZUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNuRCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7YUFDZjtZQUNELE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDLE1BQU0sQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNUNELDhCQTRDQztBQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = void 0;
|
|
4
|
+
const path_1 = require("@travetto/boot/src/path");
|
|
5
|
+
const module_1 = require("@travetto/boot/src/internal/module");
|
|
6
|
+
const source_1 = require("@travetto/boot/src/internal/source");
|
|
7
|
+
const boot_1 = require("@travetto/boot");
|
|
8
|
+
async function main() {
|
|
9
|
+
if (!boot_1.EnvUtil.isFalse('TRV_CLI_LOCAL') && !path_1.PathUtil.toUnix(__filename).includes(path_1.PathUtil.cwd)) {
|
|
10
|
+
console.error(`
|
|
11
|
+
The @travetto/cli is not intended to be installed globally. Please install it within your local project
|
|
12
|
+
|
|
13
|
+
npm i --save-dev @travetto/cli
|
|
14
|
+
|
|
15
|
+
and invoke it locally using
|
|
16
|
+
|
|
17
|
+
npx trv
|
|
18
|
+
`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
module_1.ModuleManager.transpileAll(source_1.SourceIndex.find({ folder: 'bin' }));
|
|
22
|
+
const { ExecutionManager } = await Promise.resolve().then(() => require('@travetto/cli/src/execute'));
|
|
23
|
+
return ExecutionManager.run(process.argv);
|
|
24
|
+
}
|
|
25
|
+
exports.main = main;
|
|
26
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3RpbS9Db2RlL3RyYXZldHRvLyIsInNvdXJjZXMiOlsibW9kdWxlL2NsaS9iaW4vY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUFtRDtBQUNuRCwrREFBbUU7QUFDbkUsK0RBQWlFO0FBQ2pFLHlDQUF5QztBQUtsQyxLQUFLLFVBQVUsSUFBSTtJQUN4QixJQUFJLENBQUMsY0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM1RixPQUFPLENBQUMsS0FBSyxDQUFDOzs7Ozs7OztDQVFqQixDQUFDLENBQUM7UUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBR0Qsc0JBQWEsQ0FBQyxZQUFZLENBQUMsb0JBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWhFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLDJDQUFhLDJCQUEyQixFQUFDLENBQUM7SUFDdkUsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFuQkQsb0JBbUJDO0FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.color = void 0;
|
|
4
|
+
const color_1 = require("@travetto/boot/src/color");
|
|
5
|
+
const colorSet = {
|
|
6
|
+
input: color_1.ColorUtil.makeColorer('yellow'),
|
|
7
|
+
output: color_1.ColorUtil.makeColorer('magenta'),
|
|
8
|
+
path: color_1.ColorUtil.makeColorer('cyan'),
|
|
9
|
+
success: color_1.ColorUtil.makeColorer('green', 'bold'),
|
|
10
|
+
failure: color_1.ColorUtil.makeColorer('red', 'bold'),
|
|
11
|
+
param: color_1.ColorUtil.makeColorer('green'),
|
|
12
|
+
type: color_1.ColorUtil.makeColorer('cyan'),
|
|
13
|
+
description: color_1.ColorUtil.makeColorer('white', 'faint', 'bold'),
|
|
14
|
+
title: color_1.ColorUtil.makeColorer('white', 'bold'),
|
|
15
|
+
identifier: color_1.ColorUtil.makeColorer('blue', 'bold'),
|
|
16
|
+
subtitle: color_1.ColorUtil.makeColorer('white'),
|
|
17
|
+
subsubtitle: color_1.ColorUtil.makeColorer('white', 'faint')
|
|
18
|
+
};
|
|
19
|
+
exports.color = color_1.ColorUtil.makeTemplate(colorSet);
|
|
20
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdGltL0NvZGUvdHJhdmV0dG8vIiwic291cmNlcyI6WyJtb2R1bGUvY2xpL3NyYy9jb2xvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBcUQ7QUFFckQsTUFBTSxRQUFRLEdBQUc7SUFDZixLQUFLLEVBQUUsaUJBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3RDLE1BQU0sRUFBRSxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDeEMsSUFBSSxFQUFFLGlCQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUMvQyxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUM3QyxLQUFLLEVBQUUsaUJBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQ3JDLElBQUksRUFBRSxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDbkMsV0FBVyxFQUFFLGlCQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQzVELEtBQUssRUFBRSxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQzdDLFVBQVUsRUFBRSxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2pELFFBQVEsRUFBRSxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDeEMsV0FBVyxFQUFFLGlCQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7Q0FDNUMsQ0FBQztBQVVFLFFBQUEsS0FBSyxHQUFHLGlCQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBSXRELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliCommandManager = void 0;
|
|
4
|
+
const source_1 = require("@travetto/boot/src/internal/source");
|
|
5
|
+
const color_1 = require("./color");
|
|
6
|
+
const command_1 = require("./command");
|
|
7
|
+
const COMMAND_PACKAGE = [
|
|
8
|
+
[/^run$/, 'app', true],
|
|
9
|
+
[/^compile$/, 'compiler', true],
|
|
10
|
+
[/^test$/, 'test', false],
|
|
11
|
+
[/^command:service$/, 'command', true],
|
|
12
|
+
[/^model:(install|export)$/, 'model', true],
|
|
13
|
+
[/^openapi:(spec|client)$/, 'openapi', true],
|
|
14
|
+
[/^email:(compile|dev)$/, 'email-template', false],
|
|
15
|
+
[/^pack(:assemble|:zip|:docker)?$/, 'pack', false],
|
|
16
|
+
];
|
|
17
|
+
class CliCommandManager {
|
|
18
|
+
static getCommandMapping() {
|
|
19
|
+
const all = new Map();
|
|
20
|
+
for (const { file } of source_1.SourceIndex.find({ folder: 'bin', filter: /bin\/cli-/ })) {
|
|
21
|
+
all.set(file.replace(/^.*\/bin\/.+?-(.*?)[.][^.]*$/, (_, f) => f), file);
|
|
22
|
+
}
|
|
23
|
+
return all;
|
|
24
|
+
}
|
|
25
|
+
static async loadCommand(cmd, op) {
|
|
26
|
+
const command = cmd.replace(/:/g, '_');
|
|
27
|
+
const f = this.getCommandMapping().get(command);
|
|
28
|
+
if (!f) {
|
|
29
|
+
const cfg = COMMAND_PACKAGE.find(([re]) => re.test(cmd));
|
|
30
|
+
if (cfg) {
|
|
31
|
+
const [, pkg, prod] = cfg;
|
|
32
|
+
console.error((0, color_1.color) `
|
|
33
|
+
${{ title: 'Missing Package' }}\n${'-'.repeat(20)}\nTo use ${{ input: cmd }} please run:\n
|
|
34
|
+
${{ identifier: `npm i ${prod ? '' : '--save-dev '}@travetto/${pkg}` }}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`Unknown command: ${cmd}`);
|
|
38
|
+
}
|
|
39
|
+
const values = Object.values(await Promise.resolve().then(() => require(f)));
|
|
40
|
+
for (const v of values) {
|
|
41
|
+
try {
|
|
42
|
+
const inst = new v();
|
|
43
|
+
if (inst instanceof command_1.CliCommand) {
|
|
44
|
+
if (op) {
|
|
45
|
+
await op(inst);
|
|
46
|
+
}
|
|
47
|
+
return inst;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch { }
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`Not a valid command: ${cmd}`);
|
|
53
|
+
}
|
|
54
|
+
static async loadAllCommands(op) {
|
|
55
|
+
return Promise.all([...this.getCommandMapping().keys()]
|
|
56
|
+
.sort((a, b) => a.localeCompare(b))
|
|
57
|
+
.map(k => this.loadCommand(k, op)));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.CliCommandManager = CliCommandManager;
|
|
61
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3RpbS9Db2RlL3RyYXZldHRvLyIsInNvdXJjZXMiOlsibW9kdWxlL2NsaS9zcmMvY29tbWFuZC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUFpRTtBQUVqRSxtQ0FBZ0M7QUFDaEMsdUNBQXVDO0FBRXZDLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7SUFDdEIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQztJQUMvQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO0lBQ3pCLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQztJQUN0QyxDQUFDLDBCQUEwQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDM0MsQ0FBQyx5QkFBeUIsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO0lBQzVDLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO0lBQ2xELENBQUMsaUNBQWlDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztDQUMxQyxDQUFDO0FBS1gsTUFBYSxpQkFBaUI7SUFLNUIsTUFBTSxDQUFDLGlCQUFpQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUN0QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxvQkFBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7WUFDL0UsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUU7UUFDRCxPQUFPLEdB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
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliCommand = void 0;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const help_1 = require("./help");
|
|
6
|
+
const util_1 = require("./util");
|
|
7
|
+
class CliCommand {
|
|
8
|
+
#cmd;
|
|
9
|
+
allowUnknownOptions = false;
|
|
10
|
+
option(cfg) {
|
|
11
|
+
if ('combine' in cfg && cfg.combine && cfg.def !== undefined && !Array.isArray(cfg.def)) {
|
|
12
|
+
cfg.def = cfg.combine(`${cfg.def}`, cfg.def);
|
|
13
|
+
}
|
|
14
|
+
return { type: String, ...cfg };
|
|
15
|
+
}
|
|
16
|
+
choiceOption({ choices, ...cfg }) {
|
|
17
|
+
const config = {
|
|
18
|
+
type: String,
|
|
19
|
+
combine: (v, acc) => choices.includes(v) ? v : acc,
|
|
20
|
+
choices,
|
|
21
|
+
completion: true,
|
|
22
|
+
...cfg
|
|
23
|
+
};
|
|
24
|
+
return config;
|
|
25
|
+
}
|
|
26
|
+
listOption(cfg) {
|
|
27
|
+
return {
|
|
28
|
+
type: String,
|
|
29
|
+
def: [],
|
|
30
|
+
combine: (v, acc) => acc.concat(v),
|
|
31
|
+
completion: true,
|
|
32
|
+
...cfg
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
boolOption(cfg) {
|
|
36
|
+
return {
|
|
37
|
+
type: Boolean,
|
|
38
|
+
combine: util_1.CliUtil.toBool.bind(util_1.CliUtil),
|
|
39
|
+
completion: true,
|
|
40
|
+
...cfg
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
intOption({ lower, upper, ...cfg }) {
|
|
44
|
+
return {
|
|
45
|
+
type: Number,
|
|
46
|
+
combine: util_1.CliUtil.toInt.bind(util_1.CliUtil, lower, upper),
|
|
47
|
+
...cfg
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async build() {
|
|
51
|
+
await (await Promise.resolve().then(() => require('@travetto/base/bin/lib/')))
|
|
52
|
+
.BuildUtil.build();
|
|
53
|
+
}
|
|
54
|
+
get cmd() {
|
|
55
|
+
return this.#cmd.opts();
|
|
56
|
+
}
|
|
57
|
+
get args() {
|
|
58
|
+
return this.#cmd.args;
|
|
59
|
+
}
|
|
60
|
+
async showHelp(err, extra) {
|
|
61
|
+
if (err && typeof err !== 'string') {
|
|
62
|
+
err = err.message;
|
|
63
|
+
}
|
|
64
|
+
help_1.HelpUtil.showHelp(this.#cmd, err, extra || (await this.help?.()) || '');
|
|
65
|
+
}
|
|
66
|
+
async finalizeOptions() {
|
|
67
|
+
const opts = this.getOptions?.();
|
|
68
|
+
const used = new Set();
|
|
69
|
+
return (opts ? Object.entries(opts) : []).map(([k, cfg]) => {
|
|
70
|
+
cfg.key = k;
|
|
71
|
+
cfg.name ??= k.replace(/([a-z])([A-Z])/g, (_, l, r) => `${l}-${r.toLowerCase()}`);
|
|
72
|
+
if (cfg.short === undefined) {
|
|
73
|
+
cfg.short = cfg.name.charAt(0);
|
|
74
|
+
if (used.has(cfg.short)) {
|
|
75
|
+
delete cfg.short;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
used.add(cfg.short);
|
|
79
|
+
return cfg;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async setup(cmd) {
|
|
83
|
+
cmd = cmd.command(this.name);
|
|
84
|
+
if (this.allowUnknownOptions) {
|
|
85
|
+
cmd = cmd.allowUnknownOption(true);
|
|
86
|
+
}
|
|
87
|
+
if (this.init) {
|
|
88
|
+
cmd = await this.init?.(cmd);
|
|
89
|
+
}
|
|
90
|
+
if (this.getArgs) {
|
|
91
|
+
cmd = cmd.arguments(this.getArgs?.());
|
|
92
|
+
}
|
|
93
|
+
for (const cfg of await this.finalizeOptions()) {
|
|
94
|
+
let key = `${cfg.short ? `-${cfg.short}, ` : ''}--${cfg.name}`;
|
|
95
|
+
if (cfg.type !== Boolean || cfg.def) {
|
|
96
|
+
key = `${key} <${cfg.name}>`;
|
|
97
|
+
}
|
|
98
|
+
cmd = cfg.combine ? cmd.option(key, cfg.desc, cfg.combine, cfg.def) : cmd.option(key, cfg.desc, (cur, acc) => cur, cfg.def);
|
|
99
|
+
}
|
|
100
|
+
cmd = cmd.action(this.runAction.bind(this));
|
|
101
|
+
return this.#cmd = cmd;
|
|
102
|
+
}
|
|
103
|
+
async runAction(...args) {
|
|
104
|
+
await this.envInit?.();
|
|
105
|
+
await this.build();
|
|
106
|
+
if (process.env.TRV_CLI_JSON_IPC && this.jsonIpc) {
|
|
107
|
+
const data = await this.jsonIpc(...args);
|
|
108
|
+
if (data !== undefined) {
|
|
109
|
+
const payload = JSON.stringify({ type: this.name, data });
|
|
110
|
+
await (0, promises_1.appendFile)(process.env.TRV_CLI_JSON_IPC, `${payload}\n`);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return await this.action(...args);
|
|
115
|
+
}
|
|
116
|
+
async setupCompletion(config) {
|
|
117
|
+
const task = await this.complete();
|
|
118
|
+
config.all = [...config.all, this.name];
|
|
119
|
+
if (task) {
|
|
120
|
+
config.task[this.name] = task;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async complete() {
|
|
124
|
+
const out = { '': [] };
|
|
125
|
+
for (const el of await this.finalizeOptions()) {
|
|
126
|
+
if (el.completion) {
|
|
127
|
+
out[''] = [...out[''], `--${el.name} `];
|
|
128
|
+
if ('choices' in el && el.choices) {
|
|
129
|
+
out[`--${el.name} `] = el.choices.map(x => `${x}`);
|
|
130
|
+
if (el.short) {
|
|
131
|
+
out[`- ${el.short} `] = el.choices.map(x => `${x}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.CliCommand = CliCommand;
|
|
140
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS9jbGkvc3JjL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQXlDO0FBSXpDLGlDQUFrQztBQUNsQyxpQ0FBaUM7QUFpQ2pDLE1BQXNCLFVBQVU7SUFJOUIsSUFBSSxDQUFvQjtJQUt4QixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUF5QzVCLE1BQU0sQ0FBdUQsR0FBTTtRQUNqRSxJQUFJLFNBQVMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZGLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUM7UUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFLRCxZQUFZLENBQWtGLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFLO1FBRWxILE1BQU0sTUFBTSxHQUFNO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLENBQUMsQ0FBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ3JELE9BQU87WUFDUCxVQUFVLEVBQUUsSUFBSTtZQUNoQixHQUFHLEdBQUc7U0FDUCxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUtELFVBQVUsQ0FBcUMsR0FBTTtRQUNuRCxPQUFPO1lBQ0ws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
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutionManager = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const util_1 = require("./util");
|
|
6
|
+
const command_manager_1 = require("./command-manager");
|
|
7
|
+
const help_1 = require("./help");
|
|
8
|
+
const package_json_1 = require("../package.json");
|
|
9
|
+
class ExecutionManager {
|
|
10
|
+
static async runCompletion(args) {
|
|
11
|
+
const cfg = { all: [], task: {} };
|
|
12
|
+
await command_manager_1.CliCommandManager.loadAllCommands(x => x.setupCompletion(cfg));
|
|
13
|
+
const res = await util_1.CliUtil.getCompletion(cfg, args.slice(3));
|
|
14
|
+
console.log(res.join(' '));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
static async runCommand(args) {
|
|
18
|
+
const cmd = args[2];
|
|
19
|
+
let command;
|
|
20
|
+
try {
|
|
21
|
+
command = await command_manager_1.CliCommandManager.loadCommand(cmd);
|
|
22
|
+
await command.setup(commander_1.program);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
return help_1.HelpUtil.showHelp(commander_1.program, `Unknown command ${cmd}`);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
if (args.includes('-h') || args.includes('--help')) {
|
|
29
|
+
return command.showHelp();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
commander_1.program.parse(args);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
if (!(err instanceof Error)) {
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
39
|
+
return command.showHelp(err);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static async run(args) {
|
|
43
|
+
const width = +(process.env.TRV_CONSOLE_WIDTH ?? process.stdout.columns ?? 120);
|
|
44
|
+
commander_1.program
|
|
45
|
+
.version(package_json_1.version)
|
|
46
|
+
.configureOutput({ getOutHelpWidth: () => width, getErrHelpWidth: () => width });
|
|
47
|
+
const cmd = args[2];
|
|
48
|
+
if (cmd === 'complete') {
|
|
49
|
+
await this.runCompletion(args);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (cmd && !cmd.startsWith('-')) {
|
|
53
|
+
await this.runCommand(args);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
await command_manager_1.CliCommandManager.loadAllCommands(x => x.setup(commander_1.program));
|
|
57
|
+
help_1.HelpUtil.showHelp(commander_1.program);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.ExecutionManager = ExecutionManager;
|
|
63
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS9jbGkvc3JjL2V4ZWN1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQWlEO0FBRWpELGlDQUFpQztBQUVqQyx1REFBc0Q7QUFDdEQsaUNBQWtDO0FBQ2xDLGtEQUEwQztBQUsxQyxNQUFhLGdCQUFnQjtJQUszQixNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFjO1FBQ3ZDLE1BQU0sR0FBRyxHQUFxQixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3BELE1BQU0sbUNBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU87SUFDVCxDQUFDO0lBS0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBYztRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsSUFBSSxPQUFPLENBQUM7UUFFWixJQUFJO1lBRUYsT0FBTyxHQUFHLE1BQU0sbUNBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBUyxDQUFDLENBQUM7U0FDaEM7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sZUFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBUyxFQUFFLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsSUFBSTtZQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNsRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUMzQjtpQkFBTTtnQkFDTCxtQkFBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sR0FBRyxDQUFDO2FBQ1g7WUFDRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBTUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBYztRQUM3QixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoRixtQkFBUzthQUNOLE9BQU8sQ0FBQyxzQkFBTyxDQUFDO2FBQ2hCLGVBQWUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFbkYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBCLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRTtZQUN0QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNMLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDL0IsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUVMLE1BQU0sbUNBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxtQkFBUyxDQUFDLENBQUMsQ0FBQztnQkFDakUsZUFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBUyxDQUFDLENBQUM7YUFDOUI7U0FDRjtJQUNILENBQUM7Q0FDRjtBQW5FRCw0Q0FtRUM7QUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HelpUtil = void 0;
|
|
4
|
+
const color_1 = require("./color");
|
|
5
|
+
class HelpUtil {
|
|
6
|
+
static extractValue(text, key) {
|
|
7
|
+
let sub = '';
|
|
8
|
+
if (text.includes(key)) {
|
|
9
|
+
const start = text.indexOf(key);
|
|
10
|
+
let end = text.indexOf('\n\n', start);
|
|
11
|
+
if (end < 0) {
|
|
12
|
+
end = text.length;
|
|
13
|
+
}
|
|
14
|
+
sub = text.substring(start, end);
|
|
15
|
+
text = text.substring(end);
|
|
16
|
+
}
|
|
17
|
+
return [sub, text];
|
|
18
|
+
}
|
|
19
|
+
static colorizeOptions(option) {
|
|
20
|
+
return option.replace(/(\s*)(-[^, ]+)(,?\s*)(--\S+)?((\s+)?((?:\[[^\]]+\])|(?:\<[^>]+>)))?((\s+)(.*))?/g, (p, spacing, simpleParam, pSep, fullParam, sub, subSp, subVal, desc, descSp, descVal) => {
|
|
21
|
+
const line = [];
|
|
22
|
+
line.push(spacing, (0, color_1.color) `${{ param: simpleParam }}`, pSep, (0, color_1.color) `${{ param: fullParam }}`, subSp, (0, color_1.color) `${{ type: subVal }}`, descSp, (0, color_1.color) `${{ description: descVal }}`
|
|
23
|
+
.replace(/(\(default:\s+)(.*?)(\))/g, (__, l, input, r) => (0, color_1.color) `${l}${{ input }}${{ description: r }}`));
|
|
24
|
+
return line.filter(x => !!x).join('');
|
|
25
|
+
})
|
|
26
|
+
.replace(/Options:/, title => (0, color_1.color) `${{ title }}`);
|
|
27
|
+
}
|
|
28
|
+
static colorizeCommands(commands) {
|
|
29
|
+
return commands
|
|
30
|
+
.replace(/\s([^\[\]]\S+)/g, param => (0, color_1.color) `${{ param }}`)
|
|
31
|
+
.replace(/(\s*[^\x1b]\[[^\]]+\])/g, input => (0, color_1.color) `${{ input }}`)
|
|
32
|
+
.replace(/Commands:/, title => (0, color_1.color) `${{ title }}`);
|
|
33
|
+
}
|
|
34
|
+
static colorizeUsage(usage) {
|
|
35
|
+
return usage.replace(/Usage:/, title => (0, color_1.color) `${{ title }}`);
|
|
36
|
+
}
|
|
37
|
+
static getHelpText(text, extraText) {
|
|
38
|
+
const [usage, text2] = this.extractValue(text, 'Usage:');
|
|
39
|
+
const [options, text3] = this.extractValue(text2, 'Options:');
|
|
40
|
+
const [commands, textFinal] = this.extractValue(text3, 'Commands:');
|
|
41
|
+
const out = [
|
|
42
|
+
this.colorizeUsage(usage),
|
|
43
|
+
this.colorizeOptions(options),
|
|
44
|
+
this.colorizeCommands(commands),
|
|
45
|
+
textFinal
|
|
46
|
+
]
|
|
47
|
+
.map(x => x.trim())
|
|
48
|
+
.filter(x => !!x)
|
|
49
|
+
.join('\n\n');
|
|
50
|
+
return `${[out, extraText].filter(x => !!x).join('\n')}\n`;
|
|
51
|
+
}
|
|
52
|
+
static showHelp(command, message, extra) {
|
|
53
|
+
if (message) {
|
|
54
|
+
console.error((0, color_1.color) `${{ failure: message }}\n`);
|
|
55
|
+
}
|
|
56
|
+
console[message ? 'error' : 'log'](HelpUtil.getHelpText(command.helpInformation(), extra));
|
|
57
|
+
process.exit(message ? 1 : 0);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.HelpUtil = HelpUtil;
|
|
61
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS9jbGkvc3JjL2hlbHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbUNBQWdDO0FBSWhDLE1BQWEsUUFBUTtJQU9uQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQVksRUFBRSxHQUFXO1FBQzNDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtnQkFDWCxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNuQjtZQUNELEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFVLENBQUM7SUFDOUIsQ0FBQztJQUtELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBYztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0ZBQWtGLEVBQUUsQ0FDeEcsQ0FBUyxFQUFFLE9BQWUsRUFDMUIsV0FBbUIsRUFBRSxJQUFZLEVBQ2pDLFNBQWlCLEVBQUUsR0FBVyxFQUM5QixLQUFhLEVBQUUsTUFBYyxFQUM3QixJQUFZLEVBQUUsTUFBYyxFQUM1QixPQUFlLEVBQ2YsRUFBRTtZQUNGLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUNQLE9B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
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliUtil = void 0;
|
|
4
|
+
const timers = require("timers/promises");
|
|
5
|
+
const readline = require("readline");
|
|
6
|
+
class CliUtil {
|
|
7
|
+
static #waitState = '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'.split('');
|
|
8
|
+
static isBoolean(x) {
|
|
9
|
+
return /^(1|0|yes|no|on|off|auto|true|false)$/i.test(x);
|
|
10
|
+
}
|
|
11
|
+
static toBool(x, def) {
|
|
12
|
+
return x === undefined ? def :
|
|
13
|
+
(typeof x === 'boolean' ? x :
|
|
14
|
+
(this.isBoolean(x) ? /^(1|yes|on|true)$/i.test(x) :
|
|
15
|
+
def));
|
|
16
|
+
}
|
|
17
|
+
static toInt(l, u, v, d) {
|
|
18
|
+
let n = +v;
|
|
19
|
+
if (l === undefined && u === undefined) {
|
|
20
|
+
return n;
|
|
21
|
+
}
|
|
22
|
+
if (l !== undefined && n < l) {
|
|
23
|
+
n = d;
|
|
24
|
+
}
|
|
25
|
+
if (u !== undefined && n > u) {
|
|
26
|
+
n = d;
|
|
27
|
+
}
|
|
28
|
+
return n;
|
|
29
|
+
}
|
|
30
|
+
static async getCompletion(cfg, args) {
|
|
31
|
+
args = args.slice(0);
|
|
32
|
+
const cmd = args.shift();
|
|
33
|
+
let last = cmd;
|
|
34
|
+
let opts = [];
|
|
35
|
+
if (!cfg.task[cmd]) {
|
|
36
|
+
opts = cfg.all;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
last = args.pop() ?? '';
|
|
40
|
+
const second = args.pop() ?? '';
|
|
41
|
+
let flag = '';
|
|
42
|
+
if (last in cfg.task[cmd]) {
|
|
43
|
+
flag = last;
|
|
44
|
+
last = '';
|
|
45
|
+
}
|
|
46
|
+
else if (second in cfg.task[cmd]) {
|
|
47
|
+
if (cfg.task[cmd][second].includes(last)) {
|
|
48
|
+
flag = '';
|
|
49
|
+
last = '';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
flag = second;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
opts = cfg.task[cmd][flag];
|
|
56
|
+
}
|
|
57
|
+
return last ? opts.filter(x => x.startsWith(last)) : opts.filter(x => !x.startsWith('-'));
|
|
58
|
+
}
|
|
59
|
+
static async rewriteLine(stream, text, clear = false) {
|
|
60
|
+
await new Promise(r => readline.cursorTo(stream, 0, undefined, () => {
|
|
61
|
+
if (clear) {
|
|
62
|
+
readline.clearLine(stream, 0);
|
|
63
|
+
}
|
|
64
|
+
if (text) {
|
|
65
|
+
stream.write(text);
|
|
66
|
+
readline.moveCursor(stream, 1, 0);
|
|
67
|
+
}
|
|
68
|
+
r();
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
static async waiting(message, work, config = {}) {
|
|
72
|
+
const { stream, delay, completion } = { delay: 1000, stream: process.stderr, ...config };
|
|
73
|
+
const writeLine = this.rewriteLine.bind(this, stream);
|
|
74
|
+
if (!('then' in work)) {
|
|
75
|
+
work = work();
|
|
76
|
+
}
|
|
77
|
+
if (!process.stdout.isTTY) {
|
|
78
|
+
return work;
|
|
79
|
+
}
|
|
80
|
+
let i = -1;
|
|
81
|
+
let done = false;
|
|
82
|
+
let value;
|
|
83
|
+
let capturedError;
|
|
84
|
+
const final = work
|
|
85
|
+
.then(res => value = res)
|
|
86
|
+
.catch(err => capturedError = err)
|
|
87
|
+
.finally(() => done = true);
|
|
88
|
+
if (delay) {
|
|
89
|
+
await Promise.race([timers.setTimeout(delay), final]);
|
|
90
|
+
}
|
|
91
|
+
while (!done) {
|
|
92
|
+
await writeLine(`${this.#waitState[i = (i + 1) % this.#waitState.length]} ${message}`);
|
|
93
|
+
await timers.setTimeout(50);
|
|
94
|
+
}
|
|
95
|
+
if (i >= 0) {
|
|
96
|
+
await writeLine(completion ? `${message} ${completion}\n` : '', true);
|
|
97
|
+
}
|
|
98
|
+
if (capturedError) {
|
|
99
|
+
throw capturedError;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.CliUtil = CliUtil;
|
|
107
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS9jbGkvc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQTBDO0FBQzFDLHFDQUFxQztBQVFyQyxNQUFhLE9BQU87SUFFbEIsTUFBTSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBUztRQUN4QixPQUFPLHdDQUF3QyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBSUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFvQixFQUFFLEdBQWE7UUFDL0MsT0FBTyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFxQixFQUFFLENBQXFCLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN0QyxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNQO1FBQ0QsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNQO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBS0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBcUIsRUFBRSxJQUFjO1FBQzlELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQztRQUUxQixJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7UUFHeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDaEI7YUFBTTtZQUVMLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBRWQsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekIsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDWixJQUFJLEdBQUcsRUFBRSxDQUFDO2FBQ1g7aUJBQU0sSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFFbEMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDeEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDVixJQUFJLEdBQUcsRUFBRSxDQUFDO2lCQUNYO3FCQUFNO29CQUNMLElBQUksR0FBRyxNQUFNLENBQUM7aUJBQ2Y7YUFDRjtZQUNELElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO1FBRUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBUUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBZ0IsRUFBRSxJQUFhLEVBQUUsS0FBSyxHQUFHLEtBQUs7UUFDckUsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3hFLElBQUksS0FBSyxFQUFFO2dCQUNULFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQVFELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFJLE9BQWUsRUFBRSxJQUFxQyxFQUM1RSxTQUFxRSxFQUFFO1FBRXZFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXpGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUU7WUFDckIsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLElBQUksS0FBb0IsQ0FBQztRQUN6QixJQUFJLGFBQWdDLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSTthQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7YUFDeEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQzthQUNqQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRTlCLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNaLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM3QjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNWLE1BQU0sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sYUFBYSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxPQUFPLEtBQU0sQ0FBQztTQUNmO0lBQ0gsQ0FBQzs7QUF2SUgsMEJBd0lDO0FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocCommand = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const fs = require("fs/promises");
|
|
6
|
+
const command_1 = require("@travetto/cli/src/command");
|
|
7
|
+
const init_1 = require("@travetto/base/bin/init");
|
|
8
|
+
const boot_1 = require("@travetto/boot");
|
|
9
|
+
class DocCommand extends command_1.CliCommand {
|
|
10
|
+
name = 'doc';
|
|
11
|
+
getOptions() {
|
|
12
|
+
return {
|
|
13
|
+
input: this.option({ desc: 'Input File', def: 'doc.ts' }),
|
|
14
|
+
output: this.listOption({ desc: 'Output files' }),
|
|
15
|
+
format: this.option({ desc: 'Format', def: 'md' }),
|
|
16
|
+
watch: this.boolOption({ desc: 'Watch' })
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
async envInit() {
|
|
20
|
+
init_1.EnvInit.init({
|
|
21
|
+
debug: '0',
|
|
22
|
+
append: {
|
|
23
|
+
TRV_SRC_LOCAL: 'doc',
|
|
24
|
+
TRV_RESOURCES: 'doc/resources'
|
|
25
|
+
},
|
|
26
|
+
set: {
|
|
27
|
+
TRV_CONSOLE_WIDTH: '140',
|
|
28
|
+
TRV_CLI_JSON_IPC: '',
|
|
29
|
+
TRV_COLOR: '0',
|
|
30
|
+
TRV_LOG_PLAIN: '1'
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async action() {
|
|
35
|
+
console.error(process.env);
|
|
36
|
+
const { PhaseManager } = await Promise.resolve().then(() => require('@travetto/base'));
|
|
37
|
+
await PhaseManager.run('init');
|
|
38
|
+
const { RenderUtil } = await Promise.resolve().then(() => require('../src/render/util'));
|
|
39
|
+
const docFile = boot_1.PathUtil.resolveUnix(this.cmd.input);
|
|
40
|
+
if (this.cmd.output.length) {
|
|
41
|
+
const write = async () => {
|
|
42
|
+
RenderUtil.purge(docFile);
|
|
43
|
+
for (const out of this.cmd.output) {
|
|
44
|
+
const fmt = path.extname(out) ?? this.cmd.format;
|
|
45
|
+
const finalName = await boot_1.PathUtil.resolveUnix(out);
|
|
46
|
+
const result = await RenderUtil.render(docFile, fmt);
|
|
47
|
+
await fs.writeFile(finalName, result, 'utf8');
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
if (this.cmd.watch) {
|
|
51
|
+
const { WatchUtil } = await Promise.resolve().then(() => require('@travetto/watch'));
|
|
52
|
+
await WatchUtil.watchFile(docFile, write, true);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
try {
|
|
56
|
+
await write();
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.error(boot_1.PathUtil.cwd, err);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.log(await RenderUtil.render(docFile, this.cmd.format));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.DocCommand = DocCommand;
|
|
70
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWRvYy5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS9kb2MvYmluL2NsaS1kb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLGtDQUFrQztBQUVsQyx1REFBdUY7QUFDdkYsa0RBQWtEO0FBQ2xELHlDQUEwQztBQVkxQyxNQUFhLFVBQVcsU0FBUSxvQkFBbUI7SUFDakQsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUViLFVBQVU7UUFDUixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN6RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1NBQzFDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxjQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSyxFQUFFLEdBQUc7WUFDVixNQUFNLEVBQUU7Z0JBQ04sYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLGFBQWEsRUFBRSxlQUFlO2FBQy9CO1lBQ0QsR0FBRyxFQUFFO2dCQUNILGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLGdCQUFnQixFQUFFLEVBQUU7Z0JBQ3BCLFNBQVMsRUFBRSxHQUFHO2dCQUNkLGFBQWEsRUFBRSxHQUFHO2FBQ25CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0IsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLDJDQUFhLGdCQUFnQixFQUFDLENBQUM7UUFFeEQsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRywyQ0FBYSxvQkFBb0IsRUFBQyxDQUFDO1FBRTFELE1BQU0sT0FBTyxHQUFHLGVBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUdyRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLElBQW1CLEVBQUU7Z0JBQ3RDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7b0JBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7b0JBQ2pELE1BQU0sU0FBUyxHQUFHLE1BQU0sZUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDckQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQy9DO1lBQ0gsQ0FBQyxDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDbEIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLDJDQUFhLGlCQUFpQixFQUFDLENBQUM7Z0JBQ3RELE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2pEO2lCQUFNO2dCQUNMLElBQUk7b0JBQ0YsTUFBTSxLQUFLLEVBQUUsQ0FBQztpQkFDZjtnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pCO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7Q0FDRjtBQWxFRCxnQ0FrRUM7QUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestCommand = void 0;
|
|
4
|
+
const os = require("os");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const boot_1 = require("@travetto/boot");
|
|
7
|
+
const command_1 = require("@travetto/cli/src/command");
|
|
8
|
+
const init_1 = require("@travetto/base/bin/init");
|
|
9
|
+
const modes = ['single', 'standard'];
|
|
10
|
+
class TestCommand extends command_1.CliCommand {
|
|
11
|
+
name = 'test';
|
|
12
|
+
_types;
|
|
13
|
+
getTypes() {
|
|
14
|
+
if (!this._types) {
|
|
15
|
+
this._types = boot_1.ScanFs.scanDirSync({}, boot_1.PathUtil.resolveUnix(__dirname, '..', 'src/consumer/types/'))
|
|
16
|
+
.filter(x => x.stats?.isFile())
|
|
17
|
+
.map(x => (0, fs_1.readFileSync)(x.file, 'utf8').match(/@Consumable[(]'([^']+)/)?.[1])
|
|
18
|
+
.filter((x) => !!x);
|
|
19
|
+
}
|
|
20
|
+
return this._types;
|
|
21
|
+
}
|
|
22
|
+
getOptions() {
|
|
23
|
+
return {
|
|
24
|
+
format: this.choiceOption({ desc: 'Output format for test results', def: 'tap', choices: this.getTypes() }),
|
|
25
|
+
concurrency: this.intOption({ desc: 'Number of tests to run concurrently', lower: 1, upper: 32, def: Math.min(4, os.cpus().length - 1) }),
|
|
26
|
+
isolated: this.boolOption({ desc: 'Isolated mode' }),
|
|
27
|
+
mode: this.choiceOption({ desc: 'Test run mode', def: 'standard', choices: [...modes] })
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
envInit() {
|
|
31
|
+
init_1.EnvInit.init({
|
|
32
|
+
debug: '0',
|
|
33
|
+
set: { TRV_LOG_TIME: '0' },
|
|
34
|
+
append: {
|
|
35
|
+
TRV_RESOURCES: 'test/resources',
|
|
36
|
+
TRV_PROFILES: 'test',
|
|
37
|
+
TRV_SRC_LOCAL: '^test',
|
|
38
|
+
TRV_SRC_COMMON: '^test-support'
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
getArgs() {
|
|
43
|
+
return '[regexes...]';
|
|
44
|
+
}
|
|
45
|
+
async isFile(file, errorIfNot) {
|
|
46
|
+
try {
|
|
47
|
+
const stat = await boot_1.FsUtil.exists(file);
|
|
48
|
+
const res = stat?.isFile();
|
|
49
|
+
if (res) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
if (errorIfNot) {
|
|
55
|
+
await this.showHelp(errorIfNot);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async onSingle(state, file) {
|
|
59
|
+
await this.isFile(file, 'You must specify a proper test file to run in single mode');
|
|
60
|
+
state.mode = 'single';
|
|
61
|
+
}
|
|
62
|
+
async onStandard(state, first) {
|
|
63
|
+
const isFile = await this.isFile(first);
|
|
64
|
+
if (!first) {
|
|
65
|
+
state.args = state.isolated ? ['test-isolated/.*'] : ['test/.*'];
|
|
66
|
+
state.concurrency = (state.isolated ? 1 : undefined) ?? state.concurrency;
|
|
67
|
+
}
|
|
68
|
+
else if (isFile) {
|
|
69
|
+
if (first.startsWith('test-')) {
|
|
70
|
+
state.isolated = true;
|
|
71
|
+
}
|
|
72
|
+
if (/test(\-[^-]+)?\//.test(first)) {
|
|
73
|
+
await this.onSingle(state, first);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
await this.showHelp('Only files in the test/ and test-*/ folders are permitted to be run');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async action(regexes) {
|
|
81
|
+
const { runTests } = await Promise.resolve().then(() => require('./lib/run'));
|
|
82
|
+
const [first] = regexes;
|
|
83
|
+
const state = {
|
|
84
|
+
args: regexes,
|
|
85
|
+
mode: this.cmd.mode,
|
|
86
|
+
concurrency: +this.cmd.concurrency,
|
|
87
|
+
isolated: this.cmd.isolated,
|
|
88
|
+
format: this.cmd.format
|
|
89
|
+
};
|
|
90
|
+
switch (state.mode) {
|
|
91
|
+
case 'single':
|
|
92
|
+
await this.onSingle(state, first);
|
|
93
|
+
break;
|
|
94
|
+
case 'standard':
|
|
95
|
+
await this.onStandard(state, first);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
await runTests(state);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.TestCommand = TestCommand;
|
|
102
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRlc3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdGltL0NvZGUvdHJhdmV0dG8vIiwic291cmNlcyI6WyJtb2R1bGUvdGVzdC9iaW4vY2xpLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDJCQUFrQztBQUVsQyx5Q0FBMEQ7QUFDMUQsdURBQXFFO0FBQ3JFLGtEQUFrRDtBQUlsRCxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQVUsQ0FBQztBQVk5QyxNQUFhLFdBQVksU0FBUSxvQkFBbUI7SUFDbEQsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNkLE1BQU0sQ0FBVztJQUVqQixRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFDakMsZUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQzdEO2lCQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7aUJBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUEsaUJBQVksRUFBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNFLE1BQU0sQ0FBQyxDQUFDLENBQVUsRUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdDQUFnQyxFQUFFLEdBQUcsRUFBRSxL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
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runTests = void 0;
|
|
4
|
+
async function runTests(opts) {
|
|
5
|
+
const { PhaseManager, Util } = await Promise.resolve().then(() => require('@travetto/base'));
|
|
6
|
+
await PhaseManager.run('init', '*', ['@trv:registry/init']);
|
|
7
|
+
const { RunnerUtil } = await Promise.resolve().then(() => require('../../src/execute/util'));
|
|
8
|
+
const { Runner } = await Promise.resolve().then(() => require('../../src/execute/runner'));
|
|
9
|
+
RunnerUtil.registerCleanup('runner');
|
|
10
|
+
if (process.env.TRV_TEST_DELAY) {
|
|
11
|
+
await Util.wait(process.env.TRV_TEST_DELAY);
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const res = await new Runner(opts).run();
|
|
15
|
+
process.exit(res ? 0 : 1);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
console.error('Test Worker Failed', { error: err });
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.runTests = runTests;
|
|
23
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3RpbS9Db2RlL3RyYXZldHRvLyIsInNvdXJjZXMiOlsibW9kdWxlL3Rlc3QvYmluL2xpYi9ydW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZU8sS0FBSyxVQUFVLFFBQVEsQ0FBQyxJQUFjO0lBQzNDLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsMkNBQWEsZ0JBQWdCLEVBQUMsQ0FBQztJQUM5RCxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUU1RCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsMkNBQWEsd0JBQXdCLEVBQUMsQ0FBQztJQUM5RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsMkNBQWEsMEJBQTBCLEVBQUMsQ0FBQztJQUU1RCxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXJDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7UUFDOUIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDN0M7SUFFRCxJQUFJO1FBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDO0FBcEJELDRCQW9CQztBQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = exports.customLogs = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const boot_1 = require("@travetto/boot");
|
|
6
|
+
const init_1 = require("@travetto/base/bin/init");
|
|
7
|
+
async function customLogs() {
|
|
8
|
+
const { ConsoleManager } = await Promise.resolve().then(() => require('@travetto/base'));
|
|
9
|
+
const c = new console.Console({
|
|
10
|
+
stdout: (0, fs_1.createWriteStream)(boot_1.AppCache.toEntryName(`test-worker.${process.pid}.log`), { flags: 'a' }),
|
|
11
|
+
inspectOptions: { depth: 4 },
|
|
12
|
+
});
|
|
13
|
+
ConsoleManager.set({
|
|
14
|
+
onLog: (level, ctx, args) => c[level](process.pid, ctx, ...args)
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
exports.customLogs = customLogs;
|
|
18
|
+
async function main() {
|
|
19
|
+
init_1.EnvInit.init({
|
|
20
|
+
debug: '0',
|
|
21
|
+
set: { TRV_LOG_TIME: '0' },
|
|
22
|
+
append: {
|
|
23
|
+
TRV_RESOURCES: 'test/resources',
|
|
24
|
+
TRV_PROFILES: 'test',
|
|
25
|
+
TRV_SRC_LOCAL: '^test',
|
|
26
|
+
TRV_SRC_COMMON: '^test-support'
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
await customLogs();
|
|
30
|
+
const { PhaseManager } = await Promise.resolve().then(() => require('@travetto/base'));
|
|
31
|
+
await PhaseManager.run('init', '@trv:base/load');
|
|
32
|
+
const { TestChildWorker } = await Promise.resolve().then(() => require('../src/worker/child'));
|
|
33
|
+
return new TestChildWorker().activate();
|
|
34
|
+
}
|
|
35
|
+
exports.main = main;
|
|
36
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jaGlsZC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS90ZXN0L2Jpbi90ZXN0LWNoaWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUF1QztBQUV2Qyx5Q0FBMEM7QUFDMUMsa0RBQWtEO0FBRTNDLEtBQUssVUFBVSxVQUFVO0lBQzlCLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRywyQ0FBYSxnQkFBZ0IsRUFBQyxDQUFDO0lBRTFELE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUM1QixNQUFNLEVBQUUsSUFBQSxzQkFBaUIsRUFBQyxlQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDakcsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM3QixDQUFDLENBQUM7SUFFSCxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQ2pCLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7S0FDNUUsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVhELGdDQVdDO0FBRU0sS0FBSyxVQUFVLElBQUk7SUFDeEIsY0FBTyxDQUFDLElBQUksQ0FBQztRQUNYLEtBQUssRUFBRSxHQUFHO1FBQ1YsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUMxQixNQUFNLEVBQUU7WUFDTixhQUFhLEVBQUUsZ0JBQWdCO1lBQy9CLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLGNBQWMsRUFBRSxlQUFlO1NBQ2hDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUVuQixNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsMkNBQWEsZ0JBQWdCLEVBQUMsQ0FBQztJQUN4RCxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFakQsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLDJDQUFhLHFCQUFxQixFQUFDLENBQUM7SUFDaEUsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzFDLENBQUM7QUFuQkQsb0JBbUJDO0FBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = void 0;
|
|
4
|
+
const init_1 = require("@travetto/base/bin/init");
|
|
5
|
+
const run_1 = require("./lib/run");
|
|
6
|
+
function main(...args) {
|
|
7
|
+
init_1.EnvInit.init({
|
|
8
|
+
debug: '0',
|
|
9
|
+
set: { TRV_LOG_TIME: '0' },
|
|
10
|
+
append: {
|
|
11
|
+
TRV_RESOURCES: 'test/resources',
|
|
12
|
+
TRV_PROFILES: 'test',
|
|
13
|
+
TRV_SRC_LOCAL: '^test',
|
|
14
|
+
TRV_SRC_COMMON: '^test-support'
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return (0, run_1.runTests)({
|
|
18
|
+
args,
|
|
19
|
+
format: process.env.TRV_TEST_FORMAT ?? 'tap',
|
|
20
|
+
mode: 'single',
|
|
21
|
+
concurrency: 1
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports.main = main;
|
|
25
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1kaXJlY3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvdGltL0NvZGUvdHJhdmV0dG8vIiwic291cmNlcyI6WyJtb2R1bGUvdGVzdC9iaW4vdGVzdC1kaXJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWtEO0FBQ2xELG1DQUFxQztBQUdyQyxTQUFnQixJQUFJLENBQUMsR0FBRyxJQUFjO0lBQ3BDLGNBQU8sQ0FBQyxJQUFJLENBQUM7UUFDWCxLQUFLLEVBQUUsR0FBRztRQUNWLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDMUIsTUFBTSxFQUFFO1lBQ04sYUFBYSxFQUFFLGdCQUFnQjtZQUMvQixZQUFZLEVBQUUsTUFBTTtZQUNwQixhQUFhLEVBQUUsT0FBTztZQUN0QixjQUFjLEVBQUUsZUFBZTtTQUNoQztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBQSxjQUFRLEVBQUM7UUFDZCxJQUFJO1FBQ0osTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLEtBQUs7UUFDNUMsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsQ0FBQztLQUNmLENBQUMsQ0FBQztBQUNMLENBQUM7QUFsQkQsb0JBa0JDO0FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = void 0;
|
|
4
|
+
const init_1 = require("@travetto/base/bin/init");
|
|
5
|
+
async function main(format = 'tap') {
|
|
6
|
+
init_1.EnvInit.init({
|
|
7
|
+
debug: '0',
|
|
8
|
+
set: { TRV_LOG_TIME: '0' },
|
|
9
|
+
dynamic: true,
|
|
10
|
+
append: {
|
|
11
|
+
TRV_RESOURCES: 'test/resources',
|
|
12
|
+
TRV_PROFILES: 'test',
|
|
13
|
+
TRV_SRC_LOCAL: 'test',
|
|
14
|
+
TRV_SRC_COMMON: '^test-support'
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const { PhaseManager } = await Promise.resolve().then(() => require('@travetto/base'));
|
|
18
|
+
await PhaseManager.run('init', '@trv:base/load');
|
|
19
|
+
(await Promise.resolve().then(() => require('@travetto/compiler'))).Compiler.getProgram();
|
|
20
|
+
const { TestWatcher } = await Promise.resolve().then(() => require('../src/execute/watcher'));
|
|
21
|
+
await TestWatcher.watch(format);
|
|
22
|
+
}
|
|
23
|
+
exports.main = main;
|
|
24
|
+
Object.defineProperty(exports, 'ᚕtrv', { configurable: true, value: true });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC13YXRjaC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS90aW0vQ29kZS90cmF2ZXR0by8iLCJzb3VyY2VzIjpbIm1vZHVsZS90ZXN0L2Jpbi90ZXN0LXdhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUFrRDtBQUUzQyxLQUFLLFVBQVUsSUFBSSxDQUFDLFNBQWlCLEtBQUs7SUFDL0MsY0FBTyxDQUFDLElBQUksQ0FBQztRQUNYLEtBQUssRUFBRSxHQUFHO1FBQ1YsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUMxQixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRTtZQUNOLGFBQWEsRUFBRSxnQkFBZ0I7WUFDL0IsWUFBWSxFQUFFLE1BQU07WUFDcEIsYUFBYSxFQUFFLE1BQU07WUFDckIsY0FBYyxFQUFFLGVBQWU7U0FDaEM7S0FDRixDQUFDLENBQUM7SUFHSCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsMkNBQWEsZ0JBQWdCLEVBQUMsQ0FBQztJQUN4RCxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFHakQsQ0FBQywyQ0FBYSxvQkFBb0IsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRTNELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRywyQ0FBYSx3QkFBd0IsRUFBQyxDQUFDO0lBQy9ELE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBdEJELG9CQXNCQztBQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"env": {
|
|
3
|
+
"TIME": 1662386280007,
|
|
4
|
+
"NODE_PATH": ":/home/tim/Code/travetto/.bin",
|
|
5
|
+
"PATH": "/home/tim/.npm-global/bin:/home/tim/.npm/bin:/home/tim/go/bin:/home/tim/.local/bin:/home/tim/.nvm/versions/node/v17.9.1/bin:/home/tim/.npm-global/bin:/home/tim/.npm/bin:/home/tim/go/bin:/home/tim/.local/bin:/home/tim/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/tim/Code/travetto/.bin",
|
|
6
|
+
"TRV_CLI_JSON_IPC": "/home/tim/Code/travetto/.trv_cache/trv_ipc_vscode_131120.ndjson",
|
|
7
|
+
"TRV_CLI_LOCAL": "0",
|
|
8
|
+
"TRV_DEV": "/home/tim/Code/travetto/module",
|
|
9
|
+
"TRV_DEV_ROOT": "/home/tim/Code/travetto",
|
|
10
|
+
"TRV_DOC_BRANCH": "main",
|
|
11
|
+
"TRV_REQUIRES": "/home/tim/Code/travetto/.bin/dev-register.js"
|
|
12
|
+
},
|
|
13
|
+
"entries": {
|
|
14
|
+
"@travetto/test": null,
|
|
15
|
+
"@travetto/cli": null,
|
|
16
|
+
"@travetto/doc": null,
|
|
17
|
+
"@travetto/base": null,
|
|
18
|
+
"@travetto/transformer": null,
|
|
19
|
+
"@travetto/registry": null,
|
|
20
|
+
"@travetto/watch": null,
|
|
21
|
+
"@travetto/worker": null,
|
|
22
|
+
"@travetto/yaml": null,
|
|
23
|
+
"@travetto/boot": null,
|
|
24
|
+
"@travetto/compiler": null
|
|
25
|
+
}
|
|
26
|
+
}
|
package/bin/lib/features.ts
CHANGED
|
@@ -15,8 +15,11 @@ export const FEATURES: Feature[] = [
|
|
|
15
15
|
npm: '@travetto/rest',
|
|
16
16
|
choices: [
|
|
17
17
|
{ title: 'Express.js', npm: '@travetto/rest-express' },
|
|
18
|
+
{ title: 'Express.js Lambda', npm: '@travetto/rest-express-lambda' },
|
|
18
19
|
{ title: 'KOA', npm: '@travetto/rest-koa' },
|
|
20
|
+
{ title: 'KOA Lambda', npm: '@travetto/rest-koa-lambda' },
|
|
19
21
|
{ title: 'Fastify', npm: '@travetto/rest-fastify' },
|
|
22
|
+
{ title: 'Fastify Lambda', npm: '@travetto/rest-fastify-lambda' },
|
|
20
23
|
],
|
|
21
24
|
addons: [
|
|
22
25
|
{ title: 'OpenAPI', npm: '@travetto/openapi' },
|
|
@@ -28,7 +31,10 @@ export const FEATURES: Feature[] = [
|
|
|
28
31
|
{
|
|
29
32
|
title: 'Rest Authentication',
|
|
30
33
|
npm: '@travetto/auth-rest',
|
|
31
|
-
addons: [
|
|
34
|
+
addons: [
|
|
35
|
+
{ title: 'Rest Session', npm: '@travetto/rest-session', addons: [{ npm: '@travetto/auth-rest-session' }] },
|
|
36
|
+
{ title: 'Context', npm: '@travetto/auth-rest-session' }
|
|
37
|
+
]
|
|
32
38
|
},
|
|
33
39
|
{
|
|
34
40
|
title: 'Data Modelling',
|
|
@@ -36,8 +42,9 @@ export const FEATURES: Feature[] = [
|
|
|
36
42
|
choices: [
|
|
37
43
|
{ title: 'Elasticsearch', npm: '@travetto/model-elasticsearch' },
|
|
38
44
|
{ title: 'MongoDB', npm: '@travetto/model-mongo' },
|
|
39
|
-
{ title: 'MySQL', npm: '@travetto/model-
|
|
40
|
-
{ title: 'PostgreSQL', npm: '@travetto/model-
|
|
45
|
+
{ title: 'MySQL', npm: '@travetto/model-mysql' },
|
|
46
|
+
{ title: 'PostgreSQL', npm: '@travetto/model-postgres' },
|
|
47
|
+
{ title: 'SQLite', npm: '@travetto/model-sqlite' }
|
|
41
48
|
],
|
|
42
49
|
default: 'MongoDB'
|
|
43
50
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@travetto/scaffold",
|
|
3
3
|
"displayName": "App Scaffold",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "3.0.0-rc.1",
|
|
5
5
|
"description": "App Scaffold for the Travetto framework",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"generator",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"trv-scaffold": "./bin/trv-scaffold.js"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@travetto/boot": "^
|
|
36
|
-
"@travetto/cli": "^
|
|
35
|
+
"@travetto/boot": "^3.0.0-rc.0",
|
|
36
|
+
"@travetto/cli": "^3.0.0-rc.1",
|
|
37
37
|
"mustache": "^4.2.0",
|
|
38
38
|
"enquirer": "^2.3.6"
|
|
39
39
|
},
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"@types/mustache": "^4.2.1"
|
|
42
42
|
},
|
|
43
43
|
"docDependencies": {
|
|
44
|
+
"@travetto/auth-rest-context": true,
|
|
44
45
|
"@travetto/auth-rest": true,
|
|
45
46
|
"@travetto/model": true,
|
|
46
47
|
"@travetto/model-query": true
|
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
"@travetto/pack": "^{{{frameworkVersion}}}"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"eslint": "^
|
|
16
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
17
|
-
"@typescript-eslint/parser": "^
|
|
15
|
+
"@types/eslint": "^8.4.6",
|
|
16
|
+
"@typescript-eslint/eslint-plugin": "^5.36.1",
|
|
17
|
+
"@typescript-eslint/parser": "^5.36.1",
|
|
18
|
+
"eslint": "^8.23.0",
|
|
18
19
|
},
|
|
19
20
|
"description": "A Travetto-based project",
|
|
20
21
|
"keywords": [
|
|
@@ -4,8 +4,11 @@ import { Inject } from '@travetto/di';
|
|
|
4
4
|
import { ModelQuery, ModelQueryCrudSupport } from '@travetto/model-query';
|
|
5
5
|
import { Schema } from '@travetto/schema';
|
|
6
6
|
// {{#modules.auth-rest}} // @doc-exclude
|
|
7
|
-
import { Authenticated
|
|
7
|
+
import { Authenticated } from '@travetto/auth-rest'; // @doc-exclude
|
|
8
8
|
// {{/modules.auth-rest}} // @doc-exclude
|
|
9
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
10
|
+
import { AuthContextService } from '@travetto/auth-rest-context';
|
|
11
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
9
12
|
|
|
10
13
|
import { Todo } from '../model/todo';
|
|
11
14
|
|
|
@@ -26,10 +29,10 @@ export class TodoController {
|
|
|
26
29
|
@Inject()
|
|
27
30
|
source: ModelQueryCrudSupport;
|
|
28
31
|
|
|
29
|
-
// {{#modules.auth-rest}} // @doc-exclude
|
|
32
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
30
33
|
@Inject() // @doc-exclude
|
|
31
34
|
auth: AuthContextService; // @doc-exclude
|
|
32
|
-
// {{/modules.auth-rest}} // @doc-exclude
|
|
35
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
33
36
|
|
|
34
37
|
/**
|
|
35
38
|
* Get all Todos
|
|
@@ -37,9 +40,9 @@ export class TodoController {
|
|
|
37
40
|
@Get('/')
|
|
38
41
|
async getAll(query: Query): Promise<Todo[]> {
|
|
39
42
|
query.q ??= {};
|
|
40
|
-
// {{#modules.auth-rest}} // @doc-exclude
|
|
43
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
41
44
|
query.q.userId = this.auth.get()?.id; // @doc-exclude
|
|
42
|
-
// {{/modules.auth-rest}} // @doc-exclude
|
|
45
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
43
46
|
return this.source.query(Todo, { where: query.q });
|
|
44
47
|
}
|
|
45
48
|
|
|
@@ -49,11 +52,11 @@ export class TodoController {
|
|
|
49
52
|
@Get('/:id')
|
|
50
53
|
async getOne(id: string): Promise<Todo> {
|
|
51
54
|
const q: ModelQuery<Todo> = { where: { id } };
|
|
52
|
-
// {{#modules.auth-rest}} // @doc-exclude
|
|
55
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
53
56
|
if (typeof q.where !== 'string') {
|
|
54
57
|
q.where!.userId = this.auth.get()?.id; // @doc-exclude
|
|
55
58
|
}
|
|
56
|
-
// {{/modules.auth-rest}} // @doc-exclude
|
|
59
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
57
60
|
return this.source.queryOne(Todo, q);
|
|
58
61
|
}
|
|
59
62
|
|
|
@@ -62,9 +65,9 @@ export class TodoController {
|
|
|
62
65
|
*/
|
|
63
66
|
@Post('/')
|
|
64
67
|
async save(todo: Todo): Promise<Todo> {
|
|
65
|
-
// {{#modules.auth-rest}} // @doc-exclude
|
|
68
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
66
69
|
todo.userId = this.auth.get()?.id; // @doc-exclude
|
|
67
|
-
// {{/modules.auth-rest}} // @doc-exclude
|
|
70
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
68
71
|
return this.source.create(Todo, todo);
|
|
69
72
|
}
|
|
70
73
|
|
|
@@ -73,9 +76,9 @@ export class TodoController {
|
|
|
73
76
|
*/
|
|
74
77
|
@Put('/:id')
|
|
75
78
|
async update(todo: Todo): Promise<Todo> {
|
|
76
|
-
// {{#modules.auth-rest}} // @doc-exclude
|
|
79
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
77
80
|
todo.userId = this.auth.get()?.id; // @doc-exclude
|
|
78
|
-
// {{/modules.auth-rest}} // @doc-exclude
|
|
81
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
79
82
|
return this.source.update(Todo, todo);
|
|
80
83
|
}
|
|
81
84
|
|
|
@@ -85,11 +88,11 @@ export class TodoController {
|
|
|
85
88
|
@Delete('/:id')
|
|
86
89
|
async remove(id: string): Promise<void> {
|
|
87
90
|
const q: ModelQuery<Todo> = { where: { id } };
|
|
88
|
-
// {{#modules.auth-rest}} // @doc-exclude
|
|
91
|
+
// {{#modules.auth-rest-context}} // @doc-exclude
|
|
89
92
|
if (typeof q.where !== 'string') {
|
|
90
93
|
q.where!.userId = this.auth.get()?.id; // @doc-exclude
|
|
91
94
|
}
|
|
92
|
-
// {{/modules.auth-rest}} // @doc-exclude
|
|
95
|
+
// {{/modules.auth-rest-context}} // @doc-exclude
|
|
93
96
|
if (await this.source.deleteByQuery(Todo, q) !== 1) {
|
|
94
97
|
throw new NotFoundError(Todo, id);
|
|
95
98
|
}
|