{"version":3,"file":"capabilities-xs9kaHrK.mjs","names":[],"sources":["../src/core/capabilities.ts"],"sourcesContent":["import { SandboxError } from \"./errors\";\nimport type { Capability, CapabilityMap, CapabilityMode, Sandbox } from \"./types\";\n\nexport function defineCapabilities(\n  values: Partial<Record<Capability, CapabilityMode>>,\n): CapabilityMap {\n  return new Proxy(values, {\n    get(target, property) {\n      return typeof property === \"string\" && property in target\n        ? target[property as Capability]\n        : false;\n    },\n  }) as CapabilityMap;\n}\n\nexport function supports(sandbox: Pick<Sandbox, \"capabilities\">, capability: Capability): boolean {\n  return sandbox.capabilities[capability] !== false;\n}\n\nexport function capabilityMode(\n  sandbox: Pick<Sandbox, \"capabilities\">,\n  capability: Capability,\n): CapabilityMode | false {\n  return sandbox.capabilities[capability];\n}\n\nexport function requireCapability(\n  sandbox: Pick<Sandbox, \"capabilities\" | \"provider\">,\n  capability: Capability,\n): CapabilityMode {\n  const mode = sandbox.capabilities[capability];\n  if (mode === false) {\n    throw new SandboxError({\n      code: \"unsupported\",\n      provider: sandbox.provider,\n      operation: capability,\n      message: `${sandbox.provider} does not support ${capability}`,\n    });\n  }\n  return mode;\n}\n"],"mappings":";;;AAGA,SAAgB,mBACd,QACe;AACf,QAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,QAAQ,UAAU;AACpB,SAAO,OAAO,aAAa,YAAY,YAAY,SAC/C,OAAO,YACP;IAEP,CAAC;;AAGJ,SAAgB,SAAS,SAAwC,YAAiC;AAChG,QAAO,QAAQ,aAAa,gBAAgB;;AAG9C,SAAgB,eACd,SACA,YACwB;AACxB,QAAO,QAAQ,aAAa;;AAG9B,SAAgB,kBACd,SACA,YACgB;CAChB,MAAM,OAAO,QAAQ,aAAa;AAClC,KAAI,SAAS,MACX,OAAM,IAAI,aAAa;EACrB,MAAM;EACN,UAAU,QAAQ;EAClB,WAAW;EACX,SAAS,GAAG,QAAQ,SAAS,oBAAoB;EAClD,CAAC;AAEJ,QAAO"}