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