@securitydept/client-react 0.3.0-beta.3 → 0.3.0-beta.5

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
@@ -2,4 +2,10 @@
2
2
 
3
3
  Client React of the SecurityDept TypeScript SDK, a layered authentication and authorization toolkit built as reusable Rust crates, a TypeScript client SDK workspace, and reference server/web apps.
4
4
 
5
+ ## Documentation
6
+
7
+ - [Package documentation](https://www.npmjs.com/package/@securitydept/client-react)
8
+ - [SecurityDept TypeScript SDK guide](https://github.com/ethaxon/securitydept/blob/main/docs/en/007-CLIENT_SDK_GUIDE.md)
9
+ - [SecurityDept architecture](https://github.com/ethaxon/securitydept/blob/main/docs/en/001-ARCHITECTURE.md)
10
+
5
11
  Repository: [ethaxon/securitydept](https://github.com/ethaxon/securitydept)
package/dist/index.d.mts CHANGED
@@ -1,112 +1,111 @@
1
- import { ClientEnvironment, ClientEnvironmentService, PageClientEnvironment, WebClientEnvironment } from "@securitydept/client/web";
2
- import { ReactNode } from "react";
1
+ import { CreateFoundationEnvironmentOptions, DisposableTrait, EventStreamTrait, FoundationEnvironment, InteropObservableTrait, ReadableSignalTrait, ResourceSnapshot, ResourceTrait, SYMBOL_DISPOSE, SecuritydeptInjectorTrait, SecuritydeptProvider as SecuritydeptProvider$1, SubscribableTrait, TimeTrait } from "@securitydept/client";
2
+ import * as _$react from "react";
3
+ import { DependencyList, ReactNode, RefObject } from "react";
3
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
- import { AuthGuardClientOption, CandidateSelector, PlannerHost, ScopedRequirementsClientSet, resolveEffectiveClientSet } from "@securitydept/client/auth-coordination";
5
5
 
6
- //#region src/environment-service/index.d.ts
7
- interface ClientEnvironmentServiceContextValue {
8
- readClientEnvironment(): ClientEnvironment;
9
- readWebEnvironment(): WebClientEnvironment;
10
- readPageEnvironment(): PageClientEnvironment;
11
- resolveClientEnvironment(): Promise<ClientEnvironment>;
12
- resolveWebEnvironment(): Promise<WebClientEnvironment>;
13
- resolvePageEnvironment(): Promise<PageClientEnvironment>;
14
- reset(): void;
6
+ //#region src/environment.d.ts
7
+ type ReactEnvironmentCreatorOptions = {
8
+ providers?: readonly SecuritydeptProvider$1[];
9
+ };
10
+ type ReactEnvironmentCreator<TOptions extends ReactEnvironmentCreatorOptions, TEnvironment extends FoundationEnvironment> = (options: TOptions) => TEnvironment;
11
+ interface CreateEnvironmentForReactOptions extends CreateFoundationEnvironmentOptions {}
12
+ type CreateEnvironmentForReactWithBaseOptions<TBaseOptions extends ReactEnvironmentCreatorOptions, TEnvironment extends FoundationEnvironment> = Omit<TBaseOptions, "providers" | "createBaseEnvironment"> & {
13
+ createBaseEnvironment: ReactEnvironmentCreator<TBaseOptions, TEnvironment>;
14
+ providers?: readonly SecuritydeptProvider$1[];
15
+ };
16
+ declare function createEnvironmentForReact(): FoundationEnvironment;
17
+ declare function createEnvironmentForReact(options: CreateEnvironmentForReactOptions): FoundationEnvironment;
18
+ declare function createEnvironmentForReact<TBaseOptions extends ReactEnvironmentCreatorOptions, TEnvironment extends FoundationEnvironment>(options: CreateEnvironmentForReactWithBaseOptions<TBaseOptions, TEnvironment>): TEnvironment;
19
+ //#endregion
20
+ //#region src/hooks/use-initial-ref.d.ts
21
+ declare function useInitialRef<T>(initialize: () => T): RefObject<T>;
22
+ //#endregion
23
+ //#region src/injection/index.d.ts
24
+ declare const SecuritydeptContext: _$react.Context<any>;
25
+ interface SecuritydeptProviderProps {
26
+ readonly injector: SecuritydeptInjectorTrait;
27
+ readonly children?: ReactNode;
15
28
  }
16
- interface ClientEnvironmentServiceProviderProps {
17
- children?: ReactNode;
18
- service?: ClientEnvironmentServiceContextValue;
29
+ declare function SecuritydeptProvider({
30
+ injector,
31
+ children
32
+ }: SecuritydeptProviderProps): _$react_jsx_runtime0.JSX.Element;
33
+ declare function useSecuritydeptContext(): SecuritydeptInjectorTrait;
34
+ //#endregion
35
+ //#region src/interop.d.ts
36
+ declare function useSignal<T>(source: ReadableSignalTrait<T>): T;
37
+ declare function useResourceSnapshot<T>(resource: ResourceTrait<T>): ResourceSnapshot<T>;
38
+ declare function useResourceSnapshot<T>(snapshot: ReadableSignalTrait<ResourceSnapshot<T>>): ResourceSnapshot<T>;
39
+ declare function useResourceSnapshot<T>(compute: () => ResourceSnapshot<T>, dependencies: DependencyList): ResourceSnapshot<T>;
40
+ interface UseInteropObservableOptions<T> {
41
+ initialValue?: T;
42
+ requireSync?: boolean;
19
43
  }
20
- declare function ClientEnvironmentServiceProvider({
21
- children,
22
- service
23
- }: ClientEnvironmentServiceProviderProps): _$react_jsx_runtime0.JSX.Element;
24
- declare function useClientEnvironmentService<TClientEnvironment extends ClientEnvironment = ClientEnvironment, TWebEnvironment extends WebClientEnvironment = WebClientEnvironment, TPageEnvironment extends PageClientEnvironment = PageClientEnvironment>(): ClientEnvironmentService<TClientEnvironment, TWebEnvironment, TPageEnvironment>;
25
- declare function useClientEnvironment<TClientEnvironment extends ClientEnvironment = ClientEnvironment, TWebEnvironment extends WebClientEnvironment = WebClientEnvironment, TPageEnvironment extends PageClientEnvironment = PageClientEnvironment>(): TClientEnvironment;
26
- declare function useWebClientEnvironment<TClientEnvironment extends ClientEnvironment = ClientEnvironment, TWebEnvironment extends WebClientEnvironment = WebClientEnvironment, TPageEnvironment extends PageClientEnvironment = PageClientEnvironment>(): TWebEnvironment;
27
- declare function usePageClientEnvironment<TClientEnvironment extends ClientEnvironment = ClientEnvironment, TWebEnvironment extends WebClientEnvironment = WebClientEnvironment, TPageEnvironment extends PageClientEnvironment = PageClientEnvironment>(): TPageEnvironment;
44
+ declare function useInteropObservable<T>(source: InteropObservableTrait<T> | SubscribableTrait<T>): T | undefined;
45
+ declare function useInteropObservable<T>(source: InteropObservableTrait<T> | SubscribableTrait<T>, options: UseInteropObservableOptions<T> & {
46
+ initialValue?: undefined;
47
+ requireSync?: false;
48
+ }): T | undefined;
49
+ declare function useInteropObservable<T>(source: InteropObservableTrait<T> | SubscribableTrait<T>, options: UseInteropObservableOptions<T | null> & {
50
+ initialValue?: null;
51
+ requireSync?: false;
52
+ }): T | null;
53
+ declare function useInteropObservable<T>(source: InteropObservableTrait<T> | SubscribableTrait<T>, options: UseInteropObservableOptions<T> & {
54
+ initialValue?: undefined;
55
+ requireSync: true;
56
+ }): T;
57
+ declare function useInteropObservable<T, const U extends T>(source: InteropObservableTrait<T> | SubscribableTrait<T>, options: UseInteropObservableOptions<T | U> & {
58
+ initialValue: U;
59
+ requireSync?: false;
60
+ }): T | U;
61
+ declare function useEventStream<T>(source: EventStreamTrait<T>, handler: (event: T) => void, options?: {
62
+ enabled?: boolean;
63
+ }): void;
28
64
  //#endregion
29
- //#region src/planner-host/index.d.ts
30
- /** Props for {@link AuthPlannerHostProvider}. */
31
- interface AuthPlannerHostProviderProps {
32
- /**
33
- * Custom candidate selection strategy.
34
- * @see {@link CandidateSelector}
35
- */
36
- selectCandidate?: CandidateSelector;
37
- /**
38
- * Pre-constructed PlannerHost instance to use.
39
- * If provided, `selectCandidate` is ignored.
40
- */
41
- plannerHost?: PlannerHost;
42
- children: ReactNode;
65
+ //#region src/query-store.d.ts
66
+ type QueryStoreKeyValue = null | boolean | number | string | readonly QueryStoreKeyValue[] | {
67
+ readonly [key: string]: QueryStoreKeyValue;
68
+ };
69
+ type QueryStoreKey = readonly QueryStoreKeyValue[];
70
+ interface QueryStoreOptions {
71
+ readonly time: TimeTrait;
72
+ readonly gcTimeMs?: number;
43
73
  }
44
- /**
45
- * Provide a {@link PlannerHost} at the current React tree scope.
46
- *
47
- * Use at the app level or at feature-route boundaries to establish
48
- * planner-host scopes. Child components inherit the nearest provider.
49
- *
50
- * @example
51
- * ```tsx
52
- * // App-level (default sequential strategy)
53
- * <AuthPlannerHostProvider>
54
- * <App />
55
- * </AuthPlannerHostProvider>
56
- *
57
- * // Feature-route with custom chooser
58
- * <AuthPlannerHostProvider selectCandidate={showChooser}>
59
- * <FeatureRoutes />
60
- * </AuthPlannerHostProvider>
61
- * ```
62
- */
63
- declare function AuthPlannerHostProvider({
64
- selectCandidate,
65
- plannerHost,
66
- children
67
- }: AuthPlannerHostProviderProps): _$react_jsx_runtime0.JSX.Element;
68
- /**
69
- * Look up the nearest {@link PlannerHost} from the React Context tree.
70
- *
71
- * Throws an explicit error if no provider is found, preventing
72
- * silent fallback behavior.
73
- */
74
- declare function useAuthPlannerHost(): PlannerHost;
75
- /** Props for {@link AuthRequirementsClientSetProvider}. */
76
- interface AuthRequirementsClientSetProviderProps {
77
- /** The scoped set to provide at this level. */
78
- scopedSet: ScopedRequirementsClientSet;
79
- children: ReactNode;
74
+ interface ProvideQueryStoreOptions {
75
+ readonly gcTimeMs?: number;
80
76
  }
81
- /**
82
- * Provide a {@link ScopedRequirementsClientSet} at the current React tree scope.
83
- *
84
- * Automatically resolves the effective client set by composing with the
85
- * parent scope's options according to the declared composition strategy.
86
- *
87
- * @example
88
- * ```tsx
89
- * // Feature route: merge OIDC requirement with parent's session requirement
90
- * <AuthRequirementsClientSetProvider
91
- * scopedSet={{
92
- * composition: RequirementsClientSetComposition.Merge,
93
- * options: [oidcClientOption],
94
- * }}
95
- * >
96
- * <ProtectedFeature />
97
- * </AuthRequirementsClientSetProvider>
98
- * ```
99
- */
100
- declare function AuthRequirementsClientSetProvider({
101
- scopedSet,
102
- children
103
- }: AuthRequirementsClientSetProviderProps): _$react_jsx_runtime0.JSX.Element;
104
- /**
105
- * Get the effective requirements client set for the current React tree scope.
106
- *
107
- * Returns the resolved options after applying all parent/child composition.
108
- */
109
- declare function useEffectiveClientSet(): readonly AuthGuardClientOption[];
77
+ declare class QueryStore implements DisposableTrait {
78
+ [SYMBOL_DISPOSE]: () => void;
79
+ static readonly defaultOptions: Readonly<{
80
+ gcTimeMs: 300000;
81
+ }>;
82
+ private readonly queries;
83
+ private readonly weakKeyIds;
84
+ private readonly scheduler;
85
+ private readonly gcTimeMs;
86
+ private nextWeakKeyId;
87
+ private disposed;
88
+ constructor(options: QueryStoreOptions);
89
+ getWeakKeyId(value: object): string;
90
+ dispose(): void;
91
+ private removeQuery;
92
+ }
93
+ declare function provideQueryStore(options?: ProvideQueryStoreOptions): readonly SecuritydeptProvider$1[];
94
+ declare function useQueryStore(): QueryStore;
95
+ //#endregion
96
+ //#region src/suspense-resource.d.ts
97
+ interface UseSuspenseResourceValueOptions {
98
+ readonly queryKey?: QueryStoreKey;
99
+ readonly gcTimeMs?: number;
100
+ readonly retainWhilePending?: boolean;
101
+ }
102
+ interface UseSuspenseComputedResourceValueOptions extends Omit<UseSuspenseResourceValueOptions, "queryKey"> {
103
+ readonly dependencies: DependencyList;
104
+ readonly queryKey: QueryStoreKey;
105
+ }
106
+ declare function useSuspenseResourceValue<T>(resource: ResourceTrait<T>, options?: UseSuspenseResourceValueOptions): T;
107
+ declare function useSuspenseResourceValue<T>(snapshot: ReadableSignalTrait<ResourceSnapshot<T>>, options?: UseSuspenseResourceValueOptions): T;
108
+ declare function useSuspenseResourceValue<T>(compute: () => ResourceSnapshot<T>, options: UseSuspenseComputedResourceValueOptions): T;
110
109
  //#endregion
111
- export { AuthPlannerHostProvider, AuthPlannerHostProviderProps, AuthRequirementsClientSetProvider, AuthRequirementsClientSetProviderProps, ClientEnvironmentServiceProvider, ClientEnvironmentServiceProviderProps, resolveEffectiveClientSet, useAuthPlannerHost, useClientEnvironment, useClientEnvironmentService, useEffectiveClientSet, usePageClientEnvironment, useWebClientEnvironment };
110
+ export { CreateEnvironmentForReactOptions, CreateEnvironmentForReactWithBaseOptions, type ProvideQueryStoreOptions, QueryStore, type QueryStoreKey, type QueryStoreKeyValue, type QueryStoreOptions, ReactEnvironmentCreator, ReactEnvironmentCreatorOptions, SecuritydeptContext, SecuritydeptProvider, SecuritydeptProviderProps, UseInteropObservableOptions, type UseSuspenseComputedResourceValueOptions, type UseSuspenseResourceValueOptions, createEnvironmentForReact, provideQueryStore, useEventStream, useInitialRef, useInteropObservable, useQueryStore, useResourceSnapshot, useSecuritydeptContext, useSignal, useSuspenseResourceValue };
112
111
  //# sourceMappingURL=index.d.mts.map