@enterprisestandard/core 0.0.19 → 0.0.20-beta.20260522.1

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/dist/index.d.ts CHANGED
@@ -2333,6 +2333,10 @@ type RemoteConfigRetryContext = {
2333
2333
  nextDelayMs: number;
2334
2334
  /** Maximum delay allowed by the policy. */
2335
2335
  maxDelayMs: number;
2336
+ /** Best-effort source error code when known. */
2337
+ code?: string;
2338
+ /** Best-effort source status when known. */
2339
+ status?: number;
2336
2340
  /** Config source transport when known, such as "vault", "azure", or "aws". */
2337
2341
  sourceType?: ConfigSourceType | string;
2338
2342
  /** Config path when known. */
@@ -2438,8 +2442,14 @@ interface TenantWebhookPayload {
2438
2442
  expiresAt?: string;
2439
2443
  error?: string;
2440
2444
  }
2441
- declare class TenantRequestError extends Error {
2442
- constructor(message: string, options?: ErrorOptions);
2445
+ type ESErrorOptions = ErrorOptions & {
2446
+ status?: number;
2447
+ statusText?: string;
2448
+ };
2449
+ declare class ESError extends Error {
2450
+ readonly status?: number;
2451
+ readonly statusText?: string;
2452
+ constructor(message: string, options?: ESErrorOptions);
2443
2453
  }
2444
2454
  declare class MultipleTenantsForUserError extends Error {
2445
2455
  readonly userId: string;
@@ -3165,7 +3175,15 @@ type ESResolvedRoute = {
3165
3175
  handler: (request: Request) => Promise<Response>;
3166
3176
  };
3167
3177
  type ESRouteFilterResult = "continue" | "not_handled" | Response;
3178
+ /** Default maximum time, in milliseconds, that `es.handler(request)` waits for config readiness. */
3179
+ declare const DEFAULT_HANDLER_READY_TIMEOUT = 1e4;
3168
3180
  type ESRoutingOptions = {
3181
+ /**
3182
+ * Maximum time, in milliseconds, that SDK-owned HTTP handlers wait for
3183
+ * this ES instance to become ready before returning 503.
3184
+ * @default 10000
3185
+ */
3186
+ readyTimeout?: number;
3169
3187
  /**
3170
3188
  * Runs before routing. Return:
3171
3189
  * - 'continue' or undefined to keep routing
@@ -3674,4 +3692,4 @@ type LfvErrorResponse = {
3674
3692
  error: LfvErrorCode;
3675
3693
  message: string;
3676
3694
  };
3677
- export { workloadTokenResponseSchema, withValidate, waitOn, version, validationFailureResponse, userSchema, tokenResponseSchema, stripJsonComments, silentLogger, serializeESConfig, sendTenantWebhook, parseJsonc, oidcCallbackSchema, normalizeTenantRoutingStrategy, normalizeTenantPathNamespace, must, mergeConfig, matchTenantPath, listSsoClientIdsFromCookies, list, jwtAssertionClaimsSchema, isConfigLocator, idTokenClaimsSchema, hydrateTenantForEs, groupResourceSchema, findTenantFromStateParam, discoverSessions, discoverSessionRecords, defaultLogger, deepEqualPlain, decodeUser, claimsToUser, buildTenantPath, X509Certificate, WorkloadValidators, WorkloadTokenStore, WorkloadTokenResponse, WorkloadIncomingOutgoing, WorkloadIdentity, WorkloadConfigMap, WorkloadConfig, WorkloadClient, Workload, WorkforceUser, VaultWorkloadAuthConfig, VaultWebSocketSecretsConfig, VaultWebSocketAuthHeader, VaultSecretsConfig, VaultLfvSecretsConfig, VaultConfigLocator, ValidateResult, UsersInboundHandlerConfig, UserStoreOptions, UserStore, UserSortOptions, UserListOptions, UpsertTenantResponse, UpsertTenantRequest, TokenValidationResult, TokenResponse, TenantWebhookPayload, TenantValidators, TenantStore, TenantStatus, TenantSortOptions, TenantRoutingStrategy, TenantResponse, TenantRequestError, TenantPathRoutingStrategy, TenantPathNamespace, TenantPathMatch, TenantListOptions, TenantJwtRoutingStrategy, TenantEsFactory, TenantDirectoryResponse, SubscriptionMode, StoredUser, StoredGroup, StateCookie, StandardSchemaWithValidate, SortOptions, SortDirection, SessionStore, SessionResponse, Session, ServerOnlyWorkloadConfig, SerializableTenant, SecretsValidators, SecretsSubscriptionOptions, SecretsSourceType, SecretsSourceMap, SecretsSourceConfig, SecretsSource, SecretsOperationOptions, SecretsModuleConfig, Secrets, SecretRequestSeverity, SecretLifecycleRequest, Secret, User as ScimUser, ScimServiceProviderConfig, ScimSchemaDefinition, ScimSchemaAttributeDefinition, ScimResult, ScimResourceTypeSchemaExtension, ScimResourceType, ScimListResponse, ScimError, ScimAuthenticationScheme, SSOValidators, SSOHandlerConfig, SSOConfig, SSOAppValidators, SSOAppRegistry, SSO, Role, ResolvedVaultLfvSecretsConfig, RemoteConfigRetryOptions, RemoteConfigRetryHook, RemoteConfigRetryContext, RemoteConfigLoadErrorKind, RemoteConfig, RegisterSSOAppResult, RegisterSSOAppPayload, RegisterSSOAppError, RegisterIAMAppResult, RegisterIAMAppPayload, RegisterIAMAppError, ReactiveHandle, Photo, PhoneNumber, OtelSignalName, OtelSignalConfig, OtelProviderType, OtelProtocol, OtelOAuthClientCredentialsConfig, OtelMetricsSignalConfig, OtelLogRecord, OtelLogLevel, OtelLevels, OtelConfig, OtelAttributes, OtelAttributeValue, Otel, OidcCallbackParams, Name, MultipleTenantsForUserError, ModifiableFrameworkConfig, MetaData, MagicLinkStore, MagicLink, LoginConfig, Logger, ListResult, ListOptions, LfvOtpResponse, LfvOtpRequest, LfvErrorResponse, LfvErrorCode, LfvActionRequestBase, LfvActionName, LfvActionAcceptedResponse, JwtBearerWorkloadConfig, JWTAssertionClaims, InMemoryTenantStoreOptions, InMemoryTenantStore, IdTokenClaims, IAMValidators, IAMUsersInbound, IAMInboundUsersConfig, IAMInboundUserContext, IAMHandlerConfig, IAMGroupsOutbound, IAMGroupsInbound, IAMDiscoveryHandlerConfig, IAMDiscoveryContext, IAMDiscoveryConfig, IAMConfig, IAMAppValidators, IAMAppRole, IAMAppRegistry, IAM, GroupsInboundHandlerConfig, GroupStore, GroupSortOptions, GroupResource, GroupMember, GroupListOptions, Group, GcpSecretsConfig, GcpConfigLocator, FrameworkWorkloadIncomingOutgoing, FrameworkWorkloadConfig, FrameworkStores, FrameworkSecretsSourceConfig, FrameworkSecretsModuleConfig, FrameworkOtelConfig, FrameworkConfig, EnvironmentType, EnterpriseUser, EnterpriseStandardFromConfig, EnterpriseStandardBase, EnterpriseStandard, EnterpriseExtension, Email, ESValidators, ESRoutingOptions, ESRouteModule, ESRouteFilterResult, ESResolvedRoute, ESModuleFromConfig, ESConfigChangeResult, ESConfigChangeOptions, ESConfigChangeCallback, ESConfig, DevSecretsConfig, DefaultTenantResponse, DEFAULT_TENANT_UI_NAMESPACE, DEFAULT_TENANT_API_NAMESPACE, Customer, CreateUserOptions, CreateGroupOptions, ConfigSubscriptionOptions, ConfigSourceType, ConfigSourceEnv, ConfigSource, ConfigLocator, ClientCredentialsWorkloadConfig, ChangeListener, CachedWorkloadToken, CIAMValidators, CIAMConfigFromCode, CIAMConfig, CIAM, BaseUser, BaseTenant, AzureSecretsConfig, AzureConfigLocator, AwsSecretsConfig, AwsConfigLocator, AwsAuthMethod, AuthenticatedUser, ApplicationValidators, Address };
3695
+ export { workloadTokenResponseSchema, withValidate, waitOn, version, validationFailureResponse, userSchema, tokenResponseSchema, stripJsonComments, silentLogger, serializeESConfig, sendTenantWebhook, parseJsonc, oidcCallbackSchema, normalizeTenantRoutingStrategy, normalizeTenantPathNamespace, must, mergeConfig, matchTenantPath, listSsoClientIdsFromCookies, list, jwtAssertionClaimsSchema, isConfigLocator, idTokenClaimsSchema, hydrateTenantForEs, groupResourceSchema, findTenantFromStateParam, discoverSessions, discoverSessionRecords, defaultLogger, deepEqualPlain, decodeUser, claimsToUser, buildTenantPath, X509Certificate, WorkloadValidators, WorkloadTokenStore, WorkloadTokenResponse, WorkloadIncomingOutgoing, WorkloadIdentity, WorkloadConfigMap, WorkloadConfig, WorkloadClient, Workload, WorkforceUser, VaultWorkloadAuthConfig, VaultWebSocketSecretsConfig, VaultWebSocketAuthHeader, VaultSecretsConfig, VaultLfvSecretsConfig, VaultConfigLocator, ValidateResult, UsersInboundHandlerConfig, UserStoreOptions, UserStore, UserSortOptions, UserListOptions, UpsertTenantResponse, UpsertTenantRequest, TokenValidationResult, TokenResponse, TenantWebhookPayload, TenantValidators, TenantStore, TenantStatus, TenantSortOptions, TenantRoutingStrategy, TenantResponse, TenantPathRoutingStrategy, TenantPathNamespace, TenantPathMatch, TenantListOptions, TenantJwtRoutingStrategy, TenantEsFactory, TenantDirectoryResponse, SubscriptionMode, StoredUser, StoredGroup, StateCookie, StandardSchemaWithValidate, SortOptions, SortDirection, SessionStore, SessionResponse, Session, ServerOnlyWorkloadConfig, SerializableTenant, SecretsValidators, SecretsSubscriptionOptions, SecretsSourceType, SecretsSourceMap, SecretsSourceConfig, SecretsSource, SecretsOperationOptions, SecretsModuleConfig, Secrets, SecretRequestSeverity, SecretLifecycleRequest, Secret, User as ScimUser, ScimServiceProviderConfig, ScimSchemaDefinition, ScimSchemaAttributeDefinition, ScimResult, ScimResourceTypeSchemaExtension, ScimResourceType, ScimListResponse, ScimError, ScimAuthenticationScheme, SSOValidators, SSOHandlerConfig, SSOConfig, SSOAppValidators, SSOAppRegistry, SSO, Role, ResolvedVaultLfvSecretsConfig, RemoteConfigRetryOptions, RemoteConfigRetryHook, RemoteConfigRetryContext, RemoteConfigLoadErrorKind, RemoteConfig, RegisterSSOAppResult, RegisterSSOAppPayload, RegisterSSOAppError, RegisterIAMAppResult, RegisterIAMAppPayload, RegisterIAMAppError, ReactiveHandle, Photo, PhoneNumber, OtelSignalName, OtelSignalConfig, OtelProviderType, OtelProtocol, OtelOAuthClientCredentialsConfig, OtelMetricsSignalConfig, OtelLogRecord, OtelLogLevel, OtelLevels, OtelConfig, OtelAttributes, OtelAttributeValue, Otel, OidcCallbackParams, Name, MultipleTenantsForUserError, ModifiableFrameworkConfig, MetaData, MagicLinkStore, MagicLink, LoginConfig, Logger, ListResult, ListOptions, LfvOtpResponse, LfvOtpRequest, LfvErrorResponse, LfvErrorCode, LfvActionRequestBase, LfvActionName, LfvActionAcceptedResponse, JwtBearerWorkloadConfig, JWTAssertionClaims, InMemoryTenantStoreOptions, InMemoryTenantStore, IdTokenClaims, IAMValidators, IAMUsersInbound, IAMInboundUsersConfig, IAMInboundUserContext, IAMHandlerConfig, IAMGroupsOutbound, IAMGroupsInbound, IAMDiscoveryHandlerConfig, IAMDiscoveryContext, IAMDiscoveryConfig, IAMConfig, IAMAppValidators, IAMAppRole, IAMAppRegistry, IAM, GroupsInboundHandlerConfig, GroupStore, GroupSortOptions, GroupResource, GroupMember, GroupListOptions, Group, GcpSecretsConfig, GcpConfigLocator, FrameworkWorkloadIncomingOutgoing, FrameworkWorkloadConfig, FrameworkStores, FrameworkSecretsSourceConfig, FrameworkSecretsModuleConfig, FrameworkOtelConfig, FrameworkConfig, EnvironmentType, EnterpriseUser, EnterpriseStandardFromConfig, EnterpriseStandardBase, EnterpriseStandard, EnterpriseExtension, Email, ESValidators, ESRoutingOptions, ESRouteModule, ESRouteFilterResult, ESResolvedRoute, ESModuleFromConfig, ESErrorOptions, ESError, ESConfigChangeResult, ESConfigChangeOptions, ESConfigChangeCallback, ESConfig, DevSecretsConfig, DefaultTenantResponse, DEFAULT_TENANT_UI_NAMESPACE, DEFAULT_TENANT_API_NAMESPACE, DEFAULT_HANDLER_READY_TIMEOUT, Customer, CreateUserOptions, CreateGroupOptions, ConfigSubscriptionOptions, ConfigSourceType, ConfigSourceEnv, ConfigSource, ConfigLocator, ClientCredentialsWorkloadConfig, ChangeListener, CachedWorkloadToken, CIAMValidators, CIAMConfigFromCode, CIAMConfig, CIAM, BaseUser, BaseTenant, AzureSecretsConfig, AzureConfigLocator, AwsSecretsConfig, AwsConfigLocator, AwsAuthMethod, AuthenticatedUser, ApplicationValidators, Address };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{G as B,a as Cx,b as Hx,c as Qx,d as Xx,e as Zx,f as zx,g as Gx,h as Yx,i as wx,j as Ex,k as Rx,l as Dx,m as Mx,n as Wx,o as Lx,p as Kx,q as qx,u as Bx,v as Fx}from"./shared/core-cf4cna3e.js";var O="0.0.19";var k=["sessionStore","userStore","groupStore","tokenStore","magicLinkStore"];function K(x){if(x===null||typeof x!=="object")return x;let T={};for(let[A,_]of Object.entries(x)){if(k.includes(A)||A==="validators"||A==="setStores")continue;T[A]=_!==null&&typeof _==="object"&&!Array.isArray(_)&&Object.getPrototypeOf(_)===Object.prototype?K(_):_}return T}function g(x){return K(x)}function E(x,T,A,_){let J=T.length,$=_??x,N=$>0?Math.floor(A/$)+1:1,C=$>0?Math.ceil(x/$):0;return{total:x,count:J,items:T,size:$,page:N,pages:C}}class M extends Error{constructor(x,T){super(x,T);this.name="TenantRequestError",Object.setPrototypeOf(this,M.prototype)}}class W extends Error{userId;conflictingIds;constructor(x,T,A){super(`Multiple tenants found for user id "${x}"`,A);this.name="MultipleTenantsForUserError",this.userId=x,this.conflictingIds=T,Object.setPrototypeOf(this,W.prototype)}}function P(x){if(typeof x!=="object"||x==null)return!1;let T=x.type;return T==="vault"||T==="aws"||T==="azure"||T==="gcp"}function F(x){if(typeof x.config==="function")return x;if(!x.configLocator)return x;return B({...x,configLocator:x.configLocator})}class U{tenants=new Map;userTenantIds=new Map;toTenantResponse;constructor(x){this.toTenantResponse=x}async get(x){return this.tenants.get(x)}async list(x){let T=Array.from(this.tenants.values()),A=Math.max(0,x?.start??0),_=x?.limit,J=x?.sort;if(J?.length)T=[...T].sort((Q,Z)=>{for(let{field:X,direction:R}of J){let G=Q[X],j=Z[X],D=c(G,j);if(D!==0)return R==="desc"?-D:D}return 0});let $=T.length,N=_!=null?A+_:void 0,C=T.slice(A,N);return E($,C,A,_)}async upsert(x){return this.tenants.set(x.id,x),x}async delete(x){let T=this.tenants.has(x);return this.tenants.delete(x),T?1:0}async registerUserTenantId(x,T){if(!x)return;let A=I(T),_=this.userTenantIds.get(x);if(_){_.add(A);return}this.userTenantIds.set(x,new Set([A]))}async findTenants(x,T){let A=new Map;for(let J of m(x))for(let $ of await this.resolveTenantsByUserId(J))A.set($.id,$);let _=Array.from(A.values()).map((J)=>this.toTenantResponse(J));return q(_,T)}async findUserTenants(x,T){let A=new Map;for(let J of p(x))for(let $ of await this.resolveTenantsByUserId(J))A.set($.id,$);let _=Array.from(A.values()).map((J)=>this.toTenantResponse(J));return q(_,T)}async resolveTenantsByUserId(x){let T=this.userTenantIds.get(x);if(!T||T.size===0)return[];let A=T.has(null),_=Array.from(T).filter((N)=>N!=null);if(_.length===0)return[];let J=await Promise.all(_.map(async(N)=>({id:N,tenant:await this.get(N)}))),$=J.filter((N)=>N.tenant!=null).map((N)=>N.id);if($.length===0){if(A)this.userTenantIds.set(x,new Set([null]));else this.userTenantIds.delete(x);return[]}if($.length!==_.length){let N=A?[null,...$]:$;this.userTenantIds.set(x,new Set(N))}return J.map((N)=>N.tenant).filter((N)=>N!=null)}}class f{store;createEs;constructor(x={}){this.createEs=x.createEs,this.store=new U(x.toTenantResponse??((T)=>h(T)))}async get(x){return this.store.get(x)}async list(x){return this.store.list(x)}async upsert(x){return this.store.upsert(x)}async delete(x){return this.store.delete(x)}async registerUserTenantId(x,T){return this.store.registerUserTenantId(x,T)}async findTenants(x,T){return this.store.findTenants(x,T)}async findUserTenants(x,T){return this.store.findUserTenants(x,T)}async getEs(x){let T=await this.get(x);if(!T)return;if(!this.createEs)throw Error(`${this.constructor.name} requires options.createEs to use getEs()`);return this.createEs(F(T))}}function c(x,T){let A=x===void 0||x===null,_=T===void 0||T===null;if(A&&_)return 0;if(A)return 1;if(_)return-1;if(x instanceof Date&&T instanceof Date)return x.getTime()-T.getTime();let J=String(x),$=String(T);return J.localeCompare($)}function I(x){if(typeof x!=="string")return null;return x.trim()||null}function h(x){return{clientId:x.id,id:x.id,companyId:x.companyId,companyName:x.companyName,environmentType:x.environmentType,status:x.status,email:x.email,webhookUrl:x.webhookUrl,callbackUrl:x.callbackUrl,tenantUrl:x.tenantUrl,error:x.error,actionUrl:x.actionUrl,expiresAt:x.expiresAt,createdAt:x.createdAt.toISOString(),updatedAt:x.updatedAt.toISOString()}}function m(x){let T=new Set;for(let A of x){z(T,A.sub);let _=A.claims;if(!_||typeof _!=="object"||Array.isArray(_))continue;z(T,_.sub),z(T,_.email),z(T,_.preferred_username)}return[...T]}function p(x){let T=new Set;for(let A of Object.values(x)){if(Array.isArray(A)){for(let _ of A)z(T,_);continue}z(T,A)}return[...T]}function z(x,T){if(typeof T!=="string")return;let A=T.trim();if(!A)return;x.add(A),x.add(A.toLowerCase())}function q(x,T){let A=Math.max(0,T?.start??0),_=T?.limit,J=x,$=T?.sort;if($?.length)J=[...x].sort((Q,Z)=>{for(let{field:X,direction:R}of $){let G=c(Q[X],Z[X]);if(G!==0)return R==="desc"?-G:G}return 0});let N=J.length,C=_!=null?A+_:void 0;return E(N,J.slice(A,C),A,_)}function b(x,T,A){return(async()=>{try{let _=await fetch(x,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(T)});if(!_.ok)A.error("Failed to send webhook update",{"es.operation":"webhook.update","es.outcome":"failure",status:_.status,statusText:_.statusText})}catch(_){A.error("Failed to send webhook update",{"es.operation":"webhook.update","es.outcome":"failure"},_)}})()}async function v(x,T,A){return b(x,T,A)}var n={beforeTenantSegments:["ui"]},d={beforeTenantSegments:["api"]};function V(x){return{segments:L(x?.segments)}}function L(x){return(x??[]).map((T)=>T.trim()).filter(Boolean)}function o(x){let T=x.trim();if(!T)return"/";let A=T.replace(/\\/g,"/").replace(/\/+/g,"/");return A.startsWith("/")?A:`/${A}`}function y(x){return o(x).split("/").filter(Boolean)}function Y(x){return{beforeTenantSegments:L(x?.beforeTenantSegments),afterTenantSegments:L(x?.afterTenantSegments)}}function r(x){if(!x||x.type===void 0||x.type==="path"){let A=x;return{type:"path",ui:Y(A?.ui),api:Y(A?.api)}}let T=x;return{...T,ui:V(T.ui),api:V(T.api)}}function l(x,T){let A=Y(T),_=A.beforeTenantSegments??[],J=A.afterTenantSegments??[],$=y(x),N=_.length+1+J.length;if($.length<N)return null;for(let X=0;X<_.length;X++)if($[X]!==_[X])return null;let C=_.length,Q=$[C];if(!Q)return null;for(let X=0;X<J.length;X++)if($[C+1+X]!==J[X])return null;let Z=$.slice(C+1+J.length);return{id:decodeURIComponent(Q),restSegments:Z,restPath:Z.length>0?`/${Z.join("/")}`:"/"}}function t(x,T="/",A){let _=Y(A),J=_.beforeTenantSegments??[],$=_.afterTenantSegments??[],N=y(T),C=[...J,encodeURIComponent(x),...$,...N];return C.length>0?`/${C.join("/")}`:"/"}function H(x,T,A,_,J){if(x===void 0||x===null){if(A)_.push({message:`${T} is required`,path:J});return}if(typeof x!=="string"){_.push({message:`${T} must be a string`,path:J});return}return x}function w(x,T,A,_){if(x===void 0||x===null)return;if(typeof x!=="boolean"){A.push({message:`${T} must be a boolean`,path:_});return}return x}function u(x,T,A){if(x===void 0||x===null)return;if(typeof x!=="object"||x===null){T.push({message:"name must be an object",path:A});return}let _=x,J={};return J.formatted=H(_.formatted,"formatted",!1,T,[...A,"formatted"]),J.familyName=H(_.familyName,"familyName",!1,T,[...A,"familyName"]),J.givenName=H(_.givenName,"givenName",!1,T,[...A,"givenName"]),J.middleName=H(_.middleName,"middleName",!1,T,[...A,"middleName"]),J.honorificPrefix=H(_.honorificPrefix,"honorificPrefix",!1,T,[...A,"honorificPrefix"]),J.honorificSuffix=H(_.honorificSuffix,"honorificSuffix",!1,T,[...A,"honorificSuffix"]),J}function i(x,T,A){if(x===void 0||x===null)return;if(!Array.isArray(x)){T.push({message:"emails must be an array",path:A});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...A,J];if(typeof $!=="object"||$===null){T.push({message:"email must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,T,[...N,"value"]);if(Q)_.push({value:Q,display:H(C.display,"display",!1,T,[...N,"display"]),type:H(C.type,"type",!1,T,[...N,"type"]),primary:w(C.primary,"primary",T,[...N,"primary"])})}return _.length>0?_:void 0}function a(x,T,A){if(x===void 0||x===null)return;if(!Array.isArray(x)){T.push({message:"phoneNumbers must be an array",path:A});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...A,J];if(typeof $!=="object"||$===null){T.push({message:"phoneNumber must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,T,[...N,"value"]);if(Q)_.push({value:Q,display:H(C.display,"display",!1,T,[...N,"display"]),type:H(C.type,"type",!1,T,[...N,"type"]),primary:w(C.primary,"primary",T,[...N,"primary"])})}return _.length>0?_:void 0}function e(x,T,A){if(x===void 0||x===null)return;if(!Array.isArray(x)){T.push({message:"addresses must be an array",path:A});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...A,J];if(typeof $!=="object"||$===null){T.push({message:"address must be an object",path:N});continue}let C=$;_.push({formatted:H(C.formatted,"formatted",!1,T,[...N,"formatted"]),streetAddress:H(C.streetAddress,"streetAddress",!1,T,[...N,"streetAddress"]),locality:H(C.locality,"locality",!1,T,[...N,"locality"]),region:H(C.region,"region",!1,T,[...N,"region"]),postalCode:H(C.postalCode,"postalCode",!1,T,[...N,"postalCode"]),country:H(C.country,"country",!1,T,[...N,"country"]),type:H(C.type,"type",!1,T,[...N,"type"]),primary:w(C.primary,"primary",T,[...N,"primary"])})}return _.length>0?_:void 0}function s(x,T,A){if(x===void 0||x===null)return;if(!Array.isArray(x)){T.push({message:"groups must be an array",path:A});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...A,J];if(typeof $!=="object"||$===null){T.push({message:"group must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,T,[...N,"value"]);if(Q)_.push({value:Q,$ref:H(C.$ref,"$ref",!1,T,[...N,"$ref"]),display:H(C.display,"display",!1,T,[...N,"display"]),type:H(C.type,"type",!1,T,[...N,"type"])})}return _.length>0?_:void 0}function xx(x,T,A){if(x===void 0||x===null)return;if(!Array.isArray(x)){T.push({message:"roles must be an array",path:A});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...A,J];if(typeof $!=="object"||$===null){T.push({message:"role must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,T,[...N,"value"]);if(Q)_.push({value:Q,display:H(C.display,"display",!1,T,[...N,"display"]),type:H(C.type,"type",!1,T,[...N,"type"]),primary:w(C.primary,"primary",T,[...N,"primary"])})}return _.length>0?_:void 0}function Ax(x,T,A){if(x===void 0||x===null)return;if(typeof x!=="object"||x===null){T.push({message:"Enterprise User extension must be an object",path:A});return}let _=x,J={};if(J.employeeNumber=H(_.employeeNumber,"employeeNumber",!1,T,[...A,"employeeNumber"]),J.costCenter=H(_.costCenter,"costCenter",!1,T,[...A,"costCenter"]),J.organization=H(_.organization,"organization",!1,T,[...A,"organization"]),J.division=H(_.division,"division",!1,T,[...A,"division"]),J.department=H(_.department,"department",!1,T,[...A,"department"]),_.manager!==void 0&&_.manager!==null)if(typeof _.manager!=="object"||_.manager===null)T.push({message:"manager must be an object",path:[...A,"manager"]});else{let $=_.manager;J.manager={value:H($.value,"value",!1,T,[...A,"manager","value"]),$ref:H($.$ref,"$ref",!1,T,[...A,"manager","$ref"]),displayName:H($.displayName,"displayName",!1,T,[...A,"manager","displayName"])}}return J}function Tx(x){return{"~standard":{version:1,vendor:x,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let A=T,_=[],J={},$=H(A.userName,"userName",!0,_,["userName"]);if(!$)return{issues:_};J.userName=$,J.id=H(A.id,"id",!1,_,["id"]),J.externalId=H(A.externalId,"externalId",!1,_,["externalId"]),J.displayName=H(A.displayName,"displayName",!1,_,["displayName"]),J.nickName=H(A.nickName,"nickName",!1,_,["nickName"]),J.profileUrl=H(A.profileUrl,"profileUrl",!1,_,["profileUrl"]),J.title=H(A.title,"title",!1,_,["title"]),J.userType=H(A.userType,"userType",!1,_,["userType"]),J.preferredLanguage=H(A.preferredLanguage,"preferredLanguage",!1,_,["preferredLanguage"]),J.locale=H(A.locale,"locale",!1,_,["locale"]),J.timezone=H(A.timezone,"timezone",!1,_,["timezone"]),J.password=H(A.password,"password",!1,_,["password"]),J.active=w(A.active,"active",_,["active"]),J.name=u(A.name,_,["name"]),J.emails=i(A.emails,_,["emails"]),J.phoneNumbers=a(A.phoneNumbers,_,["phoneNumbers"]),J.addresses=e(A.addresses,_,["addresses"]),J.groups=s(A.groups,_,["groups"]),J.roles=xx(A.roles,_,["roles"]);let N="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(A[N]!==void 0)J[N]=Ax(A[N],_,[N]);if(A.schemas!==void 0)if(Array.isArray(A.schemas))J.schemas=A.schemas.filter((C)=>typeof C==="string");else _.push({message:"schemas must be an array",path:["schemas"]});if(A.meta!==void 0)if(typeof A.meta==="object"&&A.meta!==null){let C=A.meta;J.meta={resourceType:typeof C.resourceType==="string"?C.resourceType:void 0,created:typeof C.created==="string"?C.created:void 0,lastModified:typeof C.lastModified==="string"?C.lastModified:void 0,location:typeof C.location==="string"?C.location:void 0,version:typeof C.version==="string"?C.version:void 0}}else _.push({message:"meta must be an object",path:["meta"]});if(_.length>0)return{issues:_};return{value:J}}}}}function _x(x,T,A){if(x===void 0||x===null)return;if(!Array.isArray(x)){T.push({message:"members must be an array",path:A});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...A,J];if(typeof $!=="object"||$===null){T.push({message:"member must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,T,[...N,"value"]);if(Q){let Z=H(C.type,"type",!1,T,[...N,"type"]);_.push({value:Q,$ref:H(C.$ref,"$ref",!1,T,[...N,"$ref"]),display:H(C.display,"display",!1,T,[...N,"display"]),type:Z==="User"||Z==="Group"?Z:void 0})}}return _.length>0?_:void 0}function Jx(x){return{"~standard":{version:1,vendor:x,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let A=T,_=[],J={},$=H(A.displayName,"displayName",!0,_,["displayName"]);if(!$)return{issues:_};if(J.displayName=$,J.id=H(A.id,"id",!1,_,["id"]),J.externalId=H(A.externalId,"externalId",!1,_,["externalId"]),J.members=_x(A.members,_,["members"]),A.schemas!==void 0)if(Array.isArray(A.schemas))J.schemas=A.schemas.filter((N)=>typeof N==="string");else _.push({message:"schemas must be an array",path:["schemas"]});if(A.meta!==void 0)if(typeof A.meta==="object"&&A.meta!==null){let N=A.meta;J.meta={resourceType:typeof N.resourceType==="string"?N.resourceType:void 0,created:typeof N.created==="string"?N.created:void 0,lastModified:typeof N.lastModified==="string"?N.lastModified:void 0,location:typeof N.location==="string"?N.location:void 0,version:typeof N.version==="string"?N.version:void 0}}else _.push({message:"meta must be an object",path:["meta"]});if(_.length>0)return{issues:_};return{value:J}}}}}function Nx(x){return{"~standard":{version:1,vendor:x,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let A=T,_=[],J={...A},$=["iss","sub"];for(let Q of $)if(Q in A){if(typeof A[Q]!=="string")_.push({message:`${Q} must be a string`,path:[Q]})}else _.push({message:`${Q} is required`,path:[Q]});if("aud"in A&&A.aud!==void 0){let Q=A.aud;if(typeof Q!=="string"&&!Array.isArray(Q))_.push({message:"aud must be a string or array of strings",path:["aud"]});else if(Array.isArray(Q)&&!Q.every((Z)=>typeof Z==="string"))_.push({message:"aud array must contain only strings",path:["aud"]})}let N=["jti","scope"];for(let Q of N)if(Q in A&&A[Q]!==void 0){if(typeof A[Q]!=="string")_.push({message:`${Q} must be a string`,path:[Q]})}let C=["exp","iat"];for(let Q of C)if(Q in A){if(typeof A[Q]!=="number")_.push({message:`${Q} must be a number`,path:[Q]})}else _.push({message:`${Q} is required`,path:[Q]});if(_.length>0)return{issues:_};return{value:J}}}}}function $x(x){return{"~standard":{version:1,vendor:x,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let A=T,_=[],J={};if("access_token"in A)if(typeof A.access_token==="string")J.access_token=A.access_token;else _.push({message:"access_token must be a string",path:["access_token"]});else _.push({message:"access_token is required",path:["access_token"]});if("token_type"in A)if(typeof A.token_type==="string")J.token_type=A.token_type;else _.push({message:"token_type must be a string",path:["token_type"]});else _.push({message:"token_type is required",path:["token_type"]});if("scope"in A)if(typeof A.scope==="string"||A.scope===void 0)J.scope=A.scope;else _.push({message:"scope must be a string",path:["scope"]});if("refresh_token"in A)if(typeof A.refresh_token==="string"||A.refresh_token===void 0)J.refresh_token=A.refresh_token;else _.push({message:"refresh_token must be a string",path:["refresh_token"]});if("expires"in A)if(typeof A.expires==="string"||A.expires===void 0)J.expires=A.expires;else _.push({message:"expires must be a string",path:["expires"]});if("expires_in"in A)if(typeof A.expires_in==="number"||A.expires_in===void 0)J.expires_in=A.expires_in;else _.push({message:"expires_in must be a number",path:["expires_in"]});if(_.length>0)return{issues:_};return{value:J}}}}}export{$x as workloadTokenResponseSchema,Xx as withValidate,Rx as waitOn,O as version,zx as validationFailureResponse,Tx as userSchema,Hx as tokenResponseSchema,Yx as stripJsonComments,Wx as silentLogger,g as serializeESConfig,v as sendTenantWebhook,wx as parseJsonc,Cx as oidcCallbackSchema,r as normalizeTenantRoutingStrategy,Y as normalizeTenantPathNamespace,Zx as must,Gx as mergeConfig,l as matchTenantPath,Bx as listSsoClientIdsFromCookies,E as list,Nx as jwtAssertionClaimsSchema,P as isConfigLocator,Qx as idTokenClaimsSchema,F as hydrateTenantForEs,Jx as groupResourceSchema,Fx as findTenantFromStateParam,Kx as discoverSessions,qx as discoverSessionRecords,Lx as defaultLogger,Ex as deepEqualPlain,Mx as decodeUser,Dx as claimsToUser,t as buildTenantPath,M as TenantRequestError,W as MultipleTenantsForUserError,f as InMemoryTenantStore,n as DEFAULT_TENANT_UI_NAMESPACE,d as DEFAULT_TENANT_API_NAMESPACE};
1
+ import{G as B,a as Hx,b as Qx,c as Rx,d as Xx,e as Zx,f as zx,g as Gx,h as Yx,i as wx,j as Dx,k as Mx,l as Wx,m as qx,n as Ex,o as Lx,p as Kx,q as Bx,u as Fx,v as Ux}from"./shared/core-cf4cna3e.js";var S="0.0.20-beta.20260522.1";var k=["sessionStore","userStore","groupStore","tokenStore","magicLinkStore"];function L(x){if(x===null||typeof x!=="object")return x;let A={};for(let[T,_]of Object.entries(x)){if(k.includes(T)||T==="validators"||T==="setStores")continue;A[T]=_!==null&&typeof _==="object"&&!Array.isArray(_)&&Object.getPrototypeOf(_)===Object.prototype?L(_):_}return A}function g(x){return L(x)}var P=1e4;function w(x,A,T,_){let J=A.length,$=_??x,N=$>0?Math.floor(T/$)+1:1,C=$>0?Math.ceil(x/$):0;return{total:x,count:J,items:A,size:$,page:N,pages:C}}class W extends Error{status;statusText;constructor(x,A={}){super(x,{cause:A.cause});this.name="ESError",this.status=A.status,this.statusText=A.statusText,Object.setPrototypeOf(this,W.prototype)}}class q extends Error{userId;conflictingIds;constructor(x,A,T){super(`Multiple tenants found for user id "${x}"`,T);this.name="MultipleTenantsForUserError",this.userId=x,this.conflictingIds=A,Object.setPrototypeOf(this,q.prototype)}}function I(x){if(typeof x!=="object"||x==null)return!1;let A=x.type;return A==="vault"||A==="aws"||A==="azure"||A==="gcp"}function F(x){if(typeof x.config==="function")return x;if(!x.configLocator)return x;return B({...x,configLocator:x.configLocator})}class U{tenants=new Map;userTenantIds=new Map;toTenantResponse;constructor(x){this.toTenantResponse=x}async get(x){return this.tenants.get(x)}async list(x){let A=Array.from(this.tenants.values()),T=Math.max(0,x?.start??0),_=x?.limit,J=x?.sort;if(J?.length)A=[...A].sort((Q,X)=>{for(let{field:R,direction:D}of J){let z=Q[R],j=X[R],M=c(z,j);if(M!==0)return D==="desc"?-M:M}return 0});let $=A.length,N=_!=null?T+_:void 0,C=A.slice(T,N);return w($,C,T,_)}async upsert(x){return this.tenants.set(x.id,x),x}async delete(x){let A=this.tenants.has(x);return this.tenants.delete(x),A?1:0}async registerUserTenantId(x,A){if(!x)return;let T=h(A),_=this.userTenantIds.get(x);if(_){_.add(T);return}this.userTenantIds.set(x,new Set([T]))}async findTenants(x,A){let T=new Map;for(let J of b(x))for(let $ of await this.resolveTenantsByUserId(J))T.set($.id,$);let _=Array.from(T.values()).map((J)=>this.toTenantResponse(J));return K(_,A)}async findUserTenants(x,A){let T=new Map;for(let J of p(x))for(let $ of await this.resolveTenantsByUserId(J))T.set($.id,$);let _=Array.from(T.values()).map((J)=>this.toTenantResponse(J));return K(_,A)}async resolveTenantsByUserId(x){let A=this.userTenantIds.get(x);if(!A||A.size===0)return[];let T=A.has(null),_=Array.from(A).filter((N)=>N!=null);if(_.length===0)return[];let J=await Promise.all(_.map(async(N)=>({id:N,tenant:await this.get(N)}))),$=J.filter((N)=>N.tenant!=null).map((N)=>N.id);if($.length===0){if(T)this.userTenantIds.set(x,new Set([null]));else this.userTenantIds.delete(x);return[]}if($.length!==_.length){let N=T?[null,...$]:$;this.userTenantIds.set(x,new Set(N))}return J.map((N)=>N.tenant).filter((N)=>N!=null)}}class f{store;createEs;constructor(x={}){this.createEs=x.createEs,this.store=new U(x.toTenantResponse??((A)=>m(A)))}async get(x){return this.store.get(x)}async list(x){return this.store.list(x)}async upsert(x){return this.store.upsert(x)}async delete(x){return this.store.delete(x)}async registerUserTenantId(x,A){return this.store.registerUserTenantId(x,A)}async findTenants(x,A){return this.store.findTenants(x,A)}async findUserTenants(x,A){return this.store.findUserTenants(x,A)}async getEs(x){let A=await this.get(x);if(!A)return;if(!this.createEs)throw Error(`${this.constructor.name} requires options.createEs to use getEs()`);return this.createEs(F(A))}}function c(x,A){let T=x===void 0||x===null,_=A===void 0||A===null;if(T&&_)return 0;if(T)return 1;if(_)return-1;if(x instanceof Date&&A instanceof Date)return x.getTime()-A.getTime();let J=String(x),$=String(A);return J.localeCompare($)}function h(x){if(typeof x!=="string")return null;return x.trim()||null}function m(x){return{clientId:x.id,id:x.id,companyId:x.companyId,companyName:x.companyName,environmentType:x.environmentType,status:x.status,email:x.email,webhookUrl:x.webhookUrl,callbackUrl:x.callbackUrl,tenantUrl:x.tenantUrl,error:x.error,actionUrl:x.actionUrl,expiresAt:x.expiresAt,createdAt:x.createdAt.toISOString(),updatedAt:x.updatedAt.toISOString()}}function b(x){let A=new Set;for(let T of x){Z(A,T.sub);let _=T.claims;if(!_||typeof _!=="object"||Array.isArray(_))continue;Z(A,_.sub),Z(A,_.email),Z(A,_.preferred_username)}return[...A]}function p(x){let A=new Set;for(let T of Object.values(x)){if(Array.isArray(T)){for(let _ of T)Z(A,_);continue}Z(A,T)}return[...A]}function Z(x,A){if(typeof A!=="string")return;let T=A.trim();if(!T)return;x.add(T),x.add(T.toLowerCase())}function K(x,A){let T=Math.max(0,A?.start??0),_=A?.limit,J=x,$=A?.sort;if($?.length)J=[...x].sort((Q,X)=>{for(let{field:R,direction:D}of $){let z=c(Q[R],X[R]);if(z!==0)return D==="desc"?-z:z}return 0});let N=J.length,C=_!=null?T+_:void 0;return w(N,J.slice(T,C),T,_)}function v(x,A,T){return(async()=>{try{let _=await fetch(x,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)});if(!_.ok)T.error("Failed to send webhook update",{"es.operation":"webhook.update","es.outcome":"failure",status:_.status,statusText:_.statusText})}catch(_){T.error("Failed to send webhook update",{"es.operation":"webhook.update","es.outcome":"failure"},_)}})()}async function n(x,A,T){return v(x,A,T)}var d={beforeTenantSegments:["ui"]},o={beforeTenantSegments:["api"]};function V(x){return{segments:E(x?.segments)}}function E(x){return(x??[]).map((A)=>A.trim()).filter(Boolean)}function r(x){let A=x.trim();if(!A)return"/";let T=A.replace(/\\/g,"/").replace(/\/+/g,"/");return T.startsWith("/")?T:`/${T}`}function y(x){return r(x).split("/").filter(Boolean)}function G(x){return{beforeTenantSegments:E(x?.beforeTenantSegments),afterTenantSegments:E(x?.afterTenantSegments)}}function l(x){if(!x||x.type===void 0||x.type==="path"){let T=x;return{type:"path",ui:G(T?.ui),api:G(T?.api)}}let A=x;return{...A,ui:V(A.ui),api:V(A.api)}}function t(x,A){let T=G(A),_=T.beforeTenantSegments??[],J=T.afterTenantSegments??[],$=y(x),N=_.length+1+J.length;if($.length<N)return null;for(let R=0;R<_.length;R++)if($[R]!==_[R])return null;let C=_.length,Q=$[C];if(!Q)return null;for(let R=0;R<J.length;R++)if($[C+1+R]!==J[R])return null;let X=$.slice(C+1+J.length);return{id:decodeURIComponent(Q),restSegments:X,restPath:X.length>0?`/${X.join("/")}`:"/"}}function u(x,A="/",T){let _=G(T),J=_.beforeTenantSegments??[],$=_.afterTenantSegments??[],N=y(A),C=[...J,encodeURIComponent(x),...$,...N];return C.length>0?`/${C.join("/")}`:"/"}function H(x,A,T,_,J){if(x===void 0||x===null){if(T)_.push({message:`${A} is required`,path:J});return}if(typeof x!=="string"){_.push({message:`${A} must be a string`,path:J});return}return x}function Y(x,A,T,_){if(x===void 0||x===null)return;if(typeof x!=="boolean"){T.push({message:`${A} must be a boolean`,path:_});return}return x}function i(x,A,T){if(x===void 0||x===null)return;if(typeof x!=="object"||x===null){A.push({message:"name must be an object",path:T});return}let _=x,J={};return J.formatted=H(_.formatted,"formatted",!1,A,[...T,"formatted"]),J.familyName=H(_.familyName,"familyName",!1,A,[...T,"familyName"]),J.givenName=H(_.givenName,"givenName",!1,A,[...T,"givenName"]),J.middleName=H(_.middleName,"middleName",!1,A,[...T,"middleName"]),J.honorificPrefix=H(_.honorificPrefix,"honorificPrefix",!1,A,[...T,"honorificPrefix"]),J.honorificSuffix=H(_.honorificSuffix,"honorificSuffix",!1,A,[...T,"honorificSuffix"]),J}function a(x,A,T){if(x===void 0||x===null)return;if(!Array.isArray(x)){A.push({message:"emails must be an array",path:T});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...T,J];if(typeof $!=="object"||$===null){A.push({message:"email must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,A,[...N,"value"]);if(Q)_.push({value:Q,display:H(C.display,"display",!1,A,[...N,"display"]),type:H(C.type,"type",!1,A,[...N,"type"]),primary:Y(C.primary,"primary",A,[...N,"primary"])})}return _.length>0?_:void 0}function e(x,A,T){if(x===void 0||x===null)return;if(!Array.isArray(x)){A.push({message:"phoneNumbers must be an array",path:T});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...T,J];if(typeof $!=="object"||$===null){A.push({message:"phoneNumber must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,A,[...N,"value"]);if(Q)_.push({value:Q,display:H(C.display,"display",!1,A,[...N,"display"]),type:H(C.type,"type",!1,A,[...N,"type"]),primary:Y(C.primary,"primary",A,[...N,"primary"])})}return _.length>0?_:void 0}function s(x,A,T){if(x===void 0||x===null)return;if(!Array.isArray(x)){A.push({message:"addresses must be an array",path:T});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...T,J];if(typeof $!=="object"||$===null){A.push({message:"address must be an object",path:N});continue}let C=$;_.push({formatted:H(C.formatted,"formatted",!1,A,[...N,"formatted"]),streetAddress:H(C.streetAddress,"streetAddress",!1,A,[...N,"streetAddress"]),locality:H(C.locality,"locality",!1,A,[...N,"locality"]),region:H(C.region,"region",!1,A,[...N,"region"]),postalCode:H(C.postalCode,"postalCode",!1,A,[...N,"postalCode"]),country:H(C.country,"country",!1,A,[...N,"country"]),type:H(C.type,"type",!1,A,[...N,"type"]),primary:Y(C.primary,"primary",A,[...N,"primary"])})}return _.length>0?_:void 0}function xx(x,A,T){if(x===void 0||x===null)return;if(!Array.isArray(x)){A.push({message:"groups must be an array",path:T});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...T,J];if(typeof $!=="object"||$===null){A.push({message:"group must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,A,[...N,"value"]);if(Q)_.push({value:Q,$ref:H(C.$ref,"$ref",!1,A,[...N,"$ref"]),display:H(C.display,"display",!1,A,[...N,"display"]),type:H(C.type,"type",!1,A,[...N,"type"])})}return _.length>0?_:void 0}function Tx(x,A,T){if(x===void 0||x===null)return;if(!Array.isArray(x)){A.push({message:"roles must be an array",path:T});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...T,J];if(typeof $!=="object"||$===null){A.push({message:"role must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,A,[...N,"value"]);if(Q)_.push({value:Q,display:H(C.display,"display",!1,A,[...N,"display"]),type:H(C.type,"type",!1,A,[...N,"type"]),primary:Y(C.primary,"primary",A,[...N,"primary"])})}return _.length>0?_:void 0}function Ax(x,A,T){if(x===void 0||x===null)return;if(typeof x!=="object"||x===null){A.push({message:"Enterprise User extension must be an object",path:T});return}let _=x,J={};if(J.employeeNumber=H(_.employeeNumber,"employeeNumber",!1,A,[...T,"employeeNumber"]),J.costCenter=H(_.costCenter,"costCenter",!1,A,[...T,"costCenter"]),J.organization=H(_.organization,"organization",!1,A,[...T,"organization"]),J.division=H(_.division,"division",!1,A,[...T,"division"]),J.department=H(_.department,"department",!1,A,[...T,"department"]),_.manager!==void 0&&_.manager!==null)if(typeof _.manager!=="object"||_.manager===null)A.push({message:"manager must be an object",path:[...T,"manager"]});else{let $=_.manager;J.manager={value:H($.value,"value",!1,A,[...T,"manager","value"]),$ref:H($.$ref,"$ref",!1,A,[...T,"manager","$ref"]),displayName:H($.displayName,"displayName",!1,A,[...T,"manager","displayName"])}}return J}function _x(x){return{"~standard":{version:1,vendor:x,validate:(A)=>{if(typeof A!=="object"||A===null)return{issues:[{message:"Expected an object"}]};let T=A,_=[],J={},$=H(T.userName,"userName",!0,_,["userName"]);if(!$)return{issues:_};J.userName=$,J.id=H(T.id,"id",!1,_,["id"]),J.externalId=H(T.externalId,"externalId",!1,_,["externalId"]),J.displayName=H(T.displayName,"displayName",!1,_,["displayName"]),J.nickName=H(T.nickName,"nickName",!1,_,["nickName"]),J.profileUrl=H(T.profileUrl,"profileUrl",!1,_,["profileUrl"]),J.title=H(T.title,"title",!1,_,["title"]),J.userType=H(T.userType,"userType",!1,_,["userType"]),J.preferredLanguage=H(T.preferredLanguage,"preferredLanguage",!1,_,["preferredLanguage"]),J.locale=H(T.locale,"locale",!1,_,["locale"]),J.timezone=H(T.timezone,"timezone",!1,_,["timezone"]),J.password=H(T.password,"password",!1,_,["password"]),J.active=Y(T.active,"active",_,["active"]),J.name=i(T.name,_,["name"]),J.emails=a(T.emails,_,["emails"]),J.phoneNumbers=e(T.phoneNumbers,_,["phoneNumbers"]),J.addresses=s(T.addresses,_,["addresses"]),J.groups=xx(T.groups,_,["groups"]),J.roles=Tx(T.roles,_,["roles"]);let N="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(T[N]!==void 0)J[N]=Ax(T[N],_,[N]);if(T.schemas!==void 0)if(Array.isArray(T.schemas))J.schemas=T.schemas.filter((C)=>typeof C==="string");else _.push({message:"schemas must be an array",path:["schemas"]});if(T.meta!==void 0)if(typeof T.meta==="object"&&T.meta!==null){let C=T.meta;J.meta={resourceType:typeof C.resourceType==="string"?C.resourceType:void 0,created:typeof C.created==="string"?C.created:void 0,lastModified:typeof C.lastModified==="string"?C.lastModified:void 0,location:typeof C.location==="string"?C.location:void 0,version:typeof C.version==="string"?C.version:void 0}}else _.push({message:"meta must be an object",path:["meta"]});if(_.length>0)return{issues:_};return{value:J}}}}}function Jx(x,A,T){if(x===void 0||x===null)return;if(!Array.isArray(x)){A.push({message:"members must be an array",path:T});return}let _=[];for(let J=0;J<x.length;J++){let $=x[J],N=[...T,J];if(typeof $!=="object"||$===null){A.push({message:"member must be an object",path:N});continue}let C=$,Q=H(C.value,"value",!0,A,[...N,"value"]);if(Q){let X=H(C.type,"type",!1,A,[...N,"type"]);_.push({value:Q,$ref:H(C.$ref,"$ref",!1,A,[...N,"$ref"]),display:H(C.display,"display",!1,A,[...N,"display"]),type:X==="User"||X==="Group"?X:void 0})}}return _.length>0?_:void 0}function Nx(x){return{"~standard":{version:1,vendor:x,validate:(A)=>{if(typeof A!=="object"||A===null)return{issues:[{message:"Expected an object"}]};let T=A,_=[],J={},$=H(T.displayName,"displayName",!0,_,["displayName"]);if(!$)return{issues:_};if(J.displayName=$,J.id=H(T.id,"id",!1,_,["id"]),J.externalId=H(T.externalId,"externalId",!1,_,["externalId"]),J.members=Jx(T.members,_,["members"]),T.schemas!==void 0)if(Array.isArray(T.schemas))J.schemas=T.schemas.filter((N)=>typeof N==="string");else _.push({message:"schemas must be an array",path:["schemas"]});if(T.meta!==void 0)if(typeof T.meta==="object"&&T.meta!==null){let N=T.meta;J.meta={resourceType:typeof N.resourceType==="string"?N.resourceType:void 0,created:typeof N.created==="string"?N.created:void 0,lastModified:typeof N.lastModified==="string"?N.lastModified:void 0,location:typeof N.location==="string"?N.location:void 0,version:typeof N.version==="string"?N.version:void 0}}else _.push({message:"meta must be an object",path:["meta"]});if(_.length>0)return{issues:_};return{value:J}}}}}function $x(x){return{"~standard":{version:1,vendor:x,validate:(A)=>{if(typeof A!=="object"||A===null)return{issues:[{message:"Expected an object"}]};let T=A,_=[],J={...T},$=["iss","sub"];for(let Q of $)if(Q in T){if(typeof T[Q]!=="string")_.push({message:`${Q} must be a string`,path:[Q]})}else _.push({message:`${Q} is required`,path:[Q]});if("aud"in T&&T.aud!==void 0){let Q=T.aud;if(typeof Q!=="string"&&!Array.isArray(Q))_.push({message:"aud must be a string or array of strings",path:["aud"]});else if(Array.isArray(Q)&&!Q.every((X)=>typeof X==="string"))_.push({message:"aud array must contain only strings",path:["aud"]})}let N=["jti","scope"];for(let Q of N)if(Q in T&&T[Q]!==void 0){if(typeof T[Q]!=="string")_.push({message:`${Q} must be a string`,path:[Q]})}let C=["exp","iat"];for(let Q of C)if(Q in T){if(typeof T[Q]!=="number")_.push({message:`${Q} must be a number`,path:[Q]})}else _.push({message:`${Q} is required`,path:[Q]});if(_.length>0)return{issues:_};return{value:J}}}}}function Cx(x){return{"~standard":{version:1,vendor:x,validate:(A)=>{if(typeof A!=="object"||A===null)return{issues:[{message:"Expected an object"}]};let T=A,_=[],J={};if("access_token"in T)if(typeof T.access_token==="string")J.access_token=T.access_token;else _.push({message:"access_token must be a string",path:["access_token"]});else _.push({message:"access_token is required",path:["access_token"]});if("token_type"in T)if(typeof T.token_type==="string")J.token_type=T.token_type;else _.push({message:"token_type must be a string",path:["token_type"]});else _.push({message:"token_type is required",path:["token_type"]});if("scope"in T)if(typeof T.scope==="string"||T.scope===void 0)J.scope=T.scope;else _.push({message:"scope must be a string",path:["scope"]});if("refresh_token"in T)if(typeof T.refresh_token==="string"||T.refresh_token===void 0)J.refresh_token=T.refresh_token;else _.push({message:"refresh_token must be a string",path:["refresh_token"]});if("expires"in T)if(typeof T.expires==="string"||T.expires===void 0)J.expires=T.expires;else _.push({message:"expires must be a string",path:["expires"]});if("expires_in"in T)if(typeof T.expires_in==="number"||T.expires_in===void 0)J.expires_in=T.expires_in;else _.push({message:"expires_in must be a number",path:["expires_in"]});if(_.length>0)return{issues:_};return{value:J}}}}}export{Cx as workloadTokenResponseSchema,Xx as withValidate,Mx as waitOn,S as version,zx as validationFailureResponse,_x as userSchema,Qx as tokenResponseSchema,Yx as stripJsonComments,Ex as silentLogger,g as serializeESConfig,n as sendTenantWebhook,wx as parseJsonc,Hx as oidcCallbackSchema,l as normalizeTenantRoutingStrategy,G as normalizeTenantPathNamespace,Zx as must,Gx as mergeConfig,t as matchTenantPath,Fx as listSsoClientIdsFromCookies,w as list,$x as jwtAssertionClaimsSchema,I as isConfigLocator,Rx as idTokenClaimsSchema,F as hydrateTenantForEs,Nx as groupResourceSchema,Ux as findTenantFromStateParam,Kx as discoverSessions,Bx as discoverSessionRecords,Lx as defaultLogger,Dx as deepEqualPlain,qx as decodeUser,Wx as claimsToUser,u as buildTenantPath,q as MultipleTenantsForUserError,f as InMemoryTenantStore,W as ESError,d as DEFAULT_TENANT_UI_NAMESPACE,o as DEFAULT_TENANT_API_NAMESPACE,P as DEFAULT_HANDLER_READY_TIMEOUT};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enterprisestandard/core",
3
- "version": "0.0.19",
3
+ "version": "0.0.20-beta.20260522.1",
4
4
  "description": "Enterprise Standard Core (Server-only)",
5
5
  "private": false,
6
6
  "author": "enterprisestandard",