open-index/open-npm huggingface dataset:
npm package: @outbuild/arcgis
Description: This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.
Latest version: 0.0.2

# ObArcgis

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.

## Code scaffolding

Run `ng generate component component-name --project ob-arcgis` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ob-arcgis`.
> Note: Don't forget to add `--project ob-arcgis` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build ob-arcgis` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build ob-arcgis`, go to the dist folder `cd dist/ob-arcgis` and run `npm publish`.

## Running unit tests

Run `ng test ob-arcgis` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
npm package: @outbuild/supa-store
Description: A helper library for including Supabase with auth as signals in your Angular app,  it uses @ngrx/signals more examples to come.
Latest version: 1.0.9

# Supastore

A helper library for including Supabase with auth as signals in your Angular app, 
it uses @ngrx/signals more examples to come.

## Basic usage, provide in main.ts

This will provide the supabase client and the auth object for logged user as signals.

```typescript
import { provideSupaStore } from '@outbuild/supa-store'

provideSupaStore({
  createClient:{
    supabaseUrl: environment.supabaseUrl,
    supabaseKey: environment.supabaseKey
  }
})
```

## Including Metadata in the user object

In many cases users will have metadata that you want to include in the user object. 
You can do this by providing the 'metadataTable' option. This will automatically fetch 
the metadata from the table matching the user the 'id' field and include it in the auth 
object. in most cases this will be the 'users' table. There are also instances where 
you would want to run a custom rpc function to return a auth object, lets imagine custom 
logic for user, organisation data etc. you can do this by providing the 'metadataRpc' option.
This will run immediatelty after the user is authenticated, either table option, or rpc 
option not both.

```typescript
import { provideSupaStore } from '@outbuild/supa-store'

provideSupaStore({
  createClient:{
    supabaseUrl: environment.supabaseUrl,
    supabaseKey: environment.supabaseKey
  },
  metadataTable: 'users',
  // or
  metadataRpc: 'auth_query'
})
```

## Accessing the store

```typescript
  import { SupaStore, injectSupaAuth, injectSupaClient } from '@outbuild/supa-store'

  store  = inject(SupaStore)
  auth   = injectSupaAuth()
  client = injectSupaClient()
  
```

## Observables

Observables will have either undefined, null or the logged in user value.

undefined - auth call is in progress.
null - auth call complete, no logged user found, not logged in.
value - auth call complete, logged user found.

## Store type

```typescript
type SupaStoreState = {
  client: SupabaseClient
  auth: {
    session: undefined | null | Session
    user: undefined | null | User
    metadata: undefined | null | unknown
    state: {
      prev: AuthChangeEvent | null
      curr: AuthChangeEvent | null
    }
  },
  user$: Observable<null | User>
  session$: Observable<null | Session>
  metadata$: Observable<null | unknown>
  signInWithGoogle: (options: SignInWithOAuthCredentials['options']) => void
}
```