@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.
@@ -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 for first repo!');
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 package.json!');
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
- this.repoName1,
55
- this.repoName2,
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":"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"}
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
- const fullRepoPath = `${this.workspacePath}/${repoName}`;
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('package.json')) {
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;QAExD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAA;YAExD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAErD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACzC,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/meta-node",
3
- "version": "0.19.2",
3
+ "version": "0.19.4",
4
4
  "description": "Meta-layer utilities for maintaining Node.js package ecosystems.",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -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 for first repo!')
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 package.json!'
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], ['package.json'])
99
- setFakeReadDirResult(this.repoPaths[1], ['package.json'])
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
- const fullRepoPath = `${this.workspacePath}/${repoName}`
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('package.json')) {
35
+ if (!repoContents.includes('tsconfig.json')) {
30
36
  continue
31
37
  }
32
38