@neurodevs/meta-node 0.19.2 → 0.19.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/build/__tests__/impl/NpmWorkspaceTypeChecker.test.d.ts +3 -0
- package/build/__tests__/impl/NpmWorkspaceTypeChecker.test.js +25 -9
- package/build/__tests__/impl/NpmWorkspaceTypeChecker.test.js.map +1 -1
- package/build/impl/NpmWorkspaceTypeChecker.js +8 -3
- package/build/impl/NpmWorkspaceTypeChecker.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/impl/NpmWorkspaceTypeChecker.test.ts +36 -8
- package/src/impl/NpmWorkspaceTypeChecker.ts +9 -3
|
@@ -4,12 +4,15 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
4
4
|
private static readonly workspacePath;
|
|
5
5
|
private static readonly repoName1;
|
|
6
6
|
private static readonly repoName2;
|
|
7
|
+
private static readonly fakeDir1;
|
|
8
|
+
private static readonly fakeDir2;
|
|
7
9
|
private static readonly repoPaths;
|
|
8
10
|
protected static beforeEach(): Promise<void>;
|
|
9
11
|
protected static createsInstance(): Promise<void>;
|
|
10
12
|
protected static checksTypesForAllNpmReposInWorkspacePath(): Promise<void>;
|
|
11
13
|
protected static catchesExitCodeIfThereAreTypeErrors(): Promise<void>;
|
|
12
14
|
protected static onlyChecksInDirsWithPackageJson(): Promise<void>;
|
|
15
|
+
protected static onlyChecksDirsForPackageJson(): Promise<void>;
|
|
13
16
|
private static setFakeReadDir;
|
|
14
17
|
private static setFakeExec;
|
|
15
18
|
private static NpmWorkspaceTypeChecker;
|
|
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { exec as execSync } from 'node:child_process';
|
|
8
8
|
import { promisify } from 'node:util';
|
|
9
|
-
import { callsToExec, fakeExec, fakeReadDir, resetCallsToExec, resetCallsToReadDir, setExecThrowsFor, setFakeReadDirResult, } from '@neurodevs/fake-node-core';
|
|
9
|
+
import { callsToExec, callsToReadDir, createFakeDir, createFakeFile, fakeExec, fakeReadDir, resetCallsToExec, resetCallsToReadDir, setExecThrowsFor, setFakeReadDirResult, } from '@neurodevs/fake-node-core';
|
|
10
10
|
import { test, assert } from '@neurodevs/node-tdd';
|
|
11
11
|
const exec = promisify(execSync);
|
|
12
12
|
import NpmWorkspaceTypeChecker from '../../impl/NpmWorkspaceTypeChecker.js';
|
|
@@ -16,6 +16,12 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
16
16
|
static workspacePath = this.generateId();
|
|
17
17
|
static repoName1 = this.generateId();
|
|
18
18
|
static repoName2 = this.generateId();
|
|
19
|
+
static fakeDir1 = createFakeDir({
|
|
20
|
+
name: this.repoName1,
|
|
21
|
+
});
|
|
22
|
+
static fakeDir2 = createFakeDir({
|
|
23
|
+
name: this.repoName2,
|
|
24
|
+
});
|
|
19
25
|
static repoPaths = [
|
|
20
26
|
`${this.workspacePath}/${this.repoName1}`,
|
|
21
27
|
`${this.workspacePath}/${this.repoName2}`,
|
|
@@ -34,7 +40,7 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
34
40
|
const calls = callsToExec.filter((call) => call.command === 'npx tsc --noEmit' &&
|
|
35
41
|
(call.options?.cwd === this.repoPaths[0] ||
|
|
36
42
|
call.options?.cwd === this.repoPaths[1]));
|
|
37
|
-
assert.isEqual(calls.length, 2, 'Failed to check types
|
|
43
|
+
assert.isEqual(calls.length, 2, 'Failed to check types!');
|
|
38
44
|
}
|
|
39
45
|
static async catchesExitCodeIfThereAreTypeErrors() {
|
|
40
46
|
setExecThrowsFor('npx tsc --noEmit');
|
|
@@ -44,18 +50,25 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
44
50
|
setFakeReadDirResult(this.repoPaths[0], []);
|
|
45
51
|
await this.instance.run();
|
|
46
52
|
const calls = callsToExec.filter((call) => call.command === 'npx tsc --noEmit');
|
|
47
|
-
assert.isEqual(calls.length, 1, 'Checked types in repo without
|
|
53
|
+
assert.isEqual(calls.length, 1, 'Checked types in repo without tsconfig.json!');
|
|
54
|
+
}
|
|
55
|
+
static async onlyChecksDirsForPackageJson() {
|
|
56
|
+
const filename = this.generateId();
|
|
57
|
+
const fakeFile = createFakeFile({
|
|
58
|
+
name: filename,
|
|
59
|
+
parentPath: this.workspacePath,
|
|
60
|
+
});
|
|
61
|
+
setFakeReadDirResult(this.workspacePath, [fakeFile]);
|
|
62
|
+
await this.instance.run();
|
|
63
|
+
assert.isEqual(callsToReadDir.length, 1, 'Checked types in non-directory!');
|
|
48
64
|
}
|
|
49
65
|
static setFakeReadDir() {
|
|
50
66
|
NpmWorkspaceTypeChecker.readDir =
|
|
51
67
|
fakeReadDir;
|
|
52
68
|
resetCallsToReadDir();
|
|
53
|
-
setFakeReadDirResult(this.workspacePath, [
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
]);
|
|
57
|
-
setFakeReadDirResult(this.repoPaths[0], ['package.json']);
|
|
58
|
-
setFakeReadDirResult(this.repoPaths[1], ['package.json']);
|
|
69
|
+
setFakeReadDirResult(this.workspacePath, [this.fakeDir1, this.fakeDir2]);
|
|
70
|
+
setFakeReadDirResult(this.repoPaths[0], ['tsconfig.json']);
|
|
71
|
+
setFakeReadDirResult(this.repoPaths[1], ['tsconfig.json']);
|
|
59
72
|
}
|
|
60
73
|
static setFakeExec() {
|
|
61
74
|
NpmWorkspaceTypeChecker.exec = fakeExec;
|
|
@@ -77,4 +90,7 @@ __decorate([
|
|
|
77
90
|
__decorate([
|
|
78
91
|
test()
|
|
79
92
|
], NpmWorkspaceTypeCheckerTest, "onlyChecksInDirsWithPackageJson", null);
|
|
93
|
+
__decorate([
|
|
94
|
+
test()
|
|
95
|
+
], NpmWorkspaceTypeCheckerTest, "onlyChecksDirsForPackageJson", null);
|
|
80
96
|
//# sourceMappingURL=NpmWorkspaceTypeChecker.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmWorkspaceTypeChecker.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmWorkspaceTypeChecker.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EACH,WAAW,EACX,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEhC,OAAO,uBAEN,MAAM,uCAAuC,CAAA;AAC9C,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,mBAAmB;IAChE,MAAM,CAAC,QAAQ,CAAsB;IAErC,MAAM,CAAU,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAEjD,MAAM,CAAU,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAC7C,MAAM,CAAU,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAE7C,MAAM,CAAU,SAAS,GAAG;QAChC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE;QACzC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE;KAC5C,CAAA;IAES,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;IAClD,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,wCAAwC;QAC3D,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QAEzB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAC5B,CAAC,IAAI,EAAE,EAAE,CACL,IAAI,CAAC,OAAO,KAAK,kBAAkB;YACnC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACnD,CAAA;QAED,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"NpmWorkspaceTypeChecker.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmWorkspaceTypeChecker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,11 +14,16 @@ export default class NpmWorkspaceTypeChecker {
|
|
|
14
14
|
}
|
|
15
15
|
async run() {
|
|
16
16
|
console.info('Starting type checking...\n');
|
|
17
|
-
const repoNames = await this.readDir(this.workspacePath
|
|
17
|
+
const repoNames = await this.readDir(this.workspacePath, {
|
|
18
|
+
withFileTypes: true,
|
|
19
|
+
});
|
|
18
20
|
for (const repoName of repoNames) {
|
|
19
|
-
|
|
21
|
+
if (!repoName.isDirectory()) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const fullRepoPath = `${this.workspacePath}/${repoName.name}`;
|
|
20
25
|
const repoContents = await this.readDir(fullRepoPath);
|
|
21
|
-
if (!repoContents.includes('
|
|
26
|
+
if (!repoContents.includes('tsconfig.json')) {
|
|
22
27
|
continue;
|
|
23
28
|
}
|
|
24
29
|
console.info(`Checking types for ${fullRepoPath}...`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmWorkspaceTypeChecker.js","sourceRoot":"","sources":["../../src/impl/NpmWorkspaceTypeChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,CAAC,OAAO,OAAO,uBAAuB;IACjC,MAAM,CAAC,KAAK,CAAkC;IAC9C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEhC,aAAa,CAAQ;IAE7B,YAAsB,aAAqB;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACtC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,aAAqB;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"NpmWorkspaceTypeChecker.js","sourceRoot":"","sources":["../../src/impl/NpmWorkspaceTypeChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,CAAC,OAAO,OAAO,uBAAuB;IACjC,MAAM,CAAC,KAAK,CAAkC;IAC9C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEhC,aAAa,CAAQ;IAE7B,YAAsB,aAAqB;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACtC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,aAAqB;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,aAAa,EAAE,IAAI;SACtB,CAAC,CAAA;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1B,SAAQ;YACZ,CAAC;YAED,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAA;YAE7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAErD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC1C,SAAQ;YACZ,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,sBAAsB,YAAY,KAAK,CAAC,CAAA;YAErD,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAA;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,CAAC,KAAK,CAAC,wBAAwB,YAAY,GAAG,CAAC,CAAA;YAC1D,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAY,OAAO;QACf,OAAO,uBAAuB,CAAC,OAAO,CAAA;IAC1C,CAAC;IACD,IAAY,IAAI;QACZ,OAAO,uBAAuB,CAAC,IAAI,CAAA;IACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,6 +4,9 @@ import { promisify } from 'node:util'
|
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
callsToExec,
|
|
7
|
+
callsToReadDir,
|
|
8
|
+
createFakeDir,
|
|
9
|
+
createFakeFile,
|
|
7
10
|
fakeExec,
|
|
8
11
|
fakeReadDir,
|
|
9
12
|
resetCallsToExec,
|
|
@@ -28,6 +31,14 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
28
31
|
private static readonly repoName1 = this.generateId()
|
|
29
32
|
private static readonly repoName2 = this.generateId()
|
|
30
33
|
|
|
34
|
+
private static readonly fakeDir1 = createFakeDir({
|
|
35
|
+
name: this.repoName1,
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
private static readonly fakeDir2 = createFakeDir({
|
|
39
|
+
name: this.repoName2,
|
|
40
|
+
})
|
|
41
|
+
|
|
31
42
|
private static readonly repoPaths = [
|
|
32
43
|
`${this.workspacePath}/${this.repoName1}`,
|
|
33
44
|
`${this.workspacePath}/${this.repoName2}`,
|
|
@@ -58,7 +69,7 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
58
69
|
call.options?.cwd === this.repoPaths[1])
|
|
59
70
|
)
|
|
60
71
|
|
|
61
|
-
assert.isEqual(calls.length, 2, 'Failed to check types
|
|
72
|
+
assert.isEqual(calls.length, 2, 'Failed to check types!')
|
|
62
73
|
}
|
|
63
74
|
|
|
64
75
|
@test()
|
|
@@ -81,7 +92,27 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
81
92
|
assert.isEqual(
|
|
82
93
|
calls.length,
|
|
83
94
|
1,
|
|
84
|
-
'Checked types in repo without
|
|
95
|
+
'Checked types in repo without tsconfig.json!'
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@test()
|
|
100
|
+
protected static async onlyChecksDirsForPackageJson() {
|
|
101
|
+
const filename = this.generateId()
|
|
102
|
+
|
|
103
|
+
const fakeFile = createFakeFile({
|
|
104
|
+
name: filename,
|
|
105
|
+
parentPath: this.workspacePath,
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
setFakeReadDirResult(this.workspacePath, [fakeFile])
|
|
109
|
+
|
|
110
|
+
await this.instance.run()
|
|
111
|
+
|
|
112
|
+
assert.isEqual(
|
|
113
|
+
callsToReadDir.length,
|
|
114
|
+
1,
|
|
115
|
+
'Checked types in non-directory!'
|
|
85
116
|
)
|
|
86
117
|
}
|
|
87
118
|
|
|
@@ -90,13 +121,10 @@ export default class NpmWorkspaceTypeCheckerTest extends AbstractPackageTest {
|
|
|
90
121
|
fakeReadDir as unknown as typeof readdir
|
|
91
122
|
resetCallsToReadDir()
|
|
92
123
|
|
|
93
|
-
setFakeReadDirResult(this.workspacePath, [
|
|
94
|
-
this.repoName1,
|
|
95
|
-
this.repoName2,
|
|
96
|
-
])
|
|
124
|
+
setFakeReadDirResult(this.workspacePath, [this.fakeDir1, this.fakeDir2])
|
|
97
125
|
|
|
98
|
-
setFakeReadDirResult(this.repoPaths[0], ['
|
|
99
|
-
setFakeReadDirResult(this.repoPaths[1], ['
|
|
126
|
+
setFakeReadDirResult(this.repoPaths[0], ['tsconfig.json'])
|
|
127
|
+
setFakeReadDirResult(this.repoPaths[1], ['tsconfig.json'])
|
|
100
128
|
}
|
|
101
129
|
|
|
102
130
|
private static setFakeExec() {
|
|
@@ -19,14 +19,20 @@ export default class NpmWorkspaceTypeChecker implements WorkspaceTypeChecker {
|
|
|
19
19
|
|
|
20
20
|
public async run() {
|
|
21
21
|
console.info('Starting type checking...\n')
|
|
22
|
-
const repoNames = await this.readDir(this.workspacePath
|
|
22
|
+
const repoNames = await this.readDir(this.workspacePath, {
|
|
23
|
+
withFileTypes: true,
|
|
24
|
+
})
|
|
23
25
|
|
|
24
26
|
for (const repoName of repoNames) {
|
|
25
|
-
|
|
27
|
+
if (!repoName.isDirectory()) {
|
|
28
|
+
continue
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const fullRepoPath = `${this.workspacePath}/${repoName.name}`
|
|
26
32
|
|
|
27
33
|
const repoContents = await this.readDir(fullRepoPath)
|
|
28
34
|
|
|
29
|
-
if (!repoContents.includes('
|
|
35
|
+
if (!repoContents.includes('tsconfig.json')) {
|
|
30
36
|
continue
|
|
31
37
|
}
|
|
32
38
|
|