@cloudflare/vitest-plugin 1.2.7 → 1.3.0

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.
@@ -1,4 +1,5 @@
1
- import { r as __name } from "./chunk-Q72B4Q5Z-izl5Qmnx.mjs";
1
+ import { r as __name } from "./chunk-U6NEESU5-BzWFpRaS.mjs";
2
+ import { createRequire } from "node:module";
2
3
  import fs from "node:fs";
3
4
  import path from "node:path";
4
5
  import { fileURLToPath } from "node:url";
@@ -9,7 +10,8 @@ import { Buffer } from "node:buffer";
9
10
  import fs$1, { constants as constants$1 } from "node:fs/promises";
10
11
  import childProcess, { execFile } from "node:child_process";
11
12
 
12
- //#region ../workers-utils/dist/open-PBXRGS4R.mjs
13
+ //#region ../workers-utils/dist/open-PCXX3ZDZ.mjs
14
+ createRequire(import.meta.url || (typeof __filename === "string" ? __filename : "/"));
13
15
  var isDockerCached;
14
16
  function hasDockerEnv() {
15
17
  try {
@@ -526,4 +528,4 @@ var open_default = open;
526
528
 
527
529
  //#endregion
528
530
  export { open_default as default };
529
- //# sourceMappingURL=open-PBXRGS4R-CzyP5HqI.mjs.map
531
+ //# sourceMappingURL=open-PCXX3ZDZ-DUIcTUjC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-PCXX3ZDZ-DUIcTUjC.mjs","names":["execFile","fs4","constants","stdout","execFile$1","arch"],"sources":["../../../workers-utils/dist/open-PCXX3ZDZ.mjs"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { __name } from './chunk-U6NEESU5.mjs';\nimport process5 from 'node:process';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport childProcess, { execFile as execFile$1 } from 'node:child_process';\nimport fs4, { constants } from 'node:fs/promises';\nimport { promisify } from 'node:util';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport { Buffer } from 'node:buffer';\n\ncreateRequire(import.meta.url || (typeof __filename === \"string\" ? __filename : \"/\"));\nvar isDockerCached;\nfunction hasDockerEnv() {\n try {\n fs.statSync(\"/.dockerenv\");\n return true;\n } catch {\n return false;\n }\n}\n__name(hasDockerEnv, \"hasDockerEnv\");\nfunction hasDockerCGroup() {\n try {\n return fs.readFileSync(\"/proc/self/cgroup\", \"utf8\").includes(\"docker\");\n } catch {\n return false;\n }\n}\n__name(hasDockerCGroup, \"hasDockerCGroup\");\nfunction isDocker() {\n if (isDockerCached === void 0) {\n isDockerCached = hasDockerEnv() || hasDockerCGroup();\n }\n return isDockerCached;\n}\n__name(isDocker, \"isDocker\");\n\n// ../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js\nvar cachedResult;\nvar hasContainerEnv = /* @__PURE__ */ __name(() => {\n try {\n fs.statSync(\"/run/.containerenv\");\n return true;\n } catch {\n return false;\n }\n}, \"hasContainerEnv\");\nfunction isInsideContainer() {\n if (cachedResult === void 0) {\n cachedResult = hasContainerEnv() || isDocker();\n }\n return cachedResult;\n}\n__name(isInsideContainer, \"isInsideContainer\");\n\n// ../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js\nvar isWsl = /* @__PURE__ */ __name(() => {\n if (process5.platform !== \"linux\") {\n return false;\n }\n if (os.release().toLowerCase().includes(\"microsoft\")) {\n if (isInsideContainer()) {\n return false;\n }\n return true;\n }\n try {\n return fs.readFileSync(\"/proc/version\", \"utf8\").toLowerCase().includes(\"microsoft\") ? !isInsideContainer() : false;\n } catch {\n return false;\n }\n}, \"isWsl\");\nvar is_wsl_default = process5.env.__IS_WSL_TEST__ ? isWsl : isWsl();\nvar execFile = promisify(childProcess.execFile);\nvar powerShellPath = /* @__PURE__ */ __name(() => `${process5.env.SYSTEMROOT || process5.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`, \"powerShellPath\");\nvar executePowerShell = /* @__PURE__ */ __name(async (command, options = {}) => {\n const {\n powerShellPath: psPath,\n ...execFileOptions\n } = options;\n const encodedCommand = executePowerShell.encodeCommand(command);\n return execFile(\n psPath ?? powerShellPath(),\n [\n ...executePowerShell.argumentsPrefix,\n encodedCommand\n ],\n {\n encoding: \"utf8\",\n ...execFileOptions\n }\n );\n}, \"executePowerShell\");\nexecutePowerShell.argumentsPrefix = [\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-ExecutionPolicy\",\n \"Bypass\",\n \"-EncodedCommand\"\n];\nexecutePowerShell.encodeCommand = (command) => Buffer.from(command, \"utf16le\").toString(\"base64\");\nexecutePowerShell.escapeArgument = (value) => `'${String(value).replaceAll(\"'\", \"''\")}'`;\n\n// ../../node_modules/.pnpm/wsl-utils@0.3.1/node_modules/wsl-utils/utilities.js\nfunction parseMountPointFromConfig(content) {\n for (const line of content.split(\"\\n\")) {\n if (/^\\s*#/.test(line)) {\n continue;\n }\n const match = /^\\s*root\\s*=\\s*(?<mountPoint>\"[^\"]*\"|'[^']*'|[^#]*)/.exec(line);\n if (!match) {\n continue;\n }\n return match.groups.mountPoint.trim().replaceAll(/^[\"']|[\"']$/g, \"\");\n }\n}\n__name(parseMountPointFromConfig, \"parseMountPointFromConfig\");\n\n// ../../node_modules/.pnpm/wsl-utils@0.3.1/node_modules/wsl-utils/index.js\nvar execFile2 = promisify(childProcess.execFile);\nvar wslDrivesMountPoint = /* @__PURE__ */ (() => {\n const defaultMountPoint = \"/mnt/\";\n let mountPoint;\n return async function() {\n if (mountPoint) {\n return mountPoint;\n }\n const configFilePath = \"/etc/wsl.conf\";\n let isConfigFileExists = false;\n try {\n await fs4.access(configFilePath, constants.F_OK);\n isConfigFileExists = true;\n } catch {\n }\n if (!isConfigFileExists) {\n return defaultMountPoint;\n }\n const configContent = await fs4.readFile(configFilePath, { encoding: \"utf8\" });\n const parsedMountPoint = parseMountPointFromConfig(configContent);\n if (parsedMountPoint === void 0) {\n return defaultMountPoint;\n }\n mountPoint = parsedMountPoint;\n mountPoint = mountPoint.endsWith(\"/\") ? mountPoint : `${mountPoint}/`;\n return mountPoint;\n };\n})();\nvar powerShellPathFromWsl = /* @__PURE__ */ __name(async () => {\n const mountPoint = await wslDrivesMountPoint();\n return `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n}, \"powerShellPathFromWsl\");\nvar powerShellPath2 = is_wsl_default ? powerShellPathFromWsl : powerShellPath;\nvar canAccessPowerShellPromise;\nvar canAccessPowerShell = /* @__PURE__ */ __name(async () => {\n canAccessPowerShellPromise ??= (async () => {\n try {\n const psPath = await powerShellPath2();\n await fs4.access(psPath, constants.X_OK);\n return true;\n } catch {\n return false;\n }\n })();\n return canAccessPowerShellPromise;\n}, \"canAccessPowerShell\");\nvar wslDefaultBrowser = /* @__PURE__ */ __name(async () => {\n const psPath = await powerShellPath2();\n const command = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n const { stdout } = await executePowerShell(command, { powerShellPath: psPath });\n return stdout.trim();\n}, \"wslDefaultBrowser\");\nvar convertWslPathToWindows = /* @__PURE__ */ __name(async (path2) => {\n if (/^[a-z]+:\\/\\//i.test(path2)) {\n return path2;\n }\n try {\n const { stdout } = await execFile2(\"wslpath\", [\"-aw\", path2], { encoding: \"utf8\" });\n return stdout.trim();\n } catch {\n return path2;\n }\n}, \"convertWslPathToWindows\");\n\n// ../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js\nfunction defineLazyProperty(object, propertyName, valueGetter) {\n const define = /* @__PURE__ */ __name((value) => Object.defineProperty(object, propertyName, { value, enumerable: true, writable: true }), \"define\");\n Object.defineProperty(object, propertyName, {\n configurable: true,\n enumerable: true,\n get() {\n const result = valueGetter();\n define(result);\n return result;\n },\n set(value) {\n define(value);\n }\n });\n return object;\n}\n__name(defineLazyProperty, \"defineLazyProperty\");\nvar execFileAsync = promisify(execFile$1);\nasync function defaultBrowserId() {\n if (process5.platform !== \"darwin\") {\n throw new Error(\"macOS only\");\n }\n const { stdout } = await execFileAsync(\"defaults\", [\"read\", \"com.apple.LaunchServices/com.apple.launchservices.secure\", \"LSHandlers\"]);\n const match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n const browserId = match?.groups.id ?? \"com.apple.Safari\";\n if (browserId === \"com.apple.safari\") {\n return \"com.apple.Safari\";\n }\n return browserId;\n}\n__name(defaultBrowserId, \"defaultBrowserId\");\nvar execFileAsync2 = promisify(execFile$1);\nasync function runAppleScript(script, { humanReadableOutput = true, signal } = {}) {\n if (process5.platform !== \"darwin\") {\n throw new Error(\"macOS only\");\n }\n const outputArguments = humanReadableOutput ? [] : [\"-ss\"];\n const execOptions = {};\n if (signal) {\n execOptions.signal = signal;\n }\n const { stdout } = await execFileAsync2(\"osascript\", [\"-e\", script, outputArguments], execOptions);\n return stdout.trim();\n}\n__name(runAppleScript, \"runAppleScript\");\n\n// ../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js\nasync function bundleName(bundleId) {\n return runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n__name(bundleName, \"bundleName\");\nvar execFileAsync3 = promisify(execFile$1);\nvar windowsBrowserProgIds = {\n MSEdgeHTM: { name: \"Edge\", id: \"com.microsoft.edge\" },\n // The missing `L` is correct.\n MSEdgeBHTML: { name: \"Edge Beta\", id: \"com.microsoft.edge.beta\" },\n MSEdgeDHTML: { name: \"Edge Dev\", id: \"com.microsoft.edge.dev\" },\n AppXq0fevzme2pys62n3e0fbqa7peapykr8v: { name: \"Edge\", id: \"com.microsoft.edge.old\" },\n ChromeHTML: { name: \"Chrome\", id: \"com.google.chrome\" },\n ChromeBHTML: { name: \"Chrome Beta\", id: \"com.google.chrome.beta\" },\n ChromeDHTML: { name: \"Chrome Dev\", id: \"com.google.chrome.dev\" },\n ChromiumHTM: { name: \"Chromium\", id: \"org.chromium.Chromium\" },\n BraveHTML: { name: \"Brave\", id: \"com.brave.Browser\" },\n BraveBHTML: { name: \"Brave Beta\", id: \"com.brave.Browser.beta\" },\n BraveDHTML: { name: \"Brave Dev\", id: \"com.brave.Browser.dev\" },\n BraveSSHTM: { name: \"Brave Nightly\", id: \"com.brave.Browser.nightly\" },\n FirefoxURL: { name: \"Firefox\", id: \"org.mozilla.firefox\" },\n OperaStable: { name: \"Opera\", id: \"com.operasoftware.Opera\" },\n VivaldiHTM: { name: \"Vivaldi\", id: \"com.vivaldi.Vivaldi\" },\n \"IE.HTTP\": { name: \"Internet Explorer\", id: \"com.microsoft.ie\" }\n};\nvar _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\nvar UnknownBrowserError = class extends Error {\n static {\n __name(this, \"UnknownBrowserError\");\n }\n};\nasync function defaultBrowser(_execFileAsync = execFileAsync3) {\n const { stdout } = await _execFileAsync(\"reg\", [\n \"QUERY\",\n \" HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice\",\n \"/v\",\n \"ProgId\"\n ]);\n const match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n if (!match) {\n throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n }\n const { id } = match.groups;\n const browser = windowsBrowserProgIds[id];\n if (!browser) {\n throw new UnknownBrowserError(`Unknown browser ID: ${id}`);\n }\n return browser;\n}\n__name(defaultBrowser, \"defaultBrowser\");\n\n// ../../node_modules/.pnpm/default-browser@5.4.0/node_modules/default-browser/index.js\nvar execFileAsync4 = promisify(execFile$1);\nvar titleize = /* @__PURE__ */ __name((string) => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, (x) => x.toUpperCase()), \"titleize\");\nasync function defaultBrowser2() {\n if (process5.platform === \"darwin\") {\n const id = await defaultBrowserId();\n const name = await bundleName(id);\n return { name, id };\n }\n if (process5.platform === \"linux\") {\n const { stdout } = await execFileAsync4(\"xdg-mime\", [\"query\", \"default\", \"x-scheme-handler/http\"]);\n const id = stdout.trim();\n const name = titleize(id.replace(/.desktop$/, \"\").replace(\"-\", \" \"));\n return { name, id };\n }\n if (process5.platform === \"win32\") {\n return defaultBrowser();\n }\n throw new Error(\"Only macOS, Linux, and Windows are supported\");\n}\n__name(defaultBrowser2, \"defaultBrowser\");\nvar isInSsh = Boolean(process5.env.SSH_CONNECTION || process5.env.SSH_CLIENT || process5.env.SSH_TTY);\nvar is_in_ssh_default = isInSsh;\n\n// ../../node_modules/.pnpm/open@11.0.0/node_modules/open/index.js\nvar fallbackAttemptSymbol = Symbol(\"fallbackAttempt\");\nvar __dirname$1 = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : \"\";\nvar localXdgOpenPath = path.join(__dirname$1, \"xdg-open\");\nvar { platform, arch } = process5;\nvar tryEachApp = /* @__PURE__ */ __name(async (apps2, opener) => {\n if (apps2.length === 0) {\n return;\n }\n const errors = [];\n for (const app of apps2) {\n try {\n return await opener(app);\n } catch (error) {\n errors.push(error);\n }\n }\n throw new AggregateError(errors, \"Failed to open in all supported apps\");\n}, \"tryEachApp\");\nvar baseOpen = /* @__PURE__ */ __name(async (options) => {\n options = {\n wait: false,\n background: false,\n newInstance: false,\n allowNonzeroExitCode: false,\n ...options\n };\n const isFallbackAttempt = options[fallbackAttemptSymbol] === true;\n delete options[fallbackAttemptSymbol];\n if (Array.isArray(options.app)) {\n return tryEachApp(options.app, (singleApp) => baseOpen({\n ...options,\n app: singleApp,\n [fallbackAttemptSymbol]: true\n }));\n }\n let { name: app, arguments: appArguments = [] } = options.app ?? {};\n appArguments = [...appArguments];\n if (Array.isArray(app)) {\n return tryEachApp(app, (appName) => baseOpen({\n ...options,\n app: {\n name: appName,\n arguments: appArguments\n },\n [fallbackAttemptSymbol]: true\n }));\n }\n if (app === \"browser\" || app === \"browserPrivate\") {\n const ids = {\n \"com.google.chrome\": \"chrome\",\n \"google-chrome.desktop\": \"chrome\",\n \"com.brave.browser\": \"brave\",\n \"org.mozilla.firefox\": \"firefox\",\n \"firefox.desktop\": \"firefox\",\n \"com.microsoft.msedge\": \"edge\",\n \"com.microsoft.edge\": \"edge\",\n \"com.microsoft.edgemac\": \"edge\",\n \"microsoft-edge.desktop\": \"edge\",\n \"com.apple.safari\": \"safari\"\n };\n const flags = {\n chrome: \"--incognito\",\n brave: \"--incognito\",\n firefox: \"--private-window\",\n edge: \"--inPrivate\"\n // Safari doesn't support private mode via command line\n };\n let browser;\n if (is_wsl_default) {\n const progId = await wslDefaultBrowser();\n const browserInfo = _windowsBrowserProgIdMap.get(progId);\n browser = browserInfo ?? {};\n } else {\n browser = await defaultBrowser2();\n }\n if (browser.id in ids) {\n const browserName = ids[browser.id.toLowerCase()];\n if (app === \"browserPrivate\") {\n if (browserName === \"safari\") {\n throw new Error(\"Safari doesn't support opening in private mode via command line\");\n }\n appArguments.push(flags[browserName]);\n }\n return baseOpen({\n ...options,\n app: {\n name: apps[browserName],\n arguments: appArguments\n }\n });\n }\n throw new Error(`${browser.name} is not supported as a default browser`);\n }\n let command;\n const cliArguments = [];\n const childProcessOptions = {};\n let shouldUseWindowsInWsl = false;\n if (is_wsl_default && !isInsideContainer() && !is_in_ssh_default && !app) {\n shouldUseWindowsInWsl = await canAccessPowerShell();\n }\n if (platform === \"darwin\") {\n command = \"open\";\n if (options.wait) {\n cliArguments.push(\"--wait-apps\");\n }\n if (options.background) {\n cliArguments.push(\"--background\");\n }\n if (options.newInstance) {\n cliArguments.push(\"--new\");\n }\n if (app) {\n cliArguments.push(\"-a\", app);\n }\n } else if (platform === \"win32\" || shouldUseWindowsInWsl) {\n command = await powerShellPath2();\n cliArguments.push(...executePowerShell.argumentsPrefix);\n if (!is_wsl_default) {\n childProcessOptions.windowsVerbatimArguments = true;\n }\n if (is_wsl_default && options.target) {\n options.target = await convertWslPathToWindows(options.target);\n }\n const encodedArguments = [\"$ProgressPreference = 'SilentlyContinue';\", \"Start\"];\n if (options.wait) {\n encodedArguments.push(\"-Wait\");\n }\n if (app) {\n encodedArguments.push(executePowerShell.escapeArgument(app));\n if (options.target) {\n appArguments.push(options.target);\n }\n } else if (options.target) {\n encodedArguments.push(executePowerShell.escapeArgument(options.target));\n }\n if (appArguments.length > 0) {\n appArguments = appArguments.map((argument) => executePowerShell.escapeArgument(argument));\n encodedArguments.push(\"-ArgumentList\", appArguments.join(\",\"));\n }\n options.target = executePowerShell.encodeCommand(encodedArguments.join(\" \"));\n if (!options.wait) {\n childProcessOptions.stdio = \"ignore\";\n }\n } else {\n if (app) {\n command = app;\n } else {\n const isBundled = !__dirname$1 || __dirname$1 === \"/\";\n let exeLocalXdgOpen = false;\n try {\n await fs4.access(localXdgOpenPath, constants.X_OK);\n exeLocalXdgOpen = true;\n } catch {\n }\n const useSystemXdgOpen = process5.versions.electron ?? (platform === \"android\" || isBundled || !exeLocalXdgOpen);\n command = useSystemXdgOpen ? \"xdg-open\" : localXdgOpenPath;\n }\n if (appArguments.length > 0) {\n cliArguments.push(...appArguments);\n }\n if (!options.wait) {\n childProcessOptions.stdio = \"ignore\";\n childProcessOptions.detached = true;\n }\n }\n if (platform === \"darwin\" && appArguments.length > 0) {\n cliArguments.push(\"--args\", ...appArguments);\n }\n if (options.target) {\n cliArguments.push(options.target);\n }\n const subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n if (options.wait) {\n return new Promise((resolve, reject) => {\n subprocess.once(\"error\", reject);\n subprocess.once(\"close\", (exitCode) => {\n if (!options.allowNonzeroExitCode && exitCode !== 0) {\n reject(new Error(`Exited with code ${exitCode}`));\n return;\n }\n resolve(subprocess);\n });\n });\n }\n if (isFallbackAttempt) {\n return new Promise((resolve, reject) => {\n subprocess.once(\"error\", reject);\n subprocess.once(\"spawn\", () => {\n subprocess.once(\"close\", (exitCode) => {\n subprocess.off(\"error\", reject);\n if (exitCode !== 0) {\n reject(new Error(`Exited with code ${exitCode}`));\n return;\n }\n subprocess.unref();\n resolve(subprocess);\n });\n });\n });\n }\n subprocess.unref();\n return new Promise((resolve, reject) => {\n subprocess.once(\"error\", reject);\n subprocess.once(\"spawn\", () => {\n subprocess.off(\"error\", reject);\n resolve(subprocess);\n });\n });\n}, \"baseOpen\");\nvar open = /* @__PURE__ */ __name((target, options) => {\n if (typeof target !== \"string\") {\n throw new TypeError(\"Expected a `target`\");\n }\n return baseOpen({\n ...options,\n target\n });\n}, \"open\");\nvar openApp = /* @__PURE__ */ __name((name, options) => {\n if (typeof name !== \"string\" && !Array.isArray(name)) {\n throw new TypeError(\"Expected a valid `name`\");\n }\n const { arguments: appArguments = [] } = options ?? {};\n if (appArguments !== void 0 && appArguments !== null && !Array.isArray(appArguments)) {\n throw new TypeError(\"Expected `appArguments` as Array type\");\n }\n return baseOpen({\n ...options,\n app: {\n name,\n arguments: appArguments\n }\n });\n}, \"openApp\");\nfunction detectArchBinary(binary) {\n if (typeof binary === \"string\" || Array.isArray(binary)) {\n return binary;\n }\n const { [arch]: archBinary } = binary;\n if (!archBinary) {\n throw new Error(`${arch} is not supported`);\n }\n return archBinary;\n}\n__name(detectArchBinary, \"detectArchBinary\");\nfunction detectPlatformBinary({ [platform]: platformBinary }, { wsl } = {}) {\n if (wsl && is_wsl_default) {\n return detectArchBinary(wsl);\n }\n if (!platformBinary) {\n throw new Error(`${platform} is not supported`);\n }\n return detectArchBinary(platformBinary);\n}\n__name(detectPlatformBinary, \"detectPlatformBinary\");\nvar apps = {\n browser: \"browser\",\n browserPrivate: \"browserPrivate\"\n};\ndefineLazyProperty(apps, \"chrome\", () => detectPlatformBinary({\n darwin: \"google chrome\",\n win32: \"chrome\",\n // `chromium-browser` is the older deb package name used by Ubuntu/Debian before snap.\n linux: [\"google-chrome\", \"google-chrome-stable\", \"chromium\", \"chromium-browser\"]\n}, {\n wsl: {\n ia32: \"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe\",\n x64: [\"/mnt/c/Program Files/Google/Chrome/Application/chrome.exe\", \"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe\"]\n }\n}));\ndefineLazyProperty(apps, \"brave\", () => detectPlatformBinary({\n darwin: \"brave browser\",\n win32: \"brave\",\n linux: [\"brave-browser\", \"brave\"]\n}, {\n wsl: {\n ia32: \"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe\",\n x64: [\"/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe\", \"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe\"]\n }\n}));\ndefineLazyProperty(apps, \"firefox\", () => detectPlatformBinary({\n darwin: \"firefox\",\n win32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n linux: \"firefox\"\n}, {\n wsl: \"/mnt/c/Program Files/Mozilla Firefox/firefox.exe\"\n}));\ndefineLazyProperty(apps, \"edge\", () => detectPlatformBinary({\n darwin: \"microsoft edge\",\n win32: \"msedge\",\n linux: [\"microsoft-edge\", \"microsoft-edge-dev\"]\n}, {\n wsl: \"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe\"\n}));\ndefineLazyProperty(apps, \"safari\", () => detectPlatformBinary({\n darwin: \"Safari\"\n}));\nvar open_default = open;\n\nexport { apps, open_default as default, openApp };\n"],"mappings":"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"}
@@ -1053,12 +1053,25 @@ var WorkflowInstanceIntrospectorHandle = class {
1053
1053
 
1054
1054
  //#endregion
1055
1055
  //#region src/worker/workflows.ts
1056
+ /**
1057
+ * Throws a helpful error if `workflow` can't be introspected, such as a
1058
+ * Workflow on `ctx.exports`, which only has the public Workflow API.
1059
+ *
1060
+ * @param workflow - The Workflow passed to an introspection function
1061
+ * @param method - The introspection method the function needs
1062
+ * @param functionName - The name of the introspection function
1063
+ */
1064
+ function assertIntrospectable(workflow, method, functionName) {
1065
+ if (typeof workflow[method] !== "function") throw new Error(`[WorkflowIntrospector] \`${functionName}()\` needs a Workflow binding from \`env\`, and can't introspect Workflows on \`ctx.exports\`. To introspect a Workflow declared in \`exports\`, add a binding to it, for example a test-only binding in your Vitest config: \`miniflare: { workflows: { MY_WORKFLOW: { name: "my-workflow", className: "MyWorkflow" } } }\`. Instances created through \`ctx.exports\` are introspected too.`);
1066
+ }
1056
1067
  async function introspectWorkflowInstance(workflow, instanceId) {
1057
1068
  if (!workflow || !instanceId) throw new Error("[WorkflowIntrospector] Workflow binding and instance id are required.");
1069
+ assertIntrospectable(workflow, "unsafeGetInstanceModifier", "introspectWorkflowInstance");
1058
1070
  return new WorkflowInstanceIntrospectorHandle(workflow, instanceId);
1059
1071
  }
1060
1072
  async function introspectWorkflow(workflow) {
1061
1073
  if (!workflow) throw new Error("[WorkflowIntrospector] Workflow binding is required.");
1074
+ assertIntrospectable(workflow, "unsafeStartIntrospection", "introspectWorkflow");
1062
1075
  const introspector = new WorkflowIntrospectorHandle(workflow);
1063
1076
  await introspector.start();
1064
1077
  return introspector;