@outbuild/supa-store 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,26 +42,35 @@ provideSupaStore({
42
42
  ## Accessing the store
43
43
 
44
44
  ```typescript
45
- import { injectSupaAuth, injectSupaClient } from '@outbuild/supa-store'
45
+ import { SupaStore, injectSupaAuth, injectSupaClient } from '@outbuild/supa-store'
46
46
 
47
+ store = inject(SupaStore)
47
48
  auth = injectSupaAuth()
48
49
  client = injectSupaClient()
50
+
49
51
  ```
50
52
 
53
+ ## Observables
54
+
55
+ Observables will return either null or the value, if the value is null, it means the user is not authenticated.
56
+
57
+
51
58
  ## Store type
52
59
 
53
60
  ```typescript
54
61
  type SupaStoreState = {
55
- client: SupabaseClient // Supabase Client
62
+ client: SupabaseClient
56
63
  auth: {
57
- session: Session | undefined | null // Supabase Session
58
- user: User | undefined | null // Supabase User
59
- metadata: unknown | undefined | null // Your metadata if provided
60
- state: {
61
- prev: AuthChangeEvent | null, // Supabase Auth Change Event
62
- curr: AuthChangeEvent | null, // Supabase Auth Change Event
64
+ session: undefined | null | Session
65
+ user: undefined | null | User
66
+ metadata: undefined | null | unknown
67
+ state: {
68
+ prev: AuthChangeEvent | null
69
+ curr: AuthChangeEvent | null
63
70
  }
64
- }
71
+ },
72
+ user$?: Observable<null | User>
73
+ session$?: Observable<null | Session>
74
+ metadata$?: Observable<null | unknown>
65
75
  }
66
76
  ```
67
-
@@ -1,4 +1,4 @@
1
- import { signalStoreFeature, type, withMethods, withHooks, withState, signalStore } from '@ngrx/signals';
1
+ import { signalStoreFeature, type, withMethods, withHooks, withState, withProps, signalStore } from '@ngrx/signals';
2
2
  import { InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';
3
3
  import { updateState, withDevtools } from '@angular-architects/ngrx-toolkit';
4
4
  import { createClient } from '@supabase/supabase-js';
@@ -52,7 +52,11 @@ const withPostAuth = () => signalStoreFeature({
52
52
  }
53
53
  }));
54
54
 
55
- const withSupaStoreCore = () => signalStoreFeature(withDevtools('supaStore'), withState(() => inject(INITIAL_STATE)), withPostAuth(), withMethods(store => ({
55
+ const withSupaStoreCore = () => signalStoreFeature(withDevtools('supaStore'), withState(() => inject(INITIAL_STATE)), withPostAuth(), withProps(({ auth: { user, session, metadata } }) => ({
56
+ user$: toObservable(user).pipe(filter(res => res !== undefined)),
57
+ session$: toObservable(session).pipe(filter(res => res !== undefined)),
58
+ metadata$: toObservable(metadata).pipe(filter(res => res !== undefined))
59
+ })), withMethods(store => ({
56
60
  _initSession: async () => {
57
61
  const { data: { session }, error } = await store.client().auth.getSession();
58
62
  updateState(store, 'Initialise Session', { auth: { ...store.auth(), session } });
@@ -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/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 { createClient: { supabaseUrl, supabaseKey, options }} = inject(SUPA_STORE_OPTIONS)\r\n const client = createClient(supabaseUrl, supabaseKey, options)\r\n\r\n return {\r\n client,\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 { signalStoreFeature, type, withHooks, withMethods } from '@ngrx/signals'\r\nimport { updateState } from '@angular-architects/ngrx-toolkit'\r\n\r\nexport const withPostAuth = () => signalStoreFeature(\r\n\r\n {\r\n state: type<SupaStoreState>()\r\n },\r\n\r\n withMethods((store, { metadataRpc: rpc, metadataTable: table } = inject(SUPA_STORE_OPTIONS)) => ({\r\n\r\n _postAuth: async () => {\r\n\r\n if (table || rpc) {\r\n\r\n const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)) as Observable<Session>)\r\n if (!session) return\r\n\r\n if (table) {\r\n const { data } = await store.client().from(table).select('*').eq('id', session?.user?.id).single()\r\n updateState(store, 'Load Metadata - Table', { auth: { ...store.auth(), metadata: data }})\r\n } else if (rpc) {\r\n const { data } = await store.client().rpc(rpc, { input: { user_id: session?.user?.id }})\r\n updateState(store, 'Load Metadata - Rpc', { auth: { ...store.auth(), metadata: data }})\r\n } else {\r\n updateState(store, 'No Metadata', { 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._postAuth()\r\n\r\n }\r\n\r\n })\r\n\r\n)\r\n","import { inject } from '@angular/core';\r\nimport { updateState, 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 { withPostAuth } from '../features/post-auth-loader.feature'\r\nimport { 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 withPostAuth(),\r\n\r\n withMethods(store => ({\r\n\r\n _initSession: async () => {\r\n const { data: { session }, error} = await store.client().auth.getSession()\r\n updateState(store, 'Initialise Session', { auth: { ...store.auth(), session }})\r\n },\r\n\r\n _initUser: async () => {\r\n const { data: { user }, error } = await store.client().auth.getUser()\r\n updateState(store, 'Initialise User', { 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 State Changes */\r\n store.client().auth.onAuthStateChange(state => {\r\n updateState(store, 'Auth State Change', { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state }}})\r\n })\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, inject, 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 { createInjectionToken } from 'ngxtension/create-injection-token'\r\n\r\n\r\nexport const provideSupaStore = (options: SupaStoreOptions): EnvironmentProviders => 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\nexport const [ injectSupaClient ] = createInjectionToken(() => inject(SupaStore).client)\r\nexport const [ injectSupaAuth ] = createInjectionToken(() => inject(SupaStore).auth)\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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"}
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 { createClient: { supabaseUrl, supabaseKey, options }} = inject(SUPA_STORE_OPTIONS)\r\n const client = createClient(supabaseUrl, supabaseKey, options)\r\n\r\n return {\r\n client,\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 { signalStoreFeature, type, withHooks, withMethods } from '@ngrx/signals'\r\nimport { updateState } from '@angular-architects/ngrx-toolkit'\r\n\r\nexport const withPostAuth = () => signalStoreFeature(\r\n\r\n {\r\n state: type<SupaStoreState>()\r\n },\r\n\r\n withMethods((store, { metadataRpc: rpc, metadataTable: table } = inject(SUPA_STORE_OPTIONS)) => ({\r\n\r\n _postAuth: async () => {\r\n\r\n if (table || rpc) {\r\n\r\n const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)) as Observable<Session>)\r\n if (!session) return\r\n\r\n if (table) {\r\n const { data } = await store.client().from(table).select('*').eq('id', session?.user?.id).single()\r\n updateState(store, 'Load Metadata - Table', { auth: { ...store.auth(), metadata: data }})\r\n } else if (rpc) {\r\n const { data } = await store.client().rpc(rpc, { input: { user_id: session?.user?.id }})\r\n updateState(store, 'Load Metadata - Rpc', { auth: { ...store.auth(), metadata: data }})\r\n } else {\r\n updateState(store, 'No Metadata', { 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._postAuth()\r\n\r\n }\r\n\r\n })\r\n\r\n)\r\n","import { inject } from '@angular/core';\r\nimport { updateState, 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 { withPostAuth } from '../features/post-auth-loader.feature'\r\nimport { signalStoreFeature, withHooks, withMethods, withProps, withState } from '@ngrx/signals'\r\nimport { toObservable } from '@angular/core/rxjs-interop'\r\nimport { filter } from 'rxjs'\r\n\r\nexport const withSupaStoreCore = () => signalStoreFeature(\r\n\r\n withDevtools('supaStore'),\r\n withState<SupaStoreState>(() => inject(INITIAL_STATE)),\r\n withPostAuth(),\r\n\r\n withProps(({ auth: { user, session, metadata }}) => ({\r\n user$: toObservable(user).pipe(filter(res => res !== undefined)),\r\n session$: toObservable(session).pipe(filter(res => res !== undefined)),\r\n metadata$: toObservable(metadata).pipe(filter(res => res !== undefined))\r\n })),\r\n\r\n withMethods(store => ({\r\n\r\n _initSession: async () => {\r\n const { data: { session }, error} = await store.client().auth.getSession()\r\n updateState(store, 'Initialise Session', { auth: { ...store.auth(), session }})\r\n },\r\n\r\n _initUser: async () => {\r\n const { data: { user }, error } = await store.client().auth.getUser()\r\n updateState(store, 'Initialise User', { 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 State Changes */\r\n store.client().auth.onAuthStateChange(state => {\r\n updateState(store, 'Auth State Change', { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state }}})\r\n })\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, inject, 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 { createInjectionToken } from 'ngxtension/create-injection-token'\r\n\r\n\r\nexport const provideSupaStore = (options: SupaStoreOptions): EnvironmentProviders => 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\nexport const [ injectSupaClient ] = createInjectionToken(() => inject(SupaStore).client)\r\nexport const [ injectSupaAuth ] = createInjectionToken(() => inject(SupaStore).auth)\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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"}
@@ -2,16 +2,20 @@ export declare const withSupaStoreCore: () => import("@ngrx/signals").SignalStor
2
2
  state: {
3
3
  client: import("@supabase/supabase-js").SupabaseClient;
4
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;
5
+ session: undefined | null | import("@supabase/auth-js").Session;
6
+ user: undefined | null | import("@supabase/auth-js").User;
7
+ metadata: undefined | null | unknown;
8
8
  state: {
9
9
  prev: import("@supabase/auth-js").AuthChangeEvent | null;
10
10
  curr: import("@supabase/auth-js").AuthChangeEvent | null;
11
11
  };
12
12
  };
13
13
  };
14
- props: {};
14
+ props: {
15
+ user$: import("rxjs").Observable<import("@supabase/auth-js").User | null>;
16
+ session$: import("rxjs").Observable<import("@supabase/auth-js").Session | null>;
17
+ metadata$: import("rxjs").Observable<{} | null>;
18
+ };
15
19
  methods: {
16
20
  [x: string]: (newName?: unknown) => unknown;
17
21
  _postAuth: () => Promise<void>;
@@ -2,9 +2,9 @@ import { AuthChangeEvent, Session, SupabaseClient, SupabaseClientOptions, User }
2
2
  export type SupaStoreState = {
3
3
  client: SupabaseClient;
4
4
  auth: {
5
- session: Session | undefined | null;
6
- user: User | undefined | null;
7
- metadata: unknown | undefined | null;
5
+ session: undefined | null | Session;
6
+ user: undefined | null | User;
7
+ metadata: undefined | null | unknown;
8
8
  state: {
9
9
  prev: AuthChangeEvent | null;
10
10
  curr: AuthChangeEvent | null;
@@ -14,9 +14,9 @@ export declare const injectSupaClient: {
14
14
  };
15
15
  export declare const injectSupaAuth: {
16
16
  (): import("@ngrx/signals").DeepSignal<{
17
- session: import("@supabase/auth-js").Session | undefined | null;
18
- user: import("@supabase/auth-js").User | undefined | null;
19
- metadata: unknown | undefined | null;
17
+ session: undefined | null | import("@supabase/auth-js").Session;
18
+ user: undefined | null | import("@supabase/auth-js").User;
19
+ metadata: undefined | null | unknown;
20
20
  state: {
21
21
  prev: import("@supabase/auth-js").AuthChangeEvent | null;
22
22
  curr: import("@supabase/auth-js").AuthChangeEvent | null;
@@ -27,9 +27,9 @@ export declare const injectSupaAuth: {
27
27
  } & {
28
28
  injector?: import("@angular/core").Injector;
29
29
  }): import("@ngrx/signals").DeepSignal<{
30
- session: import("@supabase/auth-js").Session | undefined | null;
31
- user: import("@supabase/auth-js").User | undefined | null;
32
- metadata: unknown | undefined | null;
30
+ session: undefined | null | import("@supabase/auth-js").Session;
31
+ user: undefined | null | import("@supabase/auth-js").User;
32
+ metadata: undefined | null | unknown;
33
33
  state: {
34
34
  prev: import("@supabase/auth-js").AuthChangeEvent | null;
35
35
  curr: import("@supabase/auth-js").AuthChangeEvent | null;
@@ -38,9 +38,9 @@ export declare const injectSupaAuth: {
38
38
  (injectOptions: import("@angular/core").InjectOptions & {
39
39
  injector?: import("@angular/core").Injector;
40
40
  }): import("@ngrx/signals").DeepSignal<{
41
- session: import("@supabase/auth-js").Session | undefined | null;
42
- user: import("@supabase/auth-js").User | undefined | null;
43
- metadata: unknown | undefined | null;
41
+ session: undefined | null | import("@supabase/auth-js").Session;
42
+ user: undefined | null | import("@supabase/auth-js").User;
43
+ metadata: undefined | null | unknown;
44
44
  state: {
45
45
  prev: import("@supabase/auth-js").AuthChangeEvent | null;
46
46
  curr: import("@supabase/auth-js").AuthChangeEvent | null;
@@ -2,20 +2,23 @@ export declare const SupaStore: import("@angular/core").Type<{
2
2
  [x: string]: (newName?: unknown) => unknown;
3
3
  client: import("@ngrx/signals").DeepSignal<import("@supabase/supabase-js").SupabaseClient<any, "public", any>>;
4
4
  auth: import("@ngrx/signals").DeepSignal<{
5
- session: import("@supabase/auth-js").Session | undefined | null;
6
- user: import("@supabase/auth-js").User | undefined | null;
7
- metadata: unknown | undefined | null;
5
+ session: undefined | null | import("@supabase/auth-js").Session;
6
+ user: undefined | null | import("@supabase/auth-js").User;
7
+ metadata: undefined | null | unknown;
8
8
  state: {
9
9
  prev: import("@supabase/auth-js").AuthChangeEvent | null;
10
10
  curr: import("@supabase/auth-js").AuthChangeEvent | null;
11
11
  };
12
12
  }>;
13
+ user$: import("rxjs").Observable<import("@supabase/auth-js").User | null>;
14
+ session$: import("rxjs").Observable<import("@supabase/auth-js").Session | null>;
15
+ metadata$: import("rxjs").Observable<{} | null>;
13
16
  } & import("@ngrx/signals").StateSource<{
14
17
  client: import("@supabase/supabase-js").SupabaseClient;
15
18
  auth: {
16
- session: import("@supabase/auth-js").Session | undefined | null;
17
- user: import("@supabase/auth-js").User | undefined | null;
18
- metadata: unknown | undefined | null;
19
+ session: undefined | null | import("@supabase/auth-js").Session;
20
+ user: undefined | null | import("@supabase/auth-js").User;
21
+ metadata: undefined | null | unknown;
19
22
  state: {
20
23
  prev: import("@supabase/auth-js").AuthChangeEvent | null;
21
24
  curr: import("@supabase/auth-js").AuthChangeEvent | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outbuild/supa-store",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.0",
6
6
  "@angular/core": "^19.2.0",