@ionite/core 0.0.24-beta.20260915.2 → 0.0.24-beta.20260915.3
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 +110 -87
- package/dist/index.js +2 -2
- package/dist/server.d.ts +93 -79
- package/dist/server.js +1 -1
- package/dist/shared/core-mybn3422.js +4 -0
- package/package.json +1 -1
- package/dist/shared/core-mm9kc485.js +0 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { version } from "../package.json";
|
|
2
|
+
/**
|
|
3
|
+
* Reject SDK-owned names in extension-only types. Principal stores also accept validator-inferred
|
|
4
|
+
* complete object types, identified by `TFullShapeKeys`; their SDK fields are removed before merge.
|
|
5
|
+
*/
|
|
6
|
+
type NoReserved<
|
|
7
|
+
TAttributes,
|
|
8
|
+
TReserved extends PropertyKey,
|
|
9
|
+
TFullShapeKeys extends PropertyKey = never
|
|
10
|
+
> = TAttributes extends object ? [TFullShapeKeys] extends [never] ? TAttributes & { [TKey in Extract<keyof TAttributes, TReserved>]? : never } : [TFullShapeKeys] extends [keyof TAttributes] ? Omit<TAttributes, TReserved> : TAttributes & { [TKey in Extract<keyof TAttributes, TReserved>]? : never } : TAttributes;
|
|
11
|
+
declare const KNOWN_ENTITLEMENT_KEYS: readonly ["id", "name", "displayName", "description", "providerId", "source", "deprecated", "type", "parent", "resources", "assignableSubjectTypes", "recommendedSubjectTypes", "requestable", "riskLevel", "requestUrl", "action", "permissionTypes", "resourceTypes", "applyToSubResources", "permissions", "groups", "roles"];
|
|
12
|
+
declare const KNOWN_BASE_USER_KEYS: readonly ["id", "userName", "name", "email", "avatar", "userType", "tenantId", "externalId", "providerId", "requestUrl", "ecid", "accountClass", "displayName", "scimName", "emails", "nickName", "active", "title", "preferredLanguage", "locale", "timezone", "phoneNumbers", "ims", "photos", "addresses", "roles", "groups", "entitlements", "x509Certificates", "scimEnterprise", "scimSchemaExtensions", "createdAt", "updatedAt", "sso"];
|
|
13
|
+
declare const KNOWN_BASE_CUSTOMER_KEYS: readonly ["id", "userName", "name", "email", "avatar", "userType", "tenantId", "externalId", "providerId", "requestUrl", "displayName", "emails", "phoneNumbers", "active", "createdAt", "updatedAt", "ciam"];
|
|
14
|
+
declare const KNOWN_WORKLOAD_KEYS: readonly ["id", "clientId", "displayName", "description", "externalId", "providerId", "requestUrl", "ecid", "active", "scopes", "createdAt", "updatedAt", "metadata"];
|
|
15
|
+
/** Return the AppDev-owned, enumerable attributes on an object, omitting SDK keys and undefined values. */
|
|
16
|
+
declare function customAttributes(value: object, knownKeys: readonly PropertyKey[]): Record<string, unknown> | undefined;
|
|
2
17
|
import { StandardSchemaV1 as StandardSchemaV19 } from "@standard-schema/spec";
|
|
3
18
|
import { StandardSchemaV1 as StandardSchemaV18 } from "@standard-schema/spec";
|
|
4
19
|
/**
|
|
@@ -129,16 +144,16 @@ type CodeCatalogNamespace<TEntity> = {
|
|
|
129
144
|
* Normalized, frozen code-declared catalog produced by {@link defineCatalog}. All entities are
|
|
130
145
|
* deep-frozen and id-indexed.
|
|
131
146
|
*/
|
|
132
|
-
type CodeCatalog = {
|
|
133
|
-
groups: CodeCatalogNamespace<Group
|
|
134
|
-
roles: CodeCatalogNamespace<Role
|
|
135
|
-
permissions: CodeCatalogNamespace<Permission
|
|
147
|
+
type CodeCatalog<TAttributes extends object = object> = {
|
|
148
|
+
groups: CodeCatalogNamespace<Group<TAttributes>>;
|
|
149
|
+
roles: CodeCatalogNamespace<Role<TAttributes>>;
|
|
150
|
+
permissions: CodeCatalogNamespace<Permission<TAttributes>>;
|
|
136
151
|
};
|
|
137
152
|
/** Declarative input for {@link defineCatalog} (plain arrays authored in app code). */
|
|
138
|
-
type CodeCatalogInput = {
|
|
139
|
-
groups?: readonly Group[];
|
|
140
|
-
roles?: readonly Role[];
|
|
141
|
-
permissions?: readonly Permission[];
|
|
153
|
+
type CodeCatalogInput<TAttributes extends object = object> = {
|
|
154
|
+
groups?: readonly Group<TAttributes>[];
|
|
155
|
+
roles?: readonly Role<TAttributes>[];
|
|
156
|
+
permissions?: readonly Permission<TAttributes>[];
|
|
142
157
|
};
|
|
143
158
|
/** True when the value is already a normalized {@link CodeCatalog} (vs a declarative input). */
|
|
144
159
|
declare function isCodeCatalog(value: CodeCatalog | CodeCatalogInput): value is CodeCatalog;
|
|
@@ -159,9 +174,9 @@ type CatalogEntityKind = "group" | "role" | "permission";
|
|
|
159
174
|
* - every entitlement declares a required non-empty `assignableSubjectTypes` within the platform
|
|
160
175
|
* ceiling, and `recommendedSubjectTypes` is a subset of it.
|
|
161
176
|
*
|
|
162
|
-
* Side effects: every entity
|
|
177
|
+
* Side effects: every entity and each directly-held array value is frozen.
|
|
163
178
|
*/
|
|
164
|
-
declare function defineCatalog(input: CodeCatalogInput): CodeCatalog
|
|
179
|
+
declare function defineCatalog<TAttributes extends object = Record<string, unknown>>(input: CodeCatalogInput<NoInfer<TAttributes>>): CodeCatalog<TAttributes>;
|
|
165
180
|
/** Resolve one code entity and its kind from the shared id space. */
|
|
166
181
|
declare function getCodeCatalogEntity(code: CodeCatalog | undefined, id: string): {
|
|
167
182
|
entity: Group | Role | Permission;
|
|
@@ -181,9 +196,10 @@ declare function mergeCodeCatalogEntity<TEntity extends Group | Role | Permissio
|
|
|
181
196
|
* rewritten, preserving IAM-authored presentation and receipts. `insertIfAbsent` closes the race
|
|
182
197
|
* between the initial read and insert.
|
|
183
198
|
*
|
|
184
|
-
* Advisory presentation (`riskLevel`, `displayName
|
|
185
|
-
* row an absent value means "no IAM override", so the merged read keeps
|
|
186
|
-
* Snapshotting the seed here would freeze it — indistinguishable from
|
|
199
|
+
* Advisory presentation (`riskLevel`, `displayName`, and custom attributes) is deliberately NOT
|
|
200
|
+
* persisted: on the durable row an absent value means "no IAM override", so the merged read keeps
|
|
201
|
+
* following later code edits. Snapshotting the seed here would freeze it — indistinguishable from
|
|
202
|
+
* an IAM-authored value.
|
|
187
203
|
*/
|
|
188
204
|
declare function materializeCodeCatalogEntity<TEntity extends Group | Role | Permission>(kind: CatalogEntityKind, code: TEntity, store: EntityStore<TEntity>): Promise<TEntity>;
|
|
189
205
|
/**
|
|
@@ -527,6 +543,8 @@ interface ScimWorkload {
|
|
|
527
543
|
requestUrl?: string;
|
|
528
544
|
/** Enterprise Controlled ID for workload correlation across datasources. */
|
|
529
545
|
ecid?: string;
|
|
546
|
+
/** AppDev custom attributes. App code seeds values; IAM may persist overrides. */
|
|
547
|
+
attributes?: Record<string, unknown>;
|
|
530
548
|
meta?: {
|
|
531
549
|
resourceType?: string;
|
|
532
550
|
created?: string;
|
|
@@ -547,6 +565,8 @@ interface ScimCustomer {
|
|
|
547
565
|
emails?: Email[];
|
|
548
566
|
providerId?: string;
|
|
549
567
|
requestUrl?: string;
|
|
568
|
+
/** AppDev custom attributes. App code seeds values; IAM may persist overrides. */
|
|
569
|
+
attributes?: Record<string, unknown>;
|
|
550
570
|
meta?: {
|
|
551
571
|
resourceType?: string;
|
|
552
572
|
created?: string;
|
|
@@ -664,6 +684,8 @@ interface IoniteUserExtension {
|
|
|
664
684
|
* `daily`, `privileged`, `break_glass`, `service`.
|
|
665
685
|
*/
|
|
666
686
|
accountClass?: string;
|
|
687
|
+
/** AppDev custom attributes. App code seeds values; IAM may persist overrides. */
|
|
688
|
+
attributes?: Record<string, unknown>;
|
|
667
689
|
}
|
|
668
690
|
/**
|
|
669
691
|
* SCIM User Resource
|
|
@@ -1132,7 +1154,7 @@ type AuthenticatedPrincipal = AuthenticatedUser | WorkloadPrincipal;
|
|
|
1132
1154
|
*
|
|
1133
1155
|
* @template TExtended - Type-safe custom data that consumers can add to users
|
|
1134
1156
|
*/
|
|
1135
|
-
type
|
|
1157
|
+
type BaseUserSdkFields = {
|
|
1136
1158
|
/**
|
|
1137
1159
|
* Optional ionite tenant identifier for tenant-aware apps.
|
|
1138
1160
|
* Built-in user stores can use this when registering HRD mappings.
|
|
@@ -1284,7 +1306,9 @@ type BaseUser<TExtended = object> = BaseUserFields & {
|
|
|
1284
1306
|
* Simple app stores MAY omit this field.
|
|
1285
1307
|
*/
|
|
1286
1308
|
sso?: WorkforceUser["sso"];
|
|
1287
|
-
}
|
|
1309
|
+
};
|
|
1310
|
+
type BaseUserReservedKey = keyof BaseUserFields | keyof BaseUserSdkFields;
|
|
1311
|
+
type BaseUser<TExtended = object> = BaseUserFields & BaseUserSdkFields & NoReserved<TExtended, BaseUserReservedKey, "userName" | "name" | "email">;
|
|
1288
1312
|
type UserStoreOptions = {
|
|
1289
1313
|
tenantId: string;
|
|
1290
1314
|
tenants: TenantStore;
|
|
@@ -1367,7 +1391,7 @@ interface UserStore<TExtended = object> {
|
|
|
1367
1391
|
*
|
|
1368
1392
|
* @template TExtended - Type-safe custom data that consumers can add to workload identities.
|
|
1369
1393
|
*/
|
|
1370
|
-
type
|
|
1394
|
+
type BaseWorkloadIdentitySdkFields = {
|
|
1371
1395
|
/**
|
|
1372
1396
|
* Stable subject id for this workload. Used as the AccessIndex subject for
|
|
1373
1397
|
* `subjectType: 'workload'` checks. Typically `clientId`, a workload id, or the token `sub`.
|
|
@@ -1404,7 +1428,9 @@ type BaseWorkloadIdentity<TExtended = object> = {
|
|
|
1404
1428
|
updatedAt?: Date;
|
|
1405
1429
|
/** Optional free-form metadata bag. */
|
|
1406
1430
|
metadata?: Record<string, unknown>;
|
|
1407
|
-
}
|
|
1431
|
+
};
|
|
1432
|
+
type BaseWorkloadIdentityReservedKey = keyof BaseWorkloadIdentitySdkFields;
|
|
1433
|
+
type BaseWorkloadIdentity<TExtended = object> = BaseWorkloadIdentitySdkFields & NoReserved<TExtended, BaseWorkloadIdentityReservedKey, "id">;
|
|
1408
1434
|
/**
|
|
1409
1435
|
* Abstract interface for workload identity storage backends. Implement to back the registry with
|
|
1410
1436
|
* in-memory, Redis, or a database. Mirrors {@link UserStore}.
|
|
@@ -4923,7 +4949,7 @@ type InMemoryTenantStoreOptions = {
|
|
|
4923
4949
|
*
|
|
4924
4950
|
* @template TExtended - Type-safe custom data that consumers can add to customers
|
|
4925
4951
|
*/
|
|
4926
|
-
type
|
|
4952
|
+
type BaseCustomerSdkFields = {
|
|
4927
4953
|
/**
|
|
4928
4954
|
* Optional ionite tenant identifier for tenant-aware apps.
|
|
4929
4955
|
*/
|
|
@@ -4970,7 +4996,9 @@ type BaseCustomer<TExtended = object> = BaseUserFields & {
|
|
|
4970
4996
|
* Simple app stores MAY omit this field.
|
|
4971
4997
|
*/
|
|
4972
4998
|
ciam?: Customer["ciam"];
|
|
4973
|
-
}
|
|
4999
|
+
};
|
|
5000
|
+
type BaseCustomerReservedKey = keyof BaseUserFields | keyof BaseCustomerSdkFields;
|
|
5001
|
+
type BaseCustomer<TExtended = object> = BaseUserFields & BaseCustomerSdkFields & NoReserved<TExtended, BaseCustomerReservedKey, "userName" | "name" | "email">;
|
|
4974
5002
|
type CustomerStoreOptions = {
|
|
4975
5003
|
tenantId: string;
|
|
4976
5004
|
tenants: TenantStore;
|
|
@@ -5023,7 +5051,7 @@ interface CustomerStore<TExtended = object> {
|
|
|
5023
5051
|
*/
|
|
5024
5052
|
list(options?: ListOptions): Promise<ListResult<BaseCustomer<TExtended>>>;
|
|
5025
5053
|
}
|
|
5026
|
-
type
|
|
5054
|
+
type AuthzEntityBaseFields = {
|
|
5027
5055
|
id: string;
|
|
5028
5056
|
name: string;
|
|
5029
5057
|
displayName?: string;
|
|
@@ -5034,39 +5062,13 @@ type AuthzEntityBase = {
|
|
|
5034
5062
|
source?: "code" | "app" | "scim";
|
|
5035
5063
|
/** A retired entitlement may be deleted by IAM after its grants have been removed. */
|
|
5036
5064
|
deprecated?: boolean;
|
|
5037
|
-
metadata?: Record<string, unknown>;
|
|
5038
5065
|
};
|
|
5039
|
-
type
|
|
5066
|
+
type ResourceFields<TAttributes extends object = object> = {
|
|
5040
5067
|
type: string;
|
|
5041
|
-
parent?: string | Resource
|
|
5042
|
-
resources?: Array<string | Resource
|
|
5068
|
+
parent?: string | Resource<TAttributes>;
|
|
5069
|
+
resources?: Array<string | Resource<TAttributes>>;
|
|
5043
5070
|
};
|
|
5044
|
-
|
|
5045
|
-
* AppDev-owned subject-type scoping shared by every catalog entitlement (group/role/permission).
|
|
5046
|
-
*
|
|
5047
|
-
* - `assignableSubjectTypes` is the AppDev **veto**: the hard, required, non-empty ceiling of
|
|
5048
|
-
* principal kinds that may ever hold this entitlement. It is authored in application code and is
|
|
5049
|
-
* **read-only** to the IAM tool (projected through SCIM as a `readOnly` attribute). There is no
|
|
5050
|
-
* default-to-workforce and no unset-means-unrestricted: every entitlement declares its audience
|
|
5051
|
-
* explicitly. A grant whose `subjectType` is outside this set is rejected.
|
|
5052
|
-
* - `recommendedSubjectTypes` is the AppDev **advisory default**: a (non-binding) subset of
|
|
5053
|
-
* `assignableSubjectTypes` the IAM tool should default to. It is also read-only to IAM; the IAM
|
|
5054
|
-
* tool is responsible for tracking changes to it over time. It MUST be a subset of
|
|
5055
|
-
* `assignableSubjectTypes` (validated when the entitlement is authored).
|
|
5056
|
-
*/
|
|
5057
|
-
type SubjectTypeScoping = {
|
|
5058
|
-
/** AppDev veto: required non-empty ceiling of principal kinds that may hold this entitlement (read-only to IAM). */
|
|
5059
|
-
assignableSubjectTypes: SubjectType[];
|
|
5060
|
-
/** AppDev advisory default principal kinds; must be a subset of `assignableSubjectTypes` (read-only to IAM). */
|
|
5061
|
-
recommendedSubjectTypes?: SubjectType[];
|
|
5062
|
-
};
|
|
5063
|
-
/** Suggested IAM governance labels for an entitlement's advisory risk classification. */
|
|
5064
|
-
declare const CANONICAL_RISK_LEVELS: readonly ["basic", "elevated", "privileged", "admin"];
|
|
5065
|
-
/** Canonical IAM governance suggestions with autocomplete, while allowing AppDev-defined labels. */
|
|
5066
|
-
type RiskLevel = (typeof CANONICAL_RISK_LEVELS)[number] | (string & {});
|
|
5067
|
-
/** Risk projected to IAM when an entitlement does not declare or store an explicit classification. */
|
|
5068
|
-
declare const DEFAULT_RISK_LEVEL = "basic";
|
|
5069
|
-
type Permission = AuthzEntityBase & SubjectTypeScoping & {
|
|
5071
|
+
type EntitlementPresentationFields = {
|
|
5070
5072
|
/** True when this catalog entry should be exposed as requestable access in IAM tooling. */
|
|
5071
5073
|
requestable?: boolean;
|
|
5072
5074
|
/**
|
|
@@ -5076,6 +5078,8 @@ type Permission = AuthzEntityBase & SubjectTypeScoping & {
|
|
|
5076
5078
|
riskLevel?: RiskLevel;
|
|
5077
5079
|
/** IAM-owned deep link where a principal can request this entitlement, when the destination provides one. */
|
|
5078
5080
|
requestUrl?: string;
|
|
5081
|
+
};
|
|
5082
|
+
type PermissionFields = EntitlementPresentationFields & {
|
|
5079
5083
|
action?: string;
|
|
5080
5084
|
/** Canonical OAA permission types (maps to OAA `permission_type`). */
|
|
5081
5085
|
permissionTypes?: string[];
|
|
@@ -5084,43 +5088,60 @@ type Permission = AuthzEntityBase & SubjectTypeScoping & {
|
|
|
5084
5088
|
/** When true, the permission also applies to a resource's sub-resources (maps to OAA `apply_to_sub_resources`). */
|
|
5085
5089
|
applyToSubResources?: boolean;
|
|
5086
5090
|
};
|
|
5087
|
-
type
|
|
5088
|
-
/** True when this catalog entry should be exposed as requestable access in IAM tooling. */
|
|
5089
|
-
requestable?: boolean;
|
|
5090
|
-
/**
|
|
5091
|
-
* Advisory access-risk classification. App code seeds the initial value; IAM may replace it after
|
|
5092
|
-
* materialization. Unset values project to IAM as {@link DEFAULT_RISK_LEVEL}.
|
|
5093
|
-
*/
|
|
5094
|
-
riskLevel?: RiskLevel;
|
|
5095
|
-
/** IAM-owned deep link where a principal can request this entitlement, when the destination provides one. */
|
|
5096
|
-
requestUrl?: string;
|
|
5091
|
+
type RoleFields<TAttributes extends object = object> = EntitlementPresentationFields & {
|
|
5097
5092
|
/** Permissions this role confers (definitional). Roles are flat bundles — OAA has no nested-role edge. */
|
|
5098
|
-
permissions?: Array<string | Permission
|
|
5093
|
+
permissions?: Array<string | Permission<TAttributes>>;
|
|
5099
5094
|
};
|
|
5100
|
-
type
|
|
5101
|
-
/** True when this catalog entry should be exposed as requestable access in IAM tooling. */
|
|
5102
|
-
requestable?: boolean;
|
|
5103
|
-
/**
|
|
5104
|
-
* Advisory access-risk classification. App code seeds the initial value; IAM may replace it after
|
|
5105
|
-
* materialization. Unset values project to IAM as {@link DEFAULT_RISK_LEVEL}.
|
|
5106
|
-
*/
|
|
5107
|
-
riskLevel?: RiskLevel;
|
|
5108
|
-
/** IAM-owned deep link where a principal can request this entitlement, when the destination provides one. */
|
|
5109
|
-
requestUrl?: string;
|
|
5095
|
+
type GroupFields<TAttributes extends object = object> = EntitlementPresentationFields & {
|
|
5110
5096
|
/** Nested child groups composed into this group (definitional). */
|
|
5111
|
-
groups?: Array<string | Group
|
|
5097
|
+
groups?: Array<string | Group<TAttributes>>;
|
|
5112
5098
|
/** Roles this group confers (group is the principal). Projected as OAA `local_group` role assignments. */
|
|
5113
|
-
roles?: Array<string | Role
|
|
5099
|
+
roles?: Array<string | Role<TAttributes>>;
|
|
5114
5100
|
/** Permissions this group confers (group is the principal). Projected as OAA `local_group` application permissions. */
|
|
5115
|
-
permissions?: Array<string | Permission
|
|
5101
|
+
permissions?: Array<string | Permission<TAttributes>>;
|
|
5116
5102
|
/**
|
|
5117
5103
|
* Resource scope this entitlement binds to. When set, a member-add grant inherits these resources
|
|
5118
5104
|
* (so the conferred role/permissions are scoped to them), and OAA projects the group's role/
|
|
5119
5105
|
* permission assignments as resource-scoped (`apply_to_application: false`) rather than app-wide.
|
|
5120
5106
|
* Empty/undefined means application-wide (the conferred access applies to the whole application).
|
|
5121
5107
|
*/
|
|
5122
|
-
resources?: Array<string | Resource
|
|
5108
|
+
resources?: Array<string | Resource<TAttributes>>;
|
|
5109
|
+
};
|
|
5110
|
+
/**
|
|
5111
|
+
* AppDev-owned subject-type scoping shared by every catalog entitlement (group/role/permission).
|
|
5112
|
+
*
|
|
5113
|
+
* - `assignableSubjectTypes` is the AppDev **veto**: the hard, required, non-empty ceiling of
|
|
5114
|
+
* principal kinds that may ever hold this entitlement. It is authored in application code and is
|
|
5115
|
+
* **read-only** to the IAM tool (projected through SCIM as a `readOnly` attribute). There is no
|
|
5116
|
+
* default-to-workforce and no unset-means-unrestricted: every entitlement declares its audience
|
|
5117
|
+
* explicitly. A grant whose `subjectType` is outside this set is rejected.
|
|
5118
|
+
* - `recommendedSubjectTypes` is the AppDev **advisory default**: a (non-binding) subset of
|
|
5119
|
+
* `assignableSubjectTypes` the IAM tool should default to. It is also read-only to IAM; the IAM
|
|
5120
|
+
* tool is responsible for tracking changes to it over time. It MUST be a subset of
|
|
5121
|
+
* `assignableSubjectTypes` (validated when the entitlement is authored).
|
|
5122
|
+
*/
|
|
5123
|
+
type SubjectTypeScoping = {
|
|
5124
|
+
/** AppDev veto: required non-empty ceiling of principal kinds that may hold this entitlement (read-only to IAM). */
|
|
5125
|
+
assignableSubjectTypes: SubjectType[];
|
|
5126
|
+
/** AppDev advisory default principal kinds; must be a subset of `assignableSubjectTypes` (read-only to IAM). */
|
|
5127
|
+
recommendedSubjectTypes?: SubjectType[];
|
|
5123
5128
|
};
|
|
5129
|
+
type EntitlementReservedKey = keyof AuthzEntityBaseFields | keyof SubjectTypeScoping | keyof ResourceFields | keyof PermissionFields | keyof RoleFields | keyof GroupFields;
|
|
5130
|
+
/**
|
|
5131
|
+
* Fields shared by App-authored authorization entities. Custom attributes stay flat and type-safe;
|
|
5132
|
+
* SDK-owned names are reserved so future protocol fields cannot silently collide with app data.
|
|
5133
|
+
*/
|
|
5134
|
+
type AuthzEntityBase<TAttributes extends object = object> = AuthzEntityBaseFields & NoReserved<TAttributes, EntitlementReservedKey>;
|
|
5135
|
+
type Resource<TAttributes extends object = object> = AuthzEntityBase<TAttributes> & ResourceFields<TAttributes>;
|
|
5136
|
+
/** Suggested IAM governance labels for an entitlement's advisory risk classification. */
|
|
5137
|
+
declare const CANONICAL_RISK_LEVELS: readonly ["basic", "elevated", "privileged", "admin"];
|
|
5138
|
+
/** Canonical IAM governance suggestions with autocomplete, while allowing AppDev-defined labels. */
|
|
5139
|
+
type RiskLevel = (typeof CANONICAL_RISK_LEVELS)[number] | (string & {});
|
|
5140
|
+
/** Risk projected to IAM when an entitlement does not declare or store an explicit classification. */
|
|
5141
|
+
declare const DEFAULT_RISK_LEVEL = "basic";
|
|
5142
|
+
type Permission<TAttributes extends object = object> = AuthzEntityBase<TAttributes> & SubjectTypeScoping & PermissionFields;
|
|
5143
|
+
type Role<TAttributes extends object = object> = AuthzEntityBase<TAttributes> & SubjectTypeScoping & RoleFields<TAttributes>;
|
|
5144
|
+
type Group<TAttributes extends object = object> = AuthzEntityBase<TAttributes> & SubjectTypeScoping & GroupFields<TAttributes>;
|
|
5124
5145
|
type OaaAccessTargetType = "group" | "role" | "permission";
|
|
5125
5146
|
/**
|
|
5126
5147
|
* The kind of an Entitlement. An **Entitlement** is any catalog object that can grant a user access
|
|
@@ -5133,7 +5154,7 @@ type OaaAccessTargetType = "group" | "role" | "permission";
|
|
|
5133
5154
|
*/
|
|
5134
5155
|
type EntitlementType = OaaAccessTargetType;
|
|
5135
5156
|
/** A catalog Entitlement: a group, role, or permission (see {@link EntitlementType}). */
|
|
5136
|
-
type Entitlement = Group | Role | Permission
|
|
5157
|
+
type Entitlement<TAttributes extends object = object> = Group<TAttributes> | Role<TAttributes> | Permission<TAttributes>;
|
|
5137
5158
|
declare const ION_AUTHZ_GROUP_SCHEMA = "urn:ionite:params:scim:schemas:extension:authz:2.0:Group";
|
|
5138
5159
|
type AuthzScimGroupType = OaaAccessTargetType;
|
|
5139
5160
|
type AuthzScimGroupExtension = {
|
|
@@ -5160,6 +5181,8 @@ type AuthzScimGroupExtension = {
|
|
|
5160
5181
|
assignableSubjectTypes?: SubjectType[];
|
|
5161
5182
|
/** AppDev advisory default principal kinds (subset of `assignableSubjectTypes`). Read-only to IAM. */
|
|
5162
5183
|
recommendedSubjectTypes?: SubjectType[];
|
|
5184
|
+
/** AppDev custom attributes. Code seeds values; IAM may persist presentation overrides. */
|
|
5185
|
+
attributes?: Record<string, unknown>;
|
|
5163
5186
|
};
|
|
5164
5187
|
type AccessRef<T> = string | T;
|
|
5165
5188
|
/**
|
|
@@ -5204,28 +5227,28 @@ type CatalogChangeKind = OaaAccessTargetType;
|
|
|
5204
5227
|
* Resource changes are NOT catalog changes: resources live in the application's own store and are
|
|
5205
5228
|
* signaled through {@link ResourceProvider.changed} instead.
|
|
5206
5229
|
*/
|
|
5207
|
-
type CatalogChange = {
|
|
5230
|
+
type CatalogChange<TAttributes extends object = object> = {
|
|
5208
5231
|
op: "set";
|
|
5209
5232
|
kind: CatalogChangeKind;
|
|
5210
|
-
entity: Group | Role | Permission
|
|
5211
|
-
previous: Group | Role | Permission | undefined;
|
|
5233
|
+
entity: Group<TAttributes> | Role<TAttributes> | Permission<TAttributes>;
|
|
5234
|
+
previous: Group<TAttributes> | Role<TAttributes> | Permission<TAttributes> | undefined;
|
|
5212
5235
|
} | {
|
|
5213
5236
|
op: "delete";
|
|
5214
5237
|
kind: CatalogChangeKind;
|
|
5215
|
-
entity: Group | Role | Permission
|
|
5238
|
+
entity: Group<TAttributes> | Role<TAttributes> | Permission<TAttributes>;
|
|
5216
5239
|
};
|
|
5217
5240
|
/** Listener invoked with a {@link CatalogChange} after a durable catalog write lands. */
|
|
5218
|
-
type CatalogChangeListener = (change: CatalogChange) => void;
|
|
5219
|
-
type AccessCatalogStore = {
|
|
5220
|
-
groups: EntityStore<Group
|
|
5221
|
-
roles: EntityStore<Role
|
|
5222
|
-
permissions: EntityStore<Permission
|
|
5241
|
+
type CatalogChangeListener<TAttributes extends object = object> = (change: CatalogChange<TAttributes>) => void;
|
|
5242
|
+
type AccessCatalogStore<TAttributes extends object = object> = {
|
|
5243
|
+
groups: EntityStore<Group<TAttributes>>;
|
|
5244
|
+
roles: EntityStore<Role<TAttributes>>;
|
|
5245
|
+
permissions: EntityStore<Permission<TAttributes>>;
|
|
5223
5246
|
/**
|
|
5224
5247
|
* Reactive change subscription (the catalog analog of {@link ReactiveHandle}). When implemented,
|
|
5225
5248
|
* the SDK subscribes once at wiring time and projects each change to OAA and ready IAM delta.
|
|
5226
5249
|
* Stores that omit it rely on later full sync/reconcile. Returns an unsubscribe function.
|
|
5227
5250
|
*/
|
|
5228
|
-
afterChange?(listener: CatalogChangeListener): () => void;
|
|
5251
|
+
afterChange?(listener: CatalogChangeListener<TAttributes>): () => void;
|
|
5229
5252
|
};
|
|
5230
5253
|
/** A resource change signaled by a {@link ResourceProvider} after the app's own write lands. */
|
|
5231
5254
|
type ResourceChange = {
|
|
@@ -6169,4 +6192,4 @@ type LfvErrorResponse = {
|
|
|
6169
6192
|
};
|
|
6170
6193
|
/** Generates a ULID */
|
|
6171
6194
|
declare function generateULID(prefix?: string): string;
|
|
6172
|
-
export { AccessAssignmentStore, AccessCatalogStore, AccessChange, AccessCheckReason, AccessCheckResult, AccessCheckTarget, AccessIndex, AccessMutationResult, AccessMutationStatus, AccessProvenance, AccessRef, AccessRequestCreate, AccessRequestResult, AccessRequestSubmit, AccessStatus, Address, ApplicationValidators, AssignmentPolicyError, AuthenticatedPrincipal, AuthenticatedUser, Authz, AuthzConfig, AuthzDecision, AuthzEntityBase, AuthzOaaConfig, AuthzOaaPrincipalConfig, AuthzScimGroupExtension, AuthzScimGroupType, AwsConfigLocator, AwsSecretsConfig, AzureAuthMethod, AzureConfigLocator, AzureSecretsConfig, BaseCustomer, BaseTenant, BaseUser, BaseWorkloadIdentity, CANONICAL_RISK_LEVELS, CIAM, CIAMConfig, CIAMConfigFromCode, CIAMConfigFromCodeInput, CIAMProviderBranding, CIAMProviderColors, CIAMProviderConfig, CIAMProviderDescriptor, CIAMProviderType, CIAMValidators, CacheConfig, CachedWorkloadToken, CapabilitiezManifest, CapabilityEndpointUrls, CapabilityKey, CapabilityState, CatalogChange, CatalogChangeKind, CatalogChangeListener, CatalogEntityKind, ChangeListener, ClientCredentialsWorkloadConfig, CodeCatalog, CodeCatalogInput, CodeCatalogNamespace, ConfigApplyStatus, ConfigChangeCallback, ConfigChangeOptions, ConfigChangeResult, ConfigErrorKind, ConfigLocator, ConfigSource, ConfigSourceEnv, ConfigSourceError, ConfigSourceErrorInit, ConfigSourceResolver, ConfigSourceType, ConfigSubscriptionOptions, CreateGroupOptions, CreateTenantRequest, CreateUserOptions, Customer, CustomerStore, CustomerStoreOptions, DEFAULT_RISK_LEVEL, DEFAULT_SECRET_MIME_TYPES, DEFAULT_TENANT_API_NAMESPACE, DEFAULT_TENANT_UI_NAMESPACE, DestinationReference, DevSecretsConfig, ECID_SCHEME, EcidFormatError, EffectiveEdge, EgressChannelOutcome, EgressOutcome, Email, EndpointOperation, EndpointPermission, EnterpriseExtension, Entitlement, EntitlementType, EntityStore, EnvironmentType, FrameworkConfig, FrameworkConfigInput, FrameworkLfvConfig, FrameworkOtelConfig, FrameworkSecretsModuleConfig, FrameworkSecretsSourceConfig, FrameworkStores, FrameworkWorkloadConfig, FrameworkWorkloadConfigFromCode, FrameworkWorkloadIncomingOutgoing, GcpConfigLocator, GcpSecretsConfig, Group, GroupMember, GroupResource, GroupsInboundHandlerConfig, IAM, IAMAccessRequestsConfig, IAMAppRegistry, IAMAppValidators, IAMConfig, IAMConfigFromCode, IAMDiscoveryConfig, IAMDiscoveryContext, IAMDiscoveryHandlerConfig, IAMEndpointFlag, IAMGroupsInbound, IAMGroupsOutbound, IAMHandlerConfig, IAMInboundCustomersConfig, IAMInboundPrincipalContext, IAMInboundUserContext, IAMInboundUsersConfig, IAMInboundWorkloadsConfig, IAMPrincipalsInbound, IAMUsersInbound, IAMValidators, ION_AUTHZ_GROUP_SCHEMA, ION_AUTHZ_OAA_SYNC, ION_CAPABILITIEZ_READ, ION_CIAM_MAGIC_LINK_CREATE, ION_ENDPOINT_PERMISSIONS, ION_IAM_ACCESS_REQUESTS_WRITE, ION_IAM_CUSTOMERS_WRITE, ION_IAM_GROUPS_WRITE, ION_IAM_READ, ION_IAM_USERS_WRITE, ION_IAM_WORKLOADS_WRITE, ION_SCIM_CUSTOMER_SCHEMA, ION_SCIM_USER_EXTENSION_URN, ION_SCIM_WORKLOAD_SCHEMA, ION_SDK_PERMISSIONS, ION_TENANT_MANAGE, IamAssignmentPolicy, IamDeltaEmitter, IamDeltaMode, IamDeltaReconcileInput, IamDeltaReconcileResult, IamDeltaResourceType, IamPrincipalKind, IamPrincipalKindFlag, IdTokenClaims, IdentityResolution, InMemoryTenantStoreOptions, InferSecretType, Ionite, IoniteBase, IoniteError, IoniteErrorOptions, IoniteUserExtension, IoniteValidators, JWTAssertionClaims, JwtBearerWorkloadConfig, Kms, KmsAddKeysRequest, KmsAddKeysResult, KmsAllocationPolicy, KmsAllocationStrategy, KmsConfig, KmsIssuedKey, KmsIssuerEvent, KmsIssuerEventListener, KmsIssuerEventName, KmsKey, KmsKeyState, KmsParkDisposition, KmsParkReport, KmsParkRequest, KmsParkResult, KmsPool, KmsPoolConfig, KmsPoolControlDocument, KmsPoolDocument, KmsPoolIssuer, KmsPoolListener, KmsPoolSlot, KmsRevokeKeyRequest, KmsRevokeKeyResult, LfvActionAcceptedResponse, LfvActionName, LfvActionRequestBase, LfvCallbackEnvelope, LfvCallbackHeaders, LfvCallbackKind, LfvCallbackTransport, LfvEd25519PrivateJwk, LfvEd25519PublicJwk, LfvErrorCode, LfvErrorResponse, LfvJwks, LfvOtpRequest, LfvOtpResponse, ListFilter, ListOptions, ListResult, Logger, MagicLink, MagicLinkStore, MetaData, MirrorConfigLocator, ModifiableFrameworkConfig, ModuleName, ModuleReadiness, ModuleReadinessState, Name, OaaAccessChangeBatchItem, OaaAccessTargetType, OaaClient, OaaPrincipalPopulation, OaaSyncInput, OaaSyncOptions, OaaSyncResult, OidcCallbackParams, Otel, OtelAttributeValue, OtelAttributes, OtelConfig, OtelConsoleMode, OtelLevels, OtelLogLevel, OtelLogRecord, OtelMetricsSignalConfig, OtelOAuthClientCredentialsConfig, OtelProtocol, OtelProviderType, OtelSignalConfig, OtelSignalName, PLATFORM_ASSIGNABLE_SUBJECT_TYPES, ParsedEcid, Permission, PhoneNumber, Photo, PrincipalInboundHandlerConfig, ReactiveHandle, ReadinessReport, ReadyAccessCatalogEntry, ReadyzEndpointConfig, ReconcileReport, RegisterIAMAppError, RegisterIAMAppPayload, RegisterIAMAppResult, RegisterSSOAppError, RegisterSSOAppPayload, RegisterSSOAppResult, RemoteConfig, RemoteConfigLoadErrorKind, RemoteConfigRetryContext, RemoteConfigRetryHook, RemoteConfigRetryOptions, RequireReadyResult, ResolvedRoute, ResolvedVaultLfvSecretsConfig, Resource, ResourceChange, ResourceChangeListener, ResourceProvider, RiskLevel, Role, RouteFilterResult, RouteModule, RoutingOptions, SSO, SSOAppRegistry, SSOAppValidators, SSOConfig, SSOConfigFromCode, SSOHandlerConfig, SSOValidators, ScimAuthenticationScheme, ScimCustomer, ScimError, Group2 as ScimGroup, ScimListResponse, ScimMutationSummary, ScimResourceType, ScimResourceTypeSchemaExtension, ScimResult, Role2 as ScimRole, ScimSchemaAttributeDefinition, ScimSchemaDefinition, ScimServiceProviderConfig, User as ScimUser, ScimWorkload, Secret, SecretContentType, SecretContentTypeMismatchError, SecretEvent, SecretEventListener, SecretEventName, SecretFormat, SecretHandle, SecretLifecycleRequest, SecretRequestSeverity, SecretTypeDescriptor, SecretTypeInput, SecretTypeRegistryEntry, Secrets, SecretsModuleConfig, SecretsOperationOptions, SecretsSource, SecretsSourceConfig, SecretsSourceMap, SecretsSourceType, SecretsSubscriptionOptions, SecretsValidators, SecretsWriteOptions, ServerOnlyWorkloadConfig, Session, SessionStore, StandardSchemaWithValidate, StateCookie, StoreConflictError, StoreConflictKind, SubjectRef, SubjectScope, SubjectType, SubjectTypeScoping, SubscriptionMode, TenantIonCache, TenantPathMatch, TenantPathNamespace, TenantPathRoutingStrategy, TenantResponse, TenantRoutingStrategy, TenantStatus, TenantStore, TenantValidators, TenantWebhookPayload, TokenResponse, TokenValidationResult, TrustedIdp, TrustedProvisioningClient, UpdateTenantRequest, UserStore, UserStoreOptions, UsersInboundHandlerConfig, ValidateResult, VaultConfigLocator, VaultLfvSecretsConfig, VaultSecretsConfig, VaultWebSocketAuthHeader, VaultWebSocketSecretsConfig, VaultWorkloadAuthConfig, WorkforceUser, Workload, WorkloadClient, WorkloadConfig, WorkloadConfigMap, WorkloadGetToken, WorkloadIdentity, WorkloadIdentityStore, WorkloadIncomingOutgoing, WorkloadPrincipal, WorkloadTokenResponse, WorkloadTokenStore, WorkloadValidators, X509Certificate, accessRefId, accessRootId, assertEcid, assertRequiredSubjectType, assertValidSubjectTypeScoping, buildTenantPath, catalogEntityStore, claimsToUser, configTrustedClientGrants, customerResourceSchema, debugLogger, decodeUser, deepEqualPlain, defaultLogger, defaultSecretContentType, defineCatalog, defineSecretType, deprecateRetiredCodeCatalogRows, formatEcid, formatLogLine, generateULID, getCodeCatalogEntity, groupResourceSchema, idTokenClaimsSchema, infoLogger, isCodeCatalog, isConfigLocator, isConfigSourceError, isEcid, isStoreConflictError, jwtAssertionClaimsSchema, list, listGenerator, matchTenantPath, matchesListFilter, materializeCodeCatalogEntity, mergeCodeCatalogEntity, mergeConfig, must, normalizeTenantPathNamespace, normalizeTenantRoutingStrategy, oidcCallbackSchema, parseEcid, parseJsonc, parseKmsPoolControlDocument, parseKmsPoolDocument, prettyLogger, readyCatalogEntry, remoteConfigSecretType, serializeConfig, silentLogger, stableConfigHash, stripJsonComments, toCodeCatalog, tokenResponseSchema, trimTrailingSlash, trustedClientPermissionsForPrincipal, unionCatalogRead, userSchema, validationFailureResponse, version, waitOn, warnLogger, withValidate, workloadResourceSchema, workloadTokenResponseSchema };
|
|
6195
|
+
export { AccessAssignmentStore, AccessCatalogStore, AccessChange, AccessCheckReason, AccessCheckResult, AccessCheckTarget, AccessIndex, AccessMutationResult, AccessMutationStatus, AccessProvenance, AccessRef, AccessRequestCreate, AccessRequestResult, AccessRequestSubmit, AccessStatus, Address, ApplicationValidators, AssignmentPolicyError, AuthenticatedPrincipal, AuthenticatedUser, Authz, AuthzConfig, AuthzDecision, AuthzEntityBase, AuthzOaaConfig, AuthzOaaPrincipalConfig, AuthzScimGroupExtension, AuthzScimGroupType, AwsConfigLocator, AwsSecretsConfig, AzureAuthMethod, AzureConfigLocator, AzureSecretsConfig, BaseCustomer, BaseTenant, BaseUser, BaseWorkloadIdentity, CANONICAL_RISK_LEVELS, CIAM, CIAMConfig, CIAMConfigFromCode, CIAMConfigFromCodeInput, CIAMProviderBranding, CIAMProviderColors, CIAMProviderConfig, CIAMProviderDescriptor, CIAMProviderType, CIAMValidators, CacheConfig, CachedWorkloadToken, CapabilitiezManifest, CapabilityEndpointUrls, CapabilityKey, CapabilityState, CatalogChange, CatalogChangeKind, CatalogChangeListener, CatalogEntityKind, ChangeListener, ClientCredentialsWorkloadConfig, CodeCatalog, CodeCatalogInput, CodeCatalogNamespace, ConfigApplyStatus, ConfigChangeCallback, ConfigChangeOptions, ConfigChangeResult, ConfigErrorKind, ConfigLocator, ConfigSource, ConfigSourceEnv, ConfigSourceError, ConfigSourceErrorInit, ConfigSourceResolver, ConfigSourceType, ConfigSubscriptionOptions, CreateGroupOptions, CreateTenantRequest, CreateUserOptions, Customer, CustomerStore, CustomerStoreOptions, DEFAULT_RISK_LEVEL, DEFAULT_SECRET_MIME_TYPES, DEFAULT_TENANT_API_NAMESPACE, DEFAULT_TENANT_UI_NAMESPACE, DestinationReference, DevSecretsConfig, ECID_SCHEME, EcidFormatError, EffectiveEdge, EgressChannelOutcome, EgressOutcome, Email, EndpointOperation, EndpointPermission, EnterpriseExtension, Entitlement, EntitlementType, EntityStore, EnvironmentType, FrameworkConfig, FrameworkConfigInput, FrameworkLfvConfig, FrameworkOtelConfig, FrameworkSecretsModuleConfig, FrameworkSecretsSourceConfig, FrameworkStores, FrameworkWorkloadConfig, FrameworkWorkloadConfigFromCode, FrameworkWorkloadIncomingOutgoing, GcpConfigLocator, GcpSecretsConfig, Group, GroupMember, GroupResource, GroupsInboundHandlerConfig, IAM, IAMAccessRequestsConfig, IAMAppRegistry, IAMAppValidators, IAMConfig, IAMConfigFromCode, IAMDiscoveryConfig, IAMDiscoveryContext, IAMDiscoveryHandlerConfig, IAMEndpointFlag, IAMGroupsInbound, IAMGroupsOutbound, IAMHandlerConfig, IAMInboundCustomersConfig, IAMInboundPrincipalContext, IAMInboundUserContext, IAMInboundUsersConfig, IAMInboundWorkloadsConfig, IAMPrincipalsInbound, IAMUsersInbound, IAMValidators, ION_AUTHZ_GROUP_SCHEMA, ION_AUTHZ_OAA_SYNC, ION_CAPABILITIEZ_READ, ION_CIAM_MAGIC_LINK_CREATE, ION_ENDPOINT_PERMISSIONS, ION_IAM_ACCESS_REQUESTS_WRITE, ION_IAM_CUSTOMERS_WRITE, ION_IAM_GROUPS_WRITE, ION_IAM_READ, ION_IAM_USERS_WRITE, ION_IAM_WORKLOADS_WRITE, ION_SCIM_CUSTOMER_SCHEMA, ION_SCIM_USER_EXTENSION_URN, ION_SCIM_WORKLOAD_SCHEMA, ION_SDK_PERMISSIONS, ION_TENANT_MANAGE, IamAssignmentPolicy, IamDeltaEmitter, IamDeltaMode, IamDeltaReconcileInput, IamDeltaReconcileResult, IamDeltaResourceType, IamPrincipalKind, IamPrincipalKindFlag, IdTokenClaims, IdentityResolution, InMemoryTenantStoreOptions, InferSecretType, Ionite, IoniteBase, IoniteError, IoniteErrorOptions, IoniteUserExtension, IoniteValidators, JWTAssertionClaims, JwtBearerWorkloadConfig, KNOWN_BASE_CUSTOMER_KEYS, KNOWN_BASE_USER_KEYS, KNOWN_ENTITLEMENT_KEYS, KNOWN_WORKLOAD_KEYS, Kms, KmsAddKeysRequest, KmsAddKeysResult, KmsAllocationPolicy, KmsAllocationStrategy, KmsConfig, KmsIssuedKey, KmsIssuerEvent, KmsIssuerEventListener, KmsIssuerEventName, KmsKey, KmsKeyState, KmsParkDisposition, KmsParkReport, KmsParkRequest, KmsParkResult, KmsPool, KmsPoolConfig, KmsPoolControlDocument, KmsPoolDocument, KmsPoolIssuer, KmsPoolListener, KmsPoolSlot, KmsRevokeKeyRequest, KmsRevokeKeyResult, LfvActionAcceptedResponse, LfvActionName, LfvActionRequestBase, LfvCallbackEnvelope, LfvCallbackHeaders, LfvCallbackKind, LfvCallbackTransport, LfvEd25519PrivateJwk, LfvEd25519PublicJwk, LfvErrorCode, LfvErrorResponse, LfvJwks, LfvOtpRequest, LfvOtpResponse, ListFilter, ListOptions, ListResult, Logger, MagicLink, MagicLinkStore, MetaData, MirrorConfigLocator, ModifiableFrameworkConfig, ModuleName, ModuleReadiness, ModuleReadinessState, Name, NoReserved, OaaAccessChangeBatchItem, OaaAccessTargetType, OaaClient, OaaPrincipalPopulation, OaaSyncInput, OaaSyncOptions, OaaSyncResult, OidcCallbackParams, Otel, OtelAttributeValue, OtelAttributes, OtelConfig, OtelConsoleMode, OtelLevels, OtelLogLevel, OtelLogRecord, OtelMetricsSignalConfig, OtelOAuthClientCredentialsConfig, OtelProtocol, OtelProviderType, OtelSignalConfig, OtelSignalName, PLATFORM_ASSIGNABLE_SUBJECT_TYPES, ParsedEcid, Permission, PhoneNumber, Photo, PrincipalInboundHandlerConfig, ReactiveHandle, ReadinessReport, ReadyAccessCatalogEntry, ReadyzEndpointConfig, ReconcileReport, RegisterIAMAppError, RegisterIAMAppPayload, RegisterIAMAppResult, RegisterSSOAppError, RegisterSSOAppPayload, RegisterSSOAppResult, RemoteConfig, RemoteConfigLoadErrorKind, RemoteConfigRetryContext, RemoteConfigRetryHook, RemoteConfigRetryOptions, RequireReadyResult, ResolvedRoute, ResolvedVaultLfvSecretsConfig, Resource, ResourceChange, ResourceChangeListener, ResourceProvider, RiskLevel, Role, RouteFilterResult, RouteModule, RoutingOptions, SSO, SSOAppRegistry, SSOAppValidators, SSOConfig, SSOConfigFromCode, SSOHandlerConfig, SSOValidators, ScimAuthenticationScheme, ScimCustomer, ScimError, Group2 as ScimGroup, ScimListResponse, ScimMutationSummary, ScimResourceType, ScimResourceTypeSchemaExtension, ScimResult, Role2 as ScimRole, ScimSchemaAttributeDefinition, ScimSchemaDefinition, ScimServiceProviderConfig, User as ScimUser, ScimWorkload, Secret, SecretContentType, SecretContentTypeMismatchError, SecretEvent, SecretEventListener, SecretEventName, SecretFormat, SecretHandle, SecretLifecycleRequest, SecretRequestSeverity, SecretTypeDescriptor, SecretTypeInput, SecretTypeRegistryEntry, Secrets, SecretsModuleConfig, SecretsOperationOptions, SecretsSource, SecretsSourceConfig, SecretsSourceMap, SecretsSourceType, SecretsSubscriptionOptions, SecretsValidators, SecretsWriteOptions, ServerOnlyWorkloadConfig, Session, SessionStore, StandardSchemaWithValidate, StateCookie, StoreConflictError, StoreConflictKind, SubjectRef, SubjectScope, SubjectType, SubjectTypeScoping, SubscriptionMode, TenantIonCache, TenantPathMatch, TenantPathNamespace, TenantPathRoutingStrategy, TenantResponse, TenantRoutingStrategy, TenantStatus, TenantStore, TenantValidators, TenantWebhookPayload, TokenResponse, TokenValidationResult, TrustedIdp, TrustedProvisioningClient, UpdateTenantRequest, UserStore, UserStoreOptions, UsersInboundHandlerConfig, ValidateResult, VaultConfigLocator, VaultLfvSecretsConfig, VaultSecretsConfig, VaultWebSocketAuthHeader, VaultWebSocketSecretsConfig, VaultWorkloadAuthConfig, WorkforceUser, Workload, WorkloadClient, WorkloadConfig, WorkloadConfigMap, WorkloadGetToken, WorkloadIdentity, WorkloadIdentityStore, WorkloadIncomingOutgoing, WorkloadPrincipal, WorkloadTokenResponse, WorkloadTokenStore, WorkloadValidators, X509Certificate, accessRefId, accessRootId, assertEcid, assertRequiredSubjectType, assertValidSubjectTypeScoping, buildTenantPath, catalogEntityStore, claimsToUser, configTrustedClientGrants, customAttributes, customerResourceSchema, debugLogger, decodeUser, deepEqualPlain, defaultLogger, defaultSecretContentType, defineCatalog, defineSecretType, deprecateRetiredCodeCatalogRows, formatEcid, formatLogLine, generateULID, getCodeCatalogEntity, groupResourceSchema, idTokenClaimsSchema, infoLogger, isCodeCatalog, isConfigLocator, isConfigSourceError, isEcid, isStoreConflictError, jwtAssertionClaimsSchema, list, listGenerator, matchTenantPath, matchesListFilter, materializeCodeCatalogEntity, mergeCodeCatalogEntity, mergeConfig, must, normalizeTenantPathNamespace, normalizeTenantRoutingStrategy, oidcCallbackSchema, parseEcid, parseJsonc, parseKmsPoolControlDocument, parseKmsPoolDocument, prettyLogger, readyCatalogEntry, remoteConfigSecretType, serializeConfig, silentLogger, stableConfigHash, stripJsonComments, toCodeCatalog, tokenResponseSchema, trimTrailingSlash, trustedClientPermissionsForPrincipal, unionCatalogRead, userSchema, validationFailureResponse, version, waitOn, warnLogger, withValidate, workloadResourceSchema, workloadTokenResponseSchema };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`,"\\n")}function
|
|
1
|
+
import{E,X,o,y,h,S,n,R,i,Q,U,u,e,d,q,j,V,F,ee,J,A,I,g,v,M,x,r,c,re,b,H,ne,se,k,N,L,l,a,t,D,oe,Y,ie,w,C,ae,ce,P,ue,p,T,G,B,s,m,f,le,pe,K,W}from"./shared/core-mybn3422.js";var He="0.0.24-beta.20260915.3";class Ae extends Error{constructor(O,_){super(O,_.cause!==void 0?{cause:_.cause}:void 0);this.name="ConfigSourceError",this.kind=_.kind,this.recoverable=_.recoverable,this.code=_.code,this.status=_.status,this.path=_.path,this.sourceType=_.sourceType,Object.setPrototypeOf(this,Ae.prototype)}}function Je(O){return O instanceof Ae}var fe=["workload"],Ee={id:"ion:iam:read",name:"Read Identities (SCIM)",description:"Authorizes a workload to list and read Users, Groups, Workloads, and Customers via the SCIM endpoints.",requestable:!1,permissionTypes:["DataRead"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},Ie={id:"ion:iam:users:write",name:"Manage Identities (SCIM Users)",description:"Authorizes a workload to create, replace, modify (including attribute changes), and delete Users via SCIM, including access-root revocation on user delete.",requestable:!1,permissionTypes:["DataCreate","DataWrite","DataDelete"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},we={id:"ion:iam:groups:write",name:"Manage Groups & Access (SCIM Groups)",description:"Authorizes a workload to create, replace, modify, and delete Groups via SCIM, including membership changes that grant or revoke entitlements.",requestable:!1,permissionTypes:["DataCreate","DataWrite","DataDelete"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},xe={id:"ion:iam:workloads:write",name:"Manage Workloads (SCIM Workloads)",description:"Authorizes a workload to create, replace, modify, and delete Workload principals via SCIM, including access-root revocation on delete.",requestable:!1,permissionTypes:["DataCreate","DataWrite","DataDelete"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},Pe={id:"ion:iam:customers:write",name:"Manage Customers (SCIM Customers)",description:"Authorizes a workload to create, replace, modify, and delete Customer principals via SCIM, including access-root revocation on delete.",requestable:!1,permissionTypes:["DataCreate","DataWrite","DataDelete"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},Oe={id:"ion:iam:access-requests:write",name:"Submit Access Requests",description:"Authorizes a workload to submit an access request on a principal's behalf via the AccessRequests endpoint.",requestable:!1,permissionTypes:["DataCreate"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},_e={id:"ion:capabilitiez:read",name:"Read Capability Manifest",description:"Authorizes a workload to read the capability manifest at the capabilitiez endpoint (only when RemoteConfig.capabilitiez is enabled).",requestable:!1,permissionTypes:["DataRead"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},ve={id:"ion:ciam:magic-link:create",name:"Issue CIAM Magic Links",description:"Authorizes a caller to mint customer magic-link login credentials via the magic-link endpoint. Grant narrowly.",requestable:!1,permissionTypes:["DataCreate"],assignableSubjectTypes:["workload","user"],recommendedSubjectTypes:fe},Ke={id:"ion:authz:oaa:sync",name:"Trigger OAA Full Sync",description:"Authorizes a workload (Ops/ECI client) to trigger a full OAA reconcile via the authz OAA sync endpoint (only when RemoteConfig.authz.oaa.fullSync.enabled is true).",requestable:!1,permissionTypes:["DataWrite"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},Me={id:"ion:tenant:manage",name:"Manage Tenants",description:"Authorizes a workload (ECI/TMS client) to create, read, update, and delete tenant records via the tenant-management endpoints.",requestable:!1,permissionTypes:["DataCreate","DataRead","DataWrite","DataDelete"],assignableSubjectTypes:fe,recommendedSubjectTypes:fe},Ye=[Ee,Ie,we,xe,Pe,Oe,_e,ve,Ke,Me],Ze={"iam.read":{permission:Ee,subjectType:["workload"]},"iam.users.write":{permission:Ie,subjectType:["workload"]},"iam.groups.write":{permission:we,subjectType:["workload"]},"iam.workloads.write":{permission:xe,subjectType:["workload"]},"iam.customers.write":{permission:Pe,subjectType:["workload"]},"iam.access-requests.write":{permission:Oe,subjectType:["workload"]},"capabilitiez.read":{permission:_e,subjectType:["workload"]},"ciam.magic-link.create":{permission:ve,subjectType:["workload","user"]},"authz.oaa.sync":{permission:Ke,subjectType:["workload"]},"tenant.manage":{permission:Me,subjectType:["workload"]}};var Qe=["sessionStore","userStore","customerStore","accessStore","tokenStore","magicLinkStore"];function De(O){if(O===null||typeof O!=="object")return O;let _={};for(let[z,Z]of Object.entries(O)){if(Qe.includes(z)||z==="validators"||z==="setStores")continue;_[z]=Z!==null&&typeof Z==="object"&&!Array.isArray(Z)&&Object.getPrototypeOf(Z)===Object.prototype?De(Z):Z}return _}function Xe(O){return De(O)}function he(O,_){if(!O||typeof O!=="object"||Array.isArray(O))throw Error(`${_} must be an object.`);return O}function ke(O,_){if(O===void 0)return;if(typeof O!=="string"||O.length===0||!Number.isFinite(Date.parse(O)))throw Error(`${_} must be a valid timestamp string.`);return O}function We(O,_,z){if(!Array.isArray(O)||!z.allowEmpty&&O.length===0)throw Error(`${_} keys must be ${z.allowEmpty?"an":"a non-empty"} array.`);let Z=new Set;return O.map((de,te)=>{let me=he(de,`${_} keys[${te}]`);if(typeof me.id!=="string"||me.id.length===0)throw Error(`${_} keys[${te}].id must be a non-empty string.`);if(Z.has(me.id))throw Error(`${_} contains duplicate key id "${me.id}".`);if(Z.add(me.id),!["pending","active","deprecated","rotated","revoked"].includes(String(me.state)))throw Error(`${_} keys[${te}].state is invalid.`);if(me.value!==void 0&&(typeof me.value!=="string"||me.value.length===0))throw Error(`${_} keys[${te}].value must be a non-empty string when present.`);let ye=me.meta===void 0?void 0:he(me.meta,`${_} keys[${te}].meta`);return{id:me.id,state:me.state,...me.value===void 0?{}:{value:me.value},...me.notBefore===void 0?{}:{notBefore:ke(me.notBefore,`${_} keys[${te}].notBefore`)},...me.notAfter===void 0?{}:{notAfter:ke(me.notAfter,`${_} keys[${te}].notAfter`)},...me.createdAt===void 0?{}:{createdAt:ke(me.createdAt,`${_} keys[${te}].createdAt`)},...me.activatedAt===void 0?{}:{activatedAt:ke(me.activatedAt,`${_} keys[${te}].activatedAt`)},...me.deprecatedAt===void 0?{}:{deprecatedAt:ke(me.deprecatedAt,`${_} keys[${te}].deprecatedAt`)},...me.rotatedAt===void 0?{}:{rotatedAt:ke(me.rotatedAt,`${_} keys[${te}].rotatedAt`)},...me.revokedAt===void 0?{}:{revokedAt:ke(me.revokedAt,`${_} keys[${te}].revokedAt`)},...ye?{meta:{...ye}}:{}}})}function et(O,_,z){if(O===void 0)return;if(!Array.isArray(O))throw Error(`${z} slots must be an array.`);let Z=new Set,de=O.map((te,me)=>{if(te===null)return null;if(typeof te!=="string"||te.length===0)throw Error(`${z} slots[${me}] must be a non-empty key id or null.`);if(Z.has(te))throw Error(`${z} slots contain duplicate key id "${te}".`);Z.add(te);let ye=_.find((ge)=>ge.id===te);if(!ye)throw Error(`${z} slot key "${te}" is not present in keys.`);if(ye.state!=="active")throw Error(`${z} slot key "${te}" must have state "active".`);if(!ye.value)throw Error(`${z} slot key "${te}" must include a value.`);return te});if(_.length===0&&de.some((te)=>te!==null))throw Error(`${z} slots must be omitted or all-null when keys is empty.`);return de}function tt(O){let z=he(O,"KMS pool");if(z.kind!=="kms")throw Error('KMS pool kind must be "kms".');let Z=We(z.keys,"KMS pool",{allowEmpty:!0}),de=et(z.slots,Z,"KMS pool");return de?{kind:"kms",slots:de,keys:Z}:{kind:"kms",keys:Z}}function ot(O){let z=he(O,"KMS pool control document");if(z.kind!=="kms")throw Error('KMS pool control document kind must be "kms".');return{kind:"kms",keys:We(z.keys,"KMS pool control document",{allowEmpty:!0})}}var rt={trace:"TRACE",debug:"DEBUG",info:"INFO ",warn:"WARN ",error:"ERROR"};function $e(O){if(typeof O==="string")return O;try{return JSON.stringify(O)??String(O)}catch{return String(O)}}function be(O){let _=$e(O);return/^[A-Za-z0-9_./:@+|-]+$/.test(_)?_:JSON.stringify(_)}function nt(O){return $e(O).replaceAll("\r","\\r").replaceAll(`
|
|
2
|
+
`,"\\n")}function je(O,_,z){if(z==null)return;if(z instanceof Error){if(O.push(`${_}.name=${be(z.name)}`),O.push(`${_}.message=${be(z.message)}`),z.stack)O.push(`${_}.stack=${be(z.stack)}`);return}O.push(`${_}=${be(z)}`)}function Re(O,_,z=[],Z=new Date){let de=nt(_ instanceof Error?_.message:_??""),te=[];for(let[me,ye]of z.entries()){if(ye&&typeof ye==="object"&&!Array.isArray(ye)&&!(ye instanceof Error)&&Object.getPrototypeOf(ye)===Object.prototype){for(let[ge,Ce]of Object.entries(ye))je(te,ge,Ce);continue}je(te,`param.${me}`,ye)}return[Z.toISOString(),rt[O],de,...te].filter(Boolean).join(" ")}var Ue={trace:()=>{},debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},st=Ue,it={trace:()=>{},debug:console.debug,info:console.info,warn:console.warn,error:console.error},at={trace:()=>{},debug:()=>{},info:console.info,warn:console.warn,error:console.error},pt={trace:()=>{},debug:()=>{},info:()=>{},warn:console.warn,error:console.error},ct={trace:()=>{},debug:(O,..._)=>globalThis.console.debug(Re("debug",O,_)),info:(O,..._)=>globalThis.console.info(Re("info",O,_)),warn:(O,..._)=>globalThis.console.warn(Re("warn",O,_)),error:(O,..._)=>globalThis.console.error(Re("error",O,_))};function mt(O,_){if(typeof _!=="number"||_<=0)return O;return new Promise((z,Z)=>{let de=setTimeout(()=>{Z(Error(`Authz catalog entry did not become ready within ${_}ms`))},_);O.then(()=>{clearTimeout(de),z()},(te)=>{clearTimeout(de),Z(te)})})}function ut(O,_){let z=!1,Z,de=_.then(()=>{z=!0},(me)=>{z=!1,Z=me}),te=O;return Object.defineProperty(te,"ready",{enumerable:!1,configurable:!0,value:(me)=>mt(de.then(()=>{if(!z)throw Z}),me)}),Object.defineProperty(te,"isReady",{enumerable:!1,configurable:!0,value:()=>z}),te}var Ne=Object.freeze({jsonc:"application/json",env:"text/x-dotenv",text:"text/plain",binary:"application/octet-stream",yaml:"application/yaml",toml:"application/toml",xml:"application/xml"});function Le(O){if(!O.id.trim())throw Error("defineSecretType: id is required");let _=O.mimeType?.trim()||Ne[O.format],z=Object.freeze({id:O.id,...O.label?{label:O.label}:{},format:O.format,mimeType:_,...O.schemaUrl?{schemaUrl:O.schemaUrl}:{},typeId:O.id});return Object.freeze({id:O.id,...O.label?{label:O.label}:{},format:O.format,mimeType:_,...O.schemaUrl?{schemaUrl:O.schemaUrl}:{},...O.schema?{schema:O.schema}:{},toRegistryEntry:()=>z})}function dt(O="jsonc"){return{format:O,mimeType:Ne[O],typeId:O}}class qe extends Error{constructor(O,_){super(`Secret content type mismatch: expected "${O.mimeType}" (${O.format}) but received "${_.mimeType}" (${_.format})`);this.name="SecretContentTypeMismatchError",this.expected=O,this.received=_}}var lt=Le({id:"ionite-remote-config",label:"ionite RemoteConfig",format:"jsonc",mimeType:"application/vnd.ionite.remote-config+json",schemaUrl:"https://ionite.com/schemas/remote-config.json"});var Fe={beforeTenantSegments:["ui"]},Ge={beforeTenantSegments:["api"]};function ze(O){return(O??[]).map((_)=>_.trim()).filter(Boolean)}function gt(O){let _=O.trim();if(!_)return"/";let z=_.replace(/\\/g,"/").replace(/\/+/g,"/");return z.startsWith("/")?z:`/${z}`}function Ve(O){return gt(O).split("/").filter(Boolean)}function Te(O){return{beforeTenantSegments:ze(O?.beforeTenantSegments),afterTenantSegments:ze(O?.afterTenantSegments)}}function yt(O){return{type:"path",ui:Te(O?.ui??Fe),api:Te(O?.api??Ge)}}function ft(O,_){let z=Te(_),Z=z.beforeTenantSegments??[],de=z.afterTenantSegments??[],te=Ve(O),me=Z.length+1+de.length;if(te.length<me)return null;for(let Se=0;Se<Z.length;Se++)if(te[Se]!==Z[Se])return null;let ye=Z.length,ge=te[ye];if(!ge)return null;for(let Se=0;Se<de.length;Se++)if(te[ye+1+Se]!==de[Se])return null;let Ce=te.slice(ye+1+de.length);return{id:decodeURIComponent(ge),restSegments:Ce,restPath:Ce.length>0?`/${Ce.join("/")}`:"/"}}function St(O,_="/",z){let Z=Te(z),de=Z.beforeTenantSegments??[],te=Z.afterTenantSegments??[],me=Ve(_),ye=[...de,encodeURIComponent(O),...te,...me];return ye.length>0?`/${ye.join("/")}`:"/"}function Ct(O){return{"~standard":{version:1,vendor:O,validate:(_)=>{if(typeof _!=="object"||_===null)return{issues:[{message:"Expected an object"}]};let z=_,Z=[],de={...z},te=["iss","sub"];for(let ge of te)if(ge in z){if(typeof z[ge]!=="string")Z.push({message:`${ge} must be a string`,path:[ge]})}else Z.push({message:`${ge} is required`,path:[ge]});if("aud"in z&&z.aud!==void 0){let ge=z.aud;if(typeof ge!=="string"&&!Array.isArray(ge))Z.push({message:"aud must be a string or array of strings",path:["aud"]});else if(Array.isArray(ge)&&!ge.every((Ce)=>typeof Ce==="string"))Z.push({message:"aud array must contain only strings",path:["aud"]})}let me=["jti","scope"];for(let ge of me)if(ge in z&&z[ge]!==void 0){if(typeof z[ge]!=="string")Z.push({message:`${ge} must be a string`,path:[ge]})}let ye=["exp","iat"];for(let ge of ye)if(ge in z){if(typeof z[ge]!=="number")Z.push({message:`${ge} must be a number`,path:[ge]})}else Z.push({message:`${ge} is required`,path:[ge]});if(Z.length>0)return{issues:Z};return{value:de}}}}}function kt(O){return{"~standard":{version:1,vendor:O,validate:(_)=>{if(typeof _!=="object"||_===null)return{issues:[{message:"Expected an object"}]};let z=_,Z=[],de={};if("access_token"in z)if(typeof z.access_token==="string")de.access_token=z.access_token;else Z.push({message:"access_token must be a string",path:["access_token"]});else Z.push({message:"access_token is required",path:["access_token"]});if("token_type"in z)if(typeof z.token_type==="string")de.token_type=z.token_type;else Z.push({message:"token_type must be a string",path:["token_type"]});else Z.push({message:"token_type is required",path:["token_type"]});if("scope"in z)if(typeof z.scope==="string"||z.scope===void 0)de.scope=z.scope;else Z.push({message:"scope must be a string",path:["scope"]});if("refresh_token"in z)if(typeof z.refresh_token==="string"||z.refresh_token===void 0)de.refresh_token=z.refresh_token;else Z.push({message:"refresh_token must be a string",path:["refresh_token"]});if("expires"in z)if(typeof z.expires==="string"||z.expires===void 0)de.expires=z.expires;else Z.push({message:"expires must be a string",path:["expires"]});if("expires_in"in z)if(typeof z.expires_in==="number"||z.expires_in===void 0)de.expires_in=z.expires_in;else Z.push({message:"expires_in must be a number",path:["expires_in"]});if(Z.length>0)return{issues:Z};return{value:de}}}}}function Rt(O){let _=new Uint8Array(O);return crypto.getRandomValues(_),_}function Tt(O){let _="",z=Rt(O);for(let Z=0;Z<O;Z++){let de=z[Z]%32;_+="0123456789ABCDEFGHJKMNPQRSTVWXYZ".charAt(de)}return _}function At(O,_){let z="";for(let Z=_;Z>0;Z--){let de=O%32;z="0123456789ABCDEFGHJKMNPQRSTVWXYZ".charAt(de)+z,O=Math.floor(O/32)}return z}function ht(O){let _=Date.now(),z=At(_,10),Z=Tt(16);return`${O??""}${z}${Z}`}export{V as AssignmentPolicyError,U as CANONICAL_RISK_LEVELS,Ae as ConfigSourceError,u as DEFAULT_RISK_LEVEL,Ne as DEFAULT_SECRET_MIME_TYPES,Ge as DEFAULT_TENANT_API_NAMESPACE,Fe as DEFAULT_TENANT_UI_NAMESPACE,re as ECID_SCHEME,b as EcidFormatError,e as ION_AUTHZ_GROUP_SCHEMA,Ke as ION_AUTHZ_OAA_SYNC,_e as ION_CAPABILITIEZ_READ,ve as ION_CIAM_MAGIC_LINK_CREATE,Ze as ION_ENDPOINT_PERMISSIONS,Oe as ION_IAM_ACCESS_REQUESTS_WRITE,Pe as ION_IAM_CUSTOMERS_WRITE,we as ION_IAM_GROUPS_WRITE,Ee as ION_IAM_READ,Ie as ION_IAM_USERS_WRITE,xe as ION_IAM_WORKLOADS_WRITE,f as ION_SCIM_CUSTOMER_SCHEMA,s as ION_SCIM_USER_EXTENSION_URN,m as ION_SCIM_WORKLOAD_SCHEMA,Ye as ION_SDK_PERMISSIONS,Me as ION_TENANT_MANAGE,G as IoniteError,h as KNOWN_BASE_CUSTOMER_KEYS,y as KNOWN_BASE_USER_KEYS,o as KNOWN_ENTITLEMENT_KEYS,S as KNOWN_WORKLOAD_KEYS,d as PLATFORM_ASSIGNABLE_SUBJECT_TYPES,qe as SecretContentTypeMismatchError,p as StoreConflictError,r as accessRefId,c as accessRootId,k as assertEcid,j as assertRequiredSubjectType,q as assertValidSubjectTypeScoping,St as buildTenantPath,I as catalogEntityStore,P as claimsToUser,X as configTrustedClientGrants,n as customAttributes,W as customerResourceSchema,it as debugLogger,ue as decodeUser,C as deepEqualPlain,st as defaultLogger,dt as defaultSecretContentType,J as defineCatalog,Le as defineSecretType,M as deprecateRetiredCodeCatalogRows,ne as formatEcid,Re as formatLogLine,ht as generateULID,A as getCodeCatalogEntity,pe as groupResourceSchema,l as idTokenClaimsSchema,at as infoLogger,F as isCodeCatalog,B as isConfigLocator,Je as isConfigSourceError,H as isEcid,T as isStoreConflictError,Ct as jwtAssertionClaimsSchema,R as list,i as listGenerator,ft as matchTenantPath,Q as matchesListFilter,v as materializeCodeCatalogEntity,g as mergeCodeCatalogEntity,oe as mergeConfig,t as must,Te as normalizeTenantPathNamespace,yt as normalizeTenantRoutingStrategy,N as oidcCallbackSchema,se as parseEcid,ie as parseJsonc,ot as parseKmsPoolControlDocument,tt as parseKmsPoolDocument,ct as prettyLogger,ut as readyCatalogEntry,lt as remoteConfigSecretType,Xe as serializeConfig,Ue as silentLogger,ae as stableConfigHash,Y as stripJsonComments,ee as toCodeCatalog,L as tokenResponseSchema,w as trimTrailingSlash,E as trustedClientPermissionsForPrincipal,x as unionCatalogRead,le as userSchema,D as validationFailureResponse,He as version,ce as waitOn,pt as warnLogger,a as withValidate,K as workloadResourceSchema,kt as workloadTokenResponseSchema};
|