@outbuild/supa-store 0.0.22 → 0.0.24
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/esm2022/lib/common/features/post-auth-loader.feature.mjs +32 -0
- package/esm2022/lib/common/features/supa-store-core.feature.mjs +25 -0
- package/esm2022/lib/common/type/supa-store.types.mjs +1 -1
- package/esm2022/lib/supa-store.provider.mjs +6 -2
- package/esm2022/lib/supa-store.store.mjs +4 -37
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/outbuild-supa-store.mjs +43 -20
- package/fesm2022/outbuild-supa-store.mjs.map +1 -1
- package/lib/common/features/post-auth-loader.feature.d.ts +12 -0
- package/lib/common/features/supa-store-core.feature.d.ts +20 -0
- package/lib/common/type/supa-store.types.d.ts +11 -3
- package/lib/supa-store.store.d.ts +1 -21
- package/package.json +2 -2
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { toObservable } from "@angular/core/rxjs-interop";
|
|
3
|
+
import { SUPA_STORE_OPTIONS } from '../token/supabase-credentials.token';
|
|
4
|
+
import { filter, firstValueFrom } from 'rxjs';
|
|
5
|
+
import { patchState, signalStoreFeature, type, withHooks, withMethods } from '@ngrx/signals';
|
|
6
|
+
export const withPostAuthOptions = () => signalStoreFeature({ state: type() }, withMethods((store, { postAuthOptions } = inject(SUPA_STORE_OPTIONS)) => ({
|
|
7
|
+
loader: async () => {
|
|
8
|
+
const { useLoader: { table, rpc } } = postAuthOptions;
|
|
9
|
+
if (table || rpc) {
|
|
10
|
+
const { user } = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)));
|
|
11
|
+
if (!user)
|
|
12
|
+
return;
|
|
13
|
+
if (table) {
|
|
14
|
+
const { data } = await store.client().from(table).select('*').eq('id', user?.id).single();
|
|
15
|
+
patchState(store, { auth: { ...store.auth(), metadata: data } });
|
|
16
|
+
}
|
|
17
|
+
else if (rpc) {
|
|
18
|
+
const { data } = await store.client().rpc(rpc, { input: { user_id: user?.id } });
|
|
19
|
+
patchState(store, { auth: { ...store.auth(), metadata: data } });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
patchState(store, { auth: { ...store.auth(), metadata: null } });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
})), withHooks({
|
|
27
|
+
onInit(store) {
|
|
28
|
+
/* Auto Load Additional User Auth Data */
|
|
29
|
+
store.loader();
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1hdXRoLWxvYWRlci5mZWF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2Itc3VwYS1zdG9yZS9zcmMvbGliL2NvbW1vbi9mZWF0dXJlcy9wb3N0LWF1dGgtbG9hZGVyLmZlYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUU1RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FFekQsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFrQixFQUFFLEVBRWpDLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXhFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtRQUVqQixNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFDLEdBQUcsZUFBZSxDQUFBO1FBRXBELElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBRWpCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUF3QixDQUFDLENBQUE7WUFDckksSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTTtZQUVqQixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO2dCQUN6RixVQUFVLENBQUMsS0FBSyxFQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFDLENBQUMsQ0FBQTtZQUNsRSxDQUFDO2lCQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQTtnQkFDL0UsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUE7WUFDakUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxDQUFBO1lBQ2hFLENBQUM7UUFFSCxDQUFDO0lBQ0gsQ0FBQztDQUVGLENBQUMsQ0FBQyxFQUVILFNBQVMsQ0FBQztJQUVSLE1BQU0sQ0FBQyxLQUFLO1FBRVYseUNBQXlDO1FBQ3pDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUVoQixDQUFDO0NBRUYsQ0FBQyxDQUVILENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnQHN1cGFiYXNlL3N1cGFiYXNlLWpzJ1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxyXG5pbXBvcnQgeyBTdXBhU3RvcmVTdGF0ZSB9IGZyb20gJy4uL3R5cGUvc3VwYS1zdG9yZS50eXBlcydcclxuaW1wb3J0IHsgU1VQQV9TVE9SRV9PUFRJT05TIH0gZnJvbSAnLi4vdG9rZW4vc3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW4nXHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZUZlYXR1cmUsIHR5cGUsIHdpdGhIb29rcywgd2l0aE1ldGhvZHMgfSBmcm9tICdAbmdyeC9zaWduYWxzJ1xyXG5cclxuZXhwb3J0IGNvbnN0IHdpdGhQb3N0QXV0aE9wdGlvbnMgPSAoKSA9PiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcblxyXG4gIHsgc3RhdGU6IHR5cGU8U3VwYVN0b3JlU3RhdGU+KCkgfSxcclxuXHJcbiAgd2l0aE1ldGhvZHMoKHN0b3JlLCB7IHBvc3RBdXRoT3B0aW9ucyB9ID0gaW5qZWN0KFNVUEFfU1RPUkVfT1BUSU9OUykpID0+ICh7XHJcblxyXG4gICAgbG9hZGVyOiBhc3luYyAoKSA9PiB7XHJcblxyXG4gICAgICBjb25zdCB7IHVzZUxvYWRlcjogeyB0YWJsZSwgcnBjIH19ID0gcG9zdEF1dGhPcHRpb25zXHJcblxyXG4gICAgICBpZiAodGFibGUgfHwgcnBjKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odG9PYnNlcnZhYmxlKHN0b3JlLmF1dGguc2Vzc2lvbikucGlwZShmaWx0ZXIocmVzID0+IHJlcyAhPT0gdW5kZWZpbmVkKSkgYXMgT2JzZXJ2YWJsZTxTZXNzaW9uPilcclxuICAgICAgICBpZiAoIXVzZXIpIHJldHVyblxyXG5cclxuICAgICAgICBpZiAodGFibGUpIHtcclxuICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgc3RvcmUuY2xpZW50KCkuZnJvbSh0YWJsZSkuc2VsZWN0KCcqJykuZXEoJ2lkJywgdXNlcj8uaWQpLnNpbmdsZSgpXHJcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgbWV0YWRhdGE6IGRhdGEgfX0pXHJcbiAgICAgICAgfSBlbHNlIGlmIChycGMpIHtcclxuICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgc3RvcmUuY2xpZW50KCkucnBjKHJwYywgeyBpbnB1dDogeyB1c2VyX2lkOiB1c2VyPy5pZCB9fSlcclxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgYXV0aDogeyAuLi5zdG9yZS5hdXRoKCksIG1ldGFkYXRhOiBkYXRhIH19KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGg6IHsgLi4uc3RvcmUuYXV0aCgpLCBtZXRhZGF0YTogbnVsbH19KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gIH0pKSxcclxuXHJcbiAgd2l0aEhvb2tzKHtcclxuXHJcbiAgICBvbkluaXQoc3RvcmUpIHtcclxuXHJcbiAgICAgIC8qIEF1dG8gTG9hZCBBZGRpdGlvbmFsIFVzZXIgQXV0aCBEYXRhICovXHJcbiAgICAgIHN0b3JlLmxvYWRlcigpXHJcblxyXG4gICAgfVxyXG5cclxuICB9KVxyXG5cclxuKVxyXG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { withDevtools } from '@angular-architects/ngrx-toolkit';
|
|
3
|
+
import { INITIAL_STATE } from '../token/initial-state.token';
|
|
4
|
+
import { withPostAuthOptions } from '../features/post-auth-loader.feature';
|
|
5
|
+
import { patchState, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals';
|
|
6
|
+
export const withSupaStoreCore = () => signalStoreFeature(withDevtools('supaStore'), withState(() => inject(INITIAL_STATE)), withPostAuthOptions(), withMethods(store => ({
|
|
7
|
+
initSession: async () => {
|
|
8
|
+
const { data: { session } } = await store.client().auth.getSession();
|
|
9
|
+
patchState(store, { auth: { ...store.auth(), session } });
|
|
10
|
+
},
|
|
11
|
+
initUser: async () => {
|
|
12
|
+
const { data: { user } } = await store.client().auth.getUser();
|
|
13
|
+
patchState(store, { auth: { ...store.auth(), user } });
|
|
14
|
+
}
|
|
15
|
+
})), withHooks({
|
|
16
|
+
onInit(store) {
|
|
17
|
+
/* Listen For Auth Atate Changes */
|
|
18
|
+
store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } } }));
|
|
19
|
+
/* Init Supabase Session */
|
|
20
|
+
store.initSession();
|
|
21
|
+
/* Init Supabase User */
|
|
22
|
+
store.initUser();
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS1jb3JlLmZlYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYi1zdXBhLXN0b3JlL3NyYy9saWIvY29tbW9uL2ZlYXR1cmVzL3N1cGEtc3RvcmUtY29yZS5mZWF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWpHLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUV2RCxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQ3pCLFNBQVMsQ0FBaUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQ3RELG1CQUFtQixFQUFFLEVBRXJCLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFcEIsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNuRSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFBO0lBQzFELENBQUM7SUFFRCxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzdELFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQztDQUVGLENBQUMsQ0FBQyxFQUVILFNBQVMsQ0FBQztJQUVSLE1BQU0sQ0FBQyxLQUFLO1FBRVYsbUNBQW1DO1FBQ25DLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXRKLDJCQUEyQjtRQUMzQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFbkIsd0JBQXdCO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUVsQixDQUFDO0NBRUYsQ0FBQyxDQUVILENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgd2l0aERldnRvb2xzIH0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9uZ3J4LXRvb2xraXQnXHJcbmltcG9ydCB7IElOSVRJQUxfU1RBVEUgfSBmcm9tICcuLi90b2tlbi9pbml0aWFsLXN0YXRlLnRva2VuJ1xyXG5pbXBvcnQgeyBTdXBhU3RvcmVTdGF0ZSB9IGZyb20gJy4uL3R5cGUvc3VwYS1zdG9yZS50eXBlcydcclxuaW1wb3J0IHsgd2l0aFBvc3RBdXRoT3B0aW9ucyB9IGZyb20gJy4uL2ZlYXR1cmVzL3Bvc3QtYXV0aC1sb2FkZXIuZmVhdHVyZSdcclxuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmVGZWF0dXJlLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJ1xyXG5cclxuZXhwb3J0IGNvbnN0IHdpdGhTdXBhU3RvcmVDb3JlID0gKCkgPT4gc2lnbmFsU3RvcmVGZWF0dXJlKFxyXG5cclxuICB3aXRoRGV2dG9vbHMoJ3N1cGFTdG9yZScpLFxyXG4gIHdpdGhTdGF0ZTxTdXBhU3RvcmVTdGF0ZT4oKCkgPT4gaW5qZWN0KElOSVRJQUxfU1RBVEUpKSxcclxuICB3aXRoUG9zdEF1dGhPcHRpb25zKCksXHJcblxyXG4gIHdpdGhNZXRob2RzKHN0b3JlID0+ICh7XHJcblxyXG4gICAgaW5pdFNlc3Npb246IGFzeW5jICgpID0+IHtcclxuICAgICAgY29uc3QgeyBkYXRhOiB7IHNlc3Npb24gfX0gPSBhd2FpdCBzdG9yZS5jbGllbnQoKS5hdXRoLmdldFNlc3Npb24oKVxyXG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGg6IHsgLi4uc3RvcmUuYXV0aCgpLCBzZXNzaW9uIH19KVxyXG4gICAgfSxcclxuXHJcbiAgICBpbml0VXNlcjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCB7IGRhdGE6IHsgdXNlciB9fSA9IGF3YWl0IHN0b3JlLmNsaWVudCgpLmF1dGguZ2V0VXNlcigpXHJcbiAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgYXV0aDogeyAuLi5zdG9yZS5hdXRoKCksIHVzZXIgfX0pXHJcbiAgICB9XHJcblxyXG4gIH0pKSxcclxuXHJcbiAgd2l0aEhvb2tzKHtcclxuXHJcbiAgICBvbkluaXQoc3RvcmUpIHtcclxuXHJcbiAgICAgIC8qIExpc3RlbiBGb3IgQXV0aCBBdGF0ZSBDaGFuZ2VzICovXHJcbiAgICAgIHN0b3JlLmNsaWVudCgpLmF1dGgub25BdXRoU3RhdGVDaGFuZ2Uoc3RhdGUgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgc3RhdGU6IHsgcHJldjogc3RvcmUuYXV0aC5zdGF0ZS5jdXJyKCksIGN1cnI6IHN0YXRlIH0gfX0pKVxyXG5cclxuICAgICAgLyogSW5pdCBTdXBhYmFzZSBTZXNzaW9uICovXHJcbiAgICAgIHN0b3JlLmluaXRTZXNzaW9uKClcclxuXHJcbiAgICAgIC8qIEluaXQgU3VwYWJhc2UgVXNlciAqL1xyXG4gICAgICBzdG9yZS5pbml0VXNlcigpXHJcblxyXG4gICAgfVxyXG5cclxuICB9KVxyXG5cclxuKVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9jb21tb24vdHlwZS9zdXBhLXN0b3JlLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoQ2hhbmdlRXZlbnQsIFNlc3Npb24sIFN1cGFiYXNlQ2xpZW50LCBVc2VyIH0gZnJvbSBcIkBzdXBhYmFzZS9zdXBhYmFzZS1qc1wiXHJcblxyXG5leHBvcnQgdHlwZSBTdXBhU3RvcmVTdGF0ZSA9IHtcclxuICBjbGllbnQ6IFN1cGFiYXNlQ2xpZW50XHJcbiAgYXV0aDoge1xyXG4gICAgc2Vzc2lvbjogU2Vzc2lvbiB8IHVuZGVmaW5lZCB8IG51bGxcclxuICAgIHVzZXI6IFVzZXIgfCB1bmRlZmluZWQgfCBudWxsXHJcbiAgICBtZXRhZGF0YTogdW5rbm93biB8IHVuZGVmaW5lZCB8IG51bGxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgIHByZXY6IEF1dGhDaGFuZ2VFdmVudCB8IG51bGwsXHJcbiAgICAgIGN1cnI6IEF1dGhDaGFuZ2VFdmVudCB8IG51bGwsXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTdXBhU3RvcmVPcHRpb25zID0ge1xyXG4gIHN1cGFiYXNlVXJsOiBzdHJpbmcsXHJcbiAgc3VwYWJhc2VLZXk6IHN0cmluZyxcclxuICBwb3N0QXV0aE9wdGlvbnM6IHtcclxuICAgIHVzZUxvYWRlcjogeyB0YWJsZTogc3RyaW5nOyBycGM/OiBuZXZlciB9IHwgeyBycGM6IHN0cmluZzsgdGFibGU/OiBuZXZlciB9IHwgeyBycGM6IG51bGw7IHRhYmxlPzogbnVsbCB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -2,7 +2,11 @@ import { makeEnvironmentProviders } from "@angular/core";
|
|
|
2
2
|
import { SupaStore } from "./supa-store.store";
|
|
3
3
|
import { SUPA_STORE_OPTIONS } from "./common/token/supabase-credentials.token";
|
|
4
4
|
import { merge } from "lodash-es";
|
|
5
|
-
const defaultOptions = {
|
|
5
|
+
const defaultOptions = {
|
|
6
|
+
postAuthOptions: {
|
|
7
|
+
useLoader: { rpc: null, table: null }
|
|
8
|
+
}
|
|
9
|
+
};
|
|
6
10
|
export const provideSupaStore = (opts) => {
|
|
7
11
|
const options = merge(defaultOptions, opts);
|
|
8
12
|
return makeEnvironmentProviders([
|
|
@@ -13,4 +17,4 @@ export const provideSupaStore = (opts) => {
|
|
|
13
17
|
SupaStore
|
|
14
18
|
]);
|
|
15
19
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBRTlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFakMsTUFBTSxjQUFjLEdBQThCO0lBQ2hELGVBQWUsRUFBRTtRQUNmLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtLQUN0QztDQUNGLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQXNCLEVBQXdCLEVBQUU7SUFFL0UsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUUzQyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixRQUFRLEVBQUUsT0FBTztTQUNsQjtRQUNELFNBQVM7S0FDVixDQUFDLENBQUE7QUFDSixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxyXG5pbXBvcnQgeyBTdXBhU3RvcmUgfSBmcm9tIFwiLi9zdXBhLXN0b3JlLnN0b3JlXCJcclxuaW1wb3J0IHsgU1VQQV9TVE9SRV9PUFRJT05TIH0gZnJvbSBcIi4vY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuXCJcclxuaW1wb3J0IHsgU3VwYVN0b3JlT3B0aW9ucyB9IGZyb20gXCIuL2NvbW1vbi90eXBlL3N1cGEtc3RvcmUudHlwZXNcIlxyXG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIlxyXG5cclxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8U3VwYVN0b3JlT3B0aW9ucz4gPSB7XHJcbiAgcG9zdEF1dGhPcHRpb25zOiB7XHJcbiAgICB1c2VMb2FkZXI6IHsgcnBjOiBudWxsLCB0YWJsZTogbnVsbCB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcHJvdmlkZVN1cGFTdG9yZSA9IChvcHRzOiBTdXBhU3RvcmVPcHRpb25zKTogRW52aXJvbm1lbnRQcm92aWRlcnMgPT4ge1xyXG5cclxuICBjb25zdCBvcHRpb25zID0gbWVyZ2UoZGVmYXVsdE9wdGlvbnMsIG9wdHMpXHJcblxyXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBTVVBBX1NUT1JFX09QVElPTlMsXHJcbiAgICAgIHVzZVZhbHVlOiBvcHRpb25zXHJcbiAgICB9LFxyXG4gICAgU3VwYVN0b3JlXHJcbiAgXSlcclxufVxyXG4iXX0=
|
|
@@ -1,37 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { SUPA_STORE_OPTIONS } from './common/token/supabase-credentials.token';
|
|
6
|
-
import { filter, firstValueFrom } from 'rxjs';
|
|
7
|
-
import { toObservable } from "@angular/core/rxjs-interop";
|
|
8
|
-
export const withSupaStore = () => signalStoreFeature(withDevtools('supaStore'), withState(() => inject(INITIAL_STATE)), withMethods(store => ({
|
|
9
|
-
initSession: async () => {
|
|
10
|
-
const { data: { session } } = await store.client().auth.getSession();
|
|
11
|
-
patchState(store, { auth: { ...store.auth(), session } });
|
|
12
|
-
},
|
|
13
|
-
initUser: async () => {
|
|
14
|
-
const { data: { user } } = await store.client().auth.getUser();
|
|
15
|
-
patchState(store, { auth: { ...store.auth(), user } });
|
|
16
|
-
},
|
|
17
|
-
loadMetadata: async (id, table) => {
|
|
18
|
-
const { data } = await store.client().from(table).select('*').eq('id', id).single();
|
|
19
|
-
patchState(store, { auth: { ...store.auth(), metadata: data } });
|
|
20
|
-
}
|
|
21
|
-
})), withHooks({
|
|
22
|
-
async onInit(store, { postAuthOptions } = inject(SUPA_STORE_OPTIONS)) {
|
|
23
|
-
store.initSession();
|
|
24
|
-
store.initUser();
|
|
25
|
-
store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } } }));
|
|
26
|
-
// Load basic user from defined table name
|
|
27
|
-
if (postAuthOptions?.table) {
|
|
28
|
-
const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)));
|
|
29
|
-
session?.user ? store.loadMetadata(session?.user?.id, postAuthOptions?.table) : patchState(store, { auth: { ...store.auth(), metadata: null } });
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
patchState(store, { auth: { ...store.auth(), metadata: null } });
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}));
|
|
36
|
-
export const SupaStore = signalStore(withSupaStore());
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFekQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUVuRCxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQ3pCLFNBQVMsQ0FBaUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBRXRELFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFcEIsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNuRSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFBO0lBQzFELENBQUM7SUFFRCxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzdELFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUVELFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBVSxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ2hELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDbkYsVUFBVSxDQUFDLEtBQUssRUFBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUE7SUFDbEUsQ0FBQztDQUVGLENBQUMsQ0FBQyxFQUVILFNBQVMsQ0FBQztJQUNSLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1FBRWxFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDaEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFFdEosMENBQTBDO1FBQzFDLElBQUksZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzdHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxFQUFDLENBQUMsQ0FBQTtRQUNoSixDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsQ0FBQyxLQUFLLEVBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7SUFFSCxDQUFDO0NBQ0YsQ0FBQyxDQUVILENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUNsQyxhQUFhLEVBQUUsQ0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB3aXRoRGV2dG9vbHMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL25ncngtdG9vbGtpdCdcclxuaW1wb3J0IHsgSU5JVElBTF9TVEFURSB9IGZyb20gJy4vY29tbW9uL3Rva2VuL2luaXRpYWwtc3RhdGUudG9rZW4nXHJcbmltcG9ydCB7IFN1cGFTdG9yZVN0YXRlIH0gZnJvbSAnLi9jb21tb24vdHlwZS9zdXBhLXN0b3JlLnR5cGVzJ1xyXG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgc2lnbmFsU3RvcmVGZWF0dXJlLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJ1xyXG5pbXBvcnQgeyBTVVBBX1NUT1JFX09QVElPTlMgfSBmcm9tICcuL2NvbW1vbi90b2tlbi9zdXBhYmFzZS1jcmVkZW50aWFscy50b2tlbidcclxuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiXHJcblxyXG5leHBvcnQgY29uc3Qgd2l0aFN1cGFTdG9yZSA9ICgpID0+IHNpZ25hbFN0b3JlRmVhdHVyZShcclxuXHJcbiAgd2l0aERldnRvb2xzKCdzdXBhU3RvcmUnKSxcclxuICB3aXRoU3RhdGU8U3VwYVN0b3JlU3RhdGU+KCgpID0+IGluamVjdChJTklUSUFMX1NUQVRFKSksXHJcblxyXG4gIHdpdGhNZXRob2RzKHN0b3JlID0+ICh7XHJcblxyXG4gICAgaW5pdFNlc3Npb246IGFzeW5jICgpID0+IHtcclxuICAgICAgY29uc3QgeyBkYXRhOiB7IHNlc3Npb24gfX0gPSBhd2FpdCBzdG9yZS5jbGllbnQoKS5hdXRoLmdldFNlc3Npb24oKVxyXG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGg6IHsgLi4uc3RvcmUuYXV0aCgpLCBzZXNzaW9uIH19KVxyXG4gICAgfSxcclxuXHJcbiAgICBpbml0VXNlcjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCB7IGRhdGE6IHsgdXNlciB9fSA9IGF3YWl0IHN0b3JlLmNsaWVudCgpLmF1dGguZ2V0VXNlcigpXHJcbiAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgYXV0aDogeyAuLi5zdG9yZS5hdXRoKCksIHVzZXIgfX0pXHJcbiAgICB9LFxyXG5cclxuICAgIGxvYWRNZXRhZGF0YTogYXN5bmMgKGlkOiBzdHJpbmcsIHRhYmxlOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBzdG9yZS5jbGllbnQoKS5mcm9tKHRhYmxlKS5zZWxlY3QoJyonKS5lcSgnaWQnLCBpZCkuc2luZ2xlKClcclxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgIHsgYXV0aDogeyAuLi5zdG9yZS5hdXRoKCksIG1ldGFkYXRhOiBkYXRhIH19KVxyXG4gICAgfVxyXG5cclxuICB9KSksXHJcblxyXG4gIHdpdGhIb29rcyh7XHJcbiAgICBhc3luYyBvbkluaXQoc3RvcmUsIHsgcG9zdEF1dGhPcHRpb25zIH0gPSBpbmplY3QoU1VQQV9TVE9SRV9PUFRJT05TKSkge1xyXG5cclxuICAgICAgc3RvcmUuaW5pdFNlc3Npb24oKVxyXG4gICAgICBzdG9yZS5pbml0VXNlcigpXHJcbiAgICAgIHN0b3JlLmNsaWVudCgpLmF1dGgub25BdXRoU3RhdGVDaGFuZ2Uoc3RhdGUgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgc3RhdGU6IHsgcHJldjogc3RvcmUuYXV0aC5zdGF0ZS5jdXJyKCksIGN1cnI6IHN0YXRlIH0gfX0pKVxyXG5cclxuICAgICAgLy8gTG9hZCBiYXNpYyB1c2VyIGZyb20gZGVmaW5lZCB0YWJsZSBuYW1lXHJcbiAgICAgIGlmIChwb3N0QXV0aE9wdGlvbnM/LnRhYmxlKSB7XHJcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRvT2JzZXJ2YWJsZShzdG9yZS5hdXRoLnNlc3Npb24pLnBpcGUoZmlsdGVyKHJlcyA9PiByZXMgIT09IHVuZGVmaW5lZCkpKVxyXG4gICAgICAgIHNlc3Npb24/LnVzZXIgPyBzdG9yZS5sb2FkTWV0YWRhdGEoc2Vzc2lvbj8udXNlcj8uaWQsIHBvc3RBdXRoT3B0aW9ucz8udGFibGUpIDogcGF0Y2hTdGF0ZShzdG9yZSwgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgbWV0YWRhdGE6IG51bGx9fSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgbWV0YWRhdGE6IG51bGx9fSlcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9KVxyXG5cclxuKVxyXG5cclxuZXhwb3J0IGNvbnN0IFN1cGFTdG9yZSA9IHNpZ25hbFN0b3JlKFxyXG4gIHdpdGhTdXBhU3RvcmUoKVxyXG4pXHJcbiJdfQ==
|
|
1
|
+
import { signalStore } from '@ngrx/signals';
|
|
2
|
+
import { withSupaStoreCore } from './common/features/supa-store-core.feature';
|
|
3
|
+
export const SupaStore = signalStore(withSupaStoreCore());
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFFN0UsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FDbEMsaUJBQWlCLEVBQUUsQ0FDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbFN0b3JlIH0gZnJvbSAnQG5ncngvc2lnbmFscydcclxuaW1wb3J0IHsgd2l0aFN1cGFTdG9yZUNvcmUgfSBmcm9tICcuL2NvbW1vbi9mZWF0dXJlcy9zdXBhLXN0b3JlLWNvcmUuZmVhdHVyZSdcclxuXHJcbmV4cG9ydCBjb25zdCBTdXBhU3RvcmUgPSBzaWduYWxTdG9yZShcclxuICB3aXRoU3VwYVN0b3JlQ29yZSgpXHJcbilcclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/supa-store.store';
|
|
5
5
|
export * from './lib/supa-store.provider';
|
|
6
|
-
|
|
6
|
+
export * from './lib/common/features/supa-store-core.feature';
|
|
7
|
+
export * from './lib/common/type/supa-store.types';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7QUFFRixjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLG9DQUFvQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG9iLXN1cGEtc3RvcmVcclxuKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1cGEtc3RvcmUuc3RvcmUnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1cGEtc3RvcmUucHJvdmlkZXInXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi9mZWF0dXJlcy9zdXBhLXN0b3JlLWNvcmUuZmVhdHVyZSdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uL3R5cGUvc3VwYS1zdG9yZS50eXBlcydcclxuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { signalStoreFeature, type, withMethods, patchState, withHooks, withState, signalStore } from '@ngrx/signals';
|
|
1
2
|
import { InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';
|
|
2
3
|
import { withDevtools } from '@angular-architects/ngrx-toolkit';
|
|
3
4
|
import { createClient } from '@supabase/supabase-js';
|
|
4
|
-
import { signalStoreFeature, withState, withMethods, patchState, withHooks, signalStore } from '@ngrx/signals';
|
|
5
|
-
import { firstValueFrom, filter } from 'rxjs';
|
|
6
5
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { firstValueFrom, filter } from 'rxjs';
|
|
7
7
|
import { merge } from 'lodash-es';
|
|
8
8
|
|
|
9
9
|
const SUPA_STORE_OPTIONS = new InjectionToken('SUPA_STORE_OPTIONS');
|
|
@@ -23,7 +23,34 @@ const INITIAL_STATE = new InjectionToken('SupaStoreState', {
|
|
|
23
23
|
},
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
const
|
|
26
|
+
const withPostAuthOptions = () => signalStoreFeature({ state: type() }, withMethods((store, { postAuthOptions } = inject(SUPA_STORE_OPTIONS)) => ({
|
|
27
|
+
loader: async () => {
|
|
28
|
+
const { useLoader: { table, rpc } } = postAuthOptions;
|
|
29
|
+
if (table || rpc) {
|
|
30
|
+
const { user } = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)));
|
|
31
|
+
if (!user)
|
|
32
|
+
return;
|
|
33
|
+
if (table) {
|
|
34
|
+
const { data } = await store.client().from(table).select('*').eq('id', user?.id).single();
|
|
35
|
+
patchState(store, { auth: { ...store.auth(), metadata: data } });
|
|
36
|
+
}
|
|
37
|
+
else if (rpc) {
|
|
38
|
+
const { data } = await store.client().rpc(rpc, { input: { user_id: user?.id } });
|
|
39
|
+
patchState(store, { auth: { ...store.auth(), metadata: data } });
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
patchState(store, { auth: { ...store.auth(), metadata: null } });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
})), withHooks({
|
|
47
|
+
onInit(store) {
|
|
48
|
+
/* Auto Load Additional User Auth Data */
|
|
49
|
+
store.loader();
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
const withSupaStoreCore = () => signalStoreFeature(withDevtools('supaStore'), withState(() => inject(INITIAL_STATE)), withPostAuthOptions(), withMethods(store => ({
|
|
27
54
|
initSession: async () => {
|
|
28
55
|
const { data: { session } } = await store.client().auth.getSession();
|
|
29
56
|
patchState(store, { auth: { ...store.auth(), session } });
|
|
@@ -31,29 +58,25 @@ const withSupaStore = () => signalStoreFeature(withDevtools('supaStore'), withSt
|
|
|
31
58
|
initUser: async () => {
|
|
32
59
|
const { data: { user } } = await store.client().auth.getUser();
|
|
33
60
|
patchState(store, { auth: { ...store.auth(), user } });
|
|
34
|
-
},
|
|
35
|
-
loadMetadata: async (id, table) => {
|
|
36
|
-
const { data } = await store.client().from(table).select('*').eq('id', id).single();
|
|
37
|
-
patchState(store, { auth: { ...store.auth(), metadata: data } });
|
|
38
61
|
}
|
|
39
62
|
})), withHooks({
|
|
40
|
-
|
|
63
|
+
onInit(store) {
|
|
64
|
+
/* Listen For Auth Atate Changes */
|
|
65
|
+
store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } } }));
|
|
66
|
+
/* Init Supabase Session */
|
|
41
67
|
store.initSession();
|
|
68
|
+
/* Init Supabase User */
|
|
42
69
|
store.initUser();
|
|
43
|
-
store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } } }));
|
|
44
|
-
// Load basic user from defined table name
|
|
45
|
-
if (postAuthOptions?.table) {
|
|
46
|
-
const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)));
|
|
47
|
-
session?.user ? store.loadMetadata(session?.user?.id, postAuthOptions?.table) : patchState(store, { auth: { ...store.auth(), metadata: null } });
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
patchState(store, { auth: { ...store.auth(), metadata: null } });
|
|
51
|
-
}
|
|
52
70
|
}
|
|
53
71
|
}));
|
|
54
|
-
const SupaStore = signalStore(withSupaStore());
|
|
55
72
|
|
|
56
|
-
const
|
|
73
|
+
const SupaStore = signalStore(withSupaStoreCore());
|
|
74
|
+
|
|
75
|
+
const defaultOptions = {
|
|
76
|
+
postAuthOptions: {
|
|
77
|
+
useLoader: { rpc: null, table: null }
|
|
78
|
+
}
|
|
79
|
+
};
|
|
57
80
|
const provideSupaStore = (opts) => {
|
|
58
81
|
const options = merge(defaultOptions, opts);
|
|
59
82
|
return makeEnvironmentProviders([
|
|
@@ -73,5 +96,5 @@ const provideSupaStore = (opts) => {
|
|
|
73
96
|
* Generated bundle index. Do not edit.
|
|
74
97
|
*/
|
|
75
98
|
|
|
76
|
-
export { SupaStore, provideSupaStore,
|
|
99
|
+
export { SupaStore, provideSupaStore, withSupaStoreCore };
|
|
77
100
|
//# sourceMappingURL=outbuild-supa-store.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbuild-supa-store.mjs","sources":["../../../projects/ob-supa-store/src/lib/common/token/supabase-credentials.token.ts","../../../projects/ob-supa-store/src/lib/common/token/initial-state.token.ts","../../../projects/ob-supa-store/src/lib/supa-store.store.ts","../../../projects/ob-supa-store/src/lib/supa-store.provider.ts","../../../projects/ob-supa-store/src/public-api.ts","../../../projects/ob-supa-store/src/outbuild-supa-store.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\"\r\nimport { SupaStoreOptions } from \"../type/supa-store.types\"\r\n\r\nexport const SUPA_STORE_OPTIONS = new InjectionToken<SupaStoreOptions>('SUPA_STORE_OPTIONS')\r\n","import { inject, InjectionToken } from \"@angular/core\"\r\nimport { SUPA_STORE_OPTIONS } from \"./supabase-credentials.token\"\r\nimport { createClient } from \"@supabase/supabase-js\"\r\nimport { SupaStoreState } from \"../type/supa-store.types\"\r\n\r\nexport const INITIAL_STATE = new InjectionToken<SupaStoreState>('SupaStoreState', {\r\n factory: () => {\r\n\r\n const { supabaseUrl, supabaseKey } = inject(SUPA_STORE_OPTIONS)\r\n\r\n return {\r\n client: createClient(supabaseUrl, supabaseKey),\r\n auth: {\r\n session: undefined,\r\n user: undefined,\r\n metadata: undefined,\r\n state: { prev: null, curr: null }\r\n }\r\n }\r\n\r\n },\r\n})\r\n","import { inject } from '@angular/core'
|
|
1
|
+
{"version":3,"file":"outbuild-supa-store.mjs","sources":["../../../projects/ob-supa-store/src/lib/common/token/supabase-credentials.token.ts","../../../projects/ob-supa-store/src/lib/common/token/initial-state.token.ts","../../../projects/ob-supa-store/src/lib/common/features/post-auth-loader.feature.ts","../../../projects/ob-supa-store/src/lib/common/features/supa-store-core.feature.ts","../../../projects/ob-supa-store/src/lib/supa-store.store.ts","../../../projects/ob-supa-store/src/lib/supa-store.provider.ts","../../../projects/ob-supa-store/src/public-api.ts","../../../projects/ob-supa-store/src/outbuild-supa-store.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\"\r\nimport { SupaStoreOptions } from \"../type/supa-store.types\"\r\n\r\nexport const SUPA_STORE_OPTIONS = new InjectionToken<SupaStoreOptions>('SUPA_STORE_OPTIONS')\r\n","import { inject, InjectionToken } from \"@angular/core\"\r\nimport { SUPA_STORE_OPTIONS } from \"./supabase-credentials.token\"\r\nimport { createClient } from \"@supabase/supabase-js\"\r\nimport { SupaStoreState } from \"../type/supa-store.types\"\r\n\r\nexport const INITIAL_STATE = new InjectionToken<SupaStoreState>('SupaStoreState', {\r\n factory: () => {\r\n\r\n const { supabaseUrl, supabaseKey } = inject(SUPA_STORE_OPTIONS)\r\n\r\n return {\r\n client: createClient(supabaseUrl, supabaseKey),\r\n auth: {\r\n session: undefined,\r\n user: undefined,\r\n metadata: undefined,\r\n state: { prev: null, curr: null }\r\n }\r\n }\r\n\r\n },\r\n})\r\n","import { inject } from '@angular/core'\r\nimport { Session } from '@supabase/supabase-js'\r\nimport { toObservable } from \"@angular/core/rxjs-interop\"\r\nimport { SupaStoreState } from '../type/supa-store.types'\r\nimport { SUPA_STORE_OPTIONS } from '../token/supabase-credentials.token'\r\nimport { filter, firstValueFrom, Observable } from 'rxjs'\r\nimport { patchState, signalStoreFeature, type, withHooks, withMethods } from '@ngrx/signals'\r\n\r\nexport const withPostAuthOptions = () => signalStoreFeature(\r\n\r\n { state: type<SupaStoreState>() },\r\n\r\n withMethods((store, { postAuthOptions } = inject(SUPA_STORE_OPTIONS)) => ({\r\n\r\n loader: async () => {\r\n\r\n const { useLoader: { table, rpc }} = postAuthOptions\r\n\r\n if (table || rpc) {\r\n\r\n const { user } = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)) as Observable<Session>)\r\n if (!user) return\r\n\r\n if (table) {\r\n const { data } = await store.client().from(table).select('*').eq('id', user?.id).single()\r\n patchState(store, { auth: { ...store.auth(), metadata: data }})\r\n } else if (rpc) {\r\n const { data } = await store.client().rpc(rpc, { input: { user_id: user?.id }})\r\n patchState(store, { auth: { ...store.auth(), metadata: data }})\r\n } else {\r\n patchState(store, { auth: { ...store.auth(), metadata: null}})\r\n }\r\n\r\n }\r\n },\r\n\r\n })),\r\n\r\n withHooks({\r\n\r\n onInit(store) {\r\n\r\n /* Auto Load Additional User Auth Data */\r\n store.loader()\r\n\r\n }\r\n\r\n })\r\n\r\n)\r\n","import { inject } from '@angular/core';\r\nimport { withDevtools } from '@angular-architects/ngrx-toolkit'\r\nimport { INITIAL_STATE } from '../token/initial-state.token'\r\nimport { SupaStoreState } from '../type/supa-store.types'\r\nimport { withPostAuthOptions } from '../features/post-auth-loader.feature'\r\nimport { patchState, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals'\r\n\r\nexport const withSupaStoreCore = () => signalStoreFeature(\r\n\r\n withDevtools('supaStore'),\r\n withState<SupaStoreState>(() => inject(INITIAL_STATE)),\r\n withPostAuthOptions(),\r\n\r\n withMethods(store => ({\r\n\r\n initSession: async () => {\r\n const { data: { session }} = await store.client().auth.getSession()\r\n patchState(store, { auth: { ...store.auth(), session }})\r\n },\r\n\r\n initUser: async () => {\r\n const { data: { user }} = await store.client().auth.getUser()\r\n patchState(store, { auth: { ...store.auth(), user }})\r\n }\r\n\r\n })),\r\n\r\n withHooks({\r\n\r\n onInit(store) {\r\n\r\n /* Listen For Auth Atate Changes */\r\n store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } }}))\r\n\r\n /* Init Supabase Session */\r\n store.initSession()\r\n\r\n /* Init Supabase User */\r\n store.initUser()\r\n\r\n }\r\n\r\n })\r\n\r\n)\r\n","import { signalStore } from '@ngrx/signals'\r\nimport { withSupaStoreCore } from './common/features/supa-store-core.feature'\r\n\r\nexport const SupaStore = signalStore(\r\n withSupaStoreCore()\r\n)\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\"\r\nimport { SupaStore } from \"./supa-store.store\"\r\nimport { SUPA_STORE_OPTIONS } from \"./common/token/supabase-credentials.token\"\r\nimport { SupaStoreOptions } from \"./common/type/supa-store.types\"\r\nimport { merge } from \"lodash-es\"\r\n\r\nconst defaultOptions: Partial<SupaStoreOptions> = {\r\n postAuthOptions: {\r\n useLoader: { rpc: null, table: null }\r\n }\r\n}\r\n\r\nexport const provideSupaStore = (opts: SupaStoreOptions): EnvironmentProviders => {\r\n\r\n const options = merge(defaultOptions, opts)\r\n\r\n return makeEnvironmentProviders([\r\n {\r\n provide: SUPA_STORE_OPTIONS,\r\n useValue: options\r\n },\r\n SupaStore\r\n ])\r\n}\r\n","/*\r\n * Public API Surface of ob-supa-store\r\n*/\r\n\r\nexport * from './lib/supa-store.store'\r\nexport * from './lib/supa-store.provider'\r\nexport * from './lib/common/features/supa-store-core.feature'\r\nexport * from './lib/common/type/supa-store.types'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SupaStoreState } from '../type/supa-store.types';
|
|
2
|
+
export declare const withPostAuthOptions: () => import("@ngrx/signals").SignalStoreFeature<{
|
|
3
|
+
state: SupaStoreState;
|
|
4
|
+
computed: {};
|
|
5
|
+
methods: {};
|
|
6
|
+
}, {
|
|
7
|
+
state: {};
|
|
8
|
+
computed: {};
|
|
9
|
+
methods: {
|
|
10
|
+
loader: () => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const withSupaStoreCore: () => import("@ngrx/signals").SignalStoreFeature<import("@ngrx/signals").EmptyFeatureResult, {
|
|
2
|
+
state: {
|
|
3
|
+
client: import("@supabase/supabase-js").SupabaseClient;
|
|
4
|
+
auth: {
|
|
5
|
+
session: import("@supabase/auth-js").Session | undefined | null;
|
|
6
|
+
user: import("@supabase/auth-js").User | undefined | null;
|
|
7
|
+
metadata: unknown | undefined | null;
|
|
8
|
+
state: {
|
|
9
|
+
prev: import("@supabase/auth-js").AuthChangeEvent | null;
|
|
10
|
+
curr: import("@supabase/auth-js").AuthChangeEvent | null;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
computed: {};
|
|
15
|
+
methods: {
|
|
16
|
+
loader: () => Promise<void>;
|
|
17
|
+
initSession: () => Promise<void>;
|
|
18
|
+
initUser: () => Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
@@ -14,8 +14,16 @@ export type SupaStoreState = {
|
|
|
14
14
|
export type SupaStoreOptions = {
|
|
15
15
|
supabaseUrl: string;
|
|
16
16
|
supabaseKey: string;
|
|
17
|
-
postAuthOptions
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
postAuthOptions: {
|
|
18
|
+
useLoader: {
|
|
19
|
+
table: string;
|
|
20
|
+
rpc?: never;
|
|
21
|
+
} | {
|
|
22
|
+
rpc: string;
|
|
23
|
+
table?: never;
|
|
24
|
+
} | {
|
|
25
|
+
rpc: null;
|
|
26
|
+
table?: null;
|
|
27
|
+
};
|
|
20
28
|
};
|
|
21
29
|
};
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
export declare const withSupaStore: () => import("@ngrx/signals").SignalStoreFeature<import("@ngrx/signals").EmptyFeatureResult, {
|
|
2
|
-
state: {
|
|
3
|
-
client: import("@supabase/supabase-js").SupabaseClient;
|
|
4
|
-
auth: {
|
|
5
|
-
session: import("@supabase/auth-js").Session | undefined | null;
|
|
6
|
-
user: import("@supabase/auth-js").User | undefined | null;
|
|
7
|
-
metadata: unknown | undefined | null;
|
|
8
|
-
state: {
|
|
9
|
-
prev: import("@supabase/auth-js").AuthChangeEvent | null;
|
|
10
|
-
curr: import("@supabase/auth-js").AuthChangeEvent | null;
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
computed: {};
|
|
15
|
-
methods: {
|
|
16
|
-
initSession: () => Promise<void>;
|
|
17
|
-
initUser: () => Promise<void>;
|
|
18
|
-
loadMetadata: (id: string, table: string) => Promise<void>;
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
1
|
export declare const SupaStore: import("@angular/core").Type<{
|
|
22
2
|
client: import("@ngrx/signals").DeepSignal<import("@supabase/supabase-js").SupabaseClient<any, "public", any>>;
|
|
23
3
|
auth: import("@ngrx/signals").DeepSignal<{
|
|
@@ -29,9 +9,9 @@ export declare const SupaStore: import("@angular/core").Type<{
|
|
|
29
9
|
curr: import("@supabase/auth-js").AuthChangeEvent | null;
|
|
30
10
|
};
|
|
31
11
|
}>;
|
|
12
|
+
loader: () => Promise<void>;
|
|
32
13
|
initSession: () => Promise<void>;
|
|
33
14
|
initUser: () => Promise<void>;
|
|
34
|
-
loadMetadata: (id: string, table: string) => Promise<void>;
|
|
35
15
|
} & import("@ngrx/signals").StateSource<{
|
|
36
16
|
client: import("@supabase/supabase-js").SupabaseClient;
|
|
37
17
|
auth: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@outbuild/supa-store",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.24",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^18.2.0",
|
|
6
6
|
"@angular/core": "^18.2.0",
|
|
@@ -29,4 +29,4 @@
|
|
|
29
29
|
"default": "./fesm2022/outbuild-supa-store.mjs"
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
}
|
|
32
|
+
}
|
package/public-api.d.ts
CHANGED