{"version":3,"sources":["../package.json","../src/cli/browser/shared/constants.ts","../src/cli/browser/init.ts","../../zimic-utils/src/process/constants.ts","../../zimic-utils/src/process/runCommand.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\": \"1.4.1\",\n  \"homepage\": \"https://zimic.dev/docs/interceptor\",\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  \"funding\": {\n    \"type\": \"github\",\n    \"url\": \"https://github.com/sponsors/zimicjs\"\n  },\n  \"private\": false,\n  \"publishConfig\": {\n    \"access\": \"public\",\n    \"provenance\": true\n  },\n  \"engines\": {\n    \"node\": \">=22.0.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    \"setup\": \"concurrently --names playwright,msw 'playwright install chromium' 'msw init ./public --no-save'\",\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 --coverage --reporter verbose\",\n    \"types:check\": \"tsc --noEmit\",\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.18\",\n    \"isomorphic-ws\": \"5.0.0\",\n    \"msw\": \"2.14.5\",\n    \"picocolors\": \"^1.1.1\",\n    \"ws\": \"8.20.0\",\n    \"yargs\": \"18.0.0\",\n    \"zod\": \"^4.4.3\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^25.6.2\",\n    \"@types/ws\": \"^8.18.1\",\n    \"@types/yargs\": \"^17.0.35\",\n    \"@vitest/browser\": \"^4.1.5\",\n    \"@vitest/browser-playwright\": \"^4.1.5\",\n    \"@vitest/coverage-istanbul\": \"^4.1.5\",\n    \"@zimic/eslint-config-node\": \"workspace:*\",\n    \"@zimic/lint-staged-config\": \"workspace:*\",\n    \"@zimic/tsconfig\": \"workspace:*\",\n    \"@zimic/utils\": \"workspace:*\",\n    \"concurrently\": \"^9.2.1\",\n    \"dotenv-cli\": \"^11.0.0\",\n    \"eslint\": \"^9.39.4\",\n    \"playwright\": \"^1.59.1\",\n    \"tsup\": \"^8.5.1\",\n    \"typescript\": \"6.0.3\",\n    \"vitest\": \"^4.1.5\"\n  },\n  \"peerDependencies\": {\n    \"@zimic/http\": \"^1.2.0 || workspace:*\",\n    \"typescript\": \"^5.0.0 || ^6.0.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  await fs.promises.mkdir(publicDirectory, { recursive: true });\n\n  const destinationPath = path.join(publicDirectory, 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","export 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","import { spawn, SpawnOptions } from 'child_process';\n\nimport { PROCESS_EXIT_CODE_BY_EXIT_EVENT } from './constants';\n\ninterface CommandErrorOptions {\n  command?: string[];\n  exitCode?: number;\n  signal?: NodeJS.Signals;\n  cause?: Error;\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  readonly cause?: Error;\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    this.cause = options.cause;\n  }\n\n  private getExitCode(options: CommandErrorOptions): number {\n    const existingExitCode = options.exitCode;\n\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 originalMessage = options.cause?.message;\n    const suffix = originalMessage ? `: ${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\nasync function runCommand(commandEntry: string, commandArguments: string[], options: SpawnOptions = {}) {\n  await new Promise<void>((resolve, reject) => {\n    const commandProcess = spawn(commandEntry, commandArguments, { stdio: 'inherit', ...options });\n\n    commandProcess.once('error', (error) => {\n      const commandError = new CommandError(commandEntry, {\n        command: [commandEntry, ...commandArguments],\n        cause: error,\n      });\n      reject(commandError);\n    });\n\n    commandProcess.once('close', (code, signal) => {\n      if (code === 0) {\n        resolve();\n        return;\n      }\n\n      const commandError = new CommandError(commandEntry, {\n        command: [commandEntry, ...commandArguments],\n        exitCode: code ?? undefined,\n        signal: signal ?? undefined,\n      });\n      reject(commandError);\n    });\n  });\n}\n\nexport default runCommand;\n","import {\n  ProcessExitEvent,\n  PROCESS_EXIT_EVENTS,\n  PROCESS_EXIT_CODE_BY_EXIT_EVENT,\n  runCommand,\n  CommandError,\n} from '@zimic/utils/process';\nimport color from 'picocolors';\n\nimport { InterceptorServer, createInterceptorServer } from '@/server';\nimport { InterceptorServerOptions } from '@/server/types/options';\nimport { logger } from '@/utils/logging';\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://zimic.dev/docs/interceptor/guides/http/remote-interceptors#interceptor-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://zimic.dev/docs/interceptor/guides/http/remote-interceptors#interceptor-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"]}