stellar-drive 1.0.7 → 1.0.9
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/README.md +5 -5
- package/dist/auth/singleUser.d.ts +1 -1
- package/dist/auth/singleUser.js +1 -1
- package/dist/bin/install-pwa.js +22 -22
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kit/server.d.ts +8 -8
- package/dist/kit/server.d.ts.map +1 -1
- package/dist/kit/server.js +11 -11
- package/dist/kit/server.js.map +1 -1
- package/dist/runtime/runtimeConfig.d.ts +3 -3
- package/dist/runtime/runtimeConfig.d.ts.map +1 -1
- package/dist/runtime/runtimeConfig.js +3 -3
- package/dist/runtime/runtimeConfig.js.map +1 -1
- package/dist/supabase/client.d.ts +3 -3
- package/dist/supabase/client.js +4 -4
- package/dist/supabase/client.js.map +1 -1
- package/dist/supabase/validate.d.ts +4 -4
- package/dist/supabase/validate.d.ts.map +1 -1
- package/dist/supabase/validate.js +14 -10
- package/dist/supabase/validate.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -105,7 +105,7 @@ initEngine({
|
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
// ─── 2. Resolve auth and start the engine ──────────────────────────
|
|
108
|
-
// The engine fetches runtime config (Supabase URL +
|
|
108
|
+
// The engine fetches runtime config (Supabase URL + publishable key) from
|
|
109
109
|
// your /api/config endpoint -- no need to pass a supabase client.
|
|
110
110
|
|
|
111
111
|
await initConfig();
|
|
@@ -316,7 +316,7 @@ const diagnostics = await getDiagnostics();
|
|
|
316
316
|
| Variable | Required | Description |
|
|
317
317
|
|---|---|---|
|
|
318
318
|
| `PUBLIC_SUPABASE_URL` | Yes | Supabase project URL. Find it: Dashboard > Settings > API > Project URL. |
|
|
319
|
-
| `
|
|
319
|
+
| `PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY` | Yes | Supabase publishable key. Find it: Dashboard > Settings > API > Project API keys > publishable. |
|
|
320
320
|
| `DATABASE_URL` | For auto-migration | Postgres connection string. Used by the Vite plugin to push schema migrations directly to Postgres. If not set, migrations are skipped and types are still generated. Find it: Dashboard > Settings > Database > Connection string (URI). |
|
|
321
321
|
|
|
322
322
|
## Schema workflow
|
|
@@ -365,7 +365,7 @@ The schema migration runs automatically during every `vite build`. To enable it
|
|
|
365
365
|
| Variable | Type | Required |
|
|
366
366
|
|---|---|---|
|
|
367
367
|
| `PUBLIC_SUPABASE_URL` | Plain | Yes -- client auth + data access |
|
|
368
|
-
| `
|
|
368
|
+
| `PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY` | Plain | Yes -- client auth + data access |
|
|
369
369
|
| `DATABASE_URL` | Secret | Yes -- auto-migration during build |
|
|
370
370
|
|
|
371
371
|
2. **Commit `.stellar/schema-snapshot.json`** to git. This file tracks the last-known schema state. Without it, every build is treated as a first run (full idempotent SQL). The snapshot is updated locally when you run `dev` or `build` and should be committed alongside schema changes.
|
|
@@ -377,7 +377,7 @@ The schema migration runs automatically during every `vite build`. To enable it
|
|
|
377
377
|
- If the migration fails, the snapshot is **not updated**, so the next build retries the same migration.
|
|
378
378
|
- IndexedDB migrations happen client-side at runtime (no build step needed).
|
|
379
379
|
|
|
380
|
-
**Security:** `DATABASE_URL` is only used server-side during the Vite build process. It is never bundled into client code or exposed to users. `PUBLIC_SUPABASE_URL` and `
|
|
380
|
+
**Security:** `DATABASE_URL` is only used server-side during the Vite build process. It is never bundled into client code or exposed to users. `PUBLIC_SUPABASE_URL` and `PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY` are served at runtime from your `/api/config` endpoint -- these are public keys by design, protected by Supabase Row Level Security.
|
|
381
381
|
|
|
382
382
|
See [API Reference -- Vite Plugin](./API_REFERENCE.md#vite-plugin-stellarpwa) for full configuration options.
|
|
383
383
|
|
|
@@ -423,7 +423,7 @@ Generates **34+ files** for a production-ready SvelteKit 2 + Svelte 5 project:
|
|
|
423
423
|
| `runFullSync()` | Run a complete pull-then-push cycle |
|
|
424
424
|
| `scheduleSyncPush()` | Trigger a debounced push of pending operations |
|
|
425
425
|
| `getEngineConfig()` | Retrieve the current engine config (throws if not initialized) |
|
|
426
|
-
| `validateSupabaseCredentials()` | Verify Supabase URL and
|
|
426
|
+
| `validateSupabaseCredentials()` | Verify Supabase URL and publishable key are valid |
|
|
427
427
|
| `validateSchema()` | Validate all configured tables exist in Supabase |
|
|
428
428
|
|
|
429
429
|
### Database
|
|
@@ -407,7 +407,7 @@ export declare function resetSingleUser(): Promise<{
|
|
|
407
407
|
*
|
|
408
408
|
* Returns user info if a user exists in the Supabase project, `null` otherwise.
|
|
409
409
|
* This is used by browser extensions and new devices to discover the existing
|
|
410
|
-
* account before linking. Works without authentication (uses the
|
|
410
|
+
* account before linking. Works without authentication (uses the publishable key).
|
|
411
411
|
*
|
|
412
412
|
* @returns An object with `email`, `gateType`, `codeLength`, and `profile`,
|
|
413
413
|
* or `null` if no user exists or the RPC fails.
|
package/dist/auth/singleUser.js
CHANGED
|
@@ -1051,7 +1051,7 @@ export async function resetSingleUser() {
|
|
|
1051
1051
|
*
|
|
1052
1052
|
* Returns user info if a user exists in the Supabase project, `null` otherwise.
|
|
1053
1053
|
* This is used by browser extensions and new devices to discover the existing
|
|
1054
|
-
* account before linking. Works without authentication (uses the
|
|
1054
|
+
* account before linking. Works without authentication (uses the publishable key).
|
|
1055
1055
|
*
|
|
1056
1056
|
* @returns An object with `email`, `gateType`, `codeLength`, and `profile`,
|
|
1057
1057
|
* or `null` if no user exists or the RPC fails.
|
package/dist/bin/install-pwa.js
CHANGED
|
@@ -206,7 +206,7 @@ function generatePackageJson(opts) {
|
|
|
206
206
|
},
|
|
207
207
|
dependencies: {
|
|
208
208
|
postgres: '^3.4.0',
|
|
209
|
-
'stellar-drive': '^1.0.
|
|
209
|
+
'stellar-drive': '^1.0.9'
|
|
210
210
|
},
|
|
211
211
|
type: 'module'
|
|
212
212
|
}, null, 2) + '\n');
|
|
@@ -754,7 +754,7 @@ Copy \`.env.example\` to \`.env\` and fill in:
|
|
|
754
754
|
| Variable | Where to find it | Required for |
|
|
755
755
|
|----------|-----------------|--------------|
|
|
756
756
|
| \`PUBLIC_SUPABASE_URL\` | Supabase Dashboard → Settings → API → Project URL | Client auth + data access |
|
|
757
|
-
| \`
|
|
757
|
+
| \`PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY\` | Supabase Dashboard → Settings → API → \`publishable\` key | Client auth + data access |
|
|
758
758
|
| \`DATABASE_URL\` | Supabase Dashboard → Settings → Database → Connection string (URI) | Auto-migration (dev/build) |
|
|
759
759
|
|
|
760
760
|
> **Note:** \`DATABASE_URL\` is optional for local development. Without it, types still auto-generate but Supabase schema migrations are skipped.
|
|
@@ -778,14 +778,14 @@ The schema migration runs automatically during every \`vite build\`. To enable i
|
|
|
778
778
|
| Variable | Type | Required |
|
|
779
779
|
|----------|------|----------|
|
|
780
780
|
| \`PUBLIC_SUPABASE_URL\` | Plain | Yes |
|
|
781
|
-
| \`
|
|
781
|
+
| \`PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY\` | Plain | Yes |
|
|
782
782
|
| \`DATABASE_URL\` | Secret | Yes — auto-migration |
|
|
783
783
|
|
|
784
784
|
2. **Commit \`.stellar/schema-snapshot.json\`** — this file tracks your last-known schema. Without it, every build treats the schema as brand new. It updates automatically when you run \`dev\` or \`build\`; commit it alongside schema changes.
|
|
785
785
|
|
|
786
786
|
3. **First deploy**: The very first build (with no snapshot) generates idempotent initial SQL (\`CREATE TABLE IF NOT EXISTS\`) and pushes it directly to Postgres. Works on fresh databases and databases with existing tables.
|
|
787
787
|
|
|
788
|
-
> **Security:** \`DATABASE_URL\` is only used server-side during the build. It is never bundled into client code. \`PUBLIC_SUPABASE_URL\` and \`
|
|
788
|
+
> **Security:** \`DATABASE_URL\` is only used server-side during the build. It is never bundled into client code. \`PUBLIC_SUPABASE_URL\` and \`PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY\` are served at runtime from \`/api/config\` — these are public keys protected by Supabase RLS.
|
|
789
789
|
|
|
790
790
|
> **Failed migrations:** If a migration fails, the snapshot is NOT updated. The next build will retry the same migration automatically.
|
|
791
791
|
|
|
@@ -878,7 +878,7 @@ static/
|
|
|
878
878
|
| Variable | Where to find it | Required for |
|
|
879
879
|
|----------|-----------------|--------------|
|
|
880
880
|
| \`PUBLIC_SUPABASE_URL\` | Supabase Dashboard → Settings → API → Project URL | Client auth + data |
|
|
881
|
-
| \`
|
|
881
|
+
| \`PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY\` | Supabase Dashboard → Settings → API → \`publishable\` key | Client auth + data |
|
|
882
882
|
| \`DATABASE_URL\` | Supabase Dashboard → Settings → Database → Connection string (URI) | Auto-migration |
|
|
883
883
|
|
|
884
884
|
> \`DATABASE_URL\` is only used server-side during builds. It is never bundled into client code. Without it, types still auto-generate but Supabase migrations are skipped.
|
|
@@ -1885,7 +1885,7 @@ function generateSetupPageSvelte(opts) {
|
|
|
1885
1885
|
* 1. Create a Supabase project (instructions only).
|
|
1886
1886
|
* 2. Configure authentication (enable anonymous sign-ins).
|
|
1887
1887
|
* 3. Initialize the database by running the schema SQL.
|
|
1888
|
-
* 4. Enter and validate Supabase credentials (URL +
|
|
1888
|
+
* 4. Enter and validate Supabase credentials (URL + publishable key).
|
|
1889
1889
|
* 5. Persist configuration via Vercel API (set env vars + redeploy).
|
|
1890
1890
|
*
|
|
1891
1891
|
* After a successful deploy the page polls for a new service-worker
|
|
@@ -1908,8 +1908,8 @@ function generateSetupPageSvelte(opts) {
|
|
|
1908
1908
|
/** Supabase project URL entered by the user */
|
|
1909
1909
|
let supabaseUrl = $state('');
|
|
1910
1910
|
|
|
1911
|
-
/** Supabase
|
|
1912
|
-
let
|
|
1911
|
+
/** Supabase publishable key entered by the user */
|
|
1912
|
+
let supabasePublishableKey = $state('');
|
|
1913
1913
|
|
|
1914
1914
|
/** One-time Vercel API token for setting env vars */
|
|
1915
1915
|
let vercelToken = $state('');
|
|
@@ -1958,7 +1958,7 @@ function generateSetupPageSvelte(opts) {
|
|
|
1958
1958
|
* validation — the "Continue" button should be re-disabled.
|
|
1959
1959
|
*/
|
|
1960
1960
|
const credentialsChanged = $derived(
|
|
1961
|
-
validateSuccess && (supabaseUrl !== validatedUrl ||
|
|
1961
|
+
validateSuccess && (supabaseUrl !== validatedUrl || supabasePublishableKey !== validatedKey)
|
|
1962
1962
|
);
|
|
1963
1963
|
|
|
1964
1964
|
// =============================================================================
|
|
@@ -1995,7 +1995,7 @@ function generateSetupPageSvelte(opts) {
|
|
|
1995
1995
|
const res = await fetch('/api/setup/validate', {
|
|
1996
1996
|
method: 'POST',
|
|
1997
1997
|
headers: { 'Content-Type': 'application/json' },
|
|
1998
|
-
body: JSON.stringify({ supabaseUrl,
|
|
1998
|
+
body: JSON.stringify({ supabaseUrl, supabasePublishableKey })
|
|
1999
1999
|
});
|
|
2000
2000
|
|
|
2001
2001
|
const data = await res.json();
|
|
@@ -2003,11 +2003,11 @@ function generateSetupPageSvelte(opts) {
|
|
|
2003
2003
|
if (data.valid) {
|
|
2004
2004
|
validateSuccess = true;
|
|
2005
2005
|
validatedUrl = supabaseUrl;
|
|
2006
|
-
validatedKey =
|
|
2006
|
+
validatedKey = supabasePublishableKey;
|
|
2007
2007
|
/* Cache config locally so the app works immediately after deploy */
|
|
2008
2008
|
setConfig({
|
|
2009
2009
|
supabaseUrl,
|
|
2010
|
-
|
|
2010
|
+
supabasePublishableKey,
|
|
2011
2011
|
configured: true
|
|
2012
2012
|
});
|
|
2013
2013
|
} else {
|
|
@@ -2062,7 +2062,7 @@ function generateSetupPageSvelte(opts) {
|
|
|
2062
2062
|
const res = await fetch('/api/setup/deploy', {
|
|
2063
2063
|
method: 'POST',
|
|
2064
2064
|
headers: { 'Content-Type': 'application/json' },
|
|
2065
|
-
body: JSON.stringify({ supabaseUrl,
|
|
2065
|
+
body: JSON.stringify({ supabaseUrl, supabasePublishableKey, vercelToken })
|
|
2066
2066
|
});
|
|
2067
2067
|
|
|
2068
2068
|
const data = await res.json();
|
|
@@ -2988,7 +2988,7 @@ function generateConfigServer() {
|
|
|
2988
2988
|
return `/**
|
|
2989
2989
|
* Config API Endpoint — \`GET /api/config\`
|
|
2990
2990
|
*
|
|
2991
|
-
* Returns the runtime configuration object (Supabase URL,
|
|
2991
|
+
* Returns the runtime configuration object (Supabase URL, publishable key, app
|
|
2992
2992
|
* settings) that the client fetches on first load via \`initConfig()\`.
|
|
2993
2993
|
*/
|
|
2994
2994
|
|
|
@@ -3032,11 +3032,11 @@ import type { RequestHandler } from './$types';
|
|
|
3032
3032
|
*/
|
|
3033
3033
|
export const POST: RequestHandler = async ({ request }) => {
|
|
3034
3034
|
/* ── Parse and validate request body ── */
|
|
3035
|
-
const { supabaseUrl,
|
|
3035
|
+
const { supabaseUrl, supabasePublishableKey, vercelToken } = await request.json();
|
|
3036
3036
|
|
|
3037
|
-
if (!supabaseUrl || !
|
|
3037
|
+
if (!supabaseUrl || !supabasePublishableKey || !vercelToken) {
|
|
3038
3038
|
return json(
|
|
3039
|
-
{ success: false, error: 'Supabase URL,
|
|
3039
|
+
{ success: false, error: 'Supabase URL, Publishable Key, and Vercel Token are required' },
|
|
3040
3040
|
{ status: 400 }
|
|
3041
3041
|
);
|
|
3042
3042
|
}
|
|
@@ -3051,7 +3051,7 @@ export const POST: RequestHandler = async ({ request }) => {
|
|
|
3051
3051
|
}
|
|
3052
3052
|
|
|
3053
3053
|
/* ── Delegate to engine ── */
|
|
3054
|
-
const result = await deployToVercel({ vercelToken, projectId, supabaseUrl,
|
|
3054
|
+
const result = await deployToVercel({ vercelToken, projectId, supabaseUrl, supabasePublishableKey });
|
|
3055
3055
|
return json(result);
|
|
3056
3056
|
};
|
|
3057
3057
|
`;
|
|
@@ -3065,7 +3065,7 @@ function generateValidateServer() {
|
|
|
3065
3065
|
return `/**
|
|
3066
3066
|
* Supabase Credential Validation Endpoint — \`POST /api/setup/validate\`
|
|
3067
3067
|
*
|
|
3068
|
-
* Accepts a Supabase URL and
|
|
3068
|
+
* Accepts a Supabase URL and publishable key, attempts a lightweight query
|
|
3069
3069
|
* against the project, and returns whether the credentials are valid.
|
|
3070
3070
|
* Used by the setup wizard before saving config.
|
|
3071
3071
|
*/
|
|
@@ -4531,10 +4531,10 @@ function generateEnvExample(opts) {
|
|
|
4531
4531
|
# Find it: Supabase Dashboard → Settings → API → Project URL
|
|
4532
4532
|
PUBLIC_SUPABASE_URL=
|
|
4533
4533
|
|
|
4534
|
-
# The
|
|
4534
|
+
# The publishable (public) API key — used for client-side auth and data access.
|
|
4535
4535
|
# This key is safe to include in client bundles; RLS policies protect data.
|
|
4536
|
-
# Find it: Supabase Dashboard → Settings → API → Project API keys →
|
|
4537
|
-
|
|
4536
|
+
# Find it: Supabase Dashboard → Settings → API → Project API keys → publishable
|
|
4537
|
+
PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=
|
|
4538
4538
|
|
|
4539
4539
|
# -----------------------------------------------------------------------------
|
|
4540
4540
|
# Database — Migrations (secret, never expose to the client)
|
package/dist/index.js
CHANGED
|
@@ -219,7 +219,7 @@ export { generateSupabaseSQL, inferColumnType, generateMigrationSQL, generateTyp
|
|
|
219
219
|
// =============================================================================
|
|
220
220
|
// Server-side utilities for validating Supabase credentials and database
|
|
221
221
|
// schema during initial app setup flows:
|
|
222
|
-
// - `validateSupabaseCredentials` — tests that the provided URL and
|
|
222
|
+
// - `validateSupabaseCredentials` — tests that the provided URL and publishable key
|
|
223
223
|
// can successfully connect to a Supabase project.
|
|
224
224
|
// - `validateSchema` — verifies that the required database tables and columns
|
|
225
225
|
// exist in the connected Supabase project.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/kit/server.d.ts
CHANGED
|
@@ -42,8 +42,8 @@ export interface DeployConfig {
|
|
|
42
42
|
projectId: string;
|
|
43
43
|
/** The Supabase project URL (e.g. `https://abc.supabase.co`). */
|
|
44
44
|
supabaseUrl: string;
|
|
45
|
-
/** The Supabase
|
|
46
|
-
|
|
45
|
+
/** The Supabase publishable key for client-side access. */
|
|
46
|
+
supabasePublishableKey: string;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Result of a Vercel deployment attempt.
|
|
@@ -72,18 +72,18 @@ export interface DeployResult {
|
|
|
72
72
|
* present in the server's runtime environment.
|
|
73
73
|
*/
|
|
74
74
|
export interface ServerConfig {
|
|
75
|
-
/** `true` when both `PUBLIC_SUPABASE_URL` and `
|
|
75
|
+
/** `true` when both `PUBLIC_SUPABASE_URL` and `PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY` are set. */
|
|
76
76
|
configured: boolean;
|
|
77
77
|
/** The Supabase project URL, if configured. */
|
|
78
78
|
supabaseUrl?: string;
|
|
79
|
-
/** The Supabase
|
|
80
|
-
|
|
79
|
+
/** The Supabase publishable key, if configured. */
|
|
80
|
+
supabasePublishableKey?: string;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Reads Supabase configuration from `process.env` at runtime.
|
|
84
84
|
*
|
|
85
85
|
* Checks for the presence of both `PUBLIC_SUPABASE_URL` and
|
|
86
|
-
* `
|
|
86
|
+
* `PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY` environment variables.
|
|
87
87
|
* Returns `{ configured: true }` with the values when both exist,
|
|
88
88
|
* or `{ configured: false }` otherwise.
|
|
89
89
|
*
|
|
@@ -132,7 +132,7 @@ export declare function getServerConfig(): ServerConfig;
|
|
|
132
132
|
* vercelToken: 'tok_...',
|
|
133
133
|
* projectId: 'prj_...',
|
|
134
134
|
* supabaseUrl: 'https://abc.supabase.co',
|
|
135
|
-
*
|
|
135
|
+
* supabasePublishableKey: 'eyJ...'
|
|
136
136
|
* });
|
|
137
137
|
* if (!result.success) console.error(result.error);
|
|
138
138
|
* ```
|
|
@@ -147,7 +147,7 @@ export declare function deployToVercel(config: DeployConfig): Promise<DeployResu
|
|
|
147
147
|
* credentials by attempting to connect to the provided Supabase instance.
|
|
148
148
|
*
|
|
149
149
|
* The returned handler:
|
|
150
|
-
* 1. Parses the JSON request body for `supabaseUrl` and `
|
|
150
|
+
* 1. Parses the JSON request body for `supabaseUrl` and `supabasePublishableKey`
|
|
151
151
|
* 2. Validates that both fields are present (returns 400 if not)
|
|
152
152
|
* 3. Delegates to `validateSupabaseCredentials` for the actual check
|
|
153
153
|
* 4. Returns a JSON response with the validation result
|
package/dist/kit/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/kit/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA6BH;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IAEpB,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/kit/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA6BH;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,oGAAoG;IACpG,UAAU,EAAE,OAAO,CAAC;IAEpB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AA6GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAQ9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAwEhF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,KACrB,aAAa;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,QAAQ,CAAC,CA2BpE"}
|
package/dist/kit/server.js
CHANGED
|
@@ -123,7 +123,7 @@ async function setEnvVar(projectId, token, key, value) {
|
|
|
123
123
|
* Reads Supabase configuration from `process.env` at runtime.
|
|
124
124
|
*
|
|
125
125
|
* Checks for the presence of both `PUBLIC_SUPABASE_URL` and
|
|
126
|
-
* `
|
|
126
|
+
* `PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY` environment variables.
|
|
127
127
|
* Returns `{ configured: true }` with the values when both exist,
|
|
128
128
|
* or `{ configured: false }` otherwise.
|
|
129
129
|
*
|
|
@@ -147,9 +147,9 @@ async function setEnvVar(projectId, token, key, value) {
|
|
|
147
147
|
*/
|
|
148
148
|
export function getServerConfig() {
|
|
149
149
|
const supabaseUrl = process.env.PUBLIC_SUPABASE_URL || '';
|
|
150
|
-
const
|
|
151
|
-
if (supabaseUrl &&
|
|
152
|
-
return { configured: true, supabaseUrl,
|
|
150
|
+
const supabasePublishableKey = process.env.PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY || '';
|
|
151
|
+
if (supabaseUrl && supabasePublishableKey) {
|
|
152
|
+
return { configured: true, supabaseUrl, supabasePublishableKey };
|
|
153
153
|
}
|
|
154
154
|
return { configured: false };
|
|
155
155
|
}
|
|
@@ -179,7 +179,7 @@ export function getServerConfig() {
|
|
|
179
179
|
* vercelToken: 'tok_...',
|
|
180
180
|
* projectId: 'prj_...',
|
|
181
181
|
* supabaseUrl: 'https://abc.supabase.co',
|
|
182
|
-
*
|
|
182
|
+
* supabasePublishableKey: 'eyJ...'
|
|
183
183
|
* });
|
|
184
184
|
* if (!result.success) console.error(result.error);
|
|
185
185
|
* ```
|
|
@@ -194,7 +194,7 @@ export async function deployToVercel(config) {
|
|
|
194
194
|
// Phase 1 — Upsert environment variables
|
|
195
195
|
// -------------------------------------------------------------------------
|
|
196
196
|
await setEnvVar(config.projectId, config.vercelToken, 'PUBLIC_SUPABASE_URL', config.supabaseUrl);
|
|
197
|
-
await setEnvVar(config.projectId, config.vercelToken, '
|
|
197
|
+
await setEnvVar(config.projectId, config.vercelToken, 'PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY', config.supabasePublishableKey);
|
|
198
198
|
// -------------------------------------------------------------------------
|
|
199
199
|
// Phase 2 — Trigger production redeployment
|
|
200
200
|
// -------------------------------------------------------------------------
|
|
@@ -250,7 +250,7 @@ export async function deployToVercel(config) {
|
|
|
250
250
|
* credentials by attempting to connect to the provided Supabase instance.
|
|
251
251
|
*
|
|
252
252
|
* The returned handler:
|
|
253
|
-
* 1. Parses the JSON request body for `supabaseUrl` and `
|
|
253
|
+
* 1. Parses the JSON request body for `supabaseUrl` and `supabasePublishableKey`
|
|
254
254
|
* 2. Validates that both fields are present (returns 400 if not)
|
|
255
255
|
* 3. Delegates to `validateSupabaseCredentials` for the actual check
|
|
256
256
|
* 4. Returns a JSON response with the validation result
|
|
@@ -279,11 +279,11 @@ export function createValidateHandler() {
|
|
|
279
279
|
for routes that don't need validation. */
|
|
280
280
|
const { validateSupabaseCredentials } = await import('../supabase/validate.js');
|
|
281
281
|
try {
|
|
282
|
-
const { supabaseUrl,
|
|
283
|
-
if (!supabaseUrl || !
|
|
284
|
-
return new Response(JSON.stringify({ valid: false, error: 'Supabase URL and
|
|
282
|
+
const { supabaseUrl, supabasePublishableKey } = await request.json();
|
|
283
|
+
if (!supabaseUrl || !supabasePublishableKey) {
|
|
284
|
+
return new Response(JSON.stringify({ valid: false, error: 'Supabase URL and Publishable Key are required' }), { status: 400, headers: { 'Content-Type': 'application/json' } });
|
|
285
285
|
}
|
|
286
|
-
const result = await validateSupabaseCredentials(supabaseUrl,
|
|
286
|
+
const result = await validateSupabaseCredentials(supabaseUrl, supabasePublishableKey);
|
|
287
287
|
return new Response(JSON.stringify(result), {
|
|
288
288
|
headers: { 'Content-Type': 'application/json' }
|
|
289
289
|
});
|
package/dist/kit/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/kit/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/kit/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
export interface AppConfig {
|
|
27
27
|
/** The full URL of the Supabase project (e.g., `https://xyz.supabase.co`). */
|
|
28
28
|
supabaseUrl: string;
|
|
29
|
-
/** The public
|
|
30
|
-
|
|
29
|
+
/** The public publishable key for the Supabase project. */
|
|
30
|
+
supabasePublishableKey: string;
|
|
31
31
|
/**
|
|
32
32
|
* Whether the application has completed initial setup.
|
|
33
33
|
* `false` when `/api/config` returns a "not yet configured" response.
|
|
@@ -101,7 +101,7 @@ export declare function getConfig(): AppConfig | null;
|
|
|
101
101
|
* ```ts
|
|
102
102
|
* setConfig({
|
|
103
103
|
* supabaseUrl: 'https://xyz.supabase.co',
|
|
104
|
-
*
|
|
104
|
+
* supabasePublishableKey: 'eyJ...',
|
|
105
105
|
* configured: true
|
|
106
106
|
* });
|
|
107
107
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeConfig.d.ts","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IAEpB,
|
|
1
|
+
{"version":3,"file":"runtimeConfig.d.ts","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,QAE9C;AA8ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA8C5D;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,IAAI,SAAS,GAAG,IAAI,CAQ5C;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGjD"}
|
|
@@ -85,7 +85,7 @@ function loadFromCache() {
|
|
|
85
85
|
if (!stored)
|
|
86
86
|
return null;
|
|
87
87
|
const parsed = JSON.parse(stored);
|
|
88
|
-
if (parsed.configured && parsed.supabaseUrl && parsed.
|
|
88
|
+
if (parsed.configured && parsed.supabaseUrl && parsed.supabasePublishableKey) {
|
|
89
89
|
return parsed;
|
|
90
90
|
}
|
|
91
91
|
return null;
|
|
@@ -155,7 +155,7 @@ export async function initConfig() {
|
|
|
155
155
|
if (serverConfig.configured) {
|
|
156
156
|
const config = {
|
|
157
157
|
supabaseUrl: serverConfig.supabaseUrl,
|
|
158
|
-
|
|
158
|
+
supabasePublishableKey: serverConfig.supabasePublishableKey,
|
|
159
159
|
configured: true
|
|
160
160
|
};
|
|
161
161
|
configCache = config;
|
|
@@ -228,7 +228,7 @@ export function getConfig() {
|
|
|
228
228
|
* ```ts
|
|
229
229
|
* setConfig({
|
|
230
230
|
* supabaseUrl: 'https://xyz.supabase.co',
|
|
231
|
-
*
|
|
231
|
+
* supabasePublishableKey: 'eyJ...',
|
|
232
232
|
* configured: true
|
|
233
233
|
* });
|
|
234
234
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA0BH,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAEhF;;;;GAIG;AACH,IAAI,OAAO,GAAG,SAAS,CAAC;AAExB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,GAAG,MAAM,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW;IAClB,OAAO,GAAG,OAAO,SAAS,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF;;;GAGG;AACH,IAAI,WAAW,GAAqB,IAAI,CAAC;AAEzC;;;GAGG;AACH,IAAI,aAAa,GAAqC,IAAI,CAAC;AAE3D,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,SAAS,aAAa;IACpB,uDAAuD;IACvD,IAAI,OAAO,YAAY,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAc,CAAC;QAC/C,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* that defers client creation until the **first property access**. This
|
|
7
7
|
* "lazy singleton" pattern solves a critical bootstrapping problem:
|
|
8
8
|
*
|
|
9
|
-
* The Supabase URL and
|
|
9
|
+
* The Supabase URL and publishable key are loaded at **runtime** (via
|
|
10
10
|
* `getConfig()` from `../runtime/runtimeConfig`), not at build time.
|
|
11
11
|
* Modules that `import { supabase }` at the top level would otherwise
|
|
12
12
|
* crash because the config has not been initialized yet when the import
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* which helps with server-side debugging of session eviction issues.
|
|
35
35
|
*
|
|
36
36
|
* Security considerations:
|
|
37
|
-
* - The
|
|
37
|
+
* - The publishable key is a **public** key (safe to include in client bundles).
|
|
38
38
|
* - PKCE flow is used instead of the implicit flow for stronger OAuth
|
|
39
39
|
* security and better compatibility with PWA environments.
|
|
40
40
|
* - Session persistence uses localStorage; the module proactively scrubs
|
|
@@ -62,7 +62,7 @@ export declare function _setClientPrefix(prefix: string): void;
|
|
|
62
62
|
* The public Supabase client — a Proxy-based lazy singleton.
|
|
63
63
|
*
|
|
64
64
|
* **Why a Proxy?**
|
|
65
|
-
* The Supabase URL and
|
|
65
|
+
* The Supabase URL and publishable key are not available at import time (they come
|
|
66
66
|
* from a runtime config that is loaded asynchronously). A Proxy lets every
|
|
67
67
|
* module `import { supabase }` at the top level without worrying about
|
|
68
68
|
* initialization order. The real client is created transparently on first
|
package/dist/supabase/client.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* that defers client creation until the **first property access**. This
|
|
7
7
|
* "lazy singleton" pattern solves a critical bootstrapping problem:
|
|
8
8
|
*
|
|
9
|
-
* The Supabase URL and
|
|
9
|
+
* The Supabase URL and publishable key are loaded at **runtime** (via
|
|
10
10
|
* `getConfig()` from `../runtime/runtimeConfig`), not at build time.
|
|
11
11
|
* Modules that `import { supabase }` at the top level would otherwise
|
|
12
12
|
* crash because the config has not been initialized yet when the import
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* which helps with server-side debugging of session eviction issues.
|
|
35
35
|
*
|
|
36
36
|
* Security considerations:
|
|
37
|
-
* - The
|
|
37
|
+
* - The publishable key is a **public** key (safe to include in client bundles).
|
|
38
38
|
* - PKCE flow is used instead of the implicit flow for stronger OAuth
|
|
39
39
|
* security and better compatibility with PWA environments.
|
|
40
40
|
* - Session persistence uses localStorage; the module proactively scrubs
|
|
@@ -230,7 +230,7 @@ function getOrCreateClient() {
|
|
|
230
230
|
}
|
|
231
231
|
const config = getConfig();
|
|
232
232
|
const url = config?.supabaseUrl || 'https://placeholder.supabase.co';
|
|
233
|
-
const key = config?.
|
|
233
|
+
const key = config?.supabasePublishableKey || 'placeholder';
|
|
234
234
|
if (!config) {
|
|
235
235
|
debugWarn('Supabase config not loaded yet. Call initConfig() before using supabase client.');
|
|
236
236
|
}
|
|
@@ -278,7 +278,7 @@ function getOrCreateClient() {
|
|
|
278
278
|
* The public Supabase client — a Proxy-based lazy singleton.
|
|
279
279
|
*
|
|
280
280
|
* **Why a Proxy?**
|
|
281
|
-
* The Supabase URL and
|
|
281
|
+
* The Supabase URL and publishable key are not available at import time (they come
|
|
282
282
|
* from a runtime config that is loaded asynchronously). A Proxy lets every
|
|
283
283
|
* module `import { supabase }` at the top level without worrying about
|
|
284
284
|
* initialization order. The real client is created transparently on first
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/supabase/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/supabase/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,gFAAgF;AAChF,uCAAuC;AACvC,gFAAgF;AAEhF;;;;GAIG;AACH,IAAI,OAAO,GAAG,SAAS,CAAC;AAExB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,GAAG,MAAM,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF;;;;;;;;;;;;GAYG;AACH,SAAS,sBAAsB;IAC7B,IAAI,OAAO,YAAY,KAAK,WAAW;QAAE,OAAO;IAEhD,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAErF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACjC,kDAAkD;oBAClD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACzC,gCAAgC;wBAChC,MAAM,mBAAmB;wBACvB,oDAAoD;wBACpD,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC;4BACpE,0CAA0C;4BAC1C,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC;4BAC9E,wCAAwC;4BACxC,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;wBAE7E,IAAI,mBAAmB,EAAE,CAAC;4BACxB,SAAS,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;4BAC1D,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP;;oEAEgD;oBAChD,SAAS,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;oBAC1D,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;;gFAGgF;AAChF,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,yEAAyE;IACzE,IAAI,CAAC;QACH,cAAc,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,yCAAyC;QACzC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC1E,SAAS,CAAC,sDAAsD,CAAC,CAAC;gBAClE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,4CAA4C;gBACpE,yBAAyB;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1E,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEhD;8FAC0E;oBAC1E,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;wBACrD,cAAc,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;wBACrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,uCAAuC;AACvC,gFAAgF;AAEhF;wEACwE;AACxE,sBAAsB,EAAE,CAAC;AAEzB;;;;;;;;GAQG;AACH,MAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,WAAW;IAC7B,0DAA0D;IAC1D,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC;AAEpG,IAAI,QAAQ,EAAE,CAAC;IACb,QAAQ,CAAC,6DAA6D,CAAC,CAAC;AAC1E,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF,mEAAmE;AACnE,IAAI,UAAU,GAA0B,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,iBAAiB;IACxB,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC;;uEAEmE;IACnE,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,QAAQ,CACN,sFAAsF,CACvF,CAAC;QACF,UAAU,GAAG,YAAY,CAAC,iCAAiC,EAAE,aAAa,EAAE;YAC1E,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE;SACzD,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,EAAE,WAAW,IAAI,iCAAiC,CAAC;IACrE,MAAM,GAAG,GAAG,MAAM,EAAE,sBAAsB,IAAI,aAAa,CAAC;IAE5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,SAAS,CAAC,iFAAiF,CAAC,CAAC;IAC/F,CAAC;IAED,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE;QAClC,IAAI,EAAE;YACJ,uEAAuE;YACvE,cAAc,EAAE,IAAI;YACpB,yCAAyC;YACzC,gBAAgB,EAAE,IAAI;YACtB,gDAAgD;YAChD,kBAAkB,EAAE,IAAI;YACxB,qBAAqB;YACrB,UAAU,EAAE,GAAG,OAAO,OAAO;YAC7B,6DAA6D;YAC7D,QAAQ,EAAE,MAAM;SACjB;QACD,MAAM,EAAE;YACN,8CAA8C;YAC9C,OAAO,EAAE;gBACP,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM;aACpE;SACF;KACF,CAAC,CAAC;IAEH,gFAAgF;IAChF,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnD,QAAQ,CACN,wBAAwB,KAAK,EAAE,EAC/B,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CACrD,CAAC;YAEF;;4CAEgC;YAChC,IAAI,KAAK,KAAK,YAAY,IAAI,QAAQ,EAAE,CAAC;gBACvC,SAAS,CAAC,8DAA8D,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;gBAChC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAmB,IAAI,KAAK,CAAC,EAAoB,EAAE;IACtE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;QACzB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides two complementary validation capabilities:
|
|
5
5
|
*
|
|
6
6
|
* 1. **Credential validation** (`validateSupabaseCredentials`):
|
|
7
|
-
* Tests that a given Supabase URL and
|
|
7
|
+
* Tests that a given Supabase URL and publishable key are well-formed and can
|
|
8
8
|
* reach the Supabase REST API. Used during setup / onboarding flows
|
|
9
9
|
* where the user manually enters their project credentials.
|
|
10
10
|
*
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* Validate Supabase credentials by attempting a lightweight API call.
|
|
34
34
|
*
|
|
35
35
|
* This function is designed for **setup flows** where a user provides their
|
|
36
|
-
* Supabase URL and
|
|
36
|
+
* Supabase URL and publishable key and the app needs to verify them before saving.
|
|
37
37
|
*
|
|
38
38
|
* Validation steps:
|
|
39
39
|
* 1. Parse the URL to ensure it is syntactically valid.
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* - Network error => Supabase is unreachable.
|
|
48
48
|
*
|
|
49
49
|
* @param url - The Supabase project URL (e.g. `https://xyz.supabase.co`).
|
|
50
|
-
* @param
|
|
50
|
+
* @param publishableKey - The project's publishable (public) API key.
|
|
51
51
|
* @param testTable - Optional table name to query. Defaults to `'_health_check'`.
|
|
52
52
|
* Using a table that does not exist is fine — we only care
|
|
53
53
|
* whether the API responds, not whether the table is present.
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
*
|
|
69
69
|
* @see {@link validateSchema} — for post-setup table existence checks
|
|
70
70
|
*/
|
|
71
|
-
export declare function validateSupabaseCredentials(url: string,
|
|
71
|
+
export declare function validateSupabaseCredentials(url: string, publishableKey: string, testTable?: string): Promise<{
|
|
72
72
|
valid: boolean;
|
|
73
73
|
error?: string;
|
|
74
74
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/supabase/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAYH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,MAAM,EACX,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/supabase/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAYH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+C7C;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAqDD"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides two complementary validation capabilities:
|
|
5
5
|
*
|
|
6
6
|
* 1. **Credential validation** (`validateSupabaseCredentials`):
|
|
7
|
-
* Tests that a given Supabase URL and
|
|
7
|
+
* Tests that a given Supabase URL and publishable key are well-formed and can
|
|
8
8
|
* reach the Supabase REST API. Used during setup / onboarding flows
|
|
9
9
|
* where the user manually enters their project credentials.
|
|
10
10
|
*
|
|
@@ -41,7 +41,7 @@ import { isDemoMode } from '../demo';
|
|
|
41
41
|
* Validate Supabase credentials by attempting a lightweight API call.
|
|
42
42
|
*
|
|
43
43
|
* This function is designed for **setup flows** where a user provides their
|
|
44
|
-
* Supabase URL and
|
|
44
|
+
* Supabase URL and publishable key and the app needs to verify them before saving.
|
|
45
45
|
*
|
|
46
46
|
* Validation steps:
|
|
47
47
|
* 1. Parse the URL to ensure it is syntactically valid.
|
|
@@ -55,7 +55,7 @@ import { isDemoMode } from '../demo';
|
|
|
55
55
|
* - Network error => Supabase is unreachable.
|
|
56
56
|
*
|
|
57
57
|
* @param url - The Supabase project URL (e.g. `https://xyz.supabase.co`).
|
|
58
|
-
* @param
|
|
58
|
+
* @param publishableKey - The project's publishable (public) API key.
|
|
59
59
|
* @param testTable - Optional table name to query. Defaults to `'_health_check'`.
|
|
60
60
|
* Using a table that does not exist is fine — we only care
|
|
61
61
|
* whether the API responds, not whether the table is present.
|
|
@@ -76,7 +76,7 @@ import { isDemoMode } from '../demo';
|
|
|
76
76
|
*
|
|
77
77
|
* @see {@link validateSchema} — for post-setup table existence checks
|
|
78
78
|
*/
|
|
79
|
-
export async function validateSupabaseCredentials(url,
|
|
79
|
+
export async function validateSupabaseCredentials(url, publishableKey, testTable) {
|
|
80
80
|
try {
|
|
81
81
|
new URL(url);
|
|
82
82
|
}
|
|
@@ -87,7 +87,7 @@ export async function validateSupabaseCredentials(url, anonKey, testTable) {
|
|
|
87
87
|
/* Create a throwaway client scoped to this validation call. We
|
|
88
88
|
intentionally do NOT reuse the module-level singleton because the
|
|
89
89
|
credentials being tested may differ from the app's active config. */
|
|
90
|
-
const tempClient = createClient(url,
|
|
90
|
+
const tempClient = createClient(url, publishableKey);
|
|
91
91
|
// Test REST API reachability by attempting a simple query
|
|
92
92
|
const { error } = await tempClient
|
|
93
93
|
.from(testTable || '_health_check')
|
|
@@ -98,13 +98,16 @@ export async function validateSupabaseCredentials(url, anonKey, testTable) {
|
|
|
98
98
|
if (error.message?.includes('Invalid API key') || error.code === 'PGRST301') {
|
|
99
99
|
return {
|
|
100
100
|
valid: false,
|
|
101
|
-
error: 'Invalid Supabase credentials. Check your URL and
|
|
101
|
+
error: 'Invalid Supabase credentials. Check your URL and Publishable Key.'
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
104
|
/* Table doesn't exist but the API responded — this means the URL and
|
|
105
|
-
|
|
106
|
-
treat this as a successful credential validation.
|
|
107
|
-
|
|
105
|
+
publishable key are correct; the schema just hasn't been set up yet. We
|
|
106
|
+
treat this as a successful credential validation.
|
|
107
|
+
PostgREST may phrase this as "relation does not exist" or
|
|
108
|
+
"Could not find the table ... in the schema cache". */
|
|
109
|
+
if ((error.message?.includes('relation') && error.message?.includes('does not exist')) ||
|
|
110
|
+
error.message?.includes('schema cache')) {
|
|
108
111
|
return { valid: true };
|
|
109
112
|
}
|
|
110
113
|
// Any other error
|
|
@@ -177,7 +180,8 @@ export async function validateSchema() {
|
|
|
177
180
|
without fetching any actual data rows. */
|
|
178
181
|
const { error } = await supabase.from(tableName).select('id').limit(0);
|
|
179
182
|
if (error) {
|
|
180
|
-
if (error.message?.includes('relation') && error.message?.includes('does not exist'))
|
|
183
|
+
if ((error.message?.includes('relation') && error.message?.includes('does not exist')) ||
|
|
184
|
+
error.message?.includes('schema cache')) {
|
|
181
185
|
missingTables.push(tableName);
|
|
182
186
|
errors.push(`Table "${tableName}" does not exist`);
|
|
183
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/supabase/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAW,EACX,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/supabase/validate.ts"],"names":[],"mappings":"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"}
|