@outbuild/supa-store 0.0.9 → 0.0.11

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,7 @@
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
+ }
package/package.json CHANGED
@@ -1,31 +1,19 @@
1
- {
2
- "name": "@outbuild/supa-store",
3
- "version": "0.0.9",
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
- }
1
+ {
2
+ "name": "@outbuild/supa-store",
3
+ "version": "0.0.11",
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
+ "lodash-es": "^4.17.21"
11
+ },
12
+ "dependencies": {
13
+ "tslib": "^2.3.0"
14
+ },
15
+ "resolutions": {
16
+ "@supabase/auth-js": "2.61.0"
17
+ },
18
+ "sideEffects": false
19
+ }
@@ -0,0 +1,19 @@
1
+ import { inject, InjectionToken } from "@angular/core"
2
+ import { SUPA_STORE_OPTIONS } from "./supabase-credentials.token"
3
+ import { createClient } from "@supabase/supabase-js"
4
+ import { SupaStoreState } from "../type/supa-store.types"
5
+
6
+ export const INITIAL_STATE = new InjectionToken<SupaStoreState>('SupaStoreState', {
7
+ factory: () => {
8
+ const { supabaseUrl, supabaseKey } = inject(SUPA_STORE_OPTIONS)
9
+ return {
10
+ client: createClient(supabaseUrl, supabaseKey),
11
+ auth: {
12
+ session: undefined,
13
+ user: undefined,
14
+ userMetadata: undefined,
15
+ state: { prev: null, curr: null }
16
+ }
17
+ }
18
+ },
19
+ })
@@ -0,0 +1,4 @@
1
+ import { InjectionToken } from "@angular/core"
2
+ import { SupaStoreInput } from "../type/supa-store.types"
3
+
4
+ export const SUPA_STORE_OPTIONS = new InjectionToken<SupaStoreInput>('SUPA_STORE_OPTIONS')
@@ -0,0 +1,27 @@
1
+ import { AuthChangeEvent, Session, SupabaseClient, User } from "@supabase/supabase-js"
2
+
3
+ export type SupaStoreState = {
4
+ client: SupabaseClient
5
+ auth: {
6
+ session: Session | undefined | null
7
+ user: User | undefined | null
8
+ userMetadata: unknown | undefined | null
9
+ state: {
10
+ prev: AuthChangeEvent | null,
11
+ curr: AuthChangeEvent | null,
12
+ }
13
+ }
14
+ }
15
+
16
+ export type SupaStoreInput = {
17
+ supabaseUrl: string,
18
+ supabaseKey: string,
19
+ options: SupaStoreOptions
20
+ }
21
+
22
+ export type SupaStoreOptions = {
23
+ userMetadata?: {
24
+ load?: boolean,
25
+ table?: string,
26
+ }
27
+ }
@@ -0,0 +1,25 @@
1
+ import { EnvironmentProviders, makeEnvironmentProviders } from "@angular/core"
2
+ import { SupaStore } from "./supa-store.store"
3
+ import { SUPA_STORE_OPTIONS } from "./common/token/supabase-credentials.token"
4
+ import { SupaStoreOptions } from "./common/type/supa-store.types"
5
+ import { merge } from "lodash-es"
6
+
7
+ const defaultOptions: SupaStoreOptions = {
8
+ userMetadata: {
9
+ load: false,
10
+ table: 'users',
11
+ }
12
+ }
13
+
14
+ export const provideSupaStore = (supabaseUrl: string, supabaseKey: string, opts: SupaStoreOptions = {}): EnvironmentProviders => {
15
+
16
+ const options = merge(defaultOptions, opts)
17
+
18
+ return makeEnvironmentProviders([
19
+ {
20
+ provide: SUPA_STORE_OPTIONS,
21
+ useValue: { supabaseUrl, supabaseKey, options }
22
+ },
23
+ SupaStore
24
+ ])
25
+ }
@@ -0,0 +1,55 @@
1
+ import { inject } from '@angular/core';
2
+ import { withDevtools } from '@angular-architects/ngrx-toolkit'
3
+ import { INITIAL_STATE } from './common/token/initial-state.token'
4
+ import { SupaStoreState } from './common/type/supa-store.types'
5
+ import { patchState, signalStore, signalStoreFeature, withHooks, withMethods, withState } from '@ngrx/signals'
6
+ import { SUPA_STORE_OPTIONS } from './common/token/supabase-credentials.token'
7
+ import { filter, firstValueFrom } from 'rxjs'
8
+ import { toObservable } from "@angular/core/rxjs-interop"
9
+
10
+ export const withSupaStore = () => signalStoreFeature(
11
+
12
+ withDevtools('supaStore'),
13
+ withState<SupaStoreState>(() => inject(INITIAL_STATE)),
14
+
15
+ withMethods(( store, options = inject(SUPA_STORE_OPTIONS).options) => ({
16
+
17
+ initSession: async () => {
18
+ const { data: { session }} = await store.client().auth.getSession()
19
+ patchState(store, { auth: { ...store.auth(), session }})
20
+ },
21
+
22
+ initUser: async () => {
23
+ const { data: { user }} = await store.client().auth.getUser()
24
+ patchState(store, { auth: { ...store.auth(), user }})
25
+ },
26
+
27
+ setMetadata: async (id: string) => {
28
+ const { data: userMetadata } = await store.client().from(options?.userMetadata?.table as string).select('*').eq('id', id).single()
29
+ patchState(store, { auth: { ...store.auth(), userMetadata }})
30
+ }
31
+
32
+ })),
33
+
34
+ withHooks({
35
+ async onInit(store, options = inject(SUPA_STORE_OPTIONS).options) {
36
+
37
+ store.initSession()
38
+ store.initUser()
39
+ store.client().auth.onAuthStateChange(state => patchState(store, { auth: { ...store.auth(), state: { prev: store.auth.state.curr(), curr: state } }}))
40
+
41
+ if (options?.userMetadata?.load) {
42
+ const session = await firstValueFrom(toObservable(store.auth.session).pipe(filter(res => res !== undefined)))
43
+ session?.user ? store.setMetadata(session?.user?.id) : patchState(store, { auth: { ...store.auth(), userMetadata: null}})
44
+ } else {
45
+ patchState(store, { auth: { ...store.auth(), userMetadata: null}})
46
+ }
47
+
48
+ }
49
+ })
50
+
51
+ )
52
+
53
+ export const SupaStore = signalStore(
54
+ withSupaStore()
55
+ )
@@ -0,0 +1,6 @@
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'
@@ -0,0 +1,15 @@
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
+ }
@@ -0,0 +1,11 @@
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
+ }
@@ -0,0 +1,15 @@
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
+ }
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from "@angular/core";
2
- export const SUPABASE_CREDENTIALS = new InjectionToken('SUPABASE_CREDENTIALS');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYWJhc2UtY3JlZGVudGlhbHMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYi1zdXBhLXN0b3JlL3NyYy9saWIvY29tbW9uL3Rva2VuL3N1cGFiYXNlLWNyZWRlbnRpYWxzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBR25ELHNCQUFzQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuXHJcbmV4cG9ydCBjb25zdCBTVVBBQkFTRV9DUkVERU5USUFMUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjx7XHJcbiAgc3VwYWJhc2VVcmw6IHN0cmluZyxcclxuICBzdXBhYmFzZUtleTogc3RyaW5nXHJcbn0+KCdTVVBBQkFTRV9DUkVERU5USUFMUycpXHJcbiJdfQ==
@@ -1,11 +0,0 @@
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
@@ -1,27 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYS1zdG9yZS5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL2xpYi9zdXBhLXN0b3JlLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBNEMsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDOUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFXaEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixFQUFFO0lBQ3pFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ2pFLE9BQU87WUFDTCxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7WUFDOUMsT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1NBQ3BDLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUVuRCxTQUFTLENBQWtCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUV2RCxXQUFXLENBQUMsQ0FBRSxLQUFLLEVBQUcsRUFBRSxDQUFDLENBQUM7SUFFeEIsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNuRSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQWtCLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7Q0FFRixDQUFDLENBQUMsRUFFSCxTQUFTLENBQUM7SUFDUixNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUM3SCxDQUFDO0NBQ0YsQ0FBQyxDQUVILENBQUE7QUFHRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUNsQyxhQUFhLEVBQUUsQ0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlRmVhdHVyZSwgd2l0aEhvb2tzLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XHJcbmltcG9ydCB7IEF1dGhDaGFuZ2VFdmVudCwgU2Vzc2lvbiwgU3VwYWJhc2VDbGllbnQsIGNyZWF0ZUNsaWVudCB9IGZyb20gJ0BzdXBhYmFzZS9zdXBhYmFzZS1qcydcclxuaW1wb3J0IHsgU1VQQUJBU0VfQ1JFREVOVElBTFMgfSBmcm9tICcuL2NvbW1vbi90b2tlbi9zdXBhYmFzZS1jcmVkZW50aWFscy50b2tlbidcclxuXHJcbmV4cG9ydCB0eXBlIFN1cGFTdG9yZVN0YXRlID0ge1xyXG4gIGNsaWVudDogU3VwYWJhc2VDbGllbnRcclxuICBzZXNzaW9uOiBTZXNzaW9uIHwgdW5kZWZpbmVkIHwgbnVsbFxyXG4gIGF1dGhTdGF0ZToge1xyXG4gICAgb2xkOiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gICAgbmV3OiBBdXRoQ2hhbmdlRXZlbnQgfCBudWxsLFxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgSU5JVElBTF9TVEFURSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdXBhU3RvcmVTdGF0ZT4oJ1N1cGFTdG9yZVN0YXRlJywge1xyXG4gIGZhY3Rvcnk6ICgpID0+IHtcclxuICAgIGNvbnN0IHsgc3VwYWJhc2VVcmwsIHN1cGFiYXNlS2V5IH0gPSBpbmplY3QoU1VQQUJBU0VfQ1JFREVOVElBTFMpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjbGllbnQ6IGNyZWF0ZUNsaWVudChzdXBhYmFzZVVybCwgc3VwYWJhc2VLZXkpLFxyXG4gICAgICBzZXNzaW9uOiB1bmRlZmluZWQsXHJcbiAgICAgIGF1dGhTdGF0ZTogeyBvbGQ6IG51bGwsIG5ldzogbnVsbCB9LFxyXG4gICAgfVxyXG4gIH0sXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHdpdGhTdXBhU3RvcmUgPSAoKSA9PiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcblxyXG4gIHdpdGhTdGF0ZTwgU3VwYVN0b3JlU3RhdGU+KCgpID0+IGluamVjdChJTklUSUFMX1NUQVRFKSksXHJcblxyXG4gIHdpdGhNZXRob2RzKCggc3RvcmUgKSA9PiAoe1xyXG5cclxuICAgIGluaXRTZXNzaW9uOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YTogeyBzZXNzaW9uIH19ID0gYXdhaXQgc3RvcmUuY2xpZW50KCkuYXV0aC5nZXRTZXNzaW9uKClcclxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBzZXNzaW9uOiBzZXNzaW9uIGFzIFNlc3Npb24gfSlcclxuICAgIH1cclxuXHJcbiAgfSkpLFxyXG5cclxuICB3aXRoSG9va3Moe1xyXG4gICAgb25Jbml0KHN0b3JlKSB7XHJcbiAgICAgIHN0b3JlLmluaXRTZXNzaW9uKClcclxuICAgICAgc3RvcmUuY2xpZW50KCkuYXV0aC5vbkF1dGhTdGF0ZUNoYW5nZShzdGF0ZSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IGF1dGhTdGF0ZTogeyBvbGQ6IHN0b3JlLmF1dGhTdGF0ZSgpLm5ldywgbmV3OiBzdGF0ZSB9fSkpXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbilcclxuXHJcblxyXG5leHBvcnQgY29uc3QgU3VwYVN0b3JlID0gc2lnbmFsU3RvcmUoXHJcbiAgd2l0aFN1cGFTdG9yZSgpXHJcbilcclxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0YnVpbGQtc3VwYS1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL29iLXN1cGEtc3RvcmUvc3JjL291dGJ1aWxkLXN1cGEtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,6 +0,0 @@
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==
@@ -1,47 +0,0 @@
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
@@ -1 +0,0 @@
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 = () => 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,MAAM,kBAAkB,CAEnD,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 DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@outbuild/supa-store" />
5
- export * from './public-api';
@@ -1,5 +0,0 @@
1
- import { InjectionToken } from "@angular/core";
2
- export declare const SUPABASE_CREDENTIALS: InjectionToken<{
3
- supabaseUrl: string;
4
- supabaseKey: string;
5
- }>;
@@ -1,2 +0,0 @@
1
- import { EnvironmentProviders } from "@angular/core";
2
- export declare const provideSupaStore: (supabaseUrl: string, supabaseKey: string) => EnvironmentProviders;
@@ -1,39 +0,0 @@
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: () => 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/public-api.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './lib/supa-store.store';
2
- export * from './lib/supa-store.provider';