@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.
- package/ng-package.json +7 -0
- package/package.json +19 -31
- package/src/lib/common/token/initial-state.token.ts +19 -0
- package/src/lib/common/token/supabase-credentials.token.ts +4 -0
- package/src/lib/common/type/supa-store.types.ts +27 -0
- package/src/lib/supa-store.provider.ts +25 -0
- package/src/lib/supa-store.store.ts +55 -0
- package/src/public-api.ts +6 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +11 -0
- package/tsconfig.spec.json +15 -0
- package/esm2022/lib/common/token/supabase-credentials.token.mjs +0 -3
- package/esm2022/lib/supa-store.provider.mjs +0 -11
- package/esm2022/lib/supa-store.store.mjs +0 -27
- package/esm2022/outbuild-supa-store.mjs +0 -5
- package/esm2022/public-api.mjs +0 -6
- package/fesm2022/outbuild-supa-store.mjs +0 -47
- package/fesm2022/outbuild-supa-store.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/common/token/supabase-credentials.token.d.ts +0 -5
- package/lib/supa-store.provider.d.ts +0 -2
- package/lib/supa-store.store.d.ts +0 -39
- package/public-api.d.ts +0 -2
package/ng-package.json
ADDED
package/package.json
CHANGED
|
@@ -1,31 +1,19 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@outbuild/supa-store",
|
|
3
|
-
"version": "0.0.
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
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,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,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==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -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,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