stellar-drive 1.0.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.
- package/README.md +607 -0
- package/dist/actions/remoteChange.d.ts +204 -0
- package/dist/actions/remoteChange.d.ts.map +1 -0
- package/dist/actions/remoteChange.js +424 -0
- package/dist/actions/remoteChange.js.map +1 -0
- package/dist/actions/truncateTooltip.d.ts +56 -0
- package/dist/actions/truncateTooltip.d.ts.map +1 -0
- package/dist/actions/truncateTooltip.js +312 -0
- package/dist/actions/truncateTooltip.js.map +1 -0
- package/dist/auth/crypto.d.ts +41 -0
- package/dist/auth/crypto.d.ts.map +1 -0
- package/dist/auth/crypto.js +50 -0
- package/dist/auth/crypto.js.map +1 -0
- package/dist/auth/deviceVerification.d.ts +283 -0
- package/dist/auth/deviceVerification.d.ts.map +1 -0
- package/dist/auth/deviceVerification.js +575 -0
- package/dist/auth/deviceVerification.js.map +1 -0
- package/dist/auth/displayUtils.d.ts +98 -0
- package/dist/auth/displayUtils.d.ts.map +1 -0
- package/dist/auth/displayUtils.js +145 -0
- package/dist/auth/displayUtils.js.map +1 -0
- package/dist/auth/loginGuard.d.ts +134 -0
- package/dist/auth/loginGuard.d.ts.map +1 -0
- package/dist/auth/loginGuard.js +276 -0
- package/dist/auth/loginGuard.js.map +1 -0
- package/dist/auth/offlineCredentials.d.ts +105 -0
- package/dist/auth/offlineCredentials.d.ts.map +1 -0
- package/dist/auth/offlineCredentials.js +176 -0
- package/dist/auth/offlineCredentials.js.map +1 -0
- package/dist/auth/offlineSession.d.ts +96 -0
- package/dist/auth/offlineSession.d.ts.map +1 -0
- package/dist/auth/offlineSession.js +145 -0
- package/dist/auth/offlineSession.js.map +1 -0
- package/dist/auth/resolveAuthState.d.ts +85 -0
- package/dist/auth/resolveAuthState.d.ts.map +1 -0
- package/dist/auth/resolveAuthState.js +249 -0
- package/dist/auth/resolveAuthState.js.map +1 -0
- package/dist/auth/singleUser.d.ts +498 -0
- package/dist/auth/singleUser.d.ts.map +1 -0
- package/dist/auth/singleUser.js +1282 -0
- package/dist/auth/singleUser.js.map +1 -0
- package/dist/bin/commands.d.ts +14 -0
- package/dist/bin/commands.d.ts.map +1 -0
- package/dist/bin/commands.js +68 -0
- package/dist/bin/commands.js.map +1 -0
- package/dist/bin/install-pwa.d.ts +41 -0
- package/dist/bin/install-pwa.d.ts.map +1 -0
- package/dist/bin/install-pwa.js +4594 -0
- package/dist/bin/install-pwa.js.map +1 -0
- package/dist/config.d.ts +249 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +395 -0
- package/dist/config.js.map +1 -0
- package/dist/conflicts.d.ts +306 -0
- package/dist/conflicts.d.ts.map +1 -0
- package/dist/conflicts.js +807 -0
- package/dist/conflicts.js.map +1 -0
- package/dist/crdt/awareness.d.ts +128 -0
- package/dist/crdt/awareness.d.ts.map +1 -0
- package/dist/crdt/awareness.js +284 -0
- package/dist/crdt/awareness.js.map +1 -0
- package/dist/crdt/channel.d.ts +165 -0
- package/dist/crdt/channel.d.ts.map +1 -0
- package/dist/crdt/channel.js +522 -0
- package/dist/crdt/channel.js.map +1 -0
- package/dist/crdt/config.d.ts +58 -0
- package/dist/crdt/config.d.ts.map +1 -0
- package/dist/crdt/config.js +123 -0
- package/dist/crdt/config.js.map +1 -0
- package/dist/crdt/helpers.d.ts +104 -0
- package/dist/crdt/helpers.d.ts.map +1 -0
- package/dist/crdt/helpers.js +116 -0
- package/dist/crdt/helpers.js.map +1 -0
- package/dist/crdt/offline.d.ts +58 -0
- package/dist/crdt/offline.d.ts.map +1 -0
- package/dist/crdt/offline.js +130 -0
- package/dist/crdt/offline.js.map +1 -0
- package/dist/crdt/persistence.d.ts +65 -0
- package/dist/crdt/persistence.d.ts.map +1 -0
- package/dist/crdt/persistence.js +171 -0
- package/dist/crdt/persistence.js.map +1 -0
- package/dist/crdt/provider.d.ts +109 -0
- package/dist/crdt/provider.d.ts.map +1 -0
- package/dist/crdt/provider.js +543 -0
- package/dist/crdt/provider.js.map +1 -0
- package/dist/crdt/store.d.ts +111 -0
- package/dist/crdt/store.d.ts.map +1 -0
- package/dist/crdt/store.js +158 -0
- package/dist/crdt/store.js.map +1 -0
- package/dist/crdt/types.d.ts +281 -0
- package/dist/crdt/types.d.ts.map +1 -0
- package/dist/crdt/types.js +26 -0
- package/dist/crdt/types.js.map +1 -0
- package/dist/data.d.ts +502 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +862 -0
- package/dist/data.js.map +1 -0
- package/dist/database.d.ts +153 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +325 -0
- package/dist/database.js.map +1 -0
- package/dist/debug.d.ts +87 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +135 -0
- package/dist/debug.js.map +1 -0
- package/dist/demo.d.ts +131 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +168 -0
- package/dist/demo.js.map +1 -0
- package/dist/deviceId.d.ts +47 -0
- package/dist/deviceId.d.ts.map +1 -0
- package/dist/deviceId.js +106 -0
- package/dist/deviceId.js.map +1 -0
- package/dist/diagnostics.d.ts +292 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +378 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/engine.d.ts +230 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +2636 -0
- package/dist/engine.js.map +1 -0
- package/dist/entries/actions.d.ts +16 -0
- package/dist/entries/actions.d.ts.map +1 -0
- package/dist/entries/actions.js +29 -0
- package/dist/entries/actions.js.map +1 -0
- package/dist/entries/auth.d.ts +19 -0
- package/dist/entries/auth.d.ts.map +1 -0
- package/dist/entries/auth.js +50 -0
- package/dist/entries/auth.js.map +1 -0
- package/dist/entries/config.d.ts +15 -0
- package/dist/entries/config.d.ts.map +1 -0
- package/dist/entries/config.js +20 -0
- package/dist/entries/config.js.map +1 -0
- package/dist/entries/crdt.d.ts +32 -0
- package/dist/entries/crdt.d.ts.map +1 -0
- package/dist/entries/crdt.js +52 -0
- package/dist/entries/crdt.js.map +1 -0
- package/dist/entries/kit.d.ts +22 -0
- package/dist/entries/kit.d.ts.map +1 -0
- package/dist/entries/kit.js +58 -0
- package/dist/entries/kit.js.map +1 -0
- package/dist/entries/stores.d.ts +22 -0
- package/dist/entries/stores.d.ts.map +1 -0
- package/dist/entries/stores.js +57 -0
- package/dist/entries/stores.js.map +1 -0
- package/dist/entries/types.d.ts +23 -0
- package/dist/entries/types.d.ts.map +1 -0
- package/dist/entries/types.js +12 -0
- package/dist/entries/types.js.map +1 -0
- package/dist/entries/utils.d.ts +12 -0
- package/dist/entries/utils.d.ts.map +1 -0
- package/dist/entries/utils.js +42 -0
- package/dist/entries/utils.js.map +1 -0
- package/dist/entries/vite.d.ts +20 -0
- package/dist/entries/vite.d.ts.map +1 -0
- package/dist/entries/vite.js +26 -0
- package/dist/entries/vite.js.map +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +234 -0
- package/dist/index.js.map +1 -0
- package/dist/kit/auth.d.ts +80 -0
- package/dist/kit/auth.d.ts.map +1 -0
- package/dist/kit/auth.js +75 -0
- package/dist/kit/auth.js.map +1 -0
- package/dist/kit/confirm.d.ts +111 -0
- package/dist/kit/confirm.d.ts.map +1 -0
- package/dist/kit/confirm.js +169 -0
- package/dist/kit/confirm.js.map +1 -0
- package/dist/kit/loads.d.ts +187 -0
- package/dist/kit/loads.d.ts.map +1 -0
- package/dist/kit/loads.js +208 -0
- package/dist/kit/loads.js.map +1 -0
- package/dist/kit/server.d.ts +175 -0
- package/dist/kit/server.d.ts.map +1 -0
- package/dist/kit/server.js +297 -0
- package/dist/kit/server.js.map +1 -0
- package/dist/kit/sw.d.ts +176 -0
- package/dist/kit/sw.d.ts.map +1 -0
- package/dist/kit/sw.js +320 -0
- package/dist/kit/sw.js.map +1 -0
- package/dist/queue.d.ts +306 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +925 -0
- package/dist/queue.js.map +1 -0
- package/dist/realtime.d.ts +280 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +1031 -0
- package/dist/realtime.js.map +1 -0
- package/dist/runtime/runtimeConfig.d.ts +110 -0
- package/dist/runtime/runtimeConfig.d.ts.map +1 -0
- package/dist/runtime/runtimeConfig.js +260 -0
- package/dist/runtime/runtimeConfig.js.map +1 -0
- package/dist/schema.d.ts +150 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +891 -0
- package/dist/schema.js.map +1 -0
- package/dist/stores/authState.d.ts +204 -0
- package/dist/stores/authState.d.ts.map +1 -0
- package/dist/stores/authState.js +336 -0
- package/dist/stores/authState.js.map +1 -0
- package/dist/stores/factories.d.ts +140 -0
- package/dist/stores/factories.d.ts.map +1 -0
- package/dist/stores/factories.js +157 -0
- package/dist/stores/factories.js.map +1 -0
- package/dist/stores/network.d.ts +48 -0
- package/dist/stores/network.d.ts.map +1 -0
- package/dist/stores/network.js +261 -0
- package/dist/stores/network.js.map +1 -0
- package/dist/stores/remoteChanges.d.ts +417 -0
- package/dist/stores/remoteChanges.d.ts.map +1 -0
- package/dist/stores/remoteChanges.js +626 -0
- package/dist/stores/remoteChanges.js.map +1 -0
- package/dist/stores/sync.d.ts +165 -0
- package/dist/stores/sync.d.ts.map +1 -0
- package/dist/stores/sync.js +275 -0
- package/dist/stores/sync.js.map +1 -0
- package/dist/supabase/auth.d.ts +219 -0
- package/dist/supabase/auth.d.ts.map +1 -0
- package/dist/supabase/auth.js +459 -0
- package/dist/supabase/auth.js.map +1 -0
- package/dist/supabase/client.d.ts +88 -0
- package/dist/supabase/client.d.ts.map +1 -0
- package/dist/supabase/client.js +313 -0
- package/dist/supabase/client.js.map +1 -0
- package/dist/supabase/validate.d.ts +118 -0
- package/dist/supabase/validate.d.ts.map +1 -0
- package/dist/supabase/validate.js +208 -0
- package/dist/supabase/validate.js.map +1 -0
- package/dist/sw/build/vite-plugin.d.ts +149 -0
- package/dist/sw/build/vite-plugin.d.ts.map +1 -0
- package/dist/sw/build/vite-plugin.js +517 -0
- package/dist/sw/build/vite-plugin.js.map +1 -0
- package/dist/sw/sw.js +664 -0
- package/dist/types.d.ts +363 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +85 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +156 -0
- package/dist/utils.js.map +1 -0
- package/package.json +117 -0
- package/src/components/DeferredChangesBanner.svelte +477 -0
- package/src/components/DemoBanner.svelte +110 -0
- package/src/components/SyncStatus.svelte +1732 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Runtime Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Replaces build-time `$env/static/public` with runtime config fetched from the
|
|
5
|
+
* server. Config is cached in `localStorage` for instant subsequent loads and
|
|
6
|
+
* offline PWA support.
|
|
7
|
+
*
|
|
8
|
+
* **Lifecycle:**
|
|
9
|
+
* 1. On first visit, `initConfig()` fetches `/api/config` from the server.
|
|
10
|
+
* 2. A valid response is persisted to `localStorage` under a prefixed key.
|
|
11
|
+
* 3. On subsequent visits the cached config is returned synchronously via
|
|
12
|
+
* `getConfig()`, while a background fetch validates it against the server.
|
|
13
|
+
* 4. If the network is unreachable (offline PWA), the cached config is used
|
|
14
|
+
* as-is — ensuring the app can boot without connectivity.
|
|
15
|
+
*
|
|
16
|
+
* @see {@link initConfig} for the async initialisation flow
|
|
17
|
+
* @see {@link getConfig} for synchronous access after initialisation
|
|
18
|
+
* @see {@link setConfig} for programmatic updates (e.g., after a setup wizard)
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Shape of the application configuration object returned by `/api/config`.
|
|
22
|
+
*
|
|
23
|
+
* Contains the minimum credentials needed to initialise Supabase on the client
|
|
24
|
+
* and a flag indicating whether the app has been configured at all.
|
|
25
|
+
*/
|
|
26
|
+
export interface AppConfig {
|
|
27
|
+
/** The full URL of the Supabase project (e.g., `https://xyz.supabase.co`). */
|
|
28
|
+
supabaseUrl: string;
|
|
29
|
+
/** The public anonymous key for the Supabase project. */
|
|
30
|
+
supabaseAnonKey: string;
|
|
31
|
+
/**
|
|
32
|
+
* Whether the application has completed initial setup.
|
|
33
|
+
* `false` when `/api/config` returns a "not yet configured" response.
|
|
34
|
+
*/
|
|
35
|
+
configured: boolean;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Override the localStorage key prefix used for caching config.
|
|
39
|
+
*
|
|
40
|
+
* Call this **before** `initConfig()` if your app uses a custom prefix
|
|
41
|
+
* (e.g., `_setConfigPrefix('myapp')`).
|
|
42
|
+
*
|
|
43
|
+
* @param prefix - The new prefix string (e.g., `'myapp'`).
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* _setConfigPrefix('myapp');
|
|
48
|
+
* // localStorage key will now be "myapp_config"
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function _setConfigPrefix(prefix: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Initialise the runtime config.
|
|
54
|
+
*
|
|
55
|
+
* **Strategy:**
|
|
56
|
+
* 1. Return the in-flight promise if already initialising (de-duplication).
|
|
57
|
+
* 2. Try localStorage first for an instant, synchronous result.
|
|
58
|
+
* 3. Fetch `/api/config` to validate / update the cached value.
|
|
59
|
+
* 4. If the server says "not configured", clear any stale cache and return `null`.
|
|
60
|
+
* 5. If the network is unreachable, fall back to the cached config (offline PWA).
|
|
61
|
+
*
|
|
62
|
+
* @returns A promise resolving to the `AppConfig` if the app is configured,
|
|
63
|
+
* or `null` if not yet configured / unreachable.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const config = await initConfig();
|
|
68
|
+
* if (!config) {
|
|
69
|
+
* // Redirect to setup wizard
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function initConfig(): Promise<AppConfig | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Get config synchronously. Returns the cached config or `null`.
|
|
76
|
+
*
|
|
77
|
+
* **Important:** Call {@link initConfig} first to ensure the config has been
|
|
78
|
+
* loaded. This function will attempt a localStorage fallback if the in-memory
|
|
79
|
+
* cache is empty, but it will *never* make a network request.
|
|
80
|
+
*
|
|
81
|
+
* @returns The current `AppConfig`, or `null` if not yet initialised.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* const config = getConfig();
|
|
86
|
+
* if (config) {
|
|
87
|
+
* console.log(config.supabaseUrl);
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function getConfig(): AppConfig | null;
|
|
92
|
+
/**
|
|
93
|
+
* Set config directly (used after the setup wizard completes).
|
|
94
|
+
*
|
|
95
|
+
* Updates both the in-memory cache and localStorage in a single call,
|
|
96
|
+
* so subsequent `getConfig()` calls return the new value immediately.
|
|
97
|
+
*
|
|
98
|
+
* @param config - The new `AppConfig` to store.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* setConfig({
|
|
103
|
+
* supabaseUrl: 'https://xyz.supabase.co',
|
|
104
|
+
* supabaseAnonKey: 'eyJ...',
|
|
105
|
+
* configured: true
|
|
106
|
+
* });
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function setConfig(config: AppConfig): void;
|
|
110
|
+
//# sourceMappingURL=runtimeConfig.d.ts.map
|
|
@@ -0,0 +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,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IAExB;;;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"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Runtime Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Replaces build-time `$env/static/public` with runtime config fetched from the
|
|
5
|
+
* server. Config is cached in `localStorage` for instant subsequent loads and
|
|
6
|
+
* offline PWA support.
|
|
7
|
+
*
|
|
8
|
+
* **Lifecycle:**
|
|
9
|
+
* 1. On first visit, `initConfig()` fetches `/api/config` from the server.
|
|
10
|
+
* 2. A valid response is persisted to `localStorage` under a prefixed key.
|
|
11
|
+
* 3. On subsequent visits the cached config is returned synchronously via
|
|
12
|
+
* `getConfig()`, while a background fetch validates it against the server.
|
|
13
|
+
* 4. If the network is unreachable (offline PWA), the cached config is used
|
|
14
|
+
* as-is — ensuring the app can boot without connectivity.
|
|
15
|
+
*
|
|
16
|
+
* @see {@link initConfig} for the async initialisation flow
|
|
17
|
+
* @see {@link getConfig} for synchronous access after initialisation
|
|
18
|
+
* @see {@link setConfig} for programmatic updates (e.g., after a setup wizard)
|
|
19
|
+
*/
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// CACHE KEY PREFIX
|
|
22
|
+
// =============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Prefix used for the localStorage cache key. Defaults to `'stellar'` but can
|
|
25
|
+
* be overridden per-app via {@link _setConfigPrefix} so multiple stellar-drive
|
|
26
|
+
* apps on the same origin don't collide.
|
|
27
|
+
*/
|
|
28
|
+
let _prefix = 'stellar';
|
|
29
|
+
/**
|
|
30
|
+
* Override the localStorage key prefix used for caching config.
|
|
31
|
+
*
|
|
32
|
+
* Call this **before** `initConfig()` if your app uses a custom prefix
|
|
33
|
+
* (e.g., `_setConfigPrefix('myapp')`).
|
|
34
|
+
*
|
|
35
|
+
* @param prefix - The new prefix string (e.g., `'myapp'`).
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* _setConfigPrefix('myapp');
|
|
40
|
+
* // localStorage key will now be "myapp_config"
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function _setConfigPrefix(prefix) {
|
|
44
|
+
_prefix = prefix;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build the localStorage key for the cached config.
|
|
48
|
+
*
|
|
49
|
+
* @returns The fully-qualified cache key (e.g., `"stellar_config"`).
|
|
50
|
+
*/
|
|
51
|
+
function getCacheKey() {
|
|
52
|
+
return `${_prefix}_config`;
|
|
53
|
+
}
|
|
54
|
+
// =============================================================================
|
|
55
|
+
// IN-MEMORY CACHE STATE
|
|
56
|
+
// =============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* In-memory config singleton — populated by `initConfig()` or `setConfig()`.
|
|
59
|
+
* Avoids repeated JSON parsing from localStorage on every `getConfig()` call.
|
|
60
|
+
*/
|
|
61
|
+
let configCache = null;
|
|
62
|
+
/**
|
|
63
|
+
* De-duplication guard for `initConfig()`. Stores the in-flight promise so
|
|
64
|
+
* concurrent callers share a single network request instead of racing.
|
|
65
|
+
*/
|
|
66
|
+
let configPromise = null;
|
|
67
|
+
// =============================================================================
|
|
68
|
+
// LOCAL STORAGE HELPERS
|
|
69
|
+
// =============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Load config from localStorage (synchronous, instant).
|
|
72
|
+
*
|
|
73
|
+
* Performs basic validation to reject malformed or incomplete entries —
|
|
74
|
+
* the stored value must have `configured: true` and both Supabase fields
|
|
75
|
+
* populated.
|
|
76
|
+
*
|
|
77
|
+
* @returns The cached `AppConfig` if valid, or `null` if missing / invalid.
|
|
78
|
+
*/
|
|
79
|
+
function loadFromCache() {
|
|
80
|
+
/* Guard for SSR / environments without localStorage */
|
|
81
|
+
if (typeof localStorage === 'undefined')
|
|
82
|
+
return null;
|
|
83
|
+
try {
|
|
84
|
+
const stored = localStorage.getItem(getCacheKey());
|
|
85
|
+
if (!stored)
|
|
86
|
+
return null;
|
|
87
|
+
const parsed = JSON.parse(stored);
|
|
88
|
+
if (parsed.configured && parsed.supabaseUrl && parsed.supabaseAnonKey) {
|
|
89
|
+
return parsed;
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Persist config to localStorage for instant access on next page load.
|
|
99
|
+
*
|
|
100
|
+
* Silently swallows errors (e.g., storage quota exceeded, private browsing
|
|
101
|
+
* restrictions) because localStorage is a convenience cache, not a
|
|
102
|
+
* requirement.
|
|
103
|
+
*
|
|
104
|
+
* @param config - The `AppConfig` to persist.
|
|
105
|
+
*/
|
|
106
|
+
function saveToCache(config) {
|
|
107
|
+
if (typeof localStorage === 'undefined')
|
|
108
|
+
return;
|
|
109
|
+
try {
|
|
110
|
+
localStorage.setItem(getCacheKey(), JSON.stringify(config));
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
/* Storage full or unavailable — non-critical */
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// =============================================================================
|
|
117
|
+
// INITIALISATION (ASYNC)
|
|
118
|
+
// =============================================================================
|
|
119
|
+
/**
|
|
120
|
+
* Initialise the runtime config.
|
|
121
|
+
*
|
|
122
|
+
* **Strategy:**
|
|
123
|
+
* 1. Return the in-flight promise if already initialising (de-duplication).
|
|
124
|
+
* 2. Try localStorage first for an instant, synchronous result.
|
|
125
|
+
* 3. Fetch `/api/config` to validate / update the cached value.
|
|
126
|
+
* 4. If the server says "not configured", clear any stale cache and return `null`.
|
|
127
|
+
* 5. If the network is unreachable, fall back to the cached config (offline PWA).
|
|
128
|
+
*
|
|
129
|
+
* @returns A promise resolving to the `AppConfig` if the app is configured,
|
|
130
|
+
* or `null` if not yet configured / unreachable.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* const config = await initConfig();
|
|
135
|
+
* if (!config) {
|
|
136
|
+
* // Redirect to setup wizard
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export async function initConfig() {
|
|
141
|
+
/* Return in-flight promise if already initializing */
|
|
142
|
+
if (configPromise)
|
|
143
|
+
return configPromise;
|
|
144
|
+
configPromise = (async () => {
|
|
145
|
+
/* Try localStorage first for instant load */
|
|
146
|
+
const cached = loadFromCache();
|
|
147
|
+
if (cached) {
|
|
148
|
+
configCache = cached;
|
|
149
|
+
}
|
|
150
|
+
/* Fetch from server to validate/update */
|
|
151
|
+
try {
|
|
152
|
+
const response = await fetch('/api/config');
|
|
153
|
+
if (response.ok) {
|
|
154
|
+
const serverConfig = await response.json();
|
|
155
|
+
if (serverConfig.configured) {
|
|
156
|
+
const config = {
|
|
157
|
+
supabaseUrl: serverConfig.supabaseUrl,
|
|
158
|
+
supabaseAnonKey: serverConfig.supabaseAnonKey,
|
|
159
|
+
configured: true
|
|
160
|
+
};
|
|
161
|
+
configCache = config;
|
|
162
|
+
saveToCache(config);
|
|
163
|
+
return config;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
/* Server says not configured — clear any stale cache */
|
|
167
|
+
configCache = null;
|
|
168
|
+
clearConfigCache();
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
/* Network error — use cached config if available (offline PWA support) */
|
|
175
|
+
if (configCache) {
|
|
176
|
+
return configCache;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return configCache;
|
|
180
|
+
})();
|
|
181
|
+
const result = await configPromise;
|
|
182
|
+
/* Reset the guard so future calls can re-fetch if needed */
|
|
183
|
+
configPromise = null;
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
// =============================================================================
|
|
187
|
+
// SYNCHRONOUS ACCESS
|
|
188
|
+
// =============================================================================
|
|
189
|
+
/**
|
|
190
|
+
* Get config synchronously. Returns the cached config or `null`.
|
|
191
|
+
*
|
|
192
|
+
* **Important:** Call {@link initConfig} first to ensure the config has been
|
|
193
|
+
* loaded. This function will attempt a localStorage fallback if the in-memory
|
|
194
|
+
* cache is empty, but it will *never* make a network request.
|
|
195
|
+
*
|
|
196
|
+
* @returns The current `AppConfig`, or `null` if not yet initialised.
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```ts
|
|
200
|
+
* const config = getConfig();
|
|
201
|
+
* if (config) {
|
|
202
|
+
* console.log(config.supabaseUrl);
|
|
203
|
+
* }
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export function getConfig() {
|
|
207
|
+
if (configCache)
|
|
208
|
+
return configCache;
|
|
209
|
+
/* Try localStorage as fallback */
|
|
210
|
+
const cached = loadFromCache();
|
|
211
|
+
if (cached) {
|
|
212
|
+
configCache = cached;
|
|
213
|
+
}
|
|
214
|
+
return configCache;
|
|
215
|
+
}
|
|
216
|
+
// =============================================================================
|
|
217
|
+
// PROGRAMMATIC UPDATE
|
|
218
|
+
// =============================================================================
|
|
219
|
+
/**
|
|
220
|
+
* Set config directly (used after the setup wizard completes).
|
|
221
|
+
*
|
|
222
|
+
* Updates both the in-memory cache and localStorage in a single call,
|
|
223
|
+
* so subsequent `getConfig()` calls return the new value immediately.
|
|
224
|
+
*
|
|
225
|
+
* @param config - The new `AppConfig` to store.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* setConfig({
|
|
230
|
+
* supabaseUrl: 'https://xyz.supabase.co',
|
|
231
|
+
* supabaseAnonKey: 'eyJ...',
|
|
232
|
+
* configured: true
|
|
233
|
+
* });
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
export function setConfig(config) {
|
|
237
|
+
configCache = config;
|
|
238
|
+
saveToCache(config);
|
|
239
|
+
}
|
|
240
|
+
// =============================================================================
|
|
241
|
+
// CACHE INVALIDATION
|
|
242
|
+
// =============================================================================
|
|
243
|
+
/**
|
|
244
|
+
* Clear the cached config from both in-memory state and localStorage.
|
|
245
|
+
*
|
|
246
|
+
* Called internally when the server reports `configured: false` to ensure
|
|
247
|
+
* stale credentials are not reused on next load.
|
|
248
|
+
*/
|
|
249
|
+
function clearConfigCache() {
|
|
250
|
+
configCache = null;
|
|
251
|
+
if (typeof localStorage !== 'undefined') {
|
|
252
|
+
try {
|
|
253
|
+
localStorage.removeItem(getCacheKey());
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
/* Ignore — non-critical */
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=runtimeConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../../src/runtime/runtimeConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Supabase SQL Generation from Schema Definitions
|
|
3
|
+
*
|
|
4
|
+
* Generates complete Supabase SQL (CREATE TABLE, RLS, triggers, indexes,
|
|
5
|
+
* realtime subscriptions) from a declarative {@link SchemaDefinition}.
|
|
6
|
+
* This eliminates the need for consumers to hand-write SQL — the schema
|
|
7
|
+
* in code becomes the single source of truth.
|
|
8
|
+
*
|
|
9
|
+
* The generation flow:
|
|
10
|
+
* 1. Schema string fields → Supabase SQL columns (with inferred types)
|
|
11
|
+
* 2. `sqlColumns` (object form) → Supabase SQL columns (explicit types)
|
|
12
|
+
* 3. System columns (auto) → Both Supabase + Dexie
|
|
13
|
+
*
|
|
14
|
+
* Column types are inferred from field naming conventions:
|
|
15
|
+
* - `*_id` → `uuid` (foreign key)
|
|
16
|
+
* - `*_at` → `timestamptz`
|
|
17
|
+
* - `order` → `double precision default 0`
|
|
18
|
+
* - `*_count`, `*_value`, etc. → `integer default 0`
|
|
19
|
+
* - Boolean patterns (`is_*`, `completed`, etc.) → `boolean default false`
|
|
20
|
+
* - Everything else → `text`
|
|
21
|
+
*
|
|
22
|
+
* @see {@link config.ts#initEngine} for schema-driven initialization
|
|
23
|
+
* @see {@link sw/build/vite-plugin.ts} for the Vite plugin that auto-applies generated SQL
|
|
24
|
+
*/
|
|
25
|
+
import type { SchemaDefinition } from './types';
|
|
26
|
+
/**
|
|
27
|
+
* Options for controlling SQL generation output.
|
|
28
|
+
*
|
|
29
|
+
* All fields are optional with sensible defaults. The most common use case
|
|
30
|
+
* is to just call `generateSupabaseSQL(schema)` with no options.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* generateSupabaseSQL(schema, {
|
|
34
|
+
* appName: 'Stellar',
|
|
35
|
+
* includeCRDT: true,
|
|
36
|
+
* includeDeviceVerification: true,
|
|
37
|
+
* });
|
|
38
|
+
*/
|
|
39
|
+
export interface SQLGenerationOptions {
|
|
40
|
+
/** Application name for SQL comments. */
|
|
41
|
+
appName?: string;
|
|
42
|
+
/** Include CRDT document storage table. @default false */
|
|
43
|
+
includeCRDT?: boolean;
|
|
44
|
+
/** Include trusted_devices table. @default true */
|
|
45
|
+
includeDeviceVerification?: boolean;
|
|
46
|
+
/** Include helper functions (set_user_id, update_updated_at). @default true */
|
|
47
|
+
includeHelperFunctions?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Options for controlling TypeScript interface generation.
|
|
51
|
+
*/
|
|
52
|
+
export interface TypeScriptGenerationOptions {
|
|
53
|
+
/** Header comment at the top of the generated file. */
|
|
54
|
+
header?: string;
|
|
55
|
+
/** Whether to include system columns in generated interfaces. @default true */
|
|
56
|
+
includeSystemColumns?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Infer a SQL column type from a field name using naming conventions.
|
|
60
|
+
*
|
|
61
|
+
* The engine uses consistent field naming patterns across all apps, so the
|
|
62
|
+
* column type can be reliably determined from the field suffix or exact name.
|
|
63
|
+
* Consumers can override any inference via `sqlColumns` in the schema config.
|
|
64
|
+
*
|
|
65
|
+
* @param fieldName - The snake_case field name (e.g., `'goal_list_id'`, `'order'`).
|
|
66
|
+
* @returns The SQL type with optional default (e.g., `'uuid'`, `'boolean default false'`).
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* inferColumnType('goal_list_id'); // → 'uuid'
|
|
70
|
+
* inferColumnType('completed_at'); // → 'timestamptz'
|
|
71
|
+
* inferColumnType('order'); // → 'double precision default 0'
|
|
72
|
+
* inferColumnType('is_active'); // → 'boolean default false'
|
|
73
|
+
* inferColumnType('title'); // → 'text'
|
|
74
|
+
*
|
|
75
|
+
* @see {@link SchemaTableConfig.sqlColumns} for explicit type overrides
|
|
76
|
+
*/
|
|
77
|
+
export declare function inferColumnType(fieldName: string): string;
|
|
78
|
+
/**
|
|
79
|
+
* Generate TypeScript interfaces and enum types from a schema definition.
|
|
80
|
+
*
|
|
81
|
+
* Only tables with a `fields` property are included. Tables without `fields`
|
|
82
|
+
* are silently skipped (backward-compatible).
|
|
83
|
+
*
|
|
84
|
+
* @param schema - The declarative schema definition.
|
|
85
|
+
* @param options - Optional generation options.
|
|
86
|
+
* @returns The generated TypeScript source string.
|
|
87
|
+
*/
|
|
88
|
+
export declare function generateTypeScript(schema: SchemaDefinition, options?: TypeScriptGenerationOptions): string;
|
|
89
|
+
/**
|
|
90
|
+
* Generate the complete Supabase SQL from a declarative schema definition.
|
|
91
|
+
*
|
|
92
|
+
* This is the main entry point for SQL generation. It produces a single SQL
|
|
93
|
+
* file that can be pasted directly into the Supabase SQL Editor to bootstrap
|
|
94
|
+
* the entire database.
|
|
95
|
+
*
|
|
96
|
+
* The generated SQL includes (in order):
|
|
97
|
+
* 1. Extensions (`uuid-ossp`)
|
|
98
|
+
* 2. Helper functions (`set_user_id`, `update_updated_at_column`)
|
|
99
|
+
* 3. One `CREATE TABLE` block per schema table
|
|
100
|
+
* 4. `trusted_devices` table (unless `includeDeviceVerification` is `false`)
|
|
101
|
+
* 5. `crdt_documents` table (only if `includeCRDT` is `true`)
|
|
102
|
+
*
|
|
103
|
+
* @param schema - The declarative schema definition.
|
|
104
|
+
* @param options - Optional generation options.
|
|
105
|
+
* @returns The complete SQL string ready for execution.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* const sql = generateSupabaseSQL({
|
|
109
|
+
* goals: 'goal_list_id, order',
|
|
110
|
+
* goal_lists: { indexes: 'order', sqlColumns: { name: 'text not null' } },
|
|
111
|
+
* focus_settings: { singleton: true },
|
|
112
|
+
* }, { appName: 'Stellar' });
|
|
113
|
+
*
|
|
114
|
+
* // Write to file or paste into Supabase SQL Editor
|
|
115
|
+
* fs.writeFileSync('supabase-schema.sql', sql);
|
|
116
|
+
*
|
|
117
|
+
* @see {@link SchemaDefinition} for the schema format
|
|
118
|
+
* @see {@link generateMigrationSQL} for incremental schema changes
|
|
119
|
+
*/
|
|
120
|
+
export declare function generateSupabaseSQL(schema: SchemaDefinition, options?: SQLGenerationOptions): string;
|
|
121
|
+
/**
|
|
122
|
+
* Generate migration SQL by diffing two schema definitions.
|
|
123
|
+
*
|
|
124
|
+
* Compares the current (deployed) schema against the new (desired) schema
|
|
125
|
+
* and produces `ALTER TABLE` statements for the differences:
|
|
126
|
+
* - **New tables** → full `CREATE TABLE` (via {@link generateTableSQL})
|
|
127
|
+
* - **Removed tables** → commented-out `DROP TABLE` (safety: requires manual review)
|
|
128
|
+
* - **New columns** → `ALTER TABLE ... ADD COLUMN`
|
|
129
|
+
* - **Removed columns** → commented-out `ALTER TABLE ... DROP COLUMN`
|
|
130
|
+
*
|
|
131
|
+
* This function intentionally does NOT handle column type changes — those
|
|
132
|
+
* require careful manual migration (data conversion, backfill, etc.).
|
|
133
|
+
*
|
|
134
|
+
* @param currentSchema - The currently deployed schema definition.
|
|
135
|
+
* @param newSchema - The desired (target) schema definition.
|
|
136
|
+
* @returns The migration SQL string. Empty string if no changes detected.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* const migration = generateMigrationSQL(
|
|
140
|
+
* { goals: 'goal_list_id, order' },
|
|
141
|
+
* {
|
|
142
|
+
* goals: 'goal_list_id, order, priority', // added column
|
|
143
|
+
* tags: 'name', // new table
|
|
144
|
+
* }
|
|
145
|
+
* );
|
|
146
|
+
*
|
|
147
|
+
* @see {@link generateSupabaseSQL} for generating the initial schema
|
|
148
|
+
*/
|
|
149
|
+
export declare function generateMigrationSQL(currentSchema: SchemaDefinition, newSchema: SchemaDefinition): string;
|
|
150
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAgC,MAAM,SAAS,CAAC;AAM9E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAuCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA4CzD;AA0MD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,2BAA2B,GACpC,MAAM,CAkFR;AA8ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,CAgMR;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,gBAAgB,GAC1B,MAAM,CA2MR"}
|