"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkQS6T7DCVcjs = require('./chunk-QS6T7DCV.cjs');var _chunkQX2UXNCUcjs = require('./chunk-QX2UXNCU.cjs');var _multipartparser = require('@mjackson/multipart-parser');var _url = require('url');var _commontags = require('common-tags');function z(p,i=100){switch(p){case"api":return _commontags.stripIndent` select id, identifier, timestamp, event_message, request.method, request.path, response.status_code from edge_logs cross join unnest(metadata) as m cross join unnest(m.request) as request cross join unnest(m.response) as response order by timestamp desc limit ${i} `;case"branch-action":return _commontags.stripIndent` select workflow_run, workflow_run_logs.timestamp, id, event_message from workflow_run_logs order by timestamp desc limit ${i} `;case"postgres":return _commontags.stripIndent` select identifier, postgres_logs.timestamp, id, event_message, parsed.error_severity from postgres_logs cross join unnest(metadata) as m cross join unnest(m.parsed) as parsed order by timestamp desc limit ${i} `;case"edge-function":return _commontags.stripIndent` select id, function_edge_logs.timestamp, event_message, response.status_code, request.method, m.function_id, m.execution_time_ms, m.deployment_id, m.version from function_edge_logs cross join unnest(metadata) as m cross join unnest(m.response) as response cross join unnest(m.request) as request order by timestamp desc limit ${i} `;case"auth":return _commontags.stripIndent` select id, auth_logs.timestamp, event_message, metadata.level, metadata.status, metadata.path, metadata.msg as msg, metadata.error from auth_logs cross join unnest(metadata) as metadata order by timestamp desc limit ${i} `;case"storage":return _commontags.stripIndent` select id, storage_logs.timestamp, event_message from storage_logs order by timestamp desc limit ${i} `;case"realtime":return _commontags.stripIndent` select id, realtime_logs.timestamp, event_message from realtime_logs order by timestamp desc limit ${i} `;default:throw new Error(`unsupported log service type: ${p}`)}}var _openapifetch = require('openapi-fetch'); var _openapifetch2 = _interopRequireDefault(_openapifetch);var _v4 = require('zod/v4');function F(p,i,d={}){return _openapifetch2.default.call(void 0, {baseUrl:p,headers:{Authorization:`Bearer ${i}`,...d}})}var N=_v4.z.object({message:_v4.z.string()});function n(p,i){if("error"in p){if(p.response.status===401)throw new Error("Unauthorized. Please provide a valid access token to the MCP server via the --access-token flag or SUPABASE_ACCESS_TOKEN.");let{data:d}=N.safeParse(p.error);throw d?new Error(d.message):new Error(i)}}var H="ABCDEFGHIJKLMNOPQRSTUVWXYZ",I="abcdefghijklmnopqrstuvwxyz",W="0123456789",Q="!@#$%^&*()_+~`|}{[]:;?><,./-=",U=({length:p=10,numbers:i=!1,symbols:d=!1,uppercase:_=!0,lowercase:a=!0}={})=>{let m="";if(_&&(m+=H),a&&(m+=I),i&&(m+=W),d&&(m+=Q),m.length===0)throw new Error("at least one character set must be selected");let v=new Uint32Array(p);crypto.getRandomValues(v);let O="";for(let w=0;w
("https://api.supabase.com")),a=F(_,i),m={async listOrganizations(){let t=await a.GET("/v1/organizations");return n(t,"Failed to fetch organizations"),t.data},async getOrganization(t){let e=await a.GET("/v1/organizations/{slug}",{params:{path:{slug:t}}});return n(e,"Failed to fetch organization"),e.data},async listProjects(){let t=await a.GET("/v1/projects");return n(t,"Failed to fetch projects"),t.data},async getProject(t){let e=await a.GET("/v1/projects/{ref}",{params:{path:{ref:t}}});return n(e,"Failed to fetch project"),e.data},async createProject(t){let{name:e,organization_id:s,region:o,db_pass:r}=_chunkQX2UXNCUcjs.i.parse(t),c=await a.POST("/v1/projects",{body:{name:e,region:o,organization_slug:s,db_pass:_nullishCoalesce(r, () => (U({length:16,numbers:!0,uppercase:!0,lowercase:!0})))}});return n(c,"Failed to create project"),c.data},async pauseProject(t){let e=await a.POST("/v1/projects/{ref}/pause",{params:{path:{ref:t}}});n(e,"Failed to pause project")},async restoreProject(t){let e=await a.POST("/v1/projects/{ref}/restore",{params:{path:{ref:t}}});n(e,"Failed to restore project")}},v={async executeSql(t,e){let{query:s,parameters:o,read_only:r}=_chunkQX2UXNCUcjs.m.parse(e),c=await a.POST("/v1/projects/{ref}/database/query",{params:{path:{ref:t}},body:{query:s,parameters:o,read_only:r}});return n(c,"Failed to execute SQL query"),c.data},async listMigrations(t){let e=await a.GET("/v1/projects/{ref}/database/migrations",{params:{path:{ref:t}}});return n(e,"Failed to fetch migrations"),e.data},async applyMigration(t,e){let{name:s,query:o}=_chunkQX2UXNCUcjs.n.parse(e),r=await a.POST("/v1/projects/{ref}/database/migrations",{params:{path:{ref:t}},body:{name:s,query:o}});n(r,"Failed to apply migration")}},O={async getLogs(t,e){let{service:s,iso_timestamp_start:o,iso_timestamp_end:r}=_chunkQX2UXNCUcjs.q.parse(e),c=z(s),u=await a.GET("/v1/projects/{ref}/analytics/endpoints/logs.all",{params:{path:{ref:t},query:{sql:c,iso_timestamp_start:o,iso_timestamp_end:r}}});return n(u,"Failed to fetch logs"),u.data},async getSecurityAdvisors(t){let e=await a.GET("/v1/projects/{ref}/advisors/security",{params:{path:{ref:t}}});return n(e,"Failed to fetch security advisors"),e.data},async getPerformanceAdvisors(t){let e=await a.GET("/v1/projects/{ref}/advisors/performance",{params:{path:{ref:t}}});return n(e,"Failed to fetch performance advisors"),e.data}},w={async getProjectUrl(t){let e=new URL(_);return`https://${t}.${X(e.hostname)}`},async getPublishableKeys(t){let e=await a.GET("/v1/projects/{ref}/api-keys",{params:{path:{ref:t},query:{reveal:!1}}});n(e,"Failed to fetch API keys");let s;try{let r=await a.GET("/v1/projects/{ref}/api-keys/legacy",{params:{path:{ref:t}}});r.response.ok&&(s=_nullishCoalesce(_optionalChain([r, 'access', _2 => _2.data, 'optionalAccess', _3 => _3.enabled]), () => (!0)))}catch (e2){s=void 0}let o=_nullishCoalesce(_optionalChain([e, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.filter, 'call', _6 => _6(r=>r.name==="anon"||r.type==="publishable")]), () => ([]));if(o.length===0)throw new Error("No client-safe API keys (anon or publishable) found. Please create a publishable key in your project settings.");return o.map(r=>({api_key:r.api_key,name:r.name,type:r.type==="publishable"?"publishable":"legacy",...s!==void 0&&{disabled:r.type==="legacy"&&!s},description:_nullishCoalesce(r.description, () => (void 0)),id:_nullishCoalesce(r.id, () => (void 0))}))},async generateTypescriptTypes(t){let e=await a.GET("/v1/projects/{ref}/types/typescript",{params:{path:{ref:t}}});return n(e,"Failed to fetch TypeScript types"),e.data}},j={async listEdgeFunctions(t){let e=await a.GET("/v1/projects/{ref}/functions",{params:{path:{ref:t}}});return n(e,"Failed to fetch Edge Functions"),e.data.map(s=>{let o=_chunkQS6T7DCVcjs.b.call(void 0, t,s.id,s.version),r=s.entrypoint_path?_chunkQS6T7DCVcjs.c.call(void 0, {deploymentId:o,filename:_url.fileURLToPath.call(void 0, s.entrypoint_path,{windows:!1})}):void 0,c=s.import_map_path?_chunkQS6T7DCVcjs.c.call(void 0, {deploymentId:o,filename:_url.fileURLToPath.call(void 0, s.import_map_path,{windows:!1})}):void 0;return{...s,entrypoint_path:r,import_map_path:c}})},async getEdgeFunction(t,e){let s=await a.GET("/v1/projects/{ref}/functions/{function_slug}",{params:{path:{ref:t,function_slug:e}}});if(s.error)throw s.error;n(s,"Failed to fetch Edge Function");let o=s.data,r=_chunkQS6T7DCVcjs.b.call(void 0, t,o.id,o.version),c=o.entrypoint_path?_chunkQS6T7DCVcjs.c.call(void 0, {deploymentId:r,filename:_url.fileURLToPath.call(void 0, o.entrypoint_path,{windows:!1})}):void 0,u=o.import_map_path?_chunkQS6T7DCVcjs.c.call(void 0, {deploymentId:r,filename:_url.fileURLToPath.call(void 0, o.import_map_path,{windows:!1})}):void 0,f=await a.GET("/v1/projects/{ref}/functions/{function_slug}/body",{params:{path:{ref:t,function_slug:e}},headers:{Accept:"multipart/form-data"},parseAs:"stream"});n(f,"Failed to fetch Edge Function files");let y=f.response.headers.get("content-type");if(!y||!y.startsWith("multipart/form-data"))throw new Error(`Unexpected content type: ${y}. Expected multipart/form-data.`);let S=_multipartparser.getMultipartBoundary.call(void 0, y);if(!S)throw new Error("No multipart boundary found in response headers");if(!f.data)throw new Error("No data received from Edge Function body");let l=[],E=_multipartparser.parseMultipartStream.call(void 0, f.data,{boundary:S});for await(let h of E)h.isFile&&h.filename&&l.push({name:_chunkQS6T7DCVcjs.c.call(void 0, {deploymentId:r,filename:h.filename}),content:h.text});return{...o,entrypoint_path:c,import_map_path:u,files:l}},async deployEdgeFunction(t,e){let{name:s,entrypoint_path:o,import_map_path:r,verify_jwt:c,files:u}=_chunkQX2UXNCUcjs.l.parse(e),f;try{f=await j.getEdgeFunction(t,s)}catch (e3){}let y=u.find(l=>["deno.json","import_map.json"].includes(l.name));r??=_nullishCoalesce(_optionalChain([f, 'optionalAccess', _7 => _7.import_map_path]), () => (_optionalChain([y, 'optionalAccess', _8 => _8.name])));let S=await a.POST("/v1/projects/{ref}/functions/deploy",{params:{path:{ref:t},query:{slug:s}},body:{metadata:{name:s,entrypoint_path:o,import_map_path:r,verify_jwt:c},file:u},bodySerializer(l){let E=new FormData,h=new Blob([JSON.stringify(l.metadata)],{type:"application/json"});return E.append("metadata",h),_optionalChain([l, 'access', _9 => _9.file, 'optionalAccess', _10 => _10.forEach, 'call', _11 => _11($=>{let A=$,k=new Blob([A.content],{type:"application/typescript"});E.append("file",k,A.name)})]),E}});return n(S,"Failed to deploy Edge Function"),S.data}};return{async init(t){let{clientInfo:e}=t;if(!e)throw new Error("Client info is required");a=F(_,i,{"User-Agent":`supabase-mcp/${Y} (${e.name}/${e.version})`})},account:m,database:v,debugging:O,development:w,functions:j,branching:{async listBranches(t){let e=await a.GET("/v1/projects/{ref}/branches",{params:{path:{ref:t}}});return e.response.status===422?[]:(n(e,"Failed to list branches"),e.data)},async createBranch(t,e){let{name:s}=_chunkQX2UXNCUcjs.j.parse(e),o=await a.POST("/v1/projects/{ref}/branches",{params:{path:{ref:t}},body:{branch_name:s}});return n(o,"Failed to create branch"),o.data},async deleteBranch(t){let e=await a.DELETE("/v1/branches/{branch_id_or_ref}",{params:{path:{branch_id_or_ref:t}}});n(e,"Failed to delete branch")},async mergeBranch(t){let e=await a.POST("/v1/branches/{branch_id_or_ref}/merge",{params:{path:{branch_id_or_ref:t}},body:{}});n(e,"Failed to merge branch")},async resetBranch(t,e){let{migration_version:s}=_chunkQX2UXNCUcjs.k.parse(e),o=await a.POST("/v1/branches/{branch_id_or_ref}/reset",{params:{path:{branch_id_or_ref:t}},body:{migration_version:s}});n(o,"Failed to reset branch")},async rebaseBranch(t){let e=await a.POST("/v1/branches/{branch_id_or_ref}/push",{params:{path:{branch_id_or_ref:t}},body:{}});n(e,"Failed to rebase branch")}},storage:{async listAllBuckets(t){let e=await a.GET("/v1/projects/{ref}/storage/buckets",{params:{path:{ref:t}}});return n(e,"Failed to list storage buckets"),e.data},async getStorageConfig(t){let e=await a.GET("/v1/projects/{ref}/config/storage",{params:{path:{ref:t}}});return n(e,"Failed to get storage config"),e.data},async updateStorageConfig(t,e){let s=await a.PATCH("/v1/projects/{ref}/config/storage",{params:{path:{ref:t}},body:{fileSizeLimit:e.fileSizeLimit,features:{imageTransformation:{enabled:e.features.imageTransformation.enabled},s3Protocol:{enabled:e.features.s3Protocol.enabled}}}});n(s,"Failed to update storage config")}}}}function X(p){switch(p){case"api.supabase.com":return"supabase.co";case"api.supabase.green":return"supabase.green";default:return"supabase.red"}}exports.a = ye; //# sourceMappingURL=chunk-EVDY7FB4.cjs.map