@zimic/interceptor 0.17.0 → 0.17.1-canary.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.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/cli/browser/shared/constants.ts","../src/cli/browser/init.ts","../src/utils/processes.ts","../src/cli/server/start.ts","../src/cli/server/token/create.ts","../src/cli/server/token/list.ts","../src/cli/server/token/remove.ts","../src/cli/cli.ts","../src/cli/index.ts"],"names":["path","__require","fs","logger","color","__name","createCachedDynamicImport_default","createInterceptorServer","exitEvent","createInterceptorToken","listInterceptorTokens","readInterceptorTokenFromFile","removeInterceptorToken","yargs","hideBin","DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY"],"mappings":"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","file":"cli.js","sourcesContent":["{\n \"name\": \"@zimic/interceptor\",\n \"description\": \"Next-gen, TypeScript-first HTTP intercepting and mocking\",\n \"keywords\": [\n \"zimic\",\n \"typescript\",\n \"types\",\n \"typegen\",\n \"validation\",\n \"inference\",\n \"http\",\n \"interceptor\",\n \"mock\",\n \"api\",\n \"static\"\n ],\n \"version\": \"0.17.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/zimicjs/zimic.git\",\n \"directory\": \"packages/zimic-interceptor\"\n },\n \"author\": {\n \"name\": \"Diego Aquino\",\n \"url\": \"https://github.com/diego-aquino\"\n },\n \"private\": false,\n \"publishConfig\": {\n \"access\": \"public\",\n \"provenance\": true\n },\n \"engines\": {\n \"node\": \">=18.13.0\"\n },\n \"license\": \"MIT\",\n \"files\": [\n \"package.json\",\n \"README.md\",\n \"LICENSE.md\",\n \"src\",\n \"!src/**/tests\",\n \"!src/**/__tests__\",\n \"!src/**/*.test.ts\",\n \"dist\",\n \"index.d.ts\",\n \"http.d.ts\",\n \"server.d.ts\"\n ],\n \"sideEffects\": false,\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"index.d.ts\",\n \"bin\": {\n \"zimic-interceptor\": \"./dist/cli.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./http\": {\n \"types\": \"./http.d.ts\",\n \"import\": \"./dist/http.mjs\",\n \"require\": \"./dist/http.js\",\n \"default\": \"./dist/http.js\"\n },\n \"./server\": {\n \"types\": \"./server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.js\",\n \"default\": \"./dist/server.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"cli\": \"node --enable-source-maps ./dist/cli.js\",\n \"build\": \"tsup\",\n \"lint\": \"eslint --cache --no-error-on-unmatched-pattern --no-warn-ignored --fix\",\n \"lint:turbo\": \"pnpm lint . --max-warnings 0\",\n \"style\": \"prettier --log-level warn --ignore-unknown --no-error-on-unmatched-pattern --cache\",\n \"style:check\": \"pnpm style --check\",\n \"style:format\": \"pnpm style --write\",\n \"test\": \"dotenv -v NODE_ENV=test -v FORCE_COLOR=1 -- vitest\",\n \"test:turbo\": \"dotenv -v CI=true -- pnpm run test run --coverage\",\n \"types:check\": \"tsc --noEmit\",\n \"deps:install-playwright\": \"playwright install chromium\",\n \"deps:init-msw\": \"msw init ./public --no-save\",\n \"deps:init\": \"pnpm deps:install-playwright && pnpm deps:init-msw\",\n \"postinstall\": \"node --enable-source-maps -e \\\"try{require('./dist/scripts/postinstall')}catch(error){console.error(error)}\\\"\"\n },\n \"dependencies\": {\n \"@whatwg-node/server\": \"0.10.3\",\n \"execa\": \"9.5.2\",\n \"isomorphic-ws\": \"5.0.0\",\n \"msw\": \"2.7.3\",\n \"picocolors\": \"^1.1.1\",\n \"ws\": \"8.18.1\",\n \"yargs\": \"17.7.2\",\n \"zod\": \"^3.24.2\"\n },\n \"optionalDependencies\": {\n \"bufferutil\": \"4.0.9\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.14.0\",\n \"@types/ws\": \"^8.18.1\",\n \"@types/yargs\": \"^17.0.33\",\n \"@vitest/browser\": \"^3.1.1\",\n \"@vitest/coverage-istanbul\": \"^3.1.1\",\n \"@zimic/eslint-config-node\": \"workspace:*\",\n \"@zimic/lint-staged-config\": \"workspace:*\",\n \"@zimic/tsconfig\": \"workspace:*\",\n \"@zimic/utils\": \"workspace:*\",\n \"dotenv-cli\": \"^8.0.0\",\n \"eslint\": \"^9.24.0\",\n \"playwright\": \"^1.51.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"peerDependencies\": {\n \"@zimic/http\": \"^0.3.0 || ^0.3.0-canary.0\",\n \"typescript\": \">=4.8.0\"\n },\n \"peerDependenciesMeta\": {\n \"typescript\": {\n \"optional\": true\n }\n }\n}\n","export const SERVICE_WORKER_FILE_NAME = 'mockServiceWorker.js';\n","import fs from 'fs';\nimport path from 'path';\nimport color from 'picocolors';\n\nimport { logger } from '@/utils/logging';\n\nimport { SERVICE_WORKER_FILE_NAME } from './shared/constants';\n\nconst MSW_ROOT_PATH = path.join(require.resolve('msw'), '..', '..', '..');\nexport const MOCK_SERVICE_WORKER_PATH = path.join(MSW_ROOT_PATH, 'lib', SERVICE_WORKER_FILE_NAME);\n\ninterface BrowserServiceWorkerInitOptions {\n publicDirectory: string;\n}\n\nasync function initializeBrowserServiceWorker({ publicDirectory }: BrowserServiceWorkerInitOptions) {\n const absolutePublicDirectory = path.resolve(publicDirectory);\n await fs.promises.mkdir(absolutePublicDirectory, { recursive: true });\n\n const destinationPath = path.join(absolutePublicDirectory, SERVICE_WORKER_FILE_NAME);\n await fs.promises.copyFile(MOCK_SERVICE_WORKER_PATH, destinationPath);\n\n logger.info(`Service worker script saved to ${color.magenta(destinationPath)}.`);\n}\n\nexport default initializeBrowserServiceWorker;\n","import createCachedDynamicImport from '@zimic/utils/import/createCachedDynamicImport';\n\nexport const PROCESS_EXIT_EVENTS = Object.freeze([\n 'beforeExit',\n 'uncaughtExceptionMonitor',\n 'SIGINT',\n 'SIGTERM',\n 'SIGHUP',\n 'SIGBREAK',\n] as const);\n\nexport type ProcessExitEvent = (typeof PROCESS_EXIT_EVENTS)[number];\n\n// Having an undefined exit code means that the process will already exit with the default exit code.\nexport const PROCESS_EXIT_CODE_BY_EXIT_EVENT: Record<string, number | undefined> = {\n beforeExit: undefined,\n uncaughtExceptionMonitor: undefined,\n SIGINT: 130,\n SIGTERM: 143,\n SIGHUP: 129,\n SIGBREAK: 131,\n} satisfies Record<ProcessExitEvent, number | undefined>;\n\nexport const importExeca = createCachedDynamicImport(() => import('execa'));\n\ninterface CommandErrorOptions {\n command?: string[];\n exitCode?: number;\n signal?: NodeJS.Signals;\n originalMessage?: string;\n}\n\nexport class CommandError extends Error {\n static readonly DEFAULT_EXIT_CODE = 1;\n\n readonly command: string[];\n readonly exitCode: number;\n readonly signal?: NodeJS.Signals;\n\n constructor(executable: string, options: CommandErrorOptions) {\n const message = CommandError.createMessage(executable, options);\n super(message);\n\n this.name = 'CommandError';\n this.command = options.command ?? [executable];\n this.exitCode = this.getExitCode(options);\n this.signal = options.signal;\n }\n\n private getExitCode(options: CommandErrorOptions): number {\n const existingExitCode = options.exitCode;\n const exitCodeInferredFromSignal =\n options.signal === undefined ? undefined : PROCESS_EXIT_CODE_BY_EXIT_EVENT[options.signal];\n\n return existingExitCode ?? exitCodeInferredFromSignal ?? CommandError.DEFAULT_EXIT_CODE;\n }\n\n private static createMessage(command: string, options: CommandErrorOptions) {\n const suffix = options.originalMessage ? `: ${options.originalMessage}` : '';\n\n if (options.exitCode === undefined && options.signal === undefined) {\n return `Command '${command}' failed${suffix}`;\n }\n\n const prefix = `Command '${command}' exited `;\n const infix = options.exitCode === undefined ? `after signal ${options.signal}` : `with code ${options.exitCode}`;\n\n return `${prefix}${infix}${suffix}`;\n }\n}\n\nexport async function runCommand(command: string, commandArguments: string[]) {\n const { execa: $, ExecaError } = await importExeca();\n\n try {\n await $(command, commandArguments, { stdio: 'inherit' });\n } catch (error) {\n /* istanbul ignore if -- @preserve\n * This is a safeguard if the error is not an ExecaError. It is not expected to run. */\n if (!(error instanceof ExecaError)) {\n throw error;\n }\n\n const commandError = new CommandError(command, {\n command: [command, ...commandArguments],\n exitCode: error.exitCode,\n signal: error.signal,\n originalMessage: error.originalMessage,\n });\n\n throw commandError;\n }\n}\n","import color from 'picocolors';\n\nimport { InterceptorServer, createInterceptorServer } from '@/server';\nimport { InterceptorServerOptions } from '@/server/types/options';\nimport { logger } from '@/utils/logging';\nimport {\n CommandError,\n PROCESS_EXIT_CODE_BY_EXIT_EVENT,\n PROCESS_EXIT_EVENTS,\n ProcessExitEvent,\n runCommand,\n} from '@/utils/processes';\n\ninterface InterceptorServerStartOptions extends InterceptorServerOptions {\n ephemeral: boolean;\n onReady?: { command: string; arguments: string[] };\n}\n\nexport let serverSingleton: InterceptorServer | undefined;\n\nasync function startInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n ephemeral,\n onReady,\n}: InterceptorServerStartOptions) {\n const server = createInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n });\n\n async function handleExitEvent(exitEvent: ProcessExitEvent | undefined) {\n await server.stop();\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.off(exitEvent, exitHandler);\n }\n\n const exitCode = exitEvent ? PROCESS_EXIT_CODE_BY_EXIT_EVENT[exitEvent] : undefined;\n if (exitCode !== undefined) {\n process.exit(exitCode);\n }\n }\n\n const exitHandlerGroups = PROCESS_EXIT_EVENTS.map((exitEvent) => ({\n exitEvent,\n exitHandler: handleExitEvent.bind(null, exitEvent),\n }));\n\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.on(exitEvent, exitHandler);\n }\n\n serverSingleton = server;\n\n await server.start();\n\n logger.info(\n `${ephemeral ? 'Ephemeral s' : 'S'}erver is running on ${color.yellow(`${server.hostname}:${server.port}`)}`,\n );\n\n const isDangerouslyUnprotected = !tokensDirectory && process.env.NODE_ENV === 'production';\n\n if (isDangerouslyUnprotected) {\n logger.warn(\n [\n `Attention: this interceptor server is ${color.bold(color.red('unprotected'))}. Do not expose it publicly without authentication.`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n }\n\n if (onReady) {\n try {\n await runCommand(onReady.command, onReady.arguments);\n } catch (error) {\n console.error(error);\n\n /* istanbul ignore if -- @preserve\n * A CommandError is always expected here. */\n if (!(error instanceof CommandError)) {\n throw error;\n }\n\n process.exit(error.exitCode);\n }\n }\n\n if (ephemeral) {\n await handleExitEvent(undefined);\n process.exit(0);\n }\n}\n\nexport default startInterceptorServer;\n","import color from 'picocolors';\n\nimport { createInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenName?: string;\n tokensDirectory: string;\n}\n\nexport async function createInterceptorServerToken({\n tokenName,\n tokensDirectory,\n}: InterceptorServerCreateTokenOptions) {\n const token = await createInterceptorToken({ name: tokenName, tokensDirectory });\n\n logger.info(\n [\n `${color.green(color.bold('✔'))} Token${tokenName ? ` ${color.green(tokenName)}` : ''} created:`,\n '',\n color.yellow(token.value),\n '',\n 'Store this token securely. It cannot be retrieved later.',\n '',\n `To enable authentication in your interceptor server, use the ${color.cyan('--tokens-dir')} option. Only ` +\n 'remote interceptors bearing a valid token will be allowed to connect.',\n '',\n `${color.dim('$')} zimic-interceptor server start ${color.cyan('--tokens-dir')} ${color.magenta(tokensDirectory)}`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n}\n","import { listInterceptorTokens } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerListTokensOptions {\n tokensDirectory: string;\n}\n\nexport async function listInterceptorServerTokens({ tokensDirectory }: InterceptorServerListTokensOptions) {\n const tokens = await listInterceptorTokens({ tokensDirectory });\n\n logger.raw.table(\n [\n { title: 'ID', property: 'id' },\n { title: 'NAME', property: 'name' },\n { title: 'CREATED AT', property: 'createdAt' },\n ],\n tokens.map((token) => ({\n id: token.id,\n name: token.name ?? '',\n createdAt: token.createdAt.toISOString(),\n })),\n );\n}\n","import color from 'picocolors';\n\nimport { readInterceptorTokenFromFile, removeInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenId: string;\n tokensDirectory: string;\n}\n\nexport async function removeInterceptorServerToken({ tokenId, tokensDirectory }: InterceptorServerCreateTokenOptions) {\n const token = await readInterceptorTokenFromFile(tokenId, { tokensDirectory });\n\n if (!token) {\n logger.error(`${color.red(color.bold('✘'))} Token ${color.red(tokenId)} not found.`);\n process.exit(1);\n }\n\n await removeInterceptorToken(token.id, { tokensDirectory });\n\n logger.info(`${color.green(color.bold('✔'))} Token ${color.green(token.name ?? token.id)} removed.`);\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { version } from '@@/package.json';\n\nimport { DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY } from '../server/utils/auth';\nimport initializeBrowserServiceWorker from './browser/init';\nimport startInterceptorServer from './server/start';\nimport { createInterceptorServerToken } from './server/token/create';\nimport { listInterceptorServerTokens } from './server/token/list';\nimport { removeInterceptorServerToken } from './server/token/remove';\n\nasync function runCLI() {\n await yargs(hideBin(process.argv))\n .scriptName('zimic-interceptor')\n .version(version)\n .showHelpOnFail(false)\n .strict()\n\n .command('browser', 'Manage your browser mock configuration.', (yargs) =>\n yargs.demandCommand().command(\n 'init <publicDirectory>',\n 'Initialize the browser service worker configuration.',\n (yargs) =>\n yargs.positional('publicDirectory', {\n type: 'string',\n description: 'The path to the public directory of your application.',\n demandOption: true,\n }),\n async (cliArguments) => {\n await initializeBrowserServiceWorker({\n publicDirectory: cliArguments.publicDirectory,\n });\n },\n ),\n )\n\n .command('server', 'Manage interceptor servers.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'start [-- onReady]',\n 'Start an interceptor server.',\n (yargs) =>\n yargs\n .positional('onReady', {\n description: 'A command to run when the server is ready to accept connections.',\n type: 'string',\n })\n .option('hostname', {\n type: 'string',\n description: 'The hostname to start the server on.',\n alias: 'h',\n default: 'localhost',\n })\n .option('port', {\n type: 'number',\n description: 'The port to start the server on.',\n alias: 'p',\n })\n .option('ephemeral', {\n type: 'boolean',\n description:\n 'Whether the server should stop automatically after the on-ready command finishes. ' +\n 'If no on-ready command is provided and ephemeral is true, the server will stop immediately after ' +\n 'starting.',\n alias: 'e',\n default: false,\n })\n .option('log-unhandled-requests', {\n type: 'boolean',\n description:\n 'Whether to log a warning when no interceptors were found for the base URL of a request. ' +\n 'If an interceptor was matched, the logging behavior for that base URL is configured in the ' +\n 'interceptor itself.',\n alias: 'l',\n })\n .option('tokens-dir', {\n type: 'string',\n description:\n 'The directory where the authorized interceptor authentication tokens are saved. If provided, only ' +\n 'remote interceptors bearing a valid token will be accepted. This option is essential if you are ' +\n 'exposing your interceptor server publicly. For local development and testing, though, ' +\n '`--tokens-dir` is optional.',\n alias: 't',\n }),\n async (cliArguments) => {\n const onReadyCommand = cliArguments._.at(2)?.toString();\n const onReadyCommandArguments = cliArguments._.slice(3).map((argument) => argument.toString());\n\n await startInterceptorServer({\n hostname: cliArguments.hostname,\n port: cliArguments.port,\n ephemeral: cliArguments.ephemeral,\n logUnhandledRequests: cliArguments.logUnhandledRequests,\n tokensDirectory: cliArguments.tokensDir,\n onReady: onReadyCommand\n ? {\n command: onReadyCommand.toString(),\n arguments: onReadyCommandArguments,\n }\n : undefined,\n });\n },\n )\n\n .command('token', 'Manage remote interceptor authentication tokens.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'create',\n 'Create an interceptor token.',\n (yargs) =>\n yargs\n .option('name', {\n type: 'string',\n description: 'The name of the token to create.',\n alias: 'n',\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the created interceptor token will be saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await createInterceptorServerToken({\n tokenName: cliArguments.name,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['ls', 'list'],\n 'List the authorized interceptor tokens.',\n (yargs) =>\n yargs.option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await listInterceptorServerTokens({\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['rm <tokenId>', 'remove <tokenId>'],\n 'Remove (invalidate) an interceptor token. Existing connections will not be affected, so restarting the ' +\n 'server is recommended to disconnect all interceptors.',\n (yargs) =>\n yargs\n .positional('tokenId', {\n type: 'string',\n description: 'The identifier of the token to remove.',\n demandOption: true,\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await removeInterceptorServerToken({\n tokenId: cliArguments.tokenId,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n ),\n ),\n )\n\n .parse();\n}\n\nexport default runCLI;\n","#!/usr/bin/env node\nimport runCLI from './cli';\n\nvoid runCLI();\n"]}
1
+ {"version":3,"sources":["../package.json","../src/cli/browser/shared/constants.ts","../src/cli/browser/init.ts","../src/utils/processes.ts","../src/cli/server/start.ts","../src/cli/server/token/create.ts","../src/cli/server/token/list.ts","../src/cli/server/token/remove.ts","../src/cli/cli.ts","../src/cli/index.ts"],"names":["path","__require","fs","logger","color","__name","createCachedDynamicImport_default","createInterceptorServer","exitEvent","createInterceptorToken","listInterceptorTokens","readInterceptorTokenFromFile","removeInterceptorToken","yargs","hideBin","DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY"],"mappings":"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","file":"cli.js","sourcesContent":["{\n \"name\": \"@zimic/interceptor\",\n \"description\": \"Next-gen, TypeScript-first HTTP intercepting and mocking\",\n \"keywords\": [\n \"zimic\",\n \"typescript\",\n \"types\",\n \"typegen\",\n \"validation\",\n \"inference\",\n \"http\",\n \"interceptor\",\n \"mock\",\n \"api\",\n \"static\"\n ],\n \"version\": \"0.17.1-canary.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/zimicjs/zimic.git\",\n \"directory\": \"packages/zimic-interceptor\"\n },\n \"author\": {\n \"name\": \"Diego Aquino\",\n \"url\": \"https://github.com/diego-aquino\"\n },\n \"private\": false,\n \"publishConfig\": {\n \"access\": \"public\",\n \"provenance\": true\n },\n \"engines\": {\n \"node\": \">=18.13.0\"\n },\n \"license\": \"MIT\",\n \"files\": [\n \"package.json\",\n \"README.md\",\n \"LICENSE.md\",\n \"src\",\n \"!src/**/tests\",\n \"!src/**/__tests__\",\n \"!src/**/*.test.ts\",\n \"dist\",\n \"index.d.ts\",\n \"http.d.ts\",\n \"server.d.ts\"\n ],\n \"sideEffects\": false,\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"index.d.ts\",\n \"bin\": {\n \"zimic-interceptor\": \"./dist/cli.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./http\": {\n \"types\": \"./http.d.ts\",\n \"import\": \"./dist/http.mjs\",\n \"require\": \"./dist/http.js\",\n \"default\": \"./dist/http.js\"\n },\n \"./server\": {\n \"types\": \"./server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.js\",\n \"default\": \"./dist/server.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"cli\": \"node --enable-source-maps ./dist/cli.js\",\n \"build\": \"tsup\",\n \"lint\": \"eslint --cache --no-error-on-unmatched-pattern --no-warn-ignored --fix\",\n \"lint:turbo\": \"pnpm lint . --max-warnings 0\",\n \"style\": \"prettier --log-level warn --ignore-unknown --no-error-on-unmatched-pattern --cache\",\n \"style:check\": \"pnpm style --check\",\n \"style:format\": \"pnpm style --write\",\n \"test\": \"dotenv -v NODE_ENV=test -v FORCE_COLOR=1 -- vitest\",\n \"test:turbo\": \"dotenv -v CI=true -- pnpm run test run --coverage\",\n \"types:check\": \"tsc --noEmit\",\n \"deps:install-playwright\": \"playwright install chromium\",\n \"deps:init-msw\": \"msw init ./public --no-save\",\n \"deps:init\": \"pnpm deps:install-playwright && pnpm deps:init-msw\",\n \"postinstall\": \"node --enable-source-maps -e \\\"try{require('./dist/scripts/postinstall')}catch(error){console.error(error)}\\\"\"\n },\n \"dependencies\": {\n \"@whatwg-node/server\": \"0.10.3\",\n \"execa\": \"9.5.2\",\n \"isomorphic-ws\": \"5.0.0\",\n \"msw\": \"2.7.3\",\n \"picocolors\": \"^1.1.1\",\n \"ws\": \"8.18.1\",\n \"yargs\": \"17.7.2\",\n \"zod\": \"^3.24.2\"\n },\n \"optionalDependencies\": {\n \"bufferutil\": \"4.0.9\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.14.0\",\n \"@types/ws\": \"^8.18.1\",\n \"@types/yargs\": \"^17.0.33\",\n \"@vitest/browser\": \"^3.1.1\",\n \"@vitest/coverage-istanbul\": \"^3.1.1\",\n \"@zimic/eslint-config-node\": \"workspace:*\",\n \"@zimic/lint-staged-config\": \"workspace:*\",\n \"@zimic/tsconfig\": \"workspace:*\",\n \"@zimic/utils\": \"workspace:*\",\n \"dotenv-cli\": \"^8.0.0\",\n \"eslint\": \"^9.24.0\",\n \"playwright\": \"^1.51.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"peerDependencies\": {\n \"@zimic/http\": \"^0.3.0 || ^0.3.0-canary.0\",\n \"typescript\": \">=4.8.0\"\n },\n \"peerDependenciesMeta\": {\n \"typescript\": {\n \"optional\": true\n }\n }\n}\n","export const SERVICE_WORKER_FILE_NAME = 'mockServiceWorker.js';\n","import fs from 'fs';\nimport path from 'path';\nimport color from 'picocolors';\n\nimport { logger } from '@/utils/logging';\n\nimport { SERVICE_WORKER_FILE_NAME } from './shared/constants';\n\nconst MSW_ROOT_PATH = path.join(require.resolve('msw'), '..', '..', '..');\nexport const MOCK_SERVICE_WORKER_PATH = path.join(MSW_ROOT_PATH, 'lib', SERVICE_WORKER_FILE_NAME);\n\ninterface BrowserServiceWorkerInitOptions {\n publicDirectory: string;\n}\n\nasync function initializeBrowserServiceWorker({ publicDirectory }: BrowserServiceWorkerInitOptions) {\n const absolutePublicDirectory = path.resolve(publicDirectory);\n await fs.promises.mkdir(absolutePublicDirectory, { recursive: true });\n\n const destinationPath = path.join(absolutePublicDirectory, SERVICE_WORKER_FILE_NAME);\n await fs.promises.copyFile(MOCK_SERVICE_WORKER_PATH, destinationPath);\n\n logger.info(`Service worker script saved to ${color.magenta(destinationPath)}.`);\n}\n\nexport default initializeBrowserServiceWorker;\n","import createCachedDynamicImport from '@zimic/utils/import/createCachedDynamicImport';\n\nexport const PROCESS_EXIT_EVENTS = Object.freeze([\n 'beforeExit',\n 'uncaughtExceptionMonitor',\n 'SIGINT',\n 'SIGTERM',\n 'SIGHUP',\n 'SIGBREAK',\n] as const);\n\nexport type ProcessExitEvent = (typeof PROCESS_EXIT_EVENTS)[number];\n\n// Having an undefined exit code means that the process will already exit with the default exit code.\nexport const PROCESS_EXIT_CODE_BY_EXIT_EVENT: Record<string, number | undefined> = {\n beforeExit: undefined,\n uncaughtExceptionMonitor: undefined,\n SIGINT: 130,\n SIGTERM: 143,\n SIGHUP: 129,\n SIGBREAK: 131,\n} satisfies Record<ProcessExitEvent, number | undefined>;\n\nexport const importExeca = createCachedDynamicImport(() => import('execa'));\n\ninterface CommandErrorOptions {\n command?: string[];\n exitCode?: number;\n signal?: NodeJS.Signals;\n originalMessage?: string;\n}\n\nexport class CommandError extends Error {\n static readonly DEFAULT_EXIT_CODE = 1;\n\n readonly command: string[];\n readonly exitCode: number;\n readonly signal?: NodeJS.Signals;\n\n constructor(executable: string, options: CommandErrorOptions) {\n const message = CommandError.createMessage(executable, options);\n super(message);\n\n this.name = 'CommandError';\n this.command = options.command ?? [executable];\n this.exitCode = this.getExitCode(options);\n this.signal = options.signal;\n }\n\n private getExitCode(options: CommandErrorOptions): number {\n const existingExitCode = options.exitCode;\n const exitCodeInferredFromSignal =\n options.signal === undefined ? undefined : PROCESS_EXIT_CODE_BY_EXIT_EVENT[options.signal];\n\n return existingExitCode ?? exitCodeInferredFromSignal ?? CommandError.DEFAULT_EXIT_CODE;\n }\n\n private static createMessage(command: string, options: CommandErrorOptions) {\n const suffix = options.originalMessage ? `: ${options.originalMessage}` : '';\n\n if (options.exitCode === undefined && options.signal === undefined) {\n return `Command '${command}' failed${suffix}`;\n }\n\n const prefix = `Command '${command}' exited `;\n const infix = options.exitCode === undefined ? `after signal ${options.signal}` : `with code ${options.exitCode}`;\n\n return `${prefix}${infix}${suffix}`;\n }\n}\n\nexport async function runCommand(command: string, commandArguments: string[]) {\n const { execa: $, ExecaError } = await importExeca();\n\n try {\n await $(command, commandArguments, { stdio: 'inherit' });\n } catch (error) {\n /* istanbul ignore if -- @preserve\n * This is a safeguard if the error is not an ExecaError. It is not expected to run. */\n if (!(error instanceof ExecaError)) {\n throw error;\n }\n\n const commandError = new CommandError(command, {\n command: [command, ...commandArguments],\n exitCode: error.exitCode,\n signal: error.signal,\n originalMessage: error.originalMessage,\n });\n\n throw commandError;\n }\n}\n","import color from 'picocolors';\n\nimport { InterceptorServer, createInterceptorServer } from '@/server';\nimport { InterceptorServerOptions } from '@/server/types/options';\nimport { logger } from '@/utils/logging';\nimport {\n CommandError,\n PROCESS_EXIT_CODE_BY_EXIT_EVENT,\n PROCESS_EXIT_EVENTS,\n ProcessExitEvent,\n runCommand,\n} from '@/utils/processes';\n\ninterface InterceptorServerStartOptions extends InterceptorServerOptions {\n ephemeral: boolean;\n onReady?: { command: string; arguments: string[] };\n}\n\nexport let serverSingleton: InterceptorServer | undefined;\n\nasync function startInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n ephemeral,\n onReady,\n}: InterceptorServerStartOptions) {\n const server = createInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n });\n\n async function handleExitEvent(exitEvent: ProcessExitEvent | undefined) {\n await server.stop();\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.off(exitEvent, exitHandler);\n }\n\n const exitCode = exitEvent ? PROCESS_EXIT_CODE_BY_EXIT_EVENT[exitEvent] : undefined;\n if (exitCode !== undefined) {\n process.exit(exitCode);\n }\n }\n\n const exitHandlerGroups = PROCESS_EXIT_EVENTS.map((exitEvent) => ({\n exitEvent,\n exitHandler: handleExitEvent.bind(null, exitEvent),\n }));\n\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.on(exitEvent, exitHandler);\n }\n\n serverSingleton = server;\n\n await server.start();\n\n logger.info(\n `${ephemeral ? 'Ephemeral s' : 'S'}erver is running on ${color.yellow(`${server.hostname}:${server.port}`)}`,\n );\n\n const isDangerouslyUnprotected = !tokensDirectory && process.env.NODE_ENV === 'production';\n\n if (isDangerouslyUnprotected) {\n logger.warn(\n [\n `Attention: this interceptor server is ${color.bold(color.red('unprotected'))}. Do not expose it publicly without authentication.`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n }\n\n if (onReady) {\n try {\n await runCommand(onReady.command, onReady.arguments);\n } catch (error) {\n console.error(error);\n\n /* istanbul ignore if -- @preserve\n * A CommandError is always expected here. */\n if (!(error instanceof CommandError)) {\n throw error;\n }\n\n process.exit(error.exitCode);\n }\n }\n\n if (ephemeral) {\n await handleExitEvent(undefined);\n process.exit(0);\n }\n}\n\nexport default startInterceptorServer;\n","import color from 'picocolors';\n\nimport { createInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenName?: string;\n tokensDirectory: string;\n}\n\nexport async function createInterceptorServerToken({\n tokenName,\n tokensDirectory,\n}: InterceptorServerCreateTokenOptions) {\n const token = await createInterceptorToken({ name: tokenName, tokensDirectory });\n\n logger.info(\n [\n `${color.green(color.bold('✔'))} Token${tokenName ? ` ${color.green(tokenName)}` : ''} created:`,\n '',\n color.yellow(token.value),\n '',\n 'Store this token securely. It cannot be retrieved later.',\n '',\n `To enable authentication in your interceptor server, use the ${color.cyan('--tokens-dir')} option. Only ` +\n 'remote interceptors bearing a valid token will be allowed to connect.',\n '',\n `${color.dim('$')} zimic-interceptor server start ${color.cyan('--tokens-dir')} ${color.magenta(tokensDirectory)}`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n}\n","import { listInterceptorTokens } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerListTokensOptions {\n tokensDirectory: string;\n}\n\nexport async function listInterceptorServerTokens({ tokensDirectory }: InterceptorServerListTokensOptions) {\n const tokens = await listInterceptorTokens({ tokensDirectory });\n\n logger.raw.table(\n [\n { title: 'ID', property: 'id' },\n { title: 'NAME', property: 'name' },\n { title: 'CREATED AT', property: 'createdAt' },\n ],\n tokens.map((token) => ({\n id: token.id,\n name: token.name ?? '',\n createdAt: token.createdAt.toISOString(),\n })),\n );\n}\n","import color from 'picocolors';\n\nimport { readInterceptorTokenFromFile, removeInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenId: string;\n tokensDirectory: string;\n}\n\nexport async function removeInterceptorServerToken({ tokenId, tokensDirectory }: InterceptorServerCreateTokenOptions) {\n const token = await readInterceptorTokenFromFile(tokenId, { tokensDirectory });\n\n if (!token) {\n logger.error(`${color.red(color.bold('✘'))} Token ${color.red(tokenId)} not found.`);\n process.exit(1);\n }\n\n await removeInterceptorToken(token.id, { tokensDirectory });\n\n logger.info(`${color.green(color.bold('✔'))} Token ${color.green(token.name ?? token.id)} removed.`);\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { version } from '@@/package.json';\n\nimport { DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY } from '../server/utils/auth';\nimport initializeBrowserServiceWorker from './browser/init';\nimport startInterceptorServer from './server/start';\nimport { createInterceptorServerToken } from './server/token/create';\nimport { listInterceptorServerTokens } from './server/token/list';\nimport { removeInterceptorServerToken } from './server/token/remove';\n\nasync function runCLI() {\n await yargs(hideBin(process.argv))\n .scriptName('zimic-interceptor')\n .version(version)\n .showHelpOnFail(false)\n .strict()\n\n .command('browser', 'Manage your browser mock configuration.', (yargs) =>\n yargs.demandCommand().command(\n 'init <publicDirectory>',\n 'Initialize the browser service worker configuration.',\n (yargs) =>\n yargs.positional('publicDirectory', {\n type: 'string',\n description: 'The path to the public directory of your application.',\n demandOption: true,\n }),\n async (cliArguments) => {\n await initializeBrowserServiceWorker({\n publicDirectory: cliArguments.publicDirectory,\n });\n },\n ),\n )\n\n .command('server', 'Manage interceptor servers.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'start [-- onReady]',\n 'Start an interceptor server.',\n (yargs) =>\n yargs\n .positional('onReady', {\n description: 'A command to run when the server is ready to accept connections.',\n type: 'string',\n })\n .option('hostname', {\n type: 'string',\n description: 'The hostname to start the server on.',\n alias: 'h',\n default: 'localhost',\n })\n .option('port', {\n type: 'number',\n description: 'The port to start the server on.',\n alias: 'p',\n })\n .option('ephemeral', {\n type: 'boolean',\n description:\n 'Whether the server should stop automatically after the on-ready command finishes. ' +\n 'If no on-ready command is provided and ephemeral is true, the server will stop immediately after ' +\n 'starting.',\n alias: 'e',\n default: false,\n })\n .option('log-unhandled-requests', {\n type: 'boolean',\n description:\n 'Whether to log a warning when no interceptors were found for the base URL of a request. ' +\n 'If an interceptor was matched, the logging behavior for that base URL is configured in the ' +\n 'interceptor itself.',\n alias: 'l',\n })\n .option('tokens-dir', {\n type: 'string',\n description:\n 'The directory where the authorized interceptor authentication tokens are saved. If provided, only ' +\n 'remote interceptors bearing a valid token will be accepted. This option is essential if you are ' +\n 'exposing your interceptor server publicly. For local development and testing, though, ' +\n '`--tokens-dir` is optional.',\n alias: 't',\n }),\n async (cliArguments) => {\n const onReadyCommand = cliArguments._.at(2)?.toString();\n const onReadyCommandArguments = cliArguments._.slice(3).map((argument) => argument.toString());\n\n await startInterceptorServer({\n hostname: cliArguments.hostname,\n port: cliArguments.port,\n ephemeral: cliArguments.ephemeral,\n logUnhandledRequests: cliArguments.logUnhandledRequests,\n tokensDirectory: cliArguments.tokensDir,\n onReady: onReadyCommand\n ? {\n command: onReadyCommand.toString(),\n arguments: onReadyCommandArguments,\n }\n : undefined,\n });\n },\n )\n\n .command('token', 'Manage remote interceptor authentication tokens.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'create',\n 'Create an interceptor token.',\n (yargs) =>\n yargs\n .option('name', {\n type: 'string',\n description: 'The name of the token to create.',\n alias: 'n',\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the created interceptor token will be saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await createInterceptorServerToken({\n tokenName: cliArguments.name,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['ls', 'list'],\n 'List the authorized interceptor tokens.',\n (yargs) =>\n yargs.option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await listInterceptorServerTokens({\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['rm <tokenId>', 'remove <tokenId>'],\n 'Remove (invalidate) an interceptor token. Existing connections will not be affected, so restarting the ' +\n 'server is recommended to disconnect all interceptors.',\n (yargs) =>\n yargs\n .positional('tokenId', {\n type: 'string',\n description: 'The identifier of the token to remove.',\n demandOption: true,\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await removeInterceptorServerToken({\n tokenId: cliArguments.tokenId,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n ),\n ),\n )\n\n .parse();\n}\n\nexport default runCLI;\n","#!/usr/bin/env node\nimport runCLI from './cli';\n\nvoid runCLI();\n"]}
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { createCachedDynamicImport_default, logger, createInterceptorServer, createInterceptorToken, listInterceptorTokens, readInterceptorTokenFromFile, removeInterceptorToken, DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY } from './chunk-I3RXOTN5.mjs';
2
+ import { createCachedDynamicImport_default, logger, createInterceptorServer, createInterceptorToken, listInterceptorTokens, readInterceptorTokenFromFile, removeInterceptorToken, DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY } from './chunk-2JEHCG37.mjs';
3
3
  import { __require, __name } from './chunk-CGILA3WO.mjs';
4
4
  import yargs from 'yargs';
5
5
  import { hideBin } from 'yargs/helpers';
@@ -8,7 +8,7 @@ import path from 'path';
8
8
  import color3 from 'picocolors';
9
9
 
10
10
  // package.json
11
- var version = "0.17.0";
11
+ var version = "0.17.1-canary.0";
12
12
 
13
13
  // src/cli/browser/shared/constants.ts
14
14
  var SERVICE_WORKER_FILE_NAME = "mockServiceWorker.js";
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/cli/browser/shared/constants.ts","../src/cli/browser/init.ts","../src/utils/processes.ts","../src/cli/server/start.ts","../src/cli/server/token/create.ts","../src/cli/server/token/list.ts","../src/cli/server/token/remove.ts","../src/cli/cli.ts","../src/cli/index.ts"],"names":["color","exitEvent","yargs"],"mappings":"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","file":"cli.mjs","sourcesContent":["{\n \"name\": \"@zimic/interceptor\",\n \"description\": \"Next-gen, TypeScript-first HTTP intercepting and mocking\",\n \"keywords\": [\n \"zimic\",\n \"typescript\",\n \"types\",\n \"typegen\",\n \"validation\",\n \"inference\",\n \"http\",\n \"interceptor\",\n \"mock\",\n \"api\",\n \"static\"\n ],\n \"version\": \"0.17.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/zimicjs/zimic.git\",\n \"directory\": \"packages/zimic-interceptor\"\n },\n \"author\": {\n \"name\": \"Diego Aquino\",\n \"url\": \"https://github.com/diego-aquino\"\n },\n \"private\": false,\n \"publishConfig\": {\n \"access\": \"public\",\n \"provenance\": true\n },\n \"engines\": {\n \"node\": \">=18.13.0\"\n },\n \"license\": \"MIT\",\n \"files\": [\n \"package.json\",\n \"README.md\",\n \"LICENSE.md\",\n \"src\",\n \"!src/**/tests\",\n \"!src/**/__tests__\",\n \"!src/**/*.test.ts\",\n \"dist\",\n \"index.d.ts\",\n \"http.d.ts\",\n \"server.d.ts\"\n ],\n \"sideEffects\": false,\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"index.d.ts\",\n \"bin\": {\n \"zimic-interceptor\": \"./dist/cli.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./http\": {\n \"types\": \"./http.d.ts\",\n \"import\": \"./dist/http.mjs\",\n \"require\": \"./dist/http.js\",\n \"default\": \"./dist/http.js\"\n },\n \"./server\": {\n \"types\": \"./server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.js\",\n \"default\": \"./dist/server.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"cli\": \"node --enable-source-maps ./dist/cli.js\",\n \"build\": \"tsup\",\n \"lint\": \"eslint --cache --no-error-on-unmatched-pattern --no-warn-ignored --fix\",\n \"lint:turbo\": \"pnpm lint . --max-warnings 0\",\n \"style\": \"prettier --log-level warn --ignore-unknown --no-error-on-unmatched-pattern --cache\",\n \"style:check\": \"pnpm style --check\",\n \"style:format\": \"pnpm style --write\",\n \"test\": \"dotenv -v NODE_ENV=test -v FORCE_COLOR=1 -- vitest\",\n \"test:turbo\": \"dotenv -v CI=true -- pnpm run test run --coverage\",\n \"types:check\": \"tsc --noEmit\",\n \"deps:install-playwright\": \"playwright install chromium\",\n \"deps:init-msw\": \"msw init ./public --no-save\",\n \"deps:init\": \"pnpm deps:install-playwright && pnpm deps:init-msw\",\n \"postinstall\": \"node --enable-source-maps -e \\\"try{require('./dist/scripts/postinstall')}catch(error){console.error(error)}\\\"\"\n },\n \"dependencies\": {\n \"@whatwg-node/server\": \"0.10.3\",\n \"execa\": \"9.5.2\",\n \"isomorphic-ws\": \"5.0.0\",\n \"msw\": \"2.7.3\",\n \"picocolors\": \"^1.1.1\",\n \"ws\": \"8.18.1\",\n \"yargs\": \"17.7.2\",\n \"zod\": \"^3.24.2\"\n },\n \"optionalDependencies\": {\n \"bufferutil\": \"4.0.9\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.14.0\",\n \"@types/ws\": \"^8.18.1\",\n \"@types/yargs\": \"^17.0.33\",\n \"@vitest/browser\": \"^3.1.1\",\n \"@vitest/coverage-istanbul\": \"^3.1.1\",\n \"@zimic/eslint-config-node\": \"workspace:*\",\n \"@zimic/lint-staged-config\": \"workspace:*\",\n \"@zimic/tsconfig\": \"workspace:*\",\n \"@zimic/utils\": \"workspace:*\",\n \"dotenv-cli\": \"^8.0.0\",\n \"eslint\": \"^9.24.0\",\n \"playwright\": \"^1.51.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"peerDependencies\": {\n \"@zimic/http\": \"^0.3.0 || ^0.3.0-canary.0\",\n \"typescript\": \">=4.8.0\"\n },\n \"peerDependenciesMeta\": {\n \"typescript\": {\n \"optional\": true\n }\n }\n}\n","export const SERVICE_WORKER_FILE_NAME = 'mockServiceWorker.js';\n","import fs from 'fs';\nimport path from 'path';\nimport color from 'picocolors';\n\nimport { logger } from '@/utils/logging';\n\nimport { SERVICE_WORKER_FILE_NAME } from './shared/constants';\n\nconst MSW_ROOT_PATH = path.join(require.resolve('msw'), '..', '..', '..');\nexport const MOCK_SERVICE_WORKER_PATH = path.join(MSW_ROOT_PATH, 'lib', SERVICE_WORKER_FILE_NAME);\n\ninterface BrowserServiceWorkerInitOptions {\n publicDirectory: string;\n}\n\nasync function initializeBrowserServiceWorker({ publicDirectory }: BrowserServiceWorkerInitOptions) {\n const absolutePublicDirectory = path.resolve(publicDirectory);\n await fs.promises.mkdir(absolutePublicDirectory, { recursive: true });\n\n const destinationPath = path.join(absolutePublicDirectory, SERVICE_WORKER_FILE_NAME);\n await fs.promises.copyFile(MOCK_SERVICE_WORKER_PATH, destinationPath);\n\n logger.info(`Service worker script saved to ${color.magenta(destinationPath)}.`);\n}\n\nexport default initializeBrowserServiceWorker;\n","import createCachedDynamicImport from '@zimic/utils/import/createCachedDynamicImport';\n\nexport const PROCESS_EXIT_EVENTS = Object.freeze([\n 'beforeExit',\n 'uncaughtExceptionMonitor',\n 'SIGINT',\n 'SIGTERM',\n 'SIGHUP',\n 'SIGBREAK',\n] as const);\n\nexport type ProcessExitEvent = (typeof PROCESS_EXIT_EVENTS)[number];\n\n// Having an undefined exit code means that the process will already exit with the default exit code.\nexport const PROCESS_EXIT_CODE_BY_EXIT_EVENT: Record<string, number | undefined> = {\n beforeExit: undefined,\n uncaughtExceptionMonitor: undefined,\n SIGINT: 130,\n SIGTERM: 143,\n SIGHUP: 129,\n SIGBREAK: 131,\n} satisfies Record<ProcessExitEvent, number | undefined>;\n\nexport const importExeca = createCachedDynamicImport(() => import('execa'));\n\ninterface CommandErrorOptions {\n command?: string[];\n exitCode?: number;\n signal?: NodeJS.Signals;\n originalMessage?: string;\n}\n\nexport class CommandError extends Error {\n static readonly DEFAULT_EXIT_CODE = 1;\n\n readonly command: string[];\n readonly exitCode: number;\n readonly signal?: NodeJS.Signals;\n\n constructor(executable: string, options: CommandErrorOptions) {\n const message = CommandError.createMessage(executable, options);\n super(message);\n\n this.name = 'CommandError';\n this.command = options.command ?? [executable];\n this.exitCode = this.getExitCode(options);\n this.signal = options.signal;\n }\n\n private getExitCode(options: CommandErrorOptions): number {\n const existingExitCode = options.exitCode;\n const exitCodeInferredFromSignal =\n options.signal === undefined ? undefined : PROCESS_EXIT_CODE_BY_EXIT_EVENT[options.signal];\n\n return existingExitCode ?? exitCodeInferredFromSignal ?? CommandError.DEFAULT_EXIT_CODE;\n }\n\n private static createMessage(command: string, options: CommandErrorOptions) {\n const suffix = options.originalMessage ? `: ${options.originalMessage}` : '';\n\n if (options.exitCode === undefined && options.signal === undefined) {\n return `Command '${command}' failed${suffix}`;\n }\n\n const prefix = `Command '${command}' exited `;\n const infix = options.exitCode === undefined ? `after signal ${options.signal}` : `with code ${options.exitCode}`;\n\n return `${prefix}${infix}${suffix}`;\n }\n}\n\nexport async function runCommand(command: string, commandArguments: string[]) {\n const { execa: $, ExecaError } = await importExeca();\n\n try {\n await $(command, commandArguments, { stdio: 'inherit' });\n } catch (error) {\n /* istanbul ignore if -- @preserve\n * This is a safeguard if the error is not an ExecaError. It is not expected to run. */\n if (!(error instanceof ExecaError)) {\n throw error;\n }\n\n const commandError = new CommandError(command, {\n command: [command, ...commandArguments],\n exitCode: error.exitCode,\n signal: error.signal,\n originalMessage: error.originalMessage,\n });\n\n throw commandError;\n }\n}\n","import color from 'picocolors';\n\nimport { InterceptorServer, createInterceptorServer } from '@/server';\nimport { InterceptorServerOptions } from '@/server/types/options';\nimport { logger } from '@/utils/logging';\nimport {\n CommandError,\n PROCESS_EXIT_CODE_BY_EXIT_EVENT,\n PROCESS_EXIT_EVENTS,\n ProcessExitEvent,\n runCommand,\n} from '@/utils/processes';\n\ninterface InterceptorServerStartOptions extends InterceptorServerOptions {\n ephemeral: boolean;\n onReady?: { command: string; arguments: string[] };\n}\n\nexport let serverSingleton: InterceptorServer | undefined;\n\nasync function startInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n ephemeral,\n onReady,\n}: InterceptorServerStartOptions) {\n const server = createInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n });\n\n async function handleExitEvent(exitEvent: ProcessExitEvent | undefined) {\n await server.stop();\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.off(exitEvent, exitHandler);\n }\n\n const exitCode = exitEvent ? PROCESS_EXIT_CODE_BY_EXIT_EVENT[exitEvent] : undefined;\n if (exitCode !== undefined) {\n process.exit(exitCode);\n }\n }\n\n const exitHandlerGroups = PROCESS_EXIT_EVENTS.map((exitEvent) => ({\n exitEvent,\n exitHandler: handleExitEvent.bind(null, exitEvent),\n }));\n\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.on(exitEvent, exitHandler);\n }\n\n serverSingleton = server;\n\n await server.start();\n\n logger.info(\n `${ephemeral ? 'Ephemeral s' : 'S'}erver is running on ${color.yellow(`${server.hostname}:${server.port}`)}`,\n );\n\n const isDangerouslyUnprotected = !tokensDirectory && process.env.NODE_ENV === 'production';\n\n if (isDangerouslyUnprotected) {\n logger.warn(\n [\n `Attention: this interceptor server is ${color.bold(color.red('unprotected'))}. Do not expose it publicly without authentication.`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n }\n\n if (onReady) {\n try {\n await runCommand(onReady.command, onReady.arguments);\n } catch (error) {\n console.error(error);\n\n /* istanbul ignore if -- @preserve\n * A CommandError is always expected here. */\n if (!(error instanceof CommandError)) {\n throw error;\n }\n\n process.exit(error.exitCode);\n }\n }\n\n if (ephemeral) {\n await handleExitEvent(undefined);\n process.exit(0);\n }\n}\n\nexport default startInterceptorServer;\n","import color from 'picocolors';\n\nimport { createInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenName?: string;\n tokensDirectory: string;\n}\n\nexport async function createInterceptorServerToken({\n tokenName,\n tokensDirectory,\n}: InterceptorServerCreateTokenOptions) {\n const token = await createInterceptorToken({ name: tokenName, tokensDirectory });\n\n logger.info(\n [\n `${color.green(color.bold('✔'))} Token${tokenName ? ` ${color.green(tokenName)}` : ''} created:`,\n '',\n color.yellow(token.value),\n '',\n 'Store this token securely. It cannot be retrieved later.',\n '',\n `To enable authentication in your interceptor server, use the ${color.cyan('--tokens-dir')} option. Only ` +\n 'remote interceptors bearing a valid token will be allowed to connect.',\n '',\n `${color.dim('$')} zimic-interceptor server start ${color.cyan('--tokens-dir')} ${color.magenta(tokensDirectory)}`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n}\n","import { listInterceptorTokens } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerListTokensOptions {\n tokensDirectory: string;\n}\n\nexport async function listInterceptorServerTokens({ tokensDirectory }: InterceptorServerListTokensOptions) {\n const tokens = await listInterceptorTokens({ tokensDirectory });\n\n logger.raw.table(\n [\n { title: 'ID', property: 'id' },\n { title: 'NAME', property: 'name' },\n { title: 'CREATED AT', property: 'createdAt' },\n ],\n tokens.map((token) => ({\n id: token.id,\n name: token.name ?? '',\n createdAt: token.createdAt.toISOString(),\n })),\n );\n}\n","import color from 'picocolors';\n\nimport { readInterceptorTokenFromFile, removeInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenId: string;\n tokensDirectory: string;\n}\n\nexport async function removeInterceptorServerToken({ tokenId, tokensDirectory }: InterceptorServerCreateTokenOptions) {\n const token = await readInterceptorTokenFromFile(tokenId, { tokensDirectory });\n\n if (!token) {\n logger.error(`${color.red(color.bold('✘'))} Token ${color.red(tokenId)} not found.`);\n process.exit(1);\n }\n\n await removeInterceptorToken(token.id, { tokensDirectory });\n\n logger.info(`${color.green(color.bold('✔'))} Token ${color.green(token.name ?? token.id)} removed.`);\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { version } from '@@/package.json';\n\nimport { DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY } from '../server/utils/auth';\nimport initializeBrowserServiceWorker from './browser/init';\nimport startInterceptorServer from './server/start';\nimport { createInterceptorServerToken } from './server/token/create';\nimport { listInterceptorServerTokens } from './server/token/list';\nimport { removeInterceptorServerToken } from './server/token/remove';\n\nasync function runCLI() {\n await yargs(hideBin(process.argv))\n .scriptName('zimic-interceptor')\n .version(version)\n .showHelpOnFail(false)\n .strict()\n\n .command('browser', 'Manage your browser mock configuration.', (yargs) =>\n yargs.demandCommand().command(\n 'init <publicDirectory>',\n 'Initialize the browser service worker configuration.',\n (yargs) =>\n yargs.positional('publicDirectory', {\n type: 'string',\n description: 'The path to the public directory of your application.',\n demandOption: true,\n }),\n async (cliArguments) => {\n await initializeBrowserServiceWorker({\n publicDirectory: cliArguments.publicDirectory,\n });\n },\n ),\n )\n\n .command('server', 'Manage interceptor servers.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'start [-- onReady]',\n 'Start an interceptor server.',\n (yargs) =>\n yargs\n .positional('onReady', {\n description: 'A command to run when the server is ready to accept connections.',\n type: 'string',\n })\n .option('hostname', {\n type: 'string',\n description: 'The hostname to start the server on.',\n alias: 'h',\n default: 'localhost',\n })\n .option('port', {\n type: 'number',\n description: 'The port to start the server on.',\n alias: 'p',\n })\n .option('ephemeral', {\n type: 'boolean',\n description:\n 'Whether the server should stop automatically after the on-ready command finishes. ' +\n 'If no on-ready command is provided and ephemeral is true, the server will stop immediately after ' +\n 'starting.',\n alias: 'e',\n default: false,\n })\n .option('log-unhandled-requests', {\n type: 'boolean',\n description:\n 'Whether to log a warning when no interceptors were found for the base URL of a request. ' +\n 'If an interceptor was matched, the logging behavior for that base URL is configured in the ' +\n 'interceptor itself.',\n alias: 'l',\n })\n .option('tokens-dir', {\n type: 'string',\n description:\n 'The directory where the authorized interceptor authentication tokens are saved. If provided, only ' +\n 'remote interceptors bearing a valid token will be accepted. This option is essential if you are ' +\n 'exposing your interceptor server publicly. For local development and testing, though, ' +\n '`--tokens-dir` is optional.',\n alias: 't',\n }),\n async (cliArguments) => {\n const onReadyCommand = cliArguments._.at(2)?.toString();\n const onReadyCommandArguments = cliArguments._.slice(3).map((argument) => argument.toString());\n\n await startInterceptorServer({\n hostname: cliArguments.hostname,\n port: cliArguments.port,\n ephemeral: cliArguments.ephemeral,\n logUnhandledRequests: cliArguments.logUnhandledRequests,\n tokensDirectory: cliArguments.tokensDir,\n onReady: onReadyCommand\n ? {\n command: onReadyCommand.toString(),\n arguments: onReadyCommandArguments,\n }\n : undefined,\n });\n },\n )\n\n .command('token', 'Manage remote interceptor authentication tokens.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'create',\n 'Create an interceptor token.',\n (yargs) =>\n yargs\n .option('name', {\n type: 'string',\n description: 'The name of the token to create.',\n alias: 'n',\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the created interceptor token will be saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await createInterceptorServerToken({\n tokenName: cliArguments.name,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['ls', 'list'],\n 'List the authorized interceptor tokens.',\n (yargs) =>\n yargs.option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await listInterceptorServerTokens({\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['rm <tokenId>', 'remove <tokenId>'],\n 'Remove (invalidate) an interceptor token. Existing connections will not be affected, so restarting the ' +\n 'server is recommended to disconnect all interceptors.',\n (yargs) =>\n yargs\n .positional('tokenId', {\n type: 'string',\n description: 'The identifier of the token to remove.',\n demandOption: true,\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await removeInterceptorServerToken({\n tokenId: cliArguments.tokenId,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n ),\n ),\n )\n\n .parse();\n}\n\nexport default runCLI;\n","#!/usr/bin/env node\nimport runCLI from './cli';\n\nvoid runCLI();\n"]}
1
+ {"version":3,"sources":["../package.json","../src/cli/browser/shared/constants.ts","../src/cli/browser/init.ts","../src/utils/processes.ts","../src/cli/server/start.ts","../src/cli/server/token/create.ts","../src/cli/server/token/list.ts","../src/cli/server/token/remove.ts","../src/cli/cli.ts","../src/cli/index.ts"],"names":["color","exitEvent","yargs"],"mappings":"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","file":"cli.mjs","sourcesContent":["{\n \"name\": \"@zimic/interceptor\",\n \"description\": \"Next-gen, TypeScript-first HTTP intercepting and mocking\",\n \"keywords\": [\n \"zimic\",\n \"typescript\",\n \"types\",\n \"typegen\",\n \"validation\",\n \"inference\",\n \"http\",\n \"interceptor\",\n \"mock\",\n \"api\",\n \"static\"\n ],\n \"version\": \"0.17.1-canary.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/zimicjs/zimic.git\",\n \"directory\": \"packages/zimic-interceptor\"\n },\n \"author\": {\n \"name\": \"Diego Aquino\",\n \"url\": \"https://github.com/diego-aquino\"\n },\n \"private\": false,\n \"publishConfig\": {\n \"access\": \"public\",\n \"provenance\": true\n },\n \"engines\": {\n \"node\": \">=18.13.0\"\n },\n \"license\": \"MIT\",\n \"files\": [\n \"package.json\",\n \"README.md\",\n \"LICENSE.md\",\n \"src\",\n \"!src/**/tests\",\n \"!src/**/__tests__\",\n \"!src/**/*.test.ts\",\n \"dist\",\n \"index.d.ts\",\n \"http.d.ts\",\n \"server.d.ts\"\n ],\n \"sideEffects\": false,\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"index.d.ts\",\n \"bin\": {\n \"zimic-interceptor\": \"./dist/cli.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./http\": {\n \"types\": \"./http.d.ts\",\n \"import\": \"./dist/http.mjs\",\n \"require\": \"./dist/http.js\",\n \"default\": \"./dist/http.js\"\n },\n \"./server\": {\n \"types\": \"./server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.js\",\n \"default\": \"./dist/server.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"cli\": \"node --enable-source-maps ./dist/cli.js\",\n \"build\": \"tsup\",\n \"lint\": \"eslint --cache --no-error-on-unmatched-pattern --no-warn-ignored --fix\",\n \"lint:turbo\": \"pnpm lint . --max-warnings 0\",\n \"style\": \"prettier --log-level warn --ignore-unknown --no-error-on-unmatched-pattern --cache\",\n \"style:check\": \"pnpm style --check\",\n \"style:format\": \"pnpm style --write\",\n \"test\": \"dotenv -v NODE_ENV=test -v FORCE_COLOR=1 -- vitest\",\n \"test:turbo\": \"dotenv -v CI=true -- pnpm run test run --coverage\",\n \"types:check\": \"tsc --noEmit\",\n \"deps:install-playwright\": \"playwright install chromium\",\n \"deps:init-msw\": \"msw init ./public --no-save\",\n \"deps:init\": \"pnpm deps:install-playwright && pnpm deps:init-msw\",\n \"postinstall\": \"node --enable-source-maps -e \\\"try{require('./dist/scripts/postinstall')}catch(error){console.error(error)}\\\"\"\n },\n \"dependencies\": {\n \"@whatwg-node/server\": \"0.10.3\",\n \"execa\": \"9.5.2\",\n \"isomorphic-ws\": \"5.0.0\",\n \"msw\": \"2.7.3\",\n \"picocolors\": \"^1.1.1\",\n \"ws\": \"8.18.1\",\n \"yargs\": \"17.7.2\",\n \"zod\": \"^3.24.2\"\n },\n \"optionalDependencies\": {\n \"bufferutil\": \"4.0.9\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.14.0\",\n \"@types/ws\": \"^8.18.1\",\n \"@types/yargs\": \"^17.0.33\",\n \"@vitest/browser\": \"^3.1.1\",\n \"@vitest/coverage-istanbul\": \"^3.1.1\",\n \"@zimic/eslint-config-node\": \"workspace:*\",\n \"@zimic/lint-staged-config\": \"workspace:*\",\n \"@zimic/tsconfig\": \"workspace:*\",\n \"@zimic/utils\": \"workspace:*\",\n \"dotenv-cli\": \"^8.0.0\",\n \"eslint\": \"^9.24.0\",\n \"playwright\": \"^1.51.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"peerDependencies\": {\n \"@zimic/http\": \"^0.3.0 || ^0.3.0-canary.0\",\n \"typescript\": \">=4.8.0\"\n },\n \"peerDependenciesMeta\": {\n \"typescript\": {\n \"optional\": true\n }\n }\n}\n","export const SERVICE_WORKER_FILE_NAME = 'mockServiceWorker.js';\n","import fs from 'fs';\nimport path from 'path';\nimport color from 'picocolors';\n\nimport { logger } from '@/utils/logging';\n\nimport { SERVICE_WORKER_FILE_NAME } from './shared/constants';\n\nconst MSW_ROOT_PATH = path.join(require.resolve('msw'), '..', '..', '..');\nexport const MOCK_SERVICE_WORKER_PATH = path.join(MSW_ROOT_PATH, 'lib', SERVICE_WORKER_FILE_NAME);\n\ninterface BrowserServiceWorkerInitOptions {\n publicDirectory: string;\n}\n\nasync function initializeBrowserServiceWorker({ publicDirectory }: BrowserServiceWorkerInitOptions) {\n const absolutePublicDirectory = path.resolve(publicDirectory);\n await fs.promises.mkdir(absolutePublicDirectory, { recursive: true });\n\n const destinationPath = path.join(absolutePublicDirectory, SERVICE_WORKER_FILE_NAME);\n await fs.promises.copyFile(MOCK_SERVICE_WORKER_PATH, destinationPath);\n\n logger.info(`Service worker script saved to ${color.magenta(destinationPath)}.`);\n}\n\nexport default initializeBrowserServiceWorker;\n","import createCachedDynamicImport from '@zimic/utils/import/createCachedDynamicImport';\n\nexport const PROCESS_EXIT_EVENTS = Object.freeze([\n 'beforeExit',\n 'uncaughtExceptionMonitor',\n 'SIGINT',\n 'SIGTERM',\n 'SIGHUP',\n 'SIGBREAK',\n] as const);\n\nexport type ProcessExitEvent = (typeof PROCESS_EXIT_EVENTS)[number];\n\n// Having an undefined exit code means that the process will already exit with the default exit code.\nexport const PROCESS_EXIT_CODE_BY_EXIT_EVENT: Record<string, number | undefined> = {\n beforeExit: undefined,\n uncaughtExceptionMonitor: undefined,\n SIGINT: 130,\n SIGTERM: 143,\n SIGHUP: 129,\n SIGBREAK: 131,\n} satisfies Record<ProcessExitEvent, number | undefined>;\n\nexport const importExeca = createCachedDynamicImport(() => import('execa'));\n\ninterface CommandErrorOptions {\n command?: string[];\n exitCode?: number;\n signal?: NodeJS.Signals;\n originalMessage?: string;\n}\n\nexport class CommandError extends Error {\n static readonly DEFAULT_EXIT_CODE = 1;\n\n readonly command: string[];\n readonly exitCode: number;\n readonly signal?: NodeJS.Signals;\n\n constructor(executable: string, options: CommandErrorOptions) {\n const message = CommandError.createMessage(executable, options);\n super(message);\n\n this.name = 'CommandError';\n this.command = options.command ?? [executable];\n this.exitCode = this.getExitCode(options);\n this.signal = options.signal;\n }\n\n private getExitCode(options: CommandErrorOptions): number {\n const existingExitCode = options.exitCode;\n const exitCodeInferredFromSignal =\n options.signal === undefined ? undefined : PROCESS_EXIT_CODE_BY_EXIT_EVENT[options.signal];\n\n return existingExitCode ?? exitCodeInferredFromSignal ?? CommandError.DEFAULT_EXIT_CODE;\n }\n\n private static createMessage(command: string, options: CommandErrorOptions) {\n const suffix = options.originalMessage ? `: ${options.originalMessage}` : '';\n\n if (options.exitCode === undefined && options.signal === undefined) {\n return `Command '${command}' failed${suffix}`;\n }\n\n const prefix = `Command '${command}' exited `;\n const infix = options.exitCode === undefined ? `after signal ${options.signal}` : `with code ${options.exitCode}`;\n\n return `${prefix}${infix}${suffix}`;\n }\n}\n\nexport async function runCommand(command: string, commandArguments: string[]) {\n const { execa: $, ExecaError } = await importExeca();\n\n try {\n await $(command, commandArguments, { stdio: 'inherit' });\n } catch (error) {\n /* istanbul ignore if -- @preserve\n * This is a safeguard if the error is not an ExecaError. It is not expected to run. */\n if (!(error instanceof ExecaError)) {\n throw error;\n }\n\n const commandError = new CommandError(command, {\n command: [command, ...commandArguments],\n exitCode: error.exitCode,\n signal: error.signal,\n originalMessage: error.originalMessage,\n });\n\n throw commandError;\n }\n}\n","import color from 'picocolors';\n\nimport { InterceptorServer, createInterceptorServer } from '@/server';\nimport { InterceptorServerOptions } from '@/server/types/options';\nimport { logger } from '@/utils/logging';\nimport {\n CommandError,\n PROCESS_EXIT_CODE_BY_EXIT_EVENT,\n PROCESS_EXIT_EVENTS,\n ProcessExitEvent,\n runCommand,\n} from '@/utils/processes';\n\ninterface InterceptorServerStartOptions extends InterceptorServerOptions {\n ephemeral: boolean;\n onReady?: { command: string; arguments: string[] };\n}\n\nexport let serverSingleton: InterceptorServer | undefined;\n\nasync function startInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n ephemeral,\n onReady,\n}: InterceptorServerStartOptions) {\n const server = createInterceptorServer({\n hostname,\n port,\n logUnhandledRequests,\n tokensDirectory,\n });\n\n async function handleExitEvent(exitEvent: ProcessExitEvent | undefined) {\n await server.stop();\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.off(exitEvent, exitHandler);\n }\n\n const exitCode = exitEvent ? PROCESS_EXIT_CODE_BY_EXIT_EVENT[exitEvent] : undefined;\n if (exitCode !== undefined) {\n process.exit(exitCode);\n }\n }\n\n const exitHandlerGroups = PROCESS_EXIT_EVENTS.map((exitEvent) => ({\n exitEvent,\n exitHandler: handleExitEvent.bind(null, exitEvent),\n }));\n\n for (const { exitEvent, exitHandler } of exitHandlerGroups) {\n process.on(exitEvent, exitHandler);\n }\n\n serverSingleton = server;\n\n await server.start();\n\n logger.info(\n `${ephemeral ? 'Ephemeral s' : 'S'}erver is running on ${color.yellow(`${server.hostname}:${server.port}`)}`,\n );\n\n const isDangerouslyUnprotected = !tokensDirectory && process.env.NODE_ENV === 'production';\n\n if (isDangerouslyUnprotected) {\n logger.warn(\n [\n `Attention: this interceptor server is ${color.bold(color.red('unprotected'))}. Do not expose it publicly without authentication.`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n }\n\n if (onReady) {\n try {\n await runCommand(onReady.command, onReady.arguments);\n } catch (error) {\n console.error(error);\n\n /* istanbul ignore if -- @preserve\n * A CommandError is always expected here. */\n if (!(error instanceof CommandError)) {\n throw error;\n }\n\n process.exit(error.exitCode);\n }\n }\n\n if (ephemeral) {\n await handleExitEvent(undefined);\n process.exit(0);\n }\n}\n\nexport default startInterceptorServer;\n","import color from 'picocolors';\n\nimport { createInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenName?: string;\n tokensDirectory: string;\n}\n\nexport async function createInterceptorServerToken({\n tokenName,\n tokensDirectory,\n}: InterceptorServerCreateTokenOptions) {\n const token = await createInterceptorToken({ name: tokenName, tokensDirectory });\n\n logger.info(\n [\n `${color.green(color.bold('✔'))} Token${tokenName ? ` ${color.green(tokenName)}` : ''} created:`,\n '',\n color.yellow(token.value),\n '',\n 'Store this token securely. It cannot be retrieved later.',\n '',\n `To enable authentication in your interceptor server, use the ${color.cyan('--tokens-dir')} option. Only ` +\n 'remote interceptors bearing a valid token will be allowed to connect.',\n '',\n `${color.dim('$')} zimic-interceptor server start ${color.cyan('--tokens-dir')} ${color.magenta(tokensDirectory)}`,\n '',\n 'Learn more: https://github.com/zimicjs/zimic/wiki/cli‐zimic‐server#authentication',\n ].join('\\n'),\n );\n}\n","import { listInterceptorTokens } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerListTokensOptions {\n tokensDirectory: string;\n}\n\nexport async function listInterceptorServerTokens({ tokensDirectory }: InterceptorServerListTokensOptions) {\n const tokens = await listInterceptorTokens({ tokensDirectory });\n\n logger.raw.table(\n [\n { title: 'ID', property: 'id' },\n { title: 'NAME', property: 'name' },\n { title: 'CREATED AT', property: 'createdAt' },\n ],\n tokens.map((token) => ({\n id: token.id,\n name: token.name ?? '',\n createdAt: token.createdAt.toISOString(),\n })),\n );\n}\n","import color from 'picocolors';\n\nimport { readInterceptorTokenFromFile, removeInterceptorToken } from '@/server/utils/auth';\nimport { logger } from '@/utils/logging';\n\ninterface InterceptorServerCreateTokenOptions {\n tokenId: string;\n tokensDirectory: string;\n}\n\nexport async function removeInterceptorServerToken({ tokenId, tokensDirectory }: InterceptorServerCreateTokenOptions) {\n const token = await readInterceptorTokenFromFile(tokenId, { tokensDirectory });\n\n if (!token) {\n logger.error(`${color.red(color.bold('✘'))} Token ${color.red(tokenId)} not found.`);\n process.exit(1);\n }\n\n await removeInterceptorToken(token.id, { tokensDirectory });\n\n logger.info(`${color.green(color.bold('✔'))} Token ${color.green(token.name ?? token.id)} removed.`);\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { version } from '@@/package.json';\n\nimport { DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY } from '../server/utils/auth';\nimport initializeBrowserServiceWorker from './browser/init';\nimport startInterceptorServer from './server/start';\nimport { createInterceptorServerToken } from './server/token/create';\nimport { listInterceptorServerTokens } from './server/token/list';\nimport { removeInterceptorServerToken } from './server/token/remove';\n\nasync function runCLI() {\n await yargs(hideBin(process.argv))\n .scriptName('zimic-interceptor')\n .version(version)\n .showHelpOnFail(false)\n .strict()\n\n .command('browser', 'Manage your browser mock configuration.', (yargs) =>\n yargs.demandCommand().command(\n 'init <publicDirectory>',\n 'Initialize the browser service worker configuration.',\n (yargs) =>\n yargs.positional('publicDirectory', {\n type: 'string',\n description: 'The path to the public directory of your application.',\n demandOption: true,\n }),\n async (cliArguments) => {\n await initializeBrowserServiceWorker({\n publicDirectory: cliArguments.publicDirectory,\n });\n },\n ),\n )\n\n .command('server', 'Manage interceptor servers.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'start [-- onReady]',\n 'Start an interceptor server.',\n (yargs) =>\n yargs\n .positional('onReady', {\n description: 'A command to run when the server is ready to accept connections.',\n type: 'string',\n })\n .option('hostname', {\n type: 'string',\n description: 'The hostname to start the server on.',\n alias: 'h',\n default: 'localhost',\n })\n .option('port', {\n type: 'number',\n description: 'The port to start the server on.',\n alias: 'p',\n })\n .option('ephemeral', {\n type: 'boolean',\n description:\n 'Whether the server should stop automatically after the on-ready command finishes. ' +\n 'If no on-ready command is provided and ephemeral is true, the server will stop immediately after ' +\n 'starting.',\n alias: 'e',\n default: false,\n })\n .option('log-unhandled-requests', {\n type: 'boolean',\n description:\n 'Whether to log a warning when no interceptors were found for the base URL of a request. ' +\n 'If an interceptor was matched, the logging behavior for that base URL is configured in the ' +\n 'interceptor itself.',\n alias: 'l',\n })\n .option('tokens-dir', {\n type: 'string',\n description:\n 'The directory where the authorized interceptor authentication tokens are saved. If provided, only ' +\n 'remote interceptors bearing a valid token will be accepted. This option is essential if you are ' +\n 'exposing your interceptor server publicly. For local development and testing, though, ' +\n '`--tokens-dir` is optional.',\n alias: 't',\n }),\n async (cliArguments) => {\n const onReadyCommand = cliArguments._.at(2)?.toString();\n const onReadyCommandArguments = cliArguments._.slice(3).map((argument) => argument.toString());\n\n await startInterceptorServer({\n hostname: cliArguments.hostname,\n port: cliArguments.port,\n ephemeral: cliArguments.ephemeral,\n logUnhandledRequests: cliArguments.logUnhandledRequests,\n tokensDirectory: cliArguments.tokensDir,\n onReady: onReadyCommand\n ? {\n command: onReadyCommand.toString(),\n arguments: onReadyCommandArguments,\n }\n : undefined,\n });\n },\n )\n\n .command('token', 'Manage remote interceptor authentication tokens.', (yargs) =>\n yargs\n .demandCommand()\n .command(\n 'create',\n 'Create an interceptor token.',\n (yargs) =>\n yargs\n .option('name', {\n type: 'string',\n description: 'The name of the token to create.',\n alias: 'n',\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the created interceptor token will be saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await createInterceptorServerToken({\n tokenName: cliArguments.name,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['ls', 'list'],\n 'List the authorized interceptor tokens.',\n (yargs) =>\n yargs.option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await listInterceptorServerTokens({\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n )\n\n .command(\n ['rm <tokenId>', 'remove <tokenId>'],\n 'Remove (invalidate) an interceptor token. Existing connections will not be affected, so restarting the ' +\n 'server is recommended to disconnect all interceptors.',\n (yargs) =>\n yargs\n .positional('tokenId', {\n type: 'string',\n description: 'The identifier of the token to remove.',\n demandOption: true,\n })\n .option('tokens-dir', {\n type: 'string',\n description: 'The directory where the interceptor tokens are saved.',\n alias: 't',\n default: DEFAULT_INTERCEPTOR_TOKENS_DIRECTORY,\n }),\n async (cliArguments) => {\n await removeInterceptorServerToken({\n tokenId: cliArguments.tokenId,\n tokensDirectory: cliArguments.tokensDir,\n });\n },\n ),\n ),\n )\n\n .parse();\n}\n\nexport default runCLI;\n","#!/usr/bin/env node\nimport runCLI from './cli';\n\nvoid runCLI();\n"]}
package/dist/http.js CHANGED
@@ -169,11 +169,11 @@ var DisabledRequestSavingError = class extends TypeError {
169
169
  };
170
170
  var DisabledRequestSavingError_default = DisabledRequestSavingError;
171
171
 
172
- // ../zimic-utils/dist/chunk-PAWJFY3S.mjs
172
+ // ../zimic-utils/dist/chunk-6IEM75FG.mjs
173
173
  var __defProp2 = Object.defineProperty;
174
174
  var __name2 = /* @__PURE__ */ __name((target, value) => __defProp2(target, "name", { value, configurable: true }), "__name");
175
175
 
176
- // ../zimic-utils/dist/chunk-3O5CS47X.mjs
176
+ // ../zimic-utils/dist/chunk-INCJAGFR.mjs
177
177
  function isDefined(value) {
178
178
  return value !== void 0 && value !== null;
179
179
  }
@@ -458,7 +458,7 @@ __name(blobContains, "blobContains");
458
458
  __name2(blobContains, "blobContains");
459
459
  var blobContains_default = blobContains;
460
460
 
461
- // ../zimic-utils/dist/chunk-HVLEF6VF.mjs
461
+ // ../zimic-utils/dist/chunk-VXSYL3FX.mjs
462
462
  async function blobEquals(blob, otherBlob) {
463
463
  return blob.type === otherBlob.type && blob.size === otherBlob.size && await blob.text() === await otherBlob.text();
464
464
  }
@@ -466,12 +466,15 @@ __name(blobEquals, "blobEquals");
466
466
  __name2(blobEquals, "blobEquals");
467
467
  var blobEquals_default = blobEquals;
468
468
 
469
- // src/utils/json.ts
469
+ // ../zimic-utils/dist/chunk-C76RTUXI.mjs
470
470
  function isPrimitiveJSONValue(value) {
471
471
  return typeof value !== "object" || value === null;
472
472
  }
473
473
  __name(isPrimitiveJSONValue, "isPrimitiveJSONValue");
474
- function jsonEquals(value, otherValue) {
474
+ __name2(isPrimitiveJSONValue, "isPrimitiveJSONValue");
475
+
476
+ // ../zimic-utils/dist/data/jsonContains.mjs
477
+ function jsonContains(value, otherValue) {
475
478
  if (isPrimitiveJSONValue(value)) {
476
479
  return value === otherValue;
477
480
  }
@@ -482,27 +485,40 @@ function jsonEquals(value, otherValue) {
482
485
  if (!Array.isArray(otherValue)) {
483
486
  return false;
484
487
  }
485
- if (value.length !== otherValue.length) {
488
+ if (value.length < otherValue.length) {
486
489
  return false;
487
490
  }
488
- return value.every((item, index) => jsonEquals(item, otherValue[index]));
491
+ let lastMatchedIndex = -1;
492
+ return otherValue.every((otherItem) => {
493
+ for (let index = lastMatchedIndex + 1; index < value.length; index++) {
494
+ if (jsonContains(value[index], otherItem)) {
495
+ lastMatchedIndex = index;
496
+ return true;
497
+ }
498
+ }
499
+ return false;
500
+ });
489
501
  }
490
502
  if (Array.isArray(otherValue)) {
491
503
  return false;
492
504
  }
493
505
  const valueKeys = Object.keys(value);
494
506
  const otherValueKeys = Object.keys(otherValue);
495
- if (valueKeys.length !== otherValueKeys.length) {
507
+ if (valueKeys.length < otherValueKeys.length) {
496
508
  return false;
497
509
  }
498
- return valueKeys.every((key) => {
510
+ return otherValueKeys.every((key) => {
499
511
  const subValue = value[key];
500
512
  const subOtherValue = otherValue[key];
501
- return jsonEquals(subValue, subOtherValue);
513
+ return jsonContains(subValue, subOtherValue);
502
514
  });
503
515
  }
504
- __name(jsonEquals, "jsonEquals");
505
- function jsonContains(value, otherValue) {
516
+ __name(jsonContains, "jsonContains");
517
+ __name2(jsonContains, "jsonContains");
518
+ var jsonContains_default = jsonContains;
519
+
520
+ // ../zimic-utils/dist/data/jsonEquals.mjs
521
+ function jsonEquals(value, otherValue) {
506
522
  if (isPrimitiveJSONValue(value)) {
507
523
  return value === otherValue;
508
524
  }
@@ -513,35 +529,28 @@ function jsonContains(value, otherValue) {
513
529
  if (!Array.isArray(otherValue)) {
514
530
  return false;
515
531
  }
516
- if (value.length < otherValue.length) {
532
+ if (value.length !== otherValue.length) {
517
533
  return false;
518
534
  }
519
- let lastMatchedIndex = -1;
520
- return otherValue.every((otherItem) => {
521
- for (let index = lastMatchedIndex + 1; index < value.length; index++) {
522
- if (jsonContains(value[index], otherItem)) {
523
- lastMatchedIndex = index;
524
- return true;
525
- }
526
- }
527
- return false;
528
- });
535
+ return value.every((item, index) => jsonEquals(item, otherValue[index]));
529
536
  }
530
537
  if (Array.isArray(otherValue)) {
531
538
  return false;
532
539
  }
533
540
  const valueKeys = Object.keys(value);
534
541
  const otherValueKeys = Object.keys(otherValue);
535
- if (valueKeys.length < otherValueKeys.length) {
542
+ if (valueKeys.length !== otherValueKeys.length) {
536
543
  return false;
537
544
  }
538
- return otherValueKeys.every((key) => {
545
+ return valueKeys.every((key) => {
539
546
  const subValue = value[key];
540
547
  const subOtherValue = otherValue[key];
541
- return jsonContains(subValue, subOtherValue);
548
+ return jsonEquals(subValue, subOtherValue);
542
549
  });
543
550
  }
544
- __name(jsonContains, "jsonContains");
551
+ __name(jsonEquals, "jsonEquals");
552
+ __name2(jsonEquals, "jsonEquals");
553
+ var jsonEquals_default = jsonEquals;
545
554
 
546
555
  // src/http/requestHandler/errors/NoResponseDefinitionError.ts
547
556
  var NoResponseDefinitionError = class extends TypeError {
@@ -764,7 +773,7 @@ var HttpRequestHandlerClient = class {
764
773
  diff: { expected: restrictionBody, received: body }
765
774
  };
766
775
  }
767
- const matchesRestriction = restriction.exact ? jsonEquals(request.body, restriction.body) : jsonContains(request.body, restriction.body);
776
+ const matchesRestriction = restriction.exact ? jsonEquals_default(request.body, restriction.body) : jsonContains_default(request.body, restriction.body);
768
777
  return matchesRestriction ? { value: true } : {
769
778
  value: false,
770
779
  diff: { expected: restrictionBody, received: body }
@@ -859,7 +868,7 @@ var LocalHttpRequestHandler = class {
859
868
  };
860
869
  var LocalHttpRequestHandler_default = LocalHttpRequestHandler;
861
870
 
862
- // ../zimic-utils/dist/chunk-RIVHLEFF.mjs
871
+ // ../zimic-utils/dist/chunk-PFX6YIKR.mjs
863
872
  var URL_PATH_PARAM_REGEX = /\/:([^/]+)/g;
864
873
  function createRegExpFromURL(url) {
865
874
  URL_PATH_PARAM_REGEX.lastIndex = 0;