better-supabase 0.2.0 → 0.4.0

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.
Files changed (190) hide show
  1. package/README.md +37 -33
  2. package/dist/base64-D2gsioCY.js +42 -0
  3. package/dist/claims-BAf6c7is.js +48 -0
  4. package/dist/cli/_format-Cax5EsM9.js +101 -0
  5. package/dist/cli/bin.js +39 -6
  6. package/dist/cli/command-CK14fP91.js +502 -0
  7. package/dist/cli/compare-BmIWVEui.js +9 -0
  8. package/dist/cli/config-D9R0o1LH.js +1895 -0
  9. package/dist/cli/config-SSKSTUl2.js +2 -0
  10. package/dist/cli/db-DOBPt660.js +52 -0
  11. package/dist/cli/dist-B1MvLv-M.js +129 -0
  12. package/dist/cli/dist-CFgGknmZ.js +1112 -0
  13. package/dist/cli/dist-Du7VnEUG.js +621 -0
  14. package/dist/cli/doctor-BOym3mbL.js +2382 -0
  15. package/dist/cli/env-BZ0uy8XK.js +108 -0
  16. package/dist/cli/env-jIFUADLY.js +511 -0
  17. package/dist/cli/errors-4v4DTtda.js +56 -0
  18. package/dist/cli/fastest-levenshtein-CFN-lNDv.js +120 -0
  19. package/dist/cli/gen-Ccn_p90L.js +2008 -0
  20. package/dist/cli/gen-D5cLCULx.js +2 -0
  21. package/dist/cli/index.d.ts +295 -28
  22. package/dist/cli/index.js +184 -3
  23. package/dist/cli/init-ClnxRYBF.js +550 -0
  24. package/dist/cli/introspect-DxqfkVIv.js +81 -0
  25. package/dist/cli/io-k41_z-jT.js +24 -0
  26. package/dist/cli/json5-ChRycquj.js +787 -0
  27. package/dist/cli/jsonc-BUniUpOk.js +2 -0
  28. package/dist/cli/jsonc-D5Fu67jw.js +45 -0
  29. package/dist/cli/keys-ByKHnvP9.js +83 -0
  30. package/dist/cli/ohash-D7bG_EOb.js +277 -0
  31. package/dist/cli/openapi-8WHjxiTJ.js +66 -0
  32. package/dist/cli/project-B_GeXyHh.js +70 -0
  33. package/dist/cli/prompts-BNcNfAve.js +1142 -0
  34. package/dist/cli/prompts-BTYQGunc.js +2 -0
  35. package/dist/cli/read-sets-CMa29t9a.js +971 -0
  36. package/dist/cli/rolldown-runtime-BPOCksWG.js +24 -0
  37. package/dist/cli/run-CP20LKk_.js +347 -0
  38. package/dist/cli/seed-5J6eu_Xg.js +98 -0
  39. package/dist/cli/skills-LJJIhLFR.js +137 -0
  40. package/dist/cli/sql-D4VbqmXi.js +199 -0
  41. package/dist/cli/style-C0NFdJRL.js +29 -0
  42. package/dist/cli/toml-DB-MNnFs.js +424 -0
  43. package/dist/{version-Cqq1m3UY.js → cli/version-5mW_8sY1.js} +1 -1
  44. package/dist/cli/yaml-CYCbJ6et.js +2252 -0
  45. package/dist/client/index.d.ts +2 -2
  46. package/dist/client/index.js +15 -25
  47. package/dist/{compiler-CZ9nIuqy.d.ts → compiler-DB3aSFOA.d.ts} +2 -2
  48. package/dist/config/index.d.ts +4 -3
  49. package/dist/config/index.js +5 -3
  50. package/dist/config-BpxDfnbg.js +129 -0
  51. package/dist/{index-DOsjFvMf.d.ts → config-C1CYcm6o.d.ts} +49 -49
  52. package/dist/{config-ClDXmVtY.js → config-CbvFmGD8.js} +14 -137
  53. package/dist/{define-BXMYD9AY.js → define-Bh0AqTik.js} +221 -120
  54. package/dist/{define-e3zI4_4g.d.ts → define-CRS2MRV3.d.ts} +36 -31
  55. package/dist/edge/index.d.ts +9 -13
  56. package/dist/edge/index.js +51 -25
  57. package/dist/{entitlements-Dng-ctuT.d.ts → entitlements-Dm-FHpNH.d.ts} +2 -2
  58. package/dist/env/index.js +203 -1
  59. package/dist/{errors-Bl3rkOzo.js → errors-L0xK41y_.js} +1 -1
  60. package/dist/events/index.d.ts +1 -1
  61. package/dist/events/index.js +139 -1
  62. package/dist/{events-DOt3nSO-.d.ts → events-B21UOhvP.d.ts} +4 -4
  63. package/dist/{executor-CGdNQ27g.d.ts → executor-B5IoUxLE.d.ts} +2 -2
  64. package/dist/{executor-DeppvirK.js → executor-CVt6dD0B.js} +9 -4
  65. package/dist/{executor-BYXQ9AGn.d.ts → executor-CZ7ImRiD.d.ts} +2 -2
  66. package/dist/hono/index.d.ts +17 -24
  67. package/dist/hono/index.js +11 -11
  68. package/dist/{index-DuP14VHo.d.ts → index-528Ugmyp.d.ts} +30 -10
  69. package/dist/{index-Bw1bwtC0.d.ts → index-BAy4tsAP.d.ts} +28 -15
  70. package/dist/{index-CBDufH1M.d.ts → index-BBdvo-5d.d.ts} +24 -26
  71. package/dist/{index-DbxFr7XG.d.ts → index-BhHEC04r.d.ts} +9 -4
  72. package/dist/index-Cf-D2jk1.d.ts +50 -0
  73. package/dist/{index-Ciu5Xlml.d.ts → index-D5IfUIDh.d.ts} +6 -5
  74. package/dist/{index-K-3WM2Hp.d.ts → index-DFmOpBGC.d.ts} +13 -13
  75. package/dist/{index-D4v7sncu.d.ts → index-RlLXd8dL.d.ts} +13 -13
  76. package/dist/index.d.ts +17 -17
  77. package/dist/index.js +23 -14
  78. package/dist/{invalidate-DbxuL2jL.js → invalidate-CgxmRamI.js} +7 -1
  79. package/dist/jobs/index.d.ts +33 -26
  80. package/dist/jobs/index.js +44 -22
  81. package/dist/{json-schema-BpYqkCKf.js → json-schema-DP6V7cbr.js} +8 -3
  82. package/dist/lint/index.js +1 -1
  83. package/dist/list/index.d.ts +2 -2
  84. package/dist/list/index.js +131 -96
  85. package/dist/{live-DJyZMD6w.d.ts → live-BHakSWWo.d.ts} +26 -16
  86. package/dist/{live-D8rV1Ldw.js → live-CdJBOc4f.js} +13 -9
  87. package/dist/lookup-BaP5bI27.js +18 -0
  88. package/dist/mcp/index.d.ts +34 -27
  89. package/dist/mcp/index.js +59 -25
  90. package/dist/{mfa-TVia554c.d.ts → mfa-C7MNQ1Ob.d.ts} +1 -1
  91. package/dist/{mfa-CpLfJSde.js → mfa-byfjruR9.js} +190 -46
  92. package/dist/next/image/index.js +6 -3
  93. package/dist/next/index.d.ts +64 -48
  94. package/dist/next/index.js +63 -50
  95. package/dist/openapi/index.d.ts +1 -1
  96. package/dist/openapi/index.js +61 -38
  97. package/dist/orpc/index.d.ts +18 -21
  98. package/dist/orpc/index.js +12 -12
  99. package/dist/otel/index.d.ts +5 -5
  100. package/dist/otel/index.js +84 -63
  101. package/dist/{permdock-sql-CghlHPuH.js → permdock-sql-C4KFzLc9.js} +12 -7
  102. package/dist/permdock-sql-DImJULY-.d.ts +17 -0
  103. package/dist/{plugin-C4TR9J0Z.d.ts → plugin-bNhvJwRh.d.ts} +5 -4
  104. package/dist/plugins/actor/index.d.ts +1 -1
  105. package/dist/plugins/actor/index.js +1 -1
  106. package/dist/plugins/rules/index.d.ts +2 -2
  107. package/dist/plugins/rules/index.js +46 -16
  108. package/dist/plugins/soft-delete/index.d.ts +3 -3
  109. package/dist/plugins/soft-delete/index.js +4 -4
  110. package/dist/plugins/tenant/index.d.ts +3 -3
  111. package/dist/plugins/tenant/index.js +10 -4
  112. package/dist/plugins/timestamps/index.d.ts +1 -1
  113. package/dist/plugins/timestamps/index.js +2 -2
  114. package/dist/plugins/validation/index.d.ts +2 -2
  115. package/dist/plugins/validation/index.js +3 -3
  116. package/dist/pool-DFwEQwmN.d.ts +78 -0
  117. package/dist/postgres/index.d.ts +10 -5
  118. package/dist/postgres/index.js +37 -16
  119. package/dist/{postgrest-cAEQ_IQN.d.ts → postgrest-Bc-0Xw62.d.ts} +1 -1
  120. package/dist/{problem-BTkTtRV9.js → problem-BihjPR0t.js} +11 -5
  121. package/dist/{problem-DlgB0lYl.d.ts → problem-U8UEKccv.d.ts} +6 -4
  122. package/dist/query/index.d.ts +2 -2
  123. package/dist/query/index.js +2 -2
  124. package/dist/{query-ChvDbsDE.js → query-BMMSWbI7.js} +19 -19
  125. package/dist/react/index.d.ts +7 -7
  126. package/dist/react/index.js +2 -2
  127. package/dist/react/server.d.ts +6 -6
  128. package/dist/react/server.js +3 -3
  129. package/dist/react/session.d.ts +21 -2
  130. package/dist/react/session.js +19 -1
  131. package/dist/{react-C83BdBGt.js → react-CQHMaESR.js} +59 -55
  132. package/dist/{read-set-4lI3W_gZ.js → read-set-FWK8qQ58.js} +51 -16
  133. package/dist/realtime/index.d.ts +4 -3
  134. package/dist/realtime/index.js +19 -17
  135. package/dist/{index-CG69s15v.d.ts → refresh-BwYkyNOQ.d.ts} +7 -3
  136. package/dist/{resolve-CjHILk2w.d.ts → resolve-BAqQcwMW.d.ts} +17 -11
  137. package/dist/{resource-CgZa3YG_.d.ts → resource-BJcaIfxi.d.ts} +17 -8
  138. package/dist/{resource-BHEWmQJK.js → resource-My_y-Syh.js} +43 -21
  139. package/dist/{respond-Dne1ARSa.d.ts → respond-DgIbdrt8.d.ts} +39 -14
  140. package/dist/{result-DWXatkd6.js → result-Bj6yt33D.js} +2 -2
  141. package/dist/{result-CTkCZ6JA.d.ts → result-CqEsbgYs.d.ts} +16 -11
  142. package/dist/server/index.d.ts +38 -13
  143. package/dist/server/index.js +43 -14
  144. package/dist/{respond-DMcbQwfN.js → server-BA75B0mT.js} +151 -96
  145. package/dist/{shared-_6-uPL7E.js → shared-DnoCdMDr.js} +4 -3
  146. package/dist/{simplify-bwJpLnaS.js → simplify-Cqvfr9dj.js} +76 -39
  147. package/dist/sql/index.d.ts +139 -0
  148. package/dist/sql/index.js +1983 -0
  149. package/dist/{sql-DTjA1LPj.js → sql-B34HU2DI.js} +74 -17
  150. package/dist/ssr/index.d.ts +4 -4
  151. package/dist/ssr/index.js +2 -2
  152. package/dist/{standard-FUi3Z3-7.js → standard-BRyBGTtp.js} +2 -2
  153. package/dist/{standard-CyhRzctb.d.ts → standard-BsaCYQJc.d.ts} +1 -1
  154. package/dist/{stats-C5W-rBfR.js → stats-C_YxA2r1.js} +40 -14
  155. package/dist/storage/index.d.ts +4 -3
  156. package/dist/storage/index.js +548 -1
  157. package/dist/{tables-rZxRxNPW.js → tables-Cb-3_VWc.js} +19 -5
  158. package/dist/temporal-BwshQk0W.js +27 -0
  159. package/dist/temporal-required-CBNHT6ni.js +19 -0
  160. package/dist/testing/index.d.ts +25 -24
  161. package/dist/testing/index.js +165 -66
  162. package/dist/{types-C83v5SQz.d.ts → types-DONv9SHN.d.ts} +14 -11
  163. package/dist/version-Bmf7_FzM.js +4 -0
  164. package/dist/{view-D1s0wa0T.d.ts → view-B64o81wp.d.ts} +36 -6
  165. package/dist/{view-aOYizTeE.js → view-BrJI2LKp.js} +11 -2
  166. package/dist/webhooks/index.d.ts +19 -17
  167. package/dist/webhooks/index.js +1 -1
  168. package/dist/{webhooks-DMipjhSP.js → webhooks-Bh_Jf_-l.js} +45 -24
  169. package/package.json +50 -22
  170. package/schemas/config-v1.json +31 -1
  171. package/schemas/doctor-report-v1.json +17 -1
  172. package/schemas/snapshot-v2.json +35 -0
  173. package/skills/better-supabase/SKILL.md +77 -18
  174. package/skills/better-supabase/references/plugins.md +21 -22
  175. package/skills/better-supabase/references/troubleshooting.md +38 -18
  176. package/skills/better-supabase-api/SKILL.md +66 -18
  177. package/skills/better-supabase-api/references/adapters.md +64 -41
  178. package/skills/better-supabase-auth/SKILL.md +146 -0
  179. package/skills/better-supabase-auth/references/permdock.md +55 -0
  180. package/skills/better-supabase-testing/SKILL.md +68 -11
  181. package/dist/casing-da0uRTqt.js +0 -14
  182. package/dist/claims-CoTobNC-.js +0 -25
  183. package/dist/cli-DrSgDOQC.js +0 -6646
  184. package/dist/env-BEToab0I.js +0 -204
  185. package/dist/events-BuzTgn2D.js +0 -135
  186. package/dist/pool-R2m_DkXi.d.ts +0 -37
  187. package/dist/seed-CzecODcJ.js +0 -101
  188. package/dist/session-C3LxnQ0e.d.ts +0 -22
  189. package/dist/session-CqEwzVup.js +0 -20
  190. package/dist/storage-DuGn38fr.js +0 -527
@@ -0,0 +1,2 @@
1
+ import { a as loadConfig, i as importModule, n as findConfig, o as readSupabasePort, r as importExport, s as stdinDatabaseUrl, t as databaseUrl } from "./config-D9R0o1LH.js";
2
+ export { databaseUrl, findConfig, importExport, importModule, loadConfig, readSupabasePort, stdinDatabaseUrl };
@@ -0,0 +1,52 @@
1
+ //#region src/cli/db.ts
2
+ const CONNECT_TIMEOUT_MS = 1e4;
3
+ const loadPg = () => import("pg");
4
+ /** Opens a `pg` connection. `pg` is an optional peer, loaded on demand. */
5
+ async function connect(url, load = loadPg, options = {}) {
6
+ let pg;
7
+ try {
8
+ const mod = await load();
9
+ pg = mod.default ?? mod;
10
+ } catch {
11
+ throw new Error("better-supabase needs the \"pg\" package to read your database. Install it: pnpm add -D pg");
12
+ }
13
+ options.signal?.throwIfAborted();
14
+ const settings = {
15
+ connectionString: url,
16
+ connectionTimeoutMillis: CONNECT_TIMEOUT_MS,
17
+ ...options.statementTimeout === void 0 ? {} : { statement_timeout: options.statementTimeout }
18
+ };
19
+ const pool = options.pool === void 0 || pg.Pool === void 0 ? void 0 : new pg.Pool({
20
+ ...settings,
21
+ max: options.pool
22
+ });
23
+ const client = pool ?? new pg.Client(settings);
24
+ const pooled = pool !== void 0;
25
+ client.on?.("error", () => void 0);
26
+ let ended;
27
+ const close = () => ended ??= client.end();
28
+ const onAbort = () => void close().catch(() => void 0);
29
+ try {
30
+ if (pool) (await pool.connect()).release();
31
+ else await client.connect();
32
+ } catch (cause) {
33
+ await close().catch(() => void 0);
34
+ const message = cause instanceof Error ? cause.message : String(cause);
35
+ throw new Error(`Could not connect to ${redact(url)}: ${message}. Is the local stack running (supabase start)?`, { cause });
36
+ }
37
+ options.signal?.addEventListener("abort", onAbort, { once: true });
38
+ return {
39
+ client,
40
+ ...pooled ? { pooled } : {},
41
+ close: () => {
42
+ options.signal?.removeEventListener("abort", onAbort);
43
+ return close();
44
+ },
45
+ describe: redact(url)
46
+ };
47
+ }
48
+ function redact(url) {
49
+ return url.replace(/\/\/([^:@/]+):([^@/]+)@/, "//$1:***@");
50
+ }
51
+ //#endregion
52
+ export { connect as t };
@@ -0,0 +1,129 @@
1
+ import { a as isAbsolute, c as resolve, o as join, r as dirname, s as normalize, t as resolveModulePath } from "./dist-CFgGknmZ.js";
2
+ import { n as o, t as i } from "./_format-Cax5EsM9.js";
3
+ import { t as i$1 } from "./jsonc-D5Fu67jw.js";
4
+ import { promises, statSync } from "node:fs";
5
+ import "node:fs/promises";
6
+ import { fileURLToPath } from "node:url";
7
+ //#region ../../node_modules/.pnpm/confbox@0.3.1/node_modules/confbox/dist/json.mjs
8
+ function r(e, r) {
9
+ let i$2 = JSON.parse(i(e), r?.reviver);
10
+ return o(e, i$2, r), i$2;
11
+ }
12
+ //#endregion
13
+ //#region ../../node_modules/.pnpm/pkg-types@2.3.3/node_modules/pkg-types/dist/index.mjs
14
+ const defaultFindOptions = {
15
+ startingFrom: ".",
16
+ rootPattern: /^node_modules$/,
17
+ reverse: false,
18
+ test: (filePath) => {
19
+ try {
20
+ if (statSync(filePath).isFile()) return true;
21
+ } catch {}
22
+ }
23
+ };
24
+ async function findFile(filename, _options = {}) {
25
+ const filenames = Array.isArray(filename) ? filename : [filename];
26
+ const options = {
27
+ ...defaultFindOptions,
28
+ ..._options
29
+ };
30
+ const basePath = resolve(options.startingFrom);
31
+ const leadingSlash = basePath[0] === "/";
32
+ const segments = basePath.split("/").filter(Boolean);
33
+ if (filenames.includes(segments.at(-1)) && await options.test(basePath)) return basePath;
34
+ if (leadingSlash) segments[0] = "/" + segments[0];
35
+ let root = segments.findIndex((r) => r.match(options.rootPattern));
36
+ if (root === -1) root = 0;
37
+ if (options.reverse) for (let index = root + 1; index <= segments.length; index++) for (const filename of filenames) {
38
+ const filePath = join(...segments.slice(0, index), filename);
39
+ if (await options.test(filePath)) return filePath;
40
+ }
41
+ else for (let index = segments.length; index > root; index--) for (const filename of filenames) {
42
+ const filePath = join(...segments.slice(0, index), filename);
43
+ if (await options.test(filePath)) return filePath;
44
+ }
45
+ throw new Error(`Cannot find matching ${filename} in ${options.startingFrom} or parent directories`);
46
+ }
47
+ function findNearestFile(filename, options = {}) {
48
+ return findFile(filename, options);
49
+ }
50
+ function _resolvePath(id, opts = {}) {
51
+ if (id instanceof URL || id.startsWith("file://")) return normalize(fileURLToPath(id));
52
+ if (isAbsolute(id)) return normalize(id);
53
+ return resolveModulePath(id, {
54
+ ...opts,
55
+ from: opts.from || opts.parent || opts.url
56
+ });
57
+ }
58
+ const lockFiles = [
59
+ "yarn.lock",
60
+ "package-lock.json",
61
+ "pnpm-lock.yaml",
62
+ "npm-shrinkwrap.json",
63
+ "bun.lockb",
64
+ "bun.lock",
65
+ "deno.lock"
66
+ ];
67
+ const packageFiles = [
68
+ "package.json",
69
+ "package.json5",
70
+ "package.yaml"
71
+ ];
72
+ const workspaceFiles = [
73
+ "pnpm-workspace.yaml",
74
+ "lerna.json",
75
+ "turbo.json",
76
+ "rush.json",
77
+ "deno.json",
78
+ "deno.jsonc"
79
+ ];
80
+ const FileCache = /* #__PURE__ */ new Map();
81
+ async function readPackageJSON(id, options = {}) {
82
+ const resolvedPath = await resolvePackageJSON(id, options);
83
+ const cache = options.cache && typeof options.cache !== "boolean" ? options.cache : FileCache;
84
+ if (options.cache && cache.has(resolvedPath)) return cache.get(resolvedPath);
85
+ const blob = await promises.readFile(resolvedPath, "utf8");
86
+ let parsed;
87
+ try {
88
+ parsed = r(blob);
89
+ } catch {
90
+ parsed = i$1(blob);
91
+ }
92
+ cache.set(resolvedPath, parsed);
93
+ return parsed;
94
+ }
95
+ async function resolvePackageJSON(id = process.cwd(), options = {}) {
96
+ return findNearestFile("package.json", {
97
+ ...options,
98
+ startingFrom: _resolvePath(id, options)
99
+ });
100
+ }
101
+ const workspaceTests = {
102
+ workspaceFile: (opts) => findFile(workspaceFiles, opts).then((r) => dirname(r)),
103
+ gitConfig: (opts) => findFile(".git/config", opts).then((r) => resolve(r, "../..")),
104
+ lockFile: (opts) => findFile(lockFiles, opts).then((r) => dirname(r)),
105
+ packageJson: (opts) => findFile(packageFiles, opts).then((r) => dirname(r))
106
+ };
107
+ async function findWorkspaceDir(id = process.cwd(), options = {}) {
108
+ const startingFrom = _resolvePath(id, options);
109
+ const tests = options.tests || [
110
+ "workspaceFile",
111
+ "gitConfig",
112
+ "lockFile",
113
+ "packageJson"
114
+ ];
115
+ for (const testName of tests) {
116
+ const test = workspaceTests[testName];
117
+ if (options[testName] === false || !test) continue;
118
+ const direction = options[testName] || (testName === "gitConfig" ? "closest" : "furthest");
119
+ const detected = await test({
120
+ ...options,
121
+ startingFrom,
122
+ reverse: direction === "furthest"
123
+ }).catch(() => {});
124
+ if (detected) return detected;
125
+ }
126
+ throw new Error(`Cannot detect workspace root from ${id}`);
127
+ }
128
+ //#endregion
129
+ export { findWorkspaceDir, readPackageJSON };