@monorepolint/utils 0.6.0-alpha.2 → 0.6.0-alpha.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/.turbo/turbo-clean.log +1 -1
- package/.turbo/turbo-compile-typescript.log +1 -1
- package/.turbo/turbo-lint.log +7 -7
- package/.turbo/turbo-test.log +11 -10
- package/.turbo/turbo-transpile-typescript.log +4 -4
- package/CHANGELOG.md +4 -0
- package/build/js/index.js +489 -443
- package/build/js/index.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/CachingHost.d.ts.map +1 -1
- package/build/types/Host.d.ts.map +1 -1
- package/build/types/PackageJson.d.ts.map +1 -1
- package/build/types/SimpleHost.d.ts.map +1 -1
- package/build/types/Table.d.ts.map +1 -1
- package/build/types/findWorkspaceDir.d.ts.map +1 -1
- package/build/types/getPackageNameToDir.d.ts.map +1 -1
- package/build/types/getWorkspacePackageDirs.d.ts.map +1 -1
- package/build/types/index.d.ts +7 -7
- package/build/types/index.d.ts.map +1 -1
- package/build/types/matchesAnyGlob.d.ts.map +1 -1
- package/build/types/mutateJson.d.ts.map +1 -1
- package/build/types/nanosecondsToSanity.d.ts.map +1 -1
- package/coverage/AggregateTiming.ts.html +2 -2
- package/coverage/CachingHost.ts.html +252 -42
- package/coverage/Host.ts.html +15 -3
- package/coverage/PackageJson.ts.html +4 -4
- package/coverage/SimpleHost.ts.html +40 -7
- package/coverage/Table.ts.html +137 -29
- package/coverage/Timing.ts.html +1 -1
- package/coverage/clover.xml +527 -396
- package/coverage/coverage-final.json +13 -13
- package/coverage/findWorkspaceDir.ts.html +4 -4
- package/coverage/getPackageNameToDir.ts.html +18 -6
- package/coverage/getWorkspacePackageDirs.ts.html +168 -138
- package/coverage/index.html +40 -40
- package/coverage/index.ts.html +30 -30
- package/coverage/matchesAnyGlob.ts.html +37 -10
- package/coverage/mutateJson.ts.html +17 -5
- package/coverage/nanosecondsToSanity.ts.html +11 -5
- package/package.json +1 -2
- package/src/AggregateTiming.ts +1 -1
- package/src/CachingHost.ts +104 -34
- package/src/Host.ts +5 -1
- package/src/PackageJson.ts +3 -3
- package/src/SimpleHost.ts +14 -3
- package/src/Table.ts +58 -22
- package/src/__tests__/CachingHost.spec.ts +203 -166
- package/src/findWorkspaceDir.ts +3 -3
- package/src/getPackageNameToDir.ts +6 -2
- package/src/getWorkspacePackageDirs.ts +19 -9
- package/src/index.ts +7 -7
- package/src/matchesAnyGlob.ts +12 -3
- package/src/mutateJson.ts +5 -1
- package/src/nanosecondsToSanity.ts +3 -1
- package/vitest.config.mjs +6 -7
- package/vitest.config.mjs.timestamp-1736878329730-aa478e2241542.mjs +2 -2
|
@@ -162,11 +162,11 @@
|
|
|
162
162
|
*
|
|
163
163
|
*/
|
|
164
164
|
|
|
165
|
+
import { findUp } from "find-up";
|
|
166
|
+
import * as fs from "fs";
|
|
165
167
|
import * as path from "path";
|
|
166
168
|
import { Host } from "./Host.js";
|
|
167
169
|
import { PackageJson } from "./PackageJson.js";
|
|
168
|
-
import * as fs from "fs";
|
|
169
|
-
import { findUp } from "find-up";
|
|
170
170
|
|
|
171
171
|
export async function findPnpmWorkspaceDir(cwd: string) {
|
|
172
172
|
const workspaceManifestLocation = await findUp("pnpm-workspace.yaml", {
|
|
@@ -177,7 +177,7 @@ export async function findPnpmWorkspaceDir(cwd: string) {
|
|
|
177
177
|
|
|
178
178
|
export async function findWorkspaceDir(
|
|
179
179
|
host: Pick<Host, "readJson" | "exists">,
|
|
180
|
-
dir: string
|
|
180
|
+
dir: string,
|
|
181
181
|
): Promise<string | undefined> {
|
|
182
182
|
// Defining workspaces in package.json is not necessary in PNPM
|
|
183
183
|
const maybePnpmWorkspaceDir = await findPnpmWorkspaceDir(dir);
|
|
@@ -208,7 +208,7 @@ export async function findWorkspaceDir(
|
|
|
208
208
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
209
209
|
Code coverage generated by
|
|
210
210
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
211
|
-
at 2025-01-
|
|
211
|
+
at 2025-01-31T20:59:52.637Z
|
|
212
212
|
</div>
|
|
213
213
|
<script src="prettify.js"></script>
|
|
214
214
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>32/32</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>32/32</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -97,7 +97,11 @@
|
|
|
97
97
|
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
98
|
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
99
|
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
101
105
|
<span class="cline-any cline-neutral"> </span>
|
|
102
106
|
<span class="cline-any cline-neutral"> </span>
|
|
103
107
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -131,6 +135,10 @@
|
|
|
131
135
|
<span class="cline-any cline-yes">1x</span>
|
|
132
136
|
<span class="cline-any cline-yes">1x</span>
|
|
133
137
|
<span class="cline-any cline-yes">1x</span>
|
|
138
|
+
<span class="cline-any cline-yes">1x</span>
|
|
139
|
+
<span class="cline-any cline-yes">1x</span>
|
|
140
|
+
<span class="cline-any cline-yes">1x</span>
|
|
141
|
+
<span class="cline-any cline-yes">1x</span>
|
|
134
142
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*!
|
|
135
143
|
* Copyright 2019 Palantir Technologies, Inc.
|
|
136
144
|
*
|
|
@@ -150,11 +158,15 @@ import { PackageJson } from "./PackageJson.js";
|
|
|
150
158
|
export async function getPackageNameToDir(
|
|
151
159
|
host: Pick<Host, "readJson" | "exists">,
|
|
152
160
|
workspaceDir: string,
|
|
153
|
-
resolvePaths: boolean = false
|
|
161
|
+
resolvePaths: boolean = false,
|
|
154
162
|
) {
|
|
155
163
|
const ret = new Map<string, string>();
|
|
156
164
|
|
|
157
|
-
const workspacePackages = await getWorkspacePackageDirs(
|
|
165
|
+
const workspacePackages = await getWorkspacePackageDirs(
|
|
166
|
+
host,
|
|
167
|
+
workspaceDir,
|
|
168
|
+
resolvePaths,
|
|
169
|
+
);
|
|
158
170
|
for (const packageDir of workspacePackages) {
|
|
159
171
|
const packagePath = pathJoin(packageDir, "package.json");
|
|
160
172
|
const { name } = host.readJson(packagePath) as PackageJson;
|
|
@@ -172,7 +184,7 @@ export async function getPackageNameToDir(
|
|
|
172
184
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
173
185
|
Code coverage generated by
|
|
174
186
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
175
|
-
at 2025-01-
|
|
187
|
+
at 2025-01-31T20:59:52.637Z
|
|
176
188
|
</div>
|
|
177
189
|
<script src="prettify.js"></script>
|
|
178
190
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>74/74</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/
|
|
42
|
+
<span class='fraction'>0/0</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>74/74</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -133,146 +133,176 @@
|
|
|
133
133
|
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
134
|
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
135
|
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
137
147
|
<span class="cline-any cline-neutral"> </span>
|
|
138
148
|
<span class="cline-any cline-neutral"> </span>
|
|
139
149
|
<span class="cline-any cline-neutral"> </span>
|
|
140
150
|
<span class="cline-any cline-neutral"> </span>
|
|
141
151
|
<span class="cline-any cline-neutral"> </span>
|
|
142
152
|
<span class="cline-any cline-neutral"> </span>
|
|
143
|
-
<span class="cline-any cline-
|
|
144
|
-
<span class="cline-any cline-
|
|
145
|
-
<span class="cline-any cline-
|
|
146
|
-
<span class="cline-any cline-
|
|
147
|
-
<span class="cline-any cline-
|
|
148
|
-
<span class="cline-any cline-
|
|
149
|
-
<span class="cline-any cline-
|
|
150
|
-
<span class="cline-any cline-
|
|
151
|
-
<span class="cline-any cline-
|
|
152
|
-
<span class="cline-any cline-
|
|
153
|
-
<span class="cline-any cline-
|
|
154
|
-
<span class="cline-any cline-
|
|
155
|
-
<span class="cline-any cline-
|
|
156
|
-
<span class="cline-any cline-
|
|
157
|
-
<span class="cline-any cline-
|
|
158
|
-
<span class="cline-any cline-
|
|
159
|
-
<span class="cline-any cline-
|
|
160
|
-
<span class="cline-any cline-
|
|
161
|
-
<span class="cline-any cline-
|
|
162
|
-
<span class="cline-any cline-
|
|
163
|
-
<span class="cline-any cline-
|
|
164
|
-
<span class="cline-any cline-
|
|
165
|
-
<span class="cline-any cline-
|
|
166
|
-
<span class="cline-any cline-
|
|
167
|
-
<span class="cline-any cline-
|
|
168
|
-
<span class="cline-any cline-
|
|
169
|
-
<span class="cline-any cline-
|
|
170
|
-
<span class="cline-any cline-
|
|
171
|
-
<span class="cline-any cline-
|
|
172
|
-
<span class="cline-any cline-
|
|
173
|
-
<span class="cline-any cline-
|
|
174
|
-
<span class="cline-any cline-
|
|
175
|
-
<span class="cline-any cline-
|
|
176
|
-
<span class="cline-any cline-
|
|
177
|
-
<span class="cline-any cline-
|
|
178
|
-
<span class="cline-any cline-
|
|
179
|
-
<span class="cline-any cline-
|
|
180
|
-
<span class="cline-any cline-
|
|
181
|
-
<span class="cline-any cline-
|
|
182
|
-
<span class="cline-any cline-
|
|
183
|
-
<span class="cline-any cline-
|
|
184
|
-
<span class="cline-any cline-
|
|
185
|
-
<span class="cline-any cline-
|
|
186
|
-
<span class="cline-any cline-
|
|
187
|
-
<span class="cline-any cline-
|
|
188
|
-
<span class="cline-any cline-
|
|
189
|
-
<span class="cline-any cline-
|
|
190
|
-
<span class="cline-any cline-
|
|
191
|
-
<span class="cline-any cline-
|
|
192
|
-
<span class="cline-any cline-
|
|
193
|
-
<span class="cline-any cline-
|
|
194
|
-
<span class="cline-any cline-
|
|
195
|
-
<span class="cline-any cline-
|
|
196
|
-
<span class="cline-any cline-
|
|
197
|
-
<span class="cline-any cline-
|
|
198
|
-
<span class="cline-any cline-
|
|
199
|
-
<span class="cline-any cline-
|
|
200
|
-
<span class="cline-any cline-
|
|
201
|
-
<span class="cline-any cline-
|
|
202
|
-
<span class="cline-any cline-
|
|
203
|
-
<span class="cline-any cline-
|
|
204
|
-
<span class="cline-any cline-
|
|
205
|
-
<span class="cline-any cline-
|
|
206
|
-
<span class="cline-any cline-
|
|
153
|
+
<span class="cline-any cline-yes">1x</span>
|
|
154
|
+
<span class="cline-any cline-yes">1x</span>
|
|
155
|
+
<span class="cline-any cline-yes">1x</span>
|
|
156
|
+
<span class="cline-any cline-yes">1x</span>
|
|
157
|
+
<span class="cline-any cline-yes">1x</span>
|
|
158
|
+
<span class="cline-any cline-yes">1x</span>
|
|
159
|
+
<span class="cline-any cline-yes">1x</span>
|
|
160
|
+
<span class="cline-any cline-yes">1x</span>
|
|
161
|
+
<span class="cline-any cline-yes">1x</span>
|
|
162
|
+
<span class="cline-any cline-yes">1x</span>
|
|
163
|
+
<span class="cline-any cline-yes">1x</span>
|
|
164
|
+
<span class="cline-any cline-yes">1x</span>
|
|
165
|
+
<span class="cline-any cline-yes">1x</span>
|
|
166
|
+
<span class="cline-any cline-yes">1x</span>
|
|
167
|
+
<span class="cline-any cline-yes">1x</span>
|
|
168
|
+
<span class="cline-any cline-yes">1x</span>
|
|
169
|
+
<span class="cline-any cline-yes">1x</span>
|
|
170
|
+
<span class="cline-any cline-yes">1x</span>
|
|
171
|
+
<span class="cline-any cline-yes">1x</span>
|
|
172
|
+
<span class="cline-any cline-yes">1x</span>
|
|
173
|
+
<span class="cline-any cline-yes">1x</span>
|
|
174
|
+
<span class="cline-any cline-yes">1x</span>
|
|
175
|
+
<span class="cline-any cline-yes">1x</span>
|
|
176
|
+
<span class="cline-any cline-yes">1x</span>
|
|
177
|
+
<span class="cline-any cline-yes">1x</span>
|
|
178
|
+
<span class="cline-any cline-yes">1x</span>
|
|
179
|
+
<span class="cline-any cline-yes">1x</span>
|
|
180
|
+
<span class="cline-any cline-yes">1x</span>
|
|
181
|
+
<span class="cline-any cline-yes">1x</span>
|
|
182
|
+
<span class="cline-any cline-yes">1x</span>
|
|
183
|
+
<span class="cline-any cline-yes">1x</span>
|
|
184
|
+
<span class="cline-any cline-yes">1x</span>
|
|
185
|
+
<span class="cline-any cline-yes">1x</span>
|
|
186
|
+
<span class="cline-any cline-yes">1x</span>
|
|
187
|
+
<span class="cline-any cline-yes">1x</span>
|
|
188
|
+
<span class="cline-any cline-yes">1x</span>
|
|
189
|
+
<span class="cline-any cline-yes">1x</span>
|
|
190
|
+
<span class="cline-any cline-yes">1x</span>
|
|
191
|
+
<span class="cline-any cline-yes">1x</span>
|
|
192
|
+
<span class="cline-any cline-yes">1x</span>
|
|
193
|
+
<span class="cline-any cline-yes">1x</span>
|
|
194
|
+
<span class="cline-any cline-yes">1x</span>
|
|
195
|
+
<span class="cline-any cline-yes">1x</span>
|
|
196
|
+
<span class="cline-any cline-yes">1x</span>
|
|
197
|
+
<span class="cline-any cline-yes">1x</span>
|
|
198
|
+
<span class="cline-any cline-yes">1x</span>
|
|
199
|
+
<span class="cline-any cline-yes">1x</span>
|
|
200
|
+
<span class="cline-any cline-yes">1x</span>
|
|
201
|
+
<span class="cline-any cline-yes">1x</span>
|
|
202
|
+
<span class="cline-any cline-yes">1x</span>
|
|
203
|
+
<span class="cline-any cline-yes">1x</span>
|
|
204
|
+
<span class="cline-any cline-yes">1x</span>
|
|
205
|
+
<span class="cline-any cline-yes">1x</span>
|
|
206
|
+
<span class="cline-any cline-yes">1x</span>
|
|
207
|
+
<span class="cline-any cline-yes">1x</span>
|
|
208
|
+
<span class="cline-any cline-yes">1x</span>
|
|
209
|
+
<span class="cline-any cline-yes">1x</span>
|
|
210
|
+
<span class="cline-any cline-yes">1x</span>
|
|
211
|
+
<span class="cline-any cline-yes">1x</span>
|
|
212
|
+
<span class="cline-any cline-yes">1x</span>
|
|
213
|
+
<span class="cline-any cline-yes">1x</span>
|
|
214
|
+
<span class="cline-any cline-yes">1x</span>
|
|
215
|
+
<span class="cline-any cline-yes">1x</span>
|
|
216
|
+
<span class="cline-any cline-yes">1x</span>
|
|
217
|
+
<span class="cline-any cline-yes">1x</span>
|
|
218
|
+
<span class="cline-any cline-yes">1x</span>
|
|
219
|
+
<span class="cline-any cline-yes">1x</span>
|
|
220
|
+
<span class="cline-any cline-yes">1x</span>
|
|
221
|
+
<span class="cline-any cline-yes">1x</span>
|
|
222
|
+
<span class="cline-any cline-yes">1x</span>
|
|
223
|
+
<span class="cline-any cline-yes">1x</span>
|
|
224
|
+
<span class="cline-any cline-yes">1x</span>
|
|
225
|
+
<span class="cline-any cline-yes">1x</span>
|
|
226
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*!
|
|
207
227
|
* Copyright 2019 Palantir Technologies, Inc.
|
|
208
228
|
*
|
|
209
229
|
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
210
230
|
*
|
|
211
231
|
*/
|
|
212
232
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
233
|
+
import { findPackages } from "find-packages";
|
|
234
|
+
import { existsSync } from "fs";
|
|
235
|
+
import * as glob from "glob";
|
|
236
|
+
import * as fs from "node:fs";
|
|
237
|
+
import * as path from "node:path";
|
|
238
|
+
import readYamlFile from "read-yaml-file";
|
|
239
|
+
import { Host } from "./Host.js";
|
|
240
|
+
import { PackageJson } from "./PackageJson.js";
|
|
241
|
+
|
|
242
|
+
async function findPNPMWorkspacePackages(workspaceRoot: string) {
|
|
243
|
+
workspaceRoot = fs.realpathSync(workspaceRoot);
|
|
244
|
+
const workspaceManifest = await readYamlFile.default<{ packages?: string[] }>(
|
|
245
|
+
path.join(workspaceRoot, "pnpm-workspace.yaml"),
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
return findPackages(workspaceRoot, {
|
|
249
|
+
ignore: ["**/node_modules/**", "**/bower_components/**"],
|
|
250
|
+
includeRoot: true,
|
|
251
|
+
patterns: workspaceManifest.packages,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export async function getWorkspacePackageDirs(
|
|
256
|
+
host: Pick<Host, "readJson" | "exists">,
|
|
257
|
+
workspaceDir: string,
|
|
258
|
+
resolvePaths: boolean = false,
|
|
259
|
+
) {
|
|
260
|
+
const packageJson = host.readJson(
|
|
261
|
+
path.join(workspaceDir, "package.json"),
|
|
262
|
+
) as PackageJson;
|
|
263
|
+
|
|
264
|
+
const isPnpmWorkspace = host.exists(
|
|
265
|
+
path.join(workspaceDir, "pnpm-workspace.yaml"),
|
|
266
|
+
);
|
|
267
|
+
if (isPnpmWorkspace) {
|
|
268
|
+
const workspacePackages = await findPNPMWorkspacePackages(workspaceDir);
|
|
269
|
+
if (workspacePackages.length === 0) {
|
|
270
|
+
throw new Error("Invalid workspaceDir: " + workspaceDir);
|
|
271
|
+
}
|
|
272
|
+
return workspacePackages.map((project) => project.dir).filter((d) => d !== workspaceDir);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if (!packageJson.workspaces) {
|
|
276
|
+
throw new Error(
|
|
277
|
+
"Unsupported! Monorepo is not backed by either pnpm nor yarn workspaces.",
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const ret: string[] = [];
|
|
282
|
+
const packageGlobs = Array.isArray(packageJson.workspaces)
|
|
283
|
+
? packageJson.workspaces
|
|
284
|
+
: packageJson.workspaces.packages || [];
|
|
285
|
+
|
|
286
|
+
for (const pattern of packageGlobs) {
|
|
287
|
+
for (const packagePath of glob.sync(pattern, { cwd: workspaceDir })) {
|
|
288
|
+
const packageJsonPath = path.join(
|
|
289
|
+
workspaceDir,
|
|
290
|
+
packagePath,
|
|
291
|
+
"package.json",
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
if (existsSync(packageJsonPath)) {
|
|
295
|
+
if (resolvePaths === true) {
|
|
296
|
+
ret.push(path.resolve(path.join(workspaceDir, packagePath)));
|
|
297
|
+
} else {
|
|
298
|
+
ret.push(packagePath);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return ret;
|
|
305
|
+
}
|
|
276
306
|
</pre></td></tr></table></pre>
|
|
277
307
|
|
|
278
308
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -280,7 +310,7 @@
|
|
|
280
310
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
281
311
|
Code coverage generated by
|
|
282
312
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
283
|
-
at 2025-01-
|
|
313
|
+
at 2025-01-31T20:59:52.637Z
|
|
284
314
|
</div>
|
|
285
315
|
<script src="prettify.js"></script>
|
|
286
316
|
<script>
|