{"version":3,"file":"provider-utils-CfB9nvJx.mjs","names":[],"sources":["../src/internal/provider-utils.ts"],"sourcesContent":["import { SandboxError } from \"../core/errors\";\nimport type { CommandInput, ExposedPort, FileValue, SandboxSnapshot } from \"../core/types\";\n\nexport async function toUint8Array(value: FileValue): Promise<Uint8Array> {\n  if (typeof value === \"string\") return new TextEncoder().encode(value);\n  if (value instanceof Uint8Array) return value;\n  if (value instanceof ArrayBuffer) return new Uint8Array(value);\n  if (value instanceof Blob) return new Uint8Array(await value.arrayBuffer());\n  const response = new Response(value);\n  return new Uint8Array(await response.arrayBuffer());\n}\n\nexport function commandString(input: CommandInput): string {\n  if (typeof input === \"string\") return input;\n  return [input.command, ...(input.args ?? [])].map(shellQuote).join(\" \");\n}\n\nfunction shellQuote(value: string): string {\n  return `'${value.replaceAll(\"'\", `'\"'\"'`)}'`;\n}\n\nexport function portResult(\n  port: number,\n  url: string,\n  isPublic: boolean,\n  authenticated: boolean,\n  request?: (path?: string, init?: RequestInit) => Promise<Response>,\n): ExposedPort {\n  return {\n    port,\n    url,\n    public: isPublic,\n    authenticated,\n    request,\n    toJSON: () => ({\n      port,\n      url: authenticated ? redactUrl(url) : url,\n      public: isPublic,\n      authenticated,\n    }),\n  };\n}\n\nfunction redactUrl(url: string): string {\n  const parsed = new URL(url);\n  for (const key of parsed.searchParams.keys()) parsed.searchParams.set(key, \"[REDACTED]\");\n  return parsed.toString();\n}\n\nexport function unsupported(provider: string, operation: string): never {\n  throw new SandboxError({\n    code: \"unsupported\",\n    provider,\n    operation,\n    message: `${provider} does not support normalized ${operation}`,\n  });\n}\n\nexport function unsupportedSnapshots(provider: string) {\n  return {\n    create: async (): Promise<SandboxSnapshot> => unsupported(provider, \"snapshot.create\"),\n    delete: async (): Promise<void> => unsupported(provider, \"snapshot.delete\"),\n    restore: async (): Promise<void> => unsupported(provider, \"snapshot.restore\"),\n  };\n}\n"],"mappings":";;;AAGA,eAAsB,aAAa,OAAuC;AACxE,KAAI,OAAO,UAAU,SAAU,QAAO,IAAI,aAAa,CAAC,OAAO,MAAM;AACrE,KAAI,iBAAiB,WAAY,QAAO;AACxC,KAAI,iBAAiB,YAAa,QAAO,IAAI,WAAW,MAAM;AAC9D,KAAI,iBAAiB,KAAM,QAAO,IAAI,WAAW,MAAM,MAAM,aAAa,CAAC;CAC3E,MAAM,WAAW,IAAI,SAAS,MAAM;AACpC,QAAO,IAAI,WAAW,MAAM,SAAS,aAAa,CAAC;;AAGrD,SAAgB,cAAc,OAA6B;AACzD,KAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAO,CAAC,MAAM,SAAS,GAAI,MAAM,QAAQ,EAAE,CAAE,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI;;AAGzE,SAAS,WAAW,OAAuB;AACzC,QAAO,IAAI,MAAM,WAAW,KAAK,QAAQ,CAAC;;AAG5C,SAAgB,WACd,MACA,KACA,UACA,eACA,SACa;AACb,QAAO;EACL;EACA;EACA,QAAQ;EACR;EACA;EACA,eAAe;GACb;GACA,KAAK,gBAAgB,UAAU,IAAI,GAAG;GACtC,QAAQ;GACR;GACD;EACF;;AAGH,SAAS,UAAU,KAAqB;CACtC,MAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,MAAK,MAAM,OAAO,OAAO,aAAa,MAAM,CAAE,QAAO,aAAa,IAAI,KAAK,aAAa;AACxF,QAAO,OAAO,UAAU;;AAG1B,SAAgB,YAAY,UAAkB,WAA0B;AACtE,OAAM,IAAI,aAAa;EACrB,MAAM;EACN;EACA;EACA,SAAS,GAAG,SAAS,+BAA+B;EACrD,CAAC;;AAGJ,SAAgB,qBAAqB,UAAkB;AACrD,QAAO;EACL,QAAQ,YAAsC,YAAY,UAAU,kBAAkB;EACtF,QAAQ,YAA2B,YAAY,UAAU,kBAAkB;EAC3E,SAAS,YAA2B,YAAY,UAAU,mBAAmB;EAC9E"}