@nightintelligence/cloudflare-workers-utils 0.35.0-patch1
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 +5 -0
- package/dist/browser.d.mts +47 -0
- package/dist/browser.mjs +4 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/chunk-3D4BXUZX.mjs +54 -0
- package/dist/chunk-3D4BXUZX.mjs.map +1 -0
- package/dist/chunk-4RE36JUD.mjs +3160 -0
- package/dist/chunk-4RE36JUD.mjs.map +1 -0
- package/dist/chunk-6LYDFTTF.mjs +40 -0
- package/dist/chunk-6LYDFTTF.mjs.map +1 -0
- package/dist/chunk-CPLEE7LH.mjs +64 -0
- package/dist/chunk-CPLEE7LH.mjs.map +1 -0
- package/dist/chunk-G5FCNCLK.mjs +47 -0
- package/dist/chunk-G5FCNCLK.mjs.map +1 -0
- package/dist/chunk-IGC3TZGH.mjs +157 -0
- package/dist/chunk-IGC3TZGH.mjs.map +1 -0
- package/dist/chunk-NXPJWJ2B.mjs +180 -0
- package/dist/chunk-NXPJWJ2B.mjs.map +1 -0
- package/dist/chunk-OPAKTV2K.mjs +75 -0
- package/dist/chunk-OPAKTV2K.mjs.map +1 -0
- package/dist/chunk-VKFVZ67V.mjs +35 -0
- package/dist/chunk-VKFVZ67V.mjs.map +1 -0
- package/dist/chunk-W7DIL5J2.mjs +267 -0
- package/dist/chunk-W7DIL5J2.mjs.map +1 -0
- package/dist/chunk-ZLUHKBEC.mjs +44 -0
- package/dist/chunk-ZLUHKBEC.mjs.map +1 -0
- package/dist/chunk-ZQ2EZEOC.mjs +477 -0
- package/dist/chunk-ZQ2EZEOC.mjs.map +1 -0
- package/dist/compatibility-date.d.mts +80 -0
- package/dist/compatibility-date.mjs +4 -0
- package/dist/compatibility-date.mjs.map +1 -0
- package/dist/compliance-j3-tqeao.d.mts +3616 -0
- package/dist/compliance.d.mts +4 -0
- package/dist/compliance.mjs +9 -0
- package/dist/compliance.mjs.map +1 -0
- package/dist/docker-path.d.mts +8 -0
- package/dist/docker-path.mjs +5 -0
- package/dist/docker-path.mjs.map +1 -0
- package/dist/errors.d.mts +55 -0
- package/dist/errors.mjs +4 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/fs-helpers.d.mts +40 -0
- package/dist/fs-helpers.mjs +4 -0
- package/dist/fs-helpers.mjs.map +1 -0
- package/dist/global-wrangler-config-path.d.mts +35 -0
- package/dist/global-wrangler-config-path.mjs +5 -0
- package/dist/global-wrangler-config-path.mjs.map +1 -0
- package/dist/index.d.mts +1263 -0
- package/dist/index.mjs +26282 -0
- package/dist/index.mjs.map +1 -0
- package/dist/local-env.d.mts +54 -0
- package/dist/local-env.mjs +178 -0
- package/dist/local-env.mjs.map +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/open-OYMIZX6T.mjs +609 -0
- package/dist/open-OYMIZX6T.mjs.map +1 -0
- package/dist/prometheus-metrics.d.mts +50 -0
- package/dist/prometheus-metrics.mjs +4 -0
- package/dist/prometheus-metrics.mjs.map +1 -0
- package/dist/test-helpers/index.d.mts +46 -0
- package/dist/test-helpers/index.mjs +310 -0
- package/dist/test-helpers/index.mjs.map +1 -0
- package/dist/zod-format.d.mts +6 -0
- package/dist/zod-format.mjs +4 -0
- package/dist/zod-format.mjs.map +1 -0
- package/package.json +126 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js","../../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js","../../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/powershell-utils@0.1.0/node_modules/powershell-utils/index.js","../../../node_modules/.pnpm/wsl-utils@0.3.1/node_modules/wsl-utils/utilities.js","../../../node_modules/.pnpm/wsl-utils@0.3.1/node_modules/wsl-utils/index.js","../../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/default-browser-id@5.0.1/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.4.0/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/default-browser@5.4.0/node_modules/default-browser/index.js","../../../node_modules/.pnpm/is-in-ssh@1.0.0/node_modules/is-in-ssh/index.js","../../../node_modules/.pnpm/open@11.0.0/node_modules/open/index.js"],"names":["fs","process","execFile","promisify","childProcess","fsConstants","powerShellPath","path","execFileAsync","defaultBrowser","__dirname","apps"],"mappings":"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","file":"open-OYMIZX6T.mjs","sourcesContent":["import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\n\nconst execFile = promisify(childProcess.execFile);\n\nexport const powerShellPath = () => `${process.env.SYSTEMROOT || process.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n\n// Cache for PowerShell accessibility check\nlet canAccessCache;\n\nexport const canAccessPowerShell = async () => {\n\tcanAccessCache ??= (async () => {\n\t\ttry {\n\t\t\tawait fs.access(powerShellPath(), fsConstants.X_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\treturn canAccessCache;\n};\n\nexport const executePowerShell = async (command, options = {}) => {\n\tconst {\n\t\tpowerShellPath: psPath,\n\t\t...execFileOptions\n\t} = options;\n\n\tconst encodedCommand = executePowerShell.encodeCommand(command);\n\n\treturn execFile(\n\t\tpsPath ?? powerShellPath(),\n\t\t[\n\t\t\t...executePowerShell.argumentsPrefix,\n\t\t\tencodedCommand,\n\t\t],\n\t\t{\n\t\t\tencoding: 'utf8',\n\t\t\t...execFileOptions,\n\t\t},\n\t);\n};\n\nexecutePowerShell.argumentsPrefix = [\n\t'-NoProfile',\n\t'-NonInteractive',\n\t'-ExecutionPolicy',\n\t'Bypass',\n\t'-EncodedCommand',\n];\n\nexecutePowerShell.encodeCommand = command => Buffer.from(command, 'utf16le').toString('base64');\n\nexecutePowerShell.escapeArgument = value => `'${String(value).replaceAll('\\'', '\\'\\'')}'`;\n","export function parseMountPointFromConfig(content) {\n\tfor (const line of content.split('\\n')) {\n\t\t// Skip comment lines\n\t\tif (/^\\s*#/.test(line)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Match root at start of line (after optional whitespace)\n\t\tconst match = /^\\s*root\\s*=\\s*(?<mountPoint>\"[^\"]*\"|'[^']*'|[^#]*)/.exec(line);\n\t\tif (!match) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn match.groups.mountPoint\n\t\t\t.trim()\n\t\t\t// Strip surrounding quotes\n\t\t\t.replaceAll(/^[\"']|[\"']$/g, '');\n\t}\n}\n","import {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport {powerShellPath as windowsPowerShellPath, executePowerShell} from 'powershell-utils';\nimport {parseMountPointFromConfig} from './utilities.js';\n\nconst execFile = promisify(childProcess.execFile);\n\nexport const wslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst parsedMountPoint = parseMountPointFromConfig(configContent);\n\n\t\tif (parsedMountPoint === undefined) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = parsedMountPoint;\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nexport const powerShellPathFromWsl = async () => {\n\tconst mountPoint = await wslDrivesMountPoint();\n\treturn `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n};\n\nexport const powerShellPath = isWsl ? powerShellPathFromWsl : windowsPowerShellPath;\n\n// Cache for PowerShell accessibility check\nlet canAccessPowerShellPromise;\n\nexport const canAccessPowerShell = async () => {\n\tcanAccessPowerShellPromise ??= (async () => {\n\t\ttry {\n\t\t\tconst psPath = await powerShellPath();\n\t\t\tawait fs.access(psPath, fsConstants.X_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\t// PowerShell is not accessible (either doesn't exist, no execute permission, or other error)\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\treturn canAccessPowerShellPromise;\n};\n\nexport const wslDefaultBrowser = async () => {\n\tconst psPath = await powerShellPath();\n\tconst command = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n\n\tconst {stdout} = await executePowerShell(command, {powerShellPath: psPath});\n\n\treturn stdout.trim();\n};\n\nexport const convertWslPathToWindows = async path => {\n\t// Don't convert URLs\n\tif (/^[a-z]+:\\/\\//i.test(path)) {\n\t\treturn path;\n\t}\n\n\ttry {\n\t\tconst {stdout} = await execFile('wslpath', ['-aw', path], {encoding: 'utf8'});\n\t\treturn stdout.trim();\n\t} catch {\n\t\t// If wslpath fails, return the original path\n\t\treturn path;\n\t}\n};\n\nexport {default as isWsl} from 'is-wsl';\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\tconst browserId = match?.groups.id ?? 'com.apple.Safari';\n\n\t// Correct the case for Safari's bundle identifier\n\tif (browserId === 'com.apple.safari') {\n\t\treturn 'com.apple.Safari';\n\t}\n\n\treturn browserId;\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn 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","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// TODO: Fix the casing of bundle identifiers in the next major version.\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct.\n\tMSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'},\n\tMSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'},\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'},\n\tChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'},\n\tChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tOperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'},\n\tVivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'},\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n};\n\nexport const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nexport {_windowsBrowserProgIdMap} from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import process from 'node:process';\n\nconst isInSsh = Boolean(process.env.SSH_CONNECTION\n\t|| process.env.SSH_CLIENT\n\t|| process.env.SSH_TTY);\n\nexport default isInSsh;\n","import process from 'node:process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport {\n\tisWsl,\n\tpowerShellPath,\n\tconvertWslPathToWindows,\n\tcanAccessPowerShell,\n\twslDefaultBrowser,\n} from 'wsl-utils';\nimport {executePowerShell} from 'powershell-utils';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser, {_windowsBrowserProgIdMap} from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\nimport isInSsh from 'is-in-ssh';\n\nconst fallbackAttemptSymbol = Symbol('fallbackAttempt');\n\n// Path to included `xdg-open`.\nconst __dirname = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : '';\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\nconst tryEachApp = async (apps, opener) => {\n\tif (apps.length === 0) {\n\t\t// No app was provided\n\t\treturn;\n\t}\n\n\tconst errors = [];\n\n\tfor (const app of apps) {\n\t\ttry {\n\t\t\treturn await opener(app); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\terrors.push(error);\n\t\t}\n\t}\n\n\tthrow new AggregateError(errors, 'Failed to open in all supported apps');\n};\n\n// eslint-disable-next-line complexity\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tconst isFallbackAttempt = options[fallbackAttemptSymbol] === true;\n\tdelete options[fallbackAttemptSymbol];\n\n\tif (Array.isArray(options.app)) {\n\t\treturn tryEachApp(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t\t[fallbackAttemptSymbol]: true,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn tryEachApp(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t\t[fallbackAttemptSymbol]: true,\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same.\n\t\t// IDs are lowercased to increase chances of a match.\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'com.brave.browser': 'brave',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'com.microsoft.edgemac': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t\t'com.apple.safari': 'safari',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tbrave: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t\t// Safari doesn't support private mode via command line\n\t\t};\n\n\t\tlet browser;\n\t\tif (isWsl) {\n\t\t\tconst progId = await wslDefaultBrowser();\n\t\t\tconst browserInfo = _windowsBrowserProgIdMap.get(progId);\n\t\t\tbrowser = browserInfo ?? {};\n\t\t} else {\n\t\t\tbrowser = await defaultBrowser();\n\t\t}\n\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id.toLowerCase()];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\t// Safari doesn't support private mode via command line\n\t\t\t\tif (browserName === 'safari') {\n\t\t\t\t\tthrow new Error('Safari doesn\\'t support opening in private mode via command line');\n\t\t\t\t}\n\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\t// Determine if we should use Windows/PowerShell behavior in WSL.\n\t// We only use Windows integration if PowerShell is actually accessible.\n\t// This allows the package to work in sandboxed WSL environments where Windows access is restricted.\n\tlet shouldUseWindowsInWsl = false;\n\tif (isWsl && !isInsideContainer() && !isInSsh && !app) {\n\t\tshouldUseWindowsInWsl = await canAccessPowerShell();\n\t}\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || shouldUseWindowsInWsl) {\n\t\tcommand = await powerShellPath();\n\n\t\tcliArguments.push(...executePowerShell.argumentsPrefix);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\t// Convert WSL Linux paths to Windows paths\n\t\tif (isWsl && options.target) {\n\t\t\toptions.target = await convertWslPathToWindows(options.target);\n\t\t}\n\n\t\t// Suppress PowerShell progress messages that are written to stderr\n\t\tconst encodedArguments = ['$ProgressPreference = \\'SilentlyContinue\\';', 'Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\tencodedArguments.push(executePowerShell.escapeArgument(app));\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(executePowerShell.escapeArgument(options.target));\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => executePowerShell.escapeArgument(argument));\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = executePowerShell.encodeCommand(encodedArguments.join(' '));\n\n\t\tif (!options.wait) {\n\t\t\t// PowerShell will keep the parent process alive unless stdio is ignored.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t}\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// IMPORTANT: On macOS, the target MUST come AFTER '--args'.\n\t// When using --args, ALL following arguments are passed to the app.\n\t// Example: open -a \"chrome\" --args --incognito https://site.com\n\t// This passes BOTH --incognito AND https://site.com to Chrome.\n\t// Without this order, Chrome won't open in incognito. See #332.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode !== 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\t// When we're in a fallback attempt, we need to detect launch failures before trying the next app.\n\t// Wait for the close event to check the exit code before unreffing.\n\t// The launcher (open/xdg-open/PowerShell) exits quickly (~10-30ms) even on success.\n\tif (isFallbackAttempt) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('spawn', () => {\n\t\t\t\t// Keep error handler active for post-spawn errors\n\t\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\t\tsubprocess.off('error', reject);\n\n\t\t\t\t\tif (exitCode !== 0) {\n\t\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tsubprocess.unref();\n\t\t\t\t\tresolve(subprocess);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\t// Handle spawn errors before the caller can attach listeners.\n\t// This prevents unhandled error events from crashing the process.\n\treturn new Promise((resolve, reject) => {\n\t\tsubprocess.once('error', reject);\n\n\t\t// Wait for the subprocess to spawn before resolving.\n\t\t// This ensures the process is established before the caller continues,\n\t\t// preventing issues when process.exit() is called immediately after.\n\t\tsubprocess.once('spawn', () => {\n\t\t\tsubprocess.off('error', reject);\n\t\t\tresolve(subprocess);\n\t\t});\n\t});\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl} = {}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {\n\tbrowser: 'browser',\n\tbrowserPrivate: 'browserPrivate',\n};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\t// `chromium-browser` is the older deb package name used by Ubuntu/Debian before snap.\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'brave', () => detectPlatformBinary({\n\tdarwin: 'brave browser',\n\twin32: 'brave',\n\tlinux: ['brave-browser', 'brave'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe',\n\t\tx64: ['/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe', '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'safari', () => detectPlatformBinary({\n\tdarwin: 'Safari',\n}));\n\nexport default open;\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight Prometheus metrics registry for push-based counter metrics.
|
|
3
|
+
*
|
|
4
|
+
* Designed for ephemeral per-request usage in Cloudflare Workers that push
|
|
5
|
+
* metrics to a Prometheus push gateway. Replaces the deprecated `promjs` library.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const metrics = new MetricsRegistry();
|
|
10
|
+
* const reqCounter = metrics.createCounter(
|
|
11
|
+
* "service_request_total",
|
|
12
|
+
* "Total requests"
|
|
13
|
+
* );
|
|
14
|
+
* reqCounter.inc();
|
|
15
|
+
*
|
|
16
|
+
* // Push to Prometheus gateway
|
|
17
|
+
* ctx.waitUntil(
|
|
18
|
+
* fetch(prometheusUrl, {
|
|
19
|
+
* method: "POST",
|
|
20
|
+
* headers: { Authorization: `Bearer ${token}` },
|
|
21
|
+
* body: metrics.metrics(),
|
|
22
|
+
* })
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
interface Counter {
|
|
27
|
+
/** Increment the counter by 1. */
|
|
28
|
+
inc(): void;
|
|
29
|
+
/** Increment the counter by the given non-negative amount. */
|
|
30
|
+
add(amount: number): void;
|
|
31
|
+
}
|
|
32
|
+
declare class MetricsRegistry {
|
|
33
|
+
private counters;
|
|
34
|
+
/**
|
|
35
|
+
* Create and register a new counter metric.
|
|
36
|
+
*
|
|
37
|
+
* @param name - The metric name (e.g. "service_request_total")
|
|
38
|
+
* @param help - A human-readable description of the metric
|
|
39
|
+
* @returns A Counter that can be incremented
|
|
40
|
+
*/
|
|
41
|
+
createCounter(name: string, help: string): Counter;
|
|
42
|
+
/**
|
|
43
|
+
* Serialize all registered metrics in Prometheus text exposition format.
|
|
44
|
+
*
|
|
45
|
+
* @see https://prometheus.io/docs/instrumenting/exposition_formats/#text-based-format
|
|
46
|
+
*/
|
|
47
|
+
metrics(): string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { type Counter, MetricsRegistry };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"prometheus-metrics.mjs"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { R as RawConfig, a as RedirectedRawConfig } from '../compliance-j3-tqeao.mjs';
|
|
2
|
+
import 'node:url';
|
|
3
|
+
import 'undici';
|
|
4
|
+
import '@cloudflare/workers-shared';
|
|
5
|
+
|
|
6
|
+
declare function mockConsoleMethods(): {
|
|
7
|
+
debug: string;
|
|
8
|
+
out: string;
|
|
9
|
+
info: string;
|
|
10
|
+
err: string;
|
|
11
|
+
warn: string;
|
|
12
|
+
getAndClearOut: () => "";
|
|
13
|
+
};
|
|
14
|
+
declare function createDeferred<T>(): {
|
|
15
|
+
promise: Promise<T>;
|
|
16
|
+
resolve: (value: T) => void;
|
|
17
|
+
reject: (reason?: unknown) => void;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
declare const EMAIL_HEADER_NAME_CASES: readonly [readonly ["accepts RFC token characters", "X-Custom_Header.1", true], readonly ["rejects spaces", "X Header", false], readonly ["rejects colons", "X:Header", false], readonly ["rejects an empty name", "", false]];
|
|
21
|
+
declare const EMAIL_HEADER_VALUE_CASES: readonly [readonly ["accepts plain text", "custom value", true], readonly ["accepts LF-delimited lines", "first\nsecond", true], readonly ["accepts CRLF-delimited lines", "first\r\nsecond", true], readonly ["accepts an injection-shaped line for safe folding", "safe\nBcc: victim@example.com", true], readonly ["rejects a bare carriage return", "first\rsecond", false], readonly ["rejects a tab", "first\tsecond", false], readonly ["rejects DEL", "firstsecond", false]];
|
|
22
|
+
declare const MANAGED_EMAIL_HEADER_CASES: readonly [readonly ["Bcc", true], readonly ["Cc", true], readonly ["Content-Transfer-Encoding", true], readonly ["CONTENT-TYPE", true], readonly ["Date", true], readonly ["From", true], readonly ["MIME-Version", true], readonly ["Reply-To", true], readonly ["Subject", true], readonly ["mEsSaGe-Id", true], readonly ["To", true], readonly ["X-Custom-Header", false]];
|
|
23
|
+
|
|
24
|
+
declare const mockCreateDate: Date;
|
|
25
|
+
declare const mockModifiedDate: Date;
|
|
26
|
+
declare const mockStartDate: Date;
|
|
27
|
+
declare const mockQueuedDate: Date;
|
|
28
|
+
declare const mockEndDate: Date;
|
|
29
|
+
/**
|
|
30
|
+
* Normalize the input string, to make it reliable to use in tests.
|
|
31
|
+
*/
|
|
32
|
+
declare function normalizeString(input: string): string;
|
|
33
|
+
|
|
34
|
+
declare function runInTempDir({ homedir }?: {
|
|
35
|
+
homedir: string;
|
|
36
|
+
}): void;
|
|
37
|
+
|
|
38
|
+
declare function seed(files: Record<string, string | Uint8Array>): Promise<void>;
|
|
39
|
+
|
|
40
|
+
/** Write a mock wrangler config file to disk. */
|
|
41
|
+
declare function writeWranglerConfig(config?: RawConfig, path?: string): void;
|
|
42
|
+
declare function writeRedirectedWranglerConfig(config: RedirectedRawConfig, path?: string): void;
|
|
43
|
+
declare function writeDeployRedirectConfig(configPath: string): void;
|
|
44
|
+
declare function readWranglerConfig(path?: string): RawConfig;
|
|
45
|
+
|
|
46
|
+
export { EMAIL_HEADER_NAME_CASES, EMAIL_HEADER_VALUE_CASES, MANAGED_EMAIL_HEADER_CASES, createDeferred, mockConsoleMethods, mockCreateDate, mockEndDate, mockModifiedDate, mockQueuedDate, mockStartDate, normalizeString, readWranglerConfig, runInTempDir, seed, writeDeployRedirectConfig, writeRedirectedWranglerConfig, writeWranglerConfig };
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { formatConfigSnippet, PATH_TO_DEPLOY_CONFIG, parseTOML, parseJSONC } from '../chunk-4RE36JUD.mjs';
|
|
2
|
+
import '../chunk-G5FCNCLK.mjs';
|
|
3
|
+
import '../chunk-CPLEE7LH.mjs';
|
|
4
|
+
import { removeDir } from '../chunk-VKFVZ67V.mjs';
|
|
5
|
+
import { __name } from '../chunk-6LYDFTTF.mjs';
|
|
6
|
+
import * as util from 'node:util';
|
|
7
|
+
import { beforeEach, vi, afterEach } from 'vitest';
|
|
8
|
+
import * as fs2 from 'node:fs';
|
|
9
|
+
import os from 'node:os';
|
|
10
|
+
import * as path from 'node:path';
|
|
11
|
+
import path__default, { dirname, relative } from 'node:path';
|
|
12
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
13
|
+
|
|
14
|
+
// src/test-helpers/normalize.ts
|
|
15
|
+
var mockCreateDate = new Date(2025, 4, 1);
|
|
16
|
+
var mockModifiedDate = new Date(2025, 4, 2);
|
|
17
|
+
var mockStartDate = new Date(2021, 1, 1);
|
|
18
|
+
var mockQueuedDate = new Date(2025, 1, 2);
|
|
19
|
+
var mockEndDate = new Date(2025, 1, 3);
|
|
20
|
+
function normalizeString(input) {
|
|
21
|
+
return normalizeTables(
|
|
22
|
+
normalizeDates(
|
|
23
|
+
normalizeErrorMarkers(
|
|
24
|
+
replaceByte(
|
|
25
|
+
stripTrailingWhitespace(
|
|
26
|
+
stripStartupProfileHash(
|
|
27
|
+
normalizeSlashes(
|
|
28
|
+
normalizeCwd(
|
|
29
|
+
normalizeTempDirs(
|
|
30
|
+
normalizeOAuthUrlParams(
|
|
31
|
+
stripTimings(replaceThinSpaces(input))
|
|
32
|
+
)
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
__name(normalizeString, "normalizeString");
|
|
44
|
+
function normalizeOAuthUrlParams(str) {
|
|
45
|
+
return str.replace(/([?&]state=)[^&\s]+/g, "$1<OAUTH_STATE>").replace(/([?&]code_challenge=)[^&\s]+/g, "$1<OAUTH_CODE_CHALLENGE>");
|
|
46
|
+
}
|
|
47
|
+
__name(normalizeOAuthUrlParams, "normalizeOAuthUrlParams");
|
|
48
|
+
function stripStartupProfileHash(str) {
|
|
49
|
+
return str.replace(/startup-profile-[^/]+/g, "startup-profile-<HASH>");
|
|
50
|
+
}
|
|
51
|
+
__name(stripStartupProfileHash, "stripStartupProfileHash");
|
|
52
|
+
function normalizeTables(str) {
|
|
53
|
+
return str.replaceAll(/┌─+/g, "\u250C\u2500").replaceAll(/┬─+/g, "\u252C\u2500").replaceAll(/ +│/g, " \u2502").replaceAll(/├─+/g, "\u251C\u2500").replaceAll(/┼─+/g, "\u253C\u2500").replaceAll(/└─+/g, "\u2514\u2500").replaceAll(/┴─+/g, "\u2534\u2500");
|
|
54
|
+
}
|
|
55
|
+
__name(normalizeTables, "normalizeTables");
|
|
56
|
+
function normalizeDates(str) {
|
|
57
|
+
return str.replaceAll(/\d+ (years?|days?|months?) ago/g, "[mock-time-ago]").replaceAll(mockCreateDate.toLocaleString(), "[mock-create-date]").replaceAll(mockModifiedDate.toLocaleString(), "[mock-modified-date]").replaceAll(mockStartDate.toLocaleString(), "[mock-start-date]").replaceAll(mockQueuedDate.toLocaleString(), "[mock-queued-date]").replaceAll(mockEndDate.toLocaleString(), "[mock-end-date]");
|
|
58
|
+
}
|
|
59
|
+
__name(normalizeDates, "normalizeDates");
|
|
60
|
+
function normalizeErrorMarkers(str) {
|
|
61
|
+
return str.replaceAll("\u2718", "X");
|
|
62
|
+
}
|
|
63
|
+
__name(normalizeErrorMarkers, "normalizeErrorMarkers");
|
|
64
|
+
function normalizeSlashes(str) {
|
|
65
|
+
return str.replace(/\\/g, "/");
|
|
66
|
+
}
|
|
67
|
+
__name(normalizeSlashes, "normalizeSlashes");
|
|
68
|
+
function normalizeCwd(str) {
|
|
69
|
+
return str.replaceAll(process.cwd(), "<cwd>");
|
|
70
|
+
}
|
|
71
|
+
__name(normalizeCwd, "normalizeCwd");
|
|
72
|
+
function stripTimings(stdout) {
|
|
73
|
+
return stdout.replace(/\(\d+\.\d+ sec\)/g, "(TIMINGS)");
|
|
74
|
+
}
|
|
75
|
+
__name(stripTimings, "stripTimings");
|
|
76
|
+
function stripTrailingWhitespace(str) {
|
|
77
|
+
return str.replace(/[^\S\n]+\n/g, "\n");
|
|
78
|
+
}
|
|
79
|
+
__name(stripTrailingWhitespace, "stripTrailingWhitespace");
|
|
80
|
+
function replaceByte(stdout) {
|
|
81
|
+
return stdout.replaceAll(/\d+\.\d+ KiB/g, "xx KiB");
|
|
82
|
+
}
|
|
83
|
+
__name(replaceByte, "replaceByte");
|
|
84
|
+
function normalizeTempDirs(stdout) {
|
|
85
|
+
return stdout.replaceAll(/\/\/.+\/tmp.+/g, "//tmpdir");
|
|
86
|
+
}
|
|
87
|
+
__name(normalizeTempDirs, "normalizeTempDirs");
|
|
88
|
+
function replaceThinSpaces(str) {
|
|
89
|
+
return str.replaceAll(/\u200a/g, " ");
|
|
90
|
+
}
|
|
91
|
+
__name(replaceThinSpaces, "replaceThinSpaces");
|
|
92
|
+
|
|
93
|
+
// src/test-helpers/mock.ts
|
|
94
|
+
var debugSpy;
|
|
95
|
+
var logSpy;
|
|
96
|
+
var infoSpy;
|
|
97
|
+
var errorSpy;
|
|
98
|
+
var warnSpy;
|
|
99
|
+
var std = Object.defineProperties(
|
|
100
|
+
{ debug: "", out: "", info: "", err: "", warn: "", getAndClearOut: /* @__PURE__ */ __name(() => "", "getAndClearOut") },
|
|
101
|
+
{
|
|
102
|
+
debug: {
|
|
103
|
+
get: /* @__PURE__ */ __name(() => normalizeOutput(debugSpy), "get"),
|
|
104
|
+
enumerable: true
|
|
105
|
+
},
|
|
106
|
+
out: {
|
|
107
|
+
get: /* @__PURE__ */ __name(() => normalizeOutput(logSpy), "get"),
|
|
108
|
+
enumerable: true
|
|
109
|
+
},
|
|
110
|
+
info: {
|
|
111
|
+
get: /* @__PURE__ */ __name(() => normalizeOutput(infoSpy), "get"),
|
|
112
|
+
enumerable: true
|
|
113
|
+
},
|
|
114
|
+
err: {
|
|
115
|
+
get: /* @__PURE__ */ __name(() => normalizeOutput(errorSpy), "get"),
|
|
116
|
+
enumerable: true
|
|
117
|
+
},
|
|
118
|
+
warn: {
|
|
119
|
+
get: /* @__PURE__ */ __name(() => normalizeOutput(warnSpy), "get"),
|
|
120
|
+
enumerable: true
|
|
121
|
+
},
|
|
122
|
+
/**
|
|
123
|
+
* Return the content of the mocked stdout and clear the mock's history.
|
|
124
|
+
*
|
|
125
|
+
* Helpful for tests that need to assert on multiple sequential console outputs.
|
|
126
|
+
*/
|
|
127
|
+
getAndClearOut: {
|
|
128
|
+
value: /* @__PURE__ */ __name(() => {
|
|
129
|
+
const output = normalizeOutput(logSpy);
|
|
130
|
+
logSpy.mockClear();
|
|
131
|
+
return output;
|
|
132
|
+
}, "value"),
|
|
133
|
+
enumerable: false
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
function normalizeOutput(spy, join2 = "\n") {
|
|
138
|
+
return normalizeString(captureCalls(spy, join2));
|
|
139
|
+
}
|
|
140
|
+
__name(normalizeOutput, "normalizeOutput");
|
|
141
|
+
function captureCalls(spy, join2 = "\n") {
|
|
142
|
+
return spy.mock.calls.map((args) => util.format("%s", ...args)).join(join2);
|
|
143
|
+
}
|
|
144
|
+
__name(captureCalls, "captureCalls");
|
|
145
|
+
function mockConsoleMethods() {
|
|
146
|
+
beforeEach(() => {
|
|
147
|
+
debugSpy = vi.spyOn(console, "debug").mockImplementation(() => {
|
|
148
|
+
});
|
|
149
|
+
logSpy = vi.spyOn(console, "log").mockImplementation(() => {
|
|
150
|
+
});
|
|
151
|
+
infoSpy = vi.spyOn(console, "info").mockImplementation(() => {
|
|
152
|
+
});
|
|
153
|
+
errorSpy = vi.spyOn(console, "error").mockImplementation(() => {
|
|
154
|
+
});
|
|
155
|
+
warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
afterEach(() => {
|
|
159
|
+
debugSpy.mockRestore();
|
|
160
|
+
logSpy.mockRestore();
|
|
161
|
+
infoSpy.mockRestore();
|
|
162
|
+
errorSpy.mockRestore();
|
|
163
|
+
warnSpy.mockRestore();
|
|
164
|
+
});
|
|
165
|
+
return std;
|
|
166
|
+
}
|
|
167
|
+
__name(mockConsoleMethods, "mockConsoleMethods");
|
|
168
|
+
function createDeferred() {
|
|
169
|
+
let resolve2;
|
|
170
|
+
let reject;
|
|
171
|
+
const promise = new Promise((_resolve, _reject) => {
|
|
172
|
+
resolve2 = _resolve;
|
|
173
|
+
reject = _reject;
|
|
174
|
+
});
|
|
175
|
+
if (!resolve2 || !reject) {
|
|
176
|
+
throw new Error("Failed to create deferred promise");
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
promise,
|
|
180
|
+
resolve: resolve2,
|
|
181
|
+
reject
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
__name(createDeferred, "createDeferred");
|
|
185
|
+
|
|
186
|
+
// src/test-helpers/email-header-validation.ts
|
|
187
|
+
var EMAIL_HEADER_NAME_CASES = [
|
|
188
|
+
["accepts RFC token characters", "X-Custom_Header.1", true],
|
|
189
|
+
["rejects spaces", "X Header", false],
|
|
190
|
+
["rejects colons", "X:Header", false],
|
|
191
|
+
["rejects an empty name", "", false]
|
|
192
|
+
];
|
|
193
|
+
var EMAIL_HEADER_VALUE_CASES = [
|
|
194
|
+
["accepts plain text", "custom value", true],
|
|
195
|
+
["accepts LF-delimited lines", "first\nsecond", true],
|
|
196
|
+
["accepts CRLF-delimited lines", "first\r\nsecond", true],
|
|
197
|
+
[
|
|
198
|
+
"accepts an injection-shaped line for safe folding",
|
|
199
|
+
"safe\nBcc: victim@example.com",
|
|
200
|
+
true
|
|
201
|
+
],
|
|
202
|
+
["rejects a bare carriage return", "first\rsecond", false],
|
|
203
|
+
["rejects a tab", "first second", false],
|
|
204
|
+
["rejects DEL", "first\x7Fsecond", false]
|
|
205
|
+
];
|
|
206
|
+
var MANAGED_EMAIL_HEADER_CASES = [
|
|
207
|
+
["Bcc", true],
|
|
208
|
+
["Cc", true],
|
|
209
|
+
["Content-Transfer-Encoding", true],
|
|
210
|
+
["CONTENT-TYPE", true],
|
|
211
|
+
["Date", true],
|
|
212
|
+
["From", true],
|
|
213
|
+
["MIME-Version", true],
|
|
214
|
+
["Reply-To", true],
|
|
215
|
+
["Subject", true],
|
|
216
|
+
["mEsSaGe-Id", true],
|
|
217
|
+
["To", true],
|
|
218
|
+
["X-Custom-Header", false]
|
|
219
|
+
];
|
|
220
|
+
var originalCwd = process.cwd();
|
|
221
|
+
function runInTempDir({ homedir } = { homedir: "./home" }) {
|
|
222
|
+
let tmpDir;
|
|
223
|
+
beforeEach(() => {
|
|
224
|
+
tmpDir = fs2.realpathSync(
|
|
225
|
+
fs2.mkdtempSync(path.join(os.tmpdir(), "wrangler-tests"))
|
|
226
|
+
);
|
|
227
|
+
process.chdir(tmpDir);
|
|
228
|
+
vi.stubEnv("PWD", tmpDir);
|
|
229
|
+
const absHomedir = path.resolve(tmpDir, homedir);
|
|
230
|
+
fs2.mkdirSync(absHomedir, { recursive: true });
|
|
231
|
+
vi.stubEnv("HOME", absHomedir);
|
|
232
|
+
vi.stubEnv("XDG_CONFIG_HOME", path.resolve(absHomedir, ".config"));
|
|
233
|
+
});
|
|
234
|
+
afterEach(() => {
|
|
235
|
+
process.chdir(originalCwd);
|
|
236
|
+
removeDir(tmpDir, { fireAndForget: true });
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
__name(runInTempDir, "runInTempDir");
|
|
240
|
+
async function seed(files) {
|
|
241
|
+
for (const [name, contents] of Object.entries(files)) {
|
|
242
|
+
const filePath = path__default.resolve(name);
|
|
243
|
+
await mkdir(path__default.dirname(filePath), { recursive: true });
|
|
244
|
+
await writeFile(filePath, contents);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
__name(seed, "seed");
|
|
248
|
+
function writeWranglerConfig(config = {}, path3 = "./wrangler.toml") {
|
|
249
|
+
const json = /\.jsonc?$/.test(path3);
|
|
250
|
+
fs2.mkdirSync(dirname(path3), { recursive: true });
|
|
251
|
+
fs2.writeFileSync(
|
|
252
|
+
path3,
|
|
253
|
+
formatConfigSnippet(
|
|
254
|
+
{
|
|
255
|
+
compatibility_date: "2022-01-12",
|
|
256
|
+
name: "test-name",
|
|
257
|
+
...config
|
|
258
|
+
},
|
|
259
|
+
path3,
|
|
260
|
+
!!json
|
|
261
|
+
),
|
|
262
|
+
"utf-8"
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
__name(writeWranglerConfig, "writeWranglerConfig");
|
|
266
|
+
function writeRedirectedWranglerConfig(config, path3 = "./dist/wrangler.json") {
|
|
267
|
+
const json = /\.jsonc?$/.test(path3);
|
|
268
|
+
fs2.mkdirSync(dirname(path3), { recursive: true });
|
|
269
|
+
fs2.writeFileSync(
|
|
270
|
+
path3,
|
|
271
|
+
formatConfigSnippet(
|
|
272
|
+
{
|
|
273
|
+
compatibility_date: "2022-01-12",
|
|
274
|
+
name: "test-name",
|
|
275
|
+
...config
|
|
276
|
+
},
|
|
277
|
+
path3,
|
|
278
|
+
!!json
|
|
279
|
+
),
|
|
280
|
+
"utf-8"
|
|
281
|
+
);
|
|
282
|
+
writeDeployRedirectConfig(path3);
|
|
283
|
+
}
|
|
284
|
+
__name(writeRedirectedWranglerConfig, "writeRedirectedWranglerConfig");
|
|
285
|
+
function writeDeployRedirectConfig(configPath) {
|
|
286
|
+
const config = {
|
|
287
|
+
configPath: relative(dirname(PATH_TO_DEPLOY_CONFIG), configPath)
|
|
288
|
+
};
|
|
289
|
+
fs2.mkdirSync(dirname(PATH_TO_DEPLOY_CONFIG), { recursive: true });
|
|
290
|
+
fs2.writeFileSync(
|
|
291
|
+
PATH_TO_DEPLOY_CONFIG,
|
|
292
|
+
formatConfigSnippet(config, ".json", true),
|
|
293
|
+
"utf-8"
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
__name(writeDeployRedirectConfig, "writeDeployRedirectConfig");
|
|
297
|
+
function readWranglerConfig(path3 = "./wrangler.toml") {
|
|
298
|
+
if (path3.endsWith(".toml")) {
|
|
299
|
+
return parseTOML(fs2.readFileSync(path3, "utf8"), path3);
|
|
300
|
+
}
|
|
301
|
+
if (path3.endsWith(".json") || path3.endsWith(".jsonc")) {
|
|
302
|
+
return parseJSONC(fs2.readFileSync(path3, "utf8"), path3);
|
|
303
|
+
}
|
|
304
|
+
return {};
|
|
305
|
+
}
|
|
306
|
+
__name(readWranglerConfig, "readWranglerConfig");
|
|
307
|
+
|
|
308
|
+
export { EMAIL_HEADER_NAME_CASES, EMAIL_HEADER_VALUE_CASES, MANAGED_EMAIL_HEADER_CASES, createDeferred, mockConsoleMethods, mockCreateDate, mockEndDate, mockModifiedDate, mockQueuedDate, mockStartDate, normalizeString, readWranglerConfig, runInTempDir, seed, writeDeployRedirectConfig, writeRedirectedWranglerConfig, writeWranglerConfig };
|
|
309
|
+
//# sourceMappingURL=index.mjs.map
|
|
310
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/test-helpers/normalize.ts","../../src/test-helpers/mock.ts","../../src/test-helpers/email-header-validation.ts","../../src/test-helpers/run-in-tmp.ts","../../src/test-helpers/seed.ts","../../src/test-helpers/wrangler-config.ts"],"names":["join","resolve","beforeEach","fs","vi","afterEach","path"],"mappings":"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","file":"index.mjs","sourcesContent":["export const mockCreateDate = new Date(2025, 4, 1);\nexport const mockModifiedDate = new Date(2025, 4, 2);\nexport const mockStartDate = new Date(2021, 1, 1);\nexport const mockQueuedDate = new Date(2025, 1, 2);\nexport const mockEndDate = new Date(2025, 1, 3);\n\n/**\n * Normalize the input string, to make it reliable to use in tests.\n */\nexport function normalizeString(input: string): string {\n\treturn normalizeTables(\n\t\tnormalizeDates(\n\t\t\tnormalizeErrorMarkers(\n\t\t\t\treplaceByte(\n\t\t\t\t\tstripTrailingWhitespace(\n\t\t\t\t\t\tstripStartupProfileHash(\n\t\t\t\t\t\t\tnormalizeSlashes(\n\t\t\t\t\t\t\t\tnormalizeCwd(\n\t\t\t\t\t\t\t\t\tnormalizeTempDirs(\n\t\t\t\t\t\t\t\t\t\tnormalizeOAuthUrlParams(\n\t\t\t\t\t\t\t\t\t\t\tstripTimings(replaceThinSpaces(input))\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n}\n\n/**\n * The OAuth authorize URL contains a random `state` and PKCE `code_challenge`\n * on every run. Replace those two values (but not `code_challenge_method`) with\n * stable placeholders so snapshots of the login URL stay deterministic.\n */\nfunction normalizeOAuthUrlParams(str: string): string {\n\treturn str\n\t\t.replace(/([?&]state=)[^&\\s]+/g, \"$1<OAUTH_STATE>\")\n\t\t.replace(/([?&]code_challenge=)[^&\\s]+/g, \"$1<OAUTH_CODE_CHALLENGE>\");\n}\n\nfunction stripStartupProfileHash(str: string): string {\n\treturn str.replace(/startup-profile-[^/]+/g, \"startup-profile-<HASH>\");\n}\n\nfunction normalizeTables(str: string): string {\n\treturn str\n\t\t.replaceAll(/┌─+/g, \"┌─\")\n\t\t.replaceAll(/┬─+/g, \"┬─\")\n\t\t.replaceAll(/ +│/g, \" │\")\n\t\t.replaceAll(/├─+/g, \"├─\")\n\t\t.replaceAll(/┼─+/g, \"┼─\")\n\t\t.replaceAll(/└─+/g, \"└─\")\n\t\t.replaceAll(/┴─+/g, \"┴─\");\n}\n\nfunction normalizeDates(str: string): string {\n\treturn str\n\t\t.replaceAll(/\\d+ (years?|days?|months?) ago/g, \"[mock-time-ago]\")\n\t\t.replaceAll(mockCreateDate.toLocaleString(), \"[mock-create-date]\")\n\t\t.replaceAll(mockModifiedDate.toLocaleString(), \"[mock-modified-date]\")\n\t\t.replaceAll(mockStartDate.toLocaleString(), \"[mock-start-date]\")\n\t\t.replaceAll(mockQueuedDate.toLocaleString(), \"[mock-queued-date]\")\n\t\t.replaceAll(mockEndDate.toLocaleString(), \"[mock-end-date]\");\n}\n\n/**\n * Normalize error `X` markers.\n *\n * Windows gets a different character.\n */\nfunction normalizeErrorMarkers(str: string): string {\n\treturn str.replaceAll(\"✘\", \"X\");\n}\n\n/**\n * Ensure slashes in the `str` are OS file-system agnostic.\n *\n * Use this in snapshot tests to be resilient to file-system differences.\n */\nfunction normalizeSlashes(str: string): string {\n\treturn str.replace(/\\\\/g, \"/\");\n}\n\n/**\n * Replace any use of the current working directory with `<cwd>` to avoid cross OS issues.\n */\nfunction normalizeCwd(str: string): string {\n\treturn str.replaceAll(process.cwd(), \"<cwd>\");\n}\n\n/**\n * Strip \"timing data\" out of the `stdout` string, since this is not always deterministic.\n *\n * Use this in snapshot tests to be resilient to slight changes in timing of processing.\n */\nfunction stripTimings(stdout: string): string {\n\treturn stdout.replace(/\\(\\d+\\.\\d+ sec\\)/g, \"(TIMINGS)\");\n}\n\nfunction stripTrailingWhitespace(str: string): string {\n\treturn str.replace(/[^\\S\\n]+\\n/g, \"\\n\");\n}\n\n/**\n * Removing leading kilobit (tenth of a byte) from test output due to\n * variation causing every few tests the value to change by ± .01\n */\nfunction replaceByte(stdout: string): string {\n\treturn stdout.replaceAll(/\\d+\\.\\d+ KiB/g, \"xx KiB\");\n}\n\n/**\n * Temp directories are created with random names, so we replace all comments temp dirs in them\n */\nfunction normalizeTempDirs(stdout: string): string {\n\treturn stdout.replaceAll(/\\/\\/.+\\/tmp.+/g, \"//tmpdir\");\n}\n\n/**\n * Replace thin space characters (U+200A) with regular spaces to normalize output\n */\nfunction replaceThinSpaces(str: string): string {\n\treturn str.replaceAll(/\\u200a/g, \" \");\n}\n","import * as util from \"node:util\";\nimport { afterEach, beforeEach, vi } from \"vitest\";\nimport { normalizeString } from \"./normalize\";\nimport type { MockInstance } from \"vitest\";\n\n/**\n * We use this module to mock console methods, and optionally\n * assert on the values they're called with in our tests.\n */\n\nlet debugSpy: MockInstance,\n\tlogSpy: MockInstance,\n\tinfoSpy: MockInstance,\n\terrorSpy: MockInstance,\n\twarnSpy: MockInstance;\n\n/**\n * An object containing the normalized output of each console method.\n *\n * We use `defineProperties` to add non enumerable methods to the object,\n * so they don't show up in test assertions that iterate over the object's keys.\n * i.e. `expect(std).toMatchInlineSnapshot('...')`;\n */\nconst std = Object.defineProperties(\n\t{ debug: \"\", out: \"\", info: \"\", err: \"\", warn: \"\", getAndClearOut: () => \"\" },\n\t{\n\t\tdebug: {\n\t\t\tget: () => normalizeOutput(debugSpy),\n\t\t\tenumerable: true,\n\t\t},\n\t\tout: {\n\t\t\tget: () => normalizeOutput(logSpy),\n\t\t\tenumerable: true,\n\t\t},\n\t\tinfo: {\n\t\t\tget: () => normalizeOutput(infoSpy),\n\t\t\tenumerable: true,\n\t\t},\n\t\terr: {\n\t\t\tget: () => normalizeOutput(errorSpy),\n\t\t\tenumerable: true,\n\t\t},\n\t\twarn: {\n\t\t\tget: () => normalizeOutput(warnSpy),\n\t\t\tenumerable: true,\n\t\t},\n\t\t/**\n\t\t * Return the content of the mocked stdout and clear the mock's history.\n\t\t *\n\t\t * Helpful for tests that need to assert on multiple sequential console outputs.\n\t\t */\n\t\tgetAndClearOut: {\n\t\t\tvalue: () => {\n\t\t\t\tconst output = normalizeOutput(logSpy);\n\t\t\t\tlogSpy.mockClear();\n\t\t\t\treturn output;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t}\n);\n\nfunction normalizeOutput(spy: MockInstance, join = \"\\n\"): string {\n\treturn normalizeString(captureCalls(spy, join));\n}\n\nfunction captureCalls(spy: MockInstance, join = \"\\n\"): string {\n\treturn spy.mock.calls\n\t\t.map((args: unknown[]) => util.format(\"%s\", ...args))\n\t\t.join(join);\n}\n\nexport function mockConsoleMethods() {\n\tbeforeEach(() => {\n\t\tdebugSpy = vi.spyOn(console, \"debug\").mockImplementation(() => {});\n\t\tlogSpy = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\tinfoSpy = vi.spyOn(console, \"info\").mockImplementation(() => {});\n\t\terrorSpy = vi.spyOn(console, \"error\").mockImplementation(() => {});\n\t\twarnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\t});\n\tafterEach(() => {\n\t\tdebugSpy.mockRestore();\n\t\tlogSpy.mockRestore();\n\t\tinfoSpy.mockRestore();\n\t\terrorSpy.mockRestore();\n\t\twarnSpy.mockRestore();\n\t});\n\treturn std;\n}\n\nexport function createDeferred<T>() {\n\tlet resolve: ((value: T) => void) | undefined;\n\tlet reject: ((reason?: unknown) => void) | undefined;\n\tconst promise = new Promise<T>((_resolve, _reject) => {\n\t\tresolve = _resolve;\n\t\treject = _reject;\n\t});\n\n\tif (!resolve || !reject) {\n\t\tthrow new Error(\"Failed to create deferred promise\");\n\t}\n\n\treturn {\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t};\n}\n","export const EMAIL_HEADER_NAME_CASES = [\n\t[\"accepts RFC token characters\", \"X-Custom_Header.1\", true],\n\t[\"rejects spaces\", \"X Header\", false],\n\t[\"rejects colons\", \"X:Header\", false],\n\t[\"rejects an empty name\", \"\", false],\n] as const;\n\nexport const EMAIL_HEADER_VALUE_CASES = [\n\t[\"accepts plain text\", \"custom value\", true],\n\t[\"accepts LF-delimited lines\", \"first\\nsecond\", true],\n\t[\"accepts CRLF-delimited lines\", \"first\\r\\nsecond\", true],\n\t[\n\t\t\"accepts an injection-shaped line for safe folding\",\n\t\t\"safe\\nBcc: victim@example.com\",\n\t\ttrue,\n\t],\n\t[\"rejects a bare carriage return\", \"first\\rsecond\", false],\n\t[\"rejects a tab\", \"first\\tsecond\", false],\n\t[\"rejects DEL\", \"first\\u007fsecond\", false],\n] as const;\n\nexport const MANAGED_EMAIL_HEADER_CASES = [\n\t[\"Bcc\", true],\n\t[\"Cc\", true],\n\t[\"Content-Transfer-Encoding\", true],\n\t[\"CONTENT-TYPE\", true],\n\t[\"Date\", true],\n\t[\"From\", true],\n\t[\"MIME-Version\", true],\n\t[\"Reply-To\", true],\n\t[\"Subject\", true],\n\t[\"mEsSaGe-Id\", true],\n\t[\"To\", true],\n\t[\"X-Custom-Header\", false],\n] as const;\n","import * as fs from \"node:fs\";\nimport os from \"node:os\";\nimport * as path from \"node:path\";\nimport { afterEach, beforeEach, vi } from \"vitest\";\nimport { removeDir } from \"../fs-helpers\";\n\nconst originalCwd = process.cwd();\n\nexport function runInTempDir({ homedir } = { homedir: \"./home\" }) {\n\tlet tmpDir: string;\n\n\tbeforeEach(() => {\n\t\t// Use realpath because the temporary path can point to a symlink rather than the actual path.\n\t\ttmpDir = fs.realpathSync(\n\t\t\tfs.mkdtempSync(path.join(os.tmpdir(), \"wrangler-tests\"))\n\t\t);\n\n\t\tprocess.chdir(tmpDir);\n\t\tvi.stubEnv(\"PWD\", tmpDir);\n\n\t\t// Override where the home directory is so that we can write our own user config,\n\t\t// without destroying the real thing.\n\t\t// The path that is returned from `homedir()` should be absolute.\n\t\tconst absHomedir = path.resolve(tmpDir, homedir);\n\t\tfs.mkdirSync(absHomedir, { recursive: true });\n\t\tvi.stubEnv(\"HOME\", absHomedir);\n\t\tvi.stubEnv(\"XDG_CONFIG_HOME\", path.resolve(absHomedir, \".config\"));\n\t});\n\n\tafterEach(() => {\n\t\tprocess.chdir(originalCwd);\n\t\tremoveDir(tmpDir, { fireAndForget: true });\n\t});\n}\n","// Seeds the `root` directory on the file system with some data. Use in\n\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\n// combination with `dedent` for petty formatting of seeded contents.\nexport async function seed(files: Record<string, string | Uint8Array>) {\n\tfor (const [name, contents] of Object.entries(files)) {\n\t\tconst filePath = path.resolve(name);\n\t\tawait mkdir(path.dirname(filePath), { recursive: true });\n\t\tawait writeFile(filePath, contents);\n\t}\n}\n","import * as fs from \"node:fs\";\nimport { dirname, relative } from \"node:path\";\nimport { formatConfigSnippet } from \"../config\";\nimport { PATH_TO_DEPLOY_CONFIG } from \"../constants\";\nimport { parseJSONC, parseTOML } from \"../parse\";\nimport type { RawConfig } from \"../config\";\nimport type { RedirectedRawConfig } from \"../config/config\";\n\n/** Write a mock wrangler config file to disk. */\nexport function writeWranglerConfig(\n\tconfig: RawConfig = {},\n\tpath = \"./wrangler.toml\"\n) {\n\tconst json = /\\.jsonc?$/.test(path);\n\tfs.mkdirSync(dirname(path), { recursive: true });\n\tfs.writeFileSync(\n\t\tpath,\n\t\tformatConfigSnippet(\n\t\t\t{\n\t\t\t\tcompatibility_date: \"2022-01-12\",\n\t\t\t\tname: \"test-name\",\n\t\t\t\t...config,\n\t\t\t},\n\t\t\tpath,\n\t\t\t!!json\n\t\t),\n\t\t\"utf-8\"\n\t);\n}\n\nexport function writeRedirectedWranglerConfig(\n\tconfig: RedirectedRawConfig,\n\tpath = \"./dist/wrangler.json\"\n) {\n\tconst json = /\\.jsonc?$/.test(path);\n\tfs.mkdirSync(dirname(path), { recursive: true });\n\tfs.writeFileSync(\n\t\tpath,\n\t\tformatConfigSnippet(\n\t\t\t{\n\t\t\t\tcompatibility_date: \"2022-01-12\",\n\t\t\t\tname: \"test-name\",\n\t\t\t\t...config,\n\t\t\t},\n\t\t\tpath,\n\t\t\t!!json\n\t\t),\n\t\t\"utf-8\"\n\t);\n\twriteDeployRedirectConfig(path);\n}\n\nexport function writeDeployRedirectConfig(configPath: string) {\n\tconst config: RedirectedRawConfig = {\n\t\tconfigPath: relative(dirname(PATH_TO_DEPLOY_CONFIG), configPath),\n\t};\n\tfs.mkdirSync(dirname(PATH_TO_DEPLOY_CONFIG), { recursive: true });\n\tfs.writeFileSync(\n\t\tPATH_TO_DEPLOY_CONFIG,\n\t\tformatConfigSnippet(config, \".json\", true),\n\t\t\"utf-8\"\n\t);\n}\n\nexport function readWranglerConfig(path = \"./wrangler.toml\"): RawConfig {\n\tif (path.endsWith(\".toml\")) {\n\t\treturn parseTOML(fs.readFileSync(path, \"utf8\"), path) as RawConfig;\n\t}\n\n\tif (path.endsWith(\".json\") || path.endsWith(\".jsonc\")) {\n\t\treturn parseJSONC(fs.readFileSync(path, \"utf8\"), path) as RawConfig;\n\t}\n\n\treturn {};\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"zod-format.mjs"}
|