@storybook/addon-vitest 9.2.0-alpha.3 → 10.0.0-beta.1
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/README.md +2 -0
- package/dist/_browser-chunks/chunk-JK72E6FR.js +6 -0
- package/dist/_browser-chunks/chunk-PMYV6BH2.js +76 -0
- package/dist/_node-chunks/chunk-2REKPEQ2.js +103 -0
- package/dist/_node-chunks/chunk-7BKJJYBS.js +295 -0
- package/dist/_node-chunks/chunk-HPGEHKZB.js +247 -0
- package/dist/_node-chunks/chunk-JXUNGTEW.js +50 -0
- package/dist/_node-chunks/chunk-MJQUUNLY.js +91 -0
- package/dist/_node-chunks/chunk-RCWLXKPJ.js +37 -0
- package/dist/_node-chunks/chunk-TL7KDPNQ.js +2264 -0
- package/dist/_node-chunks/chunk-ZY3KCBSS.js +481 -0
- package/dist/index.js +9 -6
- package/dist/manager.js +955 -8
- package/dist/node/coverage-reporter.js +1898 -4
- package/dist/node/vitest.js +871 -17
- package/dist/postinstall.js +2076 -88
- package/dist/preset.js +615 -35
- package/dist/vitest-plugin/global-setup.js +200 -6
- package/dist/vitest-plugin/index.js +3823 -43
- package/dist/vitest-plugin/setup-file.js +30 -8
- package/dist/vitest-plugin/test-utils.js +102 -8
- package/manager.js +1 -1
- package/package.json +27 -93
- package/preset.js +1 -1
- package/dist/chunk-55WZLVGN.mjs +0 -11
- package/dist/chunk-JKRQGT2U.mjs +0 -10
- package/dist/index.mjs +0 -5
- package/dist/node/coverage-reporter.d.ts +0 -184
- package/dist/node/coverage-reporter.mjs +0 -12
- package/dist/node/vitest.d.ts +0 -2
- package/dist/node/vitest.mjs +0 -19
- package/dist/vitest-plugin/global-setup.d.ts +0 -6
- package/dist/vitest-plugin/global-setup.mjs +0 -13
- package/dist/vitest-plugin/index.mjs +0 -28
- package/dist/vitest-plugin/setup-file.d.ts +0 -14
- package/dist/vitest-plugin/setup-file.mjs +0 -9
- package/dist/vitest-plugin/test-utils.d.ts +0 -20
- package/dist/vitest-plugin/test-utils.mjs +0 -8
- package/manager.mjs +0 -1
- package/postinstall.js +0 -1
- package/postinstall.mjs +0 -1
- package/preset.mjs +0 -1
package/README.md
CHANGED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// ../../core/src/component-testing/constants.ts
|
|
2
|
+
var ADDON_ID = "storybook/interactions";
|
|
3
|
+
var PANEL_ID = `${ADDON_ID}/panel`;
|
|
4
|
+
var DOCUMENTATION_LINK = "writing-tests/integrations/vitest-addon";
|
|
5
|
+
var DOCUMENTATION_DISCREPANCY_LINK = `${DOCUMENTATION_LINK}#what-happens-when-there-are-different-test-results-in-multiple-environments`;
|
|
6
|
+
|
|
7
|
+
// ../a11y/src/constants.ts
|
|
8
|
+
var ADDON_ID2 = "storybook/a11y";
|
|
9
|
+
var PANEL_ID2 = `${ADDON_ID2}/panel`;
|
|
10
|
+
var RESULT = `${ADDON_ID2}/result`;
|
|
11
|
+
var REQUEST = `${ADDON_ID2}/request`;
|
|
12
|
+
var RUNNING = `${ADDON_ID2}/running`;
|
|
13
|
+
var ERROR = `${ADDON_ID2}/error`;
|
|
14
|
+
var MANUAL = `${ADDON_ID2}/manual`;
|
|
15
|
+
var SELECT = `${ADDON_ID2}/select`;
|
|
16
|
+
var DOCUMENTATION_LINK2 = "writing-tests/accessibility-testing";
|
|
17
|
+
var DOCUMENTATION_DISCREPANCY_LINK2 = `${DOCUMENTATION_LINK2}#why-are-my-tests-failing-in-different-environments`;
|
|
18
|
+
|
|
19
|
+
// src/constants.ts
|
|
20
|
+
var ADDON_ID3 = "storybook/test";
|
|
21
|
+
var TEST_PROVIDER_ID = `${ADDON_ID3}/test-provider`;
|
|
22
|
+
var DOCUMENTATION_LINK3 = "writing-tests/integrations/vitest-addon";
|
|
23
|
+
var DOCUMENTATION_FATAL_ERROR_LINK = `${DOCUMENTATION_LINK3}#what-happens-if-vitest-itself-has-an-error`;
|
|
24
|
+
var storeOptions = {
|
|
25
|
+
id: ADDON_ID3,
|
|
26
|
+
initialState: {
|
|
27
|
+
config: {
|
|
28
|
+
coverage: false,
|
|
29
|
+
a11y: false
|
|
30
|
+
},
|
|
31
|
+
watching: false,
|
|
32
|
+
cancelling: false,
|
|
33
|
+
fatalError: void 0,
|
|
34
|
+
indexUrl: void 0,
|
|
35
|
+
previewAnnotations: [],
|
|
36
|
+
currentRun: {
|
|
37
|
+
triggeredBy: void 0,
|
|
38
|
+
config: {
|
|
39
|
+
coverage: false,
|
|
40
|
+
a11y: false
|
|
41
|
+
},
|
|
42
|
+
componentTestCount: {
|
|
43
|
+
success: 0,
|
|
44
|
+
error: 0
|
|
45
|
+
},
|
|
46
|
+
a11yCount: {
|
|
47
|
+
success: 0,
|
|
48
|
+
warning: 0,
|
|
49
|
+
error: 0
|
|
50
|
+
},
|
|
51
|
+
storyIds: void 0,
|
|
52
|
+
totalTestCount: void 0,
|
|
53
|
+
startedAt: void 0,
|
|
54
|
+
finishedAt: void 0,
|
|
55
|
+
unhandledErrors: [],
|
|
56
|
+
coverageSummary: void 0
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var FULL_RUN_TRIGGERS = ["global", "run-all"];
|
|
61
|
+
var STORE_CHANNEL_EVENT_NAME = `UNIVERSAL_STORE:${storeOptions.id}`;
|
|
62
|
+
var STATUS_TYPE_ID_COMPONENT_TEST = "storybook/component-test";
|
|
63
|
+
var STATUS_TYPE_ID_A11Y = "storybook/a11y";
|
|
64
|
+
|
|
65
|
+
export {
|
|
66
|
+
PANEL_ID,
|
|
67
|
+
ADDON_ID2 as ADDON_ID,
|
|
68
|
+
PANEL_ID2,
|
|
69
|
+
ADDON_ID3 as ADDON_ID2,
|
|
70
|
+
TEST_PROVIDER_ID,
|
|
71
|
+
DOCUMENTATION_FATAL_ERROR_LINK,
|
|
72
|
+
storeOptions,
|
|
73
|
+
FULL_RUN_TRIGGERS,
|
|
74
|
+
STATUS_TYPE_ID_COMPONENT_TEST,
|
|
75
|
+
STATUS_TYPE_ID_A11Y
|
|
76
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import CJS_COMPAT_NODE_URL_3fqiy48f2ku from 'node:url';
|
|
2
|
+
import CJS_COMPAT_NODE_PATH_3fqiy48f2ku from 'node:path';
|
|
3
|
+
import CJS_COMPAT_NODE_MODULE_3fqiy48f2ku from "node:module";
|
|
4
|
+
|
|
5
|
+
var __filename = CJS_COMPAT_NODE_URL_3fqiy48f2ku.fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = CJS_COMPAT_NODE_PATH_3fqiy48f2ku.dirname(__filename);
|
|
7
|
+
var require = CJS_COMPAT_NODE_MODULE_3fqiy48f2ku.createRequire(import.meta.url);
|
|
8
|
+
|
|
9
|
+
// ------------------------------------------------------------
|
|
10
|
+
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
|
|
11
|
+
// ------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
// ../../core/src/component-testing/constants.ts
|
|
14
|
+
var ADDON_ID = "storybook/interactions";
|
|
15
|
+
var PANEL_ID = `${ADDON_ID}/panel`;
|
|
16
|
+
var DOCUMENTATION_LINK = "writing-tests/integrations/vitest-addon";
|
|
17
|
+
var DOCUMENTATION_DISCREPANCY_LINK = `${DOCUMENTATION_LINK}#what-happens-when-there-are-different-test-results-in-multiple-environments`;
|
|
18
|
+
|
|
19
|
+
// ../a11y/src/constants.ts
|
|
20
|
+
var ADDON_ID2 = "storybook/a11y";
|
|
21
|
+
var PANEL_ID2 = `${ADDON_ID2}/panel`;
|
|
22
|
+
var RESULT = `${ADDON_ID2}/result`;
|
|
23
|
+
var REQUEST = `${ADDON_ID2}/request`;
|
|
24
|
+
var RUNNING = `${ADDON_ID2}/running`;
|
|
25
|
+
var ERROR = `${ADDON_ID2}/error`;
|
|
26
|
+
var MANUAL = `${ADDON_ID2}/manual`;
|
|
27
|
+
var SELECT = `${ADDON_ID2}/select`;
|
|
28
|
+
var DOCUMENTATION_LINK2 = "writing-tests/accessibility-testing";
|
|
29
|
+
var DOCUMENTATION_DISCREPANCY_LINK2 = `${DOCUMENTATION_LINK2}#why-are-my-tests-failing-in-different-environments`;
|
|
30
|
+
|
|
31
|
+
// src/constants.ts
|
|
32
|
+
var ADDON_ID3 = "storybook/test";
|
|
33
|
+
var TEST_PROVIDER_ID = `${ADDON_ID3}/test-provider`;
|
|
34
|
+
var STORYBOOK_ADDON_TEST_CHANNEL = "STORYBOOK_ADDON_TEST_CHANNEL";
|
|
35
|
+
var DOCUMENTATION_LINK3 = "writing-tests/integrations/vitest-addon";
|
|
36
|
+
var DOCUMENTATION_FATAL_ERROR_LINK = `${DOCUMENTATION_LINK3}#what-happens-if-vitest-itself-has-an-error`;
|
|
37
|
+
var COVERAGE_DIRECTORY = "coverage";
|
|
38
|
+
var SUPPORTED_FRAMEWORKS = [
|
|
39
|
+
"@storybook/nextjs",
|
|
40
|
+
"@storybook/nextjs-vite",
|
|
41
|
+
"@storybook/react-vite",
|
|
42
|
+
"@storybook/svelte-vite",
|
|
43
|
+
"@storybook/vue3-vite",
|
|
44
|
+
"@storybook/html-vite",
|
|
45
|
+
"@storybook/web-components-vite",
|
|
46
|
+
"@storybook/sveltekit",
|
|
47
|
+
"@storybook/react-native-web-vite"
|
|
48
|
+
];
|
|
49
|
+
var storeOptions = {
|
|
50
|
+
id: ADDON_ID3,
|
|
51
|
+
initialState: {
|
|
52
|
+
config: {
|
|
53
|
+
coverage: false,
|
|
54
|
+
a11y: false
|
|
55
|
+
},
|
|
56
|
+
watching: false,
|
|
57
|
+
cancelling: false,
|
|
58
|
+
fatalError: void 0,
|
|
59
|
+
indexUrl: void 0,
|
|
60
|
+
previewAnnotations: [],
|
|
61
|
+
currentRun: {
|
|
62
|
+
triggeredBy: void 0,
|
|
63
|
+
config: {
|
|
64
|
+
coverage: false,
|
|
65
|
+
a11y: false
|
|
66
|
+
},
|
|
67
|
+
componentTestCount: {
|
|
68
|
+
success: 0,
|
|
69
|
+
error: 0
|
|
70
|
+
},
|
|
71
|
+
a11yCount: {
|
|
72
|
+
success: 0,
|
|
73
|
+
warning: 0,
|
|
74
|
+
error: 0
|
|
75
|
+
},
|
|
76
|
+
storyIds: void 0,
|
|
77
|
+
totalTestCount: void 0,
|
|
78
|
+
startedAt: void 0,
|
|
79
|
+
finishedAt: void 0,
|
|
80
|
+
unhandledErrors: [],
|
|
81
|
+
coverageSummary: void 0
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var STORE_CHANNEL_EVENT_NAME = `UNIVERSAL_STORE:${storeOptions.id}`;
|
|
86
|
+
var STATUS_STORE_CHANNEL_EVENT_NAME = "UNIVERSAL_STORE:storybook/status";
|
|
87
|
+
var TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME = "UNIVERSAL_STORE:storybook/test-provider";
|
|
88
|
+
var STATUS_TYPE_ID_COMPONENT_TEST = "storybook/component-test";
|
|
89
|
+
var STATUS_TYPE_ID_A11Y = "storybook/a11y";
|
|
90
|
+
|
|
91
|
+
export {
|
|
92
|
+
ADDON_ID3 as ADDON_ID,
|
|
93
|
+
STORYBOOK_ADDON_TEST_CHANNEL,
|
|
94
|
+
DOCUMENTATION_LINK3 as DOCUMENTATION_LINK,
|
|
95
|
+
COVERAGE_DIRECTORY,
|
|
96
|
+
SUPPORTED_FRAMEWORKS,
|
|
97
|
+
storeOptions,
|
|
98
|
+
STORE_CHANNEL_EVENT_NAME,
|
|
99
|
+
STATUS_STORE_CHANNEL_EVENT_NAME,
|
|
100
|
+
TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME,
|
|
101
|
+
STATUS_TYPE_ID_COMPONENT_TEST,
|
|
102
|
+
STATUS_TYPE_ID_A11Y
|
|
103
|
+
};
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import CJS_COMPAT_NODE_URL_3fqiy48f2ku from 'node:url';
|
|
2
|
+
import CJS_COMPAT_NODE_PATH_3fqiy48f2ku from 'node:path';
|
|
3
|
+
import CJS_COMPAT_NODE_MODULE_3fqiy48f2ku from "node:module";
|
|
4
|
+
|
|
5
|
+
var __filename = CJS_COMPAT_NODE_URL_3fqiy48f2ku.fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = CJS_COMPAT_NODE_PATH_3fqiy48f2ku.dirname(__filename);
|
|
7
|
+
var require = CJS_COMPAT_NODE_MODULE_3fqiy48f2ku.createRequire(import.meta.url);
|
|
8
|
+
|
|
9
|
+
// ------------------------------------------------------------
|
|
10
|
+
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
|
|
11
|
+
// ------------------------------------------------------------
|
|
12
|
+
import {
|
|
13
|
+
__name
|
|
14
|
+
} from "./chunk-JXUNGTEW.js";
|
|
15
|
+
|
|
16
|
+
// src/utils.ts
|
|
17
|
+
function getAddonNames(mainConfig) {
|
|
18
|
+
const addons = mainConfig.addons || [];
|
|
19
|
+
const addonList = addons.map((addon) => {
|
|
20
|
+
let name = "";
|
|
21
|
+
if (typeof addon === "string") {
|
|
22
|
+
name = addon;
|
|
23
|
+
} else if (typeof addon === "object") {
|
|
24
|
+
name = addon.name;
|
|
25
|
+
}
|
|
26
|
+
return name;
|
|
27
|
+
});
|
|
28
|
+
return addonList.filter((item) => item != null);
|
|
29
|
+
}
|
|
30
|
+
__name(getAddonNames, "getAddonNames");
|
|
31
|
+
function errorToErrorLike(error) {
|
|
32
|
+
return {
|
|
33
|
+
message: error.message,
|
|
34
|
+
name: error.name,
|
|
35
|
+
// avoid duplicating the error message in the stack trace
|
|
36
|
+
stack: error.stack?.replace(error.message, ""),
|
|
37
|
+
cause: error.cause && error.cause instanceof Error ? errorToErrorLike(error.cause) : void 0
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
__name(errorToErrorLike, "errorToErrorLike");
|
|
41
|
+
|
|
42
|
+
// ../../node_modules/find-up/index.js
|
|
43
|
+
import path2 from "node:path";
|
|
44
|
+
|
|
45
|
+
// ../../node_modules/locate-path/index.js
|
|
46
|
+
import process from "node:process";
|
|
47
|
+
import path from "node:path";
|
|
48
|
+
import fs, { promises as fsPromises } from "node:fs";
|
|
49
|
+
import { fileURLToPath } from "node:url";
|
|
50
|
+
|
|
51
|
+
// ../../node_modules/yocto-queue/index.js
|
|
52
|
+
var Node = class {
|
|
53
|
+
static {
|
|
54
|
+
__name(this, "Node");
|
|
55
|
+
}
|
|
56
|
+
value;
|
|
57
|
+
next;
|
|
58
|
+
constructor(value) {
|
|
59
|
+
this.value = value;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var Queue = class {
|
|
63
|
+
static {
|
|
64
|
+
__name(this, "Queue");
|
|
65
|
+
}
|
|
66
|
+
#head;
|
|
67
|
+
#tail;
|
|
68
|
+
#size;
|
|
69
|
+
constructor() {
|
|
70
|
+
this.clear();
|
|
71
|
+
}
|
|
72
|
+
enqueue(value) {
|
|
73
|
+
const node = new Node(value);
|
|
74
|
+
if (this.#head) {
|
|
75
|
+
this.#tail.next = node;
|
|
76
|
+
this.#tail = node;
|
|
77
|
+
} else {
|
|
78
|
+
this.#head = node;
|
|
79
|
+
this.#tail = node;
|
|
80
|
+
}
|
|
81
|
+
this.#size++;
|
|
82
|
+
}
|
|
83
|
+
dequeue() {
|
|
84
|
+
const current = this.#head;
|
|
85
|
+
if (!current) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
this.#head = this.#head.next;
|
|
89
|
+
this.#size--;
|
|
90
|
+
return current.value;
|
|
91
|
+
}
|
|
92
|
+
peek() {
|
|
93
|
+
if (!this.#head) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
return this.#head.value;
|
|
97
|
+
}
|
|
98
|
+
clear() {
|
|
99
|
+
this.#head = void 0;
|
|
100
|
+
this.#tail = void 0;
|
|
101
|
+
this.#size = 0;
|
|
102
|
+
}
|
|
103
|
+
get size() {
|
|
104
|
+
return this.#size;
|
|
105
|
+
}
|
|
106
|
+
*[Symbol.iterator]() {
|
|
107
|
+
let current = this.#head;
|
|
108
|
+
while (current) {
|
|
109
|
+
yield current.value;
|
|
110
|
+
current = current.next;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
*drain() {
|
|
114
|
+
while (this.#head) {
|
|
115
|
+
yield this.dequeue();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// ../../node_modules/locate-path/node_modules/p-limit/index.js
|
|
121
|
+
function pLimit(concurrency) {
|
|
122
|
+
if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {
|
|
123
|
+
throw new TypeError("Expected `concurrency` to be a number from 1 and up");
|
|
124
|
+
}
|
|
125
|
+
const queue = new Queue();
|
|
126
|
+
let activeCount = 0;
|
|
127
|
+
const next = /* @__PURE__ */ __name(() => {
|
|
128
|
+
activeCount--;
|
|
129
|
+
if (queue.size > 0) {
|
|
130
|
+
queue.dequeue()();
|
|
131
|
+
}
|
|
132
|
+
}, "next");
|
|
133
|
+
const run = /* @__PURE__ */ __name(async (fn, resolve, args) => {
|
|
134
|
+
activeCount++;
|
|
135
|
+
const result = (async () => fn(...args))();
|
|
136
|
+
resolve(result);
|
|
137
|
+
try {
|
|
138
|
+
await result;
|
|
139
|
+
} catch {
|
|
140
|
+
}
|
|
141
|
+
next();
|
|
142
|
+
}, "run");
|
|
143
|
+
const enqueue = /* @__PURE__ */ __name((fn, resolve, args) => {
|
|
144
|
+
queue.enqueue(run.bind(void 0, fn, resolve, args));
|
|
145
|
+
(async () => {
|
|
146
|
+
await Promise.resolve();
|
|
147
|
+
if (activeCount < concurrency && queue.size > 0) {
|
|
148
|
+
queue.dequeue()();
|
|
149
|
+
}
|
|
150
|
+
})();
|
|
151
|
+
}, "enqueue");
|
|
152
|
+
const generator = /* @__PURE__ */ __name((fn, ...args) => new Promise((resolve) => {
|
|
153
|
+
enqueue(fn, resolve, args);
|
|
154
|
+
}), "generator");
|
|
155
|
+
Object.defineProperties(generator, {
|
|
156
|
+
activeCount: {
|
|
157
|
+
get: /* @__PURE__ */ __name(() => activeCount, "get")
|
|
158
|
+
},
|
|
159
|
+
pendingCount: {
|
|
160
|
+
get: /* @__PURE__ */ __name(() => queue.size, "get")
|
|
161
|
+
},
|
|
162
|
+
clearQueue: {
|
|
163
|
+
value: /* @__PURE__ */ __name(() => {
|
|
164
|
+
queue.clear();
|
|
165
|
+
}, "value")
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return generator;
|
|
169
|
+
}
|
|
170
|
+
__name(pLimit, "pLimit");
|
|
171
|
+
|
|
172
|
+
// ../../node_modules/locate-path/node_modules/p-locate/index.js
|
|
173
|
+
var EndError = class extends Error {
|
|
174
|
+
static {
|
|
175
|
+
__name(this, "EndError");
|
|
176
|
+
}
|
|
177
|
+
constructor(value) {
|
|
178
|
+
super();
|
|
179
|
+
this.value = value;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
var testElement = /* @__PURE__ */ __name(async (element, tester) => tester(await element), "testElement");
|
|
183
|
+
var finder = /* @__PURE__ */ __name(async (element) => {
|
|
184
|
+
const values = await Promise.all(element);
|
|
185
|
+
if (values[1] === true) {
|
|
186
|
+
throw new EndError(values[0]);
|
|
187
|
+
}
|
|
188
|
+
return false;
|
|
189
|
+
}, "finder");
|
|
190
|
+
async function pLocate(iterable, tester, {
|
|
191
|
+
concurrency = Number.POSITIVE_INFINITY,
|
|
192
|
+
preserveOrder = true
|
|
193
|
+
} = {}) {
|
|
194
|
+
const limit = pLimit(concurrency);
|
|
195
|
+
const items = [...iterable].map((element) => [element, limit(testElement, element, tester)]);
|
|
196
|
+
const checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);
|
|
197
|
+
try {
|
|
198
|
+
await Promise.all(items.map((element) => checkLimit(finder, element)));
|
|
199
|
+
} catch (error) {
|
|
200
|
+
if (error instanceof EndError) {
|
|
201
|
+
return error.value;
|
|
202
|
+
}
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
__name(pLocate, "pLocate");
|
|
207
|
+
|
|
208
|
+
// ../../node_modules/locate-path/index.js
|
|
209
|
+
var typeMappings = {
|
|
210
|
+
directory: "isDirectory",
|
|
211
|
+
file: "isFile"
|
|
212
|
+
};
|
|
213
|
+
function checkType(type) {
|
|
214
|
+
if (Object.hasOwnProperty.call(typeMappings, type)) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
throw new Error(`Invalid type specified: ${type}`);
|
|
218
|
+
}
|
|
219
|
+
__name(checkType, "checkType");
|
|
220
|
+
var matchType = /* @__PURE__ */ __name((type, stat) => stat[typeMappings[type]](), "matchType");
|
|
221
|
+
var toPath = /* @__PURE__ */ __name((urlOrPath) => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath, "toPath");
|
|
222
|
+
async function locatePath(paths, {
|
|
223
|
+
cwd = process.cwd(),
|
|
224
|
+
type = "file",
|
|
225
|
+
allowSymlinks = true,
|
|
226
|
+
concurrency,
|
|
227
|
+
preserveOrder
|
|
228
|
+
} = {}) {
|
|
229
|
+
checkType(type);
|
|
230
|
+
cwd = toPath(cwd);
|
|
231
|
+
const statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;
|
|
232
|
+
return pLocate(paths, async (path_) => {
|
|
233
|
+
try {
|
|
234
|
+
const stat = await statFunction(path.resolve(cwd, path_));
|
|
235
|
+
return matchType(type, stat);
|
|
236
|
+
} catch {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
}, { concurrency, preserveOrder });
|
|
240
|
+
}
|
|
241
|
+
__name(locatePath, "locatePath");
|
|
242
|
+
|
|
243
|
+
// ../../node_modules/find-up/node_modules/unicorn-magic/node.js
|
|
244
|
+
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
245
|
+
function toPath2(urlOrPath) {
|
|
246
|
+
return urlOrPath instanceof URL ? fileURLToPath2(urlOrPath) : urlOrPath;
|
|
247
|
+
}
|
|
248
|
+
__name(toPath2, "toPath");
|
|
249
|
+
|
|
250
|
+
// ../../node_modules/find-up/index.js
|
|
251
|
+
var findUpStop = Symbol("findUpStop");
|
|
252
|
+
async function findUpMultiple(name, options = {}) {
|
|
253
|
+
let directory = path2.resolve(toPath2(options.cwd) ?? "");
|
|
254
|
+
const { root } = path2.parse(directory);
|
|
255
|
+
const stopAt = path2.resolve(directory, toPath2(options.stopAt ?? root));
|
|
256
|
+
const limit = options.limit ?? Number.POSITIVE_INFINITY;
|
|
257
|
+
const paths = [name].flat();
|
|
258
|
+
const runMatcher = /* @__PURE__ */ __name(async (locateOptions) => {
|
|
259
|
+
if (typeof name !== "function") {
|
|
260
|
+
return locatePath(paths, locateOptions);
|
|
261
|
+
}
|
|
262
|
+
const foundPath = await name(locateOptions.cwd);
|
|
263
|
+
if (typeof foundPath === "string") {
|
|
264
|
+
return locatePath([foundPath], locateOptions);
|
|
265
|
+
}
|
|
266
|
+
return foundPath;
|
|
267
|
+
}, "runMatcher");
|
|
268
|
+
const matches = [];
|
|
269
|
+
while (true) {
|
|
270
|
+
const foundPath = await runMatcher({ ...options, cwd: directory });
|
|
271
|
+
if (foundPath === findUpStop) {
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
if (foundPath) {
|
|
275
|
+
matches.push(path2.resolve(directory, foundPath));
|
|
276
|
+
}
|
|
277
|
+
if (directory === stopAt || matches.length >= limit) {
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
directory = path2.dirname(directory);
|
|
281
|
+
}
|
|
282
|
+
return matches;
|
|
283
|
+
}
|
|
284
|
+
__name(findUpMultiple, "findUpMultiple");
|
|
285
|
+
async function findUp(name, options = {}) {
|
|
286
|
+
const matches = await findUpMultiple(name, { ...options, limit: 1 });
|
|
287
|
+
return matches[0];
|
|
288
|
+
}
|
|
289
|
+
__name(findUp, "findUp");
|
|
290
|
+
|
|
291
|
+
export {
|
|
292
|
+
getAddonNames,
|
|
293
|
+
errorToErrorLike,
|
|
294
|
+
findUp
|
|
295
|
+
};
|