@ionite/zod 0.0.24-beta.20260907.3 → 0.0.24-beta.20260915.2

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
@@ -242,4 +242,4 @@ declare function createControlValidators(): {
242
242
  iam: IAMAppValidators;
243
243
  sso: SSOAppValidators;
244
244
  };
245
- export { zodValidators, isSafeRedirectUri, createValidators, createControlValidators, ConfigLocatorSchema, BaseUser, BaseTenantUpdateRequestSchema, BaseTenantCreateRequestSchema, BaseTenant, BaseCustomer };
245
+ export { BaseCustomer, BaseTenant, BaseTenantCreateRequestSchema, BaseTenantUpdateRequestSchema, BaseUser, ConfigLocatorSchema, createControlValidators, createValidators, isSafeRedirectUri, zodValidators };
package/dist/index.js CHANGED
@@ -1,474 +1 @@
1
- // packages/zod/src/index.ts
2
- import { ION_SCIM_USER_EXTENSION_URN, isEcid, withValidate } from "@ionite/core";
3
- import { z } from "zod";
4
- function isSafeRedirectUri(value) {
5
- for (let i = 0;i < value.length; i++) {
6
- const code = value.charCodeAt(i);
7
- if (code <= 31 || code === 127)
8
- return false;
9
- }
10
- let url;
11
- try {
12
- url = new URL(value);
13
- } catch {
14
- return false;
15
- }
16
- if (url.protocol === "https:")
17
- return true;
18
- if (url.protocol === "http:") {
19
- const host = url.hostname.toLowerCase();
20
- return host === "localhost" || host === "127.0.0.1" || host === "[::1]" || host === "::1";
21
- }
22
- return false;
23
- }
24
- var SAFE_REDIRECT_URI_MESSAGE = "must be an absolute https URL (http is allowed only for localhost)";
25
- var ECID_MESSAGE = 'must be a valid ECID formatted as "ecid:<realm>:<opaque>"';
26
- var ecidSchema = () => z.string().refine(isEcid, ECID_MESSAGE).optional();
27
- var authzEntityBaseSchema = z.object({
28
- id: z.string(),
29
- name: z.string(),
30
- displayName: z.string().optional(),
31
- description: z.string(),
32
- metadata: z.record(z.string(), z.unknown()).optional()
33
- });
34
- var BaseUser = z.object({
35
- userName: z.string(),
36
- name: z.string(),
37
- email: z.email(),
38
- id: z.string().optional(),
39
- avatar: z.union([z.url(), z.literal("")]).optional(),
40
- userType: z.string().optional(),
41
- ecid: ecidSchema(),
42
- accountClass: z.string().optional()
43
- });
44
- var BaseCustomer = z.object({
45
- userName: z.string(),
46
- name: z.string(),
47
- email: z.email(),
48
- id: z.string().optional(),
49
- avatar: z.union([z.url(), z.literal("")]).optional(),
50
- userType: z.string().optional()
51
- });
52
- var VaultConfigLocatorSchema = z.strictObject({
53
- type: z.literal("vault"),
54
- vaultUrl: z.string().optional(),
55
- vaultPath: z.string(),
56
- vaultTtl: z.number().optional(),
57
- vaultWorkloadTokenUrl: z.string().optional(),
58
- vaultWorkloadClientId: z.string().optional(),
59
- vaultWorkloadScope: z.string().optional(),
60
- vaultLfvServerUrl: z.string().optional(),
61
- vaultLfvClientId: z.string().optional(),
62
- vaultLfvDeliveryEndpoint: z.string().optional(),
63
- vaultLfvVerifyJwks: z.string().optional(),
64
- vaultLfvEventsEndpoint: z.string().optional(),
65
- vaultLfvPath: z.string().optional(),
66
- vaultLfvDeliveryTimeout: z.number().optional(),
67
- vaultLfvRetryInterval: z.number().optional(),
68
- vaultLfvWarnInterval: z.number().optional(),
69
- vaultWebsocketUrl: z.string().optional(),
70
- vaultWebsocketClientId: z.string().optional(),
71
- vaultWebsocketHeader: z.enum(["X-Vault-Token", "Authorization"]).optional()
72
- });
73
- var AwsConfigLocatorSchema = z.strictObject({
74
- type: z.literal("aws"),
75
- awsWebhookUrl: z.string(),
76
- awsTtl: z.number().optional()
77
- });
78
- var AzureConfigLocatorSchema = z.strictObject({
79
- type: z.literal("azure"),
80
- azureAuthMethod: z.enum(["client_secret", "workload_identity", "managed_identity"]).optional(),
81
- azureEntraTenantId: z.string().optional(),
82
- azureClientId: z.string().optional(),
83
- azureManagedIdentityClientId: z.string().optional(),
84
- azureImdsApiVersion: z.string().optional(),
85
- azurePath: z.string().optional(),
86
- azureVaultUrl: z.string().optional(),
87
- azureVaultName: z.string().optional(),
88
- azureApiVersion: z.string().optional(),
89
- azureScope: z.string().optional(),
90
- azureSecretNamePrefix: z.string().optional(),
91
- azureTtl: z.number().optional()
92
- });
93
- var GcpConfigLocatorSchema = z.strictObject({
94
- type: z.literal("gcp"),
95
- gcpTtl: z.number().optional()
96
- });
97
- var DirectConfigLocatorSchema = z.discriminatedUnion("type", [
98
- VaultConfigLocatorSchema,
99
- AwsConfigLocatorSchema,
100
- AzureConfigLocatorSchema,
101
- GcpConfigLocatorSchema
102
- ]);
103
- var ConfigLocatorSchema = z.union([
104
- DirectConfigLocatorSchema,
105
- z.strictObject({
106
- type: z.literal("mirror"),
107
- from: DirectConfigLocatorSchema,
108
- to: VaultConfigLocatorSchema
109
- })
110
- ]);
111
- var BaseTenant = z.object({
112
- id: z.string().min(1),
113
- companyId: z.string(),
114
- companyName: z.string(),
115
- environmentType: z.enum(["POC", "DEV", "QA", "PROD"]),
116
- status: z.enum(["pending", "processing", "completed", "failed", "action_required"]),
117
- createdAt: z.date(),
118
- updatedAt: z.date(),
119
- configLocator: ConfigLocatorSchema.optional(),
120
- email: z.string().optional(),
121
- webhookUrl: z.string().optional(),
122
- callbackUrl: z.string().optional(),
123
- tenantUrl: z.string().optional(),
124
- error: z.string().optional(),
125
- actionUrl: z.string().optional(),
126
- requestToken: z.string().optional(),
127
- expiresAt: z.string().optional()
128
- });
129
- var BaseTenantCreateRequestSchema = z.object({
130
- id: z.string(),
131
- companyId: z.string(),
132
- companyName: z.string(),
133
- environmentType: z.enum(["POC", "DEV", "QA", "PROD"]),
134
- configLocator: ConfigLocatorSchema.optional(),
135
- email: z.email().optional(),
136
- webhookUrl: z.url().optional(),
137
- callbackUrl: z.url().optional()
138
- });
139
- var BaseTenantUpdateRequestSchema = z.object({
140
- id: z.string().optional(),
141
- companyId: z.string().optional(),
142
- companyName: z.string().optional(),
143
- environmentType: z.enum(["POC", "DEV", "QA", "PROD"]).optional(),
144
- configLocator: ConfigLocatorSchema.optional(),
145
- email: z.email().optional(),
146
- webhookUrl: z.url().optional(),
147
- callbackUrl: z.url().optional()
148
- });
149
- var zodValidators = {
150
- authzEntityBase: () => withValidate(authzEntityBaseSchema),
151
- authzResource: () => {
152
- const resourceSchema = authzEntityBaseSchema.extend({
153
- type: z.string(),
154
- parent: z.lazy(() => z.union([z.string(), resourceSchema])).optional()
155
- });
156
- return withValidate(resourceSchema);
157
- },
158
- authzPermission: () => {
159
- const permissionSchema = authzEntityBaseSchema.extend({
160
- requestable: z.boolean().optional(),
161
- action: z.string().optional(),
162
- permissionTypes: z.array(z.string()).optional(),
163
- resourceTypes: z.array(z.string()).optional(),
164
- applyToSubResources: z.boolean().optional(),
165
- assignableSubjectTypes: z.array(z.enum(["user", "customer", "workload"])).min(1),
166
- recommendedSubjectTypes: z.array(z.enum(["user", "customer", "workload"])).optional()
167
- });
168
- return withValidate(permissionSchema);
169
- },
170
- authzRole: () => {
171
- const permissionSchema = zodValidators.authzPermission();
172
- const roleSchema = authzEntityBaseSchema.extend({
173
- requestable: z.boolean().optional(),
174
- roles: z.array(z.union([z.string(), z.lazy(() => roleSchema)])).optional(),
175
- permissions: z.array(z.union([z.string(), permissionSchema])).optional(),
176
- assignableSubjectTypes: z.array(z.enum(["user", "customer", "workload"])).min(1),
177
- recommendedSubjectTypes: z.array(z.enum(["user", "customer", "workload"])).optional()
178
- });
179
- return withValidate(roleSchema);
180
- },
181
- authzGroup: () => {
182
- const roleSchema = zodValidators.authzRole();
183
- const permissionSchema = zodValidators.authzPermission();
184
- const resourceSchema = zodValidators.authzResource();
185
- const groupSchema = authzEntityBaseSchema.extend({
186
- requestable: z.boolean().optional(),
187
- groups: z.array(z.union([z.string(), z.lazy(() => groupSchema)])).optional(),
188
- roles: z.array(z.union([z.string(), roleSchema])).optional(),
189
- permissions: z.array(z.union([z.string(), permissionSchema])).optional(),
190
- resources: z.array(z.union([z.string(), resourceSchema])).optional(),
191
- assignableSubjectTypes: z.array(z.enum(["user", "customer", "workload"])).min(1),
192
- recommendedSubjectTypes: z.array(z.enum(["user", "customer", "workload"])).optional()
193
- });
194
- return withValidate(groupSchema);
195
- },
196
- oidcCallbackParams: () => z.object({
197
- code: z.string(),
198
- state: z.string().optional(),
199
- session_state: z.string().optional(),
200
- error: z.string().optional(),
201
- error_description: z.string().optional(),
202
- error_uri: z.string().optional(),
203
- iss: z.string().optional()
204
- }),
205
- idTokenClaims: () => z.object({
206
- sub: z.string(),
207
- iss: z.string(),
208
- aud: z.union([z.string(), z.array(z.string()).nonempty()]),
209
- exp: z.number(),
210
- iat: z.number().optional(),
211
- sid: z.string().optional(),
212
- name: z.string().optional(),
213
- email: z.union([z.email(), z.string().regex(/^[^@]+@localhost$/i)]).optional(),
214
- preferred_username: z.string().optional(),
215
- picture: z.url().optional()
216
- }).passthrough(),
217
- tokenResponse: () => z.object({
218
- access_token: z.string(),
219
- id_token: z.string(),
220
- refresh_token: z.string().optional(),
221
- token_type: z.string(),
222
- expires_in: z.number().optional(),
223
- scope: z.string().optional(),
224
- refresh_expires_in: z.number().optional(),
225
- session_state: z.string().optional(),
226
- expires: z.string().optional()
227
- }),
228
- scimUser: () => {
229
- const nameSchema = z.object({
230
- formatted: z.string().optional(),
231
- familyName: z.string().optional(),
232
- givenName: z.string().optional(),
233
- middleName: z.string().optional(),
234
- honorificPrefix: z.string().optional(),
235
- honorificSuffix: z.string().optional()
236
- });
237
- const emailSchema = z.object({
238
- value: z.email(),
239
- display: z.string().optional(),
240
- type: z.string().optional(),
241
- primary: z.boolean().optional()
242
- });
243
- const phoneNumberSchema = z.object({
244
- value: z.string(),
245
- display: z.string().optional(),
246
- type: z.string().optional(),
247
- primary: z.boolean().optional()
248
- });
249
- const addressSchema = z.object({
250
- formatted: z.string().optional(),
251
- streetAddress: z.string().optional(),
252
- locality: z.string().optional(),
253
- region: z.string().optional(),
254
- postalCode: z.string().optional(),
255
- country: z.string().optional(),
256
- type: z.string().optional(),
257
- primary: z.boolean().optional()
258
- });
259
- const groupSchema = z.object({
260
- value: z.string(),
261
- $ref: z.string().optional(),
262
- display: z.string().optional(),
263
- type: z.string().optional()
264
- });
265
- const roleSchema = z.object({
266
- value: z.string(),
267
- display: z.string().optional(),
268
- type: z.string().optional(),
269
- primary: z.boolean().optional()
270
- });
271
- const enterpriseUserSchema = z.object({
272
- employeeNumber: z.string().optional(),
273
- costCenter: z.string().optional(),
274
- organization: z.string().optional(),
275
- division: z.string().optional(),
276
- department: z.string().optional(),
277
- manager: z.object({
278
- value: z.string().optional(),
279
- $ref: z.string().optional(),
280
- displayName: z.string().optional()
281
- }).optional()
282
- });
283
- return z.object({
284
- id: z.string().optional(),
285
- externalId: z.string().optional(),
286
- meta: z.object({
287
- resourceType: z.string().optional(),
288
- created: z.string().optional(),
289
- lastModified: z.string().optional(),
290
- location: z.string().optional(),
291
- version: z.string().optional()
292
- }).optional(),
293
- userName: z.string(),
294
- name: nameSchema.optional(),
295
- displayName: z.string().optional(),
296
- nickName: z.string().optional(),
297
- profileUrl: z.url().optional(),
298
- title: z.string().optional(),
299
- userType: z.string().optional(),
300
- preferredLanguage: z.string().optional(),
301
- locale: z.string().optional(),
302
- timezone: z.string().optional(),
303
- active: z.boolean().optional(),
304
- password: z.never().optional(),
305
- emails: z.array(emailSchema).optional(),
306
- phoneNumbers: z.array(phoneNumberSchema).optional(),
307
- ims: z.array(z.object({
308
- value: z.string(),
309
- display: z.string().optional(),
310
- type: z.string().optional(),
311
- primary: z.boolean().optional()
312
- })).optional(),
313
- photos: z.array(z.object({
314
- value: z.string(),
315
- display: z.string().optional(),
316
- type: z.string().optional(),
317
- primary: z.boolean().optional()
318
- })).optional(),
319
- addresses: z.array(addressSchema).optional(),
320
- groups: z.array(groupSchema).optional(),
321
- entitlements: z.array(z.object({
322
- value: z.string(),
323
- display: z.string().optional(),
324
- type: z.string().optional(),
325
- primary: z.boolean().optional()
326
- })).optional(),
327
- roles: z.array(roleSchema).optional(),
328
- x509Certificates: z.array(z.object({
329
- value: z.string(),
330
- display: z.string().optional(),
331
- type: z.string().optional(),
332
- primary: z.boolean().optional()
333
- })).optional(),
334
- "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": enterpriseUserSchema.optional(),
335
- [ION_SCIM_USER_EXTENSION_URN]: z.object({
336
- ecid: ecidSchema(),
337
- accountClass: z.string().optional()
338
- }).optional(),
339
- schemas: z.array(z.string()).optional()
340
- });
341
- },
342
- scimGroup: () => {
343
- const groupMemberSchema = z.object({
344
- value: z.string(),
345
- $ref: z.string().optional(),
346
- display: z.string().optional(),
347
- type: z.enum(["User", "Group", "Workload", "Customer"]).optional()
348
- });
349
- return z.object({
350
- id: z.string().optional(),
351
- externalId: z.string().optional(),
352
- meta: z.object({
353
- resourceType: z.string().optional(),
354
- created: z.string().optional(),
355
- lastModified: z.string().optional(),
356
- location: z.string().optional(),
357
- version: z.string().optional()
358
- }).optional(),
359
- displayName: z.string(),
360
- members: z.array(groupMemberSchema).optional(),
361
- "urn:ionite:params:scim:schemas:extension:authz:2.0:Group": z.object({
362
- type: z.enum(["group", "role", "permission"]).optional(),
363
- requestable: z.boolean().optional(),
364
- description: z.string().optional(),
365
- resources: z.array(z.string()).optional()
366
- }).optional(),
367
- schemas: z.array(z.string()).optional()
368
- });
369
- },
370
- jwtAssertionClaims: () => z.object({
371
- iss: z.string(),
372
- sub: z.string(),
373
- aud: z.union([z.string(), z.array(z.string())]).optional(),
374
- exp: z.number(),
375
- iat: z.number(),
376
- jti: z.string().optional(),
377
- scope: z.string().optional()
378
- }).passthrough(),
379
- workloadTokenResponse: () => z.object({
380
- access_token: z.string(),
381
- token_type: z.string(),
382
- expires_in: z.number().optional(),
383
- scope: z.string().optional(),
384
- refresh_token: z.string().optional(),
385
- expires: z.string().optional()
386
- }),
387
- baseUser: () => BaseUser,
388
- customer: () => BaseCustomer,
389
- createTenantRequest: (extendedShape) => extendedShape ? BaseTenantCreateRequestSchema.extend(extendedShape) : BaseTenantCreateRequestSchema,
390
- updateTenantRequest: (extendedShape) => extendedShape ? BaseTenantUpdateRequestSchema.extend(extendedShape) : BaseTenantUpdateRequestSchema,
391
- tenantResponse: () => z.union([
392
- z.object({
393
- tenantUrl: z.url().optional(),
394
- status: z.enum(["pending", "processing", "completed", "failed"]),
395
- error: z.string().optional()
396
- }),
397
- z.object({
398
- status: z.literal("action_required"),
399
- actionUrl: z.url(),
400
- requestToken: z.string(),
401
- expiresAt: z.string()
402
- })
403
- ]),
404
- registerIAMAppPayload: () => z.object({
405
- id: z.string().min(1),
406
- companyId: z.string().min(1),
407
- companyName: z.string().min(1),
408
- environmentType: z.enum(["POC", "DEV", "QA", "PROD"]),
409
- tenantUrl: z.url().optional(),
410
- displayName: z.string().optional(),
411
- productId: z.string().optional(),
412
- applicationId: z.string().optional(),
413
- scimBaseUrl: z.url().optional(),
414
- workload: z.record(z.string(), z.unknown()).optional()
415
- }),
416
- registerSSOAppPayload: () => z.object({
417
- redirectUris: z.array(z.string().refine(isSafeRedirectUri, { message: `redirectUri ${SAFE_REDIRECT_URI_MESSAGE}` })).min(1),
418
- backchannelLogoutUri: z.string().refine(isSafeRedirectUri, { message: `backchannelLogoutUri ${SAFE_REDIRECT_URI_MESSAGE}` }).optional(),
419
- displayName: z.string().optional(),
420
- defaultScope: z.string().optional(),
421
- issuerTenant: z.string().optional(),
422
- applicationId: z.string().optional()
423
- })
424
- };
425
- function createValidators() {
426
- return {
427
- sso: {
428
- callbackParams: withValidate(zodValidators.oidcCallbackParams()),
429
- idTokenClaims: withValidate(zodValidators.idTokenClaims()),
430
- tokenResponse: withValidate(zodValidators.tokenResponse())
431
- },
432
- iam: {
433
- user: withValidate(zodValidators.scimUser()),
434
- group: withValidate(zodValidators.scimGroup())
435
- },
436
- workload: {
437
- jwtAssertionClaims: withValidate(zodValidators.jwtAssertionClaims()),
438
- tokenResponse: withValidate(zodValidators.workloadTokenResponse())
439
- },
440
- tenant: {
441
- createTenantRequest: withValidate(zodValidators.createTenantRequest()),
442
- updateTenantRequest: withValidate(zodValidators.updateTenantRequest()),
443
- tenantResponse: withValidate(zodValidators.tenantResponse())
444
- },
445
- ciam: {
446
- customer: withValidate(zodValidators.customer()),
447
- callbackParams: withValidate(zodValidators.oidcCallbackParams()),
448
- idTokenClaims: withValidate(zodValidators.idTokenClaims()),
449
- tokenResponse: withValidate(zodValidators.tokenResponse())
450
- }
451
- };
452
- }
453
- function createControlValidators() {
454
- return {
455
- iam: {
456
- registerIAMAppPayload: withValidate(zodValidators.registerIAMAppPayload())
457
- },
458
- sso: {
459
- registerSSOAppPayload: withValidate(zodValidators.registerSSOAppPayload())
460
- }
461
- };
462
- }
463
- export {
464
- zodValidators,
465
- isSafeRedirectUri,
466
- createValidators,
467
- createControlValidators,
468
- ConfigLocatorSchema,
469
- BaseUser,
470
- BaseTenantUpdateRequestSchema,
471
- BaseTenantCreateRequestSchema,
472
- BaseTenant,
473
- BaseCustomer
474
- };
1
+ import{ION_SCIM_USER_EXTENSION_URN as z,isEcid as b,withValidate as n}from"@ionite/core";import{z as o}from"zod";function l(e){for(let a=0;a<e.length;a++){let r=e.charCodeAt(a);if(r<=31||r===127)return!1}let i;try{i=new URL(e)}catch{return!1}if(i.protocol==="https:")return!0;if(i.protocol==="http:"){let a=i.hostname.toLowerCase();return a==="localhost"||a==="127.0.0.1"||a==="[::1]"||a==="::1"}return!1}var c="must be an absolute https URL (http is allowed only for localhost)",k='must be a valid ECID formatted as "ecid:<realm>:<opaque>"',g=()=>o.string().refine(b,k).optional(),s=o.object({id:o.string(),name:o.string(),displayName:o.string().optional(),description:o.string(),metadata:o.record(o.string(),o.unknown()).optional()}),Z=o.object({userName:o.string(),name:o.string(),email:o.email(),id:o.string().optional(),avatar:o.union([o.url(),o.literal("")]).optional(),userType:o.string().optional(),ecid:g(),accountClass:o.string().optional()}),R=o.object({userName:o.string(),name:o.string(),email:o.email(),id:o.string().optional(),avatar:o.union([o.url(),o.literal("")]).optional(),userType:o.string().optional()}),y=o.strictObject({type:o.literal("vault"),vaultUrl:o.string().optional(),vaultPath:o.string(),vaultTtl:o.number().optional(),vaultWorkloadTokenUrl:o.string().optional(),vaultWorkloadClientId:o.string().optional(),vaultWorkloadScope:o.string().optional(),vaultLfvServerUrl:o.string().optional(),vaultLfvClientId:o.string().optional(),vaultLfvDeliveryEndpoint:o.string().optional(),vaultLfvVerifyJwks:o.string().optional(),vaultLfvEventsEndpoint:o.string().optional(),vaultLfvPath:o.string().optional(),vaultLfvDeliveryTimeout:o.number().optional(),vaultLfvRetryInterval:o.number().optional(),vaultLfvWarnInterval:o.number().optional(),vaultWebsocketUrl:o.string().optional(),vaultWebsocketClientId:o.string().optional(),vaultWebsocketHeader:o.enum(["X-Vault-Token","Authorization"]).optional()}),w=o.strictObject({type:o.literal("aws"),awsWebhookUrl:o.string(),awsTtl:o.number().optional()}),f=o.strictObject({type:o.literal("azure"),azureAuthMethod:o.enum(["client_secret","workload_identity","managed_identity"]).optional(),azureEntraTenantId:o.string().optional(),azureClientId:o.string().optional(),azureManagedIdentityClientId:o.string().optional(),azureImdsApiVersion:o.string().optional(),azurePath:o.string().optional(),azureVaultUrl:o.string().optional(),azureVaultName:o.string().optional(),azureApiVersion:o.string().optional(),azureScope:o.string().optional(),azureSecretNamePrefix:o.string().optional(),azureTtl:o.number().optional()}),C=o.strictObject({type:o.literal("gcp"),gcpTtl:o.number().optional()}),d=o.discriminatedUnion("type",[y,w,f,C]),p=o.union([d,o.strictObject({type:o.literal("mirror"),from:d,to:y})]),O=o.object({id:o.string().min(1),companyId:o.string(),companyName:o.string(),environmentType:o.enum(["POC","DEV","QA","PROD"]),status:o.enum(["pending","processing","completed","failed","action_required"]),createdAt:o.date(),updatedAt:o.date(),configLocator:p.optional(),email:o.string().optional(),webhookUrl:o.string().optional(),callbackUrl:o.string().optional(),tenantUrl:o.string().optional(),error:o.string().optional(),actionUrl:o.string().optional(),requestToken:o.string().optional(),expiresAt:o.string().optional()}),u=o.object({id:o.string(),companyId:o.string(),companyName:o.string(),environmentType:o.enum(["POC","DEV","QA","PROD"]),configLocator:p.optional(),email:o.email().optional(),webhookUrl:o.url().optional(),callbackUrl:o.url().optional()}),m=o.object({id:o.string().optional(),companyId:o.string().optional(),companyName:o.string().optional(),environmentType:o.enum(["POC","DEV","QA","PROD"]).optional(),configLocator:p.optional(),email:o.email().optional(),webhookUrl:o.url().optional(),callbackUrl:o.url().optional()}),t={authzEntityBase:()=>n(s),authzResource:()=>{let e=s.extend({type:o.string(),parent:o.lazy(()=>o.union([o.string(),e])).optional()});return n(e)},authzPermission:()=>{let e=s.extend({requestable:o.boolean().optional(),riskLevel:o.string().optional(),action:o.string().optional(),permissionTypes:o.array(o.string()).optional(),resourceTypes:o.array(o.string()).optional(),applyToSubResources:o.boolean().optional(),assignableSubjectTypes:o.array(o.enum(["user","customer","workload"])).min(1),recommendedSubjectTypes:o.array(o.enum(["user","customer","workload"])).optional()});return n(e)},authzRole:()=>{let e=t.authzPermission(),i=s.extend({requestable:o.boolean().optional(),riskLevel:o.string().optional(),roles:o.array(o.union([o.string(),o.lazy(()=>i)])).optional(),permissions:o.array(o.union([o.string(),e])).optional(),assignableSubjectTypes:o.array(o.enum(["user","customer","workload"])).min(1),recommendedSubjectTypes:o.array(o.enum(["user","customer","workload"])).optional()});return n(i)},authzGroup:()=>{let e=t.authzRole(),i=t.authzPermission(),a=t.authzResource(),r=s.extend({requestable:o.boolean().optional(),riskLevel:o.string().optional(),groups:o.array(o.union([o.string(),o.lazy(()=>r)])).optional(),roles:o.array(o.union([o.string(),e])).optional(),permissions:o.array(o.union([o.string(),i])).optional(),resources:o.array(o.union([o.string(),a])).optional(),assignableSubjectTypes:o.array(o.enum(["user","customer","workload"])).min(1),recommendedSubjectTypes:o.array(o.enum(["user","customer","workload"])).optional()});return n(r)},oidcCallbackParams:()=>o.object({code:o.string(),state:o.string().optional(),session_state:o.string().optional(),error:o.string().optional(),error_description:o.string().optional(),error_uri:o.string().optional(),iss:o.string().optional()}),idTokenClaims:()=>o.object({sub:o.string(),iss:o.string(),aud:o.union([o.string(),o.array(o.string()).nonempty()]),exp:o.number(),iat:o.number().optional(),sid:o.string().optional(),name:o.string().optional(),email:o.union([o.email(),o.string().regex(/^[^@]+@localhost$/i)]).optional(),preferred_username:o.string().optional(),picture:o.url().optional()}).passthrough(),tokenResponse:()=>o.object({access_token:o.string(),id_token:o.string(),refresh_token:o.string().optional(),token_type:o.string(),expires_in:o.number().optional(),scope:o.string().optional(),refresh_expires_in:o.number().optional(),session_state:o.string().optional(),expires:o.string().optional()}),scimUser:()=>{let e=o.object({formatted:o.string().optional(),familyName:o.string().optional(),givenName:o.string().optional(),middleName:o.string().optional(),honorificPrefix:o.string().optional(),honorificSuffix:o.string().optional()}),i=o.object({value:o.email(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()}),a=o.object({value:o.string(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()}),r=o.object({formatted:o.string().optional(),streetAddress:o.string().optional(),locality:o.string().optional(),region:o.string().optional(),postalCode:o.string().optional(),country:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()}),S=o.object({value:o.string(),$ref:o.string().optional(),display:o.string().optional(),type:o.string().optional()}),T=o.object({value:o.string(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()}),h=o.object({employeeNumber:o.string().optional(),costCenter:o.string().optional(),organization:o.string().optional(),division:o.string().optional(),department:o.string().optional(),manager:o.object({value:o.string().optional(),$ref:o.string().optional(),displayName:o.string().optional()}).optional()});return o.object({id:o.string().optional(),externalId:o.string().optional(),meta:o.object({resourceType:o.string().optional(),created:o.string().optional(),lastModified:o.string().optional(),location:o.string().optional(),version:o.string().optional()}).optional(),userName:o.string(),name:e.optional(),displayName:o.string().optional(),nickName:o.string().optional(),profileUrl:o.url().optional(),title:o.string().optional(),userType:o.string().optional(),preferredLanguage:o.string().optional(),locale:o.string().optional(),timezone:o.string().optional(),active:o.boolean().optional(),password:o.never().optional(),emails:o.array(i).optional(),phoneNumbers:o.array(a).optional(),ims:o.array(o.object({value:o.string(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()})).optional(),photos:o.array(o.object({value:o.string(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()})).optional(),addresses:o.array(r).optional(),groups:o.array(S).optional(),entitlements:o.array(o.object({value:o.string(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()})).optional(),roles:o.array(T).optional(),x509Certificates:o.array(o.object({value:o.string(),display:o.string().optional(),type:o.string().optional(),primary:o.boolean().optional()})).optional(),"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":h.optional(),[z]:o.object({ecid:g(),accountClass:o.string().optional()}).optional(),schemas:o.array(o.string()).optional()})},scimGroup:()=>{let e=o.object({value:o.string(),$ref:o.string().optional(),display:o.string().optional(),type:o.enum(["User","Group","Workload","Customer"]).optional()});return o.object({id:o.string().optional(),externalId:o.string().optional(),meta:o.object({resourceType:o.string().optional(),created:o.string().optional(),lastModified:o.string().optional(),location:o.string().optional(),version:o.string().optional()}).optional(),displayName:o.string(),members:o.array(e).optional(),"urn:ionite:params:scim:schemas:extension:authz:2.0:Group":o.object({type:o.enum(["group","role","permission"]).optional(),requestable:o.boolean().optional(),description:o.string().optional(),resources:o.array(o.string()).optional()}).optional(),schemas:o.array(o.string()).optional()})},jwtAssertionClaims:()=>o.object({iss:o.string(),sub:o.string(),aud:o.union([o.string(),o.array(o.string())]).optional(),exp:o.number(),iat:o.number(),jti:o.string().optional(),scope:o.string().optional()}).passthrough(),workloadTokenResponse:()=>o.object({access_token:o.string(),token_type:o.string(),expires_in:o.number().optional(),scope:o.string().optional(),refresh_token:o.string().optional(),expires:o.string().optional()}),baseUser:()=>Z,customer:()=>R,createTenantRequest:(e)=>e?u.extend(e):u,updateTenantRequest:(e)=>e?m.extend(e):m,tenantResponse:()=>o.union([o.object({tenantUrl:o.url().optional(),status:o.enum(["pending","processing","completed","failed"]),error:o.string().optional()}),o.object({status:o.literal("action_required"),actionUrl:o.url(),requestToken:o.string(),expiresAt:o.string()})]),registerIAMAppPayload:()=>o.object({id:o.string().min(1),companyId:o.string().min(1),companyName:o.string().min(1),environmentType:o.enum(["POC","DEV","QA","PROD"]),tenantUrl:o.url().optional(),displayName:o.string().optional(),productId:o.string().optional(),applicationId:o.string().optional(),scimBaseUrl:o.url().optional(),workload:o.record(o.string(),o.unknown()).optional()}),registerSSOAppPayload:()=>o.object({redirectUris:o.array(o.string().refine(l,{message:`redirectUri ${c}`})).min(1),backchannelLogoutUri:o.string().refine(l,{message:`backchannelLogoutUri ${c}`}).optional(),displayName:o.string().optional(),defaultScope:o.string().optional(),issuerTenant:o.string().optional(),applicationId:o.string().optional()})};function j(){return{sso:{callbackParams:n(t.oidcCallbackParams()),idTokenClaims:n(t.idTokenClaims()),tokenResponse:n(t.tokenResponse())},iam:{user:n(t.scimUser()),group:n(t.scimGroup())},workload:{jwtAssertionClaims:n(t.jwtAssertionClaims()),tokenResponse:n(t.workloadTokenResponse())},tenant:{createTenantRequest:n(t.createTenantRequest()),updateTenantRequest:n(t.updateTenantRequest()),tenantResponse:n(t.tenantResponse())},ciam:{customer:n(t.customer()),callbackParams:n(t.oidcCallbackParams()),idTokenClaims:n(t.idTokenClaims()),tokenResponse:n(t.tokenResponse())}}}function A(){return{iam:{registerIAMAppPayload:n(t.registerIAMAppPayload())},sso:{registerSSOAppPayload:n(t.registerSSOAppPayload())}}}export{R as BaseCustomer,O as BaseTenant,u as BaseTenantCreateRequestSchema,m as BaseTenantUpdateRequestSchema,Z as BaseUser,p as ConfigLocatorSchema,A as createControlValidators,j as createValidators,l as isSafeRedirectUri,t as zodValidators};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionite/zod",
3
- "version": "0.0.24-beta.20260907.3",
3
+ "version": "0.0.24-beta.20260915.2",
4
4
  "description": "Zod validators for ionite (SSO, IAM, workload, tenant, CIAM)",
5
5
  "type": "module",
6
6
  "engines": {
@@ -9,7 +9,7 @@
9
9
  "author": "ionite",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
- "@ionite/core": "0.0.24-beta.20260907.3",
12
+ "@ionite/core": "0.0.24-beta.20260915.2",
13
13
  "@standard-schema/spec": "^1.1.0",
14
14
  "zod": "^4.4.3"
15
15
  },