{"version":3,"file":"create-suite.cjs","sources":["../../playwright-reporter/src/create-suite.ts"],"sourcesContent":["/**\n * Standalone script that creates a suite via HTTP POST.\n *\n * Called via spawnSync from the reporter's synchronous onBegin hook.\n * spawnSync is used because onBegin doesn't support async/await, and\n * deasync (the previous approach) breaks on Node 24 due to native bindings.\n *\n * Reads a JSON payload from stdin (piped via spawnSync's `input` option),\n * and prints { id, name, url } to stdout on success.\n *\n * IMPORTANT: Do not write to stdout (console.log, etc.) — the parent\n * process parses stdout as JSON. Use stderr for diagnostics.\n *\n * Exit codes:\n *   0 — success (JSON on stdout)\n *   1 — transient failure (message on stderr)\n *   2 — auth failure, e.g. invalid API key (message on stderr)\n */\n\nimport {\n  createClient,\n  postInternalV1ProjectsByProjectIdReporterSuite,\n} from \"@stablyai-internal/api-client\";\nimport { readFileSync } from \"fs\";\n\ntype CreateSuiteInput = {\n  apiBaseUrl: string;\n  apiKey: string;\n  body: unknown;\n  projectId: string;\n  timeoutMs: number;\n  source?: string;\n  cliVersion?: string;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n  typeof value === \"object\" && value !== null;\n\nconst parseCreateSuiteInput = (rawInput: string): CreateSuiteInput => {\n  const parsed: unknown = JSON.parse(rawInput);\n  if (!isRecord(parsed)) {\n    throw new Error(\"Invalid create-suite input payload\");\n  }\n\n  const { apiBaseUrl, apiKey, body, cliVersion, projectId, source, timeoutMs } =\n    parsed;\n\n  if (\n    typeof apiBaseUrl !== \"string\" ||\n    typeof apiKey !== \"string\" ||\n    typeof projectId !== \"string\" ||\n    typeof timeoutMs !== \"number\" ||\n    Number.isNaN(timeoutMs)\n  ) {\n    throw new Error(\"Invalid create-suite input payload\");\n  }\n\n  if (source !== undefined && typeof source !== \"string\") {\n    throw new Error(\"Invalid create-suite input payload\");\n  }\n\n  if (cliVersion !== undefined && typeof cliVersion !== \"string\") {\n    throw new Error(\"Invalid create-suite input payload\");\n  }\n\n  return {\n    apiBaseUrl,\n    apiKey,\n    body,\n    cliVersion,\n    projectId,\n    source,\n    timeoutMs,\n  };\n};\n\nasync function main() {\n  const { apiBaseUrl, apiKey, body, cliVersion, projectId, source, timeoutMs } =\n    parseCreateSuiteInput(readFileSync(0, \"utf-8\"));\n\n  const controller = new AbortController();\n  const timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n  try {\n    const client = createClient({\n      baseUrl: apiBaseUrl,\n      headers: {\n        Authorization: `Bearer ${apiKey}`,\n        ...(cliVersion ? { \"x-stably-cli-version\": cliVersion } : {}),\n        ...(source ? { \"x-stably-source\": source } : {}),\n      },\n      signal: controller.signal,\n    });\n\n    const response = await postInternalV1ProjectsByProjectIdReporterSuite({\n      body,\n      client,\n      path: { projectId },\n    });\n\n    if (response.error) {\n      const statusCode = response.response.status;\n      const errorMessage =\n        \"error\" in response.error ? response.error.error : \"Unknown error\";\n      process.stderr.write(`${errorMessage}\\n`);\n      const isAuthError = statusCode === 401 || statusCode === 403;\n      process.exit(isAuthError ? 2 : 1);\n    }\n\n    process.stdout.write(JSON.stringify(response.data));\n  } catch (error: unknown) {\n    if (error instanceof Error && error.name === \"AbortError\") {\n      process.stderr.write(`Suite creation timed out after ${timeoutMs}ms\\n`);\n      process.exit(1);\n    }\n    const message = error instanceof Error ? error.message : String(error);\n    process.stderr.write(`${message}\\n`);\n    process.exit(1);\n  } finally {\n    clearTimeout(timeout);\n  }\n}\n\nvoid main();\n"],"names":["readFileSync","createClient","postInternalV1ProjectsByProjectIdReporterSuite"],"mappings":"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"}