@prabhask5/stellar-engine 1.1.8 → 1.1.10
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 +19 -26
- package/dist/auth/crypto.d.ts +0 -23
- package/dist/auth/crypto.d.ts.map +1 -1
- package/dist/auth/crypto.js +0 -25
- package/dist/auth/crypto.js.map +1 -1
- package/dist/auth/deviceVerification.d.ts +2 -2
- package/dist/auth/deviceVerification.js +2 -2
- package/dist/auth/loginGuard.d.ts +7 -14
- package/dist/auth/loginGuard.d.ts.map +1 -1
- package/dist/auth/loginGuard.js +27 -62
- package/dist/auth/loginGuard.js.map +1 -1
- package/dist/auth/offlineCredentials.d.ts +6 -59
- package/dist/auth/offlineCredentials.d.ts.map +1 -1
- package/dist/auth/offlineCredentials.js +8 -111
- package/dist/auth/offlineCredentials.js.map +1 -1
- package/dist/auth/resolveAuthState.d.ts +14 -18
- package/dist/auth/resolveAuthState.d.ts.map +1 -1
- package/dist/auth/resolveAuthState.js +16 -58
- package/dist/auth/resolveAuthState.js.map +1 -1
- package/dist/auth/singleUser.js +4 -4
- package/dist/auth/singleUser.js.map +1 -1
- package/dist/bin/install-pwa.d.ts +4 -2
- package/dist/bin/install-pwa.d.ts.map +1 -1
- package/dist/bin/install-pwa.js +2289 -249
- package/dist/bin/install-pwa.js.map +1 -1
- package/dist/config.d.ts +3 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/data.d.ts +105 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +126 -0
- package/dist/data.js.map +1 -1
- package/dist/entries/auth.d.ts +8 -13
- package/dist/entries/auth.d.ts.map +1 -1
- package/dist/entries/auth.js +11 -40
- package/dist/entries/auth.js.map +1 -1
- package/dist/entries/stores.d.ts +2 -0
- package/dist/entries/stores.d.ts.map +1 -1
- package/dist/entries/stores.js +7 -0
- package/dist/entries/stores.js.map +1 -1
- package/dist/entries/types.d.ts +0 -1
- package/dist/entries/types.d.ts.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -18
- package/dist/index.js.map +1 -1
- package/dist/kit/loads.d.ts +3 -5
- package/dist/kit/loads.d.ts.map +1 -1
- package/dist/kit/loads.js +2 -10
- package/dist/kit/loads.js.map +1 -1
- package/dist/stores/authState.d.ts +2 -2
- package/dist/stores/authState.js +1 -1
- package/dist/stores/factories.d.ts +138 -0
- package/dist/stores/factories.d.ts.map +1 -0
- package/dist/stores/factories.js +154 -0
- package/dist/stores/factories.js.map +1 -0
- package/dist/supabase/auth.d.ts +14 -181
- package/dist/supabase/auth.d.ts.map +1 -1
- package/dist/supabase/auth.js +17 -317
- package/dist/supabase/auth.js.map +1 -1
- package/package.json +1 -1
- package/dist/auth/admin.d.ts +0 -49
- package/dist/auth/admin.d.ts.map +0 -1
- package/dist/auth/admin.js +0 -66
- package/dist/auth/admin.js.map +0 -1
- package/dist/auth/offlineLogin.d.ts +0 -120
- package/dist/auth/offlineLogin.d.ts.map +0 -1
- package/dist/auth/offlineLogin.js +0 -142
- package/dist/auth/offlineLogin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../src/entries/stores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAU/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAU7C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAUlF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../src/entries/stores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAU/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAU7C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAUlF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AASnD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EAClB,MAAM,qBAAqB,CAAC"}
|
package/dist/entries/stores.js
CHANGED
|
@@ -47,4 +47,11 @@ export { authState, isAuthenticated, userDisplayInfo } from '../stores/authState
|
|
|
47
47
|
// applied to the local database.
|
|
48
48
|
export { onSyncComplete } from '../engine';
|
|
49
49
|
export { onRealtimeDataUpdate } from '../realtime';
|
|
50
|
+
// =============================================================================
|
|
51
|
+
// Store Factories
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Generic factory functions that create Svelte-compatible reactive stores for
|
|
54
|
+
// common data-loading patterns. These eliminate the repetitive loading-state /
|
|
55
|
+
// sync-listener / refresh boilerplate from every collection or detail store.
|
|
56
|
+
export { createCollectionStore, createDetailStore } from '../stores/factories';
|
|
50
57
|
//# sourceMappingURL=stores.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../src/entries/stores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAChF,wDAAwD;AACxD,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAElF,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAChF,2DAA2D;AAC3D,0EAA0E;AAC1E,2EAA2E;AAC3E,mCAAmC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../src/entries/stores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAChF,wDAAwD;AACxD,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAElF,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAChF,2DAA2D;AAC3D,0EAA0E;AAC1E,2EAA2E;AAC3E,mCAAmC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAE7E,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/entries/types.d.ts
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
export type { SyncEngineConfig, TableConfig } from '../config';
|
|
12
12
|
export type { DatabaseConfig, DatabaseVersionConfig } from '../database';
|
|
13
13
|
export type { BatchOperation } from '../data';
|
|
14
|
-
export type { AuthResponse } from '../supabase/auth';
|
|
15
14
|
export type { AuthStateResult } from '../auth/resolveAuthState';
|
|
16
15
|
export type { AppConfig } from '../runtime/runtimeConfig';
|
|
17
16
|
export type { SyncOperationItem, OperationType, OfflineCredentials, OfflineSession, ConflictHistoryEntry, SyncStatus, AuthMode, SingleUserConfig, SingleUserGateType } from '../types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entries/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAQ/D,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAQzE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entries/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAQ/D,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAQzE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAQ9C,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOhE,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAe1D,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AASlB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* - **Database Access** — get a handle to the IndexedDB instance or reset it.
|
|
10
10
|
* - **Generic CRUD & Query** — create, read, update, delete, batch write,
|
|
11
11
|
* increment, and query data in the local database.
|
|
12
|
-
* - **Authentication** —
|
|
13
|
-
*
|
|
12
|
+
* - **Authentication** — Single-user PIN/password gate auth, device
|
|
13
|
+
* verification, login guards, and session management.
|
|
14
14
|
* - **Reactive Stores** — Svelte-compatible stores for sync status, network
|
|
15
15
|
* state, remote changes, and auth state.
|
|
16
16
|
* - **Realtime Events** — lifecycle hooks for sync completion and realtime
|
|
@@ -37,13 +37,11 @@ export { onSyncComplete } from './engine';
|
|
|
37
37
|
export { engineCreate, engineUpdate, engineDelete, engineBatchWrite, engineIncrement } from './data';
|
|
38
38
|
export type { BatchOperation } from './data';
|
|
39
39
|
export { engineGet, engineGetAll, engineQuery, engineQueryRange, engineGetOrCreate } from './data';
|
|
40
|
-
export {
|
|
41
|
-
export
|
|
40
|
+
export { queryAll, queryOne, reorderEntity, prependOrder } from './data';
|
|
41
|
+
export { signOut, resendConfirmationEmail, getUserProfile, updateProfile, verifyOtp, getValidSession } from './supabase/auth';
|
|
42
42
|
export { resolveAuthState } from './auth/resolveAuthState';
|
|
43
43
|
export type { AuthStateResult } from './auth/resolveAuthState';
|
|
44
|
-
export { isAdmin } from './auth/admin';
|
|
45
44
|
export { resetLoginGuard } from './auth/loginGuard';
|
|
46
|
-
export { signInOffline, getOfflineLoginInfo } from './auth/offlineLogin';
|
|
47
45
|
export { isSingleUserSetUp, getSingleUserInfo, setupSingleUser, unlockSingleUser, lockSingleUser, changeSingleUserGate, updateSingleUserProfile, resetSingleUser, completeSingleUserSetup, completeDeviceVerification, pollDeviceVerification, padPin, changeSingleUserEmail, completeSingleUserEmailChange, fetchRemoteGateConfig, linkSingleUserDevice, resetSingleUserRemote } from './auth/singleUser';
|
|
48
46
|
export { resolveFirstName, resolveUserId, resolveAvatarInitial } from './auth/displayUtils';
|
|
49
47
|
export { isDeviceTrusted, trustCurrentDevice, trustPendingDevice, getTrustedDevices, removeTrustedDevice, maskEmail, sendDeviceVerification, getCurrentDeviceId, getDeviceLabel } from './auth/deviceVerification';
|
|
@@ -53,6 +51,8 @@ export { remoteChangesStore } from './stores/remoteChanges';
|
|
|
53
51
|
export type { RemoteActionType } from './stores/remoteChanges';
|
|
54
52
|
export { isOnline } from './stores/network';
|
|
55
53
|
export { authState, isAuthenticated, userDisplayInfo } from './stores/authState';
|
|
54
|
+
export { createCollectionStore, createDetailStore } from './stores/factories';
|
|
55
|
+
export type { CollectionStore, CollectionStoreConfig, DetailStore, DetailStoreConfig } from './stores/factories';
|
|
56
56
|
export { onRealtimeDataUpdate } from './realtime';
|
|
57
57
|
export { supabase } from './supabase/client';
|
|
58
58
|
export { initConfig, getConfig, setConfig } from './runtime/runtimeConfig';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AASH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS9D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAYxE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAa1C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAY7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* - **Database Access** — get a handle to the IndexedDB instance or reset it.
|
|
10
10
|
* - **Generic CRUD & Query** — create, read, update, delete, batch write,
|
|
11
11
|
* increment, and query data in the local database.
|
|
12
|
-
* - **Authentication** —
|
|
13
|
-
*
|
|
12
|
+
* - **Authentication** — Single-user PIN/password gate auth, device
|
|
13
|
+
* verification, login guards, and session management.
|
|
14
14
|
* - **Reactive Stores** — Svelte-compatible stores for sync status, network
|
|
15
15
|
* state, remote changes, and auth state.
|
|
16
16
|
* - **Realtime Events** — lifecycle hooks for sync completion and realtime
|
|
@@ -75,12 +75,20 @@ export { engineCreate, engineUpdate, engineDelete, engineBatchWrite, engineIncre
|
|
|
75
75
|
// - `engineGetOrCreate` — retrieves an entity or creates it with defaults.
|
|
76
76
|
export { engineGet, engineGetAll, engineQuery, engineQueryRange, engineGetOrCreate } from './data';
|
|
77
77
|
// =============================================================================
|
|
78
|
-
//
|
|
78
|
+
// Query & Repository Helpers
|
|
79
79
|
// =============================================================================
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
|
|
80
|
+
// Convenience wrappers that eliminate repetitive query and repository patterns:
|
|
81
|
+
// - `queryAll` — fetches all non-deleted records, sorted by order.
|
|
82
|
+
// - `queryOne` — fetches a single non-deleted record by ID.
|
|
83
|
+
// - `reorderEntity` — updates just the order field on any entity.
|
|
84
|
+
// - `prependOrder` — computes the next prepend-order value.
|
|
85
|
+
export { queryAll, queryOne, reorderEntity, prependOrder } from './data';
|
|
86
|
+
// =============================================================================
|
|
87
|
+
// Supabase Auth — Core Authentication Utilities
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// Sign-out with full teardown, session management, profile CRUD, email
|
|
90
|
+
// confirmation resend, OTP verification, and session validation.
|
|
91
|
+
export { signOut, resendConfirmationEmail, getUserProfile, updateProfile, verifyOtp, getValidSession } from './supabase/auth';
|
|
84
92
|
// =============================================================================
|
|
85
93
|
// Auth State Resolution
|
|
86
94
|
// =============================================================================
|
|
@@ -89,23 +97,12 @@ export { signIn, signUp, signOut, changePassword, changeEmail, completeEmailChan
|
|
|
89
97
|
// anonymous, has an expired session, or needs setup.
|
|
90
98
|
export { resolveAuthState } from './auth/resolveAuthState';
|
|
91
99
|
// =============================================================================
|
|
92
|
-
// Admin Role Check
|
|
93
|
-
// =============================================================================
|
|
94
|
-
// Utility to check whether the current user has admin privileges.
|
|
95
|
-
export { isAdmin } from './auth/admin';
|
|
96
|
-
// =============================================================================
|
|
97
100
|
// Login Guard
|
|
98
101
|
// =============================================================================
|
|
99
102
|
// Prevents duplicate login attempts by maintaining a transient lock.
|
|
100
103
|
// `resetLoginGuard` clears the lock (e.g. after a failed attempt).
|
|
101
104
|
export { resetLoginGuard } from './auth/loginGuard';
|
|
102
105
|
// =============================================================================
|
|
103
|
-
// Offline Login
|
|
104
|
-
// =============================================================================
|
|
105
|
-
// Enables authentication when the device has no network connectivity, using
|
|
106
|
-
// locally cached and encrypted credentials.
|
|
107
|
-
export { signInOffline, getOfflineLoginInfo } from './auth/offlineLogin';
|
|
108
|
-
// =============================================================================
|
|
109
106
|
// Single-User Auth (PIN/Password Gate)
|
|
110
107
|
// =============================================================================
|
|
111
108
|
// Full lifecycle for single-user (kiosk/personal device) authentication:
|
|
@@ -142,6 +139,12 @@ export { remoteChangesStore } from './stores/remoteChanges';
|
|
|
142
139
|
export { isOnline } from './stores/network';
|
|
143
140
|
export { authState, isAuthenticated, userDisplayInfo } from './stores/authState';
|
|
144
141
|
// =============================================================================
|
|
142
|
+
// Store Factories
|
|
143
|
+
// =============================================================================
|
|
144
|
+
// Generic factory functions for creating reactive stores with built-in loading
|
|
145
|
+
// state and sync-complete auto-refresh.
|
|
146
|
+
export { createCollectionStore, createDetailStore } from './stores/factories';
|
|
147
|
+
// =============================================================================
|
|
145
148
|
// Realtime Event Subscriptions
|
|
146
149
|
// =============================================================================
|
|
147
150
|
// Callback registration for app-specific event hooks. `onRealtimeDataUpdate`
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAChF,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAChF,sDAAsD;AACtD,oEAAoE;AACpE,+EAA+E;AAE/E,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGlD,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAChF,oDAAoD;AACpD,qEAAqE;AACrE,wDAAwD;AACxD,yEAAyE;AACzE,6EAA6E;AAC7E,2DAA2D;AAE3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAChF,+EAA+E;AAC/E,mCAAmC;AACnC,2CAA2C;AAC3C,iDAAiD;AACjD,wEAAwE;AACxE,iEAAiE;AACjE,+DAA+D;AAE/D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAGhB,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAChF,kEAAkE;AAClE,4DAA4D;AAC5D,wDAAwD;AACxD,oEAAoE;AACpE,qEAAqE;AACrE,2EAA2E;AAE3E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEnG,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/kit/loads.d.ts
CHANGED
|
@@ -60,7 +60,7 @@ export interface ProtectedLayoutData {
|
|
|
60
60
|
* Data returned by `resolveSetupAccess`.
|
|
61
61
|
*
|
|
62
62
|
* Tells the setup page whether this is a first-time configuration
|
|
63
|
-
* (public access) or a reconfiguration (
|
|
63
|
+
* (public access) or a reconfiguration (authenticated users only).
|
|
64
64
|
*/
|
|
65
65
|
export interface SetupAccessData {
|
|
66
66
|
/**
|
|
@@ -155,9 +155,8 @@ export declare function resolveProtectedLayout(url: {
|
|
|
155
155
|
*
|
|
156
156
|
* - **Unconfigured app** (first-time setup): public access, no auth required.
|
|
157
157
|
* Returns `{ isFirstSetup: true }`.
|
|
158
|
-
* - **Configured app** (reconfiguration):
|
|
159
|
-
*
|
|
160
|
-
* to `/login`.
|
|
158
|
+
* - **Configured app** (reconfiguration): any authenticated user may access.
|
|
159
|
+
* Unauthenticated users are redirected to `/login`.
|
|
161
160
|
*
|
|
162
161
|
* @returns An object containing:
|
|
163
162
|
* - `data` — setup access info (`{ isFirstSetup }`)
|
|
@@ -180,7 +179,6 @@ export declare function resolveProtectedLayout(url: {
|
|
|
180
179
|
*
|
|
181
180
|
* @see {@link SetupAccessData} for the return data shape
|
|
182
181
|
* @see {@link getConfig} for checking whether config exists
|
|
183
|
-
* @see {@link isAdmin} for admin role verification
|
|
184
182
|
*/
|
|
185
183
|
export declare function resolveSetupAccess(): Promise<{
|
|
186
184
|
data: SetupAccessData;
|
package/dist/kit/loads.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loads.d.ts","sourceRoot":"","sources":["../../src/kit/loads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;
|
|
1
|
+
{"version":3,"file":"loads.d.ts","sourceRoot":"","sources":["../../src/kit/loads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAMnE;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAEpC,oDAAoD;IACpD,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAEtC,2DAA2D;IAC3D,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;CACnD;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EACzB,aAAa,CAAC,EAAE,MAAM,IAAI,GACzB,OAAO,CAAC,cAAc,CAAC,CA4BzB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAgBrE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC,CAgBD"}
|
package/dist/kit/loads.js
CHANGED
|
@@ -32,7 +32,6 @@ import { initConfig, getConfig } from '../runtime/runtimeConfig.js';
|
|
|
32
32
|
import { resolveAuthState } from '../auth/resolveAuthState.js';
|
|
33
33
|
import { startSyncEngine } from '../engine.js';
|
|
34
34
|
import { getValidSession } from '../supabase/auth.js';
|
|
35
|
-
import { isAdmin } from '../auth/admin.js';
|
|
36
35
|
// =============================================================================
|
|
37
36
|
// ROOT LAYOUT
|
|
38
37
|
// =============================================================================
|
|
@@ -156,9 +155,8 @@ export async function resolveProtectedLayout(url) {
|
|
|
156
155
|
*
|
|
157
156
|
* - **Unconfigured app** (first-time setup): public access, no auth required.
|
|
158
157
|
* Returns `{ isFirstSetup: true }`.
|
|
159
|
-
* - **Configured app** (reconfiguration):
|
|
160
|
-
*
|
|
161
|
-
* to `/login`.
|
|
158
|
+
* - **Configured app** (reconfiguration): any authenticated user may access.
|
|
159
|
+
* Unauthenticated users are redirected to `/login`.
|
|
162
160
|
*
|
|
163
161
|
* @returns An object containing:
|
|
164
162
|
* - `data` — setup access info (`{ isFirstSetup }`)
|
|
@@ -181,7 +179,6 @@ export async function resolveProtectedLayout(url) {
|
|
|
181
179
|
*
|
|
182
180
|
* @see {@link SetupAccessData} for the return data shape
|
|
183
181
|
* @see {@link getConfig} for checking whether config exists
|
|
184
|
-
* @see {@link isAdmin} for admin role verification
|
|
185
182
|
*/
|
|
186
183
|
export async function resolveSetupAccess() {
|
|
187
184
|
/* No config exists — this is the first-time setup, grant public access
|
|
@@ -195,11 +192,6 @@ export async function resolveSetupAccess() {
|
|
|
195
192
|
/* No session — redirect to login so the user can authenticate first. */
|
|
196
193
|
return { data: { isFirstSetup: false }, redirectUrl: '/login' };
|
|
197
194
|
}
|
|
198
|
-
if (!isAdmin(session.user)) {
|
|
199
|
-
/* Authenticated but not an admin — redirect to home. Only admins
|
|
200
|
-
should be able to change the app's configuration. */
|
|
201
|
-
return { data: { isFirstSetup: false }, redirectUrl: '/' };
|
|
202
|
-
}
|
|
203
195
|
return { data: { isFirstSetup: false }, redirectUrl: null };
|
|
204
196
|
}
|
|
205
197
|
//# sourceMappingURL=loads.js.map
|
package/dist/kit/loads.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loads.js","sourceRoot":"","sources":["../../src/kit/loads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"loads.js","sourceRoot":"","sources":["../../src/kit/loads.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ interface AuthState {
|
|
|
41
41
|
/**
|
|
42
42
|
* Message to display when the user is forcibly signed out.
|
|
43
43
|
* Set by `setNoAuth()` when a kicked reason is provided (e.g., session
|
|
44
|
-
* expiry
|
|
44
|
+
* expiry). Cleared on next successful auth transition.
|
|
45
45
|
*/
|
|
46
46
|
authKickedMessage: string | null;
|
|
47
47
|
}
|
|
@@ -93,7 +93,7 @@ export declare const authState: {
|
|
|
93
93
|
* authState.setNoAuth();
|
|
94
94
|
*
|
|
95
95
|
* // Forced sign-out with reason
|
|
96
|
-
* authState.setNoAuth('Your
|
|
96
|
+
* authState.setNoAuth('Your session has expired.');
|
|
97
97
|
* ```
|
|
98
98
|
*/
|
|
99
99
|
setNoAuth(kickedMessage?: string): void;
|
package/dist/stores/authState.js
CHANGED
|
@@ -117,7 +117,7 @@ function createAuthStateStore() {
|
|
|
117
117
|
* authState.setNoAuth();
|
|
118
118
|
*
|
|
119
119
|
* // Forced sign-out with reason
|
|
120
|
-
* authState.setNoAuth('Your
|
|
120
|
+
* authState.setNoAuth('Your session has expired.');
|
|
121
121
|
* ```
|
|
122
122
|
*/
|
|
123
123
|
setNoAuth(kickedMessage) {
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Store Factory Functions
|
|
3
|
+
*
|
|
4
|
+
* Generic factory functions that create Svelte-compatible reactive stores for
|
|
5
|
+
* common data-loading patterns. These eliminate the repetitive boilerplate that
|
|
6
|
+
* every collection or detail store requires: loading state management,
|
|
7
|
+
* sync-complete listener registration, and refresh logic.
|
|
8
|
+
*
|
|
9
|
+
* Both factories produce stores that follow the Svelte store contract
|
|
10
|
+
* (`subscribe`/`unsubscribe`) and expose a read-only `loading` sub-store.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link ../engine} for `onSyncComplete` lifecycle hook
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for creating a collection store.
|
|
16
|
+
*
|
|
17
|
+
* @typeParam T - The entity type stored in the collection.
|
|
18
|
+
*/
|
|
19
|
+
export interface CollectionStoreConfig<T> {
|
|
20
|
+
/** Async function that fetches the full collection (e.g., from local DB). */
|
|
21
|
+
load: () => Promise<T[]>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A reactive store managing a collection of entities with loading state,
|
|
25
|
+
* sync-complete auto-refresh, and optimistic mutation support.
|
|
26
|
+
*
|
|
27
|
+
* @typeParam T - The entity type stored in the collection.
|
|
28
|
+
*/
|
|
29
|
+
export interface CollectionStore<T> {
|
|
30
|
+
/** Standard Svelte store subscribe method. */
|
|
31
|
+
subscribe: (run: (value: T[]) => void) => () => void;
|
|
32
|
+
/** Read-only loading sub-store. */
|
|
33
|
+
loading: {
|
|
34
|
+
subscribe: (run: (value: boolean) => void) => () => void;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Initial load: fetches data, sets loading state, and registers a
|
|
38
|
+
* sync-complete listener for automatic refresh on future syncs.
|
|
39
|
+
*/
|
|
40
|
+
load(): Promise<void>;
|
|
41
|
+
/** Re-fetch data without toggling the loading flag. */
|
|
42
|
+
refresh(): Promise<void>;
|
|
43
|
+
/** Replace the store's data directly. */
|
|
44
|
+
set(data: T[]): void;
|
|
45
|
+
/** Apply an optimistic mutation to the current data. */
|
|
46
|
+
mutate(fn: (items: T[]) => T[]): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Configuration for creating a detail store.
|
|
50
|
+
*
|
|
51
|
+
* @typeParam T - The entity type for the detail view.
|
|
52
|
+
*/
|
|
53
|
+
export interface DetailStoreConfig<T> {
|
|
54
|
+
/** Async function that fetches a single entity by ID. */
|
|
55
|
+
load: (id: string) => Promise<T | null>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A reactive store managing a single entity with loading state,
|
|
59
|
+
* sync-complete auto-refresh, and ID tracking.
|
|
60
|
+
*
|
|
61
|
+
* @typeParam T - The entity type for the detail view.
|
|
62
|
+
*/
|
|
63
|
+
export interface DetailStore<T> {
|
|
64
|
+
/** Standard Svelte store subscribe method. */
|
|
65
|
+
subscribe: (run: (value: T | null) => void) => () => void;
|
|
66
|
+
/** Read-only loading sub-store. */
|
|
67
|
+
loading: {
|
|
68
|
+
subscribe: (run: (value: boolean) => void) => () => void;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Load a single entity by ID. Registers a sync-complete listener that
|
|
72
|
+
* auto-refreshes the same entity on future syncs.
|
|
73
|
+
*/
|
|
74
|
+
load(id: string): Promise<void>;
|
|
75
|
+
/** Reset the store to null and clear the tracked ID. */
|
|
76
|
+
clear(): void;
|
|
77
|
+
/** Replace the store's data directly. */
|
|
78
|
+
set(data: T | null): void;
|
|
79
|
+
/** Get the currently tracked entity ID, or null if none loaded. */
|
|
80
|
+
getCurrentId(): string | null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a reactive collection store with built-in loading state and
|
|
84
|
+
* sync-complete auto-refresh.
|
|
85
|
+
*
|
|
86
|
+
* The returned store follows the Svelte store contract and can be used with
|
|
87
|
+
* the `$store` auto-subscription syntax. On the first `load()` call, a
|
|
88
|
+
* sync-complete listener is registered so the collection automatically
|
|
89
|
+
* refreshes whenever the sync engine completes a cycle.
|
|
90
|
+
*
|
|
91
|
+
* Uses `typeof window !== 'undefined'` for environment detection since
|
|
92
|
+
* stellar-engine is a library (not tied to SvelteKit's `browser` export).
|
|
93
|
+
*
|
|
94
|
+
* @typeParam T - The entity type stored in the collection.
|
|
95
|
+
* @param config - Configuration with a `load` function.
|
|
96
|
+
* @returns A `CollectionStore<T>` instance.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```ts
|
|
100
|
+
* import { createCollectionStore } from '@prabhask5/stellar-engine/stores';
|
|
101
|
+
*
|
|
102
|
+
* const store = createCollectionStore<Task>({
|
|
103
|
+
* load: () => queryAll<Task>('tasks'),
|
|
104
|
+
* });
|
|
105
|
+
*
|
|
106
|
+
* // In your component:
|
|
107
|
+
* await store.load();
|
|
108
|
+
* // $store is now Task[], $store.loading is boolean
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function createCollectionStore<T>(config: CollectionStoreConfig<T>): CollectionStore<T>;
|
|
112
|
+
/**
|
|
113
|
+
* Create a reactive detail store for a single entity, with built-in loading
|
|
114
|
+
* state, ID tracking, and sync-complete auto-refresh.
|
|
115
|
+
*
|
|
116
|
+
* The store tracks the currently loaded entity ID so that sync-complete
|
|
117
|
+
* listeners can refresh the correct entity. Calling `load(id)` with a
|
|
118
|
+
* different ID updates the tracked ID and fetches the new entity.
|
|
119
|
+
*
|
|
120
|
+
* @typeParam T - The entity type for the detail view.
|
|
121
|
+
* @param config - Configuration with a `load` function that takes an entity ID.
|
|
122
|
+
* @returns A `DetailStore<T>` instance.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* import { createDetailStore } from '@prabhask5/stellar-engine/stores';
|
|
127
|
+
*
|
|
128
|
+
* const store = createDetailStore<Task>({
|
|
129
|
+
* load: (id) => queryOne<Task>('tasks', id),
|
|
130
|
+
* });
|
|
131
|
+
*
|
|
132
|
+
* // In your component:
|
|
133
|
+
* await store.load(taskId);
|
|
134
|
+
* // $store is now Task | null, $store.loading is boolean
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function createDetailStore<T>(config: DetailStoreConfig<T>): DetailStore<T>;
|
|
138
|
+
//# sourceMappingURL=factories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/stores/factories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH;;;;GAIG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,6EAA6E;IAC7E,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,8CAA8C;IAC9C,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAErD,mCAAmC;IACnC,OAAO,EAAE;QAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;KAAE,CAAC;IAEtE;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,uDAAuD;IACvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,yCAAyC;IACzC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IAErB,wDAAwD;IACxD,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,yDAAyD;IACzD,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACzC;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,8CAA8C;IAC9C,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAE1D,mCAAmC;IACnC,OAAO,EAAE;QAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;KAAE,CAAC;IAEtE;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,wDAAwD;IACxD,KAAK,IAAI,IAAI,CAAC;IAEd,yCAAyC;IACzC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,mEAAmE;IACnE,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;CAC/B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAyC7F;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA6CjF"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Store Factory Functions
|
|
3
|
+
*
|
|
4
|
+
* Generic factory functions that create Svelte-compatible reactive stores for
|
|
5
|
+
* common data-loading patterns. These eliminate the repetitive boilerplate that
|
|
6
|
+
* every collection or detail store requires: loading state management,
|
|
7
|
+
* sync-complete listener registration, and refresh logic.
|
|
8
|
+
*
|
|
9
|
+
* Both factories produce stores that follow the Svelte store contract
|
|
10
|
+
* (`subscribe`/`unsubscribe`) and expose a read-only `loading` sub-store.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link ../engine} for `onSyncComplete` lifecycle hook
|
|
13
|
+
*/
|
|
14
|
+
import { writable } from 'svelte/store';
|
|
15
|
+
import { onSyncComplete } from '../engine';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Collection Store Factory
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Create a reactive collection store with built-in loading state and
|
|
21
|
+
* sync-complete auto-refresh.
|
|
22
|
+
*
|
|
23
|
+
* The returned store follows the Svelte store contract and can be used with
|
|
24
|
+
* the `$store` auto-subscription syntax. On the first `load()` call, a
|
|
25
|
+
* sync-complete listener is registered so the collection automatically
|
|
26
|
+
* refreshes whenever the sync engine completes a cycle.
|
|
27
|
+
*
|
|
28
|
+
* Uses `typeof window !== 'undefined'` for environment detection since
|
|
29
|
+
* stellar-engine is a library (not tied to SvelteKit's `browser` export).
|
|
30
|
+
*
|
|
31
|
+
* @typeParam T - The entity type stored in the collection.
|
|
32
|
+
* @param config - Configuration with a `load` function.
|
|
33
|
+
* @returns A `CollectionStore<T>` instance.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { createCollectionStore } from '@prabhask5/stellar-engine/stores';
|
|
38
|
+
*
|
|
39
|
+
* const store = createCollectionStore<Task>({
|
|
40
|
+
* load: () => queryAll<Task>('tasks'),
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // In your component:
|
|
44
|
+
* await store.load();
|
|
45
|
+
* // $store is now Task[], $store.loading is boolean
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function createCollectionStore(config) {
|
|
49
|
+
const { subscribe, set, update } = writable([]);
|
|
50
|
+
const loading = writable(true);
|
|
51
|
+
let syncUnsubscribe = null;
|
|
52
|
+
return {
|
|
53
|
+
subscribe,
|
|
54
|
+
loading: { subscribe: loading.subscribe },
|
|
55
|
+
async load() {
|
|
56
|
+
loading.set(true);
|
|
57
|
+
try {
|
|
58
|
+
const data = await config.load();
|
|
59
|
+
set(data);
|
|
60
|
+
/* Register sync-complete listener once, only in the browser.
|
|
61
|
+
On each sync cycle, the collection auto-refreshes from local DB. */
|
|
62
|
+
if (typeof window !== 'undefined' && !syncUnsubscribe) {
|
|
63
|
+
syncUnsubscribe = onSyncComplete(async () => {
|
|
64
|
+
const refreshed = await config.load();
|
|
65
|
+
set(refreshed);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
loading.set(false);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
async refresh() {
|
|
74
|
+
const data = await config.load();
|
|
75
|
+
set(data);
|
|
76
|
+
},
|
|
77
|
+
set(data) {
|
|
78
|
+
set(data);
|
|
79
|
+
},
|
|
80
|
+
mutate(fn) {
|
|
81
|
+
update(fn);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// =============================================================================
|
|
86
|
+
// Detail Store Factory
|
|
87
|
+
// =============================================================================
|
|
88
|
+
/**
|
|
89
|
+
* Create a reactive detail store for a single entity, with built-in loading
|
|
90
|
+
* state, ID tracking, and sync-complete auto-refresh.
|
|
91
|
+
*
|
|
92
|
+
* The store tracks the currently loaded entity ID so that sync-complete
|
|
93
|
+
* listeners can refresh the correct entity. Calling `load(id)` with a
|
|
94
|
+
* different ID updates the tracked ID and fetches the new entity.
|
|
95
|
+
*
|
|
96
|
+
* @typeParam T - The entity type for the detail view.
|
|
97
|
+
* @param config - Configuration with a `load` function that takes an entity ID.
|
|
98
|
+
* @returns A `DetailStore<T>` instance.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* import { createDetailStore } from '@prabhask5/stellar-engine/stores';
|
|
103
|
+
*
|
|
104
|
+
* const store = createDetailStore<Task>({
|
|
105
|
+
* load: (id) => queryOne<Task>('tasks', id),
|
|
106
|
+
* });
|
|
107
|
+
*
|
|
108
|
+
* // In your component:
|
|
109
|
+
* await store.load(taskId);
|
|
110
|
+
* // $store is now Task | null, $store.loading is boolean
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export function createDetailStore(config) {
|
|
114
|
+
const { subscribe, set } = writable(null);
|
|
115
|
+
const loading = writable(true);
|
|
116
|
+
let currentId = null;
|
|
117
|
+
let syncUnsubscribe = null;
|
|
118
|
+
return {
|
|
119
|
+
subscribe,
|
|
120
|
+
loading: { subscribe: loading.subscribe },
|
|
121
|
+
async load(id) {
|
|
122
|
+
currentId = id;
|
|
123
|
+
loading.set(true);
|
|
124
|
+
try {
|
|
125
|
+
const data = await config.load(id);
|
|
126
|
+
set(data);
|
|
127
|
+
/* Register sync-complete listener once, only in the browser.
|
|
128
|
+
Uses the tracked `currentId` so it always refreshes the active entity. */
|
|
129
|
+
if (typeof window !== 'undefined' && !syncUnsubscribe) {
|
|
130
|
+
syncUnsubscribe = onSyncComplete(async () => {
|
|
131
|
+
if (currentId) {
|
|
132
|
+
const refreshed = await config.load(currentId);
|
|
133
|
+
set(refreshed);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
loading.set(false);
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
clear() {
|
|
143
|
+
currentId = null;
|
|
144
|
+
set(null);
|
|
145
|
+
},
|
|
146
|
+
set(data) {
|
|
147
|
+
set(data);
|
|
148
|
+
},
|
|
149
|
+
getCurrentId() {
|
|
150
|
+
return currentId;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=factories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/stores/factories.ts"],"names":[],"mappings":"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"}
|