@ionite/zod 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 +250 -0
- package/dist/index.js +1 -0
- package/package.json +34 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
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, TenantConfigLocator, TenantResponse, TokenResponse, UpdateTenantRequest, WorkloadTokenResponse } from "@ionite/core";
|
|
2
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
+
import { z } from "zod";
|
|
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 valibot package.
|
|
10
|
+
*/
|
|
11
|
+
declare function isSafeRedirectUri(value: string): boolean;
|
|
12
|
+
type CustomerShape = {
|
|
13
|
+
userName: z.ZodString;
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
email: z.ZodType<string>;
|
|
16
|
+
id: z.ZodOptional<z.ZodString>;
|
|
17
|
+
avatar: z.ZodOptional<z.ZodType<string>>;
|
|
18
|
+
userType: z.ZodOptional<z.ZodString>;
|
|
19
|
+
};
|
|
20
|
+
type BaseUserShape = CustomerShape & {
|
|
21
|
+
ecid: z.ZodOptional<z.ZodType<string>>;
|
|
22
|
+
accountClass: z.ZodOptional<z.ZodString>;
|
|
23
|
+
};
|
|
24
|
+
declare const BaseUser: z.ZodObject<BaseUserShape> & z.ZodType<BaseUserType>;
|
|
25
|
+
/**
|
|
26
|
+
* Extend-base schema for CIAM customers (magic link request body). Mirrors
|
|
27
|
+
* `BaseUser` but binds to the `BaseCustomer` record type. Apps may `.extend()`
|
|
28
|
+
* this to add custom customer attributes.
|
|
29
|
+
*/
|
|
30
|
+
declare const BaseCustomer: z.ZodObject<CustomerShape> & z.ZodType<BaseCustomerType>;
|
|
31
|
+
/**
|
|
32
|
+
* Narrow tenant config-locator schema (`{ source?, path, ttl? }`). Tenants store a pointer to their
|
|
33
|
+
* RemoteConfig that resolves against secrets sources declared on the root ES; it carries no
|
|
34
|
+
* connection details or credentials (those live only in the root env/bootstrap config).
|
|
35
|
+
*/
|
|
36
|
+
declare const TenantConfigLocatorSchema: z.ZodType<TenantConfigLocator>;
|
|
37
|
+
type BaseTenantShape = {
|
|
38
|
+
id: z.ZodString;
|
|
39
|
+
companyId: z.ZodString;
|
|
40
|
+
companyName: z.ZodString;
|
|
41
|
+
environmentType: z.ZodType<CreateTenantRequest["environmentType"]>;
|
|
42
|
+
status: z.ZodType<"pending" | "processing" | "completed" | "failed" | "action_required">;
|
|
43
|
+
createdAt: z.ZodDate;
|
|
44
|
+
updatedAt: z.ZodDate;
|
|
45
|
+
configLocator: z.ZodType<TenantConfigLocator>;
|
|
46
|
+
email: z.ZodOptional<z.ZodString>;
|
|
47
|
+
webhookUrl: z.ZodOptional<z.ZodString>;
|
|
48
|
+
callbackUrl: z.ZodOptional<z.ZodString>;
|
|
49
|
+
tenantUrl: z.ZodOptional<z.ZodString>;
|
|
50
|
+
error: z.ZodOptional<z.ZodString>;
|
|
51
|
+
actionUrl: z.ZodOptional<z.ZodString>;
|
|
52
|
+
requestToken: z.ZodOptional<z.ZodString>;
|
|
53
|
+
expiresAt: z.ZodOptional<z.ZodString>;
|
|
54
|
+
};
|
|
55
|
+
declare const BaseTenant: z.ZodObject<BaseTenantShape> & z.ZodType<BaseTenantType>;
|
|
56
|
+
type BaseTenantCreateRequestSchemaShape = {
|
|
57
|
+
id: z.ZodString;
|
|
58
|
+
companyId: z.ZodString;
|
|
59
|
+
companyName: z.ZodString;
|
|
60
|
+
environmentType: z.ZodType<CreateTenantRequest["environmentType"]>;
|
|
61
|
+
configLocator: z.ZodType<TenantConfigLocator>;
|
|
62
|
+
email: z.ZodOptional<z.ZodType<string>>;
|
|
63
|
+
webhookUrl: z.ZodOptional<z.ZodType<string>>;
|
|
64
|
+
callbackUrl: z.ZodOptional<z.ZodType<string>>;
|
|
65
|
+
};
|
|
66
|
+
declare const BaseTenantCreateRequestSchema: z.ZodObject<BaseTenantCreateRequestSchemaShape> & z.ZodType<CreateTenantRequest>;
|
|
67
|
+
type BaseTenantUpdateRequestSchemaShape = {
|
|
68
|
+
id: z.ZodOptional<z.ZodString>;
|
|
69
|
+
companyId: z.ZodOptional<z.ZodString>;
|
|
70
|
+
companyName: z.ZodOptional<z.ZodString>;
|
|
71
|
+
environmentType: z.ZodOptional<z.ZodType<UpdateTenantRequest["environmentType"]>>;
|
|
72
|
+
configLocator: z.ZodOptional<z.ZodType<TenantConfigLocator>>;
|
|
73
|
+
email: z.ZodOptional<z.ZodType<string>>;
|
|
74
|
+
webhookUrl: z.ZodOptional<z.ZodType<string>>;
|
|
75
|
+
callbackUrl: z.ZodOptional<z.ZodType<string>>;
|
|
76
|
+
};
|
|
77
|
+
declare const BaseTenantUpdateRequestSchema: z.ZodObject<BaseTenantUpdateRequestSchemaShape> & z.ZodType<UpdateTenantRequest>;
|
|
78
|
+
/**
|
|
79
|
+
* Individual Zod schema factories for custom usage
|
|
80
|
+
*/
|
|
81
|
+
declare const zodValidators: {
|
|
82
|
+
authzEntityBase: () => StandardSchemaV1<unknown, AuthzEntityBaseType>;
|
|
83
|
+
authzResource: () => StandardSchemaV1<unknown, ResourceType>;
|
|
84
|
+
authzPermission: () => StandardSchemaV1<unknown, PermissionType>;
|
|
85
|
+
authzRole: () => StandardSchemaV1<unknown, RoleType>;
|
|
86
|
+
authzGroup: () => StandardSchemaV1<unknown, AuthzGroupType>;
|
|
87
|
+
/**
|
|
88
|
+
* Creates a Zod validator for OIDC callback parameters
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* import { zodValidators } from '@ionite/zod';
|
|
93
|
+
*
|
|
94
|
+
* const callbackParams = zodValidators.oidcCallbackParams();
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
oidcCallbackParams: () => StandardSchemaV1<unknown, OidcCallbackParams>;
|
|
98
|
+
/**
|
|
99
|
+
* Creates a Zod validator for ID token claims
|
|
100
|
+
* Use .extend() to add custom claims validation
|
|
101
|
+
*
|
|
102
|
+
* @example Extending with custom claims
|
|
103
|
+
* ```typescript
|
|
104
|
+
* import { zodValidators } from '@ionite/zod';
|
|
105
|
+
* import { z } from 'zod';
|
|
106
|
+
*
|
|
107
|
+
* const customClaimsSchema = (zodValidators.idTokenClaims() as any)
|
|
108
|
+
* .extend({
|
|
109
|
+
* custom_claim: z.string(),
|
|
110
|
+
* roles: z.array(z.string()),
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
idTokenClaims: () => StandardSchemaV1<unknown, IdTokenClaims>;
|
|
115
|
+
/**
|
|
116
|
+
* Creates a Zod validator for token responses from IdP
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* import { zodValidators } from '@ionite/zod';
|
|
121
|
+
*
|
|
122
|
+
* const tokenResponse = zodValidators.tokenResponse();
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
tokenResponse: () => StandardSchemaV1<unknown, TokenResponse>;
|
|
126
|
+
/**
|
|
127
|
+
* Creates a Zod validator for SCIM User resources
|
|
128
|
+
* Use .extend() to add custom SCIM extensions
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* import { zodValidators } from '@ionite/zod';
|
|
133
|
+
*
|
|
134
|
+
* const userValidator = zodValidators.scimUser();
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* @example Extending with custom SCIM schema extensions
|
|
138
|
+
* ```typescript
|
|
139
|
+
* import { zodValidators } from '@ionite/zod';
|
|
140
|
+
* import { z } from 'zod';
|
|
141
|
+
*
|
|
142
|
+
* const customUserSchema = (zodValidators.scimUser() as any)
|
|
143
|
+
* .extend({
|
|
144
|
+
* 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': z.object({
|
|
145
|
+
* customField: z.string(),
|
|
146
|
+
* }),
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
scimUser: () => StandardSchemaV1<unknown, ScimUser>;
|
|
151
|
+
/**
|
|
152
|
+
* Creates a Zod validator for SCIM Group resources
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* import { zodValidators } from '@ionite/zod';
|
|
157
|
+
*
|
|
158
|
+
* const groupValidator = zodValidators.scimGroup();
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
scimGroup: () => StandardSchemaV1<unknown, GroupResource>;
|
|
162
|
+
/**
|
|
163
|
+
* Creates a Zod validator for JWT Assertion Claims (workload identity)
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* import { zodValidators } from '@ionite/zod';
|
|
168
|
+
*
|
|
169
|
+
* const jwtClaims = zodValidators.jwtAssertionClaims();
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
jwtAssertionClaims: () => StandardSchemaV1<unknown, JWTAssertionClaims>;
|
|
173
|
+
/**
|
|
174
|
+
* Creates a Zod validator for workload token responses
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* import { zodValidators } from '@ionite/zod';
|
|
179
|
+
*
|
|
180
|
+
* const workloadToken = zodValidators.workloadTokenResponse();
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
workloadTokenResponse: () => StandardSchemaV1<unknown, WorkloadTokenResponse>;
|
|
184
|
+
/**
|
|
185
|
+
* Creates a Zod validator for BaseUser (workforce user extend-base).
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* import { zodValidators } from '@ionite/zod';
|
|
190
|
+
*
|
|
191
|
+
* const baseUser = zodValidators.baseUser();
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
baseUser: () => StandardSchemaV1<unknown, BaseUserType>;
|
|
195
|
+
/**
|
|
196
|
+
* Creates a Zod validator for BaseCustomer (CIAM magic link request body).
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* import { zodValidators } from '@ionite/zod';
|
|
201
|
+
*
|
|
202
|
+
* const customer = zodValidators.customer();
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
customer: () => StandardSchemaV1<unknown, BaseCustomerType>;
|
|
206
|
+
/**
|
|
207
|
+
* Creates a Zod validator for tenant creation requests (`POST`).
|
|
208
|
+
* Use `extendedShape` to add app-specific attributes to the request body.
|
|
209
|
+
*/
|
|
210
|
+
createTenantRequest: <TExtendedShape extends z.ZodRawShape = Record<never, z.ZodTypeAny>>(extendedShape?: TExtendedShape) => StandardSchemaV1<unknown, CreateTenantRequest<z.infer<z.ZodObject<TExtendedShape>>>>;
|
|
211
|
+
/**
|
|
212
|
+
* Creates a Zod validator for tenant update requests (`PUT`). Every field is optional; omitted
|
|
213
|
+
* fields are preserved from the stored record.
|
|
214
|
+
*/
|
|
215
|
+
updateTenantRequest: <TExtendedShape extends z.ZodRawShape = Record<never, z.ZodTypeAny>>(extendedShape?: TExtendedShape) => StandardSchemaV1<unknown, UpdateTenantRequest<z.infer<z.ZodObject<TExtendedShape>>>>;
|
|
216
|
+
/**
|
|
217
|
+
* Creates a Zod validator for tenant management responses.
|
|
218
|
+
*/
|
|
219
|
+
tenantResponse: () => StandardSchemaV1<unknown, TenantResponse>;
|
|
220
|
+
registerIAMAppPayload: () => StandardSchemaV1<unknown, RegisterIAMAppPayload>;
|
|
221
|
+
registerSSOAppPayload: () => StandardSchemaV1<unknown, RegisterSSOAppPayload>;
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* Pre-built Zod validators for ionite
|
|
225
|
+
*
|
|
226
|
+
* These validators implement the StandardSchemaV1 interface and can be used
|
|
227
|
+
* directly in ionite configuration
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* import { createValidators } from '@ionite/zod';
|
|
232
|
+
*
|
|
233
|
+
* const validators = createValidators();
|
|
234
|
+
*
|
|
235
|
+
* const ion = ionite(configSource, {
|
|
236
|
+
* validators,
|
|
237
|
+
* // ... other config
|
|
238
|
+
* });
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
declare function createValidators(): ApplicationValidators;
|
|
242
|
+
/**
|
|
243
|
+
* EC registration validators for IAM and SSO app registration handlers.
|
|
244
|
+
* Use with your EC's local registration handlers.
|
|
245
|
+
*/
|
|
246
|
+
declare function createControlValidators(): {
|
|
247
|
+
iam: IAMAppValidators;
|
|
248
|
+
sso: SSOAppValidators;
|
|
249
|
+
};
|
|
250
|
+
export { zodValidators, 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 O,isEcid as q,withValidate as H}from"@ionite/core";import{z as j}from"zod";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)",N='must be a valid ECID formatted as "ecid:<realm>:<opaque>"',F=()=>j.string().refine(q,N).optional(),W=j.object({id:j.string(),name:j.string(),displayName:j.string().optional(),description:j.string(),externalId:j.string().optional(),metadata:j.record(j.string(),j.unknown()).optional()}),f=j.object({userName:j.string(),name:j.string(),email:j.email(),id:j.string().optional(),avatar:j.union([j.url(),j.literal("")]).optional(),userType:j.string().optional(),ecid:F(),accountClass:j.string().optional()}),y=j.object({userName:j.string(),name:j.string(),email:j.email(),id:j.string().optional(),avatar:j.union([j.url(),j.literal("")]).optional(),userType:j.string().optional()}),Y=j.object({source:j.string().optional(),path:j.string(),ttl:j.number().optional()}),v=j.object({id:j.string().min(1),companyId:j.string(),companyName:j.string(),environmentType:j.enum(["POC","DEV","QA","PROD"]),status:j.enum(["pending","processing","completed","failed","action_required"]),createdAt:j.date(),updatedAt:j.date(),configLocator:Y,email:j.string().optional(),webhookUrl:j.string().optional(),callbackUrl:j.string().optional(),tenantUrl:j.string().optional(),error:j.string().optional(),actionUrl:j.string().optional(),requestToken:j.string().optional(),expiresAt:j.string().optional()}),X=j.object({id:j.string(),companyId:j.string(),companyName:j.string(),environmentType:j.enum(["POC","DEV","QA","PROD"]),configLocator:Y,email:j.email().optional(),webhookUrl:j.url().optional(),callbackUrl:j.url().optional()}),b=j.object({id:j.string().optional(),companyId:j.string().optional(),companyName:j.string().optional(),environmentType:j.enum(["POC","DEV","QA","PROD"]).optional(),configLocator:Y.optional(),email:j.email().optional(),webhookUrl:j.url().optional(),callbackUrl:j.url().optional()}),J={authzEntityBase:()=>H(W),authzResource:()=>{let k=W.extend({type:j.string(),parent:j.lazy(()=>j.union([j.string(),k])).optional()});return H(k)},authzPermission:()=>{let k=W.extend({requestable:j.boolean().optional(),action:j.string().optional(),permissionTypes:j.array(j.string()).optional(),resourceTypes:j.array(j.string()).optional(),applyToSubResources:j.boolean().optional(),assignableSubjectTypes:j.array(j.enum(["user","customer","workload"])).optional(),recommendedSubjectTypes:j.array(j.enum(["user","customer","workload"])).optional()});return H(k)},authzRole:()=>{let k=J.authzPermission(),P=W.extend({requestable:j.boolean().optional(),roles:j.array(j.union([j.string(),j.lazy(()=>P)])).optional(),permissions:j.array(j.union([j.string(),k])).optional(),assignableSubjectTypes:j.array(j.enum(["user","customer","workload"])).optional(),recommendedSubjectTypes:j.array(j.enum(["user","customer","workload"])).optional()});return H(P)},authzGroup:()=>{let k=J.authzRole(),P=J.authzPermission(),K=J.authzResource(),Q=W.extend({requestable:j.boolean().optional(),groups:j.array(j.union([j.string(),j.lazy(()=>Q)])).optional(),roles:j.array(j.union([j.string(),k])).optional(),permissions:j.array(j.union([j.string(),P])).optional(),resources:j.array(j.union([j.string(),K])).optional(),assignableSubjectTypes:j.array(j.enum(["user","customer","workload"])).optional(),recommendedSubjectTypes:j.array(j.enum(["user","customer","workload"])).optional()});return H(Q)},oidcCallbackParams:()=>j.object({code:j.string(),state:j.string().optional(),session_state:j.string().optional(),error:j.string().optional(),error_description:j.string().optional(),error_uri:j.string().optional(),iss:j.string().optional()}),idTokenClaims:()=>j.object({sub:j.string(),iss:j.string(),aud:j.union([j.string(),j.array(j.string()).nonempty()]),exp:j.number(),iat:j.number().optional(),sid:j.string().optional(),name:j.string().optional(),email:j.union([j.email(),j.string().regex(/^[^@]+@localhost$/i)]).optional(),preferred_username:j.string().optional(),picture:j.url().optional()}).passthrough(),tokenResponse:()=>j.object({access_token:j.string(),id_token:j.string(),refresh_token:j.string().optional(),token_type:j.string(),expires_in:j.number().optional(),scope:j.string().optional(),refresh_expires_in:j.number().optional(),session_state:j.string().optional(),expires:j.string().optional()}),scimUser:()=>{let k=j.object({formatted:j.string().optional(),familyName:j.string().optional(),givenName:j.string().optional(),middleName:j.string().optional(),honorificPrefix:j.string().optional(),honorificSuffix:j.string().optional()}),P=j.object({value:j.email(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()}),K=j.object({value:j.string(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()}),Q=j.object({formatted:j.string().optional(),streetAddress:j.string().optional(),locality:j.string().optional(),region:j.string().optional(),postalCode:j.string().optional(),country:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()}),D=j.object({value:j.string(),$ref:j.string().optional(),display:j.string().optional(),type:j.string().optional()}),G=j.object({value:j.string(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()}),L=j.object({employeeNumber:j.string().optional(),costCenter:j.string().optional(),organization:j.string().optional(),division:j.string().optional(),department:j.string().optional(),manager:j.object({value:j.string().optional(),$ref:j.string().optional(),displayName:j.string().optional()}).optional()});return j.object({id:j.string().optional(),externalId:j.string().optional(),meta:j.object({resourceType:j.string().optional(),created:j.string().optional(),lastModified:j.string().optional(),location:j.string().optional(),version:j.string().optional()}).optional(),userName:j.string(),name:k.optional(),displayName:j.string().optional(),nickName:j.string().optional(),profileUrl:j.url().optional(),title:j.string().optional(),userType:j.string().optional(),preferredLanguage:j.string().optional(),locale:j.string().optional(),timezone:j.string().optional(),active:j.boolean().optional(),password:j.never().optional(),emails:j.array(P).optional(),phoneNumbers:j.array(K).optional(),ims:j.array(j.object({value:j.string(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()})).optional(),photos:j.array(j.object({value:j.string(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()})).optional(),addresses:j.array(Q).optional(),groups:j.array(D).optional(),entitlements:j.array(j.object({value:j.string(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()})).optional(),roles:j.array(G).optional(),x509Certificates:j.array(j.object({value:j.string(),display:j.string().optional(),type:j.string().optional(),primary:j.boolean().optional()})).optional(),"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":L.optional(),[O]:j.object({ecid:F(),accountClass:j.string().optional()}).optional(),schemas:j.array(j.string()).optional()})},scimGroup:()=>{let k=j.object({value:j.string(),$ref:j.string().optional(),display:j.string().optional(),type:j.enum(["User","Group"]).optional()});return j.object({id:j.string().optional(),externalId:j.string().optional(),meta:j.object({resourceType:j.string().optional(),created:j.string().optional(),lastModified:j.string().optional(),location:j.string().optional(),version:j.string().optional()}).optional(),displayName:j.string(),members:j.array(k).optional(),"urn:ionite:params:scim:schemas:extension:authz:2.0:Group":j.object({type:j.enum(["group","role","permission"]).optional(),requestable:j.boolean().optional(),description:j.string().optional(),resources:j.array(j.string()).optional()}).optional(),schemas:j.array(j.string()).optional()})},jwtAssertionClaims:()=>j.object({iss:j.string(),sub:j.string(),aud:j.union([j.string(),j.array(j.string())]).optional(),exp:j.number(),iat:j.number(),jti:j.string().optional(),scope:j.string().optional()}).passthrough(),workloadTokenResponse:()=>j.object({access_token:j.string(),token_type:j.string(),expires_in:j.number().optional(),scope:j.string().optional(),refresh_token:j.string().optional(),expires:j.string().optional()}),baseUser:()=>f,customer:()=>y,createTenantRequest:(k)=>k?X.extend(k):X,updateTenantRequest:(k)=>k?b.extend(k):b,tenantResponse:()=>j.union([j.object({tenantUrl:j.url().optional(),status:j.enum(["pending","processing","completed","failed"]),error:j.string().optional()}),j.object({status:j.literal("action_required"),actionUrl:j.url(),requestToken:j.string(),expiresAt:j.string()})]),registerIAMAppPayload:()=>j.object({id:j.string().min(1),companyId:j.string().min(1),companyName:j.string().min(1),environmentType:j.enum(["POC","DEV","QA","PROD"]),tenantUrl:j.url().optional(),displayName:j.string().optional(),productId:j.string().optional(),applicationId:j.string().optional(),scimBaseUrl:j.url().optional(),workload:j.record(j.string(),j.unknown()).optional()}),registerSSOAppPayload:()=>j.object({redirectUris:j.array(j.string().refine(Z,{message:`redirectUri ${$}`})).min(1),backchannelLogoutUri:j.string().refine(Z,{message:`backchannelLogoutUri ${$}`}).optional(),displayName:j.string().optional(),defaultScope:j.string().optional(),issuerTenant:j.string().optional(),applicationId:j.string().optional()})};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 zodValidators,Z as isSafeRedirectUri,x as createValidators,I as createControlValidators,Y as TenantConfigLocatorSchema,f as BaseUser,b as BaseTenantUpdateRequestSchema,X as BaseTenantCreateRequestSchema,v as BaseTenant,y as BaseCustomer};
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ionite/zod",
|
|
3
|
+
"version": "0.0.21",
|
|
4
|
+
"description": "Zod 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
|
+
"zod": "^4.4.3"
|
|
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
|
+
}
|