@enterprisestandard/core 0.0.11-beta.20260319.1 → 0.0.12
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 +19 -27
- package/dist/index.js +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -2180,15 +2180,7 @@ declare class MultipleTenantsForUserError extends Error {
|
|
|
2180
2180
|
readonly tenantIds: string[];
|
|
2181
2181
|
constructor(userId: string, tenantIds: string[], options?: ErrorOptions);
|
|
2182
2182
|
}
|
|
2183
|
-
|
|
2184
|
-
readonly kind: "single";
|
|
2185
|
-
};
|
|
2186
|
-
type UserToSingleTenant = typeof UserToSingleTenant;
|
|
2187
|
-
declare const AllowUserWithMultipleTenants: {
|
|
2188
|
-
readonly kind: "multiple";
|
|
2189
|
-
};
|
|
2190
|
-
type AllowUserWithMultipleTenants = typeof AllowUserWithMultipleTenants;
|
|
2191
|
-
type UserTenantMapping = UserToSingleTenant | AllowUserWithMultipleTenants;
|
|
2183
|
+
type UserMode = "singleTenantOnly" | "multipleTenantsPerUser";
|
|
2192
2184
|
type TenantValidators = {
|
|
2193
2185
|
upsertTenantRequest: StandardSchemaV17<unknown, UpsertTenantRequest>;
|
|
2194
2186
|
upsertTenantResponse?: StandardSchemaV17<unknown, UpsertTenantResponse>;
|
|
@@ -2294,23 +2286,23 @@ type TenantStoreWithESOptions<TExtended extends object = Record<string, never>>
|
|
|
2294
2286
|
type TenantMetadataRecord = Omit<TenantBaseRecord, "tenantId" | "config" | "configSource" | "status" | "createdAt" | "updatedAt">;
|
|
2295
2287
|
type TenantExtendedUpsertFields<TExtended extends object> = string extends keyof TExtended ? unknown : Partial<TExtended>;
|
|
2296
2288
|
type TenantStoreUpsertRecord<TExtended extends object = Record<string, never>> = Pick<TenantBaseRecord, "tenantId" | "configSource"> & Partial<TenantMetadataRecord> & Partial<Pick<TenantBaseRecord, "status" | "createdAt" | "updatedAt">> & TenantExtendedUpsertFields<TExtended>;
|
|
2297
|
-
type TenantUserRegistration<
|
|
2298
|
-
|
|
2289
|
+
type TenantUserRegistration<TMode extends UserMode = UserMode> = {
|
|
2290
|
+
userMode: TMode;
|
|
2299
2291
|
registerUserTenantId?(userId: string, tenantId: string | null | undefined): void | Promise<void>;
|
|
2300
2292
|
};
|
|
2301
2293
|
type TenantStoreBase<
|
|
2302
|
-
|
|
2294
|
+
TMode extends UserMode = "singleTenantOnly",
|
|
2303
2295
|
TExtended extends object = Record<string, never>
|
|
2304
|
-
> = TenantUserRegistration<
|
|
2296
|
+
> = TenantUserRegistration<TMode> & {
|
|
2305
2297
|
get(tenantId: string): Promise<StoredTenant<TExtended> | null>;
|
|
2306
2298
|
list(options?: TenantListOptions): Promise<ListResult<StoredTenant<TExtended>>>;
|
|
2307
2299
|
upsert(tenant: TenantStoreUpsertRecord<TExtended>): Promise<StoredTenant<TExtended>>;
|
|
2308
2300
|
delete(tenantId: string): Promise<void>;
|
|
2309
2301
|
};
|
|
2310
2302
|
type TenantLookupMethods<
|
|
2311
|
-
|
|
2303
|
+
TMode extends UserMode,
|
|
2312
2304
|
TExtended extends object
|
|
2313
|
-
> =
|
|
2305
|
+
> = TMode extends "singleTenantOnly" ? {
|
|
2314
2306
|
findTenantByUserId(userId: string): Promise<StoredTenant<TExtended> | null>;
|
|
2315
2307
|
findTenantsByUserId?: never;
|
|
2316
2308
|
} : {
|
|
@@ -2318,36 +2310,36 @@ type TenantLookupMethods<
|
|
|
2318
2310
|
findTenantsByUserId(userId: string): Promise<StoredTenant<TExtended>[]>;
|
|
2319
2311
|
};
|
|
2320
2312
|
type TenantStore<
|
|
2321
|
-
|
|
2313
|
+
TMode extends UserMode = "singleTenantOnly",
|
|
2322
2314
|
TExtended extends object = Record<string, never>
|
|
2323
|
-
> = TenantStoreBase<
|
|
2315
|
+
> = TenantStoreBase<TMode, TExtended> & TenantLookupMethods<TMode, TExtended>;
|
|
2324
2316
|
type TenantStoreWithES<
|
|
2325
|
-
|
|
2317
|
+
TMode extends UserMode = "singleTenantOnly",
|
|
2326
2318
|
TExtended extends object = Record<string, never>
|
|
2327
|
-
> = TenantStore<
|
|
2319
|
+
> = TenantStore<TMode, TExtended> & {
|
|
2328
2320
|
ttl: number;
|
|
2329
2321
|
getEs(tenantId: string): Promise<EnterpriseStandard | null>;
|
|
2330
2322
|
getCachedTenantIds(): string[];
|
|
2331
2323
|
};
|
|
2332
2324
|
type InMemoryTenantStoreOptions<
|
|
2333
|
-
|
|
2325
|
+
TMode extends UserMode = "singleTenantOnly",
|
|
2334
2326
|
TExtended extends object = Record<string, never>
|
|
2335
2327
|
> = TenantStoreWithESOptions<TExtended> & {
|
|
2336
|
-
|
|
2328
|
+
userMode: TMode;
|
|
2337
2329
|
};
|
|
2338
2330
|
declare class InMemoryTenantStore<
|
|
2339
|
-
|
|
2331
|
+
TMode extends UserMode = "singleTenantOnly",
|
|
2340
2332
|
TExtended extends object = Record<string, never>
|
|
2341
2333
|
> {
|
|
2342
2334
|
private tenants;
|
|
2343
2335
|
private tenantEsMap;
|
|
2344
2336
|
private userTenantIds;
|
|
2345
2337
|
readonly ttl: number;
|
|
2346
|
-
readonly
|
|
2338
|
+
readonly userMode: TMode;
|
|
2347
2339
|
private readonly createEs?;
|
|
2348
|
-
readonly findTenantByUserId:
|
|
2349
|
-
readonly findTenantsByUserId:
|
|
2350
|
-
constructor(options
|
|
2340
|
+
readonly findTenantByUserId: TMode extends "singleTenantOnly" ? (userId: string) => Promise<StoredTenant<TExtended> | null> : never;
|
|
2341
|
+
readonly findTenantsByUserId: TMode extends "multipleTenantsPerUser" ? (userId: string) => Promise<StoredTenant<TExtended>[]> : never;
|
|
2342
|
+
constructor(options: InMemoryTenantStoreOptions<TMode, TExtended>);
|
|
2351
2343
|
get(tenantId: string): Promise<StoredTenant<TExtended> | null>;
|
|
2352
2344
|
list(options?: TenantListOptions): Promise<ListResult<StoredTenant<TExtended>>>;
|
|
2353
2345
|
upsert(tenant: TenantStoreUpsertRecord<TExtended>): Promise<StoredTenant<TExtended>>;
|
|
@@ -3021,4 +3013,4 @@ declare function parseJsonc<T>(content: string): T;
|
|
|
3021
3013
|
* @returns A promise that resolves when the service is ready.
|
|
3022
3014
|
*/
|
|
3023
3015
|
declare function waitOn(url: string, test?: (resp: Response) => boolean | Promise<boolean>, pingInterval?: number, warnInterval?: number, timeout?: number): Promise<void>;
|
|
3024
|
-
export { workloadTokenResponseSchema, withValidate, waitOn, version, validationFailureResponse, userSchema, tokenResponseSchema, stripJsonComments, silentLogger, setActiveSession, serializeESConfig, sendTenantWebhook, parseJsonc, oidcCallbackSchema, normalizeTenantRoutingStrategy, normalizeTenantPathNamespace, must, mergeConfig, matchTenantPath, listSsoClientIdsFromCookies, list, jwtAssertionClaimsSchema, infoLogger, idTokenClaimsSchema, groupResourceSchema, getActiveSession, findTenantFromStateParam, defaultLogger, decodeUser, debugLogger, consoleLogger, clearActiveSession, claimsToUser, buildTenantPath, X509Certificate, WorkloadValidators, WorkloadTokenStore, WorkloadTokenResponse, WorkloadIncomingOutgoing, WorkloadIdentity, WorkloadConfigMap, WorkloadConfig, WorkloadClient, Workload, VaultSecretsConfig, ValidateResult, UsersInboundHandlerConfig,
|
|
3016
|
+
export { workloadTokenResponseSchema, withValidate, waitOn, version, validationFailureResponse, userSchema, tokenResponseSchema, stripJsonComments, silentLogger, setActiveSession, serializeESConfig, sendTenantWebhook, parseJsonc, oidcCallbackSchema, normalizeTenantRoutingStrategy, normalizeTenantPathNamespace, must, mergeConfig, matchTenantPath, listSsoClientIdsFromCookies, list, jwtAssertionClaimsSchema, infoLogger, idTokenClaimsSchema, groupResourceSchema, getActiveSession, findTenantFromStateParam, defaultLogger, decodeUser, debugLogger, consoleLogger, clearActiveSession, claimsToUser, buildTenantPath, X509Certificate, WorkloadValidators, WorkloadTokenStore, WorkloadTokenResponse, WorkloadIncomingOutgoing, WorkloadIdentity, WorkloadConfigMap, WorkloadConfig, WorkloadClient, Workload, VaultSecretsConfig, ValidateResult, UsersInboundHandlerConfig, UserStore, UserSortOptions, UserSortField, UserMode, UserListOptions, User2 as User, UpsertTenantResponse, UpsertTenantRequest, TokenValidationResult, TokenResponse, TenantWebhookPayload, TenantValidators, TenantUserRegistration, TenantStoreWithESOptions, TenantStoreWithES, TenantStoreUpsertRecord, TenantStore, TenantStatus, TenantSortOptions, TenantSortField, TenantSecretsConfig, TenantRoutingStrategy, TenantRequestError, TenantPathRoutingStrategy, TenantPathNamespace, TenantPathMatch, TenantListOptions, TenantJwtRoutingStrategy, TenantEsFactory, TenantConfigSourceInput, TenantConfigEnv, StoredUser, StoredTenantRecord, StoredTenant, StoredGroup, StateCookie, StandardSchemaWithValidate, SortDirection, SessionStore, Session, ServerOnlyWorkloadConfig, SecretsValidators, SecretsSourceType, SecretsSourceMap, SecretsSourceConfig, SecretsSource, SecretsOperationOptions, SecretsModuleConfig, Secrets, SecretRequestSeverity, SecretLifecycleRequest, Secret, User as ScimUser, ScimResult, ScimListResponse, ScimError, SSOValidators, SSOHandlerConfig, SSOConfig, SSO, Role, ResolvedLfvSecretsConfig, RemoteConfig, Photo, PhoneNumber, OidcCallbackParams, Name, MultipleTenantsForUserError, MetaData, MagicLinkStore, MagicLink, LoginConfig, Logger, ListResult, LfvSecretsConfig, JwtBearerWorkloadConfig, JWTAssertionClaims, InMemoryTenantStoreOptions, InMemoryTenantStore, IdTokenClaims, IAMValidators, IAMUsersInbound, IAMHandlerConfig, IAMGroupsOutbound, IAMGroupsInbound, IAMConfig, IAM, GroupsInboundHandlerConfig, GroupStore, GroupSortOptions, GroupSortField, GroupResource, GroupMember, GroupListOptions, Group, GcpSecretsConfig, FrameworkWorkloadIncomingOutgoing, FrameworkWorkloadConfig, FrameworkSecretsSourceConfig, FrameworkSecretsModuleConfig, FrameworkConfig, EnvironmentType, EnterpriseUser, EnterpriseStandardFromConfig, EnterpriseStandardBase, EnterpriseStandard, EnterpriseExtension, Email, ESValidators, ESRoutingOptions, ESRouteModule, ESRouteFilterResult, ESResolvedRoute, ESModuleFromConfig, ESConfigChangeResult, ESConfigChangeOptions, ESConfigChangeCallback, ESConfig, DevSecretsConfig, DEFAULT_TENANT_UI_NAMESPACE, DEFAULT_TENANT_API_NAMESPACE, CreateUserOptions, CreateTenantResponse, CreateTenantRequest, CreateGroupOptions, ConfigSourceType, ConfigSource, ClientCredentialsWorkloadConfig, CachedWorkloadToken, CIAMValidators, CIAMConfigFromCode, CIAMConfig, CIAM, BaseUser, AzureSecretsConfig, AwsSecretsConfig, AwsAuthMethod, ApplicationValidators, Address };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as z,a as f0,b as x0,c as A0,d as Q0,e as X0,f as Z0,g as G0,h as R0,i as T0,j as Y0,k as M0,l as c0,m as y0,n as z0,o as B0,p as H0,q as N0,t as W0,u as C0,v as _0,w as K0,x as F0}from"./shared/core-gqcvxn3w.js";var V="0.0.11-beta.20260319.1";var E=["sessionStore","userStore","groupStore","tokenStore","magicLinkStore"];function C(L){if(L===null||typeof L!=="object")return L;let $={};for(let[J,D]of Object.entries(L)){if(E.includes(J)||J==="validators")continue;$[J]=D!==null&&typeof D==="object"&&!Array.isArray(D)&&Object.getPrototypeOf(D)===Object.prototype?C(D):D}return $}function j(L){return C(L)}function y(L,$,J,D){let f=$.length,Q=D??L,x=Q>0?Math.floor(J/Q)+1:1,A=Q>0?Math.ceil(L/Q):0;return{total:L,count:f,items:$,size:Q,page:x,pages:A}}class H extends Error{constructor(L,$){super(L,$);this.name="TenantRequestError",Object.setPrototypeOf(this,H.prototype)}}class N extends Error{userId;tenantIds;constructor(L,$,J){super(`Multiple tenants found for user id "${L}"`,J);this.name="MultipleTenantsForUserError",this.userId=L,this.tenantIds=$,Object.setPrototypeOf(this,N.prototype)}}var M={kind:"single"},S={kind:"multiple"},B=Number.POSITIVE_INFINITY;class _{tenants=new Map;tenantEsMap=new Map;userTenantIds=new Map;ttl;userTenantMapping;createEs;findTenantByUserId;findTenantsByUserId;constructor(L={}){if(this.ttl=I(L.ttl),this.userTenantMapping=L.userTenantMapping??M,this.createEs=L.createEs,this.userTenantMapping.kind===M.kind){this.findTenantByUserId=this.findSingleTenantByUserId.bind(this),this.findTenantsByUserId=void 0;return}this.findTenantByUserId=void 0,this.findTenantsByUserId=this.findMultipleTenantsByUserId.bind(this)}async get(L){return this.tenants.get(L)??null}async list(L){let $=Array.from(this.tenants.values()),J=Math.max(0,L?.start??0),D=L?.limit,f=L?.sort;if(f?.length)$=[...$].sort((Z,R)=>{for(let{field:G,direction:q}of f){let w=Z[G],U=R[G],c=O(w,U);if(c!==0)return q==="desc"?-c:c}return 0});let Q=$.length,x=D!=null?J+D:void 0,A=$.slice(J,x);return y(Q,A,J,D)}async upsert(L){let $=new Date,J=this.tenants.get(L.tenantId),D={...J??{},...L,companyId:L.companyId??J?.companyId??"",companyName:L.companyName??J?.companyName??"",environmentType:L.environmentType??J?.environmentType??"DEV",email:L.email??J?.email,webhookUrl:L.webhookUrl??J?.webhookUrl,callbackUrl:L.callbackUrl??J?.callbackUrl,tenantUrl:L.tenantUrl??J?.tenantUrl,status:L.status??J?.status??"completed",createdAt:L.createdAt??J?.createdAt??$,updatedAt:L.updatedAt??$};return this.tenants.set(D.tenantId,D),this.tenantEsMap.delete(D.tenantId),D}async delete(L){this.tenantEsMap.delete(L),this.tenants.delete(L)}async getEs(L){let $=await this.get(L);if(!$)throw Error(`Tenant "${L}" not found`);if(!this.createEs)throw Error("InMemoryTenantStore requires options.createEs to use getEs()");if(this.ttl===0)return this.createEs(z($));let J=Date.now(),D=this.tenantEsMap.get(L);if(D&&D.expiresAt>J)return D.es;if(D)this.tenantEsMap.delete(L);let f=this.createEs(z($));return this.tenantEsMap.set(L,{es:f,expiresAt:P(J,this.ttl)}),f}getCachedTenantIds(){if(this.ttl===0)return[];let L=Date.now();for(let[$,J]of this.tenantEsMap.entries())if(J.expiresAt<=L)this.tenantEsMap.delete($);return Array.from(this.tenantEsMap.keys())}async registerUserTenantId(L,$){if(!L)return;let J=g($);if(this.userTenantMapping.kind===M.kind){this.userTenantIds.set(L,new Set([J]));return}let D=this.userTenantIds.get(L);if(D){D.add(J);return}this.userTenantIds.set(L,new Set([J]))}async findSingleTenantByUserId(L){return(await this.resolveTenantsByUserId(L))[0]??null}async findMultipleTenantsByUserId(L){return this.resolveTenantsByUserId(L)}async resolveTenantsByUserId(L){let $=this.userTenantIds.get(L);if(!$||$.size===0)return[];let J=$.has(null),D=Array.from($).filter((x)=>x!=null);if(D.length===0)return[];let f=await Promise.all(D.map(async(x)=>({tenantId:x,tenant:await this.get(x)}))),Q=f.filter((x)=>x.tenant!=null).map((x)=>x.tenantId);if(Q.length===0){if(J)this.userTenantIds.set(L,new Set([null]));else this.userTenantIds.delete(L);return[]}if(Q.length!==D.length){let x=J?[null,...Q]:Q;this.userTenantIds.set(L,new Set(x))}return f.map((x)=>x.tenant).filter((x)=>x!=null)}}function O(L,$){let J=L===void 0||L===null,D=$===void 0||$===null;if(J&&D)return 0;if(J)return 1;if(D)return-1;if(L instanceof Date&&$ instanceof Date)return L.getTime()-$.getTime();let f=String(L),Q=String($);return f.localeCompare(Q)}function g(L){if(typeof L!=="string")return null;return L.trim()||null}function I(L){if(L===void 0)return B;if(L<=0)return L===0?0:B;return L}function P(L,$){if(!Number.isFinite($))return B;return L+$}function p(L,$,J){return(async()=>{try{let D=await fetch(L,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)});if(!D.ok)J.error(`Failed to send webhook update: ${D.status} ${D.statusText}`)}catch(D){J.error("Failed to send webhook update:",D)}})()}async function m(L,$,J){return p(L,$,J)}var h={beforeTenantSegments:["ui"]},b={beforeTenantSegments:["api"]};function K(L){return{segments:W(L?.segments)}}function W(L){return(L??[]).map(($)=>$.trim()).filter(Boolean)}function o(L){let $=L.trim();if(!$)return"/";let J=$.replace(/\\/g,"/").replace(/\/+/g,"/");return J.startsWith("/")?J:`/${J}`}function F(L){return o(L).split("/").filter(Boolean)}function T(L){return{beforeTenantSegments:W(L?.beforeTenantSegments),afterTenantSegments:W(L?.afterTenantSegments)}}function n(L){if(!L||L.type===void 0||L.type==="path"){let J=L;return{type:"path",ui:T(J?.ui),api:T(J?.api)}}let $=L;return{...$,ui:K($.ui),api:K($.api)}}function v(L,$){let J=T($),D=J.beforeTenantSegments??[],f=J.afterTenantSegments??[],Q=F(L),x=D.length+1+f.length;if(Q.length<x)return null;for(let G=0;G<D.length;G++)if(Q[G]!==D[G])return null;let A=D.length,Z=Q[A];if(!Z)return null;for(let G=0;G<f.length;G++)if(Q[A+1+G]!==f[G])return null;let R=Q.slice(A+1+f.length);return{tenantId:decodeURIComponent(Z),restSegments:R,restPath:R.length>0?`/${R.join("/")}`:"/"}}function d(L,$="/",J){let D=T(J),f=D.beforeTenantSegments??[],Q=D.afterTenantSegments??[],x=F($),A=[...f,encodeURIComponent(L),...Q,...x];return A.length>0?`/${A.join("/")}`:"/"}function X(L,$,J,D,f){if(L===void 0||L===null){if(J)D.push({message:`${$} is required`,path:f});return}if(typeof L!=="string"){D.push({message:`${$} must be a string`,path:f});return}return L}function Y(L,$,J,D){if(L===void 0||L===null)return;if(typeof L!=="boolean"){J.push({message:`${$} must be a boolean`,path:D});return}return L}function r(L,$,J){if(L===void 0||L===null)return;if(typeof L!=="object"||L===null){$.push({message:"name must be an object",path:J});return}let D=L,f={};return f.formatted=X(D.formatted,"formatted",!1,$,[...J,"formatted"]),f.familyName=X(D.familyName,"familyName",!1,$,[...J,"familyName"]),f.givenName=X(D.givenName,"givenName",!1,$,[...J,"givenName"]),f.middleName=X(D.middleName,"middleName",!1,$,[...J,"middleName"]),f.honorificPrefix=X(D.honorificPrefix,"honorificPrefix",!1,$,[...J,"honorificPrefix"]),f.honorificSuffix=X(D.honorificSuffix,"honorificSuffix",!1,$,[...J,"honorificSuffix"]),f}function l(L,$,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){$.push({message:"emails must be an array",path:J});return}let D=[];for(let f=0;f<L.length;f++){let Q=L[f],x=[...J,f];if(typeof Q!=="object"||Q===null){$.push({message:"email must be an object",path:x});continue}let A=Q,Z=X(A.value,"value",!0,$,[...x,"value"]);if(Z)D.push({value:Z,display:X(A.display,"display",!1,$,[...x,"display"]),type:X(A.type,"type",!1,$,[...x,"type"]),primary:Y(A.primary,"primary",$,[...x,"primary"])})}return D.length>0?D:void 0}function t(L,$,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){$.push({message:"phoneNumbers must be an array",path:J});return}let D=[];for(let f=0;f<L.length;f++){let Q=L[f],x=[...J,f];if(typeof Q!=="object"||Q===null){$.push({message:"phoneNumber must be an object",path:x});continue}let A=Q,Z=X(A.value,"value",!0,$,[...x,"value"]);if(Z)D.push({value:Z,display:X(A.display,"display",!1,$,[...x,"display"]),type:X(A.type,"type",!1,$,[...x,"type"]),primary:Y(A.primary,"primary",$,[...x,"primary"])})}return D.length>0?D:void 0}function i(L,$,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){$.push({message:"addresses must be an array",path:J});return}let D=[];for(let f=0;f<L.length;f++){let Q=L[f],x=[...J,f];if(typeof Q!=="object"||Q===null){$.push({message:"address must be an object",path:x});continue}let A=Q;D.push({formatted:X(A.formatted,"formatted",!1,$,[...x,"formatted"]),streetAddress:X(A.streetAddress,"streetAddress",!1,$,[...x,"streetAddress"]),locality:X(A.locality,"locality",!1,$,[...x,"locality"]),region:X(A.region,"region",!1,$,[...x,"region"]),postalCode:X(A.postalCode,"postalCode",!1,$,[...x,"postalCode"]),country:X(A.country,"country",!1,$,[...x,"country"]),type:X(A.type,"type",!1,$,[...x,"type"]),primary:Y(A.primary,"primary",$,[...x,"primary"])})}return D.length>0?D:void 0}function u(L,$,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){$.push({message:"groups must be an array",path:J});return}let D=[];for(let f=0;f<L.length;f++){let Q=L[f],x=[...J,f];if(typeof Q!=="object"||Q===null){$.push({message:"group must be an object",path:x});continue}let A=Q,Z=X(A.value,"value",!0,$,[...x,"value"]);if(Z)D.push({value:Z,$ref:X(A.$ref,"$ref",!1,$,[...x,"$ref"]),display:X(A.display,"display",!1,$,[...x,"display"]),type:X(A.type,"type",!1,$,[...x,"type"])})}return D.length>0?D:void 0}function a(L,$,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){$.push({message:"roles must be an array",path:J});return}let D=[];for(let f=0;f<L.length;f++){let Q=L[f],x=[...J,f];if(typeof Q!=="object"||Q===null){$.push({message:"role must be an object",path:x});continue}let A=Q,Z=X(A.value,"value",!0,$,[...x,"value"]);if(Z)D.push({value:Z,display:X(A.display,"display",!1,$,[...x,"display"]),type:X(A.type,"type",!1,$,[...x,"type"]),primary:Y(A.primary,"primary",$,[...x,"primary"])})}return D.length>0?D:void 0}function e(L,$,J){if(L===void 0||L===null)return;if(typeof L!=="object"||L===null){$.push({message:"Enterprise User extension must be an object",path:J});return}let D=L,f={};if(f.employeeNumber=X(D.employeeNumber,"employeeNumber",!1,$,[...J,"employeeNumber"]),f.costCenter=X(D.costCenter,"costCenter",!1,$,[...J,"costCenter"]),f.organization=X(D.organization,"organization",!1,$,[...J,"organization"]),f.division=X(D.division,"division",!1,$,[...J,"division"]),f.department=X(D.department,"department",!1,$,[...J,"department"]),D.manager!==void 0&&D.manager!==null)if(typeof D.manager!=="object"||D.manager===null)$.push({message:"manager must be an object",path:[...J,"manager"]});else{let Q=D.manager;f.manager={value:X(Q.value,"value",!1,$,[...J,"manager","value"]),$ref:X(Q.$ref,"$ref",!1,$,[...J,"manager","$ref"]),displayName:X(Q.displayName,"displayName",!1,$,[...J,"manager","displayName"])}}return f}function s(L){return{"~standard":{version:1,vendor:L,validate:($)=>{if(typeof $!=="object"||$===null)return{issues:[{message:"Expected an object"}]};let J=$,D=[],f={},Q=X(J.userName,"userName",!0,D,["userName"]);if(!Q)return{issues:D};f.userName=Q,f.id=X(J.id,"id",!1,D,["id"]),f.externalId=X(J.externalId,"externalId",!1,D,["externalId"]),f.displayName=X(J.displayName,"displayName",!1,D,["displayName"]),f.nickName=X(J.nickName,"nickName",!1,D,["nickName"]),f.profileUrl=X(J.profileUrl,"profileUrl",!1,D,["profileUrl"]),f.title=X(J.title,"title",!1,D,["title"]),f.userType=X(J.userType,"userType",!1,D,["userType"]),f.preferredLanguage=X(J.preferredLanguage,"preferredLanguage",!1,D,["preferredLanguage"]),f.locale=X(J.locale,"locale",!1,D,["locale"]),f.timezone=X(J.timezone,"timezone",!1,D,["timezone"]),f.password=X(J.password,"password",!1,D,["password"]),f.active=Y(J.active,"active",D,["active"]),f.name=r(J.name,D,["name"]),f.emails=l(J.emails,D,["emails"]),f.phoneNumbers=t(J.phoneNumbers,D,["phoneNumbers"]),f.addresses=i(J.addresses,D,["addresses"]),f.groups=u(J.groups,D,["groups"]),f.roles=a(J.roles,D,["roles"]);let x="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(J[x]!==void 0)f[x]=e(J[x],D,[x]);if(J.schemas!==void 0)if(Array.isArray(J.schemas))f.schemas=J.schemas.filter((A)=>typeof A==="string");else D.push({message:"schemas must be an array",path:["schemas"]});if(J.meta!==void 0)if(typeof J.meta==="object"&&J.meta!==null){let A=J.meta;f.meta={resourceType:typeof A.resourceType==="string"?A.resourceType:void 0,created:typeof A.created==="string"?A.created:void 0,lastModified:typeof A.lastModified==="string"?A.lastModified:void 0,location:typeof A.location==="string"?A.location:void 0,version:typeof A.version==="string"?A.version:void 0}}else D.push({message:"meta must be an object",path:["meta"]});if(D.length>0)return{issues:D};return{value:f}}}}}function J0(L,$,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){$.push({message:"members must be an array",path:J});return}let D=[];for(let f=0;f<L.length;f++){let Q=L[f],x=[...J,f];if(typeof Q!=="object"||Q===null){$.push({message:"member must be an object",path:x});continue}let A=Q,Z=X(A.value,"value",!0,$,[...x,"value"]);if(Z){let R=X(A.type,"type",!1,$,[...x,"type"]);D.push({value:Z,$ref:X(A.$ref,"$ref",!1,$,[...x,"$ref"]),display:X(A.display,"display",!1,$,[...x,"display"]),type:R==="User"||R==="Group"?R:void 0})}}return D.length>0?D:void 0}function L0(L){return{"~standard":{version:1,vendor:L,validate:($)=>{if(typeof $!=="object"||$===null)return{issues:[{message:"Expected an object"}]};let J=$,D=[],f={},Q=X(J.displayName,"displayName",!0,D,["displayName"]);if(!Q)return{issues:D};if(f.displayName=Q,f.id=X(J.id,"id",!1,D,["id"]),f.externalId=X(J.externalId,"externalId",!1,D,["externalId"]),f.members=J0(J.members,D,["members"]),J.schemas!==void 0)if(Array.isArray(J.schemas))f.schemas=J.schemas.filter((x)=>typeof x==="string");else D.push({message:"schemas must be an array",path:["schemas"]});if(J.meta!==void 0)if(typeof J.meta==="object"&&J.meta!==null){let x=J.meta;f.meta={resourceType:typeof x.resourceType==="string"?x.resourceType:void 0,created:typeof x.created==="string"?x.created:void 0,lastModified:typeof x.lastModified==="string"?x.lastModified:void 0,location:typeof x.location==="string"?x.location:void 0,version:typeof x.version==="string"?x.version:void 0}}else D.push({message:"meta must be an object",path:["meta"]});if(D.length>0)return{issues:D};return{value:f}}}}}function D0(L){return{"~standard":{version:1,vendor:L,validate:($)=>{if(typeof $!=="object"||$===null)return{issues:[{message:"Expected an object"}]};let J=$,D=[],f={...J},Q=["iss","sub"];for(let Z of Q)if(Z in J){if(typeof J[Z]!=="string")D.push({message:`${Z} must be a string`,path:[Z]})}else D.push({message:`${Z} is required`,path:[Z]});if("aud"in J&&J.aud!==void 0){let Z=J.aud;if(typeof Z!=="string"&&!Array.isArray(Z))D.push({message:"aud must be a string or array of strings",path:["aud"]});else if(Array.isArray(Z)&&!Z.every((R)=>typeof R==="string"))D.push({message:"aud array must contain only strings",path:["aud"]})}let x=["jti","scope"];for(let Z of x)if(Z in J&&J[Z]!==void 0){if(typeof J[Z]!=="string")D.push({message:`${Z} must be a string`,path:[Z]})}let A=["exp","iat"];for(let Z of A)if(Z in J){if(typeof J[Z]!=="number")D.push({message:`${Z} must be a number`,path:[Z]})}else D.push({message:`${Z} is required`,path:[Z]});if(D.length>0)return{issues:D};return{value:f}}}}}function $0(L){return{"~standard":{version:1,vendor:L,validate:($)=>{if(typeof $!=="object"||$===null)return{issues:[{message:"Expected an object"}]};let J=$,D=[],f={};if("access_token"in J)if(typeof J.access_token==="string")f.access_token=J.access_token;else D.push({message:"access_token must be a string",path:["access_token"]});else D.push({message:"access_token is required",path:["access_token"]});if("token_type"in J)if(typeof J.token_type==="string")f.token_type=J.token_type;else D.push({message:"token_type must be a string",path:["token_type"]});else D.push({message:"token_type is required",path:["token_type"]});if("scope"in J)if(typeof J.scope==="string"||J.scope===void 0)f.scope=J.scope;else D.push({message:"scope must be a string",path:["scope"]});if("refresh_token"in J)if(typeof J.refresh_token==="string"||J.refresh_token===void 0)f.refresh_token=J.refresh_token;else D.push({message:"refresh_token must be a string",path:["refresh_token"]});if("expires"in J)if(typeof J.expires==="string"||J.expires===void 0)f.expires=J.expires;else D.push({message:"expires must be a string",path:["expires"]});if("expires_in"in J)if(typeof J.expires_in==="number"||J.expires_in===void 0)f.expires_in=J.expires_in;else D.push({message:"expires_in must be a number",path:["expires_in"]});if(D.length>0)return{issues:D};return{value:f}}}}}export{$0 as workloadTokenResponseSchema,Q0 as withValidate,Y0 as waitOn,V as version,Z0 as validationFailureResponse,s as userSchema,x0 as tokenResponseSchema,R0 as stripJsonComments,z0 as silentLogger,C0 as setActiveSession,j as serializeESConfig,m as sendTenantWebhook,T0 as parseJsonc,f0 as oidcCallbackSchema,n as normalizeTenantRoutingStrategy,T as normalizeTenantPathNamespace,X0 as must,G0 as mergeConfig,v as matchTenantPath,K0 as listSsoClientIdsFromCookies,y as list,D0 as jwtAssertionClaimsSchema,B0 as infoLogger,A0 as idTokenClaimsSchema,L0 as groupResourceSchema,W0 as getActiveSession,F0 as findTenantFromStateParam,y0 as defaultLogger,c0 as decodeUser,H0 as debugLogger,N0 as consoleLogger,_0 as clearActiveSession,M0 as claimsToUser,d as buildTenantPath,M as UserToSingleTenant,H as TenantRequestError,N as MultipleTenantsForUserError,_ as InMemoryTenantStore,h as DEFAULT_TENANT_UI_NAMESPACE,b as DEFAULT_TENANT_API_NAMESPACE,S as AllowUserWithMultipleTenants};
|
|
1
|
+
import{I as B,a as D0,b as T0,c as $0,d as f0,e as x0,f as A0,g as Q0,h as X0,i as Z0,j as G0,k as R0,l as Y0,m as c0,n as y0,o as z0,p as B0,q as H0,t as N0,u as W0,v as C0,w as M0,x as _0}from"./shared/core-gqcvxn3w.js";var k="0.0.12";var V=["sessionStore","userStore","groupStore","tokenStore","magicLinkStore"];function C(L){if(L===null||typeof L!=="object")return L;let T={};for(let[J,D]of Object.entries(L)){if(V.includes(J)||J==="validators")continue;T[J]=D!==null&&typeof D==="object"&&!Array.isArray(D)&&Object.getPrototypeOf(D)===Object.prototype?C(D):D}return T}function E(L){return C(L)}function z(L,T,J,D){let $=T.length,A=D??L,f=A>0?Math.floor(J/A)+1:1,x=A>0?Math.ceil(L/A):0;return{total:L,count:$,items:T,size:A,page:f,pages:x}}class N extends Error{constructor(L,T){super(L,T);this.name="TenantRequestError",Object.setPrototypeOf(this,N.prototype)}}class c extends Error{userId;tenantIds;constructor(L,T,J){super(`Multiple tenants found for user id "${L}"`,J);this.name="MultipleTenantsForUserError",this.userId=L,this.tenantIds=T,Object.setPrototypeOf(this,c.prototype)}}var H=Number.POSITIVE_INFINITY;class M{tenants=new Map;tenantEsMap=new Map;userTenantIds=new Map;ttl;userMode;createEs;findTenantByUserId;findTenantsByUserId;constructor(L){if(this.ttl=O(L.ttl),this.userMode=L.userMode,this.createEs=L.createEs,this.userMode==="singleTenantOnly"){this.findTenantByUserId=this.findSingleTenantByUserId.bind(this),this.findTenantsByUserId=void 0;return}this.findTenantByUserId=void 0,this.findTenantsByUserId=this.findMultipleTenantsByUserId.bind(this)}async get(L){return this.tenants.get(L)??null}async list(L){let T=Array.from(this.tenants.values()),J=Math.max(0,L?.start??0),D=L?.limit,$=L?.sort;if($?.length)T=[...T].sort((X,G)=>{for(let{field:Z,direction:q}of $){let F=X[Z],U=G[Z],y=j(F,U);if(y!==0)return q==="desc"?-y:y}return 0});let A=T.length,f=D!=null?J+D:void 0,x=T.slice(J,f);return z(A,x,J,D)}async upsert(L){let T=new Date,J=this.tenants.get(L.tenantId),D={...J??{},...L,companyId:L.companyId??J?.companyId??"",companyName:L.companyName??J?.companyName??"",environmentType:L.environmentType??J?.environmentType??"DEV",email:L.email??J?.email,webhookUrl:L.webhookUrl??J?.webhookUrl,callbackUrl:L.callbackUrl??J?.callbackUrl,tenantUrl:L.tenantUrl??J?.tenantUrl,status:L.status??J?.status??"completed",createdAt:L.createdAt??J?.createdAt??T,updatedAt:L.updatedAt??T};return this.tenants.set(D.tenantId,D),this.tenantEsMap.delete(D.tenantId),D}async delete(L){this.tenantEsMap.delete(L),this.tenants.delete(L)}async getEs(L){let T=await this.get(L);if(!T)throw Error(`Tenant "${L}" not found`);if(!this.createEs)throw Error("InMemoryTenantStore requires options.createEs to use getEs()");if(this.ttl===0)return this.createEs(B(T));let J=Date.now(),D=this.tenantEsMap.get(L);if(D&&D.expiresAt>J)return D.es;if(D)this.tenantEsMap.delete(L);let $=this.createEs(B(T));return this.tenantEsMap.set(L,{es:$,expiresAt:g(J,this.ttl)}),$}getCachedTenantIds(){if(this.ttl===0)return[];let L=Date.now();for(let[T,J]of this.tenantEsMap.entries())if(J.expiresAt<=L)this.tenantEsMap.delete(T);return Array.from(this.tenantEsMap.keys())}async registerUserTenantId(L,T){if(!L)return;let J=S(T);if(this.userMode==="singleTenantOnly"){this.userTenantIds.set(L,new Set([J]));return}let D=this.userTenantIds.get(L);if(D){D.add(J);return}this.userTenantIds.set(L,new Set([J]))}async findSingleTenantByUserId(L){let T=await this.resolveTenantsByUserId(L);if(T.length>1)throw new c(L,T.map((J)=>J.tenantId));return T[0]??null}async findMultipleTenantsByUserId(L){return this.resolveTenantsByUserId(L)}async resolveTenantsByUserId(L){let T=this.userTenantIds.get(L);if(!T||T.size===0)return[];let J=T.has(null),D=Array.from(T).filter((f)=>f!=null);if(D.length===0)return[];let $=await Promise.all(D.map(async(f)=>({tenantId:f,tenant:await this.get(f)}))),A=$.filter((f)=>f.tenant!=null).map((f)=>f.tenantId);if(A.length===0){if(J)this.userTenantIds.set(L,new Set([null]));else this.userTenantIds.delete(L);return[]}if(A.length!==D.length){let f=J?[null,...A]:A;this.userTenantIds.set(L,new Set(f))}return $.map((f)=>f.tenant).filter((f)=>f!=null)}}function j(L,T){let J=L===void 0||L===null,D=T===void 0||T===null;if(J&&D)return 0;if(J)return 1;if(D)return-1;if(L instanceof Date&&T instanceof Date)return L.getTime()-T.getTime();let $=String(L),A=String(T);return $.localeCompare(A)}function S(L){if(typeof L!=="string")return null;return L.trim()||null}function O(L){if(L===void 0)return H;if(L<=0)return L===0?0:H;return L}function g(L,T){if(!Number.isFinite(T))return H;return L+T}function I(L,T,J){return(async()=>{try{let D=await fetch(L,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(T)});if(!D.ok)J.error(`Failed to send webhook update: ${D.status} ${D.statusText}`)}catch(D){J.error("Failed to send webhook update:",D)}})()}async function P(L,T,J){return I(L,T,J)}var p={beforeTenantSegments:["ui"]},m={beforeTenantSegments:["api"]};function _(L){return{segments:W(L?.segments)}}function W(L){return(L??[]).map((T)=>T.trim()).filter(Boolean)}function h(L){let T=L.trim();if(!T)return"/";let J=T.replace(/\\/g,"/").replace(/\/+/g,"/");return J.startsWith("/")?J:`/${J}`}function K(L){return h(L).split("/").filter(Boolean)}function R(L){return{beforeTenantSegments:W(L?.beforeTenantSegments),afterTenantSegments:W(L?.afterTenantSegments)}}function b(L){if(!L||L.type===void 0||L.type==="path"){let J=L;return{type:"path",ui:R(J?.ui),api:R(J?.api)}}let T=L;return{...T,ui:_(T.ui),api:_(T.api)}}function o(L,T){let J=R(T),D=J.beforeTenantSegments??[],$=J.afterTenantSegments??[],A=K(L),f=D.length+1+$.length;if(A.length<f)return null;for(let Z=0;Z<D.length;Z++)if(A[Z]!==D[Z])return null;let x=D.length,X=A[x];if(!X)return null;for(let Z=0;Z<$.length;Z++)if(A[x+1+Z]!==$[Z])return null;let G=A.slice(x+1+$.length);return{tenantId:decodeURIComponent(X),restSegments:G,restPath:G.length>0?`/${G.join("/")}`:"/"}}function n(L,T="/",J){let D=R(J),$=D.beforeTenantSegments??[],A=D.afterTenantSegments??[],f=K(T),x=[...$,encodeURIComponent(L),...A,...f];return x.length>0?`/${x.join("/")}`:"/"}function Q(L,T,J,D,$){if(L===void 0||L===null){if(J)D.push({message:`${T} is required`,path:$});return}if(typeof L!=="string"){D.push({message:`${T} must be a string`,path:$});return}return L}function Y(L,T,J,D){if(L===void 0||L===null)return;if(typeof L!=="boolean"){J.push({message:`${T} must be a boolean`,path:D});return}return L}function v(L,T,J){if(L===void 0||L===null)return;if(typeof L!=="object"||L===null){T.push({message:"name must be an object",path:J});return}let D=L,$={};return $.formatted=Q(D.formatted,"formatted",!1,T,[...J,"formatted"]),$.familyName=Q(D.familyName,"familyName",!1,T,[...J,"familyName"]),$.givenName=Q(D.givenName,"givenName",!1,T,[...J,"givenName"]),$.middleName=Q(D.middleName,"middleName",!1,T,[...J,"middleName"]),$.honorificPrefix=Q(D.honorificPrefix,"honorificPrefix",!1,T,[...J,"honorificPrefix"]),$.honorificSuffix=Q(D.honorificSuffix,"honorificSuffix",!1,T,[...J,"honorificSuffix"]),$}function d(L,T,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){T.push({message:"emails must be an array",path:J});return}let D=[];for(let $=0;$<L.length;$++){let A=L[$],f=[...J,$];if(typeof A!=="object"||A===null){T.push({message:"email must be an object",path:f});continue}let x=A,X=Q(x.value,"value",!0,T,[...f,"value"]);if(X)D.push({value:X,display:Q(x.display,"display",!1,T,[...f,"display"]),type:Q(x.type,"type",!1,T,[...f,"type"]),primary:Y(x.primary,"primary",T,[...f,"primary"])})}return D.length>0?D:void 0}function r(L,T,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){T.push({message:"phoneNumbers must be an array",path:J});return}let D=[];for(let $=0;$<L.length;$++){let A=L[$],f=[...J,$];if(typeof A!=="object"||A===null){T.push({message:"phoneNumber must be an object",path:f});continue}let x=A,X=Q(x.value,"value",!0,T,[...f,"value"]);if(X)D.push({value:X,display:Q(x.display,"display",!1,T,[...f,"display"]),type:Q(x.type,"type",!1,T,[...f,"type"]),primary:Y(x.primary,"primary",T,[...f,"primary"])})}return D.length>0?D:void 0}function l(L,T,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){T.push({message:"addresses must be an array",path:J});return}let D=[];for(let $=0;$<L.length;$++){let A=L[$],f=[...J,$];if(typeof A!=="object"||A===null){T.push({message:"address must be an object",path:f});continue}let x=A;D.push({formatted:Q(x.formatted,"formatted",!1,T,[...f,"formatted"]),streetAddress:Q(x.streetAddress,"streetAddress",!1,T,[...f,"streetAddress"]),locality:Q(x.locality,"locality",!1,T,[...f,"locality"]),region:Q(x.region,"region",!1,T,[...f,"region"]),postalCode:Q(x.postalCode,"postalCode",!1,T,[...f,"postalCode"]),country:Q(x.country,"country",!1,T,[...f,"country"]),type:Q(x.type,"type",!1,T,[...f,"type"]),primary:Y(x.primary,"primary",T,[...f,"primary"])})}return D.length>0?D:void 0}function t(L,T,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){T.push({message:"groups must be an array",path:J});return}let D=[];for(let $=0;$<L.length;$++){let A=L[$],f=[...J,$];if(typeof A!=="object"||A===null){T.push({message:"group must be an object",path:f});continue}let x=A,X=Q(x.value,"value",!0,T,[...f,"value"]);if(X)D.push({value:X,$ref:Q(x.$ref,"$ref",!1,T,[...f,"$ref"]),display:Q(x.display,"display",!1,T,[...f,"display"]),type:Q(x.type,"type",!1,T,[...f,"type"])})}return D.length>0?D:void 0}function i(L,T,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){T.push({message:"roles must be an array",path:J});return}let D=[];for(let $=0;$<L.length;$++){let A=L[$],f=[...J,$];if(typeof A!=="object"||A===null){T.push({message:"role must be an object",path:f});continue}let x=A,X=Q(x.value,"value",!0,T,[...f,"value"]);if(X)D.push({value:X,display:Q(x.display,"display",!1,T,[...f,"display"]),type:Q(x.type,"type",!1,T,[...f,"type"]),primary:Y(x.primary,"primary",T,[...f,"primary"])})}return D.length>0?D:void 0}function u(L,T,J){if(L===void 0||L===null)return;if(typeof L!=="object"||L===null){T.push({message:"Enterprise User extension must be an object",path:J});return}let D=L,$={};if($.employeeNumber=Q(D.employeeNumber,"employeeNumber",!1,T,[...J,"employeeNumber"]),$.costCenter=Q(D.costCenter,"costCenter",!1,T,[...J,"costCenter"]),$.organization=Q(D.organization,"organization",!1,T,[...J,"organization"]),$.division=Q(D.division,"division",!1,T,[...J,"division"]),$.department=Q(D.department,"department",!1,T,[...J,"department"]),D.manager!==void 0&&D.manager!==null)if(typeof D.manager!=="object"||D.manager===null)T.push({message:"manager must be an object",path:[...J,"manager"]});else{let A=D.manager;$.manager={value:Q(A.value,"value",!1,T,[...J,"manager","value"]),$ref:Q(A.$ref,"$ref",!1,T,[...J,"manager","$ref"]),displayName:Q(A.displayName,"displayName",!1,T,[...J,"manager","displayName"])}}return $}function a(L){return{"~standard":{version:1,vendor:L,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let J=T,D=[],$={},A=Q(J.userName,"userName",!0,D,["userName"]);if(!A)return{issues:D};$.userName=A,$.id=Q(J.id,"id",!1,D,["id"]),$.externalId=Q(J.externalId,"externalId",!1,D,["externalId"]),$.displayName=Q(J.displayName,"displayName",!1,D,["displayName"]),$.nickName=Q(J.nickName,"nickName",!1,D,["nickName"]),$.profileUrl=Q(J.profileUrl,"profileUrl",!1,D,["profileUrl"]),$.title=Q(J.title,"title",!1,D,["title"]),$.userType=Q(J.userType,"userType",!1,D,["userType"]),$.preferredLanguage=Q(J.preferredLanguage,"preferredLanguage",!1,D,["preferredLanguage"]),$.locale=Q(J.locale,"locale",!1,D,["locale"]),$.timezone=Q(J.timezone,"timezone",!1,D,["timezone"]),$.password=Q(J.password,"password",!1,D,["password"]),$.active=Y(J.active,"active",D,["active"]),$.name=v(J.name,D,["name"]),$.emails=d(J.emails,D,["emails"]),$.phoneNumbers=r(J.phoneNumbers,D,["phoneNumbers"]),$.addresses=l(J.addresses,D,["addresses"]),$.groups=t(J.groups,D,["groups"]),$.roles=i(J.roles,D,["roles"]);let f="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(J[f]!==void 0)$[f]=u(J[f],D,[f]);if(J.schemas!==void 0)if(Array.isArray(J.schemas))$.schemas=J.schemas.filter((x)=>typeof x==="string");else D.push({message:"schemas must be an array",path:["schemas"]});if(J.meta!==void 0)if(typeof J.meta==="object"&&J.meta!==null){let x=J.meta;$.meta={resourceType:typeof x.resourceType==="string"?x.resourceType:void 0,created:typeof x.created==="string"?x.created:void 0,lastModified:typeof x.lastModified==="string"?x.lastModified:void 0,location:typeof x.location==="string"?x.location:void 0,version:typeof x.version==="string"?x.version:void 0}}else D.push({message:"meta must be an object",path:["meta"]});if(D.length>0)return{issues:D};return{value:$}}}}}function e(L,T,J){if(L===void 0||L===null)return;if(!Array.isArray(L)){T.push({message:"members must be an array",path:J});return}let D=[];for(let $=0;$<L.length;$++){let A=L[$],f=[...J,$];if(typeof A!=="object"||A===null){T.push({message:"member must be an object",path:f});continue}let x=A,X=Q(x.value,"value",!0,T,[...f,"value"]);if(X){let G=Q(x.type,"type",!1,T,[...f,"type"]);D.push({value:X,$ref:Q(x.$ref,"$ref",!1,T,[...f,"$ref"]),display:Q(x.display,"display",!1,T,[...f,"display"]),type:G==="User"||G==="Group"?G:void 0})}}return D.length>0?D:void 0}function s(L){return{"~standard":{version:1,vendor:L,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let J=T,D=[],$={},A=Q(J.displayName,"displayName",!0,D,["displayName"]);if(!A)return{issues:D};if($.displayName=A,$.id=Q(J.id,"id",!1,D,["id"]),$.externalId=Q(J.externalId,"externalId",!1,D,["externalId"]),$.members=e(J.members,D,["members"]),J.schemas!==void 0)if(Array.isArray(J.schemas))$.schemas=J.schemas.filter((f)=>typeof f==="string");else D.push({message:"schemas must be an array",path:["schemas"]});if(J.meta!==void 0)if(typeof J.meta==="object"&&J.meta!==null){let f=J.meta;$.meta={resourceType:typeof f.resourceType==="string"?f.resourceType:void 0,created:typeof f.created==="string"?f.created:void 0,lastModified:typeof f.lastModified==="string"?f.lastModified:void 0,location:typeof f.location==="string"?f.location:void 0,version:typeof f.version==="string"?f.version:void 0}}else D.push({message:"meta must be an object",path:["meta"]});if(D.length>0)return{issues:D};return{value:$}}}}}function J0(L){return{"~standard":{version:1,vendor:L,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let J=T,D=[],$={...J},A=["iss","sub"];for(let X of A)if(X in J){if(typeof J[X]!=="string")D.push({message:`${X} must be a string`,path:[X]})}else D.push({message:`${X} is required`,path:[X]});if("aud"in J&&J.aud!==void 0){let X=J.aud;if(typeof X!=="string"&&!Array.isArray(X))D.push({message:"aud must be a string or array of strings",path:["aud"]});else if(Array.isArray(X)&&!X.every((G)=>typeof G==="string"))D.push({message:"aud array must contain only strings",path:["aud"]})}let f=["jti","scope"];for(let X of f)if(X in J&&J[X]!==void 0){if(typeof J[X]!=="string")D.push({message:`${X} must be a string`,path:[X]})}let x=["exp","iat"];for(let X of x)if(X in J){if(typeof J[X]!=="number")D.push({message:`${X} must be a number`,path:[X]})}else D.push({message:`${X} is required`,path:[X]});if(D.length>0)return{issues:D};return{value:$}}}}}function L0(L){return{"~standard":{version:1,vendor:L,validate:(T)=>{if(typeof T!=="object"||T===null)return{issues:[{message:"Expected an object"}]};let J=T,D=[],$={};if("access_token"in J)if(typeof J.access_token==="string")$.access_token=J.access_token;else D.push({message:"access_token must be a string",path:["access_token"]});else D.push({message:"access_token is required",path:["access_token"]});if("token_type"in J)if(typeof J.token_type==="string")$.token_type=J.token_type;else D.push({message:"token_type must be a string",path:["token_type"]});else D.push({message:"token_type is required",path:["token_type"]});if("scope"in J)if(typeof J.scope==="string"||J.scope===void 0)$.scope=J.scope;else D.push({message:"scope must be a string",path:["scope"]});if("refresh_token"in J)if(typeof J.refresh_token==="string"||J.refresh_token===void 0)$.refresh_token=J.refresh_token;else D.push({message:"refresh_token must be a string",path:["refresh_token"]});if("expires"in J)if(typeof J.expires==="string"||J.expires===void 0)$.expires=J.expires;else D.push({message:"expires must be a string",path:["expires"]});if("expires_in"in J)if(typeof J.expires_in==="number"||J.expires_in===void 0)$.expires_in=J.expires_in;else D.push({message:"expires_in must be a number",path:["expires_in"]});if(D.length>0)return{issues:D};return{value:$}}}}}export{L0 as workloadTokenResponseSchema,f0 as withValidate,G0 as waitOn,k as version,A0 as validationFailureResponse,a as userSchema,T0 as tokenResponseSchema,X0 as stripJsonComments,y0 as silentLogger,W0 as setActiveSession,E as serializeESConfig,P as sendTenantWebhook,Z0 as parseJsonc,D0 as oidcCallbackSchema,b as normalizeTenantRoutingStrategy,R as normalizeTenantPathNamespace,x0 as must,Q0 as mergeConfig,o as matchTenantPath,M0 as listSsoClientIdsFromCookies,z as list,J0 as jwtAssertionClaimsSchema,z0 as infoLogger,$0 as idTokenClaimsSchema,s as groupResourceSchema,N0 as getActiveSession,_0 as findTenantFromStateParam,c0 as defaultLogger,Y0 as decodeUser,B0 as debugLogger,H0 as consoleLogger,C0 as clearActiveSession,R0 as claimsToUser,n as buildTenantPath,N as TenantRequestError,c as MultipleTenantsForUserError,M as InMemoryTenantStore,p as DEFAULT_TENANT_UI_NAMESPACE,m as DEFAULT_TENANT_API_NAMESPACE};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enterprisestandard/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "Enterprise Standard Core (Server-only)",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "enterprisestandard",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@enterprisestandard/zod": "0.0.
|
|
31
|
-
"@enterprisestandard/valibot": "0.0.
|
|
30
|
+
"@enterprisestandard/zod": "^0.0.12",
|
|
31
|
+
"@enterprisestandard/valibot": "^0.0.12"
|
|
32
32
|
}
|
|
33
33
|
}
|