@outbuild/supa-store 0.0.8 → 0.0.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.
@@ -0,0 +1,18 @@
1
+ import { inject, InjectionToken } from "@angular/core";
2
+ import { SUPA_STORE_OPTIONS } from "./supabase-credentials.token";
3
+ import { createClient } from "@supabase/supabase-js";
4
+ export const INITIAL_STATE = new InjectionToken('SupaStoreState', {
5
+ factory: () => {
6
+ const { supabaseUrl, supabaseKey } = inject(SUPA_STORE_OPTIONS);
7
+ return {
8
+ client: createClient(supabaseUrl, supabaseKey),
9
+ auth: {
10
+ session: undefined,
11
+ user: undefined,
12
+ userMetadata: undefined,
13
+ state: { prev: null, curr: null }
14
+ }
15
+ };
16
+ },
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1zdGF0ZS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9jb21tb24vdG9rZW4vaW5pdGlhbC1zdGF0ZS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFHcEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFpQixnQkFBZ0IsRUFBRTtJQUNoRixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1osTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUMvRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO1lBQzlDLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsU0FBUztnQkFDbEIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTthQUNsQztTQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHsgU1VQQV9TVE9SRV9PUFRJT05TIH0gZnJvbSBcIi4vc3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW5cIlxyXG5pbXBvcnQgeyBjcmVhdGVDbGllbnQgfSBmcm9tIFwiQHN1cGFiYXNlL3N1cGFiYXNlLWpzXCJcclxuaW1wb3J0IHsgU3VwYVN0b3JlU3RhdGUgfSBmcm9tIFwiLi4vdHlwZS9zdXBhLXN0b3JlLnR5cGVzXCJcclxuXHJcbmV4cG9ydCBjb25zdCBJTklUSUFMX1NUQVRFID0gbmV3IEluamVjdGlvblRva2VuPFN1cGFTdG9yZVN0YXRlPignU3VwYVN0b3JlU3RhdGUnLCB7XHJcbiAgZmFjdG9yeTogKCkgPT4ge1xyXG4gICAgY29uc3QgeyBzdXBhYmFzZVVybCwgc3VwYWJhc2VLZXkgfSA9IGluamVjdChTVVBBX1NUT1JFX09QVElPTlMpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjbGllbnQ6IGNyZWF0ZUNsaWVudChzdXBhYmFzZVVybCwgc3VwYWJhc2VLZXkpLFxyXG4gICAgICBhdXRoOiB7XHJcbiAgICAgICAgc2Vzc2lvbjogdW5kZWZpbmVkLFxyXG4gICAgICAgIHVzZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICB1c2VyTWV0YWRhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBzdGF0ZTogeyBwcmV2OiBudWxsLCBjdXJyOiBudWxsIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbn0pXHJcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from "@angular/core";
2
- export const SUPABASE_CREDENTIALS = new InjectionToken('SUPABASE_CREDENTIALS');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYi1zdXBhLXN0b3JlL3NyYy9saWIvY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBR25ELHNCQUFzQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuXHJcbmV4cG9ydCBjb25zdCBTVVBBQkFTRV9DUkVERU5USUFMUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjx7XHJcbiAgc3VwYWJhc2VVcmw6IHN0cmluZyxcclxuICBzdXBhYmFzZUtleTogc3RyaW5nXHJcbn0+KCdTVVBBQkFTRV9DUkVERU5USUFMUycpXHJcbiJdfQ==
2
+ export const SUPA_STORE_OPTIONS = new InjectionToken('SUPA_STORE_OPTIONS');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYi1zdXBhLXN0b3JlL3NyYy9saWIvY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHOUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWlCLG9CQUFvQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHsgU3VwYVN0b3JlSW5wdXQgfSBmcm9tIFwiLi4vdHlwZS9zdXBhLXN0b3JlLnR5cGVzXCJcclxuXHJcbmV4cG9ydCBjb25zdCBTVVBBX1NUT1JFX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3VwYVN0b3JlSW5wdXQ+KCdTVVBBX1NUT1JFX09QVElPTlMnKVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS1zdGF0ZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2Itc3VwYS1zdG9yZS9zcmMvbGliL2NvbW1vbi90eXBlL3N1cGEtc3RvcmUtc3RhdGUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aENoYW5nZUV2ZW50LCBTZXNzaW9uLCBTdXBhYmFzZUNsaWVudCwgVXNlciB9IGZyb20gXCJAc3VwYWJhc2Uvc3VwYWJhc2UtanNcIlxyXG5cclxuZXhwb3J0IHR5cGUgU3VwYVN0b3JlU3RhdGUgPSB7XHJcbiAgY2xpZW50OiBTdXBhYmFzZUNsaWVudFxyXG4gIGF1dGg6IHtcclxuICAgIHNlc3Npb246IFNlc3Npb24gfCB1bmRlZmluZWQgfCBudWxsXHJcbiAgICB1c2VyOiBVc2VyIHwgdW5kZWZpbmVkIHwgbnVsbFxyXG4gICAgc3RhdGU6IHtcclxuICAgICAgcHJldjogQXV0aENoYW5nZUV2ZW50IHwgbnVsbCxcclxuICAgICAgY3VycjogQXV0aENoYW5nZUV2ZW50IHwgbnVsbCxcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9jb21tb24vdHlwZS9zdXBhLXN0b3JlLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoQ2hhbmdlRXZlbnQsIFNlc3Npb24sIFN1cGFiYXNlQ2xpZW50LCBVc2VyIH0gZnJvbSBcIkBzdXBhYmFzZS9zdXBhYmFzZS1qc1wiXHJcblxyXG5leHBvcnQgdHlwZSBTdXBhU3RvcmVTdGF0ZSA9IHtcclxuICBjbGllbnQ6IFN1cGFiYXNlQ2xpZW50XHJcbiAgYXV0aDoge1xyXG4gICAgc2Vzc2lvbjogU2Vzc2lvbiB8IHVuZGVmaW5lZCB8IG51bGxcclxuICAgIHVzZXI6IFVzZXIgfCB1bmRlZmluZWQgfCBudWxsXHJcbiAgICB1c2VyTWV0YWRhdGE6IHVua25vd24gfCB1bmRlZmluZWQgfCBudWxsXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICBwcmV2OiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gICAgICBjdXJyOiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU3VwYVN0b3JlSW5wdXQgPSB7XHJcbiAgc3VwYWJhc2VVcmw6IHN0cmluZyxcclxuICBzdXBhYmFzZUtleTogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFN1cGFTdG9yZU9wdGlvbnNcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU3VwYVN0b3JlT3B0aW9ucyA9IHtcclxuICB1c2VyTWV0YWRhdGE6IHtcclxuICAgIGxvYWQ/OiBib29sZWFuLFxyXG4gICAgdGFibGU/OiBzdHJpbmcsXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,11 +1,17 @@
1
1
  import { makeEnvironmentProviders } from "@angular/core";
2
2
  import { SupaStore } from "./supa-store.store";
3
- import { SUPABASE_CREDENTIALS } from "./common/token/supabase-credentials.token";
4
- export const provideSupaStore = (supabaseUrl, supabaseKey) => makeEnvironmentProviders([
3
+ import { SUPA_STORE_OPTIONS } from "./common/token/supabase-credentials.token";
4
+ const defaultOptions = {
5
+ userMetadata: {
6
+ load: false,
7
+ table: 'users',
8
+ }
9
+ };
10
+ export const provideSupaStore = (supabaseUrl, supabaseKey, options = defaultOptions) => makeEnvironmentProviders([
5
11
  {
6
- provide: SUPABASE_CREDENTIALS,
7
- useValue: { supabaseUrl, supabaseKey }
12
+ provide: SUPA_STORE_OPTIONS,
13
+ useValue: { supabaseUrl, supabaseKey, options }
8
14
  },
9
15
  SupaStore
10
16
  ]);
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsV0FBbUIsRUFBRSxXQUFtQixFQUF3QixFQUFFLENBQUMsd0JBQXdCLENBQUM7SUFDM0g7UUFDRSxPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7S0FDdkM7SUFDRCxTQUFTO0NBQ1YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHsgU3VwYVN0b3JlIH0gZnJvbSBcIi4vc3VwYS1zdG9yZS5zdG9yZVwiXHJcbmltcG9ydCB7IFNVUEFCQVNFX0NSRURFTlRJQUxTIH0gZnJvbSBcIi4vY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuXCJcclxuXHJcbmV4cG9ydCBjb25zdCBwcm92aWRlU3VwYVN0b3JlID0gKHN1cGFiYXNlVXJsOiBzdHJpbmcsIHN1cGFiYXNlS2V5OiBzdHJpbmcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyA9PiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xyXG4gIHtcclxuICAgIHByb3ZpZGU6IFNVUEFCQVNFX0NSRURFTlRJQUxTLFxyXG4gICAgdXNlVmFsdWU6IHsgc3VwYWJhc2VVcmwsIHN1cGFiYXNlS2V5IH1cclxuICB9LFxyXG4gIFN1cGFTdG9yZVxyXG5dKVxyXG5cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBRzlFLE1BQU0sY0FBYyxHQUFxQjtJQUN2QyxZQUFZLEVBQUU7UUFDWixJQUFJLEVBQUUsS0FBSztRQUNYLEtBQUssRUFBRSxPQUFPO0tBQ2Y7Q0FDRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsVUFBNEIsY0FBYyxFQUF3QixFQUFFLENBQUMsd0JBQXdCLENBQUM7SUFDdks7UUFDRSxPQUFPLEVBQUUsa0JBQWtCO1FBQzNCLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFO0tBQ2hEO0lBQ0QsU0FBUztDQUNWLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7IFN1cGFTdG9yZSB9IGZyb20gXCIuL3N1cGEtc3RvcmUuc3RvcmVcIlxyXG5pbXBvcnQgeyBTVVBBX1NUT1JFX09QVElPTlMgfSBmcm9tIFwiLi9jb21tb24vdG9rZW4vc3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW5cIlxyXG5pbXBvcnQgeyBTdXBhU3RvcmVPcHRpb25zIH0gZnJvbSBcIi4vY29tbW9uL3R5cGUvc3VwYS1zdG9yZS50eXBlc1wiXHJcblxyXG5jb25zdCBkZWZhdWx0T3B0aW9uczogU3VwYVN0b3JlT3B0aW9ucyA9IHtcclxuICB1c2VyTWV0YWRhdGE6IHtcclxuICAgIGxvYWQ6IGZhbHNlLFxyXG4gICAgdGFibGU6ICd1c2VycycsXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcHJvdmlkZVN1cGFTdG9yZSA9IChzdXBhYmFzZVVybDogc3RyaW5nLCBzdXBhYmFzZUtleTogc3RyaW5nLCBvcHRpb25zOiBTdXBhU3RvcmVPcHRpb25zID0gZGVmYXVsdE9wdGlvbnMpOiBFbnZpcm9ubWVudFByb3ZpZGVycyA9PiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xyXG4gIHtcclxuICAgIHByb3ZpZGU6IFNVUEFfU1RPUkVfT1BUSU9OUyxcclxuICAgIHVzZVZhbHVlOiB7IHN1cGFiYXNlVXJsLCBzdXBhYmFzZUtleSwgb3B0aW9ucyB9XHJcbiAgfSxcclxuICBTdXBhU3RvcmVcclxuXSlcclxuXHJcbiJdfQ==
@@ -1,27 +1,36 @@
1
- import { inject, InjectionToken } from '@angular/core';
1
+ import { inject } from '@angular/core';
2
+ import { withDevtools } from '@angular-architects/ngrx-toolkit';
3
+ import { INITIAL_STATE } from './common/token/initial-state.token';
2
4
  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) => ({
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, options = inject(SUPA_STORE_OPTIONS).options) => ({
16
9
  initSession: async () => {
17
10
  const { data: { session } } = await store.client().auth.getSession();
18
- patchState(store, { session: session });
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
+ setMetadata: async (id) => {
18
+ const { data: userMetadata } = await store.client().from(options?.userMetadata?.table).select('*').eq('id', id).single();
19
+ patchState(store, { auth: { ...store.auth(), userMetadata } });
19
20
  }
20
21
  })), withHooks({
21
- onInit(store) {
22
+ async onInit(store, options = inject(SUPA_STORE_OPTIONS).options) {
22
23
  store.initSession();
23
- store.client().auth.onAuthStateChange(state => patchState(store, { authState: { old: store.authState().new, new: state } }));
24
+ store.initUser();
25
+ store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } } }));
26
+ if (options?.userMetadata?.load) {
27
+ const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)));
28
+ session?.user ? store.setMetadata(session?.user?.id) : patchState(store, { auth: { ...store.auth(), userMetadata: null } });
29
+ }
30
+ else {
31
+ patchState(store, { auth: { ...store.auth(), userMetadata: null } });
32
+ }
24
33
  }
25
34
  }));
26
35
  export const SupaStore = signalStore(withSupaStore());
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBNEMsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDOUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFXaEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixFQUFFO0lBQ3pFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ2pFLE9BQU87WUFDTCxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7WUFDOUMsT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1NBQ3BDLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQU0sRUFBRSxDQUFDLGtCQUFrQixDQUV0RCxTQUFTLENBQWtCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUV2RCxXQUFXLENBQUMsQ0FBRSxLQUFLLEVBQUcsRUFBRSxDQUFDLENBQUM7SUFFeEIsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNuRSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQWtCLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7Q0FFRixDQUFDLENBQUMsRUFFSCxTQUFTLENBQUM7SUFDUixNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUM3SCxDQUFDO0NBQ0YsQ0FBQyxDQUVILENBQUE7QUFHRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUNsQyxhQUFhLEVBQUUsQ0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlRmVhdHVyZSwgd2l0aEhvb2tzLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XHJcbmltcG9ydCB7IEF1dGhDaGFuZ2VFdmVudCwgU2Vzc2lvbiwgU3VwYWJhc2VDbGllbnQsIGNyZWF0ZUNsaWVudCB9IGZyb20gJ0BzdXBhYmFzZS9zdXBhYmFzZS1qcydcclxuaW1wb3J0IHsgU1VQQUJBU0VfQ1JFREVOVElBTFMgfSBmcm9tICcuL2NvbW1vbi90b2tlbi9zdXBhYmFzZS1jcmVkZW50aWFscy50b2tlbidcclxuXHJcbmV4cG9ydCB0eXBlIFN1cGFTdG9yZVN0YXRlID0ge1xyXG4gIGNsaWVudDogU3VwYWJhc2VDbGllbnRcclxuICBzZXNzaW9uOiBTZXNzaW9uIHwgdW5kZWZpbmVkIHwgbnVsbFxyXG4gIGF1dGhTdGF0ZToge1xyXG4gICAgb2xkOiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gICAgbmV3OiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgSU5JVElBTF9TVEFURSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdXBhU3RvcmVTdGF0ZT4oJ1N1cGFTdG9yZVN0YXRlJywge1xyXG4gIGZhY3Rvcnk6ICgpID0+IHtcclxuICAgIGNvbnN0IHsgc3VwYWJhc2VVcmwsIHN1cGFiYXNlS2V5IH0gPSBpbmplY3QoU1VQQUJBU0VfQ1JFREVOVElBTFMpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjbGllbnQ6IGNyZWF0ZUNsaWVudChzdXBhYmFzZVVybCwgc3VwYWJhc2VLZXkpLFxyXG4gICAgICBzZXNzaW9uOiB1bmRlZmluZWQsXHJcbiAgICAgIGF1dGhTdGF0ZTogeyBvbGQ6IG51bGwsIG5ldzogbnVsbCB9LFxyXG4gICAgfVxyXG4gIH0sXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHdpdGhTdXBhU3RvcmUgPSA8VD4oKSA9PiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcblxyXG4gIHdpdGhTdGF0ZTwgU3VwYVN0b3JlU3RhdGU+KCgpID0+IGluamVjdChJTklUSUFMX1NUQVRFKSksXHJcblxyXG4gIHdpdGhNZXRob2RzKCggc3RvcmUgKSA9PiAoe1xyXG5cclxuICAgIGluaXRTZXNzaW9uOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YTogeyBzZXNzaW9uIH19ID0gYXdhaXQgc3RvcmUuY2xpZW50KCkuYXV0aC5nZXRTZXNzaW9uKClcclxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBzZXNzaW9uOiBzZXNzaW9uIGFzIFNlc3Npb24gfSlcclxuICAgIH1cclxuXHJcbiAgfSkpLFxyXG5cclxuICB3aXRoSG9va3Moe1xyXG4gICAgb25Jbml0KHN0b3JlKSB7XHJcbiAgICAgIHN0b3JlLmluaXRTZXNzaW9uKClcclxuICAgICAgc3RvcmUuY2xpZW50KCkuYXV0aC5vbkF1dGhTdGF0ZUNoYW5nZShzdGF0ZSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGhTdGF0ZTogeyBvbGQ6IHN0b3JlLmF1dGhTdGF0ZSgpLm5ldywgbmV3OiBzdGF0ZSB9fSkpXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbilcclxuXHJcblxyXG5leHBvcnQgY29uc3QgU3VwYVN0b3JlID0gc2lnbmFsU3RvcmUoXHJcbiAgd2l0aFN1cGFTdG9yZSgpXHJcbilcclxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFekQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUVuRCxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQ3pCLFNBQVMsQ0FBaUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBRXRELFdBQVcsQ0FBQyxDQUFFLEtBQUssRUFBRSxPQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXJFLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUMsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDbkUsVUFBVSxDQUFDLEtB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bmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB3aXRoRGV2dG9vbHMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL25ncngtdG9vbGtpdCdcclxuaW1wb3J0IHsgSU5JVElBTF9TVEFURSB9IGZyb20gJy4vY29tbW9uL3Rva2VuL2luaXRpYWwtc3RhdGUudG9rZW4nXHJcbmltcG9ydCB7IFN1cGFTdG9yZVN0YXRlIH0gZnJvbSAnLi9jb21tb24vdHlwZS9zdXBhLXN0b3JlLnR5cGVzJ1xyXG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgc2lnbmFsU3RvcmVGZWF0dXJlLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJ1xyXG5pbXBvcnQgeyBTVVBBX1NUT1JFX09QVElPTlMgfSBmcm9tICcuL2NvbW1vbi90b2tlbi9zdXBhYmFzZS1jcmVkZW50aWFscy50b2tlbidcclxuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiXHJcblxyXG5leHBvcnQgY29uc3Qgd2l0aFN1cGFTdG9yZSA9ICgpID0+IHNpZ25hbFN0b3JlRmVhdHVyZShcclxuXHJcbiAgd2l0aERldnRvb2xzKCdzdXBhU3RvcmUnKSxcclxuICB3aXRoU3RhdGU8U3VwYVN0b3JlU3RhdGU+KCgpID0+IGluamVjdChJTklUSUFMX1NUQVRFKSksXHJcblxyXG4gIHdpdGhNZXRob2RzKCggc3RvcmUsIG9wdGlvbnMgPSBpbmplY3QoU1VQQV9TVE9SRV9PUFRJT05TKS5vcHRpb25zKSA9PiAoe1xyXG5cclxuICAgIGluaXRTZXNzaW9uOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YTogeyBzZXNzaW9uIH19ID0gYXdhaXQgc3RvcmUuY2xpZW50KCkuYXV0aC5nZXRTZXNzaW9uKClcclxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgc2Vzc2lvbiB9fSlcclxuICAgIH0sXHJcblxyXG4gICAgaW5pdFVzZXI6IGFzeW5jICgpID0+IHtcclxuICAgICAgY29uc3QgeyBkYXRhOiB7IHVzZXIgfX0gPSBhd2FpdCBzdG9yZS5jbGllbnQoKS5hdXRoLmdldFVzZXIoKVxyXG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGg6IHsgLi4uc3RvcmUuYXV0aCgpLCB1c2VyIH19KVxyXG4gICAgfSxcclxuXHJcbiAgICBzZXRNZXRhZGF0YTogYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgeyBkYXRhOiB1c2VyTWV0YWRhdGEgfSA9IGF3YWl0IHN0b3JlLmNsaWVudCgpLmZyb20ob3B0aW9ucz8udXNlck1ldGFkYXRhPy50YWJsZSBhcyBzdHJpbmcpLnNlbGVjdCgnKicpLmVxKCdpZCcsIGlkKS5zaW5nbGUoKVxyXG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCAgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgdXNlck1ldGFkYXRhIH19KVxyXG4gICAgfVxyXG5cclxuICB9KSksXHJcblxyXG4gIHdpdGhIb29rcyh7XHJcbiAgICBhc3luYyBvbkluaXQoc3RvcmUsIG9wdGlvbnMgPSBpbmplY3QoU1VQQV9TVE9SRV9PUFRJT05TKS5vcHRpb25zKSB7XHJcblxyXG4gICAgICBzdG9yZS5pbml0U2Vzc2lvbigpXHJcbiAgICAgIHN0b3JlLmluaXRVc2VyKClcclxuICAgICAgc3RvcmUuY2xpZW50KCkuYXV0aC5vbkF1dGhTdGF0ZUNoYW5nZShzdGF0ZSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGg6IHsgLi4uc3RvcmUuYXV0aCgpLCBzdGF0ZTogeyBwcmV2OiBzdG9yZS5hdXRoLnN0YXRlLmN1cnIoKSwgY3Vycjogc3RhdGUgfSB9fSkpXHJcblxyXG4gICAgICBpZiAob3B0aW9ucz8udXNlck1ldGFkYXRhPy5sb2FkKSB7XHJcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRvT2JzZXJ2YWJsZShzdG9yZS5hdXRoLnNlc3Npb24pLnBpcGUoZmlsdGVyKHJlcyA9PiByZXMgIT09IHVuZGVmaW5lZCkpKVxyXG4gICAgICAgIHNlc3Npb24/LnVzZXIgPyBzdG9yZS5zZXRNZXRhZGF0YShzZXNzaW9uPy51c2VyPy5pZCkgOiBwYXRjaFN0YXRlKHN0b3JlLCAgeyBhdXRoOiB7IC4uLnN0b3JlLmF1dGgoKSwgdXNlck1ldGFkYXRhOiBudWxsfX0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgIHsgYXV0aDogeyAuLi5zdG9yZS5hdXRoKCksIHVzZXJNZXRhZGF0YTogbnVsbH19KVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4pXHJcblxyXG5leHBvcnQgY29uc3QgU3VwYVN0b3JlID0gc2lnbmFsU3RvcmUoXHJcbiAgd2l0aFN1cGFTdG9yZSgpXHJcbilcclxuIl19
@@ -1,36 +1,66 @@
1
1
  import { InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';
2
- import { signalStoreFeature, withState, withMethods, patchState, withHooks, signalStore } from '@ngrx/signals';
2
+ import { withDevtools } from '@angular-architects/ngrx-toolkit';
3
3
  import { createClient } from '@supabase/supabase-js';
4
+ import { signalStoreFeature, withState, withMethods, patchState, withHooks, signalStore } from '@ngrx/signals';
5
+ import { firstValueFrom, filter } from 'rxjs';
6
+ import { toObservable } from '@angular/core/rxjs-interop';
4
7
 
5
- const SUPABASE_CREDENTIALS = new InjectionToken('SUPABASE_CREDENTIALS');
8
+ const SUPA_STORE_OPTIONS = new InjectionToken('SUPA_STORE_OPTIONS');
6
9
 
7
10
  const INITIAL_STATE = new InjectionToken('SupaStoreState', {
8
11
  factory: () => {
9
- const { supabaseUrl, supabaseKey } = inject(SUPABASE_CREDENTIALS);
12
+ const { supabaseUrl, supabaseKey } = inject(SUPA_STORE_OPTIONS);
10
13
  return {
11
14
  client: createClient(supabaseUrl, supabaseKey),
12
- session: undefined,
13
- authState: { old: null, new: null },
15
+ auth: {
16
+ session: undefined,
17
+ user: undefined,
18
+ userMetadata: undefined,
19
+ state: { prev: null, curr: null }
20
+ }
14
21
  };
15
22
  },
16
23
  });
17
- const withSupaStore = () => signalStoreFeature(withState(() => inject(INITIAL_STATE)), withMethods((store) => ({
24
+
25
+ const withSupaStore = () => signalStoreFeature(withDevtools('supaStore'), withState(() => inject(INITIAL_STATE)), withMethods((store, options = inject(SUPA_STORE_OPTIONS).options) => ({
18
26
  initSession: async () => {
19
27
  const { data: { session } } = await store.client().auth.getSession();
20
- patchState(store, { session: session });
28
+ patchState(store, { auth: { ...store.auth(), session } });
29
+ },
30
+ initUser: async () => {
31
+ const { data: { user } } = await store.client().auth.getUser();
32
+ patchState(store, { auth: { ...store.auth(), user } });
33
+ },
34
+ setMetadata: async (id) => {
35
+ const { data: userMetadata } = await store.client().from(options?.userMetadata?.table).select('*').eq('id', id).single();
36
+ patchState(store, { auth: { ...store.auth(), userMetadata } });
21
37
  }
22
38
  })), withHooks({
23
- onInit(store) {
39
+ async onInit(store, options = inject(SUPA_STORE_OPTIONS).options) {
24
40
  store.initSession();
25
- store.client().auth.onAuthStateChange(state => patchState(store, { authState: { old: store.authState().new, new: state } }));
41
+ store.initUser();
42
+ store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } } }));
43
+ if (options?.userMetadata?.load) {
44
+ const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)));
45
+ session?.user ? store.setMetadata(session?.user?.id) : patchState(store, { auth: { ...store.auth(), userMetadata: null } });
46
+ }
47
+ else {
48
+ patchState(store, { auth: { ...store.auth(), userMetadata: null } });
49
+ }
26
50
  }
27
51
  }));
28
52
  const SupaStore = signalStore(withSupaStore());
29
53
 
30
- const provideSupaStore = (supabaseUrl, supabaseKey) => makeEnvironmentProviders([
54
+ const defaultOptions = {
55
+ userMetadata: {
56
+ load: false,
57
+ table: 'users',
58
+ }
59
+ };
60
+ const provideSupaStore = (supabaseUrl, supabaseKey, options = defaultOptions) => makeEnvironmentProviders([
31
61
  {
32
- provide: SUPABASE_CREDENTIALS,
33
- useValue: { supabaseUrl, supabaseKey }
62
+ provide: SUPA_STORE_OPTIONS,
63
+ useValue: { supabaseUrl, supabaseKey, options }
34
64
  },
35
65
  SupaStore
36
66
  ]);
@@ -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/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;;;;"}
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 { SupaStoreInput } from \"../type/supa-store.types\"\r\n\r\nexport const SUPA_STORE_OPTIONS = new InjectionToken<SupaStoreInput>('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 const { supabaseUrl, supabaseKey } = inject(SUPA_STORE_OPTIONS)\r\n return {\r\n client: createClient(supabaseUrl, supabaseKey),\r\n auth: {\r\n session: undefined,\r\n user: undefined,\r\n userMetadata: undefined,\r\n state: { prev: null, curr: null }\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 './common/token/initial-state.token'\r\nimport { SupaStoreState } from './common/type/supa-store.types'\r\nimport { patchState, signalStore, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals'\r\nimport { SUPA_STORE_OPTIONS } from './common/token/supabase-credentials.token'\r\nimport { filter, firstValueFrom } from 'rxjs'\r\nimport { toObservable } from \"@angular/core/rxjs-interop\"\r\n\r\nexport const withSupaStore = () => signalStoreFeature(\r\n\r\n withDevtools('supaStore'),\r\n withState<SupaStoreState>(() => inject(INITIAL_STATE)),\r\n\r\n withMethods(( store, options = inject(SUPA_STORE_OPTIONS).options) => ({\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 setMetadata: async (id: string) => {\r\n const { data: userMetadata } = await store.client().from(options?.userMetadata?.table as string).select('*').eq('id', id).single()\r\n patchState(store, { auth: { ...store.auth(), userMetadata }})\r\n }\r\n\r\n })),\r\n\r\n withHooks({\r\n async onInit(store, options = inject(SUPA_STORE_OPTIONS).options) {\r\n\r\n store.initSession()\r\n store.initUser()\r\n store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } }}))\r\n\r\n if (options?.userMetadata?.load) {\r\n const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)))\r\n session?.user ? store.setMetadata(session?.user?.id) : patchState(store, { auth: { ...store.auth(), userMetadata: null}})\r\n } else {\r\n patchState(store, { auth: { ...store.auth(), userMetadata: null}})\r\n }\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 { SUPA_STORE_OPTIONS } from \"./common/token/supabase-credentials.token\"\r\nimport { SupaStoreOptions } from \"./common/type/supa-store.types\"\r\n\r\nconst defaultOptions: SupaStoreOptions = {\r\n userMetadata: {\r\n load: false,\r\n table: 'users',\r\n }\r\n}\r\n\r\nexport const provideSupaStore = (supabaseUrl: string, supabaseKey: string, options: SupaStoreOptions = defaultOptions): EnvironmentProviders => makeEnvironmentProviders([\r\n {\r\n provide: SUPA_STORE_OPTIONS,\r\n useValue: { supabaseUrl, supabaseKey, 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\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ import { SupaStoreState } from "../type/supa-store.types";
3
+ export declare const INITIAL_STATE: InjectionToken<SupaStoreState>;
@@ -1,5 +1,3 @@
1
1
  import { InjectionToken } from "@angular/core";
2
- export declare const SUPABASE_CREDENTIALS: InjectionToken<{
3
- supabaseUrl: string;
4
- supabaseKey: string;
5
- }>;
2
+ import { SupaStoreInput } from "../type/supa-store.types";
3
+ export declare const SUPA_STORE_OPTIONS: InjectionToken<SupaStoreInput>;
@@ -0,0 +1,12 @@
1
+ import { AuthChangeEvent, Session, SupabaseClient, User } from "@supabase/supabase-js";
2
+ export type SupaStoreState = {
3
+ client: SupabaseClient;
4
+ auth: {
5
+ session: Session | undefined | null;
6
+ user: User | undefined | null;
7
+ state: {
8
+ prev: AuthChangeEvent | null;
9
+ curr: AuthChangeEvent | null;
10
+ };
11
+ };
12
+ };
@@ -0,0 +1,24 @@
1
+ import { AuthChangeEvent, Session, SupabaseClient, User } from "@supabase/supabase-js";
2
+ export type SupaStoreState = {
3
+ client: SupabaseClient;
4
+ auth: {
5
+ session: Session | undefined | null;
6
+ user: User | undefined | null;
7
+ userMetadata: unknown | undefined | null;
8
+ state: {
9
+ prev: AuthChangeEvent | null;
10
+ curr: AuthChangeEvent | null;
11
+ };
12
+ };
13
+ };
14
+ export type SupaStoreInput = {
15
+ supabaseUrl: string;
16
+ supabaseKey: string;
17
+ options: SupaStoreOptions;
18
+ };
19
+ export type SupaStoreOptions = {
20
+ userMetadata: {
21
+ load?: boolean;
22
+ table?: string;
23
+ };
24
+ };
@@ -1,2 +1,3 @@
1
1
  import { EnvironmentProviders } from "@angular/core";
2
- export declare const provideSupaStore: (supabaseUrl: string, supabaseKey: string) => EnvironmentProviders;
2
+ import { SupaStoreOptions } from "./common/type/supa-store.types";
3
+ export declare const provideSupaStore: (supabaseUrl: string, supabaseKey: string, options?: SupaStoreOptions) => EnvironmentProviders;
@@ -1,39 +1,46 @@
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, {
1
+ export declare const withSupaStore: () => import("@ngrx/signals").SignalStoreFeature<import("@ngrx/signals").EmptyFeatureResult, {
11
2
  state: {
12
- client: SupabaseClient;
13
- session: Session | undefined | null;
14
- authState: {
15
- old: AuthChangeEvent | null;
16
- new: AuthChangeEvent | null;
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
+ userMetadata: unknown | undefined | null;
8
+ state: {
9
+ prev: import("@supabase/auth-js").AuthChangeEvent | null;
10
+ curr: import("@supabase/auth-js").AuthChangeEvent | null;
11
+ };
17
12
  };
18
13
  };
19
14
  computed: {};
20
15
  methods: {
21
16
  initSession: () => Promise<void>;
17
+ initUser: () => Promise<void>;
18
+ setMetadata: (id: string) => Promise<void>;
22
19
  };
23
20
  }>;
24
21
  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;
22
+ client: import("@ngrx/signals").DeepSignal<import("@supabase/supabase-js").SupabaseClient<any, "public", any>>;
23
+ auth: import("@ngrx/signals").DeepSignal<{
24
+ session: import("@supabase/auth-js").Session | undefined | null;
25
+ user: import("@supabase/auth-js").User | undefined | null;
26
+ userMetadata: unknown | undefined | null;
27
+ state: {
28
+ prev: import("@supabase/auth-js").AuthChangeEvent | null;
29
+ curr: import("@supabase/auth-js").AuthChangeEvent | null;
30
+ };
30
31
  }>;
31
32
  initSession: () => Promise<void>;
33
+ initUser: () => Promise<void>;
34
+ setMetadata: (id: string) => Promise<void>;
32
35
  } & import("@ngrx/signals").StateSource<{
33
- client: SupabaseClient;
34
- session: Session | undefined | null;
35
- authState: {
36
- old: AuthChangeEvent | null;
37
- new: AuthChangeEvent | null;
36
+ client: import("@supabase/supabase-js").SupabaseClient;
37
+ auth: {
38
+ session: import("@supabase/auth-js").Session | undefined | null;
39
+ user: import("@supabase/auth-js").User | undefined | null;
40
+ userMetadata: unknown | undefined | null;
41
+ state: {
42
+ prev: import("@supabase/auth-js").AuthChangeEvent | null;
43
+ curr: import("@supabase/auth-js").AuthChangeEvent | null;
44
+ };
38
45
  };
39
46
  }>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outbuild/supa-store",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",