@monorepolint/utils 0.6.0-alpha.2 → 0.6.0-alpha.3
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 +14 -10
- package/.turbo/turbo-transpile-typescript.log +3 -3
- package/CHANGELOG.md +2 -0
- package/build/js/index.js +493 -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 +258 -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 +148 -31
- package/coverage/Timing.ts.html +1 -1
- package/coverage/clover.xml +533 -389
- 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 +174 -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 +106 -34
- package/src/Host.ts +5 -1
- package/src/PackageJson.ts +3 -3
- package/src/SimpleHost.ts +14 -3
- package/src/Table.ts +62 -23
- package/src/__tests__/CachingHost.spec.ts +203 -166
- package/src/findWorkspaceDir.ts +3 -3
- package/src/getPackageNameToDir.ts +6 -2
- package/src/getWorkspacePackageDirs.ts +22 -10
- 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 +10 -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-22T17:39:00.274Z
|
|
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-22T17:39:00.274Z
|
|
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'>76/76</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'>76/76</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,182 @@
|
|
|
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>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
137
149
|
<span class="cline-any cline-neutral"> </span>
|
|
138
150
|
<span class="cline-any cline-neutral"> </span>
|
|
139
151
|
<span class="cline-any cline-neutral"> </span>
|
|
140
152
|
<span class="cline-any cline-neutral"> </span>
|
|
141
153
|
<span class="cline-any cline-neutral"> </span>
|
|
142
154
|
<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-
|
|
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-yes">1x</span>
|
|
227
|
+
<span class="cline-any cline-yes">1x</span>
|
|
228
|
+
<span class="cline-any cline-yes">1x</span>
|
|
229
|
+
<span class="cline-any cline-yes">1x</span>
|
|
230
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*!
|
|
207
231
|
* Copyright 2019 Palantir Technologies, Inc.
|
|
208
232
|
*
|
|
209
233
|
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
210
234
|
*
|
|
211
235
|
*/
|
|
212
236
|
|
|
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
|
-
|
|
237
|
+
import { findPackages } from "find-packages";
|
|
238
|
+
import { existsSync } from "fs";
|
|
239
|
+
import * as glob from "glob";
|
|
240
|
+
import * as fs from "node:fs";
|
|
241
|
+
import * as path from "node:path";
|
|
242
|
+
import readYamlFile from "read-yaml-file";
|
|
243
|
+
import { Host } from "./Host.js";
|
|
244
|
+
import { PackageJson } from "./PackageJson.js";
|
|
245
|
+
|
|
246
|
+
async function findPNPMWorkspacePackages(workspaceRoot: string) {
|
|
247
|
+
workspaceRoot = fs.realpathSync(workspaceRoot);
|
|
248
|
+
const workspaceManifest = await readYamlFile.default<{ packages?: string[] }>(
|
|
249
|
+
path.join(workspaceRoot, "pnpm-workspace.yaml"),
|
|
250
|
+
);
|
|
251
|
+
|
|
252
|
+
return findPackages(workspaceRoot, {
|
|
253
|
+
ignore: ["**/node_modules/**", "**/bower_components/**"],
|
|
254
|
+
includeRoot: true,
|
|
255
|
+
patterns: workspaceManifest.packages,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export async function getWorkspacePackageDirs(
|
|
260
|
+
host: Pick<Host, "readJson" | "exists">,
|
|
261
|
+
workspaceDir: string,
|
|
262
|
+
resolvePaths: boolean = false,
|
|
263
|
+
) {
|
|
264
|
+
const packageJson = host.readJson(
|
|
265
|
+
path.join(workspaceDir, "package.json"),
|
|
266
|
+
) as PackageJson;
|
|
267
|
+
|
|
268
|
+
const isPnpmWorkspace = host.exists(
|
|
269
|
+
path.join(workspaceDir, "pnpm-workspace.yaml"),
|
|
270
|
+
);
|
|
271
|
+
if (isPnpmWorkspace) {
|
|
272
|
+
const workspacePackages = await findPNPMWorkspacePackages(workspaceDir);
|
|
273
|
+
if (workspacePackages.length === 0) {
|
|
274
|
+
throw new Error("Invalid workspaceDir: " + workspaceDir);
|
|
275
|
+
}
|
|
276
|
+
return workspacePackages.map((project) => project.dir).filter((d) =>
|
|
277
|
+
d !== workspaceDir
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (!packageJson.workspaces) {
|
|
282
|
+
throw new Error(
|
|
283
|
+
"Unsupported! Monorepo is not backed by either pnpm nor yarn workspaces.",
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const ret: string[] = [];
|
|
288
|
+
const packageGlobs = Array.isArray(packageJson.workspaces)
|
|
289
|
+
? packageJson.workspaces
|
|
290
|
+
: packageJson.workspaces.packages || [];
|
|
291
|
+
|
|
292
|
+
for (const pattern of packageGlobs) {
|
|
293
|
+
for (const packagePath of glob.sync(pattern, { cwd: workspaceDir })) {
|
|
294
|
+
const packageJsonPath = path.join(
|
|
295
|
+
workspaceDir,
|
|
296
|
+
packagePath,
|
|
297
|
+
"package.json",
|
|
298
|
+
);
|
|
299
|
+
|
|
300
|
+
if (existsSync(packageJsonPath)) {
|
|
301
|
+
if (resolvePaths === true) {
|
|
302
|
+
ret.push(path.resolve(path.join(workspaceDir, packagePath)));
|
|
303
|
+
} else {
|
|
304
|
+
ret.push(packagePath);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
return ret;
|
|
311
|
+
}
|
|
276
312
|
</pre></td></tr></table></pre>
|
|
277
313
|
|
|
278
314
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -280,7 +316,7 @@
|
|
|
280
316
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
281
317
|
Code coverage generated by
|
|
282
318
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
283
|
-
at 2025-01-
|
|
319
|
+
at 2025-01-22T17:39:00.274Z
|
|
284
320
|
</div>
|
|
285
321
|
<script src="prettify.js"></script>
|
|
286
322
|
<script>
|