@plugjs/plug 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugs/tsc/options.cjs +1 -2
- package/dist/plugs/tsc/options.cjs.map +1 -1
- package/dist/plugs/tsc/options.mjs +1 -2
- package/dist/plugs/tsc/options.mjs.map +1 -1
- package/dist/plugs/tsc/runner.cjs +31 -17
- package/dist/plugs/tsc/runner.cjs.map +1 -1
- package/dist/plugs/tsc/runner.mjs +32 -18
- package/dist/plugs/tsc/runner.mjs.map +1 -1
- package/package.json +2 -2
- package/src/plugs/tsc/options.ts +3 -3
- package/src/plugs/tsc/runner.ts +52 -28
- package/types/plugs/tsc/options.d.ts +1 -1
|
@@ -68,8 +68,7 @@ async function getCompilerOptions(file, ...override) {
|
|
|
68
68
|
if (file)
|
|
69
69
|
result = mergeResults(result, await loadOptions(file));
|
|
70
70
|
if (override.length) {
|
|
71
|
-
const [overrides, overridesFile] = override;
|
|
72
|
-
const overridesDir = (0, import_paths.getAbsoluteParent)(overridesFile);
|
|
71
|
+
const [overrides, overridesFile, overridesDir] = override;
|
|
73
72
|
const options = import_typescript.default.convertCompilerOptionsFromJson(overrides, overridesDir, overridesFile);
|
|
74
73
|
result = mergeResults(result, options);
|
|
75
74
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugs/tsc/options.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,mBAAqE;AACrE,qBAAyB;AAWzB,SAAS,aACL,MACA,UAC6B;AAC/B,SAAO;AAAA,IACL,SAAS,EAAE,GAAG,KAAK,SAAS,GAAG,SAAS,QAAQ;AAAA,IAChD,QAAQ,CAAE,GAAG,KAAK,QAAQ,GAAG,SAAS,MAAO;AAAA,EAC/C;AACF;AAIA,eAAe,YACX,MACA,QAAwB,CAAE,IAAK,GACO;AACxC,QAAM,UAAM,gCAAkB,IAAI;AAGlC,QAAM,OAAO,UAAM,yBAAS,MAAM,OAAO;AACzC,QAAM,EAAE,QAAQ,MAAM,IAAI,kBAAAA,QAAG,0BAA0B,MAAM,IAAI;AACjE,MAAI;AAAO,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE,KAAM,EAAE;AAGnD,QAAM,EAAE,kBAAkB,CAAC,GAAG,SAAS,YAAY,IAAI;AACvD,QAAM,SAAS,kBAAAA,QAAG,+BAA+B,iBAAiB,KAAK,IAAI;AAC3E,MAAI,OAAO,OAAO;AAAQ,WAAO;AAGjC,MAAI,CAAC;AAAa,WAAO;AAGzB,QAAM,UAAM,kCAAoB,KAAK,WAAW;AAGhD,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE;AAAA,MAC9B,aAAa,wCAAwC;AAAA,MACrD,UAAU,kBAAAA,QAAG,mBAAmB;AAAA,MAChC,MAAM;AAAA,MACN,MAAM,kBAAAA,QAAG,iBAAiB,MAAM,MAAM,kBAAAA,QAAG,aAAa,MAAM,OAAO,kBAAAA,QAAG,WAAW,IAAI;AAAA,MACrF,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAE,EAAE;AAAA,EACN;AAGA,SAAO,aAAa,MAAM,YAAY,KAAK,CAAE,GAAG,OAAO,GAAI,CAAC,GAAG,MAAM;AACvE;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,mBAAqE;AACrE,qBAAyB;AAWzB,SAAS,aACL,MACA,UAC6B;AAC/B,SAAO;AAAA,IACL,SAAS,EAAE,GAAG,KAAK,SAAS,GAAG,SAAS,QAAQ;AAAA,IAChD,QAAQ,CAAE,GAAG,KAAK,QAAQ,GAAG,SAAS,MAAO;AAAA,EAC/C;AACF;AAIA,eAAe,YACX,MACA,QAAwB,CAAE,IAAK,GACO;AACxC,QAAM,UAAM,gCAAkB,IAAI;AAGlC,QAAM,OAAO,UAAM,yBAAS,MAAM,OAAO;AACzC,QAAM,EAAE,QAAQ,MAAM,IAAI,kBAAAA,QAAG,0BAA0B,MAAM,IAAI;AACjE,MAAI;AAAO,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE,KAAM,EAAE;AAGnD,QAAM,EAAE,kBAAkB,CAAC,GAAG,SAAS,YAAY,IAAI;AACvD,QAAM,SAAS,kBAAAA,QAAG,+BAA+B,iBAAiB,KAAK,IAAI;AAC3E,MAAI,OAAO,OAAO;AAAQ,WAAO;AAGjC,MAAI,CAAC;AAAa,WAAO;AAGzB,QAAM,UAAM,kCAAoB,KAAK,WAAW;AAGhD,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE;AAAA,MAC9B,aAAa,wCAAwC;AAAA,MACrD,UAAU,kBAAAA,QAAG,mBAAmB;AAAA,MAChC,MAAM;AAAA,MACN,MAAM,kBAAAA,QAAG,iBAAiB,MAAM,MAAM,kBAAAA,QAAG,aAAa,MAAM,OAAO,kBAAAA,QAAG,WAAW,IAAI;AAAA,MACrF,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAE,EAAE;AAAA,EACN;AAGA,SAAO,aAAa,MAAM,YAAY,KAAK,CAAE,GAAG,OAAO,GAAI,CAAC,GAAG,MAAM;AACvE;AAgBA,eAAsB,mBAClB,SACG,UACmC;AACxC,MAAI,SAAwC,EAAE,SAAS,kBAAAA,QAAG,0BAA0B,GAAG,QAAQ,CAAC,EAAE;AAGlG,MAAI;AAAM,aAAS,aAAa,QAAQ,MAAM,YAAY,IAAI,CAAC;AAG/D,MAAI,SAAS,QAAQ;AACnB,UAAM,CAAE,WAAW,eAAe,YAAa,IAAI;AACnD,UAAM,UAAU,kBAAAA,QAAG,+BAA+B,WAAW,cAAc,aAAa;AACxF,aAAS,aAAa,QAAQ,OAAO;AAAA,EACvC;AAGA,SAAO;AACT;",
|
|
5
5
|
"names": ["ts"]
|
|
6
6
|
}
|
|
@@ -38,8 +38,7 @@ async function getCompilerOptions(file, ...override) {
|
|
|
38
38
|
if (file)
|
|
39
39
|
result = mergeResults(result, await loadOptions(file));
|
|
40
40
|
if (override.length) {
|
|
41
|
-
const [overrides, overridesFile] = override;
|
|
42
|
-
const overridesDir = getAbsoluteParent(overridesFile);
|
|
41
|
+
const [overrides, overridesFile, overridesDir] = override;
|
|
43
42
|
const options = ts.convertCompilerOptionsFromJson(overrides, overridesDir, overridesFile);
|
|
44
43
|
result = mergeResults(result, options);
|
|
45
44
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugs/tsc/options.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAO,QAAQ;AAEf,SAAuB,mBAAmB,2BAA2B;AACrE,SAAS,gBAAgB;AAWzB,SAAS,aACL,MACA,UAC6B;AAC/B,SAAO;AAAA,IACL,SAAS,EAAE,GAAG,KAAK,SAAS,GAAG,SAAS,QAAQ;AAAA,IAChD,QAAQ,CAAE,GAAG,KAAK,QAAQ,GAAG,SAAS,MAAO;AAAA,EAC/C;AACF;AAIA,eAAe,YACX,MACA,QAAwB,CAAE,IAAK,GACO;AACxC,QAAM,MAAM,kBAAkB,IAAI;AAGlC,QAAM,OAAO,MAAM,SAAS,MAAM,OAAO;AACzC,QAAM,EAAE,QAAQ,MAAM,IAAI,GAAG,0BAA0B,MAAM,IAAI;AACjE,MAAI;AAAO,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE,KAAM,EAAE;AAGnD,QAAM,EAAE,kBAAkB,CAAC,GAAG,SAAS,YAAY,IAAI;AACvD,QAAM,SAAS,GAAG,+BAA+B,iBAAiB,KAAK,IAAI;AAC3E,MAAI,OAAO,OAAO;AAAQ,WAAO;AAGjC,MAAI,CAAC;AAAa,WAAO;AAGzB,QAAM,MAAM,oBAAoB,KAAK,WAAW;AAGhD,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE;AAAA,MAC9B,aAAa,wCAAwC;AAAA,MACrD,UAAU,GAAG,mBAAmB;AAAA,MAChC,MAAM;AAAA,MACN,MAAM,GAAG,iBAAiB,MAAM,MAAM,GAAG,aAAa,MAAM,OAAO,GAAG,WAAW,IAAI;AAAA,MACrF,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAE,EAAE;AAAA,EACN;AAGA,SAAO,aAAa,MAAM,YAAY,KAAK,CAAE,GAAG,OAAO,GAAI,CAAC,GAAG,MAAM;AACvE;
|
|
4
|
+
"mappings": ";AAAA,OAAO,QAAQ;AAEf,SAAuB,mBAAmB,2BAA2B;AACrE,SAAS,gBAAgB;AAWzB,SAAS,aACL,MACA,UAC6B;AAC/B,SAAO;AAAA,IACL,SAAS,EAAE,GAAG,KAAK,SAAS,GAAG,SAAS,QAAQ;AAAA,IAChD,QAAQ,CAAE,GAAG,KAAK,QAAQ,GAAG,SAAS,MAAO;AAAA,EAC/C;AACF;AAIA,eAAe,YACX,MACA,QAAwB,CAAE,IAAK,GACO;AACxC,QAAM,MAAM,kBAAkB,IAAI;AAGlC,QAAM,OAAO,MAAM,SAAS,MAAM,OAAO;AACzC,QAAM,EAAE,QAAQ,MAAM,IAAI,GAAG,0BAA0B,MAAM,IAAI;AACjE,MAAI;AAAO,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE,KAAM,EAAE;AAGnD,QAAM,EAAE,kBAAkB,CAAC,GAAG,SAAS,YAAY,IAAI;AACvD,QAAM,SAAS,GAAG,+BAA+B,iBAAiB,KAAK,IAAI;AAC3E,MAAI,OAAO,OAAO;AAAQ,WAAO;AAGjC,MAAI,CAAC;AAAa,WAAO;AAGzB,QAAM,MAAM,oBAAoB,KAAK,WAAW;AAGhD,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAE;AAAA,MAC9B,aAAa,wCAAwC;AAAA,MACrD,UAAU,GAAG,mBAAmB;AAAA,MAChC,MAAM;AAAA,MACN,MAAM,GAAG,iBAAiB,MAAM,MAAM,GAAG,aAAa,MAAM,OAAO,GAAG,WAAW,IAAI;AAAA,MACrF,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAE,EAAE;AAAA,EACN;AAGA,SAAO,aAAa,MAAM,YAAY,KAAK,CAAE,GAAG,OAAO,GAAI,CAAC,GAAG,MAAM;AACvE;AAgBA,eAAsB,mBAClB,SACG,UACmC;AACxC,MAAI,SAAwC,EAAE,SAAS,GAAG,0BAA0B,GAAG,QAAQ,CAAC,EAAE;AAGlG,MAAI;AAAM,aAAS,aAAa,QAAQ,MAAM,YAAY,IAAI,CAAC;AAG/D,MAAI,SAAS,QAAQ;AACnB,UAAM,CAAE,WAAW,eAAe,YAAa,IAAI;AACnD,UAAM,UAAU,GAAG,+BAA+B,WAAW,cAAc,aAAa;AACxF,aAAS,aAAa,QAAQ,OAAO;AAAA,EACvC;AAGA,SAAO;AACT;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -46,35 +46,49 @@ var Tsc = class {
|
|
|
46
46
|
this._options = options;
|
|
47
47
|
}
|
|
48
48
|
async pipe(files, run) {
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
const baseDir = run.resolve(".");
|
|
50
|
+
const report = run.report("TypeScript Report");
|
|
51
|
+
const overrides = { ...this._options };
|
|
52
|
+
const sourcesConfig = (0, import_paths.isFile)(files.directory, "tsconfig.json");
|
|
53
|
+
const tsconfig = this._tsconfig ? run.resolve(this._tsconfig) : sourcesConfig || (0, import_paths.isFile)(run.resolve("tsconfig.json"));
|
|
54
|
+
let rootDir;
|
|
55
|
+
if (overrides.rootDir) {
|
|
56
|
+
rootDir = overrides.rootDir = run.resolve(overrides.rootDir);
|
|
57
|
+
} else {
|
|
58
|
+
rootDir = overrides.rootDir = files.directory;
|
|
59
|
+
}
|
|
60
|
+
let outDir;
|
|
61
|
+
if (overrides.outDir) {
|
|
62
|
+
outDir = overrides.outDir = run.resolve(overrides.outDir);
|
|
63
|
+
} else {
|
|
64
|
+
outDir = overrides.outDir = rootDir;
|
|
65
|
+
}
|
|
66
|
+
if (overrides.rootDirs) {
|
|
67
|
+
overrides.rootDirs = overrides.rootDirs.map((dir) => run.resolve(dir));
|
|
68
|
+
}
|
|
69
|
+
if (overrides.baseUrl)
|
|
70
|
+
overrides.baseUrl = run.resolve(overrides.baseUrl);
|
|
54
71
|
const { errors, options } = await (0, import_options2.getCompilerOptions)(
|
|
55
72
|
tsconfig,
|
|
56
73
|
overrides,
|
|
57
|
-
run.buildFile
|
|
74
|
+
run.buildFile,
|
|
75
|
+
baseDir
|
|
58
76
|
);
|
|
59
|
-
|
|
60
|
-
(0, import_report.updateReport)(report, errors, (0, import_paths.getCurrentWorkingDirectory)());
|
|
77
|
+
(0, import_report.updateReport)(report, errors, baseDir);
|
|
61
78
|
if (report.errors)
|
|
62
79
|
report.done(true);
|
|
63
|
-
const { rootDir, outDir } = options;
|
|
64
|
-
const root = rootDir ? run.resolve(rootDir) : files.directory;
|
|
65
|
-
const out = outDir ? run.resolve(outDir) : root;
|
|
66
|
-
const host = new import_compiler.TypeScriptHost(root);
|
|
67
80
|
const paths = [...files.absolutePaths()];
|
|
68
81
|
for (const path of paths)
|
|
69
82
|
import_log.log.trace(`Compiling "${(0, import_log.$p)(path)}"`);
|
|
70
83
|
import_log.log.info("Compiling", paths.length, "files");
|
|
71
84
|
import_log.log.debug("Compliation options", options);
|
|
85
|
+
const host = new import_compiler.TypeScriptHost(rootDir);
|
|
72
86
|
const program = import_typescript.default.createProgram(paths, options, host, void 0, errors);
|
|
73
87
|
const diagnostics = import_typescript.default.getPreEmitDiagnostics(program);
|
|
74
|
-
(0, import_report.updateReport)(report, diagnostics,
|
|
88
|
+
(0, import_report.updateReport)(report, diagnostics, rootDir);
|
|
75
89
|
if (report.errors)
|
|
76
90
|
report.done(true);
|
|
77
|
-
const builder = run.files(
|
|
91
|
+
const builder = run.files(outDir);
|
|
78
92
|
const promises = [];
|
|
79
93
|
const result = program.emit(void 0, (fileName, code) => {
|
|
80
94
|
promises.push(builder.write(fileName, code).then((file) => {
|
|
@@ -84,13 +98,13 @@ var Tsc = class {
|
|
|
84
98
|
throw (0, import_assert.failure)();
|
|
85
99
|
}));
|
|
86
100
|
});
|
|
87
|
-
(0, import_report.updateReport)(report, result.diagnostics, root);
|
|
88
|
-
if (report.errors)
|
|
89
|
-
report.done(true);
|
|
90
101
|
const settlements = await Promise.allSettled(promises);
|
|
91
102
|
const failures = settlements.reduce((failures2, s) => failures2 + s.status === "rejected" ? 1 : 0, 0);
|
|
92
103
|
if (failures)
|
|
93
104
|
throw (0, import_assert.failure)();
|
|
105
|
+
(0, import_report.updateReport)(report, result.diagnostics, rootDir);
|
|
106
|
+
if (report.errors)
|
|
107
|
+
report.done(true);
|
|
94
108
|
const outputs = builder.build();
|
|
95
109
|
import_log.log.info("TSC produced", outputs.length, "files into", (0, import_log.$p)(outputs.directory));
|
|
96
110
|
return outputs;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugs/tsc/runner.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,oBAAwB;AAExB,iBAAwB;AACxB,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,oBAAwB;AAExB,iBAAwB;AACxB,mBAAqC;AAGrC,qBAA2C;AAC3C,sBAA+B;AAC/B,IAAAA,kBAAmC;AACnC,oBAA6B;AAM7B,IAAqB,MAArB,MAAgD;AAAA,EAC7B;AAAA,EACA;AAAA,EAOjB,eAAe,MAAwC;AACrD,UAAM,EAAE,QAAQ,CAAE,QAAS,GAAG,QAAQ,QAAI,6BAAa,MAAM,CAAC,CAAC;AAC/D,SAAK,YAAY;AACjB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAM,KAAK,OAAc,KAA0B;AACjD,UAAM,UAAU,IAAI,QAAQ,GAAG;AAC/B,UAAM,SAAS,IAAI,OAAO,mBAAmB;AAC7C,UAAM,YAAY,EAAE,GAAG,KAAK,SAAS;AAMrC,UAAM,oBAAgB,qBAAO,MAAM,WAAW,eAAe;AAC7D,UAAM,WAAW,KAAK,YAAY,IAAI,QAAQ,KAAK,SAAS,IAC1D,qBAAiB,qBAAO,IAAI,QAAQ,eAAe,CAAC;AAGtD,QAAI;AACJ,QAAI,UAAU,SAAS;AACrB,gBAAU,UAAU,UAAU,IAAI,QAAQ,UAAU,OAAO;AAAA,IAC7D,OAAO;AACL,gBAAU,UAAU,UAAU,MAAM;AAAA,IACtC;AAGA,QAAI;AACJ,QAAI,UAAU,QAAQ;AACpB,eAAS,UAAU,SAAS,IAAI,QAAQ,UAAU,MAAM;AAAA,IAC1D,OAAO;AACL,eAAS,UAAU,SAAS;AAAA,IAC9B;AAGA,QAAI,UAAU,UAAU;AACtB,gBAAU,WAAW,UAAU,SAAS,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC;AAAA,IACvE;AAGA,QAAI,UAAU;AAAS,gBAAU,UAAU,IAAI,QAAQ,UAAU,OAAO;AAGxE,UAAM,EAAE,QAAQ,QAAQ,IAAI,UAAM;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,IAAO;AAGX,oCAAa,QAAQ,QAAQ,OAAO;AACpC,QAAI,OAAO;AAAQ,aAAO,KAAK,IAAI;AAGnC,UAAM,QAAQ,CAAE,GAAG,MAAM,cAAc,CAAE;AACzC,eAAW,QAAQ;AAAO,qBAAI,MAAM,kBAAc,eAAG,IAAI,IAAI;AAE7D,mBAAI,KAAK,aAAa,MAAM,QAAQ,OAAO;AAC3C,mBAAI,MAAM,uBAAuB,OAAO;AAGxC,UAAM,OAAO,IAAI,+BAAe,OAAO;AACvC,UAAM,UAAU,kBAAAC,QAAG,cAAc,OAAO,SAAS,MAAM,QAAW,MAAM;AACxE,UAAM,cAAc,kBAAAA,QAAG,sBAAsB,OAAO;AAGpD,oCAAa,QAAQ,aAAa,OAAO;AACzC,QAAI,OAAO;AAAQ,aAAO,KAAK,IAAI;AAGnC,UAAM,UAAU,IAAI,MAAM,MAAM;AAChC,UAAM,WAA4B,CAAC;AACnC,UAAM,SAAS,QAAQ,KAAK,QAAW,CAAC,UAAU,SAAS;AACzD,eAAS,KAAK,QAAQ,MAAM,UAAU,IAAI,EAAE,KAAK,CAAC,SAAS;AACzD,uBAAI,MAAM,eAAW,eAAG,IAAI,CAAC;AAAA,MAC/B,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,YAAI,IAAI,MAAM,oBAAoB,UAAU,KAAK;AACjD,kBAAM,uBAAQ;AAAA,MAChB,CAAC,CAAC;AAAA,IACJ,CAAC;AAGD,UAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AACrD,UAAM,WAAW,YACZ,OAAO,CAACC,WAAU,MAAMA,YAAW,EAAE,WAAW,aAAa,IAAI,GAAG,CAAC;AAC1E,QAAI;AAAU,gBAAM,uBAAQ;AAG5B,oCAAa,QAAQ,OAAO,aAAa,OAAO;AAChD,QAAI,OAAO;AAAQ,aAAO,KAAK,IAAI;AAGnC,UAAM,UAAU,QAAQ,MAAM;AAC9B,mBAAI,KAAK,gBAAgB,QAAQ,QAAQ,kBAAc,eAAG,QAAQ,SAAS,CAAC;AAC5E,WAAO;AAAA,EACT;AACF;",
|
|
5
5
|
"names": ["import_options", "ts", "failures"]
|
|
6
6
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import ts from "typescript";
|
|
3
3
|
import { failure } from "../../assert.mjs";
|
|
4
4
|
import { $p, log } from "../../log.mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { isFile } from "../../paths.mjs";
|
|
6
6
|
import { parseOptions } from "../../utils/options.mjs";
|
|
7
7
|
import { TypeScriptHost } from "./compiler.mjs";
|
|
8
8
|
import { getCompilerOptions } from "./options.mjs";
|
|
@@ -16,35 +16,49 @@ var Tsc = class {
|
|
|
16
16
|
this._options = options;
|
|
17
17
|
}
|
|
18
18
|
async pipe(files, run) {
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
const baseDir = run.resolve(".");
|
|
20
|
+
const report = run.report("TypeScript Report");
|
|
21
|
+
const overrides = { ...this._options };
|
|
22
|
+
const sourcesConfig = isFile(files.directory, "tsconfig.json");
|
|
23
|
+
const tsconfig = this._tsconfig ? run.resolve(this._tsconfig) : sourcesConfig || isFile(run.resolve("tsconfig.json"));
|
|
24
|
+
let rootDir;
|
|
25
|
+
if (overrides.rootDir) {
|
|
26
|
+
rootDir = overrides.rootDir = run.resolve(overrides.rootDir);
|
|
27
|
+
} else {
|
|
28
|
+
rootDir = overrides.rootDir = files.directory;
|
|
29
|
+
}
|
|
30
|
+
let outDir;
|
|
31
|
+
if (overrides.outDir) {
|
|
32
|
+
outDir = overrides.outDir = run.resolve(overrides.outDir);
|
|
33
|
+
} else {
|
|
34
|
+
outDir = overrides.outDir = rootDir;
|
|
35
|
+
}
|
|
36
|
+
if (overrides.rootDirs) {
|
|
37
|
+
overrides.rootDirs = overrides.rootDirs.map((dir) => run.resolve(dir));
|
|
38
|
+
}
|
|
39
|
+
if (overrides.baseUrl)
|
|
40
|
+
overrides.baseUrl = run.resolve(overrides.baseUrl);
|
|
24
41
|
const { errors, options } = await getCompilerOptions(
|
|
25
42
|
tsconfig,
|
|
26
43
|
overrides,
|
|
27
|
-
run.buildFile
|
|
44
|
+
run.buildFile,
|
|
45
|
+
baseDir
|
|
28
46
|
);
|
|
29
|
-
|
|
30
|
-
updateReport(report, errors, getCurrentWorkingDirectory());
|
|
47
|
+
updateReport(report, errors, baseDir);
|
|
31
48
|
if (report.errors)
|
|
32
49
|
report.done(true);
|
|
33
|
-
const { rootDir, outDir } = options;
|
|
34
|
-
const root = rootDir ? run.resolve(rootDir) : files.directory;
|
|
35
|
-
const out = outDir ? run.resolve(outDir) : root;
|
|
36
|
-
const host = new TypeScriptHost(root);
|
|
37
50
|
const paths = [...files.absolutePaths()];
|
|
38
51
|
for (const path of paths)
|
|
39
52
|
log.trace(`Compiling "${$p(path)}"`);
|
|
40
53
|
log.info("Compiling", paths.length, "files");
|
|
41
54
|
log.debug("Compliation options", options);
|
|
55
|
+
const host = new TypeScriptHost(rootDir);
|
|
42
56
|
const program = ts.createProgram(paths, options, host, void 0, errors);
|
|
43
57
|
const diagnostics = ts.getPreEmitDiagnostics(program);
|
|
44
|
-
updateReport(report, diagnostics,
|
|
58
|
+
updateReport(report, diagnostics, rootDir);
|
|
45
59
|
if (report.errors)
|
|
46
60
|
report.done(true);
|
|
47
|
-
const builder = run.files(
|
|
61
|
+
const builder = run.files(outDir);
|
|
48
62
|
const promises = [];
|
|
49
63
|
const result = program.emit(void 0, (fileName, code) => {
|
|
50
64
|
promises.push(builder.write(fileName, code).then((file) => {
|
|
@@ -54,13 +68,13 @@ var Tsc = class {
|
|
|
54
68
|
throw failure();
|
|
55
69
|
}));
|
|
56
70
|
});
|
|
57
|
-
updateReport(report, result.diagnostics, root);
|
|
58
|
-
if (report.errors)
|
|
59
|
-
report.done(true);
|
|
60
71
|
const settlements = await Promise.allSettled(promises);
|
|
61
72
|
const failures = settlements.reduce((failures2, s) => failures2 + s.status === "rejected" ? 1 : 0, 0);
|
|
62
73
|
if (failures)
|
|
63
74
|
throw failure();
|
|
75
|
+
updateReport(report, result.diagnostics, rootDir);
|
|
76
|
+
if (report.errors)
|
|
77
|
+
report.done(true);
|
|
64
78
|
const outputs = builder.build();
|
|
65
79
|
log.info("TSC produced", outputs.length, "files into", $p(outputs.directory));
|
|
66
80
|
return outputs;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugs/tsc/runner.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAO,QAAQ;AAEf,SAAS,eAAe;AAExB,SAAS,IAAI,WAAW;AACxB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["failures"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plugjs/plug",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
24
|
"bootstrap": "./bootstrap.sh",
|
|
25
|
-
"build": "
|
|
25
|
+
"build": "./runme.sh",
|
|
26
26
|
"dev": "npx nodemon -e .ts -w ./test -w ./src -x ./runme.sh"
|
|
27
27
|
},
|
|
28
28
|
"author": "",
|
package/src/plugs/tsc/options.ts
CHANGED
|
@@ -72,12 +72,13 @@ export async function getCompilerOptions(
|
|
|
72
72
|
file: AbsolutePath | undefined,
|
|
73
73
|
overrides: ts.CompilerOptions,
|
|
74
74
|
overridesFile: AbsolutePath,
|
|
75
|
+
overridesBasePath: AbsolutePath,
|
|
75
76
|
): Promise<CompilerOptionsAndDiagnostics>
|
|
76
77
|
|
|
77
78
|
/** Load compiler options from a JSON file, and merge in the overrides */
|
|
78
79
|
export async function getCompilerOptions(
|
|
79
80
|
file?: AbsolutePath,
|
|
80
|
-
...override: [ ts.CompilerOptions, AbsolutePath ] | []
|
|
81
|
+
...override: [ ts.CompilerOptions, AbsolutePath, AbsolutePath ] | []
|
|
81
82
|
): Promise<CompilerOptionsAndDiagnostics> {
|
|
82
83
|
let result: CompilerOptionsAndDiagnostics = { options: ts.getDefaultCompilerOptions(), errors: [] }
|
|
83
84
|
|
|
@@ -86,8 +87,7 @@ export async function getCompilerOptions(
|
|
|
86
87
|
|
|
87
88
|
// If we have overrides, merge them
|
|
88
89
|
if (override.length) {
|
|
89
|
-
const [ overrides, overridesFile ] = override
|
|
90
|
-
const overridesDir = getAbsoluteParent(overridesFile)
|
|
90
|
+
const [ overrides, overridesFile, overridesDir ] = override
|
|
91
91
|
const options = ts.convertCompilerOptionsFromJson(overrides, overridesDir, overridesFile)
|
|
92
92
|
result = mergeResults(result, options)
|
|
93
93
|
}
|
package/src/plugs/tsc/runner.ts
CHANGED
|
@@ -3,7 +3,7 @@ import ts from 'typescript' // TypeScript does NOT support ESM modules
|
|
|
3
3
|
import { failure } from '../../assert.js'
|
|
4
4
|
import { Files } from '../../files.js'
|
|
5
5
|
import { $p, log } from '../../log.js'
|
|
6
|
-
import {
|
|
6
|
+
import { AbsolutePath, isFile } from '../../paths.js'
|
|
7
7
|
import { Plug } from '../../pipe.js'
|
|
8
8
|
import { Run } from '../../run.js'
|
|
9
9
|
import { parseOptions, ParseOptions } from '../../utils/options.js'
|
|
@@ -31,47 +31,71 @@ export default class Tsc implements Plug<Files> {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
async pipe(files: Files, run: Run): Promise<Files> {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
const baseDir = run.resolve('.') // "this" directory, base of all relative paths
|
|
35
|
+
const report = run.report('TypeScript Report') // report used throughout
|
|
36
|
+
const overrides = { ...this._options } // clone our options
|
|
37
|
+
|
|
38
|
+
/*
|
|
39
|
+
* The "tsconfig" file is either specified, or (if existing) first checked
|
|
40
|
+
* alongside the sources, otherwise checked in the current directory.
|
|
41
|
+
*/
|
|
42
|
+
const sourcesConfig = isFile(files.directory, 'tsconfig.json')
|
|
43
|
+
const tsconfig = this._tsconfig ? run.resolve(this._tsconfig) :
|
|
44
|
+
sourcesConfig || isFile(run.resolve('tsconfig.json'))
|
|
45
|
+
|
|
46
|
+
/* Root directory must always exist */
|
|
47
|
+
let rootDir: AbsolutePath
|
|
48
|
+
if (overrides.rootDir) {
|
|
49
|
+
rootDir = overrides.rootDir = run.resolve(overrides.rootDir)
|
|
50
|
+
} else {
|
|
51
|
+
rootDir = overrides.rootDir = files.directory
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Output directory _also_ must always exist */
|
|
55
|
+
let outDir: AbsolutePath
|
|
56
|
+
if (overrides.outDir) {
|
|
57
|
+
outDir = overrides.outDir = run.resolve(overrides.outDir)
|
|
58
|
+
} else {
|
|
59
|
+
outDir = overrides.outDir = rootDir // default to the root directory
|
|
60
|
+
}
|
|
37
61
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
62
|
+
/* All other root paths */
|
|
63
|
+
if (overrides.rootDirs) {
|
|
64
|
+
overrides.rootDirs = overrides.rootDirs.map((dir) => run.resolve(dir))
|
|
41
65
|
}
|
|
42
66
|
|
|
67
|
+
/* The baseURL is resolved, as well */
|
|
68
|
+
if (overrides.baseUrl) overrides.baseUrl = run.resolve(overrides.baseUrl)
|
|
69
|
+
|
|
70
|
+
/* We can now get our compiler options, and check any and all overrides */
|
|
43
71
|
const { errors, options } = await getCompilerOptions(
|
|
44
72
|
tsconfig, // resolved tsconfig.json from constructor, might be undefined
|
|
45
73
|
overrides, // overrides from constructor, might be an empty object
|
|
46
|
-
run.buildFile
|
|
47
|
-
|
|
48
|
-
const report = run.report('TypeScript Report')
|
|
74
|
+
run.buildFile, // the build file where the overrides were specified,
|
|
75
|
+
baseDir) // base dir where to resolve overrides
|
|
49
76
|
|
|
50
|
-
|
|
51
|
-
updateReport(report, errors,
|
|
77
|
+
/* Update report and fail on errors */
|
|
78
|
+
updateReport(report, errors, baseDir)
|
|
52
79
|
if (report.errors) report.done(true)
|
|
53
80
|
|
|
54
|
-
|
|
55
|
-
const root = rootDir ? run.resolve(rootDir) : files.directory
|
|
56
|
-
const out = outDir ? run.resolve(outDir) : root
|
|
57
|
-
|
|
58
|
-
const host = new TypeScriptHost(root)
|
|
59
|
-
|
|
81
|
+
/* Prep for compilation */
|
|
60
82
|
const paths = [ ...files.absolutePaths() ]
|
|
61
83
|
for (const path of paths) log.trace(`Compiling "${$p(path)}"`)
|
|
62
84
|
|
|
63
|
-
// Get our build file and create the master program
|
|
64
85
|
log.info('Compiling', paths.length, 'files')
|
|
65
86
|
log.debug('Compliation options', options)
|
|
66
87
|
|
|
88
|
+
/* Typescript host, create program and compile */
|
|
89
|
+
const host = new TypeScriptHost(rootDir)
|
|
67
90
|
const program = ts.createProgram(paths, options, host, undefined, errors)
|
|
68
91
|
const diagnostics = ts.getPreEmitDiagnostics(program)
|
|
69
92
|
|
|
70
|
-
|
|
71
|
-
updateReport(report, diagnostics,
|
|
93
|
+
/* Update report and fail on errors */
|
|
94
|
+
updateReport(report, diagnostics, rootDir)
|
|
72
95
|
if (report.errors) report.done(true)
|
|
73
96
|
|
|
74
|
-
|
|
97
|
+
/* Write out all files asynchronously */
|
|
98
|
+
const builder = run.files(outDir)
|
|
75
99
|
const promises: Promise<void>[] = []
|
|
76
100
|
const result = program.emit(undefined, (fileName, code) => {
|
|
77
101
|
promises.push(builder.write(fileName, code).then((file) => {
|
|
@@ -82,17 +106,17 @@ export default class Tsc implements Plug<Files> {
|
|
|
82
106
|
}))
|
|
83
107
|
})
|
|
84
108
|
|
|
85
|
-
|
|
86
|
-
updateReport(report, result.diagnostics, root)
|
|
87
|
-
if (report.errors) report.done(true)
|
|
88
|
-
|
|
89
|
-
// Await for all files to be written and check
|
|
109
|
+
/* Await for all files to be written and check */
|
|
90
110
|
const settlements = await Promise.allSettled(promises)
|
|
91
111
|
const failures = settlements
|
|
92
112
|
.reduce((failures, s) => failures + s.status === 'rejected' ? 1 : 0, 0)
|
|
93
113
|
if (failures) throw failure() // already logged above
|
|
94
114
|
|
|
95
|
-
|
|
115
|
+
/* Update report and fail on errors */
|
|
116
|
+
updateReport(report, result.diagnostics, rootDir)
|
|
117
|
+
if (report.errors) report.done(true)
|
|
118
|
+
|
|
119
|
+
/* All done, build our files and return it */
|
|
96
120
|
const outputs = builder.build()
|
|
97
121
|
log.info('TSC produced', outputs.length, 'files into', $p(outputs.directory))
|
|
98
122
|
return outputs
|
|
@@ -5,4 +5,4 @@ export declare type CompilerOptionsAndDiagnostics = {
|
|
|
5
5
|
errors: readonly ts.Diagnostic[];
|
|
6
6
|
};
|
|
7
7
|
export declare function getCompilerOptions(file?: AbsolutePath): Promise<CompilerOptionsAndDiagnostics>;
|
|
8
|
-
export declare function getCompilerOptions(file: AbsolutePath | undefined, overrides: ts.CompilerOptions, overridesFile: AbsolutePath): Promise<CompilerOptionsAndDiagnostics>;
|
|
8
|
+
export declare function getCompilerOptions(file: AbsolutePath | undefined, overrides: ts.CompilerOptions, overridesFile: AbsolutePath, overridesBasePath: AbsolutePath): Promise<CompilerOptionsAndDiagnostics>;
|