projen 0.101.3 → 0.101.4
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/.jsii +878 -110
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +1 -1
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +3 -3
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-build.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.d.ts +70 -0
- package/lib/component.js +183 -3
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/dependency-review.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome.js +1 -1
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pyproject-toml-file.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.d.ts +1 -1
- package/lib/python/python-project.js +2 -2
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/uv.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +2 -2
- package/lib/sample-file.js +2 -2
- package/lib/script-runner.d.ts +35 -0
- package/lib/script-runner.js +22 -0
- package/lib/source-code.js +1 -1
- package/lib/task-shell.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.js +2 -1
- package/lib/typescript/projenrc-ts.d.ts +11 -3
- package/lib/typescript/projenrc-ts.js +38 -6
- package/lib/typescript/projenrc.d.ts +14 -3
- package/lib/typescript/projenrc.js +36 -18
- package/lib/typescript/typescript-runner.d.ts +146 -0
- package/lib/typescript/typescript-runner.js +134 -0
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.d.ts +14 -0
- package/lib/typescript/typescript.js +12 -6
- package/lib/util/recreate.d.ts +30 -0
- package/lib/util/recreate.js +38 -0
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +3 -3
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +2 -2
|
@@ -7,23 +7,25 @@ const path_1 = require("path");
|
|
|
7
7
|
const javascript_1 = require("../javascript");
|
|
8
8
|
const render_options_1 = require("../javascript/render-options");
|
|
9
9
|
const projenrc_1 = require("../projenrc");
|
|
10
|
+
const typescript_runner_1 = require("./typescript-runner");
|
|
10
11
|
const DEFAULT_FILENAME = ".projenrc.ts";
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* A projenrc file written in TypeScript
|
|
14
|
+
*
|
|
15
|
+
* This component is used within TypeScriptProject.
|
|
13
16
|
*/
|
|
14
17
|
class Projenrc extends projenrc_1.ProjenrcFile {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.101.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.101.4" };
|
|
16
19
|
filePath;
|
|
17
20
|
tsconfig;
|
|
18
21
|
_projenCodeDir;
|
|
19
22
|
_tsProject;
|
|
20
|
-
|
|
23
|
+
_runner;
|
|
21
24
|
constructor(project, options = {}) {
|
|
22
25
|
super(project);
|
|
23
26
|
this._tsProject = project;
|
|
24
27
|
this.filePath = options.filename ?? DEFAULT_FILENAME;
|
|
25
28
|
this._projenCodeDir = options.projenCodeDir ?? "projenrc";
|
|
26
|
-
this._swc = options.swc ?? false;
|
|
27
29
|
// Give the projenrc source tree its own `tsconfig.json` so the eslint
|
|
28
30
|
// project service (and editors) resolve it as the nearest config for those
|
|
29
31
|
// files. This avoids listing the whole tree under `allowDefaultProject`,
|
|
@@ -32,30 +34,46 @@ class Projenrc extends projenrc_1.ProjenrcFile {
|
|
|
32
34
|
const baseTsconfig = project.tsconfig ?? project.tsconfigDev;
|
|
33
35
|
this.tsconfig = new javascript_1.TypescriptConfig(project, {
|
|
34
36
|
fileName: `${this._projenCodeDir}/tsconfig.json`,
|
|
35
|
-
include: ["**/*.ts"],
|
|
37
|
+
include: ["**/*.ts", path_1.posix.relative(this._projenCodeDir, this.filePath)],
|
|
36
38
|
extends: javascript_1.TypescriptConfigExtends.fromTypescriptConfigs([baseTsconfig]),
|
|
37
39
|
compilerOptions: {
|
|
38
40
|
noEmit: true,
|
|
39
41
|
rootDir: path_1.posix.relative(this._projenCodeDir, ".") || ".",
|
|
40
42
|
},
|
|
41
43
|
});
|
|
44
|
+
// A runner is a future component, make sure it is attached
|
|
45
|
+
this._runner = this.getRunner(options).tryAttach(this._tsProject);
|
|
42
46
|
this.addDefaultTask();
|
|
43
47
|
this.generateProjenrc();
|
|
44
48
|
}
|
|
45
49
|
addDefaultTask() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
// Render the run config for the entrypoint
|
|
51
|
+
const { dependencies, steps } = this._runner.configFor(this.filePath);
|
|
52
|
+
// Request runner dependencies
|
|
53
|
+
for (const dep of dependencies) {
|
|
54
|
+
this._tsProject.deps.requestDependency(dep);
|
|
49
55
|
}
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
// Add runner steps
|
|
57
|
+
this._tsProject.defaultTask?.addSteps(...steps);
|
|
58
|
+
}
|
|
59
|
+
getRunner(options) {
|
|
60
|
+
// use a provide runner as is
|
|
61
|
+
if (options.runner) {
|
|
62
|
+
return options.runner;
|
|
63
|
+
}
|
|
64
|
+
// swc implies ts-node runner for backwards compatibility
|
|
65
|
+
if (options.swc) {
|
|
66
|
+
return typescript_runner_1.TypeScriptRunner.tsNode({
|
|
67
|
+
swc: true,
|
|
68
|
+
typeCheck: true,
|
|
69
|
+
tsconfig: this.tsconfig.fileName,
|
|
70
|
+
}).tryAttach(this._tsProject);
|
|
71
|
+
}
|
|
72
|
+
// we use the project's default runner with the correct tsconfig and type-checking enabled
|
|
73
|
+
return this._tsProject.runner.copy({
|
|
74
|
+
tsconfig: this.tsconfig.fileName,
|
|
75
|
+
typeCheck: true,
|
|
76
|
+
});
|
|
59
77
|
}
|
|
60
78
|
preSynthesize() {
|
|
61
79
|
super.preSynthesize();
|
|
@@ -118,4 +136,4 @@ class Projenrc extends projenrc_1.ProjenrcFile {
|
|
|
118
136
|
}
|
|
119
137
|
}
|
|
120
138
|
exports.Projenrc = Projenrc;
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQTBEO0FBQzFELCtCQUErQztBQUUvQyw4Q0FBMEU7QUFDMUUsaUVBQXVFO0FBQ3ZFLDBDQUEyQztBQTBCM0MsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSx1QkFBWTs7SUFDeEIsUUFBUSxDQUFTO0lBQ2pCLFFBQVEsQ0FBbUI7SUFFMUIsY0FBYyxDQUFTO0lBQ3ZCLFVBQVUsQ0FBb0I7SUFDOUIsSUFBSSxDQUFVO0lBRS9CLFlBQVksT0FBMEIsRUFBRSxVQUEyQixFQUFFO1FBQ25FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1FBRTFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUM7UUFFakMsc0VBQXNFO1FBQ3RFLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUscUVBQXFFO1FBQ3JFLDZEQUE2RDtRQUM3RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDZCQUFnQixDQUFDLE9BQU8sRUFBRTtZQUM1QyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxnQkFBZ0I7WUFDaEQsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3BCLE9BQU8sRUFBRSxvQ0FBdUIsQ0FBQyxxQkFBcUIs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LFFBQVE7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsU0FBUyxJQUFJLGVBQWUsSUFBSSxDQUFDLENBQUM7UUFDcEUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRS9CLElBQUEsY0FBUyxFQUFDLElBQUEsY0FBTyxFQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBQSxrQkFBYSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QiwwQ0FBMEMsTUFBTSxFQUFFLENBQ25ELENBQUM7SUFDSixDQUFDOztBQXRJSCw0QkF1SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIHBvc2l4LCByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgSW52ZW50b3J5UHJvamVjdFR5cGUgfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyBUeXBlc2NyaXB0Q29uZmlnLCBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyByZW5kZXJKYXZhU2NyaXB0T3B0aW9ucyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0L3JlbmRlci1vcHRpb25zXCI7XG5pbXBvcnQgeyBQcm9qZW5yY0ZpbGUgfSBmcm9tIFwiLi4vcHJvamVucmNcIjtcbmltcG9ydCB0eXBlIHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plbnJjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVucmMgZmlsZS5cbiAgICogQGRlZmF1bHQgXCIucHJvamVucmMudHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZW5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGlyZWN0b3J5IHRyZWUgdGhhdCBtYXkgY29udGFpbiAqLnRzIGZpbGVzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgZnJvbVxuICAgKiB5b3VyIHByb2plbnJjIHR5cGVzY3JpcHQgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJwcm9qZW5yY1wiXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5Db2RlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSBgU1dDYCBmb3IgdHMtbm9kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN3Yz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERFRkFVTFRfRklMRU5BTUUgPSBcIi5wcm9qZW5yYy50c1wiO1xuXG4vKipcbiAqIFNldHMgdXAgYSB0eXBlc2NyaXB0IHByb2plY3QgdG8gdXNlIFR5cGVTY3JpcHQgZm9yIHByb2plbnJjLlxuICovXG5leHBvcnQgY2xhc3MgUHJvamVucmMgZXh0ZW5kcyBQcm9qZW5yY0ZpbGUge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnOiBUeXBlc2NyaXB0Q29uZmlnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plbkNvZGVEaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdHNQcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3djOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LCBvcHRpb25zOiBQcm9qZW5yY09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuX3RzUHJvamVjdCA9IHByb2plY3Q7XG5cbiAgICB0aGlzLmZpbGVQYXRoID0gb3B0aW9ucy5maWxlbmFtZSA/PyBERUZBVUxUX0ZJTEVOQU1FO1xuICAgIHRoaXMuX3Byb2plbkNvZGVEaXIgPSBvcHRpb25zLnByb2plbkNvZGVEaXIgPz8gXCJwcm9qZW5yY1wiO1xuICAgIHRoaXMuX3N3YyA9IG9wdGlvbnMuc3djID8/IGZhbHNlO1xuXG4gICAgLy8gR2l2ZSB0aGUgcHJvamVucmMgc291cmNlIHRyZWUgaXRzIG93biBgdHNjb25maWcuanNvbmAgc28gdGhlIGVzbGludFxuICAgIC8vIHByb2plY3Qgc2VydmljZSAoYW5kIGVkaXRvcnMpIHJlc29sdmUgaXQgYXMgdGhlIG5lYXJlc3QgY29uZmlnIGZvciB0aG9zZVxuICAgIC8vIGZpbGVzLiBUaGlzIGF2b2lkcyBsaXN0aW5nIHRoZSB3aG9sZSB0cmVlIHVuZGVyIGBhbGxvd0RlZmF1bHRQcm9qZWN0YCxcbiAgICAvLyB3aGljaCBvbmx5IHBlcm1pdHMgYSBzbWFsbCBudW1iZXIgb2YgbG9vc2UgZmlsZXMgKGFuZCByZWplY3RzIGAqKmBcbiAgICAvLyBnbG9icykuIEl0IGV4dGVuZHMgdGhlIHJvb3QgY29uZmlnIGFuZCBpcyB0eXBlLWNoZWNrIG9ubHkuXG4gICAgY29uc3QgYmFzZVRzY29uZmlnID0gcHJvamVjdC50c2NvbmZpZyA/PyBwcm9qZWN0LnRzY29uZmlnRGV2O1xuICAgIHRoaXMudHNjb25maWcgPSBuZXcgVHlwZXNjcmlwdENvbmZpZyhwcm9qZWN0LCB7XG4gICAgICBmaWxlTmFtZTogYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vdHNjb25maWcuanNvbmAsXG4gICAgICBpbmNsdWRlOiBbXCIqKi8qLnRzXCJdLFxuICAgICAgZXh0ZW5kczogVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVR5cGVzY3JpcHRDb25maWdzKFtiYXNlVHNjb25maWddKSxcbiAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgIHJvb3REaXI6IHBvc2l4LnJlbGF0aXZlKHRoaXMuX3Byb2plbkNvZGVEaXIsIFwiLlwiKSB8fCBcIi5cIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZERlZmF1bHRUYXNrKCk7XG5cbiAgICB0aGlzLmdlbmVyYXRlUHJvamVucmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVmYXVsdFRhc2soKSB7XG4gICAgY29uc3QgZGVwcyA9IFtcInRzLW5vZGVcIl07XG4gICAgaWYgKHRoaXMuX3N3Yykge1xuICAgICAgZGVwcy5wdXNoKFwiQHN3Yy9jb3JlXCIpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgaXMgdGhlIHRhc2sgcHJvamVuIGV4ZWN1dGVzIHdoZW4gcnVubmluZyBgcHJvamVuYCB3aXRob3V0IGFcbiAgICAvLyBzcGVjaWZpYyB0YXNrIChpZiB0aGlzIHRhc2sgaXMgbm90IGRlZmluZWQsIHByb2plbiBmYWxscyBiYWNrIHRvXG4gICAgLy8gcnVubmluZyBcIm5vZGUgLnByb2plbnJjLmpzXCIpLlxuICAgIHRoaXMuX3RzUHJvamVjdC5hZGREZXZEZXBzKC4uLmRlcHMpO1xuXG4gICAgY29uc3QgdHNOb2RlID0gdGhpcy5fc3djID8gXCJ0cy1ub2RlIC0tc3djXCIgOiBcInRzLW5vZGVcIjtcblxuICAgIC8vIHRzLW5vZGUgY29tcGlsZXMgdGhlIGVudHJ5cG9pbnQgYW5kIGl0cyBpbXBvcnRzIG9uIGRlbWFuZCB1c2luZyB0aGUgZGV2XG4gICAgLy8gdHNjb25maWcncyBjb21waWxlciBvcHRpb25zLCBzbyBwcm9qZW4gc291cmNlIGZpbGVzIG1heSByZXNpZGUgYW55d2hlcmVcbiAgICAvLyBpbiB0aGUgcHJvamVjdCB0cmVlIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbmZpZydzIGBpbmNsdWRlYC5cbiAgICB0aGlzLl90c1Byb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWMoXG4gICAgICBgJHt0c05vZGV9IC0tcHJvamVjdCAke3RoaXMuX3RzUHJvamVjdC50c2NvbmZpZ0Rldi5maWxlTmFtZX0gJHt0aGlzLmZpbGVQYXRofWAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAvJHt0aGlzLmZpbGVQYXRofWApO1xuICAgIHRoaXMuX3RzUHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAvJHt0aGlzLl9wcm9qZW5Db2RlRGlyfWApO1xuXG4gICAgLy8gVGhlIHByb2plbnJjIGVudHJ5cG9pbnQgbGl2ZXMgYXQgdGhlIHJlcG9zaXRvcnkgcm9vdCBhbmQgaXMgbm90IGNvdmVyZWRcbiAgICAvLyBieSBhbnkgYHRzY29uZmlnLmpzb25gLiBSZWdpc3RlciBvbmx5IHRoaXMgc2luZ2xlIGZpbGUgd2l0aCB0aGUgZXNsaW50XG4gICAgLy8gcHJvamVjdCBzZXJ2aWNlJ3MgZGVmYXVsdCBwcm9qZWN0ICh0aGUgcHJvamVucmMgc291cmNlIHRyZWUgaXMgY292ZXJlZFxuICAgIC8vIGJ5IGl0cyBvd24gdHNjb25maWcpLiBgYWxsb3dEZWZhdWx0UHJvamVjdGAgZG9lcyBub3QgcGVybWl0IGAqKmAgZ2xvYnMuXG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWxsb3dEZWZhdWx0UHJvamVjdEZpbGVzKHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWRkTGludFBhdHRlcm4odGhpcy5fcHJvamVuQ29kZURpcik7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWRkTGludFBhdHRlcm4odGhpcy5maWxlUGF0aCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWxsb3dEZXZEZXBzKHRoaXMuZmlsZVBhdGgpO1xuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFsbG93RGV2RGVwcyhgJHt0aGlzLl9wcm9qZW5Db2RlRGlyfS8qKi8qLnRzYCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWRkSWdub3JlUGF0dGVybihgISR7dGhpcy5maWxlUGF0aH1gKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRJZ25vcmVQYXR0ZXJuKGAhJHt0aGlzLl9wcm9qZW5Db2RlRGlyfS8qKi8qLnRzYCk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRPdmVycmlkZSh7XG4gICAgICBmaWxlczogW3RoaXMuZmlsZVBhdGhdLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXCI6IFwib2ZmXCIsXG4gICAgICAgIFwiaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdHNQcm9qZWN0LmJpb21lPy5hZGRGaWxlUGF0dGVybih0aGlzLmZpbGVQYXRoKTtcbiAgICB0aGlzLl90c1Byb2plY3QuYmlvbWU/LmFkZEZpbGVQYXR0ZXJuKGAke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqYCk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuamVzdD8uZGlzY292ZXJUZXN0TWF0Y2hQYXR0ZXJuc0ZvckRpcnMoXG4gICAgICBbdGhpcy5fcHJvamVuQ29kZURpcl0sXG4gICAgICB7XG4gICAgICAgIGZpbGVFeHRlbnNpb25QYXR0ZXJuOiB0aGlzLl90c1Byb2plY3QudHNjb25maWc/LmNvbXBpbGVyT3B0aW9ucz8uYWxsb3dKc1xuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiBcInRzPyh4KVwiLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVByb2plbnJjKCkge1xuICAgIGNvbnN0IHJjZmlsZSA9IHJlc29sdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5maWxlUGF0aCk7XG4gICAgaWYgKGV4aXN0c1N5bmMocmNmaWxlKSkge1xuICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGV4aXN0c1xuICAgIH1cblxuICAgIGNvbnN0IGJvb3RzdHJhcCA9IHRoaXMucHJvamVjdC5pbml0UHJvamVjdDtcbiAgICBpZiAoIWJvb3RzdHJhcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gYm9vdHN0cmFwLmZxbi5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IGltcG9ydE5hbWUgPSBwYXJ0c1sxXTtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKFwiLlwiKTtcblxuICAgIGNvbnN0IHsgcmVuZGVyZWRPcHRpb25zLCBpbXBvcnRzIH0gPSByZW5kZXJKYXZhU2NyaXB0T3B0aW9ucyh7XG4gICAgICBhcmdzOiBib290c3RyYXAuYXJncyxcbiAgICAgIHR5cGU6IGJvb3RzdHJhcC50eXBlIGFzIEludmVudG9yeVByb2plY3RUeXBlLFxuICAgICAgY29tbWVudHM6IGJvb3RzdHJhcC5jb21tZW50cyxcbiAgICB9KTtcblxuICAgIGltcG9ydHMuYWRkKG1vZHVsZU5hbWUsIGltcG9ydE5hbWUpO1xuXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGxpbmVzLnB1c2goLi4uaW1wb3J0cy5hc0VzbUltcG9ydHMoKSk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goYGNvbnN0IHByb2plY3QgPSBuZXcgJHtjbGFzc05hbWV9KCR7cmVuZGVyZWRPcHRpb25zfSk7YCk7XG4gICAgbGluZXMucHVzaCgpO1xuICAgIGxpbmVzLnB1c2goXCJwcm9qZWN0LnN5bnRoKCk7XCIpO1xuXG4gICAgbWtkaXJTeW5jKGRpcm5hbWUocmNmaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlU3luYyhyY2ZpbGUsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgIGBQcm9qZWN0IGRlZmluaXRpb24gZmlsZSB3YXMgY3JlYXRlZCBhdCAke3JjZmlsZX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkJBQTBEO0FBQzFELCtCQUErQztBQUUvQyw4Q0FBMEU7QUFFMUUsaUVBQXVFO0FBQ3ZFLDBDQUEyQztBQUMzQywyREFBdUQ7QUFpQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSx1QkFBWTs7SUFDeEIsUUFBUSxDQUFTO0lBQ2pCLFFBQVEsQ0FBbUI7SUFFMUIsY0FBYyxDQUFTO0lBQ3ZCLFVBQVUsQ0FBb0I7SUFDOUIsT0FBTyxDQUFtQjtJQUUzQyxZQUFZLE9BQTBCLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQztRQUUxRCxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSxxRUFBcUU7UUFDckUsNkRBQTZEO1FBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWdCLENBQUMsT0FBTyxFQUFFO1lBQzVDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLGdCQUFnQjtZQUNoRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RSxPQUFP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QSxrQkFBYSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QiwwQ0FBMEMsTUFBTSxFQUFFLENBQ25ELENBQUM7SUFDSixDQUFDOztBQXRKSCw0QkF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIHBvc2l4LCByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgSW52ZW50b3J5UHJvamVjdFR5cGUgfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyBUeXBlc2NyaXB0Q29uZmlnLCBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcyB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcIi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgcmVuZGVySmF2YVNjcmlwdE9wdGlvbnMgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC9yZW5kZXItb3B0aW9uc1wiO1xuaW1wb3J0IHsgUHJvamVucmNGaWxlIH0gZnJvbSBcIi4uL3Byb2plbnJjXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UnVubmVyIH0gZnJvbSBcIi4vdHlwZXNjcmlwdC1ydW5uZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZW5yY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plbnJjIGZpbGUuXG4gICAqIEBkZWZhdWx0IFwiLnByb2plbnJjLnRzXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeSB0cmVlIHRoYXQgbWF5IGNvbnRhaW4gKi50cyBmaWxlcyB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGZyb21cbiAgICogeW91ciBwcm9qZW5yYyB0eXBlc2NyaXB0IGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwicHJvamVucmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuQ29kZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgYFNXQ2AgZm9yIHRzLW5vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcnVubmVyOiBUeXBlU2NyaXB0UnVubmVyLnRzTm9kZSh7IHN3YzogdHJ1ZSB9KWAgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHN3Yz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBydW5uZXIgdG8gdXNlIGZvciBleGVjdXRpbmcgVHlwZVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcHJvamVjdCdzIHJ1bm5lclxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmVyPzogVHlwZVNjcmlwdFJ1bm5lcjtcbn1cblxuY29uc3QgREVGQVVMVF9GSUxFTkFNRSA9IFwiLnByb2plbnJjLnRzXCI7XG5cbi8qKlxuICogQSBwcm9qZW5yYyBmaWxlIHdyaXR0ZW4gaW4gVHlwZVNjcmlwdFxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgd2l0aGluIFR5cGVTY3JpcHRQcm9qZWN0LlxuICovXG5leHBvcnQgY2xhc3MgUHJvamVucmMgZXh0ZW5kcyBQcm9qZW5yY0ZpbGUge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnOiBUeXBlc2NyaXB0Q29uZmlnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plbkNvZGVEaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdHNQcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVubmVyOiBUeXBlU2NyaXB0UnVubmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LCBvcHRpb25zOiBQcm9qZW5yY09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuX3RzUHJvamVjdCA9IHByb2plY3Q7XG5cbiAgICB0aGlzLmZpbGVQYXRoID0gb3B0aW9ucy5maWxlbmFtZSA/PyBERUZBVUxUX0ZJTEVOQU1FO1xuICAgIHRoaXMuX3Byb2plbkNvZGVEaXIgPSBvcHRpb25zLnByb2plbkNvZGVEaXIgPz8gXCJwcm9qZW5yY1wiO1xuXG4gICAgLy8gR2l2ZSB0aGUgcHJvamVucmMgc291cmNlIHRyZWUgaXRzIG93biBgdHNjb25maWcuanNvbmAgc28gdGhlIGVzbGludFxuICAgIC8vIHByb2plY3Qgc2VydmljZSAoYW5kIGVkaXRvcnMpIHJlc29sdmUgaXQgYXMgdGhlIG5lYXJlc3QgY29uZmlnIGZvciB0aG9zZVxuICAgIC8vIGZpbGVzLiBUaGlzIGF2b2lkcyBsaXN0aW5nIHRoZSB3aG9sZSB0cmVlIHVuZGVyIGBhbGxvd0RlZmF1bHRQcm9qZWN0YCxcbiAgICAvLyB3aGljaCBvbmx5IHBlcm1pdHMgYSBzbWFsbCBudW1iZXIgb2YgbG9vc2UgZmlsZXMgKGFuZCByZWplY3RzIGAqKmBcbiAgICAvLyBnbG9icykuIEl0IGV4dGVuZHMgdGhlIHJvb3QgY29uZmlnIGFuZCBpcyB0eXBlLWNoZWNrIG9ubHkuXG4gICAgY29uc3QgYmFzZVRzY29uZmlnID0gcHJvamVjdC50c2NvbmZpZyA/PyBwcm9qZWN0LnRzY29uZmlnRGV2O1xuICAgIHRoaXMudHNjb25maWcgPSBuZXcgVHlwZXNjcmlwdENvbmZpZyhwcm9qZWN0LCB7XG4gICAgICBmaWxlTmFtZTogYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vdHNjb25maWcuanNvbmAsXG4gICAgICBpbmNsdWRlOiBbXCIqKi8qLnRzXCIsIHBvc2l4LnJlbGF0aXZlKHRoaXMuX3Byb2plbkNvZGVEaXIsIHRoaXMuZmlsZVBhdGgpXSxcbiAgICAgIGV4dGVuZHM6IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzLmZyb21UeXBlc2NyaXB0Q29uZmlncyhbYmFzZVRzY29uZmlnXSksXG4gICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICByb290RGlyOiBwb3NpeC5yZWxhdGl2ZSh0aGlzLl9wcm9qZW5Db2RlRGlyLCBcIi5cIikgfHwgXCIuXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQSBydW5uZXIgaXMgYSBmdXR1cmUgY29tcG9uZW50LCBtYWtlIHN1cmUgaXQgaXMgYXR0YWNoZWRcbiAgICB0aGlzLl9ydW5uZXIgPSB0aGlzLmdldFJ1bm5lcihvcHRpb25zKS50cnlBdHRhY2godGhpcy5fdHNQcm9qZWN0KTtcblxuICAgIHRoaXMuYWRkRGVmYXVsdFRhc2soKTtcblxuICAgIHRoaXMuZ2VuZXJhdGVQcm9qZW5yYygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0VGFzaygpIHtcbiAgICAvLyBSZW5kZXIgdGhlIHJ1biBjb25maWcgZm9yIHRoZSBlbnRyeXBvaW50XG4gICAgY29uc3QgeyBkZXBlbmRlbmNpZXMsIHN0ZXBzIH0gPSB0aGlzLl9ydW5uZXIuY29uZmlnRm9yKHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgLy8gUmVxdWVzdCBydW5uZXIgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLl90c1Byb2plY3QuZGVwcy5yZXF1ZXN0RGVwZW5kZW5jeShkZXApO1xuICAgIH1cblxuICAgIC8vIEFkZCBydW5uZXIgc3RlcHNcbiAgICB0aGlzLl90c1Byb2plY3QuZGVmYXVsdFRhc2s/LmFkZFN0ZXBzKC4uLnN0ZXBzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UnVubmVyKG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyk6IFR5cGVTY3JpcHRSdW5uZXIge1xuICAgIC8vIHVzZSBhIHByb3ZpZGUgcnVubmVyIGFzIGlzXG4gICAgaWYgKG9wdGlvbnMucnVubmVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5ydW5uZXI7XG4gICAgfVxuXG4gICAgLy8gc3djIGltcGxpZXMgdHMtbm9kZSBydW5uZXIgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgaWYgKG9wdGlvbnMuc3djKSB7XG4gICAgICByZXR1cm4gVHlwZVNjcmlwdFJ1bm5lci50c05vZGUoe1xuICAgICAgICBzd2M6IHRydWUsXG4gICAgICAgIHR5cGVDaGVjazogdHJ1ZSxcbiAgICAgICAgdHNjb25maWc6IHRoaXMudHNjb25maWcuZmlsZU5hbWUsXG4gICAgICB9KS50cnlBdHRhY2godGhpcy5fdHNQcm9qZWN0KTtcbiAgICB9XG5cbiAgICAvLyB3ZSB1c2UgdGhlIHByb2plY3QncyBkZWZhdWx0IHJ1bm5lciB3aXRoIHRoZSBjb3JyZWN0IHRzY29uZmlnIGFuZCB0eXBlLWNoZWNraW5nIGVuYWJsZWRcbiAgICByZXR1cm4gdGhpcy5fdHNQcm9qZWN0LnJ1bm5lci5jb3B5KHtcbiAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnLmZpbGVOYW1lLFxuICAgICAgdHlwZUNoZWNrOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgdGhpcy5fdHNQcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuZmlsZVBhdGh9YCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYC8ke3RoaXMuX3Byb2plbkNvZGVEaXJ9YCk7XG5cbiAgICAvLyBUaGUgcHJvamVucmMgZW50cnlwb2ludCBsaXZlcyBhdCB0aGUgcmVwb3NpdG9yeSByb290IGFuZCBpcyBub3QgY292ZXJlZFxuICAgIC8vIGJ5IGFueSBgdHNjb25maWcuanNvbmAuIFJlZ2lzdGVyIG9ubHkgdGhpcyBzaW5nbGUgZmlsZSB3aXRoIHRoZSBlc2xpbnRcbiAgICAvLyBwcm9qZWN0IHNlcnZpY2UncyBkZWZhdWx0IHByb2plY3QgKHRoZSBwcm9qZW5yYyBzb3VyY2UgdHJlZSBpcyBjb3ZlcmVkXG4gICAgLy8gYnkgaXRzIG93biB0c2NvbmZpZykuIGBhbGxvd0RlZmF1bHRQcm9qZWN0YCBkb2VzIG5vdCBwZXJtaXQgYCoqYCBnbG9icy5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hbGxvd0RlZmF1bHRQcm9qZWN0RmlsZXModGhpcy5maWxlUGF0aCk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRMaW50UGF0dGVybih0aGlzLl9wcm9qZW5Db2RlRGlyKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRMaW50UGF0dGVybih0aGlzLmZpbGVQYXRoKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hbGxvd0RldkRlcHModGhpcy5maWxlUGF0aCk7XG4gICAgdGhpcy5fdHNQcm9qZWN0LmVzbGludD8uYWxsb3dEZXZEZXBzKGAke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqLyoudHNgKTtcbiAgICB0aGlzLl90c1Byb2plY3QuZXNsaW50Py5hZGRJZ25vcmVQYXR0ZXJuKGAhJHt0aGlzLmZpbGVQYXRofWApO1xuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFkZElnbm9yZVBhdHRlcm4oYCEke3RoaXMuX3Byb2plbkNvZGVEaXJ9LyoqLyoudHNgKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5lc2xpbnQ/LmFkZE92ZXJyaWRlKHtcbiAgICAgIGZpbGVzOiBbdGhpcy5maWxlUGF0aF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcIjogXCJvZmZcIixcbiAgICAgICAgXCJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLl90c1Byb2plY3QuYmlvbWU/LmFkZEZpbGVQYXR0ZXJuKHRoaXMuZmlsZVBhdGgpO1xuICAgIHRoaXMuX3RzUHJvamVjdC5iaW9tZT8uYWRkRmlsZVBhdHRlcm4oYCR7dGhpcy5fcHJvamVuQ29kZURpcn0vKipgKTtcblxuICAgIHRoaXMuX3RzUHJvamVjdC5qZXN0Py5kaXNjb3ZlclRlc3RNYXRjaFBhdHRlcm5zRm9yRGlycyhcbiAgICAgIFt0aGlzLl9wcm9qZW5Db2RlRGlyXSxcbiAgICAgIHtcbiAgICAgICAgZmlsZUV4dGVuc2lvblBhdHRlcm46IHRoaXMuX3RzUHJvamVjdC50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zPy5hbGxvd0pzXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IFwidHM/KHgpXCIsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvamVucmMoKSB7XG4gICAgY29uc3QgcmNmaWxlID0gcmVzb2x2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLmZpbGVQYXRoKTtcbiAgICBpZiAoZXhpc3RzU3luYyhyY2ZpbGUpKSB7XG4gICAgICByZXR1cm47IC8vIGFscmVhZHkgZXhpc3RzXG4gICAgfVxuXG4gICAgY29uc3QgYm9vdHN0cmFwID0gdGhpcy5wcm9qZWN0LmluaXRQcm9qZWN0O1xuICAgIGlmICghYm9vdHN0cmFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFydHMgPSBib290c3RyYXAuZnFuLnNwbGl0KFwiLlwiKTtcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gcGFydHNbMF07XG4gICAgY29uc3QgaW1wb3J0TmFtZSA9IHBhcnRzWzFdO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oXCIuXCIpO1xuXG4gICAgY29uc3QgeyByZW5kZXJlZE9wdGlvbnMsIGltcG9ydHMgfSA9IHJlbmRlckphdmFTY3JpcHRPcHRpb25zKHtcbiAgICAgIGFyZ3M6IGJvb3RzdHJhcC5hcmdzLFxuICAgICAgdHlwZTogYm9vdHN0cmFwLnR5cGUgYXMgSW52ZW50b3J5UHJvamVjdFR5cGUsXG4gICAgICBjb21tZW50czogYm9vdHN0cmFwLmNvbW1lbnRzLFxuICAgIH0pO1xuXG4gICAgaW1wb3J0cy5hZGQobW9kdWxlTmFtZSwgaW1wb3J0TmFtZSk7XG5cbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgbGluZXMucHVzaCguLi5pbXBvcnRzLmFzRXNtSW1wb3J0cygpKTtcbiAgICBsaW5lcy5wdXNoKCk7XG4gICAgbGluZXMucHVzaChgY29uc3QgcHJvamVjdCA9IG5ldyAke2NsYXNzTmFtZX0oJHtyZW5kZXJlZE9wdGlvbnN9KTtgKTtcbiAgICBsaW5lcy5wdXNoKCk7XG4gICAgbGluZXMucHVzaChcInByb2plY3Quc3ludGgoKTtcIik7XG5cbiAgICBta2RpclN5bmMoZGlybmFtZShyY2ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKHJjZmlsZSwgbGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgYFByb2plY3QgZGVmaW5pdGlvbiBmaWxlIHdhcyBjcmVhdGVkIGF0ICR7cmNmaWxlfWAsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { type RunScriptConfig, ScriptRunner } from "../script-runner";
|
|
2
|
+
/**
|
|
3
|
+
* Options for the ts-node runner.
|
|
4
|
+
*/
|
|
5
|
+
export interface TsNodeRunnerOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Whether to type-check the script during executing.
|
|
8
|
+
*
|
|
9
|
+
* @see https://github.com/TypeStrong/ts-node#typecheck
|
|
10
|
+
*
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
readonly typeCheck?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Path to the tsconfig file to use.
|
|
16
|
+
*
|
|
17
|
+
* @default - ts-node default discovery
|
|
18
|
+
*/
|
|
19
|
+
readonly tsconfig?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to use SWC for transpilation.
|
|
22
|
+
*
|
|
23
|
+
* This will disable type-checking.
|
|
24
|
+
*
|
|
25
|
+
* @see https://github.com/TypeStrong/ts-node#swc
|
|
26
|
+
*
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
readonly swc?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options for the tsx runner.
|
|
33
|
+
*/
|
|
34
|
+
export interface TsxRunnerOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Whether to type-check the entrypoint before executing.
|
|
37
|
+
*
|
|
38
|
+
* Because tsx does not type check code, you may want to enable this for additional type safety.
|
|
39
|
+
* When enabled, runs `tsc --noEmit`, using the provided tsconfig.
|
|
40
|
+
*
|
|
41
|
+
* @default false
|
|
42
|
+
*/
|
|
43
|
+
readonly typeCheck?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Path to the tsconfig file to use.
|
|
46
|
+
* When specified, will use this tsconfig for running tsx and type-checking (if enabled).
|
|
47
|
+
*
|
|
48
|
+
* @default - tsx/typescript default discovery
|
|
49
|
+
*/
|
|
50
|
+
readonly tsconfig?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Options for the native Node.js TypeScript runner.
|
|
54
|
+
*/
|
|
55
|
+
export interface NodeRunnerOptions {
|
|
56
|
+
/**
|
|
57
|
+
* Whether to type-check the entrypoint before executing.
|
|
58
|
+
*
|
|
59
|
+
* Because the native Node.js TypeScript does not type check code,
|
|
60
|
+
* you may want to enable this for additional type safety.
|
|
61
|
+
* When enabled, runs `tsc --noEmit`, using the provided tsconfig.
|
|
62
|
+
*
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
readonly typeCheck?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Path to the tsconfig file for type-checking.
|
|
68
|
+
* When specified, will use this tsconfig for type-checking (if enabled).
|
|
69
|
+
*
|
|
70
|
+
* @default - typescript default discovery
|
|
71
|
+
*/
|
|
72
|
+
readonly tsconfig?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Whether to also enable `--experimental-transform-types`.
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
readonly experimentalTransformTypes?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The options that can be adjusted on any {@link TypeScriptRunner}, regardless
|
|
81
|
+
* of its runtime.
|
|
82
|
+
*
|
|
83
|
+
* This is the override type for {@link TypeScriptRunner.copy}. Runtime-specific
|
|
84
|
+
* creation options (such as `swc` for ts-node) are set via the static factories
|
|
85
|
+
* and are preserved - but cannot be changed - by `copy`, so a copy can never
|
|
86
|
+
* change the runtime of a runner.
|
|
87
|
+
*/
|
|
88
|
+
export interface TypeScriptRunnerOptions {
|
|
89
|
+
/**
|
|
90
|
+
* Whether to type-check the entrypoint.
|
|
91
|
+
*/
|
|
92
|
+
readonly typeCheck?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Path to the tsconfig file to use.
|
|
95
|
+
*/
|
|
96
|
+
readonly tsconfig?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The runner used to execute TypeScript files.
|
|
100
|
+
*
|
|
101
|
+
* A runner is a {@link FutureComponent}: create it standalone (e.g. via one of
|
|
102
|
+
* the static factories) and it is attached to a project by the component that
|
|
103
|
+
* consumes it. Use {@link TypeScriptRunner.copy} to derive a new runner with
|
|
104
|
+
* adjusted options.
|
|
105
|
+
*/
|
|
106
|
+
export declare class TypeScriptRunner extends ScriptRunner {
|
|
107
|
+
/**
|
|
108
|
+
* Use ts-node to execute TypeScript files.
|
|
109
|
+
*/
|
|
110
|
+
static tsNode(options?: TsNodeRunnerOptions): TypeScriptRunner;
|
|
111
|
+
/**
|
|
112
|
+
* Use tsx to execute TypeScript files.
|
|
113
|
+
*
|
|
114
|
+
* tsx is a fast TypeScript runtime that does not perform type-checking.
|
|
115
|
+
* You may opt-in to an explicit type-checking step before the script is run.
|
|
116
|
+
*/
|
|
117
|
+
static tsx(options?: TsxRunnerOptions): TypeScriptRunner;
|
|
118
|
+
/**
|
|
119
|
+
* Use the native Node.js TypeScript support.
|
|
120
|
+
*
|
|
121
|
+
* Requires Node.js 22.18.0 or later.
|
|
122
|
+
* The script must use ESM style imports (no directories, include file endings, etc.).
|
|
123
|
+
*
|
|
124
|
+
* Named `nodejs` (not `node`) because a runner is a construct, and `node` is
|
|
125
|
+
* reserved by `constructs.Construct` for the construct's tree node.
|
|
126
|
+
*/
|
|
127
|
+
static nodejs(options?: NodeRunnerOptions): TypeScriptRunner;
|
|
128
|
+
private readonly _kind;
|
|
129
|
+
private readonly _options;
|
|
130
|
+
private constructor();
|
|
131
|
+
/**
|
|
132
|
+
* Returns a new (detached) runner of the same kind, with `overrides` merged
|
|
133
|
+
* over the current options.
|
|
134
|
+
*
|
|
135
|
+
* Safe to call while detached.
|
|
136
|
+
*/
|
|
137
|
+
copy(overrides?: TypeScriptRunnerOptions): TypeScriptRunner;
|
|
138
|
+
/**
|
|
139
|
+
* Produce the {@link RunScriptConfig} to run the given entrypoint with this
|
|
140
|
+
* runner.
|
|
141
|
+
*/
|
|
142
|
+
configFor(entrypoint: string): RunScriptConfig;
|
|
143
|
+
private renderTsNode;
|
|
144
|
+
private renderTsx;
|
|
145
|
+
private renderNode;
|
|
146
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeScriptRunner = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
const script_runner_1 = require("../script-runner");
|
|
6
|
+
const recreate_1 = require("../util/recreate");
|
|
7
|
+
/**
|
|
8
|
+
* The runner used to execute TypeScript files.
|
|
9
|
+
*
|
|
10
|
+
* A runner is a {@link FutureComponent}: create it standalone (e.g. via one of
|
|
11
|
+
* the static factories) and it is attached to a project by the component that
|
|
12
|
+
* consumes it. Use {@link TypeScriptRunner.copy} to derive a new runner with
|
|
13
|
+
* adjusted options.
|
|
14
|
+
*/
|
|
15
|
+
class TypeScriptRunner extends script_runner_1.ScriptRunner {
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.101.4" };
|
|
17
|
+
/**
|
|
18
|
+
* Use ts-node to execute TypeScript files.
|
|
19
|
+
*/
|
|
20
|
+
static tsNode(options = {}) {
|
|
21
|
+
return new TypeScriptRunner("ts-node", options);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Use tsx to execute TypeScript files.
|
|
25
|
+
*
|
|
26
|
+
* tsx is a fast TypeScript runtime that does not perform type-checking.
|
|
27
|
+
* You may opt-in to an explicit type-checking step before the script is run.
|
|
28
|
+
*/
|
|
29
|
+
static tsx(options = {}) {
|
|
30
|
+
return new TypeScriptRunner("tsx", options);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Use the native Node.js TypeScript support.
|
|
34
|
+
*
|
|
35
|
+
* Requires Node.js 22.18.0 or later.
|
|
36
|
+
* The script must use ESM style imports (no directories, include file endings, etc.).
|
|
37
|
+
*
|
|
38
|
+
* Named `nodejs` (not `node`) because a runner is a construct, and `node` is
|
|
39
|
+
* reserved by `constructs.Construct` for the construct's tree node.
|
|
40
|
+
*/
|
|
41
|
+
static nodejs(options = {}) {
|
|
42
|
+
return new TypeScriptRunner("node", options);
|
|
43
|
+
}
|
|
44
|
+
_kind;
|
|
45
|
+
_options;
|
|
46
|
+
constructor(kind, options) {
|
|
47
|
+
super();
|
|
48
|
+
this._kind = kind;
|
|
49
|
+
this._options = options;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns a new (detached) runner of the same kind, with `overrides` merged
|
|
53
|
+
* over the current options.
|
|
54
|
+
*
|
|
55
|
+
* Safe to call while detached.
|
|
56
|
+
*/
|
|
57
|
+
copy(overrides = {}) {
|
|
58
|
+
return (0, recreate_1.recreate)(this, this._kind, { ...this._options, ...overrides });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Produce the {@link RunScriptConfig} to run the given entrypoint with this
|
|
62
|
+
* runner.
|
|
63
|
+
*/
|
|
64
|
+
configFor(entrypoint) {
|
|
65
|
+
switch (this._kind) {
|
|
66
|
+
case "ts-node":
|
|
67
|
+
return this.renderTsNode(entrypoint);
|
|
68
|
+
case "tsx":
|
|
69
|
+
return this.renderTsx(entrypoint);
|
|
70
|
+
case "node":
|
|
71
|
+
return this.renderNode(entrypoint);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
renderTsNode(entrypoint) {
|
|
75
|
+
const typeCheck = this._options.typeCheck ?? true;
|
|
76
|
+
const swc = this._options.swc ?? false;
|
|
77
|
+
const command = ["ts-node"];
|
|
78
|
+
const dependencies = [{ name: "ts-node" }];
|
|
79
|
+
if (swc) {
|
|
80
|
+
dependencies.push({ name: "@swc/core" });
|
|
81
|
+
command.push("--swc");
|
|
82
|
+
}
|
|
83
|
+
if (!typeCheck) {
|
|
84
|
+
command.push("--transpileOnly");
|
|
85
|
+
}
|
|
86
|
+
if (this._options.tsconfig) {
|
|
87
|
+
command.push("--project", this._options.tsconfig);
|
|
88
|
+
}
|
|
89
|
+
// command.push("--prefer-ts-exts");
|
|
90
|
+
return {
|
|
91
|
+
dependencies,
|
|
92
|
+
steps: [{ execArgs: [...command, entrypoint] }],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
renderTsx(entrypoint) {
|
|
96
|
+
const typeCheck = this._options.typeCheck ?? false;
|
|
97
|
+
const command = ["tsx"];
|
|
98
|
+
const steps = [];
|
|
99
|
+
const dependencies = [{ name: "tsx" }];
|
|
100
|
+
if (this._options.tsconfig) {
|
|
101
|
+
command.push("--tsconfig", this._options.tsconfig);
|
|
102
|
+
}
|
|
103
|
+
if (typeCheck) {
|
|
104
|
+
steps.push(typeCheckStep(this._options.tsconfig));
|
|
105
|
+
}
|
|
106
|
+
steps.push({ execArgs: [...command, entrypoint] });
|
|
107
|
+
return { dependencies, steps };
|
|
108
|
+
}
|
|
109
|
+
renderNode(entrypoint) {
|
|
110
|
+
const typeCheck = this._options.typeCheck ?? false;
|
|
111
|
+
const command = ["node"];
|
|
112
|
+
const steps = [];
|
|
113
|
+
const dependencies = [];
|
|
114
|
+
if (this._options.experimentalTransformTypes ?? false) {
|
|
115
|
+
command.push("--experimental-transform-types");
|
|
116
|
+
command.push("--disable-warning=ExperimentalWarning");
|
|
117
|
+
}
|
|
118
|
+
if (typeCheck) {
|
|
119
|
+
steps.push(typeCheckStep(this._options.tsconfig));
|
|
120
|
+
dependencies.push({ name: "typescript" });
|
|
121
|
+
}
|
|
122
|
+
steps.push({ execArgs: [...command, entrypoint] });
|
|
123
|
+
return { dependencies, steps };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.TypeScriptRunner = TypeScriptRunner;
|
|
127
|
+
function typeCheckStep(tsconfig) {
|
|
128
|
+
const args = ["tsc", "--noEmit"];
|
|
129
|
+
if (tsconfig) {
|
|
130
|
+
args.push("-p", tsconfig);
|
|
131
|
+
}
|
|
132
|
+
return { execArgs: args, name: "typecheck" };
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC90eXBlc2NyaXB0LXJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0Esb0RBQXNFO0FBRXRFLCtDQUE0QztBQXVINUM7Ozs7Ozs7R0FPRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsNEJBQVk7O0lBQ2hEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUErQixFQUFFO1FBQ3BELE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUE0QixFQUFFO1FBQzlDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUE2QixFQUFFO1FBQ2xELE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVnQixLQUFLLENBQWE7SUFDbEIsUUFBUSxDQUFjO0lBRXZDLFlBQW9CLElBQWdCLEVBQUUsT0FBb0I7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJLENBQUMsWUFBcUMsRUFBRTtRQUNqRCxPQUFPLElBQUEsbUJBQVEsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7T0FHRztJQUNJ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QUFJLEtBQUssRUFBRSxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEQsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDakMsQ0FBQzs7QUFySUgsNENBc0lDO0FBRUQsU0FBUyxhQUFhLENBQUMsUUFBaUI7SUFDdEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVwZW5kZW5jeVJlcXVlc3QgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyB0eXBlIFJ1blNjcmlwdENvbmZpZywgU2NyaXB0UnVubmVyIH0gZnJvbSBcIi4uL3NjcmlwdC1ydW5uZXJcIjtcbmltcG9ydCB0eXBlIHsgVGFza1N0ZXAgfSBmcm9tIFwiLi4vdGFzay1tb2RlbFwiO1xuaW1wb3J0IHsgcmVjcmVhdGUgfSBmcm9tIFwiLi4vdXRpbC9yZWNyZWF0ZVwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSB0cy1ub2RlIHJ1bm5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUc05vZGVSdW5uZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHlwZS1jaGVjayB0aGUgc2NyaXB0IGR1cmluZyBleGVjdXRpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1R5cGVTdHJvbmcvdHMtbm9kZSN0eXBlY2hlY2tcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgdHNjb25maWcgZmlsZSB0byB1c2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHMtbm9kZSBkZWZhdWx0IGRpc2NvdmVyeVxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIFNXQyBmb3IgdHJhbnNwaWxhdGlvbi5cbiAgICpcbiAgICogVGhpcyB3aWxsIGRpc2FibGUgdHlwZS1jaGVja2luZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vVHlwZVN0cm9uZy90cy1ub2RlI3N3Y1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3djPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgdHN4IHJ1bm5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUc3hSdW5uZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHlwZS1jaGVjayB0aGUgZW50cnlwb2ludCBiZWZvcmUgZXhlY3V0aW5nLlxuICAgKlxuICAgKiBCZWNhdXNlIHRzeCBkb2VzIG5vdCB0eXBlIGNoZWNrIGNvZGUsIHlvdSBtYXkgd2FudCB0byBlbmFibGUgdGhpcyBmb3IgYWRkaXRpb25hbCB0eXBlIHNhZmV0eS5cbiAgICogV2hlbiBlbmFibGVkLCBydW5zIGB0c2MgLS1ub0VtaXRgLCB1c2luZyB0aGUgcHJvdmlkZWQgdHNjb25maWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB0eXBlQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSB0c2NvbmZpZyBmaWxlIHRvIHVzZS5cbiAgICogV2hlbiBzcGVjaWZpZWQsIHdpbGwgdXNlIHRoaXMgdHNjb25maWcgZm9yIHJ1bm5pbmcgdHN4IGFuZCB0eXBlLWNoZWNraW5nIChpZiBlbmFibGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0c3gvdHlwZXNjcmlwdCBkZWZhdWx0IGRpc2NvdmVyeVxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIG5hdGl2ZSBOb2RlLmpzIFR5cGVTY3JpcHQgcnVubmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVSdW5uZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHlwZS1jaGVjayB0aGUgZW50cnlwb2ludCBiZWZvcmUgZXhlY3V0aW5nLlxuICAgKlxuICAgKiBCZWNhdXNlIHRoZSBuYXRpdmUgTm9kZS5qcyBUeXBlU2NyaXB0IGRvZXMgbm90IHR5cGUgY2hlY2sgY29kZSxcbiAgICogeW91IG1heSB3YW50IHRvIGVuYWJsZSB0aGlzIGZvciBhZGRpdGlvbmFsIHR5cGUgc2FmZXR5LlxuICAgKiBXaGVuIGVuYWJsZWQsIHJ1bnMgYHRzYyAtLW5vRW1pdGAsIHVzaW5nIHRoZSBwcm92aWRlZCB0c2NvbmZpZy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIHRzY29uZmlnIGZpbGUgZm9yIHR5cGUtY2hlY2tpbmcuXG4gICAqIFdoZW4gc3BlY2lmaWVkLCB3aWxsIHVzZSB0aGlzIHRzY29uZmlnIGZvciB0eXBlLWNoZWNraW5nIChpZiBlbmFibGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0eXBlc2NyaXB0IGRlZmF1bHQgZGlzY292ZXJ5XG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbHNvIGVuYWJsZSBgLS1leHBlcmltZW50YWwtdHJhbnNmb3JtLXR5cGVzYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFRyYW5zZm9ybVR5cGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0aGF0IGNhbiBiZSBhZGp1c3RlZCBvbiBhbnkge0BsaW5rIFR5cGVTY3JpcHRSdW5uZXJ9LCByZWdhcmRsZXNzXG4gKiBvZiBpdHMgcnVudGltZS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBvdmVycmlkZSB0eXBlIGZvciB7QGxpbmsgVHlwZVNjcmlwdFJ1bm5lci5jb3B5fS4gUnVudGltZS1zcGVjaWZpY1xuICogY3JlYXRpb24gb3B0aW9ucyAoc3VjaCBhcyBgc3djYCBmb3IgdHMtbm9kZSkgYXJlIHNldCB2aWEgdGhlIHN0YXRpYyBmYWN0b3JpZXNcbiAqIGFuZCBhcmUgcHJlc2VydmVkIC0gYnV0IGNhbm5vdCBiZSBjaGFuZ2VkIC0gYnkgYGNvcHlgLCBzbyBhIGNvcHkgY2FuIG5ldmVyXG4gKiBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2YgYSBydW5uZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdFJ1bm5lck9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byB0eXBlLWNoZWNrIHRoZSBlbnRyeXBvaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgdHNjb25maWcgZmlsZSB0byB1c2UuXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IHN0cmluZztcbn1cblxudHlwZSBSdW5uZXJLaW5kID0gXCJ0cy1ub2RlXCIgfCBcInRzeFwiIHwgXCJub2RlXCI7XG5cbi8qKlxuICogVGhlIGZ1bGwsIGludGVybmFsIG9wdGlvbiBzZXQgZm9yIGEgcnVubmVyOiB0aGUgY29tbW9uIG9wdGlvbnMgcGx1cyB0aGVcbiAqIHJ1bnRpbWUtc3BlY2lmaWMgY3JlYXRpb24gb3B0aW9ucy4gTmV2ZXIgZXhwb3NlZCBwdWJsaWNseS5cbiAqL1xuaW50ZXJmYWNlIFJ1bm5lclN0YXRlIGV4dGVuZHMgVHlwZVNjcmlwdFJ1bm5lck9wdGlvbnMge1xuICByZWFkb25seSBzd2M/OiBib29sZWFuO1xuICByZWFkb25seSBleHBlcmltZW50YWxUcmFuc2Zvcm1UeXBlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHJ1bm5lciB1c2VkIHRvIGV4ZWN1dGUgVHlwZVNjcmlwdCBmaWxlcy5cbiAqXG4gKiBBIHJ1bm5lciBpcyBhIHtAbGluayBGdXR1cmVDb21wb25lbnR9OiBjcmVhdGUgaXQgc3RhbmRhbG9uZSAoZS5nLiB2aWEgb25lIG9mXG4gKiB0aGUgc3RhdGljIGZhY3RvcmllcykgYW5kIGl0IGlzIGF0dGFjaGVkIHRvIGEgcHJvamVjdCBieSB0aGUgY29tcG9uZW50IHRoYXRcbiAqIGNvbnN1bWVzIGl0LiBVc2Uge0BsaW5rIFR5cGVTY3JpcHRSdW5uZXIuY29weX0gdG8gZGVyaXZlIGEgbmV3IHJ1bm5lciB3aXRoXG4gKiBhZGp1c3RlZCBvcHRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdFJ1bm5lciBleHRlbmRzIFNjcmlwdFJ1bm5lciB7XG4gIC8qKlxuICAgKiBVc2UgdHMtbm9kZSB0byBleGVjdXRlIFR5cGVTY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRzTm9kZShvcHRpb25zOiBUc05vZGVSdW5uZXJPcHRpb25zID0ge30pOiBUeXBlU2NyaXB0UnVubmVyIHtcbiAgICByZXR1cm4gbmV3IFR5cGVTY3JpcHRSdW5uZXIoXCJ0cy1ub2RlXCIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0c3ggdG8gZXhlY3V0ZSBUeXBlU2NyaXB0IGZpbGVzLlxuICAgKlxuICAgKiB0c3ggaXMgYSBmYXN0IFR5cGVTY3JpcHQgcnVudGltZSB0aGF0IGRvZXMgbm90IHBlcmZvcm0gdHlwZS1jaGVja2luZy5cbiAgICogWW91IG1heSBvcHQtaW4gdG8gYW4gZXhwbGljaXQgdHlwZS1jaGVja2luZyBzdGVwIGJlZm9yZSB0aGUgc2NyaXB0IGlzIHJ1bi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdHN4KG9wdGlvbnM6IFRzeFJ1bm5lck9wdGlvbnMgPSB7fSk6IFR5cGVTY3JpcHRSdW5uZXIge1xuICAgIHJldHVybiBuZXcgVHlwZVNjcmlwdFJ1bm5lcihcInRzeFwiLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlIG5hdGl2ZSBOb2RlLmpzIFR5cGVTY3JpcHQgc3VwcG9ydC5cbiAgICpcbiAgICogUmVxdWlyZXMgTm9kZS5qcyAyMi4xOC4wIG9yIGxhdGVyLlxuICAgKiBUaGUgc2NyaXB0IG11c3QgdXNlIEVTTSBzdHlsZSBpbXBvcnRzIChubyBkaXJlY3RvcmllcywgaW5jbHVkZSBmaWxlIGVuZGluZ3MsIGV0Yy4pLlxuICAgKlxuICAgKiBOYW1lZCBgbm9kZWpzYCAobm90IGBub2RlYCkgYmVjYXVzZSBhIHJ1bm5lciBpcyBhIGNvbnN0cnVjdCwgYW5kIGBub2RlYCBpc1xuICAgKiByZXNlcnZlZCBieSBgY29uc3RydWN0cy5Db25zdHJ1Y3RgIGZvciB0aGUgY29uc3RydWN0J3MgdHJlZSBub2RlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub2RlanMob3B0aW9uczogTm9kZVJ1bm5lck9wdGlvbnMgPSB7fSk6IFR5cGVTY3JpcHRSdW5uZXIge1xuICAgIHJldHVybiBuZXcgVHlwZVNjcmlwdFJ1bm5lcihcIm5vZGVcIiwgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9raW5kOiBSdW5uZXJLaW5kO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBSdW5uZXJTdGF0ZTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGtpbmQ6IFJ1bm5lcktpbmQsIG9wdGlvbnM6IFJ1bm5lclN0YXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9raW5kID0ga2luZDtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IChkZXRhY2hlZCkgcnVubmVyIG9mIHRoZSBzYW1lIGtpbmQsIHdpdGggYG92ZXJyaWRlc2AgbWVyZ2VkXG4gICAqIG92ZXIgdGhlIGN1cnJlbnQgb3B0aW9ucy5cbiAgICpcbiAgICogU2FmZSB0byBjYWxsIHdoaWxlIGRldGFjaGVkLlxuICAgKi9cbiAgcHVibGljIGNvcHkob3ZlcnJpZGVzOiBUeXBlU2NyaXB0UnVubmVyT3B0aW9ucyA9IHt9KTogVHlwZVNjcmlwdFJ1bm5lciB7XG4gICAgcmV0dXJuIHJlY3JlYXRlKHRoaXMsIHRoaXMuX2tpbmQsIHsgLi4udGhpcy5fb3B0aW9ucywgLi4ub3ZlcnJpZGVzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIHtAbGluayBSdW5TY3JpcHRDb25maWd9IHRvIHJ1biB0aGUgZ2l2ZW4gZW50cnlwb2ludCB3aXRoIHRoaXNcbiAgICogcnVubmVyLlxuICAgKi9cbiAgcHVibGljIGNvbmZpZ0ZvcihlbnRyeXBvaW50OiBzdHJpbmcpOiBSdW5TY3JpcHRDb25maWcge1xuICAgIHN3aXRjaCAodGhpcy5fa2luZCkge1xuICAgICAgY2FzZSBcInRzLW5vZGVcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyVHNOb2RlKGVudHJ5cG9pbnQpO1xuICAgICAgY2FzZSBcInRzeFwiOlxuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJUc3goZW50cnlwb2ludCk7XG4gICAgICBjYXNlIFwibm9kZVwiOlxuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJOb2RlKGVudHJ5cG9pbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVHNOb2RlKGVudHJ5cG9pbnQ6IHN0cmluZyk6IFJ1blNjcmlwdENvbmZpZyB7XG4gICAgY29uc3QgdHlwZUNoZWNrID0gdGhpcy5fb3B0aW9ucy50eXBlQ2hlY2sgPz8gdHJ1ZTtcbiAgICBjb25zdCBzd2MgPSB0aGlzLl9vcHRpb25zLnN3YyA/PyBmYWxzZTtcblxuICAgIGNvbnN0IGNvbW1hbmQ6IHN0cmluZ1tdID0gW1widHMtbm9kZVwiXTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXM6IERlcGVuZGVuY3lSZXF1ZXN0W10gPSBbeyBuYW1lOiBcInRzLW5vZGVcIiB9XTtcblxuICAgIGlmIChzd2MpIHtcbiAgICAgIGRlcGVuZGVuY2llcy5wdXNoKHsgbmFtZTogXCJAc3djL2NvcmVcIiB9KTtcbiAgICAgIGNvbW1hbmQucHVzaChcIi0tc3djXCIpO1xuICAgIH1cblxuICAgIGlmICghdHlwZUNoZWNrKSB7XG4gICAgICBjb21tYW5kLnB1c2goXCItLXRyYW5zcGlsZU9ubHlcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX29wdGlvbnMudHNjb25maWcpIHtcbiAgICAgIGNvbW1hbmQucHVzaChcIi0tcHJvamVjdFwiLCB0aGlzLl9vcHRpb25zLnRzY29uZmlnKTtcbiAgICB9XG5cbiAgICAvLyBjb21tYW5kLnB1c2goXCItLXByZWZlci10cy1leHRzXCIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgIHN0ZXBzOiBbeyBleGVjQXJnczogWy4uLmNvbW1hbmQsIGVudHJ5cG9pbnRdIH1dLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRzeChlbnRyeXBvaW50OiBzdHJpbmcpOiBSdW5TY3JpcHRDb25maWcge1xuICAgIGNvbnN0IHR5cGVDaGVjayA9IHRoaXMuX29wdGlvbnMudHlwZUNoZWNrID8/IGZhbHNlO1xuXG4gICAgY29uc3QgY29tbWFuZDogc3RyaW5nW10gPSBbXCJ0c3hcIl07XG4gICAgY29uc3Qgc3RlcHM6IFRhc2tTdGVwW10gPSBbXTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXM6IERlcGVuZGVuY3lSZXF1ZXN0W10gPSBbeyBuYW1lOiBcInRzeFwiIH1dO1xuXG4gICAgaWYgKHRoaXMuX29wdGlvbnMudHNjb25maWcpIHtcbiAgICAgIGNvbW1hbmQucHVzaChcIi0tdHNjb25maWdcIiwgdGhpcy5fb3B0aW9ucy50c2NvbmZpZyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVDaGVjaykge1xuICAgICAgc3RlcHMucHVzaCh0eXBlQ2hlY2tTdGVwKHRoaXMuX29wdGlvbnMudHNjb25maWcpKTtcbiAgICB9XG5cbiAgICBzdGVwcy5wdXNoKHsgZXhlY0FyZ3M6IFsuLi5jb21tYW5kLCBlbnRyeXBvaW50XSB9KTtcblxuICAgIHJldHVybiB7IGRlcGVuZGVuY2llcywgc3RlcHMgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyTm9kZShlbnRyeXBvaW50OiBzdHJpbmcpOiBSdW5TY3JpcHRDb25maWcge1xuICAgIGNvbnN0IHR5cGVDaGVjayA9IHRoaXMuX29wdGlvbnMudHlwZUNoZWNrID8/IGZhbHNlO1xuXG4gICAgY29uc3QgY29tbWFuZDogc3RyaW5nW10gPSBbXCJub2RlXCJdO1xuICAgIGNvbnN0IHN0ZXBzOiBUYXNrU3RlcFtdID0gW107XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzOiBEZXBlbmRlbmN5UmVxdWVzdFtdID0gW107XG5cbiAgICBpZiAodGhpcy5fb3B0aW9ucy5leHBlcmltZW50YWxUcmFuc2Zvcm1UeXBlcyA/PyBmYWxzZSkge1xuICAgICAgY29tbWFuZC5wdXNoKFwiLS1leHBlcmltZW50YWwtdHJhbnNmb3JtLXR5cGVzXCIpO1xuICAgICAgY29tbWFuZC5wdXNoKFwiLS1kaXNhYmxlLXdhcm5pbmc9RXhwZXJpbWVudGFsV2FybmluZ1wiKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZUNoZWNrKSB7XG4gICAgICBzdGVwcy5wdXNoKHR5cGVDaGVja1N0ZXAodGhpcy5fb3B0aW9ucy50c2NvbmZpZykpO1xuICAgICAgZGVwZW5kZW5jaWVzLnB1c2goeyBuYW1lOiBcInR5cGVzY3JpcHRcIiB9KTtcbiAgICB9XG5cbiAgICBzdGVwcy5wdXNoKHsgZXhlY0FyZ3M6IFsuLi5jb21tYW5kLCBlbnRyeXBvaW50XSB9KTtcblxuICAgIHJldHVybiB7IGRlcGVuZGVuY2llcywgc3RlcHMgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0eXBlQ2hlY2tTdGVwKHRzY29uZmlnPzogc3RyaW5nKTogVGFza1N0ZXAge1xuICBjb25zdCBhcmdzID0gW1widHNjXCIsIFwiLS1ub0VtaXRcIl07XG4gIGlmICh0c2NvbmZpZykge1xuICAgIGFyZ3MucHVzaChcIi1wXCIsIHRzY29uZmlnKTtcbiAgfVxuICByZXR1cm4geyBleGVjQXJnczogYXJncywgbmFtZTogXCJ0eXBlY2hlY2tcIiB9O1xufVxuIl19
|
|
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
Adds a simple Typescript documentation generator
|
|
7
7
|
*/
|
|
8
8
|
class TypedocDocgen {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.101.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.101.4" };
|
|
10
10
|
constructor(project) {
|
|
11
11
|
project.addDevDeps("typedoc");
|
|
12
12
|
const docgen = project.addTask("docgen", {
|
|
@@ -2,6 +2,7 @@ import type { EslintOptions, NodeProjectOptions, TypeScriptCompilerOptions, Type
|
|
|
2
2
|
import { Eslint, NodeProject, TypescriptConfig } from "../javascript";
|
|
3
3
|
import type { Task } from "../task";
|
|
4
4
|
import type { ProjenrcOptions as ProjenrcTsOptions } from "../typescript";
|
|
5
|
+
import { TypeScriptRunner } from "../typescript";
|
|
5
6
|
/**
|
|
6
7
|
* @see https://kulshekhar.github.io/ts-jest/docs/getting-started/options/babelConfig/
|
|
7
8
|
*/
|
|
@@ -273,6 +274,15 @@ export interface TypeScriptProjectOptions extends NodeProjectOptions {
|
|
|
273
274
|
* Options for .projenrc.ts
|
|
274
275
|
*/
|
|
275
276
|
readonly projenrcTsOptions?: ProjenrcTsOptions;
|
|
277
|
+
/**
|
|
278
|
+
* The TypeScript runner to use for executing TypeScript files.
|
|
279
|
+
*
|
|
280
|
+
* This is a project-level setting that components (e.g. projenrc) will
|
|
281
|
+
* use as their default runner.
|
|
282
|
+
*
|
|
283
|
+
* @default TypeScriptRunner.tsNode()
|
|
284
|
+
*/
|
|
285
|
+
readonly runner?: TypeScriptRunner;
|
|
276
286
|
/**
|
|
277
287
|
* Options for ts-jest
|
|
278
288
|
*/
|
|
@@ -305,6 +315,10 @@ export declare class TypeScriptProject extends NodeProject {
|
|
|
305
315
|
* The directory in which tests reside.
|
|
306
316
|
*/
|
|
307
317
|
readonly testdir: string;
|
|
318
|
+
/**
|
|
319
|
+
* The TypeScript runner used for executing TypeScript files.
|
|
320
|
+
*/
|
|
321
|
+
readonly runner: TypeScriptRunner;
|
|
308
322
|
/**
|
|
309
323
|
* The "watch" task.
|
|
310
324
|
*/
|