@supabase/mcp-server-supabase 0.4.5 → 0.5.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{b as o,c as r}from"./chunk-Q2ALOOMK.js";import"./chunk-TSIYIWSV.js";export{o as createSupabaseApiPlatform,r as createSupabaseMcpServer};
1
+ import{a as e}from"./chunk-LO7S72TA.js";import{d as o,e as r}from"./chunk-7VYUDCV6.js";export{o as PLATFORM_INDEPENDENT_FEATURES,e as createSupabaseApiPlatform,r as createSupabaseMcpServer};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk42U7HZZCcjs = require('../chunk-42U7HZZC.cjs');exports.applyMigrationOptionsSchema = _chunk42U7HZZCcjs.q; exports.branchSchema = _chunk42U7HZZCcjs.j; exports.createBranchOptionsSchema = _chunk42U7HZZCcjs.m; exports.createProjectOptionsSchema = _chunk42U7HZZCcjs.l; exports.deployEdgeFunctionOptionsSchema = _chunk42U7HZZCcjs.o; exports.edgeFunctionSchema = _chunk42U7HZZCcjs.k; exports.executeSqlOptionsSchema = _chunk42U7HZZCcjs.p; exports.generateTypescriptTypesResultSchema = _chunk42U7HZZCcjs.t; exports.getLogsOptionsSchema = _chunk42U7HZZCcjs.s; exports.migrationSchema = _chunk42U7HZZCcjs.r; exports.organizationSchema = _chunk42U7HZZCcjs.h; exports.projectSchema = _chunk42U7HZZCcjs.i; exports.resetBranchOptionsSchema = _chunk42U7HZZCcjs.n; exports.storageBucketSchema = _chunk42U7HZZCcjs.f; exports.storageConfigSchema = _chunk42U7HZZCcjs.g;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2E4PBGE7cjs = require('../chunk-2E4PBGE7.cjs');exports.applyMigrationOptionsSchema = _chunk2E4PBGE7cjs.t; exports.branchSchema = _chunk2E4PBGE7cjs.m; exports.createBranchOptionsSchema = _chunk2E4PBGE7cjs.p; exports.createProjectOptionsSchema = _chunk2E4PBGE7cjs.o; exports.deployEdgeFunctionOptionsSchema = _chunk2E4PBGE7cjs.r; exports.edgeFunctionSchema = _chunk2E4PBGE7cjs.n; exports.executeSqlOptionsSchema = _chunk2E4PBGE7cjs.s; exports.generateTypescriptTypesResultSchema = _chunk2E4PBGE7cjs.w; exports.getLogsOptionsSchema = _chunk2E4PBGE7cjs.v; exports.migrationSchema = _chunk2E4PBGE7cjs.u; exports.organizationSchema = _chunk2E4PBGE7cjs.k; exports.projectSchema = _chunk2E4PBGE7cjs.l; exports.resetBranchOptionsSchema = _chunk2E4PBGE7cjs.q; exports.storageBucketSchema = _chunk2E4PBGE7cjs.i; exports.storageConfigSchema = _chunk2E4PBGE7cjs.j;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -105,17 +105,17 @@ declare const projectSchema: z.ZodObject<{
105
105
  }, "strip", z.ZodTypeAny, {
106
106
  status: string;
107
107
  name: string;
108
- region: string;
109
108
  id: string;
110
109
  created_at: string;
111
110
  organization_id: string;
111
+ region: string;
112
112
  }, {
113
113
  status: string;
114
114
  name: string;
115
- region: string;
116
115
  id: string;
117
116
  created_at: string;
118
117
  organization_id: string;
118
+ region: string;
119
119
  }>;
120
120
  declare const branchSchema: z.ZodObject<{
121
121
  id: z.ZodString;
@@ -339,11 +339,12 @@ type GetLogsOptions = z.infer<typeof getLogsOptionsSchema>;
339
339
  type GenerateTypescriptTypesResult = z.infer<typeof generateTypescriptTypesResultSchema>;
340
340
  type StorageConfig = z.infer<typeof storageConfigSchema>;
341
341
  type StorageBucket = z.infer<typeof storageBucketSchema>;
342
- type SupabasePlatform = {
343
- init?(info: InitData): Promise<void>;
342
+ type DatabaseOperations = {
344
343
  executeSql<T>(projectId: string, options: ExecuteSqlOptions): Promise<T[]>;
345
344
  listMigrations(projectId: string): Promise<Migration[]>;
346
345
  applyMigration(projectId: string, options: ApplyMigrationOptions): Promise<void>;
346
+ };
347
+ type AccountOperations = {
347
348
  listOrganizations(): Promise<Pick<Organization, 'id' | 'name'>[]>;
348
349
  getOrganization(organizationId: string): Promise<Organization>;
349
350
  listProjects(): Promise<Project[]>;
@@ -351,24 +352,44 @@ type SupabasePlatform = {
351
352
  createProject(options: CreateProjectOptions): Promise<Project>;
352
353
  pauseProject(projectId: string): Promise<void>;
353
354
  restoreProject(projectId: string): Promise<void>;
355
+ };
356
+ type EdgeFunctionsOperations = {
354
357
  listEdgeFunctions(projectId: string): Promise<EdgeFunction[]>;
355
358
  getEdgeFunction(projectId: string, functionSlug: string): Promise<EdgeFunction>;
356
359
  deployEdgeFunction(projectId: string, options: DeployEdgeFunctionOptions): Promise<Omit<EdgeFunction, 'files'>>;
360
+ };
361
+ type DebuggingOperations = {
357
362
  getLogs(projectId: string, options: GetLogsOptions): Promise<unknown>;
358
363
  getSecurityAdvisors(projectId: string): Promise<unknown>;
359
364
  getPerformanceAdvisors(projectId: string): Promise<unknown>;
365
+ };
366
+ type DevelopmentOperations = {
360
367
  getProjectUrl(projectId: string): Promise<string>;
361
368
  getAnonKey(projectId: string): Promise<string>;
362
369
  generateTypescriptTypes(projectId: string): Promise<GenerateTypescriptTypesResult>;
370
+ };
371
+ type StorageOperations = {
372
+ getStorageConfig(projectId: string): Promise<StorageConfig>;
373
+ updateStorageConfig(projectId: string, config: StorageConfig): Promise<void>;
374
+ listAllBuckets(projectId: string): Promise<StorageBucket[]>;
375
+ };
376
+ type BranchingOperations = {
363
377
  listBranches(projectId: string): Promise<Branch[]>;
364
378
  createBranch(projectId: string, options: CreateBranchOptions): Promise<Branch>;
365
379
  deleteBranch(branchId: string): Promise<void>;
366
380
  mergeBranch(branchId: string): Promise<void>;
367
381
  resetBranch(branchId: string, options: ResetBranchOptions): Promise<void>;
368
382
  rebaseBranch(branchId: string): Promise<void>;
369
- getStorageConfig(projectId: string): Promise<StorageConfig>;
370
- updateStorageConfig(projectId: string, config: StorageConfig): Promise<void>;
371
- listAllBuckets(projectId: string): Promise<StorageBucket[]>;
383
+ };
384
+ type SupabasePlatform = {
385
+ init?(info: InitData): Promise<void>;
386
+ account?: AccountOperations;
387
+ database?: DatabaseOperations;
388
+ functions?: EdgeFunctionsOperations;
389
+ debugging?: DebuggingOperations;
390
+ development?: DevelopmentOperations;
391
+ storage?: StorageOperations;
392
+ branching?: BranchingOperations;
372
393
  };
373
394
 
374
- export { type ApplyMigrationOptions, type Branch, type CreateBranchOptions, type CreateProjectOptions, type DeployEdgeFunctionOptions, type EdgeFunction, type ExecuteSqlOptions, type GenerateTypescriptTypesResult, type GetLogsOptions, type ListMigrationsResult, type Migration, type Organization, type Project, type ResetBranchOptions, type StorageBucket, type StorageConfig, type SupabasePlatform, applyMigrationOptionsSchema, branchSchema, createBranchOptionsSchema, createProjectOptionsSchema, deployEdgeFunctionOptionsSchema, edgeFunctionSchema, executeSqlOptionsSchema, generateTypescriptTypesResultSchema, getLogsOptionsSchema, migrationSchema, organizationSchema, projectSchema, resetBranchOptionsSchema, storageBucketSchema, storageConfigSchema };
395
+ export { type AccountOperations, type ApplyMigrationOptions, type Branch, type BranchingOperations, type CreateBranchOptions, type CreateProjectOptions, type DatabaseOperations, type DebuggingOperations, type DeployEdgeFunctionOptions, type DevelopmentOperations, type EdgeFunction, type EdgeFunctionsOperations, type ExecuteSqlOptions, type GenerateTypescriptTypesResult, type GetLogsOptions, type ListMigrationsResult, type Migration, type Organization, type Project, type ResetBranchOptions, type StorageBucket, type StorageConfig, type StorageOperations, type SupabasePlatform, applyMigrationOptionsSchema, branchSchema, createBranchOptionsSchema, createProjectOptionsSchema, deployEdgeFunctionOptionsSchema, edgeFunctionSchema, executeSqlOptionsSchema, generateTypescriptTypesResultSchema, getLogsOptionsSchema, migrationSchema, organizationSchema, projectSchema, resetBranchOptionsSchema, storageBucketSchema, storageConfigSchema };
@@ -105,17 +105,17 @@ declare const projectSchema: z.ZodObject<{
105
105
  }, "strip", z.ZodTypeAny, {
106
106
  status: string;
107
107
  name: string;
108
- region: string;
109
108
  id: string;
110
109
  created_at: string;
111
110
  organization_id: string;
111
+ region: string;
112
112
  }, {
113
113
  status: string;
114
114
  name: string;
115
- region: string;
116
115
  id: string;
117
116
  created_at: string;
118
117
  organization_id: string;
118
+ region: string;
119
119
  }>;
120
120
  declare const branchSchema: z.ZodObject<{
121
121
  id: z.ZodString;
@@ -339,11 +339,12 @@ type GetLogsOptions = z.infer<typeof getLogsOptionsSchema>;
339
339
  type GenerateTypescriptTypesResult = z.infer<typeof generateTypescriptTypesResultSchema>;
340
340
  type StorageConfig = z.infer<typeof storageConfigSchema>;
341
341
  type StorageBucket = z.infer<typeof storageBucketSchema>;
342
- type SupabasePlatform = {
343
- init?(info: InitData): Promise<void>;
342
+ type DatabaseOperations = {
344
343
  executeSql<T>(projectId: string, options: ExecuteSqlOptions): Promise<T[]>;
345
344
  listMigrations(projectId: string): Promise<Migration[]>;
346
345
  applyMigration(projectId: string, options: ApplyMigrationOptions): Promise<void>;
346
+ };
347
+ type AccountOperations = {
347
348
  listOrganizations(): Promise<Pick<Organization, 'id' | 'name'>[]>;
348
349
  getOrganization(organizationId: string): Promise<Organization>;
349
350
  listProjects(): Promise<Project[]>;
@@ -351,24 +352,44 @@ type SupabasePlatform = {
351
352
  createProject(options: CreateProjectOptions): Promise<Project>;
352
353
  pauseProject(projectId: string): Promise<void>;
353
354
  restoreProject(projectId: string): Promise<void>;
355
+ };
356
+ type EdgeFunctionsOperations = {
354
357
  listEdgeFunctions(projectId: string): Promise<EdgeFunction[]>;
355
358
  getEdgeFunction(projectId: string, functionSlug: string): Promise<EdgeFunction>;
356
359
  deployEdgeFunction(projectId: string, options: DeployEdgeFunctionOptions): Promise<Omit<EdgeFunction, 'files'>>;
360
+ };
361
+ type DebuggingOperations = {
357
362
  getLogs(projectId: string, options: GetLogsOptions): Promise<unknown>;
358
363
  getSecurityAdvisors(projectId: string): Promise<unknown>;
359
364
  getPerformanceAdvisors(projectId: string): Promise<unknown>;
365
+ };
366
+ type DevelopmentOperations = {
360
367
  getProjectUrl(projectId: string): Promise<string>;
361
368
  getAnonKey(projectId: string): Promise<string>;
362
369
  generateTypescriptTypes(projectId: string): Promise<GenerateTypescriptTypesResult>;
370
+ };
371
+ type StorageOperations = {
372
+ getStorageConfig(projectId: string): Promise<StorageConfig>;
373
+ updateStorageConfig(projectId: string, config: StorageConfig): Promise<void>;
374
+ listAllBuckets(projectId: string): Promise<StorageBucket[]>;
375
+ };
376
+ type BranchingOperations = {
363
377
  listBranches(projectId: string): Promise<Branch[]>;
364
378
  createBranch(projectId: string, options: CreateBranchOptions): Promise<Branch>;
365
379
  deleteBranch(branchId: string): Promise<void>;
366
380
  mergeBranch(branchId: string): Promise<void>;
367
381
  resetBranch(branchId: string, options: ResetBranchOptions): Promise<void>;
368
382
  rebaseBranch(branchId: string): Promise<void>;
369
- getStorageConfig(projectId: string): Promise<StorageConfig>;
370
- updateStorageConfig(projectId: string, config: StorageConfig): Promise<void>;
371
- listAllBuckets(projectId: string): Promise<StorageBucket[]>;
383
+ };
384
+ type SupabasePlatform = {
385
+ init?(info: InitData): Promise<void>;
386
+ account?: AccountOperations;
387
+ database?: DatabaseOperations;
388
+ functions?: EdgeFunctionsOperations;
389
+ debugging?: DebuggingOperations;
390
+ development?: DevelopmentOperations;
391
+ storage?: StorageOperations;
392
+ branching?: BranchingOperations;
372
393
  };
373
394
 
374
- export { type ApplyMigrationOptions, type Branch, type CreateBranchOptions, type CreateProjectOptions, type DeployEdgeFunctionOptions, type EdgeFunction, type ExecuteSqlOptions, type GenerateTypescriptTypesResult, type GetLogsOptions, type ListMigrationsResult, type Migration, type Organization, type Project, type ResetBranchOptions, type StorageBucket, type StorageConfig, type SupabasePlatform, applyMigrationOptionsSchema, branchSchema, createBranchOptionsSchema, createProjectOptionsSchema, deployEdgeFunctionOptionsSchema, edgeFunctionSchema, executeSqlOptionsSchema, generateTypescriptTypesResultSchema, getLogsOptionsSchema, migrationSchema, organizationSchema, projectSchema, resetBranchOptionsSchema, storageBucketSchema, storageConfigSchema };
395
+ export { type AccountOperations, type ApplyMigrationOptions, type Branch, type BranchingOperations, type CreateBranchOptions, type CreateProjectOptions, type DatabaseOperations, type DebuggingOperations, type DeployEdgeFunctionOptions, type DevelopmentOperations, type EdgeFunction, type EdgeFunctionsOperations, type ExecuteSqlOptions, type GenerateTypescriptTypesResult, type GetLogsOptions, type ListMigrationsResult, type Migration, type Organization, type Project, type ResetBranchOptions, type StorageBucket, type StorageConfig, type StorageOperations, type SupabasePlatform, applyMigrationOptionsSchema, branchSchema, createBranchOptionsSchema, createProjectOptionsSchema, deployEdgeFunctionOptionsSchema, edgeFunctionSchema, executeSqlOptionsSchema, generateTypescriptTypesResultSchema, getLogsOptionsSchema, migrationSchema, organizationSchema, projectSchema, resetBranchOptionsSchema, storageBucketSchema, storageConfigSchema };
@@ -1,2 +1,2 @@
1
- import{f as a,g as b,h as c,i as d,j as e,k as f,l as g,m as h,n as i,o as j,p as k,q as l,r as m,s as n,t as o}from"../chunk-TSIYIWSV.js";export{l as applyMigrationOptionsSchema,e as branchSchema,h as createBranchOptionsSchema,g as createProjectOptionsSchema,j as deployEdgeFunctionOptionsSchema,f as edgeFunctionSchema,k as executeSqlOptionsSchema,o as generateTypescriptTypesResultSchema,n as getLogsOptionsSchema,m as migrationSchema,c as organizationSchema,d as projectSchema,i as resetBranchOptionsSchema,a as storageBucketSchema,b as storageConfigSchema};
1
+ import{i as a,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o}from"../chunk-7VYUDCV6.js";export{l as applyMigrationOptionsSchema,e as branchSchema,h as createBranchOptionsSchema,g as createProjectOptionsSchema,j as deployEdgeFunctionOptionsSchema,f as edgeFunctionSchema,k as executeSqlOptionsSchema,o as generateTypescriptTypesResultSchema,n as getLogsOptionsSchema,m as migrationSchema,c as organizationSchema,d as projectSchema,i as resetBranchOptionsSchema,a as storageBucketSchema,b as storageConfigSchema};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- "use strict"; function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkOT6YGU7Acjs = require('../chunk-OT6YGU7A.cjs');require('../chunk-42U7HZZC.cjs');var _stdiojs = require('@modelcontextprotocol/sdk/server/stdio.js');var _util = require('util');function p(r,o=","){return r.split(o).map(e=>e.trim()).filter(e=>e!=="")}var{version:d}=_chunkOT6YGU7Acjs.a;async function g(){let{values:{["access-token"]:r,["project-ref"]:o,["read-only"]:t,["api-url"]:e,["version"]:l,["features"]:s}}=_util.parseArgs.call(void 0, {options:{"access-token":{type:"string"},"project-ref":{type:"string"},"read-only":{type:"boolean",default:!1},"api-url":{type:"string"},version:{type:"boolean"},features:{type:"string"}}});l&&(console.log(d),process.exit(0));let n=_nullishCoalesce(r, () => (process.env.SUPABASE_ACCESS_TOKEN));n||(console.error("Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable"),process.exit(1));let f=s?p(s):void 0,m=_chunkOT6YGU7Acjs.b.call(void 0, {accessToken:n,apiUrl:e}),u=_chunkOT6YGU7Acjs.c.call(void 0, {platform:m,projectId:o,readOnly:t,features:f}),S=new _stdiojs.StdioServerTransport;await u.connect(S)}g().catch(console.error);
2
+ "use strict"; function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkWMARAA3Icjs = require('../chunk-WMARAA3I.cjs');var _chunk2E4PBGE7cjs = require('../chunk-2E4PBGE7.cjs');var _stdiojs = require('@modelcontextprotocol/sdk/server/stdio.js');var _util = require('util');function p(r,o=","){return r.split(o).map(e=>e.trim()).filter(e=>e!=="")}var{version:d}=_chunk2E4PBGE7cjs.a;async function g(){let{values:{["access-token"]:r,["project-ref"]:o,["read-only"]:t,["api-url"]:e,["version"]:l,["features"]:s}}=_util.parseArgs.call(void 0, {options:{"access-token":{type:"string"},"project-ref":{type:"string"},"read-only":{type:"boolean",default:!1},"api-url":{type:"string"},version:{type:"boolean"},features:{type:"string"}}});l&&(console.log(d),process.exit(0));let n=_nullishCoalesce(r, () => (process.env.SUPABASE_ACCESS_TOKEN));n||(console.error("Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable"),process.exit(1));let f=s?p(s):void 0,m=_chunkWMARAA3Icjs.a.call(void 0, {accessToken:n,apiUrl:e}),u=_chunk2E4PBGE7cjs.e.call(void 0, {platform:m,projectId:o,readOnly:t,features:f}),S=new _stdiojs.StdioServerTransport;await u.connect(S)}g().catch(console.error);
3
3
  //# sourceMappingURL=stdio.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/grichardson/Documents/dev/supabase/mcp-server-supabase/packages/mcp-server-supabase/dist/transports/stdio.cjs","../../src/transports/stdio.ts","../../src/transports/util.ts"],"names":["parseList","list","delimiter","feature","version","package_default","main","cliAccessToken","projectId","readOnly","apiUrl","showVersion","cliFeatures","parseArgs","accessToken","features","platform","createSupabaseApiPlatform","server","createSupabaseMcpServer","transport","StdioServerTransport"],"mappings":"AAAA;AACA,0KAA6C,iCAA8B,oECCtC,4BACX,SCGVA,CAAAA,CAAUC,CAAAA,CAAcC,CAAAA,CAAY,GAAA,CAAe,CAEjE,OADcD,CAAAA,CAAK,KAAA,CAAMC,CAAS,CAAA,CAAE,GAAA,CAAKC,CAAAA,EAAYA,CAAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CACtD,MAAA,CAAQA,CAAAA,EAAYA,CAAAA,GAAY,EAAE,CACjD,CDAA,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAIC,mBAAAA,CAEpB,MAAA,SAAeC,CAAAA,CAAAA,CAAO,CACpB,GAAM,CACJ,MAAA,CAAQ,CACN,CAAC,cAAc,CAAA,CAAGC,CAAAA,CAClB,CAAC,aAAa,CAAA,CAAGC,CAAAA,CACjB,CAAC,WAAW,CAAA,CAAGC,CAAAA,CACf,CAAC,SAAS,CAAA,CAAGC,CAAAA,CACb,CAAC,SAAS,CAAA,CAAGC,CAAAA,CACb,CAAC,UAAU,CAAA,CAAGC,CAChB,CACF,CAAA,CAAIC,6BAAAA,CACF,OAAA,CAAS,CACN,cAAA,CAAiB,CAChB,IAAA,CAAM,QACR,CAAA,CACC,aAAA,CAAgB,CACf,IAAA,CAAM,QACR,CAAA,CACC,WAAA,CAAc,CACb,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,CACX,CAAA,CACC,SAAA,CAAY,CACX,IAAA,CAAM,QACR,CAAA,CACC,OAAA,CAAY,CACX,IAAA,CAAM,SACR,CAAA,CACC,QAAA,CAAa,CACZ,IAAA,CAAM,QACR,CACF,CACF,CAAC,CAAA,CAEGF,CAAAA,EAAAA,CACF,OAAA,CAAQ,GAAA,CAAIP,CAAO,CAAA,CACnB,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGhB,IAAMU,CAAAA,kBAAcP,CAAAA,SAAkB,OAAA,CAAQ,GAAA,CAAI,uBAAA,CAE7CO,CAAAA,EAAAA,CACH,OAAA,CAAQ,KAAA,CACN,iIACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGhB,IAAMC,CAAAA,CAAWH,CAAAA,CAAcZ,CAAAA,CAAUY,CAAW,CAAA,CAAI,KAAA,CAAA,CAElDI,CAAAA,CAAWC,iCAAAA,CACf,WAAA,CAAAH,CAAAA,CACA,MAAA,CAAAJ,CACF,CAAC,CAAA,CAEKQ,CAAAA,CAASC,iCAAAA,CACb,QAAA,CAAAH,CAAAA,CACA,SAAA,CAAAR,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAM,CACF,CAAC,CAAA,CAEKK,CAAAA,CAAY,IAAIC,6BAAAA,CAEtB,MAAMH,CAAAA,CAAO,OAAA,CAAQE,CAAS,CAChC,CAEAd,CAAAA,CAAK,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA","file":"/Users/grichardson/Documents/dev/supabase/mcp-server-supabase/packages/mcp-server-supabase/dist/transports/stdio.cjs","sourcesContent":[null,"#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { parseArgs } from 'node:util';\nimport packageJson from '../../package.json' with { type: 'json' };\nimport { createSupabaseApiPlatform } from '../platform/api-platform.js';\nimport { createSupabaseMcpServer } from '../server.js';\nimport { parseList } from './util.js';\n\nconst { version } = packageJson;\n\nasync function main() {\n const {\n values: {\n ['access-token']: cliAccessToken,\n ['project-ref']: projectId,\n ['read-only']: readOnly,\n ['api-url']: apiUrl,\n ['version']: showVersion,\n ['features']: cliFeatures,\n },\n } = parseArgs({\n options: {\n ['access-token']: {\n type: 'string',\n },\n ['project-ref']: {\n type: 'string',\n },\n ['read-only']: {\n type: 'boolean',\n default: false,\n },\n ['api-url']: {\n type: 'string',\n },\n ['version']: {\n type: 'boolean',\n },\n ['features']: {\n type: 'string',\n },\n },\n });\n\n if (showVersion) {\n console.log(version);\n process.exit(0);\n }\n\n const accessToken = cliAccessToken ?? process.env.SUPABASE_ACCESS_TOKEN;\n\n if (!accessToken) {\n console.error(\n 'Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable'\n );\n process.exit(1);\n }\n\n const features = cliFeatures ? parseList(cliFeatures) : undefined;\n\n const platform = createSupabaseApiPlatform({\n accessToken,\n apiUrl,\n });\n\n const server = createSupabaseMcpServer({\n platform,\n projectId,\n readOnly,\n features,\n });\n\n const transport = new StdioServerTransport();\n\n await server.connect(transport);\n}\n\nmain().catch(console.error);\n","/**\n * Parses a delimited list of items into an array,\n * trimming whitespace and filtering out empty items.\n *\n * Default delimiter is a comma (`,`).\n */\nexport function parseList(list: string, delimiter = ','): string[] {\n const items = list.split(delimiter).map((feature) => feature.trim());\n return items.filter((feature) => feature !== '');\n}\n"]}
1
+ {"version":3,"sources":["/Users/grichardson/Documents/dev/supabase/mcp-server-supabase/packages/mcp-server-supabase/dist/transports/stdio.cjs","../../src/transports/stdio.ts","../../src/transports/util.ts"],"names":["parseList","list","delimiter","feature","version","package_default","main","cliAccessToken","projectId","readOnly","apiUrl","showVersion","cliFeatures","parseArgs","accessToken","features","platform","createSupabaseApiPlatform","server","createSupabaseMcpServer","transport","StdioServerTransport"],"mappings":"AAAA;AACA,0KAAyC,yDAA4C,oECChD,4BACX,SCGVA,CAAAA,CAAUC,CAAAA,CAAcC,CAAAA,CAAY,GAAA,CAAe,CAEjE,OADcD,CAAAA,CAAK,KAAA,CAAMC,CAAS,CAAA,CAAE,GAAA,CAAKC,CAAAA,EAAYA,CAAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CACtD,MAAA,CAAQA,CAAAA,EAAYA,CAAAA,GAAY,EAAE,CACjD,CDAA,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAIC,mBAAAA,CAEpB,MAAA,SAAeC,CAAAA,CAAAA,CAAO,CACpB,GAAM,CACJ,MAAA,CAAQ,CACN,CAAC,cAAc,CAAA,CAAGC,CAAAA,CAClB,CAAC,aAAa,CAAA,CAAGC,CAAAA,CACjB,CAAC,WAAW,CAAA,CAAGC,CAAAA,CACf,CAAC,SAAS,CAAA,CAAGC,CAAAA,CACb,CAAC,SAAS,CAAA,CAAGC,CAAAA,CACb,CAAC,UAAU,CAAA,CAAGC,CAChB,CACF,CAAA,CAAIC,6BAAAA,CACF,OAAA,CAAS,CACN,cAAA,CAAiB,CAChB,IAAA,CAAM,QACR,CAAA,CACC,aAAA,CAAgB,CACf,IAAA,CAAM,QACR,CAAA,CACC,WAAA,CAAc,CACb,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,CACX,CAAA,CACC,SAAA,CAAY,CACX,IAAA,CAAM,QACR,CAAA,CACC,OAAA,CAAY,CACX,IAAA,CAAM,SACR,CAAA,CACC,QAAA,CAAa,CACZ,IAAA,CAAM,QACR,CACF,CACF,CAAC,CAAA,CAEGF,CAAAA,EAAAA,CACF,OAAA,CAAQ,GAAA,CAAIP,CAAO,CAAA,CACnB,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGhB,IAAMU,CAAAA,kBAAcP,CAAAA,SAAkB,OAAA,CAAQ,GAAA,CAAI,uBAAA,CAE7CO,CAAAA,EAAAA,CACH,OAAA,CAAQ,KAAA,CACN,iIACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGhB,IAAMC,CAAAA,CAAWH,CAAAA,CAAcZ,CAAAA,CAAUY,CAAW,CAAA,CAAI,KAAA,CAAA,CAElDI,CAAAA,CAAWC,iCAAAA,CACf,WAAA,CAAAH,CAAAA,CACA,MAAA,CAAAJ,CACF,CAAC,CAAA,CAEKQ,CAAAA,CAASC,iCAAAA,CACb,QAAA,CAAAH,CAAAA,CACA,SAAA,CAAAR,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAM,CACF,CAAC,CAAA,CAEKK,CAAAA,CAAY,IAAIC,6BAAAA,CAEtB,MAAMH,CAAAA,CAAO,OAAA,CAAQE,CAAS,CAChC,CAEAd,CAAAA,CAAK,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA","file":"/Users/grichardson/Documents/dev/supabase/mcp-server-supabase/packages/mcp-server-supabase/dist/transports/stdio.cjs","sourcesContent":[null,"#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { parseArgs } from 'node:util';\nimport packageJson from '../../package.json' with { type: 'json' };\nimport { createSupabaseApiPlatform } from '../platform/api-platform.js';\nimport { createSupabaseMcpServer } from '../server.js';\nimport { parseList } from './util.js';\n\nconst { version } = packageJson;\n\nasync function main() {\n const {\n values: {\n ['access-token']: cliAccessToken,\n ['project-ref']: projectId,\n ['read-only']: readOnly,\n ['api-url']: apiUrl,\n ['version']: showVersion,\n ['features']: cliFeatures,\n },\n } = parseArgs({\n options: {\n ['access-token']: {\n type: 'string',\n },\n ['project-ref']: {\n type: 'string',\n },\n ['read-only']: {\n type: 'boolean',\n default: false,\n },\n ['api-url']: {\n type: 'string',\n },\n ['version']: {\n type: 'boolean',\n },\n ['features']: {\n type: 'string',\n },\n },\n });\n\n if (showVersion) {\n console.log(version);\n process.exit(0);\n }\n\n const accessToken = cliAccessToken ?? process.env.SUPABASE_ACCESS_TOKEN;\n\n if (!accessToken) {\n console.error(\n 'Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable'\n );\n process.exit(1);\n }\n\n const features = cliFeatures ? parseList(cliFeatures) : undefined;\n\n const platform = createSupabaseApiPlatform({\n accessToken,\n apiUrl,\n });\n\n const server = createSupabaseMcpServer({\n platform,\n projectId,\n readOnly,\n features,\n });\n\n const transport = new StdioServerTransport();\n\n await server.connect(transport);\n}\n\nmain().catch(console.error);\n","/**\n * Parses a delimited list of items into an array,\n * trimming whitespace and filtering out empty items.\n *\n * Default delimiter is a comma (`,`).\n */\nexport function parseList(list: string, delimiter = ','): string[] {\n const items = list.split(delimiter).map((feature) => feature.trim());\n return items.filter((feature) => feature !== '');\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{a,b as i,c}from"../chunk-Q2ALOOMK.js";import"../chunk-TSIYIWSV.js";import{StdioServerTransport as v}from"@modelcontextprotocol/sdk/server/stdio.js";import{parseArgs as y}from"node:util";function p(r,o=","){return r.split(o).map(e=>e.trim()).filter(e=>e!=="")}var{version:d}=a;async function g(){let{values:{["access-token"]:r,["project-ref"]:o,["read-only"]:t,["api-url"]:e,["version"]:l,["features"]:s}}=y({options:{"access-token":{type:"string"},"project-ref":{type:"string"},"read-only":{type:"boolean",default:!1},"api-url":{type:"string"},version:{type:"boolean"},features:{type:"string"}}});l&&(console.log(d),process.exit(0));let n=r??process.env.SUPABASE_ACCESS_TOKEN;n||(console.error("Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable"),process.exit(1));let f=s?p(s):void 0,m=i({accessToken:n,apiUrl:e}),u=c({platform:m,projectId:o,readOnly:t,features:f}),S=new v;await u.connect(S)}g().catch(console.error);
2
+ import{a as c}from"../chunk-LO7S72TA.js";import{a,e as i}from"../chunk-7VYUDCV6.js";import{StdioServerTransport as v}from"@modelcontextprotocol/sdk/server/stdio.js";import{parseArgs as y}from"node:util";function p(r,o=","){return r.split(o).map(e=>e.trim()).filter(e=>e!=="")}var{version:d}=a;async function g(){let{values:{["access-token"]:r,["project-ref"]:o,["read-only"]:t,["api-url"]:e,["version"]:l,["features"]:s}}=y({options:{"access-token":{type:"string"},"project-ref":{type:"string"},"read-only":{type:"boolean",default:!1},"api-url":{type:"string"},version:{type:"boolean"},features:{type:"string"}}});l&&(console.log(d),process.exit(0));let n=r??process.env.SUPABASE_ACCESS_TOKEN;n||(console.error("Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable"),process.exit(1));let f=s?p(s):void 0,m=c({accessToken:n,apiUrl:e}),u=i({platform:m,projectId:o,readOnly:t,features:f}),S=new v;await u.connect(S)}g().catch(console.error);
3
3
  //# sourceMappingURL=stdio.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transports/stdio.ts","../../src/transports/util.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { parseArgs } from 'node:util';\nimport packageJson from '../../package.json' with { type: 'json' };\nimport { createSupabaseApiPlatform } from '../platform/api-platform.js';\nimport { createSupabaseMcpServer } from '../server.js';\nimport { parseList } from './util.js';\n\nconst { version } = packageJson;\n\nasync function main() {\n const {\n values: {\n ['access-token']: cliAccessToken,\n ['project-ref']: projectId,\n ['read-only']: readOnly,\n ['api-url']: apiUrl,\n ['version']: showVersion,\n ['features']: cliFeatures,\n },\n } = parseArgs({\n options: {\n ['access-token']: {\n type: 'string',\n },\n ['project-ref']: {\n type: 'string',\n },\n ['read-only']: {\n type: 'boolean',\n default: false,\n },\n ['api-url']: {\n type: 'string',\n },\n ['version']: {\n type: 'boolean',\n },\n ['features']: {\n type: 'string',\n },\n },\n });\n\n if (showVersion) {\n console.log(version);\n process.exit(0);\n }\n\n const accessToken = cliAccessToken ?? process.env.SUPABASE_ACCESS_TOKEN;\n\n if (!accessToken) {\n console.error(\n 'Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable'\n );\n process.exit(1);\n }\n\n const features = cliFeatures ? parseList(cliFeatures) : undefined;\n\n const platform = createSupabaseApiPlatform({\n accessToken,\n apiUrl,\n });\n\n const server = createSupabaseMcpServer({\n platform,\n projectId,\n readOnly,\n features,\n });\n\n const transport = new StdioServerTransport();\n\n await server.connect(transport);\n}\n\nmain().catch(console.error);\n","/**\n * Parses a delimited list of items into an array,\n * trimming whitespace and filtering out empty items.\n *\n * Default delimiter is a comma (`,`).\n */\nexport function parseList(list: string, delimiter = ','): string[] {\n const items = list.split(delimiter).map((feature) => feature.trim());\n return items.filter((feature) => feature !== '');\n}\n"],"mappings":";0EAEA,OAAS,wBAAAA,MAA4B,4CACrC,OAAS,aAAAC,MAAiB,YCGnB,SAASC,EAAUC,EAAcC,EAAY,IAAe,CAEjE,OADcD,EAAK,MAAMC,CAAS,EAAE,IAAKC,GAAYA,EAAQ,KAAK,CAAC,EACtD,OAAQA,GAAYA,IAAY,EAAE,CACjD,CDAA,GAAM,CAAE,QAAAC,CAAQ,EAAIC,EAEpB,eAAeC,GAAO,CACpB,GAAM,CACJ,OAAQ,CACN,CAAC,cAAc,EAAGC,EAClB,CAAC,aAAa,EAAGC,EACjB,CAAC,WAAW,EAAGC,EACf,CAAC,SAAS,EAAGC,EACb,CAAC,SAAS,EAAGC,EACb,CAAC,UAAU,EAAGC,CAChB,CACF,EAAIC,EAAU,CACZ,QAAS,CACN,eAAiB,CAChB,KAAM,QACR,EACC,cAAgB,CACf,KAAM,QACR,EACC,YAAc,CACb,KAAM,UACN,QAAS,EACX,EACC,UAAY,CACX,KAAM,QACR,EACC,QAAY,CACX,KAAM,SACR,EACC,SAAa,CACZ,KAAM,QACR,CACF,CACF,CAAC,EAEGF,IACF,QAAQ,IAAIP,CAAO,EACnB,QAAQ,KAAK,CAAC,GAGhB,IAAMU,EAAcP,GAAkB,QAAQ,IAAI,sBAE7CO,IACH,QAAQ,MACN,iIACF,EACA,QAAQ,KAAK,CAAC,GAGhB,IAAMC,EAAWH,EAAcI,EAAUJ,CAAW,EAAI,OAElDK,EAAWC,EAA0B,CACzC,YAAAJ,EACA,OAAAJ,CACF,CAAC,EAEKS,EAASC,EAAwB,CACrC,SAAAH,EACA,UAAAT,EACA,SAAAC,EACA,SAAAM,CACF,CAAC,EAEKM,EAAY,IAAIC,EAEtB,MAAMH,EAAO,QAAQE,CAAS,CAChC,CAEAf,EAAK,EAAE,MAAM,QAAQ,KAAK","names":["StdioServerTransport","parseArgs","parseList","list","delimiter","feature","version","package_default","main","cliAccessToken","projectId","readOnly","apiUrl","showVersion","cliFeatures","parseArgs","accessToken","features","parseList","platform","createSupabaseApiPlatform","server","createSupabaseMcpServer","transport","StdioServerTransport"]}
1
+ {"version":3,"sources":["../../src/transports/stdio.ts","../../src/transports/util.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { parseArgs } from 'node:util';\nimport packageJson from '../../package.json' with { type: 'json' };\nimport { createSupabaseApiPlatform } from '../platform/api-platform.js';\nimport { createSupabaseMcpServer } from '../server.js';\nimport { parseList } from './util.js';\n\nconst { version } = packageJson;\n\nasync function main() {\n const {\n values: {\n ['access-token']: cliAccessToken,\n ['project-ref']: projectId,\n ['read-only']: readOnly,\n ['api-url']: apiUrl,\n ['version']: showVersion,\n ['features']: cliFeatures,\n },\n } = parseArgs({\n options: {\n ['access-token']: {\n type: 'string',\n },\n ['project-ref']: {\n type: 'string',\n },\n ['read-only']: {\n type: 'boolean',\n default: false,\n },\n ['api-url']: {\n type: 'string',\n },\n ['version']: {\n type: 'boolean',\n },\n ['features']: {\n type: 'string',\n },\n },\n });\n\n if (showVersion) {\n console.log(version);\n process.exit(0);\n }\n\n const accessToken = cliAccessToken ?? process.env.SUPABASE_ACCESS_TOKEN;\n\n if (!accessToken) {\n console.error(\n 'Please provide a personal access token (PAT) with the --access-token flag or set the SUPABASE_ACCESS_TOKEN environment variable'\n );\n process.exit(1);\n }\n\n const features = cliFeatures ? parseList(cliFeatures) : undefined;\n\n const platform = createSupabaseApiPlatform({\n accessToken,\n apiUrl,\n });\n\n const server = createSupabaseMcpServer({\n platform,\n projectId,\n readOnly,\n features,\n });\n\n const transport = new StdioServerTransport();\n\n await server.connect(transport);\n}\n\nmain().catch(console.error);\n","/**\n * Parses a delimited list of items into an array,\n * trimming whitespace and filtering out empty items.\n *\n * Default delimiter is a comma (`,`).\n */\nexport function parseList(list: string, delimiter = ','): string[] {\n const items = list.split(delimiter).map((feature) => feature.trim());\n return items.filter((feature) => feature !== '');\n}\n"],"mappings":";oFAEA,OAAS,wBAAAA,MAA4B,4CACrC,OAAS,aAAAC,MAAiB,YCGnB,SAASC,EAAUC,EAAcC,EAAY,IAAe,CAEjE,OADcD,EAAK,MAAMC,CAAS,EAAE,IAAKC,GAAYA,EAAQ,KAAK,CAAC,EACtD,OAAQA,GAAYA,IAAY,EAAE,CACjD,CDAA,GAAM,CAAE,QAAAC,CAAQ,EAAIC,EAEpB,eAAeC,GAAO,CACpB,GAAM,CACJ,OAAQ,CACN,CAAC,cAAc,EAAGC,EAClB,CAAC,aAAa,EAAGC,EACjB,CAAC,WAAW,EAAGC,EACf,CAAC,SAAS,EAAGC,EACb,CAAC,SAAS,EAAGC,EACb,CAAC,UAAU,EAAGC,CAChB,CACF,EAAIC,EAAU,CACZ,QAAS,CACN,eAAiB,CAChB,KAAM,QACR,EACC,cAAgB,CACf,KAAM,QACR,EACC,YAAc,CACb,KAAM,UACN,QAAS,EACX,EACC,UAAY,CACX,KAAM,QACR,EACC,QAAY,CACX,KAAM,SACR,EACC,SAAa,CACZ,KAAM,QACR,CACF,CACF,CAAC,EAEGF,IACF,QAAQ,IAAIP,CAAO,EACnB,QAAQ,KAAK,CAAC,GAGhB,IAAMU,EAAcP,GAAkB,QAAQ,IAAI,sBAE7CO,IACH,QAAQ,MACN,iIACF,EACA,QAAQ,KAAK,CAAC,GAGhB,IAAMC,EAAWH,EAAcI,EAAUJ,CAAW,EAAI,OAElDK,EAAWC,EAA0B,CACzC,YAAAJ,EACA,OAAAJ,CACF,CAAC,EAEKS,EAASC,EAAwB,CACrC,SAAAH,EACA,UAAAT,EACA,SAAAC,EACA,SAAAM,CACF,CAAC,EAEKM,EAAY,IAAIC,EAEtB,MAAMH,EAAO,QAAQE,CAAS,CAChC,CAEAf,EAAK,EAAE,MAAM,QAAQ,KAAK","names":["StdioServerTransport","parseArgs","parseList","list","delimiter","feature","version","package_default","main","cliAccessToken","projectId","readOnly","apiUrl","showVersion","cliFeatures","parseArgs","accessToken","features","parseList","platform","createSupabaseApiPlatform","server","createSupabaseMcpServer","transport","StdioServerTransport"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supabase/mcp-server-supabase",
3
- "version": "0.4.5",
3
+ "version": "0.5.0-dev.1",
4
4
  "description": "MCP server for interacting with Supabase",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,3 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _zod = require('zod');function d(n){return Object.fromEntries(n.split(`
2
- `).map(l=>l.split(/=(.*)/)).filter(([l])=>l).map(([l,e])=>[l,_nullishCoalesce(e, () => (""))]))}async function h(n,l){let e=JSON.stringify(n,(r,g)=>g&&typeof g=="object"&&!Array.isArray(g)?Object.keys(g).sort().reduce((c,p)=>(c[p]=g[p],c),{}):g),a=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(a))).slice(0,l)}var S=6371,u="https://www.cloudflare.com/cdn-cgi/trace",y={AF:{lat:33,lng:65},AX:{lat:60.116667,lng:19.9},AL:{lat:41,lng:20},DZ:{lat:28,lng:3},AS:{lat:-14.3333,lng:-170},AD:{lat:42.5,lng:1.6},AO:{lat:-12.5,lng:18.5},AI:{lat:18.25,lng:-63.1667},AQ:{lat:-90,lng:0},AG:{lat:17.05,lng:-61.8},AR:{lat:-34,lng:-64},AM:{lat:40,lng:45},AW:{lat:12.5,lng:-69.9667},AU:{lat:-27,lng:133},AT:{lat:47.3333,lng:13.3333},AZ:{lat:40.5,lng:47.5},BS:{lat:24.25,lng:-76},BH:{lat:26,lng:50.55},BD:{lat:24,lng:90},BB:{lat:13.1667,lng:-59.5333},BY:{lat:53,lng:28},BE:{lat:50.8333,lng:4},BZ:{lat:17.25,lng:-88.75},BJ:{lat:9.5,lng:2.25},BM:{lat:32.3333,lng:-64.75},BT:{lat:27.5,lng:90.5},BO:{lat:-17,lng:-65},BQ:{lat:12.183333,lng:-68.233333},BA:{lat:44,lng:18},BW:{lat:-22,lng:24},BV:{lat:-54.4333,lng:3.4},BR:{lat:-10,lng:-55},IO:{lat:-6,lng:71.5},BN:{lat:4.5,lng:114.6667},BG:{lat:43,lng:25},BF:{lat:13,lng:-2},MM:{lat:22,lng:98},BI:{lat:-3.5,lng:30},KH:{lat:13,lng:105},CM:{lat:6,lng:12},CA:{lat:60,lng:-95},CV:{lat:16,lng:-24},KY:{lat:19.5,lng:-80.5},CF:{lat:7,lng:21},TD:{lat:15,lng:19},CL:{lat:-30,lng:-71},CN:{lat:35,lng:105},CX:{lat:-10.5,lng:105.6667},CC:{lat:-12.5,lng:96.8333},CO:{lat:4,lng:-72},KM:{lat:-12.1667,lng:44.25},CD:{lat:0,lng:25},CG:{lat:-1,lng:15},CK:{lat:-21.2333,lng:-159.7667},CR:{lat:10,lng:-84},CI:{lat:8,lng:-5},HR:{lat:45.1667,lng:15.5},CU:{lat:21.5,lng:-80},CW:{lat:12.166667,lng:-68.966667},CY:{lat:35,lng:33},CZ:{lat:49.75,lng:15.5},DK:{lat:56,lng:10},DJ:{lat:11.5,lng:43},DM:{lat:15.4167,lng:-61.3333},DO:{lat:19,lng:-70.6667},EC:{lat:-2,lng:-77.5},EG:{lat:27,lng:30},SV:{lat:13.8333,lng:-88.9167},GQ:{lat:2,lng:10},ER:{lat:15,lng:39},EE:{lat:59,lng:26},ET:{lat:8,lng:38},FK:{lat:-51.75,lng:-59},FO:{lat:62,lng:-7},FJ:{lat:-18,lng:175},FI:{lat:64,lng:26},FR:{lat:46,lng:2},GF:{lat:4,lng:-53},PF:{lat:-15,lng:-140},TF:{lat:-43,lng:67},GA:{lat:-1,lng:11.75},GM:{lat:13.4667,lng:-16.5667},GE:{lat:42,lng:43.5},DE:{lat:51,lng:9},GH:{lat:8,lng:-2},GI:{lat:36.1833,lng:-5.3667},GR:{lat:39,lng:22},GL:{lat:72,lng:-40},GD:{lat:12.1167,lng:-61.6667},GP:{lat:16.25,lng:-61.5833},GU:{lat:13.4667,lng:144.7833},GT:{lat:15.5,lng:-90.25},GG:{lat:49.5,lng:-2.56},GW:{lat:12,lng:-15},GN:{lat:11,lng:-10},GY:{lat:5,lng:-59},HT:{lat:19,lng:-72.4167},HM:{lat:-53.1,lng:72.5167},VA:{lat:41.9,lng:12.45},HN:{lat:15,lng:-86.5},HK:{lat:22.25,lng:114.1667},HU:{lat:47,lng:20},IS:{lat:65,lng:-18},IN:{lat:20,lng:77},ID:{lat:-5,lng:120},IR:{lat:32,lng:53},IQ:{lat:33,lng:44},IE:{lat:53,lng:-8},IM:{lat:54.23,lng:-4.55},IL:{lat:31.5,lng:34.75},IT:{lat:42.8333,lng:12.8333},JM:{lat:18.25,lng:-77.5},JP:{lat:36,lng:138},JE:{lat:49.21,lng:-2.13},JO:{lat:31,lng:36},KZ:{lat:48,lng:68},KE:{lat:1,lng:38},KI:{lat:1.4167,lng:173},KP:{lat:40,lng:127},KR:{lat:37,lng:127.5},XK:{lat:42.583333,lng:21},KW:{lat:29.3375,lng:47.6581},KG:{lat:41,lng:75},LA:{lat:18,lng:105},LV:{lat:57,lng:25},LB:{lat:33.8333,lng:35.8333},LS:{lat:-29.5,lng:28.5},LR:{lat:6.5,lng:-9.5},LY:{lat:25,lng:17},LI:{lat:47.1667,lng:9.5333},LT:{lat:56,lng:24},LU:{lat:49.75,lng:6.1667},MO:{lat:22.1667,lng:113.55},MK:{lat:41.8333,lng:22},MG:{lat:-20,lng:47},MW:{lat:-13.5,lng:34},MY:{lat:2.5,lng:112.5},MV:{lat:3.25,lng:73},ML:{lat:17,lng:-4},MT:{lat:35.8333,lng:14.5833},MH:{lat:9,lng:168},MQ:{lat:14.6667,lng:-61},MR:{lat:20,lng:-12},MU:{lat:-20.2833,lng:57.55},YT:{lat:-12.8333,lng:45.1667},MX:{lat:23,lng:-102},FM:{lat:6.9167,lng:158.25},MD:{lat:47,lng:29},MC:{lat:43.7333,lng:7.4},MN:{lat:46,lng:105},ME:{lat:42,lng:19},MS:{lat:16.75,lng:-62.2},MA:{lat:32,lng:-5},MZ:{lat:-18.25,lng:35},NA:{lat:-22,lng:17},NR:{lat:-.5333,lng:166.9167},NP:{lat:28,lng:84},AN:{lat:12.25,lng:-68.75},NL:{lat:52.5,lng:5.75},NC:{lat:-21.5,lng:165.5},NZ:{lat:-41,lng:174},NI:{lat:13,lng:-85},NE:{lat:16,lng:8},NG:{lat:10,lng:8},NU:{lat:-19.0333,lng:-169.8667},NF:{lat:-29.0333,lng:167.95},MP:{lat:15.2,lng:145.75},NO:{lat:62,lng:10},OM:{lat:21,lng:57},PK:{lat:30,lng:70},PW:{lat:7.5,lng:134.5},PS:{lat:32,lng:35.25},PA:{lat:9,lng:-80},PG:{lat:-6,lng:147},PY:{lat:-23,lng:-58},PE:{lat:-10,lng:-76},PH:{lat:13,lng:122},PN:{lat:-24.7,lng:-127.4},PL:{lat:52,lng:20},PT:{lat:39.5,lng:-8},PR:{lat:18.25,lng:-66.5},QA:{lat:25.5,lng:51.25},RE:{lat:-21.1,lng:55.6},RO:{lat:46,lng:25},RU:{lat:60,lng:100},RW:{lat:-2,lng:30},BL:{lat:17.897728,lng:-62.834244},SH:{lat:-15.9333,lng:-5.7},KN:{lat:17.3333,lng:-62.75},LC:{lat:13.8833,lng:-61.1333},MF:{lat:18.075278,lng:-63.06},PM:{lat:46.8333,lng:-56.3333},VC:{lat:13.25,lng:-61.2},WS:{lat:-13.5833,lng:-172.3333},SM:{lat:43.7667,lng:12.4167},ST:{lat:1,lng:7},SA:{lat:25,lng:45},SN:{lat:14,lng:-14},RS:{lat:44,lng:21},SC:{lat:-4.5833,lng:55.6667},SL:{lat:8.5,lng:-11.5},SG:{lat:1.3667,lng:103.8},SX:{lat:18.033333,lng:-63.05},SK:{lat:48.6667,lng:19.5},SI:{lat:46,lng:15},SB:{lat:-8,lng:159},SO:{lat:10,lng:49},ZA:{lat:-29,lng:24},GS:{lat:-54.5,lng:-37},SS:{lat:8,lng:30},ES:{lat:40,lng:-4},LK:{lat:7,lng:81},SD:{lat:15,lng:30},SR:{lat:4,lng:-56},SJ:{lat:78,lng:20},SZ:{lat:-26.5,lng:31.5},SE:{lat:62,lng:15},CH:{lat:47,lng:8},SY:{lat:35,lng:38},TW:{lat:23.5,lng:121},TJ:{lat:39,lng:71},TZ:{lat:-6,lng:35},TH:{lat:15,lng:100},TL:{lat:-8.55,lng:125.5167},TG:{lat:8,lng:1.1667},TK:{lat:-9,lng:-172},TO:{lat:-20,lng:-175},TT:{lat:11,lng:-61},TN:{lat:34,lng:9},TR:{lat:39,lng:35},TM:{lat:40,lng:60},TC:{lat:21.75,lng:-71.5833},TV:{lat:-8,lng:178},UG:{lat:1,lng:32},UA:{lat:49,lng:32},AE:{lat:24,lng:54},GB:{lat:54,lng:-2},UM:{lat:19.2833,lng:166.6},US:{lat:38,lng:-97},UY:{lat:-33,lng:-56},UZ:{lat:41,lng:64},VU:{lat:-16,lng:167},VE:{lat:8,lng:-66},VN:{lat:16,lng:106},VG:{lat:18.5,lng:-64.5},VI:{lat:18.3333,lng:-64.8333},WF:{lat:-13.3,lng:-176.2},EH:{lat:24.5,lng:-13},YE:{lat:15,lng:48},ZM:{lat:-15,lng:30},ZW:{lat:-20,lng:30}},s={WEST_US:{code:"us-west-1",displayName:"West US (North California)",location:{lat:37.774929,lng:-122.419418}},EAST_US:{code:"us-east-1",displayName:"East US (North Virginia)",location:{lat:37.926868,lng:-78.024902}},EAST_US_2:{code:"us-east-2",displayName:"East US (Ohio)",location:{lat:39.9612,lng:-82.9988}},CENTRAL_CANADA:{code:"ca-central-1",displayName:"Canada (Central)",location:{lat:56.130367,lng:-106.346771}},WEST_EU:{code:"eu-west-1",displayName:"West EU (Ireland)",location:{lat:53.3498,lng:-6.2603}},WEST_EU_2:{code:"eu-west-2",displayName:"West Europe (London)",location:{lat:51.507351,lng:-.127758}},WEST_EU_3:{code:"eu-west-3",displayName:"West EU (Paris)",location:{lat:2.352222,lng:48.856613}},CENTRAL_EU:{code:"eu-central-1",displayName:"Central EU (Frankfurt)",location:{lat:50.110924,lng:8.682127}},CENTRAL_EU_2:{code:"eu-central-2",displayName:"Central Europe (Zurich)",location:{lat:47.3744489,lng:8.5410422}},NORTH_EU:{code:"eu-north-1",displayName:"North EU (Stockholm)",location:{lat:59.3251172,lng:18.0710935}},SOUTH_ASIA:{code:"ap-south-1",displayName:"South Asia (Mumbai)",location:{lat:18.9733536,lng:72.8281049}},SOUTHEAST_ASIA:{code:"ap-southeast-1",displayName:"Southeast Asia (Singapore)",location:{lat:1.357107,lng:103.8194992}},NORTHEAST_ASIA:{code:"ap-northeast-1",displayName:"Northeast Asia (Tokyo)",location:{lat:35.6895,lng:139.6917}},NORTHEAST_ASIA_2:{code:"ap-northeast-2",displayName:"Northeast Asia (Seoul)",location:{lat:37.5665,lng:126.978}},OCEANIA:{code:"ap-southeast-2",displayName:"Oceania (Sydney)",location:{lat:-33.8688,lng:151.2093}},SOUTH_AMERICA:{code:"sa-east-1",displayName:"South America (S\xE3o Paulo)",location:{lat:-1.2043218,lng:-47.1583944}}},m= exports.b =Object.values(s).map(n=>n.code);function E(n){let e=Object.entries(s).map(([o,r])=>[o,f(n,r.location)]).reduce((o,r)=>o===void 0||r[1]<o[1]?r:o,void 0);if(!e)throw new Error("no closest region found");let[a]=e;return s[a]}async function O(){let l=await(await fetch(u)).text(),a=d(l).loc;if(!a)throw new Error("location not found");return a}function I(n){let l=y[n];if(!l)throw new Error(`unknown location code: ${n}`);return l}function f(n,l){let e=i(l.lat-n.lat),a=i(l.lng-n.lng),o=Math.sin(e/2)*Math.sin(e/2)+Math.cos(i(n.lat))*Math.cos(i(l.lat))*Math.sin(a/2)*Math.sin(a/2),r=2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o));return S*r}function i(n){return n*(Math.PI/180)}var C=_zod.z.object({id:_zod.z.string(),name:_zod.z.string(),owner:_zod.z.string(),created_at:_zod.z.string(),updated_at:_zod.z.string(),public:_zod.z.boolean()}),b= exports.g =_zod.z.object({fileSizeLimit:_zod.z.number(),features:_zod.z.object({imageTransformation:_zod.z.object({enabled:_zod.z.boolean()}),s3Protocol:_zod.z.object({enabled:_zod.z.boolean()})})}),x= exports.h =_zod.z.object({id:_zod.z.string(),name:_zod.z.string(),plan:_zod.z.string().optional(),allowed_release_channels:_zod.z.array(_zod.z.string()),opt_in_tags:_zod.z.array(_zod.z.string())}),j= exports.i =_zod.z.object({id:_zod.z.string(),organization_id:_zod.z.string(),name:_zod.z.string(),status:_zod.z.string(),created_at:_zod.z.string(),region:_zod.z.string()}),M= exports.j =_zod.z.object({id:_zod.z.string(),name:_zod.z.string(),project_ref:_zod.z.string(),parent_project_ref:_zod.z.string(),is_default:_zod.z.boolean(),git_branch:_zod.z.string().optional(),pr_number:_zod.z.number().optional(),latest_check_run_id:_zod.z.number().optional(),persistent:_zod.z.boolean(),status:_zod.z.enum(["CREATING_PROJECT","RUNNING_MIGRATIONS","MIGRATIONS_PASSED","MIGRATIONS_FAILED","FUNCTIONS_DEPLOYED","FUNCTIONS_FAILED"]),created_at:_zod.z.string(),updated_at:_zod.z.string()}),R= exports.k =_zod.z.object({id:_zod.z.string(),slug:_zod.z.string(),name:_zod.z.string(),status:_zod.z.string(),version:_zod.z.number(),created_at:_zod.z.number().optional(),updated_at:_zod.z.number().optional(),verify_jwt:_zod.z.boolean().optional(),import_map:_zod.z.boolean().optional(),import_map_path:_zod.z.string().optional(),entrypoint_path:_zod.z.string().optional(),files:_zod.z.array(_zod.z.object({name:_zod.z.string(),content:_zod.z.string()}))}),U= exports.l =_zod.z.object({name:_zod.z.string(),organization_id:_zod.z.string(),region:_zod.z.enum(m).optional(),db_pass:_zod.z.string().optional()}),L= exports.m =_zod.z.object({name:_zod.z.string()}),B= exports.n =_zod.z.object({migration_version:_zod.z.string().optional()}),G= exports.o =_zod.z.object({name:_zod.z.string(),entrypoint_path:_zod.z.string(),import_map_path:_zod.z.string().optional(),files:_zod.z.array(_zod.z.object({name:_zod.z.string(),content:_zod.z.string()}))}),F= exports.p =_zod.z.object({query:_zod.z.string(),read_only:_zod.z.boolean().optional()}),w= exports.q =_zod.z.object({name:_zod.z.string(),query:_zod.z.string()}),D= exports.r =_zod.z.object({version:_zod.z.string(),name:_zod.z.string().optional()}),z= exports.s =_zod.z.object({sql:_zod.z.string(),iso_timestamp_start:_zod.z.string().optional(),iso_timestamp_end:_zod.z.string().optional()}),H= exports.t =_zod.z.object({types:_zod.z.string()});exports.a = h; exports.b = m; exports.c = E; exports.d = O; exports.e = I; exports.f = C; exports.g = b; exports.h = x; exports.i = j; exports.j = M; exports.k = R; exports.l = U; exports.m = L; exports.n = B; exports.o = G; exports.p = F; exports.q = w; exports.r = D; exports.s = z; exports.t = H;
3
- //# sourceMappingURL=chunk-42U7HZZC.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/platform/types.ts","../src/util.ts","../src/regions.ts"],"names":["parseKeyValueList","data","item","key","value","hashObject","obj","length","str","_","result","buffer","EARTH_RADIUS","TRACE_URL","COUNTRY_COORDINATES","AWS_REGIONS","AWS_REGION_CODES","region","getClosestAwsRegion","location","closestRegion","name","getDistance","min","current","regionName","getCountryCode","countryCode","getCountryCoordinates"],"mappings":"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","file":"/Users/grichardson/Documents/dev/supabase/mcp-server-supabase/packages/mcp-server-supabase/dist/chunk-42U7HZZC.cjs","sourcesContent":["import type { InitData } from '@supabase/mcp-utils';\nimport { z } from 'zod';\nimport { AWS_REGION_CODES } from '../regions.js';\n\nexport const storageBucketSchema = z.object({\n id: z.string(),\n name: z.string(),\n owner: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n public: z.boolean(),\n});\n\nexport const storageConfigSchema = z.object({\n fileSizeLimit: z.number(),\n features: z.object({\n imageTransformation: z.object({ enabled: z.boolean() }),\n s3Protocol: z.object({ enabled: z.boolean() }),\n }),\n});\n\nexport const organizationSchema = z.object({\n id: z.string(),\n name: z.string(),\n plan: z.string().optional(),\n allowed_release_channels: z.array(z.string()),\n opt_in_tags: z.array(z.string()),\n});\n\nexport const projectSchema = z.object({\n id: z.string(),\n organization_id: z.string(),\n name: z.string(),\n status: z.string(),\n created_at: z.string(),\n region: z.string(),\n});\n\nexport const branchSchema = z.object({\n id: z.string(),\n name: z.string(),\n project_ref: z.string(),\n parent_project_ref: z.string(),\n is_default: z.boolean(),\n git_branch: z.string().optional(),\n pr_number: z.number().optional(),\n latest_check_run_id: z.number().optional(),\n persistent: z.boolean(),\n status: z.enum([\n 'CREATING_PROJECT',\n 'RUNNING_MIGRATIONS',\n 'MIGRATIONS_PASSED',\n 'MIGRATIONS_FAILED',\n 'FUNCTIONS_DEPLOYED',\n 'FUNCTIONS_FAILED',\n ]),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const edgeFunctionSchema = z.object({\n id: z.string(),\n slug: z.string(),\n name: z.string(),\n status: z.string(),\n version: z.number(),\n created_at: z.number().optional(),\n updated_at: z.number().optional(),\n verify_jwt: z.boolean().optional(),\n import_map: z.boolean().optional(),\n import_map_path: z.string().optional(),\n entrypoint_path: z.string().optional(),\n files: z.array(\n z.object({\n name: z.string(),\n content: z.string(),\n })\n ),\n});\n\nexport const createProjectOptionsSchema = z.object({\n name: z.string(),\n organization_id: z.string(),\n region: z.enum(AWS_REGION_CODES).optional(),\n db_pass: z.string().optional(),\n});\n\nexport const createBranchOptionsSchema = z.object({\n name: z.string(),\n});\n\nexport const resetBranchOptionsSchema = z.object({\n migration_version: z.string().optional(),\n});\n\nexport const deployEdgeFunctionOptionsSchema = z.object({\n name: z.string(),\n entrypoint_path: z.string(),\n import_map_path: z.string().optional(),\n files: z.array(\n z.object({\n name: z.string(),\n content: z.string(),\n })\n ),\n});\n\nexport const executeSqlOptionsSchema = z.object({\n query: z.string(),\n read_only: z.boolean().optional(),\n});\n\nexport const applyMigrationOptionsSchema = z.object({\n name: z.string(),\n query: z.string(),\n});\n\nexport const migrationSchema = z.object({\n version: z.string(),\n name: z.string().optional(),\n});\n\nexport const getLogsOptionsSchema = z.object({\n sql: z.string(),\n iso_timestamp_start: z.string().optional(),\n iso_timestamp_end: z.string().optional(),\n});\n\nexport const generateTypescriptTypesResultSchema = z.object({\n types: z.string(),\n});\n\nexport type Organization = z.infer<typeof organizationSchema>;\nexport type Project = z.infer<typeof projectSchema>;\nexport type Branch = z.infer<typeof branchSchema>;\nexport type EdgeFunction = z.infer<typeof edgeFunctionSchema>;\n\nexport type CreateProjectOptions = z.infer<typeof createProjectOptionsSchema>;\nexport type CreateBranchOptions = z.infer<typeof createBranchOptionsSchema>;\nexport type ResetBranchOptions = z.infer<typeof resetBranchOptionsSchema>;\nexport type DeployEdgeFunctionOptions = z.infer<\n typeof deployEdgeFunctionOptionsSchema\n>;\n\nexport type ExecuteSqlOptions = z.infer<typeof executeSqlOptionsSchema>;\nexport type ApplyMigrationOptions = z.infer<typeof applyMigrationOptionsSchema>;\nexport type Migration = z.infer<typeof migrationSchema>;\nexport type ListMigrationsResult = z.infer<typeof migrationSchema>;\n\nexport type GetLogsOptions = z.infer<typeof getLogsOptionsSchema>;\nexport type GenerateTypescriptTypesResult = z.infer<\n typeof generateTypescriptTypesResultSchema\n>;\n\nexport type StorageConfig = z.infer<typeof storageConfigSchema>;\nexport type StorageBucket = z.infer<typeof storageBucketSchema>;\n\nexport type SupabasePlatform = {\n init?(info: InitData): Promise<void>;\n\n // Database operations\n executeSql<T>(projectId: string, options: ExecuteSqlOptions): Promise<T[]>;\n listMigrations(projectId: string): Promise<Migration[]>;\n applyMigration(\n projectId: string,\n options: ApplyMigrationOptions\n ): Promise<void>;\n\n // Account\n listOrganizations(): Promise<Pick<Organization, 'id' | 'name'>[]>;\n getOrganization(organizationId: string): Promise<Organization>;\n listProjects(): Promise<Project[]>;\n getProject(projectId: string): Promise<Project>;\n createProject(options: CreateProjectOptions): Promise<Project>;\n pauseProject(projectId: string): Promise<void>;\n restoreProject(projectId: string): Promise<void>;\n\n // Edge functions\n listEdgeFunctions(projectId: string): Promise<EdgeFunction[]>;\n getEdgeFunction(\n projectId: string,\n functionSlug: string\n ): Promise<EdgeFunction>;\n deployEdgeFunction(\n projectId: string,\n options: DeployEdgeFunctionOptions\n ): Promise<Omit<EdgeFunction, 'files'>>;\n\n // Debugging\n getLogs(projectId: string, options: GetLogsOptions): Promise<unknown>;\n getSecurityAdvisors(projectId: string): Promise<unknown>;\n getPerformanceAdvisors(projectId: string): Promise<unknown>;\n\n // Development\n getProjectUrl(projectId: string): Promise<string>;\n getAnonKey(projectId: string): Promise<string>;\n generateTypescriptTypes(\n projectId: string\n ): Promise<GenerateTypescriptTypesResult>;\n\n // Branching\n listBranches(projectId: string): Promise<Branch[]>;\n createBranch(\n projectId: string,\n options: CreateBranchOptions\n ): Promise<Branch>;\n deleteBranch(branchId: string): Promise<void>;\n mergeBranch(branchId: string): Promise<void>;\n resetBranch(branchId: string, options: ResetBranchOptions): Promise<void>;\n rebaseBranch(branchId: string): Promise<void>;\n\n // Storage\n getStorageConfig(projectId: string): Promise<StorageConfig>;\n updateStorageConfig(projectId: string, config: StorageConfig): Promise<void>;\n listAllBuckets(projectId: string): Promise<StorageBucket[]>;\n};\n","export type ValueOf<T> = T[keyof T];\n\n// UnionToIntersection<A | B> = A & B\nexport type UnionToIntersection<U> = (\n U extends unknown\n ? (arg: U) => 0\n : never\n) extends (arg: infer I) => 0\n ? I\n : never;\n\n// LastInUnion<A | B> = B\nexport type LastInUnion<U> = UnionToIntersection<\n U extends unknown ? (x: U) => 0 : never\n> extends (x: infer L) => 0\n ? L\n : never;\n\n// UnionToTuple<A, B> = [A, B]\nexport type UnionToTuple<T, Last = LastInUnion<T>> = [T] extends [never]\n ? []\n : [Last, ...UnionToTuple<Exclude<T, Last>>];\n\n/**\n * Parses a key-value string into an object.\n *\n * @returns An object representing the key-value pairs\n *\n * @example\n * const result = parseKeyValueList(\"key1=value1\\nkey2=value2\");\n * console.log(result); // { key1: \"value1\", key2: \"value2\" }\n */\nexport function parseKeyValueList(data: string): { [key: string]: string } {\n return Object.fromEntries(\n data\n .split('\\n')\n .map((item) => item.split(/=(.*)/)) // split only on the first '='\n .filter(([key]) => key) // filter out empty keys\n .map(([key, value]) => [key, value ?? '']) // ensure value is not undefined\n );\n}\n\n/**\n * Creates a unique hash from a JavaScript object.\n * @param obj - The object to hash\n * @param length - Optional length to truncate the hash (default: full length)\n */\nexport async function hashObject(\n obj: Record<string, any>,\n length?: number\n): Promise<string> {\n // Sort object keys to ensure consistent output regardless of original key order\n const str = JSON.stringify(obj, (_, value) => {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return Object.keys(value)\n .sort()\n .reduce<Record<string, any>>((result, key) => {\n result[key] = value[key];\n return result;\n }, {});\n }\n return value;\n });\n\n const buffer = await crypto.subtle.digest(\n 'SHA-256',\n new TextEncoder().encode(str)\n );\n\n // Convert to base64\n const base64Hash = btoa(String.fromCharCode(...new Uint8Array(buffer)));\n return base64Hash.slice(0, length);\n}\n","import { parseKeyValueList, type UnionToTuple, type ValueOf } from './util.js';\n\nexport type AwsRegion = {\n code: string;\n displayName: string;\n location: Location;\n};\n\nexport type Location = {\n lat: number;\n lng: number;\n};\n\nexport const EARTH_RADIUS = 6371; // in kilometers\nexport const TRACE_URL = 'https://www.cloudflare.com/cdn-cgi/trace';\n\nexport const COUNTRY_COORDINATES = {\n AF: { lat: 33, lng: 65 },\n AX: { lat: 60.116667, lng: 19.9 },\n AL: { lat: 41, lng: 20 },\n DZ: { lat: 28, lng: 3 },\n AS: { lat: -14.3333, lng: -170 },\n AD: { lat: 42.5, lng: 1.6 },\n AO: { lat: -12.5, lng: 18.5 },\n AI: { lat: 18.25, lng: -63.1667 },\n AQ: { lat: -90, lng: 0 },\n AG: { lat: 17.05, lng: -61.8 },\n AR: { lat: -34, lng: -64 },\n AM: { lat: 40, lng: 45 },\n AW: { lat: 12.5, lng: -69.9667 },\n AU: { lat: -27, lng: 133 },\n AT: { lat: 47.3333, lng: 13.3333 },\n AZ: { lat: 40.5, lng: 47.5 },\n BS: { lat: 24.25, lng: -76 },\n BH: { lat: 26, lng: 50.55 },\n BD: { lat: 24, lng: 90 },\n BB: { lat: 13.1667, lng: -59.5333 },\n BY: { lat: 53, lng: 28 },\n BE: { lat: 50.8333, lng: 4 },\n BZ: { lat: 17.25, lng: -88.75 },\n BJ: { lat: 9.5, lng: 2.25 },\n BM: { lat: 32.3333, lng: -64.75 },\n BT: { lat: 27.5, lng: 90.5 },\n BO: { lat: -17, lng: -65 },\n BQ: { lat: 12.183333, lng: -68.233333 },\n BA: { lat: 44, lng: 18 },\n BW: { lat: -22, lng: 24 },\n BV: { lat: -54.4333, lng: 3.4 },\n BR: { lat: -10, lng: -55 },\n IO: { lat: -6, lng: 71.5 },\n BN: { lat: 4.5, lng: 114.6667 },\n BG: { lat: 43, lng: 25 },\n BF: { lat: 13, lng: -2 },\n MM: { lat: 22, lng: 98 },\n BI: { lat: -3.5, lng: 30 },\n KH: { lat: 13, lng: 105 },\n CM: { lat: 6, lng: 12 },\n CA: { lat: 60, lng: -95 },\n CV: { lat: 16, lng: -24 },\n KY: { lat: 19.5, lng: -80.5 },\n CF: { lat: 7, lng: 21 },\n TD: { lat: 15, lng: 19 },\n CL: { lat: -30, lng: -71 },\n CN: { lat: 35, lng: 105 },\n CX: { lat: -10.5, lng: 105.6667 },\n CC: { lat: -12.5, lng: 96.8333 },\n CO: { lat: 4, lng: -72 },\n KM: { lat: -12.1667, lng: 44.25 },\n CD: { lat: 0, lng: 25 },\n CG: { lat: -1, lng: 15 },\n CK: { lat: -21.2333, lng: -159.7667 },\n CR: { lat: 10, lng: -84 },\n CI: { lat: 8, lng: -5 },\n HR: { lat: 45.1667, lng: 15.5 },\n CU: { lat: 21.5, lng: -80 },\n CW: { lat: 12.166667, lng: -68.966667 },\n CY: { lat: 35, lng: 33 },\n CZ: { lat: 49.75, lng: 15.5 },\n DK: { lat: 56, lng: 10 },\n DJ: { lat: 11.5, lng: 43 },\n DM: { lat: 15.4167, lng: -61.3333 },\n DO: { lat: 19, lng: -70.6667 },\n EC: { lat: -2, lng: -77.5 },\n EG: { lat: 27, lng: 30 },\n SV: { lat: 13.8333, lng: -88.9167 },\n GQ: { lat: 2, lng: 10 },\n ER: { lat: 15, lng: 39 },\n EE: { lat: 59, lng: 26 },\n ET: { lat: 8, lng: 38 },\n FK: { lat: -51.75, lng: -59 },\n FO: { lat: 62, lng: -7 },\n FJ: { lat: -18, lng: 175 },\n FI: { lat: 64, lng: 26 },\n FR: { lat: 46, lng: 2 },\n GF: { lat: 4, lng: -53 },\n PF: { lat: -15, lng: -140 },\n TF: { lat: -43, lng: 67 },\n GA: { lat: -1, lng: 11.75 },\n GM: { lat: 13.4667, lng: -16.5667 },\n GE: { lat: 42, lng: 43.5 },\n DE: { lat: 51, lng: 9 },\n GH: { lat: 8, lng: -2 },\n GI: { lat: 36.1833, lng: -5.3667 },\n GR: { lat: 39, lng: 22 },\n GL: { lat: 72, lng: -40 },\n GD: { lat: 12.1167, lng: -61.6667 },\n GP: { lat: 16.25, lng: -61.5833 },\n GU: { lat: 13.4667, lng: 144.7833 },\n GT: { lat: 15.5, lng: -90.25 },\n GG: { lat: 49.5, lng: -2.56 },\n GW: { lat: 12, lng: -15 },\n GN: { lat: 11, lng: -10 },\n GY: { lat: 5, lng: -59 },\n HT: { lat: 19, lng: -72.4167 },\n HM: { lat: -53.1, lng: 72.5167 },\n VA: { lat: 41.9, lng: 12.45 },\n HN: { lat: 15, lng: -86.5 },\n HK: { lat: 22.25, lng: 114.1667 },\n HU: { lat: 47, lng: 20 },\n IS: { lat: 65, lng: -18 },\n IN: { lat: 20, lng: 77 },\n ID: { lat: -5, lng: 120 },\n IR: { lat: 32, lng: 53 },\n IQ: { lat: 33, lng: 44 },\n IE: { lat: 53, lng: -8 },\n IM: { lat: 54.23, lng: -4.55 },\n IL: { lat: 31.5, lng: 34.75 },\n IT: { lat: 42.8333, lng: 12.8333 },\n JM: { lat: 18.25, lng: -77.5 },\n JP: { lat: 36, lng: 138 },\n JE: { lat: 49.21, lng: -2.13 },\n JO: { lat: 31, lng: 36 },\n KZ: { lat: 48, lng: 68 },\n KE: { lat: 1, lng: 38 },\n KI: { lat: 1.4167, lng: 173 },\n KP: { lat: 40, lng: 127 },\n KR: { lat: 37, lng: 127.5 },\n XK: { lat: 42.583333, lng: 21 },\n KW: { lat: 29.3375, lng: 47.6581 },\n KG: { lat: 41, lng: 75 },\n LA: { lat: 18, lng: 105 },\n LV: { lat: 57, lng: 25 },\n LB: { lat: 33.8333, lng: 35.8333 },\n LS: { lat: -29.5, lng: 28.5 },\n LR: { lat: 6.5, lng: -9.5 },\n LY: { lat: 25, lng: 17 },\n LI: { lat: 47.1667, lng: 9.5333 },\n LT: { lat: 56, lng: 24 },\n LU: { lat: 49.75, lng: 6.1667 },\n MO: { lat: 22.1667, lng: 113.55 },\n MK: { lat: 41.8333, lng: 22 },\n MG: { lat: -20, lng: 47 },\n MW: { lat: -13.5, lng: 34 },\n MY: { lat: 2.5, lng: 112.5 },\n MV: { lat: 3.25, lng: 73 },\n ML: { lat: 17, lng: -4 },\n MT: { lat: 35.8333, lng: 14.5833 },\n MH: { lat: 9, lng: 168 },\n MQ: { lat: 14.6667, lng: -61 },\n MR: { lat: 20, lng: -12 },\n MU: { lat: -20.2833, lng: 57.55 },\n YT: { lat: -12.8333, lng: 45.1667 },\n MX: { lat: 23, lng: -102 },\n FM: { lat: 6.9167, lng: 158.25 },\n MD: { lat: 47, lng: 29 },\n MC: { lat: 43.7333, lng: 7.4 },\n MN: { lat: 46, lng: 105 },\n ME: { lat: 42, lng: 19 },\n MS: { lat: 16.75, lng: -62.2 },\n MA: { lat: 32, lng: -5 },\n MZ: { lat: -18.25, lng: 35 },\n NA: { lat: -22, lng: 17 },\n NR: { lat: -0.5333, lng: 166.9167 },\n NP: { lat: 28, lng: 84 },\n AN: { lat: 12.25, lng: -68.75 },\n NL: { lat: 52.5, lng: 5.75 },\n NC: { lat: -21.5, lng: 165.5 },\n NZ: { lat: -41, lng: 174 },\n NI: { lat: 13, lng: -85 },\n NE: { lat: 16, lng: 8 },\n NG: { lat: 10, lng: 8 },\n NU: { lat: -19.0333, lng: -169.8667 },\n NF: { lat: -29.0333, lng: 167.95 },\n MP: { lat: 15.2, lng: 145.75 },\n NO: { lat: 62, lng: 10 },\n OM: { lat: 21, lng: 57 },\n PK: { lat: 30, lng: 70 },\n PW: { lat: 7.5, lng: 134.5 },\n PS: { lat: 32, lng: 35.25 },\n PA: { lat: 9, lng: -80 },\n PG: { lat: -6, lng: 147 },\n PY: { lat: -23, lng: -58 },\n PE: { lat: -10, lng: -76 },\n PH: { lat: 13, lng: 122 },\n PN: { lat: -24.7, lng: -127.4 },\n PL: { lat: 52, lng: 20 },\n PT: { lat: 39.5, lng: -8 },\n PR: { lat: 18.25, lng: -66.5 },\n QA: { lat: 25.5, lng: 51.25 },\n RE: { lat: -21.1, lng: 55.6 },\n RO: { lat: 46, lng: 25 },\n RU: { lat: 60, lng: 100 },\n RW: { lat: -2, lng: 30 },\n BL: { lat: 17.897728, lng: -62.834244 },\n SH: { lat: -15.9333, lng: -5.7 },\n KN: { lat: 17.3333, lng: -62.75 },\n LC: { lat: 13.8833, lng: -61.1333 },\n MF: { lat: 18.075278, lng: -63.06 },\n PM: { lat: 46.8333, lng: -56.3333 },\n VC: { lat: 13.25, lng: -61.2 },\n WS: { lat: -13.5833, lng: -172.3333 },\n SM: { lat: 43.7667, lng: 12.4167 },\n ST: { lat: 1, lng: 7 },\n SA: { lat: 25, lng: 45 },\n SN: { lat: 14, lng: -14 },\n RS: { lat: 44, lng: 21 },\n SC: { lat: -4.5833, lng: 55.6667 },\n SL: { lat: 8.5, lng: -11.5 },\n SG: { lat: 1.3667, lng: 103.8 },\n SX: { lat: 18.033333, lng: -63.05 },\n SK: { lat: 48.6667, lng: 19.5 },\n SI: { lat: 46, lng: 15 },\n SB: { lat: -8, lng: 159 },\n SO: { lat: 10, lng: 49 },\n ZA: { lat: -29, lng: 24 },\n GS: { lat: -54.5, lng: -37 },\n SS: { lat: 8, lng: 30 },\n ES: { lat: 40, lng: -4 },\n LK: { lat: 7, lng: 81 },\n SD: { lat: 15, lng: 30 },\n SR: { lat: 4, lng: -56 },\n SJ: { lat: 78, lng: 20 },\n SZ: { lat: -26.5, lng: 31.5 },\n SE: { lat: 62, lng: 15 },\n CH: { lat: 47, lng: 8 },\n SY: { lat: 35, lng: 38 },\n TW: { lat: 23.5, lng: 121 },\n TJ: { lat: 39, lng: 71 },\n TZ: { lat: -6, lng: 35 },\n TH: { lat: 15, lng: 100 },\n TL: { lat: -8.55, lng: 125.5167 },\n TG: { lat: 8, lng: 1.1667 },\n TK: { lat: -9, lng: -172 },\n TO: { lat: -20, lng: -175 },\n TT: { lat: 11, lng: -61 },\n TN: { lat: 34, lng: 9 },\n TR: { lat: 39, lng: 35 },\n TM: { lat: 40, lng: 60 },\n TC: { lat: 21.75, lng: -71.5833 },\n TV: { lat: -8, lng: 178 },\n UG: { lat: 1, lng: 32 },\n UA: { lat: 49, lng: 32 },\n AE: { lat: 24, lng: 54 },\n GB: { lat: 54, lng: -2 },\n UM: { lat: 19.2833, lng: 166.6 },\n US: { lat: 38, lng: -97 },\n UY: { lat: -33, lng: -56 },\n UZ: { lat: 41, lng: 64 },\n VU: { lat: -16, lng: 167 },\n VE: { lat: 8, lng: -66 },\n VN: { lat: 16, lng: 106 },\n VG: { lat: 18.5, lng: -64.5 },\n VI: { lat: 18.3333, lng: -64.8333 },\n WF: { lat: -13.3, lng: -176.2 },\n EH: { lat: 24.5, lng: -13 },\n YE: { lat: 15, lng: 48 },\n ZM: { lat: -15, lng: 30 },\n ZW: { lat: -20, lng: 30 },\n} as const satisfies Record<string, Location>;\n\nexport const AWS_REGIONS = {\n WEST_US: {\n code: 'us-west-1',\n displayName: 'West US (North California)',\n location: { lat: 37.774929, lng: -122.419418 },\n },\n EAST_US: {\n code: 'us-east-1',\n displayName: 'East US (North Virginia)',\n location: { lat: 37.926868, lng: -78.024902 },\n },\n EAST_US_2: {\n code: 'us-east-2',\n displayName: 'East US (Ohio)',\n location: { lat: 39.9612, lng: -82.9988 },\n },\n CENTRAL_CANADA: {\n code: 'ca-central-1',\n displayName: 'Canada (Central)',\n location: { lat: 56.130367, lng: -106.346771 },\n },\n WEST_EU: {\n code: 'eu-west-1',\n displayName: 'West EU (Ireland)',\n location: { lat: 53.3498, lng: -6.2603 },\n },\n WEST_EU_2: {\n code: 'eu-west-2',\n displayName: 'West Europe (London)',\n location: { lat: 51.507351, lng: -0.127758 },\n },\n WEST_EU_3: {\n code: 'eu-west-3',\n displayName: 'West EU (Paris)',\n location: { lat: 2.352222, lng: 48.856613 },\n },\n CENTRAL_EU: {\n code: 'eu-central-1',\n displayName: 'Central EU (Frankfurt)',\n location: { lat: 50.110924, lng: 8.682127 },\n },\n CENTRAL_EU_2: {\n code: 'eu-central-2',\n displayName: 'Central Europe (Zurich)',\n location: { lat: 47.3744489, lng: 8.5410422 },\n },\n NORTH_EU: {\n code: 'eu-north-1',\n displayName: 'North EU (Stockholm)',\n location: { lat: 59.3251172, lng: 18.0710935 },\n },\n SOUTH_ASIA: {\n code: 'ap-south-1',\n displayName: 'South Asia (Mumbai)',\n location: { lat: 18.9733536, lng: 72.8281049 },\n },\n SOUTHEAST_ASIA: {\n code: 'ap-southeast-1',\n displayName: 'Southeast Asia (Singapore)',\n location: { lat: 1.357107, lng: 103.8194992 },\n },\n NORTHEAST_ASIA: {\n code: 'ap-northeast-1',\n displayName: 'Northeast Asia (Tokyo)',\n location: { lat: 35.6895, lng: 139.6917 },\n },\n NORTHEAST_ASIA_2: {\n code: 'ap-northeast-2',\n displayName: 'Northeast Asia (Seoul)',\n location: { lat: 37.5665, lng: 126.978 },\n },\n OCEANIA: {\n code: 'ap-southeast-2',\n displayName: 'Oceania (Sydney)',\n location: { lat: -33.8688, lng: 151.2093 },\n },\n SOUTH_AMERICA: {\n code: 'sa-east-1',\n displayName: 'South America (São Paulo)',\n location: { lat: -1.2043218, lng: -47.1583944 },\n },\n} as const satisfies Record<string, AwsRegion>;\n\nexport type RegionCodes = ValueOf<typeof AWS_REGIONS>['code'];\n\nexport const AWS_REGION_CODES = Object.values(AWS_REGIONS).map(\n (region) => region.code\n) as UnionToTuple<RegionCodes>;\n\n/**\n * Calculates the closest AWS region to a given location.\n */\nexport function getClosestAwsRegion(location: Location) {\n const distances = Object.entries(AWS_REGIONS).map<\n [region: string, distance: number]\n >(([name, region]) => {\n return [name, getDistance(location, region.location)] as const;\n });\n\n const closestRegion = distances.reduce<\n [region: string, distance: number] | undefined\n >(\n (min, current) =>\n min === undefined ? current : current[1] < min[1] ? current : min,\n undefined\n );\n\n if (!closestRegion) {\n throw new Error('no closest region found');\n }\n\n const [regionName] = closestRegion;\n\n return AWS_REGIONS[regionName as keyof typeof AWS_REGIONS];\n}\n\n/**\n * Fetches the user's country code based on their IP address.\n */\nexport async function getCountryCode() {\n const response = await fetch(TRACE_URL);\n const data = await response.text();\n const info = parseKeyValueList(data);\n const countryCode = info['loc'];\n\n if (!countryCode) {\n throw new Error('location not found');\n }\n\n return countryCode;\n}\n\n/**\n * Gets the approximate coordinates of a country based on its country code.\n */\nexport function getCountryCoordinates(countryCode: string) {\n const location: Location =\n COUNTRY_COORDINATES[countryCode as keyof typeof COUNTRY_COORDINATES];\n\n if (!location) {\n throw new Error(`unknown location code: ${countryCode}`);\n }\n\n return location;\n}\n\n/**\n * Calculates the distance between two points on Earth using the Haversine formula.\n *\n * @returns Distance between the points in kilometers\n */\nexport function getDistance(a: Location, b: Location): number {\n const lat = degreesToRadians(b.lat - a.lat);\n const lng = degreesToRadians(b.lng - a.lng);\n const a1 =\n Math.sin(lat / 2) * Math.sin(lat / 2) +\n Math.cos(degreesToRadians(a.lat)) *\n Math.cos(degreesToRadians(b.lat)) *\n Math.sin(lng / 2) *\n Math.sin(lng / 2);\n const c = 2 * Math.atan2(Math.sqrt(a1), Math.sqrt(1 - a1));\n return EARTH_RADIUS * c;\n}\n\n/**\n * Converts degrees to radians\n *\n * @returns The angle in radians\n */\nexport function degreesToRadians(deg: number): number {\n return deg * (Math.PI / 180);\n}\n"]}