@outbuild/supa-store 0.0.6 → 0.0.8

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.
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const SUPABASE_CREDENTIALS = new InjectionToken('SUPABASE_CREDENTIALS');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYi1zdXBhLXN0b3JlL3NyYy9saWIvY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBR25ELHNCQUFzQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuXHJcbmV4cG9ydCBjb25zdCBTVVBBQkFTRV9DUkVERU5USUFMUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjx7XHJcbiAgc3VwYWJhc2VVcmw6IHN0cmluZyxcclxuICBzdXBhYmFzZUtleTogc3RyaW5nXHJcbn0+KCdTVVBBQkFTRV9DUkVERU5USUFMUycpXHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { makeEnvironmentProviders } from "@angular/core";
2
+ import { SupaStore } from "./supa-store.store";
3
+ import { SUPABASE_CREDENTIALS } from "./common/token/supabase-credentials.token";
4
+ export const provideSupaStore = (supabaseUrl, supabaseKey) => makeEnvironmentProviders([
5
+ {
6
+ provide: SUPABASE_CREDENTIALS,
7
+ useValue: { supabaseUrl, supabaseKey }
8
+ },
9
+ SupaStore
10
+ ]);
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsV0FBbUIsRUFBRSxXQUFtQixFQUF3QixFQUFFLENBQUMsd0JBQXdCLENBQUM7SUFDM0g7UUFDRSxPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7S0FDdkM7SUFDRCxTQUFTO0NBQ1YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHsgU3VwYVN0b3JlIH0gZnJvbSBcIi4vc3VwYS1zdG9yZS5zdG9yZVwiXHJcbmltcG9ydCB7IFNVUEFCQVNFX0NSRURFTlRJQUxTIH0gZnJvbSBcIi4vY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuXCJcclxuXHJcbmV4cG9ydCBjb25zdCBwcm92aWRlU3VwYVN0b3JlID0gKHN1cGFiYXNlVXJsOiBzdHJpbmcsIHN1cGFiYXNlS2V5OiBzdHJpbmcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyA9PiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xyXG4gIHtcclxuICAgIHByb3ZpZGU6IFNVUEFCQVNFX0NSRURFTlRJQUxTLFxyXG4gICAgdXNlVmFsdWU6IHsgc3VwYWJhc2VVcmwsIHN1cGFiYXNlS2V5IH1cclxuICB9LFxyXG4gIFN1cGFTdG9yZVxyXG5dKVxyXG5cclxuIl19
@@ -0,0 +1,27 @@
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ import { patchState, signalStore, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals';
3
+ import { createClient } from '@supabase/supabase-js';
4
+ import { SUPABASE_CREDENTIALS } from './common/token/supabase-credentials.token';
5
+ const INITIAL_STATE = new InjectionToken('SupaStoreState', {
6
+ factory: () => {
7
+ const { supabaseUrl, supabaseKey } = inject(SUPABASE_CREDENTIALS);
8
+ return {
9
+ client: createClient(supabaseUrl, supabaseKey),
10
+ session: undefined,
11
+ authState: { old: null, new: null },
12
+ };
13
+ },
14
+ });
15
+ export const withSupaStore = () => signalStoreFeature(withState(() => inject(INITIAL_STATE)), withMethods((store) => ({
16
+ initSession: async () => {
17
+ const { data: { session } } = await store.client().auth.getSession();
18
+ patchState(store, { session: session });
19
+ }
20
+ })), withHooks({
21
+ onInit(store) {
22
+ store.initSession();
23
+ store.client().auth.onAuthStateChange(state => patchState(store, { authState: { old: store.authState().new, new: state } }));
24
+ }
25
+ }));
26
+ export const SupaStore = signalStore(withSupaStore());
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBNEMsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDOUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFXaEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixFQUFFO0lBQ3pFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ2pFLE9BQU87WUFDTCxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7WUFDOUMsT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1NBQ3BDLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQU0sRUFBRSxDQUFDLGtCQUFrQixDQUV0RCxTQUFTLENBQWtCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUV2RCxXQUFXLENBQUMsQ0FBRSxLQUFLLEVBQUcsRUFBRSxDQUFDLENBQUM7SUFFeEIsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNuRSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQWtCLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7Q0FFRixDQUFDLENBQUMsRUFFSCxTQUFTLENBQUM7SUFDUixNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUM3SCxDQUFDO0NBQ0YsQ0FBQyxDQUVILENBQUE7QUFHRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUNsQyxhQUFhLEVBQUUsQ0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlRmVhdHVyZSwgd2l0aEhvb2tzLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XHJcbmltcG9ydCB7IEF1dGhDaGFuZ2VFdmVudCwgU2Vzc2lvbiwgU3VwYWJhc2VDbGllbnQsIGNyZWF0ZUNsaWVudCB9IGZyb20gJ0BzdXBhYmFzZS9zdXBhYmFzZS1qcydcclxuaW1wb3J0IHsgU1VQQUJBU0VfQ1JFREVOVElBTFMgfSBmcm9tICcuL2NvbW1vbi90b2tlbi9zdXBhYmFzZS1jcmVkZW50aWFscy50b2tlbidcclxuXHJcbmV4cG9ydCB0eXBlIFN1cGFTdG9yZVN0YXRlID0ge1xyXG4gIGNsaWVudDogU3VwYWJhc2VDbGllbnRcclxuICBzZXNzaW9uOiBTZXNzaW9uIHwgdW5kZWZpbmVkIHwgbnVsbFxyXG4gIGF1dGhTdGF0ZToge1xyXG4gICAgb2xkOiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gICAgbmV3OiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgSU5JVElBTF9TVEFURSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdXBhU3RvcmVTdGF0ZT4oJ1N1cGFTdG9yZVN0YXRlJywge1xyXG4gIGZhY3Rvcnk6ICgpID0+IHtcclxuICAgIGNvbnN0IHsgc3VwYWJhc2VVcmwsIHN1cGFiYXNlS2V5IH0gPSBpbmplY3QoU1VQQUJBU0VfQ1JFREVOVElBTFMpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjbGllbnQ6IGNyZWF0ZUNsaWVudChzdXBhYmFzZVVybCwgc3VwYWJhc2VLZXkpLFxyXG4gICAgICBzZXNzaW9uOiB1bmRlZmluZWQsXHJcbiAgICAgIGF1dGhTdGF0ZTogeyBvbGQ6IG51bGwsIG5ldzogbnVsbCB9LFxyXG4gICAgfVxyXG4gIH0sXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHdpdGhTdXBhU3RvcmUgPSA8VD4oKSA9PiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcblxyXG4gIHdpdGhTdGF0ZTwgU3VwYVN0b3JlU3RhdGU+KCgpID0+IGluamVjdChJTklUSUFMX1NUQVRFKSksXHJcblxyXG4gIHdpdGhNZXRob2RzKCggc3RvcmUgKSA9PiAoe1xyXG5cclxuICAgIGluaXRTZXNzaW9uOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YTogeyBzZXNzaW9uIH19ID0gYXdhaXQgc3RvcmUuY2xpZW50KCkuYXV0aC5nZXRTZXNzaW9uKClcclxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBzZXNzaW9uOiBzZXNzaW9uIGFzIFNlc3Npb24gfSlcclxuICAgIH1cclxuXHJcbiAgfSkpLFxyXG5cclxuICB3aXRoSG9va3Moe1xyXG4gICAgb25Jbml0KHN0b3JlKSB7XHJcbiAgICAgIHN0b3JlLmluaXRTZXNzaW9uKClcclxuICAgICAgc3RvcmUuY2xpZW50KCkuYXV0aC5vbkF1dGhTdGF0ZUNoYW5nZShzdGF0ZSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGhTdGF0ZTogeyBvbGQ6IHN0b3JlLmF1dGhTdGF0ZSgpLm5ldywgbmV3OiBzdGF0ZSB9fSkpXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbilcclxuXHJcblxyXG5leHBvcnQgY29uc3QgU3VwYVN0b3JlID0gc2lnbmFsU3RvcmUoXHJcbiAgd2l0aFN1cGFTdG9yZSgpXHJcbilcclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0YnVpbGQtc3VwYS1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL291dGJ1aWxkLXN1cGEtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of ob-supa-store
3
+ */
4
+ export * from './lib/supa-store.store';
5
+ export * from './lib/supa-store.provider';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygb2Itc3VwYS1zdG9yZVxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1cGEtc3RvcmUuc3RvcmUnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1cGEtc3RvcmUucHJvdmlkZXInXHJcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';
2
+ import { signalStoreFeature, withState, withMethods, patchState, withHooks, signalStore } from '@ngrx/signals';
3
+ import { createClient } from '@supabase/supabase-js';
4
+
5
+ const SUPABASE_CREDENTIALS = new InjectionToken('SUPABASE_CREDENTIALS');
6
+
7
+ const INITIAL_STATE = new InjectionToken('SupaStoreState', {
8
+ factory: () => {
9
+ const { supabaseUrl, supabaseKey } = inject(SUPABASE_CREDENTIALS);
10
+ return {
11
+ client: createClient(supabaseUrl, supabaseKey),
12
+ session: undefined,
13
+ authState: { old: null, new: null },
14
+ };
15
+ },
16
+ });
17
+ const withSupaStore = () => signalStoreFeature(withState(() => inject(INITIAL_STATE)), withMethods((store) => ({
18
+ initSession: async () => {
19
+ const { data: { session } } = await store.client().auth.getSession();
20
+ patchState(store, { session: session });
21
+ }
22
+ })), withHooks({
23
+ onInit(store) {
24
+ store.initSession();
25
+ store.client().auth.onAuthStateChange(state => patchState(store, { authState: { old: store.authState().new, new: state } }));
26
+ }
27
+ }));
28
+ const SupaStore = signalStore(withSupaStore());
29
+
30
+ const provideSupaStore = (supabaseUrl, supabaseKey) => makeEnvironmentProviders([
31
+ {
32
+ provide: SUPABASE_CREDENTIALS,
33
+ useValue: { supabaseUrl, supabaseKey }
34
+ },
35
+ SupaStore
36
+ ]);
37
+
38
+ /*
39
+ * Public API Surface of ob-supa-store
40
+ */
41
+
42
+ /**
43
+ * Generated bundle index. Do not edit.
44
+ */
45
+
46
+ export { SupaStore, provideSupaStore, withSupaStore };
47
+ //# sourceMappingURL=outbuild-supa-store.mjs.map
@@ -0,0 +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/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\n\r\nexport const SUPABASE_CREDENTIALS = new InjectionToken<{\r\n supabaseUrl: string,\r\n supabaseKey: string\r\n}>('SUPABASE_CREDENTIALS')\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { patchState, signalStore, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals';\r\nimport { AuthChangeEvent, Session, SupabaseClient, createClient } from '@supabase/supabase-js'\r\nimport { SUPABASE_CREDENTIALS } from './common/token/supabase-credentials.token'\r\n\r\nexport type SupaStoreState = {\r\n client: SupabaseClient\r\n session: Session | undefined | null\r\n authState: {\r\n old: AuthChangeEvent | null,\r\n new: AuthChangeEvent | null,\r\n }\r\n}\r\n\r\nconst INITIAL_STATE = new InjectionToken<SupaStoreState>('SupaStoreState', {\r\n factory: () => {\r\n const { supabaseUrl, supabaseKey } = inject(SUPABASE_CREDENTIALS)\r\n return {\r\n client: createClient(supabaseUrl, supabaseKey),\r\n session: undefined,\r\n authState: { old: null, new: null },\r\n }\r\n },\r\n});\r\n\r\nexport const withSupaStore = <T>() => signalStoreFeature(\r\n\r\n withState< SupaStoreState>(() => inject(INITIAL_STATE)),\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, { session: session as Session })\r\n }\r\n\r\n })),\r\n\r\n withHooks({\r\n onInit(store) {\r\n store.initSession()\r\n store.client().auth.onAuthStateChange(state => patchState(store, { authState: { old: store.authState().new, new: state }}))\r\n }\r\n })\r\n\r\n)\r\n\r\n\r\nexport const SupaStore = signalStore(\r\n withSupaStore()\r\n)\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\"\r\nimport { SupaStore } from \"./supa-store.store\"\r\nimport { SUPABASE_CREDENTIALS } from \"./common/token/supabase-credentials.token\"\r\n\r\nexport const provideSupaStore = (supabaseUrl: string, supabaseKey: string): EnvironmentProviders => makeEnvironmentProviders([\r\n {\r\n provide: SUPABASE_CREDENTIALS,\r\n useValue: { supabaseUrl, supabaseKey }\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\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAEO,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAGnD,sBAAsB,CAAC;;ACS1B,MAAM,aAAa,GAAG,IAAI,cAAc,CAAiB,gBAAgB,EAAE;IACzE,OAAO,EAAE,MAAK;QACZ,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACjE,OAAO;AACL,YAAA,MAAM,EAAE,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC;AAC9C,YAAA,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;SACpC,CAAA;KACF;AACF,CAAA,CAAC,CAAC;AAEU,MAAA,aAAa,GAAG,MAAS,kBAAkB,CAEtD,SAAS,CAAkB,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,EAEvD,WAAW,CAAC,CAAE,KAAK,MAAO;IAExB,WAAW,EAAE,YAAW;AACtB,QAAA,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAC,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;QACnE,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAkB,EAAE,CAAC,CAAA;KACnD;CAEF,CAAC,CAAC,EAEH,SAAS,CAAC;AACR,IAAA,MAAM,CAAC,KAAK,EAAA;QACV,KAAK,CAAC,WAAW,EAAE,CAAA;AACnB,QAAA,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAC,CAAC,CAAC,CAAA;KAC5H;AACF,CAAA,CAAC,EAEH;MAGY,SAAS,GAAG,WAAW,CAClC,aAAa,EAAE;;AC7CV,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAE,WAAmB,KAA2B,wBAAwB,CAAC;AAC3H,IAAA;AACE,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;AACvC,KAAA;IACD,SAAS;AACV,CAAA;;ACVD;;AAEG;;ACFH;;AAEG;;;;"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@outbuild/supa-store" />
5
+ export * from './public-api';
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const SUPABASE_CREDENTIALS: InjectionToken<{
3
+ supabaseUrl: string;
4
+ supabaseKey: string;
5
+ }>;
@@ -0,0 +1,2 @@
1
+ import { EnvironmentProviders } from "@angular/core";
2
+ export declare const provideSupaStore: (supabaseUrl: string, supabaseKey: string) => EnvironmentProviders;
@@ -0,0 +1,39 @@
1
+ import { AuthChangeEvent, Session, SupabaseClient } from '@supabase/supabase-js';
2
+ export type SupaStoreState = {
3
+ client: SupabaseClient;
4
+ session: Session | undefined | null;
5
+ authState: {
6
+ old: AuthChangeEvent | null;
7
+ new: AuthChangeEvent | null;
8
+ };
9
+ };
10
+ export declare const withSupaStore: <T>() => import("@ngrx/signals").SignalStoreFeature<import("@ngrx/signals").EmptyFeatureResult, {
11
+ state: {
12
+ client: SupabaseClient;
13
+ session: Session | undefined | null;
14
+ authState: {
15
+ old: AuthChangeEvent | null;
16
+ new: AuthChangeEvent | null;
17
+ };
18
+ };
19
+ computed: {};
20
+ methods: {
21
+ initSession: () => Promise<void>;
22
+ };
23
+ }>;
24
+ export declare const SupaStore: import("@angular/core").Type<{
25
+ client: import("@ngrx/signals").DeepSignal<SupabaseClient<any, "public", any>>;
26
+ session: import("@angular/core").Signal<Session | null | undefined>;
27
+ authState: import("@ngrx/signals").DeepSignal<{
28
+ old: AuthChangeEvent | null;
29
+ new: AuthChangeEvent | null;
30
+ }>;
31
+ initSession: () => Promise<void>;
32
+ } & import("@ngrx/signals").StateSource<{
33
+ client: SupabaseClient;
34
+ session: Session | undefined | null;
35
+ authState: {
36
+ old: AuthChangeEvent | null;
37
+ new: AuthChangeEvent | null;
38
+ };
39
+ }>>;
package/package.json CHANGED
@@ -1,15 +1,31 @@
1
- {
2
- "name": "@outbuild/supa-store",
3
- "version": "0.0.6",
4
- "peerDependencies": {
5
- "@angular/common": "^18.2.0",
6
- "@angular/core": "^18.2.0",
7
- "@ngrx/signals": "^18.0.2",
8
- "@supabase/supabase-js": "^2.45.3",
9
- "@angular-architects/ngrx-toolkit": "18.0.3"
10
- },
11
- "dependencies": {
12
- "tslib": "^2.3.0"
13
- },
14
- "sideEffects": false
15
- }
1
+ {
2
+ "name": "@outbuild/supa-store",
3
+ "version": "0.0.8",
4
+ "peerDependencies": {
5
+ "@angular/common": "^18.2.0",
6
+ "@angular/core": "^18.2.0",
7
+ "@ngrx/signals": "^18.0.2",
8
+ "@supabase/supabase-js": "^2.45.3",
9
+ "@angular-architects/ngrx-toolkit": "18.0.3"
10
+ },
11
+ "dependencies": {
12
+ "tslib": "^2.3.0"
13
+ },
14
+ "resolutions": {
15
+ "@supabase/auth-js": "2.61.0"
16
+ },
17
+ "sideEffects": false,
18
+ "module": "fesm2022/outbuild-supa-store.mjs",
19
+ "typings": "index.d.ts",
20
+ "exports": {
21
+ "./package.json": {
22
+ "default": "./package.json"
23
+ },
24
+ ".": {
25
+ "types": "./index.d.ts",
26
+ "esm2022": "./esm2022/outbuild-supa-store.mjs",
27
+ "esm": "./esm2022/outbuild-supa-store.mjs",
28
+ "default": "./fesm2022/outbuild-supa-store.mjs"
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,2 @@
1
+ export * from './lib/supa-store.store';
2
+ export * from './lib/supa-store.provider';
package/ng-package.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
- "dest": "../../dist/ob-supa-store",
4
- "lib": {
5
- "entryFile": "src/public-api.ts"
6
- }
7
- }
@@ -1,6 +0,0 @@
1
- import { InjectionToken } from "@angular/core"
2
-
3
- export const SUPABASE_CREDENTIALS = new InjectionToken<{
4
- supabaseUrl: string,
5
- supabaseKey: string
6
- }>('SUPABASE_CREDENTIALS')
@@ -1,12 +0,0 @@
1
- import { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule } from "@angular/core"
2
- import { SupaStore } from "./supa-store.store"
3
- import { SUPABASE_CREDENTIALS } from "./common/token/supabase-credentials.token"
4
-
5
- export const provideSupaStore = (supabaseUrl: string, supabaseKey: string): EnvironmentProviders => makeEnvironmentProviders([
6
- {
7
- provide: SUPABASE_CREDENTIALS,
8
- useValue: { supabaseUrl, supabaseKey }
9
- },
10
- SupaStore
11
- ])
12
-
@@ -1,51 +0,0 @@
1
- import { inject, InjectionToken } from '@angular/core';
2
- import { patchState, signalStore, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals';
3
- import { AuthChangeEvent, Session, SupabaseClient, createClient } from '@supabase/supabase-js'
4
- import { SUPABASE_CREDENTIALS } from './common/token/supabase-credentials.token'
5
-
6
- export type SupaStoreState = {
7
- client: SupabaseClient
8
- session: Session | undefined | null
9
- authState: AuthChangeEvent | null
10
- }
11
-
12
- const INITIAL_STATE = new InjectionToken<SupaStoreState>('SupaStoreState', {
13
- factory: () => {
14
- const { supabaseUrl, supabaseKey } = inject(SUPABASE_CREDENTIALS)
15
- return {
16
- client: createClient(supabaseUrl, supabaseKey),
17
- session: undefined,
18
- authState: null
19
- }
20
- },
21
- });
22
-
23
- function withSupaStore() {
24
-
25
- return signalStoreFeature(
26
-
27
- withState<SupaStoreState>(() => inject(INITIAL_STATE)),
28
-
29
- withMethods(( store ) => ({
30
- initSession: async () => {
31
- console.log('initSession')
32
- console.log('store.client()', store.client())
33
- const { data: { session }} = await store.client().auth.getSession()
34
- console.log('session', session)
35
- patchState(store, { session: session as Session })
36
- }
37
- })),
38
-
39
- withHooks({
40
- onInit(store) {
41
- store.initSession()
42
- store.client().auth.onAuthStateChange(res => patchState(store, { authState: res }))
43
- }
44
- })
45
-
46
- )
47
- }
48
-
49
- export const SupaStore = signalStore(
50
- withSupaStore()
51
- )
package/src/public-api.ts DELETED
@@ -1,6 +0,0 @@
1
- /*
2
- * Public API Surface of ob-supa-store
3
- */
4
-
5
- export * from './lib/supa-store.store'
6
- export * from './lib/supa-store.provider'
package/tsconfig.lib.json DELETED
@@ -1,15 +0,0 @@
1
- /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2
- /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3
- {
4
- "extends": "../../tsconfig.json",
5
- "compilerOptions": {
6
- "outDir": "../../out-tsc/lib",
7
- "declaration": true,
8
- "declarationMap": true,
9
- "inlineSources": true,
10
- "types": []
11
- },
12
- "exclude": [
13
- "**/*.spec.ts"
14
- ]
15
- }
@@ -1,11 +0,0 @@
1
- /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2
- /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3
- {
4
- "extends": "./tsconfig.lib.json",
5
- "compilerOptions": {
6
- "declarationMap": false
7
- },
8
- "angularCompilerOptions": {
9
- "compilationMode": "partial"
10
- }
11
- }
@@ -1,15 +0,0 @@
1
- /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2
- /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3
- {
4
- "extends": "../../tsconfig.json",
5
- "compilerOptions": {
6
- "outDir": "../../out-tsc/spec",
7
- "types": [
8
- "jasmine"
9
- ]
10
- },
11
- "include": [
12
- "**/*.spec.ts",
13
- "**/*.d.ts"
14
- ]
15
- }