@securitydept/token-set-context-client-angular 0.3.0-beta.8 → 0.3.0-beta.9

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.
@@ -174,6 +174,8 @@ async function defaultTokenSetClientRegistryAuthorizationForRequest(registry, re
174
174
  class TokenSetBackendCallbackComponent {
175
175
  clientQuery = input(/* @ts-ignore */
176
176
  ...(ngDevMode ? [undefined, { debugName: "clientQuery" }] : /* istanbul ignore next */ []));
177
+ clientGuard = input(/* @ts-ignore */
178
+ ...(ngDevMode ? [undefined, { debugName: "clientGuard" }] : /* istanbul ignore next */ []));
177
179
  autoInitialize = input(true, /* @ts-ignore */
178
180
  ...(ngDevMode ? [{ debugName: "autoInitialize" }] : /* istanbul ignore next */ []));
179
181
  environment = inject(ENVIRONMENT);
@@ -211,12 +213,13 @@ class TokenSetBackendCallbackComponent {
211
213
  registry: this.registry,
212
214
  callbackUrl: this.environment.router?.currentUrl()?.toString() ?? "",
213
215
  clientQuery: this.clientQuery(),
216
+ clientGuard: this.clientGuard(),
214
217
  initialize: this.autoInitialize(),
215
218
  }));
216
219
  });
217
220
  }
218
221
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TokenSetBackendCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
219
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: TokenSetBackendCallbackComponent, isStandalone: true, selector: "sd-token-set-backend-callback", inputs: { clientQuery: { classPropertyName: "clientQuery", publicName: "clientQuery", isSignal: true, isRequired: false, transformFunction: null }, autoInitialize: { classPropertyName: "autoInitialize", publicName: "autoInitialize", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["sdTokenSetBackendCallback"], ngImport: i0, template: "", isInline: true });
222
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: TokenSetBackendCallbackComponent, isStandalone: true, selector: "sd-token-set-backend-callback", inputs: { clientQuery: { classPropertyName: "clientQuery", publicName: "clientQuery", isSignal: true, isRequired: false, transformFunction: null }, clientGuard: { classPropertyName: "clientGuard", publicName: "clientGuard", isSignal: true, isRequired: false, transformFunction: null }, autoInitialize: { classPropertyName: "autoInitialize", publicName: "autoInitialize", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["sdTokenSetBackendCallback"], ngImport: i0, template: "", isInline: true });
220
223
  }
221
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TokenSetBackendCallbackComponent, decorators: [{
222
225
  type: Component,
@@ -226,11 +229,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
226
229
  template: "",
227
230
  exportAs: "sdTokenSetBackendCallback",
228
231
  }]
229
- }], ctorParameters: () => [], propDecorators: { clientQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientQuery", required: false }] }], autoInitialize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoInitialize", required: false }] }] } });
232
+ }], ctorParameters: () => [], propDecorators: { clientQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientQuery", required: false }] }], clientGuard: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientGuard", required: false }] }], autoInitialize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoInitialize", required: false }] }] } });
230
233
 
231
234
  class TokenSetFrontendCallbackComponent {
232
235
  clientQuery = input(/* @ts-ignore */
233
236
  ...(ngDevMode ? [undefined, { debugName: "clientQuery" }] : /* istanbul ignore next */ []));
237
+ clientGuard = input(/* @ts-ignore */
238
+ ...(ngDevMode ? [undefined, { debugName: "clientGuard" }] : /* istanbul ignore next */ []));
234
239
  autoInitialize = input(true, /* @ts-ignore */
235
240
  ...(ngDevMode ? [{ debugName: "autoInitialize" }] : /* istanbul ignore next */ []));
236
241
  environment = inject(ENVIRONMENT);
@@ -268,12 +273,13 @@ class TokenSetFrontendCallbackComponent {
268
273
  registry: this.registry,
269
274
  callbackUrl: this.environment.router?.currentUrl()?.toString() ?? "",
270
275
  clientQuery: this.clientQuery(),
276
+ clientGuard: this.clientGuard(),
271
277
  initialize: this.autoInitialize(),
272
278
  }));
273
279
  });
274
280
  }
275
281
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TokenSetFrontendCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
276
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: TokenSetFrontendCallbackComponent, isStandalone: true, selector: "sd-token-set-frontend-callback", inputs: { clientQuery: { classPropertyName: "clientQuery", publicName: "clientQuery", isSignal: true, isRequired: false, transformFunction: null }, autoInitialize: { classPropertyName: "autoInitialize", publicName: "autoInitialize", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["sdTokenSetFrontendCallback"], ngImport: i0, template: "", isInline: true });
282
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: TokenSetFrontendCallbackComponent, isStandalone: true, selector: "sd-token-set-frontend-callback", inputs: { clientQuery: { classPropertyName: "clientQuery", publicName: "clientQuery", isSignal: true, isRequired: false, transformFunction: null }, clientGuard: { classPropertyName: "clientGuard", publicName: "clientGuard", isSignal: true, isRequired: false, transformFunction: null }, autoInitialize: { classPropertyName: "autoInitialize", publicName: "autoInitialize", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["sdTokenSetFrontendCallback"], ngImport: i0, template: "", isInline: true });
277
283
  }
278
284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TokenSetFrontendCallbackComponent, decorators: [{
279
285
  type: Component,
@@ -283,7 +289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
283
289
  template: "",
284
290
  exportAs: "sdTokenSetFrontendCallback",
285
291
  }]
286
- }], ctorParameters: () => [], propDecorators: { clientQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientQuery", required: false }] }], autoInitialize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoInitialize", required: false }] }] } });
292
+ }], ctorParameters: () => [], propDecorators: { clientQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientQuery", required: false }] }], clientGuard: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientGuard", required: false }] }], autoInitialize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoInitialize", required: false }] }] } });
287
293
 
288
294
  // Angular integration family for @securitydept/token-set-context-client
289
295
  //
@@ -1 +1 @@
1
- {"version":3,"file":"securitydept-token-set-context-client-angular.mjs","sources":["../../src/lib/client-registry.ts","../../src/lib/auth-coordination/planner-host.ts","../../src/lib/auth-coordination/secure-routes.ts","../../src/lib/client-registry-authorization.interceptor.ts","../../src/lib/components/backend-callback.component.ts","../../src/lib/components/frontend-callback.component.ts","../../src/lib/index.ts","../../src/public-api.ts","../../src/securitydept-token-set-context-client-angular.ts"],"sourcesContent":["import { InjectionToken, type Provider } from \"@angular/core\";\nimport { type FoundationEnvironment } from \"@securitydept/client\";\nimport {\n\tENVIRONMENT,\n\tprovideEnvironmentProvider,\n} from \"@securitydept/client-angular\";\nimport { type BaseOidcModeClient } from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tTOKEN_SET_CLIENT_REGISTRY as CORE_TOKEN_SET_CLIENT_REGISTRY,\n\ttype ProvideTokenSetClientRegistryOptions,\n\tprovideTokenSetClientRegistry as provideCoreTokenSetClientRegistry,\n\ttype TokenSetClientRegistry,\n} from \"@securitydept/token-set-context-client/registry\";\n\nexport const TOKEN_SET_CLIENT_REGISTRY = new InjectionToken<\n\tTokenSetClientRegistry<BaseOidcModeClient>\n>(\"TOKEN_SET_CLIENT_REGISTRY\");\n\nexport { type ProvideTokenSetClientRegistryOptions };\n\nexport function provideTokenSetClientRegistry(\n\toptions: ProvideTokenSetClientRegistryOptions = {},\n): Provider[] {\n\treturn [\n\t\t...provideCoreTokenSetClientRegistry(options).map(\n\t\t\tprovideEnvironmentProvider,\n\t\t),\n\t\t{\n\t\t\tprovide: TOKEN_SET_CLIENT_REGISTRY,\n\t\t\tuseFactory: (environment: FoundationEnvironment) =>\n\t\t\t\tenvironment.injector.get(CORE_TOKEN_SET_CLIENT_REGISTRY),\n\t\t\tdeps: [ENVIRONMENT],\n\t\t},\n\t];\n}\n","// Token-set requirement planner host — Angular DI adapter over core registry auth coordination\n\nimport {\n\ttype EnvironmentProviders,\n\tinject,\n\tmakeEnvironmentProviders,\n} from \"@angular/core\";\nimport {\n\tREQUIREMENT_PLANNER_HOST,\n\ttype RequirementPlannerHost,\n\ttype RouteBehaviourContextExtra,\n\tSecuritydeptInjector,\n} from \"@securitydept/client\";\nimport {\n\tENVIRONMENT,\n\tSECURITYDEPT_INJECTOR,\n} from \"@securitydept/client-angular\";\nimport { type BaseOidcModeClient } from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tTokenSetClientRegistryPlannerHost,\n\tTokenSetClientRegistryRequirementBehaviour,\n\ttype TokenSetClientRegistryRequirementBehaviourOptions,\n\ttype TokenSetClientRegistryRouteRequirementBehaviourShape,\n} from \"@securitydept/token-set-context-client/registry\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"../client-registry\";\n\n/** Options for {@link provideTokenSetRequirementPlannerHost}. */\nexport type ProvideTokenSetRequirementPlannerHostOptions =\n\tTokenSetClientRegistryRequirementBehaviourOptions<\n\t\tBaseOidcModeClient,\n\t\tRouteBehaviourContextExtra\n\t>;\n\n/**\n * Provide registry-backed requirement behaviour for Angular guards.\n *\n * This is intentionally a thin adapter over the framework-neutral registry\n * auth-coordination layer. Route requirements must carry\n * `attributes.query: TokenSetClientQueryOptions`.\n */\nexport function provideTokenSetRequirementPlannerHost(\n\toptions: ProvideTokenSetRequirementPlannerHostOptions = {},\n): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: SECURITYDEPT_INJECTOR,\n\t\t\tuseFactory: (): SecuritydeptInjector => {\n\t\t\t\tconst registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\t\t\t\tconst environment = inject(ENVIRONMENT);\n\t\t\t\tconst parentInjector =\n\t\t\t\t\tinject(SECURITYDEPT_INJECTOR, {\n\t\t\t\t\t\toptional: true,\n\t\t\t\t\t\tskipSelf: true,\n\t\t\t\t\t}) ?? undefined;\n\t\t\t\tconst parent = (parentInjector?.get(REQUIREMENT_PLANNER_HOST, null) ??\n\t\t\t\t\tundefined) as\n\t\t\t\t\t| RequirementPlannerHost<TokenSetClientRegistryRouteRequirementBehaviourShape>\n\t\t\t\t\t| undefined;\n\t\t\t\tconst behaviour = new TokenSetClientRegistryRequirementBehaviour<\n\t\t\t\t\tBaseOidcModeClient,\n\t\t\t\t\tRouteBehaviourContextExtra\n\t\t\t\t>(registry, options);\n\t\t\t\tconst host = new TokenSetClientRegistryPlannerHost<\n\t\t\t\t\tBaseOidcModeClient,\n\t\t\t\t\tRouteBehaviourContextExtra,\n\t\t\t\t\tTokenSetClientRegistryRouteRequirementBehaviourShape\n\t\t\t\t>(registry, behaviour, environment, parent);\n\t\t\t\tconst providers = [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: REQUIREMENT_PLANNER_HOST,\n\t\t\t\t\t\tuseValue: host as RequirementPlannerHost<unknown>,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t\treturn parentInjector\n\t\t\t\t\t? SecuritydeptInjector.fromParentInjector(parentInjector, providers)\n\t\t\t\t\t: SecuritydeptInjector.resolveAndCreate(providers);\n\t\t\t},\n\t\t},\n\t]);\n}\n","// Token-set secure route helpers — query-first registry requirements\n\nimport {\n\ttype CanActivateChildFn,\n\ttype CanActivateFn,\n\ttype Route,\n} from \"@angular/router\";\nimport { type RequirementsComposition } from \"@securitydept/client\";\nimport {\n\tsecureRoute as baseSecureRoute,\n\tsecureRouteRoot as baseSecureRouteRoot,\n\ttype CreateAngularGuardOptions,\n\tcreateAngularCanActivate,\n\tcreateAngularCanActivateChild,\n\ttype SecureRouteConfig,\n} from \"@securitydept/client-angular\";\nimport { type TokenSetClientRegistryAuthRequirement } from \"@securitydept/token-set-context-client/registry\";\nimport {\n\ttype ProvideTokenSetRequirementPlannerHostOptions,\n\tprovideTokenSetRequirementPlannerHost,\n} from \"./planner-host\";\n\n/** Serializable token-set security declaration for a child route. */\nexport interface TokenSetSecureRouteSecurityOptions {\n\t/** Requirements declared at this route segment. */\n\trequirements?: readonly TokenSetClientRegistryAuthRequirement[];\n\t/** Composition strategy against ancestor requirements (default `merge`). */\n\tcomposition?: RequirementsComposition;\n}\n\n/** Root-level token-set security: metadata plus registry behaviour hooks. */\nexport interface TokenSetSecureRouteRootSecurityOptions\n\textends TokenSetSecureRouteSecurityOptions,\n\t\tProvideTokenSetRequirementPlannerHostOptions {}\n\n/** Guard factory options specialized to token-set registry requirements. */\nexport type TokenSetAngularGuardOptions =\n\tCreateAngularGuardOptions<TokenSetClientRegistryAuthRequirement>;\n\n/**\n * Create a token-set `CanActivateFn`. The behaviour host is resolved from DI\n * (provided by {@link provideTokenSetRequirementPlannerHost}).\n */\nexport function createTokenSetCanActivate(\n\toptions?: TokenSetAngularGuardOptions,\n): CanActivateFn {\n\treturn createAngularCanActivate<TokenSetClientRegistryAuthRequirement>(\n\t\toptions,\n\t);\n}\n\n/**\n * Create a token-set `CanActivateChildFn`. The behaviour host is resolved from\n * DI (provided by {@link provideTokenSetRequirementPlannerHost}).\n */\nexport function createTokenSetCanActivateChild(\n\toptions?: TokenSetAngularGuardOptions,\n): CanActivateChildFn {\n\treturn createAngularCanActivateChild<TokenSetClientRegistryAuthRequirement>(\n\t\toptions,\n\t);\n}\n\n/**\n * Declare a secured child route. Writes token-set registry requirement\n * metadata only; enforcement is owned by a guarded\n * {@link secureTokenSetRouteRoot} ancestor.\n */\nexport function secureTokenSetRoute(\n\tpath: string,\n\tsecurity: TokenSetSecureRouteSecurityOptions = {},\n\trouteOptions?: SecureRouteConfig,\n): Route {\n\treturn baseSecureRoute<TokenSetClientRegistryAuthRequirement>(\n\t\tpath,\n\t\t{\n\t\t\trequirements: security.requirements,\n\t\t\tcomposition: security.composition,\n\t\t},\n\t\trouteOptions,\n\t);\n}\n\n/**\n * Declare a guarded token-set route root. Delegates guard assembly to the\n * client-angular base helper and mounts registry-backed behaviour hooks.\n */\nexport function secureTokenSetRouteRoot(\n\tpath: string,\n\tsecurity: TokenSetSecureRouteRootSecurityOptions = {},\n\trouteOptions?: SecureRouteConfig,\n): Route {\n\tconst providers = [\n\t\t...(routeOptions?.providers ?? []),\n\t\tprovideTokenSetRequirementPlannerHost({\n\t\t\tcheckClientAuthenticated: security.checkClientAuthenticated,\n\t\t\tonClientUnauthenticated: security.onClientUnauthenticated,\n\t\t\tselectClientCandidate: security.selectClientCandidate,\n\t\t}),\n\t];\n\treturn baseSecureRouteRoot<TokenSetClientRegistryAuthRequirement>(\n\t\tpath,\n\t\t{\n\t\t\trequirements: security.requirements,\n\t\t\tcomposition: security.composition,\n\t\t},\n\t\t{\n\t\t\t...routeOptions,\n\t\t\tproviders,\n\t\t},\n\t);\n}\n","import {\n\tHTTP_INTERCEPTORS,\n\ttype HttpEvent,\n\ttype HttpHandler,\n\ttype HttpHandlerFn,\n\ttype HttpInterceptor,\n\ttype HttpInterceptorFn,\n\ttype HttpRequest,\n} from \"@angular/common/http\";\nimport {\n\tInjectable,\n\tInjectionToken,\n\tinject,\n\ttype Provider,\n} from \"@angular/core\";\nimport { type BaseOidcModeClient } from \"@securitydept/token-set-context-client/orchestration\";\nimport { type TokenSetClientRegistry } from \"@securitydept/token-set-context-client/registry\";\nimport { from, type Observable, switchMap } from \"rxjs\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"./client-registry\";\n\nexport interface TokenSetClientRegistryAuthorizationRequest {\n\turl: string;\n\tclone(update: { setHeaders?: Record<string, string> }): unknown;\n}\n\nexport type TokenSetClientRegistryAuthorizationForRequest = (\n\tregistry: TokenSetClientRegistry<BaseOidcModeClient>,\n\trequest: TokenSetClientRegistryAuthorizationRequest,\n) => Promise<string | null | undefined> | string | null | undefined;\n\nexport interface TokenSetClientRegistryAuthorizationInterceptorProviderOptions {\n\t/**\n\t * Resolves the Authorization header value for a request.\n\t *\n\t * The default implementation selects a registered client by request URL,\n\t * initializes that client, and reads its replayed authorization header.\n\t */\n\tauthorizationForRequest?: TokenSetClientRegistryAuthorizationForRequest;\n}\n\nexport interface TokenSetClientRegistryAuthorizationInterceptorOptions\n\textends TokenSetClientRegistryAuthorizationInterceptorProviderOptions {\n\tregistry?: TokenSetClientRegistry<BaseOidcModeClient>;\n}\n\nexport const TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST =\n\tnew InjectionToken<TokenSetClientRegistryAuthorizationForRequest>(\n\t\t\"TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST\",\n\t);\n\n@Injectable()\nexport class TokenSetClientRegistryAuthorizationInterceptor\n\timplements HttpInterceptor\n{\n\tprivate readonly registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\tprivate readonly authorizationForRequest =\n\t\tinject(TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST, {\n\t\t\toptional: true,\n\t\t}) ?? defaultTokenSetClientRegistryAuthorizationForRequest;\n\n\tintercept(\n\t\treq: HttpRequest<unknown>,\n\t\tnext: HttpHandler,\n\t): Observable<HttpEvent<unknown>> {\n\t\treturn from(\n\t\t\tPromise.resolve(this.authorizationForRequest(this.registry, req)),\n\t\t).pipe(\n\t\t\tswitchMap((authorization) => {\n\t\t\t\tif (!authorization) {\n\t\t\t\t\treturn next.handle(req);\n\t\t\t\t}\n\t\t\t\treturn next.handle(\n\t\t\t\t\treq.clone({ setHeaders: { Authorization: authorization } }),\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function provideTokenSetClientRegistryAuthorizationInterceptor(\n\toptions?: TokenSetClientRegistryAuthorizationInterceptorProviderOptions,\n): Provider[] {\n\tconst providers: Provider[] = [\n\t\t{\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: TokenSetClientRegistryAuthorizationInterceptor,\n\t\t\tmulti: true,\n\t\t},\n\t];\n\tif (options) {\n\t\tif (options.authorizationForRequest) {\n\t\t\tproviders.push({\n\t\t\t\tprovide: TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST,\n\t\t\t\tuseValue: options.authorizationForRequest,\n\t\t\t});\n\t\t}\n\t}\n\treturn providers;\n}\n\nexport function createTokenSetClientRegistryAuthorizationInterceptor(\n\toptions?: TokenSetClientRegistryAuthorizationInterceptorOptions,\n): HttpInterceptorFn {\n\treturn function tokenSetClientRegistryAuthorizationInterceptorFn(\n\t\treq: HttpRequest<unknown>,\n\t\tnext: HttpHandlerFn,\n\t): Observable<HttpEvent<unknown>> {\n\t\tconst registry = options?.registry ?? inject(TOKEN_SET_CLIENT_REGISTRY);\n\t\tconst authorizationForRequest =\n\t\t\toptions?.authorizationForRequest ??\n\t\t\t(options\n\t\t\t\t? null\n\t\t\t\t: inject(TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST, {\n\t\t\t\t\t\toptional: true,\n\t\t\t\t\t})) ??\n\t\t\tdefaultTokenSetClientRegistryAuthorizationForRequest;\n\t\treturn from(Promise.resolve(authorizationForRequest(registry, req))).pipe(\n\t\t\tswitchMap((authorization) => {\n\t\t\t\tif (!authorization) {\n\t\t\t\t\treturn next(req);\n\t\t\t\t}\n\t\t\t\treturn next(\n\t\t\t\t\treq.clone({ setHeaders: { Authorization: authorization } }),\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t};\n}\n\nexport async function defaultTokenSetClientRegistryAuthorizationForRequest(\n\tregistry: TokenSetClientRegistry<BaseOidcModeClient>,\n\trequest: TokenSetClientRegistryAuthorizationRequest,\n): Promise<string | null> {\n\tconst record = await registry.clientRecordForQuery(\n\t\t{\n\t\t\turl: request.url,\n\t\t},\n\t\t{ initialize: true },\n\t);\n\tif (!record) {\n\t\treturn null;\n\t}\n\n\tconst header = await record.client.authorizationHeaderValue.whenValue();\n\treturn header ?? null;\n}\n","import {\n\tafterNextRender,\n\tComponent,\n\tDestroyRef,\n\tinject,\n\tinput,\n\ttype Signal,\n} from \"@angular/core\";\nimport {\n\tcreateComputed,\n\tcreateSignal,\n\ttype ResourceSnapshot,\n\tResourceStatus,\n\tresourceFromSnapshots,\n} from \"@securitydept/client\";\nimport { ENVIRONMENT, toNgSignal } from \"@securitydept/client-angular\";\nimport { type BackendOidcModeClient } from \"@securitydept/token-set-context-client/backend-oidc-mode\";\nimport {\n\tOidcModeCallbackHandlingKind,\n\ttype OidcModeCallbackHandlingResult,\n\ttype TokenSetAuthSnapshot,\n} from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tselectTokenSetBackendCallbackClientFromRegistry,\n\ttype TokenSetBackendCallbackClientFromRegistrySelectionSignal,\n\ttype TokenSetCallbackClientQuery,\n\tTokenSetCallbackClientSelectionKind,\n\ttype TokenSetCallbackClientSelectionSnapshot,\n} from \"@securitydept/token-set-context-client/registry\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"../client-registry\";\n\ntype BackendCallbackResult =\n\tOidcModeCallbackHandlingResult<TokenSetAuthSnapshot>;\n\n@Component({\n\tselector: \"sd-token-set-backend-callback\",\n\tstandalone: true,\n\ttemplate: \"\",\n\texportAs: \"sdTokenSetBackendCallback\",\n})\nexport class TokenSetBackendCallbackComponent {\n\treadonly clientQuery = input<TokenSetCallbackClientQuery | undefined>();\n\treadonly autoInitialize = input(true);\n\n\tprivate readonly environment = inject(ENVIRONMENT);\n\tprivate readonly registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\tprivate readonly selectionSource =\n\t\tcreateSignal<TokenSetBackendCallbackClientFromRegistrySelectionSignal | null>(\n\t\t\tnull,\n\t\t);\n\tprivate readonly selectionSignal = createComputed<\n\t\tTokenSetCallbackClientSelectionSnapshot<BackendOidcModeClient>\n\t>(\n\t\t() =>\n\t\t\tthis.selectionSource.get()?.get() ?? {\n\t\t\t\tstatus: ResourceStatus.Idle,\n\t\t\t},\n\t);\n\n\treadonly selection: Signal<\n\t\tTokenSetCallbackClientSelectionSnapshot<BackendOidcModeClient>\n\t> = toNgSignal(this.selectionSignal, { requireSync: true });\n\treadonly resource = resourceFromSnapshots<BackendCallbackResult>(() => {\n\t\tconst selection = this.selectionSignal.get();\n\t\tswitch (selection.status) {\n\t\t\tcase ResourceStatus.Idle:\n\t\t\t\treturn { status: ResourceStatus.Idle };\n\t\t\tcase ResourceStatus.Loading:\n\t\t\t\treturn { status: ResourceStatus.Loading };\n\t\t\tcase ResourceStatus.LoadingError:\n\t\t\t\treturn selection;\n\t\t\tcase ResourceStatus.Resolved:\n\t\t\t\treturn selection.value.kind ===\n\t\t\t\t\tTokenSetCallbackClientSelectionKind.NotApplicable\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tstatus: ResourceStatus.Resolved,\n\t\t\t\t\t\t\tvalue: { kind: OidcModeCallbackHandlingKind.NotApplicable },\n\t\t\t\t\t\t}\n\t\t\t\t\t: selection.value.client.callback.state.get();\n\t\t}\n\t});\n\treadonly state: Signal<ResourceSnapshot<BackendCallbackResult>> = toNgSignal(\n\t\tthis.resource,\n\t\t{ requireSync: true },\n\t);\n\n\tconstructor() {\n\t\tthis.destroyRef.onDestroy(() => this.resource.dispose());\n\t\tafterNextRender(() => {\n\t\t\tthis.selectionSource.set(\n\t\t\t\tselectTokenSetBackendCallbackClientFromRegistry({\n\t\t\t\t\tregistry: this.registry,\n\t\t\t\t\tcallbackUrl: this.environment.router?.currentUrl()?.toString() ?? \"\",\n\t\t\t\t\tclientQuery: this.clientQuery(),\n\t\t\t\t\tinitialize: this.autoInitialize(),\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tComponent,\n\tDestroyRef,\n\tinject,\n\tinput,\n\ttype Signal,\n} from \"@angular/core\";\nimport {\n\tcreateComputed,\n\tcreateSignal,\n\ttype ResourceSnapshot,\n\tResourceStatus,\n\tresourceFromSnapshots,\n} from \"@securitydept/client\";\nimport { ENVIRONMENT, toNgSignal } from \"@securitydept/client-angular\";\nimport {\n\ttype FrontendOidcModeCallbackResult,\n\ttype FrontendOidcModeClient,\n} from \"@securitydept/token-set-context-client/frontend-oidc-mode\";\nimport {\n\tOidcModeCallbackHandlingKind,\n\ttype OidcModeCallbackHandlingResult,\n} from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tselectTokenSetFrontendCallbackClientFromRegistry,\n\ttype TokenSetCallbackClientQuery,\n\tTokenSetCallbackClientSelectionKind,\n\ttype TokenSetCallbackClientSelectionSnapshot,\n\ttype TokenSetFrontendCallbackClientFromRegistrySelectionSignal,\n} from \"@securitydept/token-set-context-client/registry\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"../client-registry\";\n\ntype FrontendCallbackResult =\n\tOidcModeCallbackHandlingResult<FrontendOidcModeCallbackResult>;\n\n@Component({\n\tselector: \"sd-token-set-frontend-callback\",\n\tstandalone: true,\n\ttemplate: \"\",\n\texportAs: \"sdTokenSetFrontendCallback\",\n})\nexport class TokenSetFrontendCallbackComponent {\n\treadonly clientQuery = input<TokenSetCallbackClientQuery | undefined>();\n\treadonly autoInitialize = input(true);\n\n\tprivate readonly environment = inject(ENVIRONMENT);\n\tprivate readonly registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\tprivate readonly selectionSource =\n\t\tcreateSignal<TokenSetFrontendCallbackClientFromRegistrySelectionSignal | null>(\n\t\t\tnull,\n\t\t);\n\tprivate readonly selectionSignal = createComputed<\n\t\tTokenSetCallbackClientSelectionSnapshot<FrontendOidcModeClient>\n\t>(\n\t\t() =>\n\t\t\tthis.selectionSource.get()?.get() ?? {\n\t\t\t\tstatus: ResourceStatus.Idle,\n\t\t\t},\n\t);\n\n\treadonly selection: Signal<\n\t\tTokenSetCallbackClientSelectionSnapshot<FrontendOidcModeClient>\n\t> = toNgSignal(this.selectionSignal, { requireSync: true });\n\treadonly resource = resourceFromSnapshots<FrontendCallbackResult>(() => {\n\t\tconst selection = this.selectionSignal.get();\n\t\tswitch (selection.status) {\n\t\t\tcase ResourceStatus.Idle:\n\t\t\t\treturn { status: ResourceStatus.Idle };\n\t\t\tcase ResourceStatus.Loading:\n\t\t\t\treturn { status: ResourceStatus.Loading };\n\t\t\tcase ResourceStatus.LoadingError:\n\t\t\t\treturn selection;\n\t\t\tcase ResourceStatus.Resolved:\n\t\t\t\treturn selection.value.kind ===\n\t\t\t\t\tTokenSetCallbackClientSelectionKind.NotApplicable\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tstatus: ResourceStatus.Resolved,\n\t\t\t\t\t\t\tvalue: { kind: OidcModeCallbackHandlingKind.NotApplicable },\n\t\t\t\t\t\t}\n\t\t\t\t\t: selection.value.client.callback.state.get();\n\t\t}\n\t});\n\treadonly state: Signal<ResourceSnapshot<FrontendCallbackResult>> = toNgSignal(\n\t\tthis.resource,\n\t\t{ requireSync: true },\n\t);\n\n\tconstructor() {\n\t\tthis.destroyRef.onDestroy(() => this.resource.dispose());\n\t\tafterNextRender(() => {\n\t\t\tthis.selectionSource.set(\n\t\t\t\tselectTokenSetFrontendCallbackClientFromRegistry({\n\t\t\t\t\tregistry: this.registry,\n\t\t\t\t\tcallbackUrl: this.environment.router?.currentUrl()?.toString() ?? \"\",\n\t\t\t\t\tclientQuery: this.clientQuery(),\n\t\t\t\t\tinitialize: this.autoInitialize(),\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\t}\n}\n","// Angular integration family for @securitydept/token-set-context-client\n//\n// Canonical import path:\n// import { ... } from \"@securitydept/token-set-context-client-angular\"\n//\n// Multi-client-first Angular-native adapter surface:\n// - Keyed client registration via provideTokenSetClientRegistry()\n// - Multi-client lookup via the core TokenSetClientRegistry\n// - Per-client mode client replay signals with RxJS bridge support\n// - Client-registry authorization interceptor (functional + class-based)\n// - provideTokenSetClientRegistryAuthorizationInterceptor() for NgModule HTTP_INTERCEPTORS setup\n// - Requirement/provider-family → client key mapping\n// - secureTokenSetRouteRoot() / secureTokenSetRoute() — token-set Angular\n// Router route-security builders that delegate to the client-angular base\n// helpers and mount the token-set behaviour host.\n// - provideTokenSetRequirementPlannerHost() — provides the token-set\n// RequirementPlannerHost behaviour to the client-angular guard pipeline.\n// - createTokenSetCanActivate() / createTokenSetCanActivateChild() — token-set\n// named guard factories over the client-angular base guards.\n// - Signal/Observable bridge utilities live in @securitydept/client-angular\n//\n// Built by ng-packagr (APF / FESM2022). Decorators are fully supported.\n//\n// Stability: provisional (framework adapter)\n\nexport * from \"./auth-coordination\";\nexport * from \"./client-registry\";\nexport * from \"./client-registry-authorization.interceptor\";\nexport * from \"./components\";\n","/*\n * Public API Surface of @securitydept/token-set-context-client-angular\n */\n\nexport * from \"./lib\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["provideCoreTokenSetClientRegistry","CORE_TOKEN_SET_CLIENT_REGISTRY","baseSecureRoute","baseSecureRouteRoot"],"mappings":"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"}
1
+ {"version":3,"file":"securitydept-token-set-context-client-angular.mjs","sources":["../../src/lib/client-registry.ts","../../src/lib/auth-coordination/planner-host.ts","../../src/lib/auth-coordination/secure-routes.ts","../../src/lib/client-registry-authorization.interceptor.ts","../../src/lib/components/backend-callback.component.ts","../../src/lib/components/frontend-callback.component.ts","../../src/lib/index.ts","../../src/public-api.ts","../../src/securitydept-token-set-context-client-angular.ts"],"sourcesContent":["import { InjectionToken, type Provider } from \"@angular/core\";\nimport { type FoundationEnvironment } from \"@securitydept/client\";\nimport {\n\tENVIRONMENT,\n\tprovideEnvironmentProvider,\n} from \"@securitydept/client-angular\";\nimport { type BaseOidcModeClient } from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tTOKEN_SET_CLIENT_REGISTRY as CORE_TOKEN_SET_CLIENT_REGISTRY,\n\ttype ProvideTokenSetClientRegistryOptions,\n\tprovideTokenSetClientRegistry as provideCoreTokenSetClientRegistry,\n\ttype TokenSetClientRegistry,\n} from \"@securitydept/token-set-context-client/registry\";\n\nexport const TOKEN_SET_CLIENT_REGISTRY = new InjectionToken<\n\tTokenSetClientRegistry<BaseOidcModeClient>\n>(\"TOKEN_SET_CLIENT_REGISTRY\");\n\nexport { type ProvideTokenSetClientRegistryOptions };\n\nexport function provideTokenSetClientRegistry(\n\toptions: ProvideTokenSetClientRegistryOptions = {},\n): Provider[] {\n\treturn [\n\t\t...provideCoreTokenSetClientRegistry(options).map(\n\t\t\tprovideEnvironmentProvider,\n\t\t),\n\t\t{\n\t\t\tprovide: TOKEN_SET_CLIENT_REGISTRY,\n\t\t\tuseFactory: (environment: FoundationEnvironment) =>\n\t\t\t\tenvironment.injector.get(CORE_TOKEN_SET_CLIENT_REGISTRY),\n\t\t\tdeps: [ENVIRONMENT],\n\t\t},\n\t];\n}\n","// Token-set requirement planner host — Angular DI adapter over core registry auth coordination\n\nimport {\n\ttype EnvironmentProviders,\n\tinject,\n\tmakeEnvironmentProviders,\n} from \"@angular/core\";\nimport {\n\tREQUIREMENT_PLANNER_HOST,\n\ttype RequirementPlannerHost,\n\ttype RouteBehaviourContextExtra,\n\tSecuritydeptInjector,\n} from \"@securitydept/client\";\nimport {\n\tENVIRONMENT,\n\tSECURITYDEPT_INJECTOR,\n} from \"@securitydept/client-angular\";\nimport { type BaseOidcModeClient } from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tTokenSetClientRegistryPlannerHost,\n\tTokenSetClientRegistryRequirementBehaviour,\n\ttype TokenSetClientRegistryRequirementBehaviourOptions,\n\ttype TokenSetClientRegistryRouteRequirementBehaviourShape,\n} from \"@securitydept/token-set-context-client/registry\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"../client-registry\";\n\n/** Options for {@link provideTokenSetRequirementPlannerHost}. */\nexport type ProvideTokenSetRequirementPlannerHostOptions =\n\tTokenSetClientRegistryRequirementBehaviourOptions<\n\t\tBaseOidcModeClient,\n\t\tRouteBehaviourContextExtra\n\t>;\n\n/**\n * Provide registry-backed requirement behaviour for Angular guards.\n *\n * This is intentionally a thin adapter over the framework-neutral registry\n * auth-coordination layer. Route requirements must carry\n * `attributes.query: TokenSetClientQueryOptions`.\n */\nexport function provideTokenSetRequirementPlannerHost(\n\toptions: ProvideTokenSetRequirementPlannerHostOptions = {},\n): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: SECURITYDEPT_INJECTOR,\n\t\t\tuseFactory: (): SecuritydeptInjector => {\n\t\t\t\tconst registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\t\t\t\tconst environment = inject(ENVIRONMENT);\n\t\t\t\tconst parentInjector =\n\t\t\t\t\tinject(SECURITYDEPT_INJECTOR, {\n\t\t\t\t\t\toptional: true,\n\t\t\t\t\t\tskipSelf: true,\n\t\t\t\t\t}) ?? undefined;\n\t\t\t\tconst parent = (parentInjector?.get(REQUIREMENT_PLANNER_HOST, null) ??\n\t\t\t\t\tundefined) as\n\t\t\t\t\t| RequirementPlannerHost<TokenSetClientRegistryRouteRequirementBehaviourShape>\n\t\t\t\t\t| undefined;\n\t\t\t\tconst behaviour = new TokenSetClientRegistryRequirementBehaviour<\n\t\t\t\t\tBaseOidcModeClient,\n\t\t\t\t\tRouteBehaviourContextExtra\n\t\t\t\t>(registry, options);\n\t\t\t\tconst host = new TokenSetClientRegistryPlannerHost<\n\t\t\t\t\tBaseOidcModeClient,\n\t\t\t\t\tRouteBehaviourContextExtra,\n\t\t\t\t\tTokenSetClientRegistryRouteRequirementBehaviourShape\n\t\t\t\t>(registry, behaviour, environment, parent);\n\t\t\t\tconst providers = [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: REQUIREMENT_PLANNER_HOST,\n\t\t\t\t\t\tuseValue: host as RequirementPlannerHost<unknown>,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t\treturn parentInjector\n\t\t\t\t\t? SecuritydeptInjector.fromParentInjector(parentInjector, providers)\n\t\t\t\t\t: SecuritydeptInjector.resolveAndCreate(providers);\n\t\t\t},\n\t\t},\n\t]);\n}\n","// Token-set secure route helpers — query-first registry requirements\n\nimport {\n\ttype CanActivateChildFn,\n\ttype CanActivateFn,\n\ttype Route,\n} from \"@angular/router\";\nimport { type RequirementsComposition } from \"@securitydept/client\";\nimport {\n\tsecureRoute as baseSecureRoute,\n\tsecureRouteRoot as baseSecureRouteRoot,\n\ttype CreateAngularGuardOptions,\n\tcreateAngularCanActivate,\n\tcreateAngularCanActivateChild,\n\ttype SecureRouteConfig,\n} from \"@securitydept/client-angular\";\nimport { type TokenSetClientRegistryAuthRequirement } from \"@securitydept/token-set-context-client/registry\";\nimport {\n\ttype ProvideTokenSetRequirementPlannerHostOptions,\n\tprovideTokenSetRequirementPlannerHost,\n} from \"./planner-host\";\n\n/** Serializable token-set security declaration for a child route. */\nexport interface TokenSetSecureRouteSecurityOptions {\n\t/** Requirements declared at this route segment. */\n\trequirements?: readonly TokenSetClientRegistryAuthRequirement[];\n\t/** Composition strategy against ancestor requirements (default `merge`). */\n\tcomposition?: RequirementsComposition;\n}\n\n/** Root-level token-set security: metadata plus registry behaviour hooks. */\nexport interface TokenSetSecureRouteRootSecurityOptions\n\textends TokenSetSecureRouteSecurityOptions,\n\t\tProvideTokenSetRequirementPlannerHostOptions {}\n\n/** Guard factory options specialized to token-set registry requirements. */\nexport type TokenSetAngularGuardOptions =\n\tCreateAngularGuardOptions<TokenSetClientRegistryAuthRequirement>;\n\n/**\n * Create a token-set `CanActivateFn`. The behaviour host is resolved from DI\n * (provided by {@link provideTokenSetRequirementPlannerHost}).\n */\nexport function createTokenSetCanActivate(\n\toptions?: TokenSetAngularGuardOptions,\n): CanActivateFn {\n\treturn createAngularCanActivate<TokenSetClientRegistryAuthRequirement>(\n\t\toptions,\n\t);\n}\n\n/**\n * Create a token-set `CanActivateChildFn`. The behaviour host is resolved from\n * DI (provided by {@link provideTokenSetRequirementPlannerHost}).\n */\nexport function createTokenSetCanActivateChild(\n\toptions?: TokenSetAngularGuardOptions,\n): CanActivateChildFn {\n\treturn createAngularCanActivateChild<TokenSetClientRegistryAuthRequirement>(\n\t\toptions,\n\t);\n}\n\n/**\n * Declare a secured child route. Writes token-set registry requirement\n * metadata only; enforcement is owned by a guarded\n * {@link secureTokenSetRouteRoot} ancestor.\n */\nexport function secureTokenSetRoute(\n\tpath: string,\n\tsecurity: TokenSetSecureRouteSecurityOptions = {},\n\trouteOptions?: SecureRouteConfig,\n): Route {\n\treturn baseSecureRoute<TokenSetClientRegistryAuthRequirement>(\n\t\tpath,\n\t\t{\n\t\t\trequirements: security.requirements,\n\t\t\tcomposition: security.composition,\n\t\t},\n\t\trouteOptions,\n\t);\n}\n\n/**\n * Declare a guarded token-set route root. Delegates guard assembly to the\n * client-angular base helper and mounts registry-backed behaviour hooks.\n */\nexport function secureTokenSetRouteRoot(\n\tpath: string,\n\tsecurity: TokenSetSecureRouteRootSecurityOptions = {},\n\trouteOptions?: SecureRouteConfig,\n): Route {\n\tconst providers = [\n\t\t...(routeOptions?.providers ?? []),\n\t\tprovideTokenSetRequirementPlannerHost({\n\t\t\tcheckClientAuthenticated: security.checkClientAuthenticated,\n\t\t\tonClientUnauthenticated: security.onClientUnauthenticated,\n\t\t\tselectClientCandidate: security.selectClientCandidate,\n\t\t}),\n\t];\n\treturn baseSecureRouteRoot<TokenSetClientRegistryAuthRequirement>(\n\t\tpath,\n\t\t{\n\t\t\trequirements: security.requirements,\n\t\t\tcomposition: security.composition,\n\t\t},\n\t\t{\n\t\t\t...routeOptions,\n\t\t\tproviders,\n\t\t},\n\t);\n}\n","import {\n\tHTTP_INTERCEPTORS,\n\ttype HttpEvent,\n\ttype HttpHandler,\n\ttype HttpHandlerFn,\n\ttype HttpInterceptor,\n\ttype HttpInterceptorFn,\n\ttype HttpRequest,\n} from \"@angular/common/http\";\nimport {\n\tInjectable,\n\tInjectionToken,\n\tinject,\n\ttype Provider,\n} from \"@angular/core\";\nimport { type BaseOidcModeClient } from \"@securitydept/token-set-context-client/orchestration\";\nimport { type TokenSetClientRegistry } from \"@securitydept/token-set-context-client/registry\";\nimport { from, type Observable, switchMap } from \"rxjs\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"./client-registry\";\n\nexport interface TokenSetClientRegistryAuthorizationRequest {\n\turl: string;\n\tclone(update: { setHeaders?: Record<string, string> }): unknown;\n}\n\nexport type TokenSetClientRegistryAuthorizationForRequest = (\n\tregistry: TokenSetClientRegistry<BaseOidcModeClient>,\n\trequest: TokenSetClientRegistryAuthorizationRequest,\n) => Promise<string | null | undefined> | string | null | undefined;\n\nexport interface TokenSetClientRegistryAuthorizationInterceptorProviderOptions {\n\t/**\n\t * Resolves the Authorization header value for a request.\n\t *\n\t * The default implementation selects a registered client by request URL,\n\t * initializes that client, and reads its replayed authorization header.\n\t */\n\tauthorizationForRequest?: TokenSetClientRegistryAuthorizationForRequest;\n}\n\nexport interface TokenSetClientRegistryAuthorizationInterceptorOptions\n\textends TokenSetClientRegistryAuthorizationInterceptorProviderOptions {\n\tregistry?: TokenSetClientRegistry<BaseOidcModeClient>;\n}\n\nexport const TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST =\n\tnew InjectionToken<TokenSetClientRegistryAuthorizationForRequest>(\n\t\t\"TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST\",\n\t);\n\n@Injectable()\nexport class TokenSetClientRegistryAuthorizationInterceptor\n\timplements HttpInterceptor\n{\n\tprivate readonly registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\tprivate readonly authorizationForRequest =\n\t\tinject(TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST, {\n\t\t\toptional: true,\n\t\t}) ?? defaultTokenSetClientRegistryAuthorizationForRequest;\n\n\tintercept(\n\t\treq: HttpRequest<unknown>,\n\t\tnext: HttpHandler,\n\t): Observable<HttpEvent<unknown>> {\n\t\treturn from(\n\t\t\tPromise.resolve(this.authorizationForRequest(this.registry, req)),\n\t\t).pipe(\n\t\t\tswitchMap((authorization) => {\n\t\t\t\tif (!authorization) {\n\t\t\t\t\treturn next.handle(req);\n\t\t\t\t}\n\t\t\t\treturn next.handle(\n\t\t\t\t\treq.clone({ setHeaders: { Authorization: authorization } }),\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function provideTokenSetClientRegistryAuthorizationInterceptor(\n\toptions?: TokenSetClientRegistryAuthorizationInterceptorProviderOptions,\n): Provider[] {\n\tconst providers: Provider[] = [\n\t\t{\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: TokenSetClientRegistryAuthorizationInterceptor,\n\t\t\tmulti: true,\n\t\t},\n\t];\n\tif (options) {\n\t\tif (options.authorizationForRequest) {\n\t\t\tproviders.push({\n\t\t\t\tprovide: TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST,\n\t\t\t\tuseValue: options.authorizationForRequest,\n\t\t\t});\n\t\t}\n\t}\n\treturn providers;\n}\n\nexport function createTokenSetClientRegistryAuthorizationInterceptor(\n\toptions?: TokenSetClientRegistryAuthorizationInterceptorOptions,\n): HttpInterceptorFn {\n\treturn function tokenSetClientRegistryAuthorizationInterceptorFn(\n\t\treq: HttpRequest<unknown>,\n\t\tnext: HttpHandlerFn,\n\t): Observable<HttpEvent<unknown>> {\n\t\tconst registry = options?.registry ?? inject(TOKEN_SET_CLIENT_REGISTRY);\n\t\tconst authorizationForRequest =\n\t\t\toptions?.authorizationForRequest ??\n\t\t\t(options\n\t\t\t\t? null\n\t\t\t\t: inject(TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST, {\n\t\t\t\t\t\toptional: true,\n\t\t\t\t\t})) ??\n\t\t\tdefaultTokenSetClientRegistryAuthorizationForRequest;\n\t\treturn from(Promise.resolve(authorizationForRequest(registry, req))).pipe(\n\t\t\tswitchMap((authorization) => {\n\t\t\t\tif (!authorization) {\n\t\t\t\t\treturn next(req);\n\t\t\t\t}\n\t\t\t\treturn next(\n\t\t\t\t\treq.clone({ setHeaders: { Authorization: authorization } }),\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t};\n}\n\nexport async function defaultTokenSetClientRegistryAuthorizationForRequest(\n\tregistry: TokenSetClientRegistry<BaseOidcModeClient>,\n\trequest: TokenSetClientRegistryAuthorizationRequest,\n): Promise<string | null> {\n\tconst record = await registry.clientRecordForQuery(\n\t\t{\n\t\t\turl: request.url,\n\t\t},\n\t\t{ initialize: true },\n\t);\n\tif (!record) {\n\t\treturn null;\n\t}\n\n\tconst header = await record.client.authorizationHeaderValue.whenValue();\n\treturn header ?? null;\n}\n","import {\n\tafterNextRender,\n\tComponent,\n\tDestroyRef,\n\tinject,\n\tinput,\n\ttype Signal,\n} from \"@angular/core\";\nimport {\n\tcreateComputed,\n\tcreateSignal,\n\ttype ResourceSnapshot,\n\tResourceStatus,\n\tresourceFromSnapshots,\n} from \"@securitydept/client\";\nimport { ENVIRONMENT, toNgSignal } from \"@securitydept/client-angular\";\nimport {\n\tOidcModeCallbackHandlingKind,\n\ttype OidcModeCallbackHandlingResult,\n\ttype TokenSetAuthSnapshot,\n} from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tselectTokenSetBackendCallbackClientFromRegistry,\n\ttype TokenSetBackendCallbackClient,\n\ttype TokenSetBackendCallbackClientFromRegistrySelectionSignal,\n\ttype TokenSetCallbackClientGuard,\n\ttype TokenSetCallbackClientQuery,\n\tTokenSetCallbackClientSelectionKind,\n\ttype TokenSetCallbackClientSelectionSnapshot,\n} from \"@securitydept/token-set-context-client/registry\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"../client-registry\";\n\ntype BackendCallbackResult =\n\tOidcModeCallbackHandlingResult<TokenSetAuthSnapshot>;\n\n@Component({\n\tselector: \"sd-token-set-backend-callback\",\n\tstandalone: true,\n\ttemplate: \"\",\n\texportAs: \"sdTokenSetBackendCallback\",\n})\nexport class TokenSetBackendCallbackComponent {\n\treadonly clientQuery = input<TokenSetCallbackClientQuery | undefined>();\n\treadonly clientGuard =\n\t\tinput<TokenSetCallbackClientGuard<TokenSetBackendCallbackClient>>();\n\treadonly autoInitialize = input(true);\n\n\tprivate readonly environment = inject(ENVIRONMENT);\n\tprivate readonly registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\tprivate readonly selectionSource =\n\t\tcreateSignal<TokenSetBackendCallbackClientFromRegistrySelectionSignal | null>(\n\t\t\tnull,\n\t\t);\n\tprivate readonly selectionSignal = createComputed<\n\t\tTokenSetCallbackClientSelectionSnapshot<TokenSetBackendCallbackClient>\n\t>(\n\t\t() =>\n\t\t\tthis.selectionSource.get()?.get() ?? {\n\t\t\t\tstatus: ResourceStatus.Idle,\n\t\t\t},\n\t);\n\n\treadonly selection: Signal<\n\t\tTokenSetCallbackClientSelectionSnapshot<TokenSetBackendCallbackClient>\n\t> = toNgSignal(this.selectionSignal, { requireSync: true });\n\treadonly resource = resourceFromSnapshots<BackendCallbackResult>(() => {\n\t\tconst selection = this.selectionSignal.get();\n\t\tswitch (selection.status) {\n\t\t\tcase ResourceStatus.Idle:\n\t\t\t\treturn { status: ResourceStatus.Idle };\n\t\t\tcase ResourceStatus.Loading:\n\t\t\t\treturn { status: ResourceStatus.Loading };\n\t\t\tcase ResourceStatus.LoadingError:\n\t\t\t\treturn selection;\n\t\t\tcase ResourceStatus.Resolved:\n\t\t\t\treturn selection.value.kind ===\n\t\t\t\t\tTokenSetCallbackClientSelectionKind.NotApplicable\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tstatus: ResourceStatus.Resolved,\n\t\t\t\t\t\t\tvalue: { kind: OidcModeCallbackHandlingKind.NotApplicable },\n\t\t\t\t\t\t}\n\t\t\t\t\t: selection.value.client.callback.state.get();\n\t\t}\n\t});\n\treadonly state: Signal<ResourceSnapshot<BackendCallbackResult>> = toNgSignal(\n\t\tthis.resource,\n\t\t{ requireSync: true },\n\t);\n\n\tconstructor() {\n\t\tthis.destroyRef.onDestroy(() => this.resource.dispose());\n\t\tafterNextRender(() => {\n\t\t\tthis.selectionSource.set(\n\t\t\t\tselectTokenSetBackendCallbackClientFromRegistry({\n\t\t\t\t\tregistry: this.registry,\n\t\t\t\t\tcallbackUrl: this.environment.router?.currentUrl()?.toString() ?? \"\",\n\t\t\t\t\tclientQuery: this.clientQuery(),\n\t\t\t\t\tclientGuard: this.clientGuard(),\n\t\t\t\t\tinitialize: this.autoInitialize(),\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tComponent,\n\tDestroyRef,\n\tinject,\n\tinput,\n\ttype Signal,\n} from \"@angular/core\";\nimport {\n\tcreateComputed,\n\tcreateSignal,\n\ttype ResourceSnapshot,\n\tResourceStatus,\n\tresourceFromSnapshots,\n} from \"@securitydept/client\";\nimport { ENVIRONMENT, toNgSignal } from \"@securitydept/client-angular\";\nimport { type FrontendOidcModeCallbackResult } from \"@securitydept/token-set-context-client/frontend-oidc-mode\";\nimport {\n\tOidcModeCallbackHandlingKind,\n\ttype OidcModeCallbackHandlingResult,\n} from \"@securitydept/token-set-context-client/orchestration\";\nimport {\n\tselectTokenSetFrontendCallbackClientFromRegistry,\n\ttype TokenSetCallbackClientGuard,\n\ttype TokenSetCallbackClientQuery,\n\tTokenSetCallbackClientSelectionKind,\n\ttype TokenSetCallbackClientSelectionSnapshot,\n\ttype TokenSetFrontendCallbackClient,\n\ttype TokenSetFrontendCallbackClientFromRegistrySelectionSignal,\n} from \"@securitydept/token-set-context-client/registry\";\nimport { TOKEN_SET_CLIENT_REGISTRY } from \"../client-registry\";\n\ntype FrontendCallbackResult =\n\tOidcModeCallbackHandlingResult<FrontendOidcModeCallbackResult>;\n\n@Component({\n\tselector: \"sd-token-set-frontend-callback\",\n\tstandalone: true,\n\ttemplate: \"\",\n\texportAs: \"sdTokenSetFrontendCallback\",\n})\nexport class TokenSetFrontendCallbackComponent {\n\treadonly clientQuery = input<TokenSetCallbackClientQuery | undefined>();\n\treadonly clientGuard =\n\t\tinput<TokenSetCallbackClientGuard<TokenSetFrontendCallbackClient>>();\n\treadonly autoInitialize = input(true);\n\n\tprivate readonly environment = inject(ENVIRONMENT);\n\tprivate readonly registry = inject(TOKEN_SET_CLIENT_REGISTRY);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\tprivate readonly selectionSource =\n\t\tcreateSignal<TokenSetFrontendCallbackClientFromRegistrySelectionSignal | null>(\n\t\t\tnull,\n\t\t);\n\tprivate readonly selectionSignal = createComputed<\n\t\tTokenSetCallbackClientSelectionSnapshot<TokenSetFrontendCallbackClient>\n\t>(\n\t\t() =>\n\t\t\tthis.selectionSource.get()?.get() ?? {\n\t\t\t\tstatus: ResourceStatus.Idle,\n\t\t\t},\n\t);\n\n\treadonly selection: Signal<\n\t\tTokenSetCallbackClientSelectionSnapshot<TokenSetFrontendCallbackClient>\n\t> = toNgSignal(this.selectionSignal, { requireSync: true });\n\treadonly resource = resourceFromSnapshots<FrontendCallbackResult>(() => {\n\t\tconst selection = this.selectionSignal.get();\n\t\tswitch (selection.status) {\n\t\t\tcase ResourceStatus.Idle:\n\t\t\t\treturn { status: ResourceStatus.Idle };\n\t\t\tcase ResourceStatus.Loading:\n\t\t\t\treturn { status: ResourceStatus.Loading };\n\t\t\tcase ResourceStatus.LoadingError:\n\t\t\t\treturn selection;\n\t\t\tcase ResourceStatus.Resolved:\n\t\t\t\treturn selection.value.kind ===\n\t\t\t\t\tTokenSetCallbackClientSelectionKind.NotApplicable\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tstatus: ResourceStatus.Resolved,\n\t\t\t\t\t\t\tvalue: { kind: OidcModeCallbackHandlingKind.NotApplicable },\n\t\t\t\t\t\t}\n\t\t\t\t\t: selection.value.client.callback.state.get();\n\t\t}\n\t});\n\treadonly state: Signal<ResourceSnapshot<FrontendCallbackResult>> = toNgSignal(\n\t\tthis.resource,\n\t\t{ requireSync: true },\n\t);\n\n\tconstructor() {\n\t\tthis.destroyRef.onDestroy(() => this.resource.dispose());\n\t\tafterNextRender(() => {\n\t\t\tthis.selectionSource.set(\n\t\t\t\tselectTokenSetFrontendCallbackClientFromRegistry({\n\t\t\t\t\tregistry: this.registry,\n\t\t\t\t\tcallbackUrl: this.environment.router?.currentUrl()?.toString() ?? \"\",\n\t\t\t\t\tclientQuery: this.clientQuery(),\n\t\t\t\t\tclientGuard: this.clientGuard(),\n\t\t\t\t\tinitialize: this.autoInitialize(),\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\t}\n}\n","// Angular integration family for @securitydept/token-set-context-client\n//\n// Canonical import path:\n// import { ... } from \"@securitydept/token-set-context-client-angular\"\n//\n// Multi-client-first Angular-native adapter surface:\n// - Keyed client registration via provideTokenSetClientRegistry()\n// - Multi-client lookup via the core TokenSetClientRegistry\n// - Per-client mode client replay signals with RxJS bridge support\n// - Client-registry authorization interceptor (functional + class-based)\n// - provideTokenSetClientRegistryAuthorizationInterceptor() for NgModule HTTP_INTERCEPTORS setup\n// - Requirement/provider-family → client key mapping\n// - secureTokenSetRouteRoot() / secureTokenSetRoute() — token-set Angular\n// Router route-security builders that delegate to the client-angular base\n// helpers and mount the token-set behaviour host.\n// - provideTokenSetRequirementPlannerHost() — provides the token-set\n// RequirementPlannerHost behaviour to the client-angular guard pipeline.\n// - createTokenSetCanActivate() / createTokenSetCanActivateChild() — token-set\n// named guard factories over the client-angular base guards.\n// - Signal/Observable bridge utilities live in @securitydept/client-angular\n//\n// Built by ng-packagr (APF / FESM2022). Decorators are fully supported.\n//\n// Stability: provisional (framework adapter)\n\nexport * from \"./auth-coordination\";\nexport * from \"./client-registry\";\nexport * from \"./client-registry-authorization.interceptor\";\nexport * from \"./components\";\n","/*\n * Public API Surface of @securitydept/token-set-context-client-angular\n */\n\nexport * from \"./lib\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["provideCoreTokenSetClientRegistry","CORE_TOKEN_SET_CLIENT_REGISTRY","baseSecureRoute","baseSecureRouteRoot"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@securitydept/token-set-context-client-angular",
3
- "version": "0.3.0-beta.8",
3
+ "version": "0.3.0-beta.9",
4
4
  "description": "Token Set Context Client Angular 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.",
5
5
  "author": "Zhou Yeheng <root@aitiotekt.com>",
6
6
  "license": "MIT",
@@ -45,9 +45,9 @@
45
45
  "@angular/common": ">=19.0.0",
46
46
  "@angular/router": ">=19.0.0",
47
47
  "rxjs": ">=7.0.0",
48
- "@securitydept/client": "0.3.0-beta.8",
49
- "@securitydept/token-set-context-client": "0.3.0-beta.8",
50
- "@securitydept/client-angular": "0.3.0-beta.8"
48
+ "@securitydept/client-angular": "0.3.0-beta.9",
49
+ "@securitydept/client": "0.3.0-beta.9",
50
+ "@securitydept/token-set-context-client": "0.3.0-beta.9"
51
51
  },
52
52
  "module": "fesm2022/securitydept-token-set-context-client-angular.mjs",
53
53
  "typings": "types/securitydept-token-set-context-client-angular.d.ts",
@@ -1,16 +1,15 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { EnvironmentProviders, InjectionToken, Provider, Signal } from '@angular/core';
3
3
  import * as _securitydept_client from '@securitydept/client';
4
4
  import { RouteBehaviourContextExtra, RequirementsComposition, ResourceSnapshot } from '@securitydept/client';
5
5
  import { BaseOidcModeClient, OidcModeCallbackHandlingResult, TokenSetAuthSnapshot } from '@securitydept/token-set-context-client/orchestration';
6
- import { TokenSetClientRegistryRequirementBehaviourOptions, TokenSetClientRegistryAuthRequirement, TokenSetClientRegistry, ProvideTokenSetClientRegistryOptions, TokenSetCallbackClientQuery, TokenSetCallbackClientSelectionSnapshot } from '@securitydept/token-set-context-client/registry';
6
+ import { TokenSetClientRegistryRequirementBehaviourOptions, TokenSetClientRegistryAuthRequirement, TokenSetClientRegistry, ProvideTokenSetClientRegistryOptions, TokenSetCallbackClientQuery, TokenSetCallbackClientGuard, TokenSetBackendCallbackClient, TokenSetCallbackClientSelectionSnapshot, TokenSetFrontendCallbackClient } from '@securitydept/token-set-context-client/registry';
7
7
  export { ProvideTokenSetClientRegistryOptions } from '@securitydept/token-set-context-client/registry';
8
8
  import { CanActivateFn, CanActivateChildFn, Route } from '@angular/router';
9
9
  import { CreateAngularGuardOptions, SecureRouteConfig } from '@securitydept/client-angular';
10
10
  import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpInterceptorFn } from '@angular/common/http';
11
11
  import { Observable } from 'rxjs';
12
- import { BackendOidcModeClient } from '@securitydept/token-set-context-client/backend-oidc-mode';
13
- import { FrontendOidcModeClient, FrontendOidcModeCallbackResult } from '@securitydept/token-set-context-client/frontend-oidc-mode';
12
+ import { FrontendOidcModeCallbackResult } from '@securitydept/token-set-context-client/frontend-oidc-mode';
14
13
 
15
14
  /** Options for {@link provideTokenSetRequirementPlannerHost}. */
16
15
  type ProvideTokenSetRequirementPlannerHostOptions = TokenSetClientRegistryRequirementBehaviourOptions<BaseOidcModeClient, RouteBehaviourContextExtra>;
@@ -85,8 +84,8 @@ declare class TokenSetClientRegistryAuthorizationInterceptor implements HttpInte
85
84
  private readonly registry;
86
85
  private readonly authorizationForRequest;
87
86
  intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
88
- static ɵfac: i0.ɵɵFactoryDeclaration<TokenSetClientRegistryAuthorizationInterceptor, never>;
89
- static ɵprov: i0.ɵɵInjectableDeclaration<TokenSetClientRegistryAuthorizationInterceptor>;
87
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TokenSetClientRegistryAuthorizationInterceptor, never>;
88
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<TokenSetClientRegistryAuthorizationInterceptor>;
90
89
  }
91
90
  declare function provideTokenSetClientRegistryAuthorizationInterceptor(options?: TokenSetClientRegistryAuthorizationInterceptorProviderOptions): Provider[];
92
91
  declare function createTokenSetClientRegistryAuthorizationInterceptor(options?: TokenSetClientRegistryAuthorizationInterceptorOptions): HttpInterceptorFn;
@@ -94,36 +93,38 @@ declare function defaultTokenSetClientRegistryAuthorizationForRequest(registry:
94
93
 
95
94
  type BackendCallbackResult = OidcModeCallbackHandlingResult<TokenSetAuthSnapshot>;
96
95
  declare class TokenSetBackendCallbackComponent {
97
- readonly clientQuery: i0.InputSignal<TokenSetCallbackClientQuery | undefined>;
98
- readonly autoInitialize: i0.InputSignal<boolean>;
96
+ readonly clientQuery: _angular_core.InputSignal<TokenSetCallbackClientQuery | undefined>;
97
+ readonly clientGuard: _angular_core.InputSignal<TokenSetCallbackClientGuard<TokenSetBackendCallbackClient> | undefined>;
98
+ readonly autoInitialize: _angular_core.InputSignal<boolean>;
99
99
  private readonly environment;
100
100
  private readonly registry;
101
101
  private readonly destroyRef;
102
102
  private readonly selectionSource;
103
103
  private readonly selectionSignal;
104
- readonly selection: Signal<TokenSetCallbackClientSelectionSnapshot<BackendOidcModeClient>>;
104
+ readonly selection: Signal<TokenSetCallbackClientSelectionSnapshot<TokenSetBackendCallbackClient>>;
105
105
  readonly resource: _securitydept_client.WithInteropObservableTraitCompat<_securitydept_client.ResourceTrait<BackendCallbackResult>, ResourceSnapshot<BackendCallbackResult>>;
106
106
  readonly state: Signal<ResourceSnapshot<BackendCallbackResult>>;
107
107
  constructor();
108
- static ɵfac: i0.ɵɵFactoryDeclaration<TokenSetBackendCallbackComponent, never>;
109
- static ɵcmp: i0.ɵɵComponentDeclaration<TokenSetBackendCallbackComponent, "sd-token-set-backend-callback", ["sdTokenSetBackendCallback"], { "clientQuery": { "alias": "clientQuery"; "required": false; "isSignal": true; }; "autoInitialize": { "alias": "autoInitialize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
108
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TokenSetBackendCallbackComponent, never>;
109
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TokenSetBackendCallbackComponent, "sd-token-set-backend-callback", ["sdTokenSetBackendCallback"], { "clientQuery": { "alias": "clientQuery"; "required": false; "isSignal": true; }; "clientGuard": { "alias": "clientGuard"; "required": false; "isSignal": true; }; "autoInitialize": { "alias": "autoInitialize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
110
110
  }
111
111
 
112
112
  type FrontendCallbackResult = OidcModeCallbackHandlingResult<FrontendOidcModeCallbackResult>;
113
113
  declare class TokenSetFrontendCallbackComponent {
114
- readonly clientQuery: i0.InputSignal<TokenSetCallbackClientQuery | undefined>;
115
- readonly autoInitialize: i0.InputSignal<boolean>;
114
+ readonly clientQuery: _angular_core.InputSignal<TokenSetCallbackClientQuery | undefined>;
115
+ readonly clientGuard: _angular_core.InputSignal<TokenSetCallbackClientGuard<TokenSetFrontendCallbackClient> | undefined>;
116
+ readonly autoInitialize: _angular_core.InputSignal<boolean>;
116
117
  private readonly environment;
117
118
  private readonly registry;
118
119
  private readonly destroyRef;
119
120
  private readonly selectionSource;
120
121
  private readonly selectionSignal;
121
- readonly selection: Signal<TokenSetCallbackClientSelectionSnapshot<FrontendOidcModeClient>>;
122
+ readonly selection: Signal<TokenSetCallbackClientSelectionSnapshot<TokenSetFrontendCallbackClient>>;
122
123
  readonly resource: _securitydept_client.WithInteropObservableTraitCompat<_securitydept_client.ResourceTrait<FrontendCallbackResult>, ResourceSnapshot<FrontendCallbackResult>>;
123
124
  readonly state: Signal<ResourceSnapshot<FrontendCallbackResult>>;
124
125
  constructor();
125
- static ɵfac: i0.ɵɵFactoryDeclaration<TokenSetFrontendCallbackComponent, never>;
126
- static ɵcmp: i0.ɵɵComponentDeclaration<TokenSetFrontendCallbackComponent, "sd-token-set-frontend-callback", ["sdTokenSetFrontendCallback"], { "clientQuery": { "alias": "clientQuery"; "required": false; "isSignal": true; }; "autoInitialize": { "alias": "autoInitialize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
126
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TokenSetFrontendCallbackComponent, never>;
127
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TokenSetFrontendCallbackComponent, "sd-token-set-frontend-callback", ["sdTokenSetFrontendCallback"], { "clientQuery": { "alias": "clientQuery"; "required": false; "isSignal": true; }; "clientGuard": { "alias": "clientGuard"; "required": false; "isSignal": true; }; "autoInitialize": { "alias": "autoInitialize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
127
128
  }
128
129
 
129
130
  export { TOKEN_SET_CLIENT_REGISTRY, TOKEN_SET_CLIENT_REGISTRY_AUTHORIZATION_FOR_REQUEST, TokenSetBackendCallbackComponent, TokenSetClientRegistryAuthorizationInterceptor, TokenSetFrontendCallbackComponent, createTokenSetCanActivate, createTokenSetCanActivateChild, createTokenSetClientRegistryAuthorizationInterceptor, defaultTokenSetClientRegistryAuthorizationForRequest, provideTokenSetClientRegistry, provideTokenSetClientRegistryAuthorizationInterceptor, provideTokenSetRequirementPlannerHost, secureTokenSetRoute, secureTokenSetRouteRoot };
@@ -1 +1 @@
1
- {"version":3,"file":"securitydept-token-set-context-client-angular.d.ts","sources":["../../src/lib/auth-coordination/planner-host.ts","../../src/lib/auth-coordination/secure-routes.ts","../../src/lib/client-registry.ts","../../src/lib/client-registry-authorization.interceptor.ts","../../src/lib/components/backend-callback.component.ts","../../src/lib/components/frontend-callback.component.ts"],"mappings":";;;;;;;;;;;;;;AA0BA;AACM,KAAM,4CAA4C,GACvD,iDAAiD,CAChD,kBAAkB,EAClB,0BAA0B;AAG5B;;;;;;AAMG;AACH,iBAAgB,qCAAqC,WAC3C,4CAAiD,GACxD,oBAAoB;;ACpBvB;UACiB,kCAAkC;;AAElD,4BAAwB,qCAAqC;;kBAE/C,uBAAuB;AACrC;AAED;AACM,UAAW,sCAChB,SAAQ,kCAAkC,EACzC,4CAA4C;AAAG;AAEjD;KACY,2BAA2B,GACtC,yBAAyB,CAAC,qCAAqC;AAEhE;;;AAGG;AACH,iBAAgB,yBAAyB,WAC9B,2BAA2B,GACnC,aAAa;AAMhB;;;AAGG;AACH,iBAAgB,8BAA8B,WACnC,2BAA2B,GACnC,kBAAkB;AAMrB;;;;AAIG;AACH,iBAAgB,mBAAmB,0BAExB,kCAAuC,iBAClC,iBAAiB,GAC9B,KAAK;AAWR;;;AAGG;AACH,iBAAgB,uBAAuB,0BAE5B,sCAA2C,iBACtC,iBAAiB,GAC9B,KAAK;;AC7ER,cAAa,yBAAyB,EAAA,cAAA,CAAA,sBAAA,CAAA,kBAAA;;AAMtC,iBAAgB,6BAA6B,WACnC,oCAAyC,GAChD,QAAQ;;UCFM,0CAA0C;;;qBAE7B,MAAM;AAAkB;AACrD;AAEK,KAAM,6CAA6C,cAC9C,sBAAsB,CAAC,kBAAkB,YAC1C,0CAA0C,KAC/C,OAAO;UAEK,6DAA6D;AAC7E;;;;;AAKG;8BACuB,6CAA6C;AACvE;AAEK,UAAW,qDAChB,SAAQ,6DAA6D;AACrE,eAAW,sBAAsB,CAAC,kBAAkB;AACpD;AAED,cAAa,mDAAmD,EAAA,cAAA,CAAA,6CAAA;AAKhE,cACa,8CACZ,YAAW,eAAe;AAE1B;AACA;AAKA,mBACM,WAAW,iBACV,WAAW,GACf,UAAU,CAAC,SAAS;yCAZX,8CAA8C;6CAA9C,8CAA8C;AA0B1D;AAED,iBAAgB,qDAAqD,WAC1D,6DAA6D,GACrE,QAAQ;AAmBX,iBAAgB,oDAAoD,WACzD,qDAAqD,GAC7D,iBAAiB;AA2BpB,iBAAsB,oDAAoD,WAC/D,sBAAsB,CAAC,kBAAkB,YAC1C,0CAA0C,GACjD,OAAO;;ACrGV,KAAK,qBAAqB,GACzB,8BAA8B,CAAC,oBAAoB;AAEpD,cAMa,gCAAgC;0BACxBA,EAAA,CAAA,WAAA,CAAA,2BAAA;6BACGA,EAAA,CAAA,WAAA;AAEvB;AACA;AACA;AACA;AAIA;wBASoB,MAAM,CACzB,uCAAuC,CAAC,qBAAqB;uBAE7C,oBAAA,CAAA,gCAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,qBAAA,GAAA,gBAAA,CAAA,qBAAA;oBAmBD,MAAM,CAAC,gBAAgB,CAAC,qBAAqB;;yCA1CjD,gCAAgC;2CAAhC,gCAAgC;AA4D5C;;ACnED,KAAK,sBAAsB,GAC1B,8BAA8B,CAAC,8BAA8B;AAE9D,cAMa,iCAAiC;0BACzBA,EAAA,CAAA,WAAA,CAAA,2BAAA;6BACGA,EAAA,CAAA,WAAA;AAEvB;AACA;AACA;AACA;AAIA;wBASoB,MAAM,CACzB,uCAAuC,CAAC,sBAAsB;uBAE9C,oBAAA,CAAA,gCAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,sBAAA,GAAA,gBAAA,CAAA,sBAAA;oBAmBD,MAAM,CAAC,gBAAgB,CAAC,sBAAsB;;yCA1ClD,iCAAiC;2CAAjC,iCAAiC;AA4D7C;;;;","names":["_angular_core"]}
1
+ {"version":3,"file":"securitydept-token-set-context-client-angular.d.ts","sources":["../../src/lib/auth-coordination/planner-host.ts","../../src/lib/auth-coordination/secure-routes.ts","../../src/lib/client-registry.ts","../../src/lib/client-registry-authorization.interceptor.ts","../../src/lib/components/backend-callback.component.ts","../../src/lib/components/frontend-callback.component.ts"],"mappings":";;;;;;;;;;;;;AA0BA;AACM,KAAM,4CAA4C,GACvD,iDAAiD,CAChD,kBAAkB,EAClB,0BAA0B;AAG5B;;;;;;AAMG;AACH,iBAAgB,qCAAqC,WAC3C,4CAAiD,GACxD,oBAAoB;;ACpBvB;UACiB,kCAAkC;;AAElD,4BAAwB,qCAAqC;;kBAE/C,uBAAuB;AACrC;AAED;AACM,UAAW,sCAChB,SAAQ,kCAAkC,EACzC,4CAA4C;AAAG;AAEjD;KACY,2BAA2B,GACtC,yBAAyB,CAAC,qCAAqC;AAEhE;;;AAGG;AACH,iBAAgB,yBAAyB,WAC9B,2BAA2B,GACnC,aAAa;AAMhB;;;AAGG;AACH,iBAAgB,8BAA8B,WACnC,2BAA2B,GACnC,kBAAkB;AAMrB;;;;AAIG;AACH,iBAAgB,mBAAmB,0BAExB,kCAAuC,iBAClC,iBAAiB,GAC9B,KAAK;AAWR;;;AAGG;AACH,iBAAgB,uBAAuB,0BAE5B,sCAA2C,iBACtC,iBAAiB,GAC9B,KAAK;;AC7ER,cAAa,yBAAyB,EAAA,cAAA,CAAA,sBAAA,CAAA,kBAAA;;AAMtC,iBAAgB,6BAA6B,WACnC,oCAAyC,GAChD,QAAQ;;UCFM,0CAA0C;;;qBAE7B,MAAM;AAAkB;AACrD;AAEK,KAAM,6CAA6C,cAC9C,sBAAsB,CAAC,kBAAkB,YAC1C,0CAA0C,KAC/C,OAAO;UAEK,6DAA6D;AAC7E;;;;;AAKG;8BACuB,6CAA6C;AACvE;AAEK,UAAW,qDAChB,SAAQ,6DAA6D;AACrE,eAAW,sBAAsB,CAAC,kBAAkB;AACpD;AAED,cAAa,mDAAmD,EAAA,cAAA,CAAA,6CAAA;AAKhE,cACa,8CACZ,YAAW,eAAe;AAE1B;AACA;AAKA,mBACM,WAAW,iBACV,WAAW,GACf,UAAU,CAAC,SAAS;oDAZX,8CAA8C;wDAA9C,8CAA8C;AA0B1D;AAED,iBAAgB,qDAAqD,WAC1D,6DAA6D,GACrE,QAAQ;AAmBX,iBAAgB,oDAAoD,WACzD,qDAAqD,GAC7D,iBAAiB;AA2BpB,iBAAsB,oDAAoD,WAC/D,sBAAsB,CAAC,kBAAkB,YAC1C,0CAA0C,GACjD,OAAO;;ACpGV,KAAK,qBAAqB,GACzB,8BAA8B,CAAC,oBAAoB;AAEpD,cAMa,gCAAgC;0BACxB,aAAA,CAAA,WAAA,CAAA,2BAAA;0BACA,aAAA,CAAA,WAAA,CAAA,2BAAA,CAAA,6BAAA;6BAEG,aAAA,CAAA,WAAA;AAEvB;AACA;AACA;AACA;AAIA;wBASoB,MAAM,CACzB,uCAAuC,CAAC,6BAA6B;uBAErD,oBAAA,CAAA,gCAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,qBAAA,GAAA,gBAAA,CAAA,qBAAA;oBAmBD,MAAM,CAAC,gBAAgB,CAAC,qBAAqB;;oDA5CjD,gCAAgC;sDAAhC,gCAAgC;AA+D5C;;ACxED,KAAK,sBAAsB,GAC1B,8BAA8B,CAAC,8BAA8B;AAE9D,cAMa,iCAAiC;0BACzB,aAAA,CAAA,WAAA,CAAA,2BAAA;0BACA,aAAA,CAAA,WAAA,CAAA,2BAAA,CAAA,8BAAA;6BAEG,aAAA,CAAA,WAAA;AAEvB;AACA;AACA;AACA;AAIA;wBASoB,MAAM,CACzB,uCAAuC,CAAC,8BAA8B;uBAEtD,oBAAA,CAAA,gCAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,sBAAA,GAAA,gBAAA,CAAA,sBAAA;oBAmBD,MAAM,CAAC,gBAAgB,CAAC,sBAAsB;;oDA5ClD,iCAAiC;sDAAjC,iCAAiC;AA+D7C;;;;","names":[]}