@ionite/server 0.0.23 → 0.0.24-beta.20260905.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
@@ -1,6 +1,6 @@
1
1
  import { ConfigChangeCallback, ConfigSource as ConfigSource9, FrameworkConfigInput, FrameworkStores as FrameworkStores2, Ionite as Ionite6, ModifiableFrameworkConfig, RemoteConfig as RemoteConfig3, RemoteConfigRetryHook, RemoteConfigRetryOptions, RoutingOptions as RoutingOptions2 } from "@ionite/core";
2
2
  import { ApplicationValidators, BaseTenant as BaseTenant2, CreateTenantRequest, Ionite as Ionite2, TenantStore as TenantStore2, TenantValidators, UpdateTenantRequest, Workload } from "@ionite/core";
3
- import { CapabilityEndpointUrls } from "@ionite/core";
3
+ import { CapabilityEndpointUrls, FrameworkStores } from "@ionite/core";
4
4
  /**
5
5
  * Deterministic set of ionite endpoint paths derived from a single `basePath`.
6
6
  * These are the only URLs the SDK mounts; application code cannot customize individual paths
@@ -13,6 +13,18 @@ type UrlMap = CapabilityEndpointUrls;
13
13
  * by module construction, the router, the readiness endpoint, and tenant-manager responses.
14
14
  */
15
15
  declare function deriveIonUrls(basePath: string): UrlMap;
16
+ /**
17
+ * Prototype-only in-memory store set — the explicit replacement for the silent defaults the SDK
18
+ * used to apply. Everything here lives in one process `Map`: sessions, users, customers, magic
19
+ * links, and cached workload tokens vanish on restart and are never shared across replicas.
20
+ *
21
+ * Anything beyond a prototype needs durability: `@ionite/redis` / `@ionite/ioredis` stores, or
22
+ * app-owned SQL stores. Authz stores (`catalogStore`, `accessStore`, `accessIndex`, `resources`)
23
+ * are intentionally NOT included — they gate IAM/authz capabilities and must be chosen
24
+ * deliberately (in-memory variants exist for prototypes: `InMemoryAccessCatalogStore`,
25
+ * `InMemoryAccessAssignmentStore`, `InMemoryAccessIndex`, `InMemoryResourceStore`).
26
+ */
27
+ declare function devInMemoryStores(): FrameworkStores;
16
28
  import { BaseTenant, ConfigLocator, Ionite, LfvCallbackKind, Logger, RemoteConfig as RemoteConfig2, Secret, SecretsSource, TenantStore } from "@ionite/core";
17
29
  type TenantMirrorHooks<TTenant extends BaseTenant = BaseTenant> = {
18
30
  onRemoteConfigChange?(tenant: TTenant, config: RemoteConfig2, secret: Secret<Record<string, unknown>>): void | Promise<void>;
@@ -82,13 +94,13 @@ export * from "@ionite/core";
82
94
  import { AccessCheckReason, AccessCheckResult, CreateTenantRequest as CreateTenantRequest2, EnvironmentType, FrameworkOtelConfig, FrameworkStores as FrameworkStores3, generateULID, IoniteError, IoniteErrorOptions, listGenerator, Otel, OtelConfig, OtelLevels, OtelLogLevel, OtelLogRecord, OtelMetricsSignalConfig, OtelOAuthClientCredentialsConfig, OtelProviderType, OtelSignalConfig, SubjectScope, SubjectType as SubjectType3, TenantResponse, TenantStatus, TenantValidators as TenantValidators2, TenantWebhookPayload, UpdateTenantRequest as UpdateTenantRequest2 } from "@ionite/core";
83
95
  import { AfterLoginContext, AfterLoginHook, AfterLogoutContext, AfterLogoutHook, BeforeLoginContext, BeforeLoginHook, BeforeLogoutContext, BeforeLogoutHook, CatalogView, ReconcileStores, RedirectContext, RedirectPolicy, RedirectResult, RedirectRule, RedirectRuleContext, RedirectVerdict, ReferencedDefinitions } from "@ionite/core/server";
84
96
  import { allowHosts, allowOrigins, allowRelativePaths, allowSameOrigin, blockDangerousUrls, CatalogAdjacencyCache, callback, captureRedirect, ciam, collectReferencedDefinitions, defaultRedirectPolicies, discoverSessionRecords, discoverSessions, expandRoot, getCustomer, getUser, has, hasAll as hasAll2, hasAllScope, hasAny as hasAny2, hasAnyScope, hasGroup as hasGroup2, hasPermission as hasPermission2, hasRole as hasRole2, hasScope, InMemoryTenantStore, iam, initiateLogin, isRedirectAllowed, listSsoClientIdsFromCookies, reconcileSubjectAccess, resolveAfterRedirect, resolveCapturedRedirect, resolveRedirect, SessionDiscoveryOptions, SessionResponse, sameOriginRedirectRules, sendTenantWebhook, sso, VerifyUserOptions, verifyUser, withSetCookies } from "@ionite/core/server";
85
- import { AccessAssignmentStore as AccessAssignmentStore2, AccessChange, ListOptions, ListResult, OaaAccessTargetType, SubjectType } from "@ionite/core";
97
+ import { AccessAssignmentStore, AccessChange, ListOptions, ListResult, OaaAccessTargetType, SubjectType } from "@ionite/core";
86
98
  /**
87
99
  * In-memory store of granted access **roots** (source of truth). Roots are keyed by their
88
100
  * deterministic id (`accessRootId`) and carry provenance + status. All stored roots are `active`
89
101
  * (the SDK uses a transactional fail-fast model with no `pendingRemoval` sweep).
90
102
  */
91
- declare class InMemoryAccessAssignmentStore implements AccessAssignmentStore2<AccessChange> {
103
+ declare class InMemoryAccessAssignmentStore implements AccessAssignmentStore<AccessChange> {
92
104
  private readonly roots;
93
105
  private readonly byTarget;
94
106
  private readonly bySubject;
@@ -110,8 +122,8 @@ declare class InMemoryAccessAssignmentStore implements AccessAssignmentStore2<Ac
110
122
  }>): Promise<Map<string, AccessChange[]>>;
111
123
  listBySubject(subject: string, subjectType: SubjectType, options?: ListOptions): Promise<ListResult<AccessChange>>;
112
124
  }
113
- import { AccessCatalogStore as AccessCatalogStore2, CatalogChangeListener, EntityStore, Group, ListOptions as ListOptions2, ListResult as ListResult2, Permission, Resource, ResourceChangeListener, ResourceProvider as ResourceProvider2, Role } from "@ionite/core";
114
- declare class InMemoryAccessCatalogStore implements AccessCatalogStore2 {
125
+ import { AccessCatalogStore, CatalogChangeListener, EntityStore, Group, ListOptions as ListOptions2, ListResult as ListResult2, Permission, Resource, ResourceChangeListener, ResourceProvider, Role } from "@ionite/core";
126
+ declare class InMemoryAccessCatalogStore implements AccessCatalogStore {
115
127
  private readonly listeners;
116
128
  private readonly emit;
117
129
  readonly groups: EntityStore<Group>;
@@ -128,7 +140,7 @@ declare class InMemoryAccessCatalogStore implements AccessCatalogStore2 {
128
140
  * `set`/`delete` emit the `changed` signal the SDK subscribes to (adjacency-cache invalidation,
129
141
  * targeted reconcile, incremental OAA projection).
130
142
  */
131
- declare class InMemoryResourceStore implements ResourceProvider2 {
143
+ declare class InMemoryResourceStore implements ResourceProvider {
132
144
  private readonly items;
133
145
  private readonly listeners;
134
146
  get(id: string): Promise<Resource | undefined>;
@@ -141,14 +153,14 @@ declare class InMemoryResourceStore implements ResourceProvider2 {
141
153
  delete(id: string): void;
142
154
  private emitChange;
143
155
  }
144
- import { AccessCheckTarget, AccessIndex as AccessIndex2, AccessRef, AuthzDecision, BaseUser, EffectiveEdge, Group as Group2, OaaAccessTargetType as OaaAccessTargetType2, Permission as Permission2, Resource as Resource2, Role as Role2, SubjectRef, SubjectType as SubjectType2 } from "@ionite/core";
156
+ import { AccessCheckTarget, AccessIndex, AccessRef, AuthzDecision, BaseUser, EffectiveEdge, Group as Group2, OaaAccessTargetType as OaaAccessTargetType2, Permission as Permission2, Resource as Resource2, Role as Role2, SubjectRef, SubjectType as SubjectType2 } from "@ionite/core";
145
157
  /**
146
158
  * In-memory derived closure index. Rows are root-attributed: a single
147
159
  * `(subject, targetType, target, resource)` edge may be justified by multiple roots, so revoking
148
160
  * one root via {@link removeByRoot} leaves edges still backed by other roots. Rebuildable from
149
161
  * AccessAssignmentStore roots + the catalog.
150
162
  */
151
- declare class InMemoryAccessIndex implements AccessIndex2 {
163
+ declare class InMemoryAccessIndex implements AccessIndex {
152
164
  /** edgeKey -> set of rootIds that justify it. */
153
165
  private readonly rows;
154
166
  /** tripleKey -> set of edgeKeys (for resource-agnostic "any" checks). */
@@ -370,7 +382,7 @@ declare class InMemoryCustomerStore<TExtended = Record<string, never>> implement
370
382
  delete(id: string): Promise<number>;
371
383
  list(options?: ListOptions3): Promise<ListResult3<BaseCustomer<TExtended>>>;
372
384
  }
373
- import { AccessAssignmentStore as AccessAssignmentStore3, AccessCatalogStore as AccessCatalogStore3, BaseUser as BaseUser2, CodeCatalog as CodeCatalog2, IamDeltaEmitter, IamDeltaMode, Logger as Logger4, ScimUser, UserStore, Workload as Workload2, WorkloadIdentityStore as WorkloadIdentityStore2 } from "@ionite/core";
385
+ import { AccessAssignmentStore as AccessAssignmentStore2, AccessCatalogStore as AccessCatalogStore2, BaseUser as BaseUser2, CodeCatalog, IamDeltaEmitter, IamDeltaMode, Logger as Logger4, ScimUser, UserStore, Workload as Workload2, WorkloadIdentityStore } from "@ionite/core";
374
386
  type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
375
387
  /** RemoteConfig-derived destination descriptor for IAM delta egress. */
376
388
  type IamDeltaConfig = {
@@ -383,12 +395,12 @@ type IamDeltaConfig = {
383
395
  /** Runtime capabilities the emitter binds to (resolved from the merged config/stores in buildES). */
384
396
  type IamDeltaDeps = {
385
397
  workload?: Workload2;
386
- workloadIdentityStore?: WorkloadIdentityStore2;
398
+ workloadIdentityStore?: WorkloadIdentityStore;
387
399
  userStore?: UserStore;
388
- accessStore?: AccessAssignmentStore3;
389
- catalogStore?: AccessCatalogStore3;
400
+ accessStore?: AccessAssignmentStore2;
401
+ catalogStore?: AccessCatalogStore2;
390
402
  /** Normalized code templates merged over persisted rows for outbound definitions. */
391
- codeCatalog?: CodeCatalog2;
403
+ codeCatalog?: CodeCatalog;
392
404
  /** Optional app mapper shared with the inbound IAM Users read surface. */
393
405
  mapUserToScim?: (stored: BaseUser2) => ScimUser | Promise<ScimUser>;
394
406
  /** Injectable fetch (defaults to global fetch); enables testing the patch path in-process. */
@@ -820,8 +832,8 @@ declare function closeAllVaultSockets(): void;
820
832
  *
821
833
  * Keep this synchronized with packages/server/package.json via publish.ts.
822
834
  */
823
- declare const ION_SDK_VERSION = "0.0.23";
824
- import { Workload as CoreWorkload, FrameworkWorkloadConfig, Ionite as Ionite5, JWTAssertionClaims, Logger as Logger7, TokenValidationResult, TrustedIdp, WorkloadConfigMap, WorkloadGetToken, WorkloadIdentityStore as WorkloadIdentityStore3, WorkloadIncomingOutgoing, WorkloadTokenResponse, WorkloadTokenStore } from "@ionite/core";
835
+ declare const ION_SDK_VERSION = "0.0.24-beta.20260905.1";
836
+ import { Workload as CoreWorkload, FrameworkWorkloadConfig, Ionite as Ionite5, JWTAssertionClaims, Logger as Logger7, TokenValidationResult, TrustedIdp, WorkloadConfigMap, WorkloadGetToken, WorkloadIdentityStore as WorkloadIdentityStore2, WorkloadIncomingOutgoing, WorkloadTokenResponse, WorkloadTokenStore } from "@ionite/core";
825
837
  import { StandardSchemaV1 } from "@standard-schema/spec";
826
838
  /**
827
839
  * Common fields shared across all workload authentication modes
@@ -878,7 +890,7 @@ type WorkloadConfigBase = {
878
890
  * merges stored attributes (e.g. `displayName`, `active`, default `scopes`) onto the validated
879
891
  * token identity. Authorization works without it; see {@link WorkloadIdentityStore}.
880
892
  */
881
- workloadIdentityStore?: WorkloadIdentityStore3;
893
+ workloadIdentityStore?: WorkloadIdentityStore2;
882
894
  /**
883
895
  * Automatically refresh tokens before expiration
884
896
  * @default true
@@ -1083,12 +1095,12 @@ declare function revokeWorkloadToken(token: string, ion: Ionite5): Promise<void>
1083
1095
  * Framework-agnostic request handler for the Workload module (token, validate, jwks, refresh routes).
1084
1096
  */
1085
1097
  declare function workloadHandler(request: Request, ion: Ionite5): Promise<Response>;
1086
- import { BaseWorkloadIdentity, ListOptions as ListOptions5, ListResult as ListResult5, WorkloadIdentityStore as WorkloadIdentityStore4 } from "@ionite/core";
1098
+ import { BaseWorkloadIdentity, ListOptions as ListOptions5, ListResult as ListResult5, WorkloadIdentityStore as WorkloadIdentityStore3 } from "@ionite/core";
1087
1099
  /**
1088
1100
  * In-memory {@link WorkloadIdentityStore} implementation using Maps. Suitable for development and
1089
1101
  * testing; use a durable store (e.g. Redis/SQL) in production.
1090
1102
  */
1091
- declare class InMemoryWorkloadIdentityStore<TExtended = Record<string, never>> implements WorkloadIdentityStore4<TExtended> {
1103
+ declare class InMemoryWorkloadIdentityStore<TExtended = Record<string, never>> implements WorkloadIdentityStore3<TExtended> {
1092
1104
  private identities;
1093
1105
  private clientIdIndex;
1094
1106
  get(id: string): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
@@ -1138,4 +1150,4 @@ type IoniteConfig<C extends FrameworkConfigInput = FrameworkConfigInput> = C & {
1138
1150
  onConfigLoadError?: RemoteConfigRetryHook;
1139
1151
  };
1140
1152
  declare function ionite<const C extends FrameworkConfigInput = FrameworkConfigInput>(source: ConfigSource9, config: IoniteConfig<C> | FrameworkConfigInput): Ionite6;
1141
- export { workloadHandler, workload, withSetCookies, verifyUser, vaultSocketDiagnostics, vaultConfig, vault, validateWorkloadToken, tenantMirror, tenantManager, subscribeSecretPathWithHttpPolling, sso, setVaultWebSocketCommandTimeout, sendTenantWebhook, secretConfigSource, sameOriginRedirectRules, routeRequest, rewriteRequestPath, rewriteRequestForTenantPath, rewriteRequestForDefaultTenantUi, rewriteRequestForDefaultTenantApi, revokeWorkloadToken, resolveTenantFromRequest, resolveRedirect, resolveDefaultRoute, resolveCapturedRedirect, resolveAfterRedirect, reconcileSubjectAccess, mirroredConfig, mirrorSecrets, listSsoClientIdsFromCookies, listGenerator, lfvVault, isVaultConfigWaitingForSecretError, isVaultConfigInvalidPayloadError, isRedirectAllowed, ionite, initiateLogin, iam, hasScope, hasRole2 as hasRole, hasPermission2 as hasPermission, hasGroup2 as hasGroup, hasAnyScope, hasAny2 as hasAny, hasAllScope, hasAll2 as hasAll, has, getWorkloadToken, getWorkload, getUser, getCustomer, generateULID, gcpConfig, expandRoot, escapeScimFilterValue, envConfig, enforceEndpointAuthz, discoverSessions, discoverSessionRecords, deriveIonUrls, defaultRedirectPolicies, createTenantIonResolver, createTenantIonHandler, createSessionReadCache, createManagedIamDelta, configSourceFromLocator, configSourceFromEnvValues, configLocatorFromEnvValues, configFromSource, collectReferencedDefinitions, closeAllVaultSockets, ciam, captureRedirect, callback, blockDangerousUrls, azureConfig, awsConfig, allowSameOrigin, allowRelativePaths, allowOrigins, allowHosts, VerifyUserOptions, VaultSubscribeNotSupportedError, VaultConfigWaitingForSecretError, VaultConfigSourceOptions, VaultConfigInvalidPayloadError, VAULT_MIN_POLLING_TTL_MS, UrlMap, UpdateTenantRequest2 as UpdateTenantRequest, TenantWebhookPayload, TenantValidators2 as TenantValidators, TenantStatus, TenantResponse, TenantResolutionContext, TenantMirrorOptions, TenantMirrorHooks, TenantMirror, TenantManagerOptions, TenantManager, TenantIonUrls, TenantIonResolver, SubjectType3 as SubjectType, SubjectScope, SessionResponse, SessionReadCacheOptions, SessionDiscoveryOptions, SecretsMirror, ScimOutboundResource, ScimOutboundReceiptCallbacks, ScimOutboundOutcome, ScimOutboundClientOptions, ScimOutboundClient, ResolveTenantFromRequestOptions, ReferencedDefinitions, RedirectVerdict, RedirectRuleContext, RedirectRule, RedirectResult, RedirectPolicy, RedirectContext, ReconcileStores, OtelSignalConfig, OtelProviderType, OtelOAuthClientCredentialsConfig, OtelMetricsSignalConfig, OtelLogRecord, OtelLogLevel, OtelLevels, OtelConfig, Otel, MirroredConfigSource, MirroredConfigOptions, MirrorSecretsOptions, LfvSecretsSource, IoniteErrorOptions, IoniteError, IoniteConfig, InMemoryWorkloadTokenStore, InMemoryWorkloadIdentityStore, InMemoryUserStore, InMemoryTenantStore, InMemorySessionStore, InMemoryResourceStore, InMemoryMagicLinkStore, InMemoryCustomerStore, InMemoryAccessIndex, InMemoryAccessCatalogStore, InMemoryAccessAssignmentStore, IamDeltaDeps, IamDeltaConfig, ION_SDK_VERSION, ION_READY_DEFAULT_TIMEOUT_MS, ION_CAPABILITY_CATALOG_VERSION, ION_CAPABILITY_CATALOG, HttpPollingHooks, GcpConfigSourceOptions, FrameworkStores3 as FrameworkStores, FrameworkOtelConfig, EnvironmentType, EnvConfigOptions, CreateTenantRequest2 as CreateTenantRequest, CreateTenantIonResolverOptions, CreateTenantIonHandlerOptions, ConfigFromSourceOptions, CatalogView, CatalogAdjacencyCache, CapabilityKey2 as CapabilityKey, CapabilityDescriptor, BeforeLogoutHook, BeforeLogoutContext, BeforeLoginHook, BeforeLoginContext, AzureConfigSourceOptions, AwsConfigSourceOptions, AfterLogoutHook, AfterLogoutContext, AfterLoginHook, AfterLoginContext, AccessCheckResult, AccessCheckReason };
1153
+ export { workloadHandler, workload, withSetCookies, verifyUser, vaultSocketDiagnostics, vaultConfig, vault, validateWorkloadToken, tenantMirror, tenantManager, subscribeSecretPathWithHttpPolling, sso, setVaultWebSocketCommandTimeout, sendTenantWebhook, secretConfigSource, sameOriginRedirectRules, routeRequest, rewriteRequestPath, rewriteRequestForTenantPath, rewriteRequestForDefaultTenantUi, rewriteRequestForDefaultTenantApi, revokeWorkloadToken, resolveTenantFromRequest, resolveRedirect, resolveDefaultRoute, resolveCapturedRedirect, resolveAfterRedirect, reconcileSubjectAccess, mirroredConfig, mirrorSecrets, listSsoClientIdsFromCookies, listGenerator, lfvVault, isVaultConfigWaitingForSecretError, isVaultConfigInvalidPayloadError, isRedirectAllowed, ionite, initiateLogin, iam, hasScope, hasRole2 as hasRole, hasPermission2 as hasPermission, hasGroup2 as hasGroup, hasAnyScope, hasAny2 as hasAny, hasAllScope, hasAll2 as hasAll, has, getWorkloadToken, getWorkload, getUser, getCustomer, generateULID, gcpConfig, expandRoot, escapeScimFilterValue, envConfig, enforceEndpointAuthz, discoverSessions, discoverSessionRecords, devInMemoryStores, deriveIonUrls, defaultRedirectPolicies, createTenantIonResolver, createTenantIonHandler, createSessionReadCache, createManagedIamDelta, configSourceFromLocator, configSourceFromEnvValues, configLocatorFromEnvValues, configFromSource, collectReferencedDefinitions, closeAllVaultSockets, ciam, captureRedirect, callback, blockDangerousUrls, azureConfig, awsConfig, allowSameOrigin, allowRelativePaths, allowOrigins, allowHosts, VerifyUserOptions, VaultSubscribeNotSupportedError, VaultConfigWaitingForSecretError, VaultConfigSourceOptions, VaultConfigInvalidPayloadError, VAULT_MIN_POLLING_TTL_MS, UrlMap, UpdateTenantRequest2 as UpdateTenantRequest, TenantWebhookPayload, TenantValidators2 as TenantValidators, TenantStatus, TenantResponse, TenantResolutionContext, TenantMirrorOptions, TenantMirrorHooks, TenantMirror, TenantManagerOptions, TenantManager, TenantIonUrls, TenantIonResolver, SubjectType3 as SubjectType, SubjectScope, SessionResponse, SessionReadCacheOptions, SessionDiscoveryOptions, SecretsMirror, ScimOutboundResource, ScimOutboundReceiptCallbacks, ScimOutboundOutcome, ScimOutboundClientOptions, ScimOutboundClient, ResolveTenantFromRequestOptions, ReferencedDefinitions, RedirectVerdict, RedirectRuleContext, RedirectRule, RedirectResult, RedirectPolicy, RedirectContext, ReconcileStores, OtelSignalConfig, OtelProviderType, OtelOAuthClientCredentialsConfig, OtelMetricsSignalConfig, OtelLogRecord, OtelLogLevel, OtelLevels, OtelConfig, Otel, MirroredConfigSource, MirroredConfigOptions, MirrorSecretsOptions, LfvSecretsSource, IoniteErrorOptions, IoniteError, IoniteConfig, InMemoryWorkloadTokenStore, InMemoryWorkloadIdentityStore, InMemoryUserStore, InMemoryTenantStore, InMemorySessionStore, InMemoryResourceStore, InMemoryMagicLinkStore, InMemoryCustomerStore, InMemoryAccessIndex, InMemoryAccessCatalogStore, InMemoryAccessAssignmentStore, IamDeltaDeps, IamDeltaConfig, ION_SDK_VERSION, ION_READY_DEFAULT_TIMEOUT_MS, ION_CAPABILITY_CATALOG_VERSION, ION_CAPABILITY_CATALOG, HttpPollingHooks, GcpConfigSourceOptions, FrameworkStores3 as FrameworkStores, FrameworkOtelConfig, EnvironmentType, EnvConfigOptions, CreateTenantRequest2 as CreateTenantRequest, CreateTenantIonResolverOptions, CreateTenantIonHandlerOptions, ConfigFromSourceOptions, CatalogView, CatalogAdjacencyCache, CapabilityKey2 as CapabilityKey, CapabilityDescriptor, BeforeLogoutHook, BeforeLogoutContext, BeforeLoginHook, BeforeLoginContext, AzureConfigSourceOptions, AwsConfigSourceOptions, AfterLogoutHook, AfterLogoutContext, AfterLoginHook, AfterLoginContext, AccessCheckResult, AccessCheckReason };