@ionite/valibot 0.0.21
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 +207 -0
- package/dist/index.js +1 -0
- package/package.json +34 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { ApplicationValidators, AuthzEntityBase as AuthzEntityBaseType, Group as AuthzGroupType, BaseCustomer as BaseCustomerType, BaseTenant as BaseTenantType, BaseUser as BaseUserType, CreateTenantRequest, GroupResource, IAMAppValidators, IdTokenClaims, JWTAssertionClaims, OidcCallbackParams, Permission as PermissionType, RegisterIAMAppPayload, RegisterSSOAppPayload, Resource as ResourceType, Role as RoleType, ScimUser, SSOAppValidators, TenantResponse, TokenResponse, UpdateTenantRequest, WorkloadTokenResponse } from "@ionite/core";
|
|
2
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
/**
|
|
5
|
+
* Registration-time redirect-URI safety (AUDIT_HISTORY.md §10.2). An SSO `redirectUri` (or back-channel logout
|
|
6
|
+
* URI) registered with an EC MUST be an absolute web URL: `https:` anywhere, `http:` only for
|
|
7
|
+
* loopback (localhost dev). Non-web schemes (`javascript:`, `data:`, `file:`, …) and control-char
|
|
8
|
+
* smuggling (`java\nscript:`) are rejected so a malicious URI can never enter EC registration and
|
|
9
|
+
* later be reflected as an open-redirect / XSS sink. Kept in lock-step with the zod package.
|
|
10
|
+
*/
|
|
11
|
+
declare function isSafeRedirectUri(value: string): boolean;
|
|
12
|
+
declare const BaseUser: StandardSchemaV1<unknown, BaseUserType>;
|
|
13
|
+
/**
|
|
14
|
+
* Extend-base schema for CIAM customers (magic link request body). Mirrors
|
|
15
|
+
* `BaseUser` but binds to the `BaseCustomer` record type.
|
|
16
|
+
*/
|
|
17
|
+
declare const BaseCustomer: StandardSchemaV1<unknown, BaseCustomerType>;
|
|
18
|
+
/**
|
|
19
|
+
* Narrow tenant config-locator schema (`{ source?, path, ttl? }`). Exported under the same name as
|
|
20
|
+
* the zod package's `TenantConfigLocatorSchema` for cross-package parity (AUDIT_HISTORY.md §12.3). Tenants store
|
|
21
|
+
* a pointer that resolves against secrets sources declared on the root ES; it carries no connection
|
|
22
|
+
* details or credentials.
|
|
23
|
+
*/
|
|
24
|
+
declare const TenantConfigLocatorSchema: unknown;
|
|
25
|
+
declare const BaseTenant: StandardSchemaV1<unknown, BaseTenantType>;
|
|
26
|
+
/**
|
|
27
|
+
* Base tenant create-request shape (`POST`). Kept as a `v.object` (not cast) so `createTenantRequest`
|
|
28
|
+
* can read its `.entries` to build an extended schema.
|
|
29
|
+
*/
|
|
30
|
+
declare const BaseTenantCreateRequestSchema: unknown;
|
|
31
|
+
/**
|
|
32
|
+
* Base tenant update-request shape (`PUT`). Every field is optional; omitted fields are preserved
|
|
33
|
+
* from the stored record.
|
|
34
|
+
*/
|
|
35
|
+
declare const BaseTenantUpdateRequestSchema: unknown;
|
|
36
|
+
/**
|
|
37
|
+
* Individual Valibot schema factories for custom usage
|
|
38
|
+
*/
|
|
39
|
+
declare const valibotValidators: {
|
|
40
|
+
authzEntityBase: () => StandardSchemaV1<unknown, AuthzEntityBaseType>;
|
|
41
|
+
authzResource: () => StandardSchemaV1<unknown, ResourceType>;
|
|
42
|
+
authzPermission: () => StandardSchemaV1<unknown, PermissionType>;
|
|
43
|
+
authzRole: () => StandardSchemaV1<unknown, RoleType>;
|
|
44
|
+
authzGroup: () => StandardSchemaV1<unknown, AuthzGroupType>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a Valibot validator for OIDC callback parameters
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
51
|
+
*
|
|
52
|
+
* const callbackParams = valibotValidators.oidcCallbackParams();
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
oidcCallbackParams: () => StandardSchemaV1<unknown, OidcCallbackParams>;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a Valibot validator for ID token claims
|
|
58
|
+
* Use v.object() with looseObject to extend with custom claims
|
|
59
|
+
*
|
|
60
|
+
* @example Extending with custom claims
|
|
61
|
+
* ```typescript
|
|
62
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
63
|
+
* import * as v from 'valibot';
|
|
64
|
+
*
|
|
65
|
+
* const customClaimsSchema = v.looseObject({
|
|
66
|
+
* ...(valibotValidators.idTokenClaims() as any).entries,
|
|
67
|
+
* custom_claim: v.string(),
|
|
68
|
+
* roles: v.array(v.string()),
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
idTokenClaims: () => StandardSchemaV1<unknown, IdTokenClaims>;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a Valibot validator for token responses from IdP
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
79
|
+
*
|
|
80
|
+
* const tokenResponse = valibotValidators.tokenResponse();
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
tokenResponse: () => StandardSchemaV1<unknown, TokenResponse>;
|
|
84
|
+
/**
|
|
85
|
+
* Creates a Valibot validator for SCIM User resources
|
|
86
|
+
* Use v.object() to extend with custom SCIM extensions
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
91
|
+
*
|
|
92
|
+
* const userValidator = valibotValidators.scimUser();
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @example Extending with custom SCIM schema extensions
|
|
96
|
+
* ```typescript
|
|
97
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
98
|
+
* import * as v from 'valibot';
|
|
99
|
+
*
|
|
100
|
+
* const customUserSchema = v.object({
|
|
101
|
+
* ...(valibotValidators.scimUser() as any).entries,
|
|
102
|
+
* 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': v.object({
|
|
103
|
+
* customField: v.string(),
|
|
104
|
+
* }),
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
scimUser: () => StandardSchemaV1<unknown, ScimUser>;
|
|
109
|
+
/**
|
|
110
|
+
* Creates a Valibot validator for SCIM Group resources
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
115
|
+
*
|
|
116
|
+
* const groupValidator = valibotValidators.scimGroup();
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
scimGroup: () => StandardSchemaV1<unknown, GroupResource>;
|
|
120
|
+
/**
|
|
121
|
+
* Creates a Valibot validator for JWT Assertion Claims (workload identity)
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
126
|
+
*
|
|
127
|
+
* const jwtClaims = valibotValidators.jwtAssertionClaims();
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
jwtAssertionClaims: () => StandardSchemaV1<unknown, JWTAssertionClaims>;
|
|
131
|
+
/**
|
|
132
|
+
* Creates a Valibot validator for workload token responses
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
137
|
+
*
|
|
138
|
+
* const workloadToken = valibotValidators.workloadTokenResponse();
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
workloadTokenResponse: () => StandardSchemaV1<unknown, WorkloadTokenResponse>;
|
|
142
|
+
/**
|
|
143
|
+
* Creates a Valibot validator for tenant creation requests (`POST`).
|
|
144
|
+
* Use `extendedShape` to add app-specific attributes to the request body.
|
|
145
|
+
*/
|
|
146
|
+
createTenantRequest: <TExtendedShape extends v.ObjectEntries = Record<never, v.GenericSchema>>(extendedShape?: TExtendedShape) => StandardSchemaV1<unknown, CreateTenantRequest<v.InferOutput<v.ObjectSchema<TExtendedShape, undefined>>>>;
|
|
147
|
+
/**
|
|
148
|
+
* Creates a Valibot validator for tenant update requests (`PUT`). Every field is optional.
|
|
149
|
+
*/
|
|
150
|
+
updateTenantRequest: <TExtendedShape extends v.ObjectEntries = Record<never, v.GenericSchema>>(extendedShape?: TExtendedShape) => StandardSchemaV1<unknown, UpdateTenantRequest<v.InferOutput<v.ObjectSchema<TExtendedShape, undefined>>>>;
|
|
151
|
+
/**
|
|
152
|
+
* Creates a Valibot validator for BaseUser (workforce user extend-base).
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
157
|
+
*
|
|
158
|
+
* const baseUser = valibotValidators.baseUser();
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
baseUser: () => StandardSchemaV1<unknown, BaseUserType>;
|
|
162
|
+
/**
|
|
163
|
+
* Creates a Valibot validator for BaseCustomer (CIAM magic link request body).
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* import { valibotValidators } from '@ionite/valibot';
|
|
168
|
+
*
|
|
169
|
+
* const customer = valibotValidators.customer();
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
customer: () => StandardSchemaV1<unknown, BaseCustomerType>;
|
|
173
|
+
/**
|
|
174
|
+
* Creates a Valibot validator for tenant management responses.
|
|
175
|
+
*/
|
|
176
|
+
tenantResponse: () => StandardSchemaV1<unknown, TenantResponse>;
|
|
177
|
+
registerIAMAppPayload: () => StandardSchemaV1<unknown, RegisterIAMAppPayload>;
|
|
178
|
+
registerSSOAppPayload: () => StandardSchemaV1<unknown, RegisterSSOAppPayload>;
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Pre-built Valibot validators for ionite
|
|
182
|
+
*
|
|
183
|
+
* These validators implement the StandardSchemaV1 interface and can be used
|
|
184
|
+
* directly in ionite configuration
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* import { createValidators } from '@ionite/valibot';
|
|
189
|
+
*
|
|
190
|
+
* const validators = createValidators();
|
|
191
|
+
*
|
|
192
|
+
* const ion = ionite(configSource, {
|
|
193
|
+
* validators,
|
|
194
|
+
* // ... other config
|
|
195
|
+
* });
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
declare function createValidators(): ApplicationValidators;
|
|
199
|
+
/**
|
|
200
|
+
* EC registration validators for IAM and SSO app registration handlers.
|
|
201
|
+
* Use with your EC's local registration handlers.
|
|
202
|
+
*/
|
|
203
|
+
declare function createControlValidators(): {
|
|
204
|
+
iam: IAMAppValidators;
|
|
205
|
+
sso: SSOAppValidators;
|
|
206
|
+
};
|
|
207
|
+
export { valibotValidators, isSafeRedirectUri, createValidators, createControlValidators, TenantConfigLocatorSchema, BaseUser, BaseTenantUpdateRequestSchema, BaseTenantCreateRequestSchema, BaseTenant, BaseCustomer };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ION_SCIM_USER_EXTENSION_URN as q,isEcid as z,withValidate as H}from"@ionite/core";import*as j from"valibot";var N='must be a valid ECID formatted as "ecid:<realm>:<opaque>"',D=()=>j.optional(j.pipe(j.string(),j.check((k)=>z(k),N)));function Z(k){for(let K=0;K<k.length;K++){let Q=k.charCodeAt(K);if(Q<=31||Q===127)return!1}let P;try{P=new URL(k)}catch{return!1}if(P.protocol==="https:")return!0;if(P.protocol==="http:"){let K=P.hostname.toLowerCase();return K==="localhost"||K==="127.0.0.1"||K==="[::1]"||K==="::1"}return!1}var $="must be an absolute https URL (http is allowed only for localhost)",f=j.object({userName:j.string(),name:j.string(),email:j.pipe(j.string(),j.email()),id:j.optional(j.string()),avatar:j.optional(j.union([j.pipe(j.string(),j.url()),j.literal("")])),userType:j.optional(j.string()),ecid:D(),accountClass:j.optional(j.string())}),y=j.object({userName:j.string(),name:j.string(),email:j.pipe(j.string(),j.email()),id:j.optional(j.string()),avatar:j.optional(j.union([j.pipe(j.string(),j.url()),j.literal("")])),userType:j.optional(j.string())}),W=j.object({id:j.string(),name:j.string(),displayName:j.optional(j.string()),description:j.string(),externalId:j.optional(j.string()),metadata:j.optional(j.record(j.string(),j.unknown()))}),Y=j.object({source:j.optional(j.string()),path:j.string(),ttl:j.optional(j.number())}),M=j.object({id:j.pipe(j.string(),j.minLength(1)),companyId:j.string(),companyName:j.string(),environmentType:j.picklist(["POC","DEV","QA","PROD"]),status:j.picklist(["pending","processing","completed","failed","action_required"]),createdAt:j.date(),updatedAt:j.date(),configLocator:Y,email:j.optional(j.string()),webhookUrl:j.optional(j.string()),callbackUrl:j.optional(j.string()),tenantUrl:j.optional(j.string()),error:j.optional(j.string()),actionUrl:j.optional(j.string()),requestToken:j.optional(j.string()),expiresAt:j.optional(j.string())}),X=j.object({id:j.string(),companyId:j.string(),companyName:j.string(),environmentType:j.picklist(["POC","DEV","QA","PROD"]),configLocator:Y,email:j.optional(j.pipe(j.string(),j.email())),webhookUrl:j.optional(j.pipe(j.string(),j.url())),callbackUrl:j.optional(j.pipe(j.string(),j.url()))}),F=j.object({id:j.optional(j.string()),companyId:j.optional(j.string()),companyName:j.optional(j.string()),environmentType:j.optional(j.picklist(["POC","DEV","QA","PROD"])),configLocator:j.optional(Y),email:j.optional(j.pipe(j.string(),j.email())),webhookUrl:j.optional(j.pipe(j.string(),j.url())),callbackUrl:j.optional(j.pipe(j.string(),j.url()))}),J={authzEntityBase:()=>H(W),authzResource:()=>{let k=j.object({...W.entries,type:j.string(),parent:j.optional(j.lazy(()=>j.union([j.string(),k])))});return H(k)},authzPermission:()=>{let k=j.object({...W.entries,requestable:j.optional(j.boolean()),action:j.optional(j.string()),permissionTypes:j.optional(j.array(j.string())),resourceTypes:j.optional(j.array(j.string())),applyToSubResources:j.optional(j.boolean()),assignableSubjectTypes:j.optional(j.array(j.picklist(["user","customer","workload"]))),recommendedSubjectTypes:j.optional(j.array(j.picklist(["user","customer","workload"])))});return H(k)},authzRole:()=>{let k=J.authzPermission(),P=j.object({...W.entries,requestable:j.optional(j.boolean()),roles:j.optional(j.array(j.union([j.string(),j.lazy(()=>P)]))),permissions:j.optional(j.array(j.union([j.string(),k]))),assignableSubjectTypes:j.optional(j.array(j.picklist(["user","customer","workload"]))),recommendedSubjectTypes:j.optional(j.array(j.picklist(["user","customer","workload"])))});return H(P)},authzGroup:()=>{let k=J.authzRole(),P=J.authzPermission(),K=J.authzResource(),Q=j.object({...W.entries,requestable:j.optional(j.boolean()),groups:j.optional(j.array(j.union([j.string(),j.lazy(()=>Q)]))),roles:j.optional(j.array(j.union([j.string(),k]))),permissions:j.optional(j.array(j.union([j.string(),P]))),resources:j.optional(j.array(j.union([j.string(),K]))),assignableSubjectTypes:j.optional(j.array(j.picklist(["user","customer","workload"]))),recommendedSubjectTypes:j.optional(j.array(j.picklist(["user","customer","workload"])))});return H(Q)},oidcCallbackParams:()=>j.object({code:j.string(),state:j.optional(j.string()),session_state:j.optional(j.string()),error:j.optional(j.string()),error_description:j.optional(j.string()),error_uri:j.optional(j.string()),iss:j.optional(j.string())}),idTokenClaims:()=>j.looseObject({sub:j.string(),iss:j.string(),aud:j.union([j.string(),j.pipe(j.array(j.string()),j.minLength(1))]),exp:j.number(),iat:j.optional(j.number()),sid:j.optional(j.string()),name:j.optional(j.string()),email:j.optional(j.union([j.pipe(j.string(),j.email()),j.pipe(j.string(),j.regex(/^[^@]+@localhost$/i))])),preferred_username:j.optional(j.string()),picture:j.optional(j.pipe(j.string(),j.url()))}),tokenResponse:()=>j.object({access_token:j.string(),id_token:j.string(),refresh_token:j.optional(j.string()),token_type:j.string(),expires_in:j.optional(j.number()),scope:j.optional(j.string()),refresh_expires_in:j.optional(j.number()),session_state:j.optional(j.string()),expires:j.optional(j.string())}),scimUser:()=>{let k=j.object({formatted:j.optional(j.string()),familyName:j.optional(j.string()),givenName:j.optional(j.string()),middleName:j.optional(j.string()),honorificPrefix:j.optional(j.string()),honorificSuffix:j.optional(j.string())}),P=j.object({value:j.pipe(j.string(),j.email()),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}),K=j.object({value:j.string(),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}),Q=j.object({formatted:j.optional(j.string()),streetAddress:j.optional(j.string()),locality:j.optional(j.string()),region:j.optional(j.string()),postalCode:j.optional(j.string()),country:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}),G=j.object({value:j.string(),$ref:j.optional(j.string()),display:j.optional(j.string()),type:j.optional(j.string())}),L=j.object({value:j.string(),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}),O=j.object({employeeNumber:j.optional(j.string()),costCenter:j.optional(j.string()),organization:j.optional(j.string()),division:j.optional(j.string()),department:j.optional(j.string()),manager:j.optional(j.object({value:j.optional(j.string()),$ref:j.optional(j.string()),displayName:j.optional(j.string())}))});return j.object({id:j.optional(j.string()),externalId:j.optional(j.string()),meta:j.optional(j.object({resourceType:j.optional(j.string()),created:j.optional(j.string()),lastModified:j.optional(j.string()),location:j.optional(j.string()),version:j.optional(j.string())})),userName:j.string(),name:j.optional(k),displayName:j.optional(j.string()),nickName:j.optional(j.string()),profileUrl:j.optional(j.pipe(j.string(),j.url())),title:j.optional(j.string()),userType:j.optional(j.string()),preferredLanguage:j.optional(j.string()),locale:j.optional(j.string()),timezone:j.optional(j.string()),active:j.optional(j.boolean()),password:j.optional(j.never()),emails:j.optional(j.array(P)),phoneNumbers:j.optional(j.array(K)),ims:j.optional(j.array(j.object({value:j.string(),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}))),photos:j.optional(j.array(j.object({value:j.string(),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}))),addresses:j.optional(j.array(Q)),groups:j.optional(j.array(G)),entitlements:j.optional(j.array(j.object({value:j.string(),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}))),roles:j.optional(j.array(L)),x509Certificates:j.optional(j.array(j.object({value:j.string(),display:j.optional(j.string()),type:j.optional(j.string()),primary:j.optional(j.boolean())}))),"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":j.optional(O),[q]:j.optional(j.object({ecid:D(),accountClass:j.optional(j.string())})),schemas:j.optional(j.array(j.string()))})},scimGroup:()=>{let k=j.object({value:j.string(),$ref:j.optional(j.string()),display:j.optional(j.string()),type:j.optional(j.picklist(["User","Group"]))});return j.object({id:j.optional(j.string()),externalId:j.optional(j.string()),meta:j.optional(j.object({resourceType:j.optional(j.string()),created:j.optional(j.string()),lastModified:j.optional(j.string()),location:j.optional(j.string()),version:j.optional(j.string())})),displayName:j.string(),members:j.optional(j.array(k)),"urn:ionite:params:scim:schemas:extension:authz:2.0:Group":j.optional(j.object({type:j.optional(j.picklist(["group","role","permission"])),requestable:j.optional(j.boolean()),description:j.optional(j.string()),resources:j.optional(j.array(j.string()))})),schemas:j.optional(j.array(j.string()))})},jwtAssertionClaims:()=>j.looseObject({iss:j.string(),sub:j.string(),aud:j.optional(j.union([j.string(),j.array(j.string())])),exp:j.number(),iat:j.number(),jti:j.optional(j.string()),scope:j.optional(j.string())}),workloadTokenResponse:()=>j.object({access_token:j.string(),token_type:j.string(),expires_in:j.optional(j.number()),scope:j.optional(j.string()),refresh_token:j.optional(j.string()),expires:j.optional(j.string())}),createTenantRequest:(k)=>k?j.object({...X.entries,...k}):X,updateTenantRequest:(k)=>k?j.object({...F.entries,...k}):F,baseUser:()=>f,customer:()=>y,tenantResponse:()=>j.union([j.object({tenantUrl:j.optional(j.pipe(j.string(),j.url())),status:j.picklist(["pending","processing","completed","failed"]),error:j.optional(j.string())}),j.object({status:j.literal("action_required"),actionUrl:j.pipe(j.string(),j.url()),requestToken:j.string(),expiresAt:j.string()})]),registerIAMAppPayload:()=>j.object({id:j.pipe(j.string(),j.minLength(1)),companyId:j.pipe(j.string(),j.minLength(1)),companyName:j.pipe(j.string(),j.minLength(1)),environmentType:j.picklist(["POC","DEV","QA","PROD"]),tenantUrl:j.optional(j.pipe(j.string(),j.url())),displayName:j.optional(j.string()),productId:j.optional(j.string()),applicationId:j.optional(j.string()),scimBaseUrl:j.optional(j.pipe(j.string(),j.url())),workload:j.optional(j.record(j.string(),j.unknown()))}),registerSSOAppPayload:()=>j.object({redirectUris:j.pipe(j.array(j.pipe(j.string(),j.check(Z,`redirectUri ${$}`))),j.minLength(1)),backchannelLogoutUri:j.optional(j.pipe(j.string(),j.check(Z,`backchannelLogoutUri ${$}`))),displayName:j.optional(j.string()),defaultScope:j.optional(j.string()),issuerTenant:j.optional(j.string()),applicationId:j.optional(j.string())})};function x(){return{sso:{callbackParams:H(J.oidcCallbackParams()),idTokenClaims:H(J.idTokenClaims()),tokenResponse:H(J.tokenResponse())},iam:{user:H(J.scimUser()),group:H(J.scimGroup())},workload:{jwtAssertionClaims:H(J.jwtAssertionClaims()),tokenResponse:H(J.workloadTokenResponse())},tenant:{createTenantRequest:H(J.createTenantRequest()),updateTenantRequest:H(J.updateTenantRequest()),tenantResponse:H(J.tenantResponse())},ciam:{customer:H(J.customer()),callbackParams:H(J.oidcCallbackParams()),idTokenClaims:H(J.idTokenClaims()),tokenResponse:H(J.tokenResponse())}}}function I(){return{iam:{registerIAMAppPayload:H(J.registerIAMAppPayload())},sso:{registerSSOAppPayload:H(J.registerSSOAppPayload())}}}export{J as valibotValidators,Z as isSafeRedirectUri,x as createValidators,I as createControlValidators,Y as TenantConfigLocatorSchema,f as BaseUser,F as BaseTenantUpdateRequestSchema,X as BaseTenantCreateRequestSchema,M as BaseTenant,y as BaseCustomer};
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ionite/valibot",
|
|
3
|
+
"version": "0.0.21",
|
|
4
|
+
"description": "Valibot validators for ionite (SSO, IAM, workload, tenant, CIAM)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=20.6"
|
|
8
|
+
},
|
|
9
|
+
"author": "ionite",
|
|
10
|
+
"license": "Proprietary",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@ionite/core": "^0.0.21",
|
|
13
|
+
"@standard-schema/spec": "^1.1.0",
|
|
14
|
+
"valibot": "^1.4.2"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"typescript": "^6.0.3"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"module": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"default": "./dist/index.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"./styles.css": "./dist/index.css",
|
|
32
|
+
"./package.json": "./package.json"
|
|
33
|
+
}
|
|
34
|
+
}
|