@enterprisestandard/react-validators-zod 0.0.5-beta.20260115.2 → 0.0.5-beta.20260115.4

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
@@ -1,4 +1,5 @@
1
- import type { CreateTenantResponse, IdTokenClaims, OidcCallbackParams, ScimUser, StandardSchemaV1, TokenResponse } from '@enterprisestandard/react';
1
+ import { StandardSchemaV1, OidcCallbackParams, IdTokenClaims, TokenResponse, ScimUser, CreateTenantResponse } from '@enterprisestandard/react';
2
+
2
3
  /**
3
4
  * Pre-built Zod validators for OIDC/SSO flows
4
5
  *
@@ -17,7 +18,7 @@ import type { CreateTenantResponse, IdTokenClaims, OidcCallbackParams, ScimUser,
17
18
  * };
18
19
  * ```
19
20
  */
20
- export declare function createZodValidators(): {
21
+ declare function createZodValidators(): {
21
22
  callbackParams: StandardSchemaV1<unknown, OidcCallbackParams>;
22
23
  idTokenClaims: StandardSchemaV1<unknown, IdTokenClaims>;
23
24
  tokenResponse: StandardSchemaV1<unknown, TokenResponse>;
@@ -25,7 +26,7 @@ export declare function createZodValidators(): {
25
26
  /**
26
27
  * Individual Zod schema factories for custom usage
27
28
  */
28
- export declare const zodValidators: {
29
+ declare const zodValidators: {
29
30
  /**
30
31
  * Creates a Zod validator for OIDC callback parameters
31
32
  *
@@ -102,4 +103,5 @@ export declare const zodValidators: {
102
103
  */
103
104
  createTenantResponse: () => StandardSchemaV1<unknown, CreateTenantResponse>;
104
105
  };
105
- //# sourceMappingURL=index.d.ts.map
106
+
107
+ export { createZodValidators, zodValidators };
package/dist/index.js CHANGED
@@ -1,295 +1,272 @@
1
- import { z } from 'zod';
2
- /**
3
- * Pre-built Zod validators for OIDC/SSO flows
4
- *
5
- * These validators implement the StandardSchemaV1 interface and can be used
6
- * directly in SSOHandlerConfig.validation
7
- *
8
- * @example
9
- * ```typescript
10
- * import { createZodValidators } from '@enterprisestandard/react-validators-zod';
11
- *
12
- * const validators = createZodValidators();
13
- *
14
- * const ssoConfig: SSOHandlerConfig = {
15
- * loginUrl: '/api/auth/login',
16
- * validation: validators,
17
- * };
18
- * ```
19
- */
20
- export function createZodValidators() {
21
- const oidcCallbackParamsSchema = z.object({
22
- code: z.string(),
23
- state: z.string().optional(),
24
- session_state: z.string().optional(),
25
- error: z.string().optional(),
26
- error_description: z.string().optional(),
27
- error_uri: z.string().optional(),
28
- iss: z.string().optional(),
1
+ // src/index.ts
2
+ import { z } from "zod";
3
+ function createZodValidators() {
4
+ const oidcCallbackParamsSchema = z.object({
5
+ code: z.string(),
6
+ state: z.string().optional(),
7
+ session_state: z.string().optional(),
8
+ error: z.string().optional(),
9
+ error_description: z.string().optional(),
10
+ error_uri: z.string().optional(),
11
+ iss: z.string().optional()
12
+ });
13
+ const idTokenClaimsSchema = z.object({
14
+ sub: z.string().optional(),
15
+ iss: z.string().optional(),
16
+ aud: z.string().optional(),
17
+ exp: z.number().optional(),
18
+ iat: z.number().optional(),
19
+ sid: z.string().optional(),
20
+ name: z.string().optional(),
21
+ email: z.string().email().optional(),
22
+ preferred_username: z.string().optional(),
23
+ picture: z.string().url().optional()
24
+ }).passthrough();
25
+ const tokenResponseSchema = z.object({
26
+ access_token: z.string(),
27
+ id_token: z.string(),
28
+ refresh_token: z.string().optional(),
29
+ token_type: z.string(),
30
+ expires_in: z.number().optional(),
31
+ scope: z.string().optional(),
32
+ refresh_expires_in: z.number().optional(),
33
+ session_state: z.string().optional(),
34
+ expires: z.string().optional()
35
+ });
36
+ return {
37
+ callbackParams: oidcCallbackParamsSchema,
38
+ idTokenClaims: idTokenClaimsSchema,
39
+ tokenResponse: tokenResponseSchema
40
+ };
41
+ }
42
+ var zodValidators = {
43
+ /**
44
+ * Creates a Zod validator for OIDC callback parameters
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * import { zodValidators } from '@enterprisestandard/react-validators-zod';
49
+ *
50
+ * const callbackParams = zodValidators.oidcCallbackParams();
51
+ * ```
52
+ */
53
+ oidcCallbackParams: () => z.object({
54
+ code: z.string(),
55
+ state: z.string().optional(),
56
+ session_state: z.string().optional(),
57
+ error: z.string().optional(),
58
+ error_description: z.string().optional(),
59
+ error_uri: z.string().optional(),
60
+ iss: z.string().optional()
61
+ }),
62
+ /**
63
+ * Creates a Zod validator for ID token claims
64
+ * Use .extend() to add custom claims validation
65
+ *
66
+ * @example Extending with custom claims
67
+ * ```typescript
68
+ * import { zodValidators } from '@enterprisestandard/react-validators-zod';
69
+ * import { z } from 'zod';
70
+ *
71
+ * const customClaimsSchema = (zodValidators.idTokenClaims() as any)
72
+ * .extend({
73
+ * custom_claim: z.string(),
74
+ * roles: z.array(z.string()),
75
+ * });
76
+ * ```
77
+ */
78
+ idTokenClaims: () => z.object({
79
+ sub: z.string().optional(),
80
+ iss: z.string().optional(),
81
+ aud: z.string().optional(),
82
+ exp: z.number().optional(),
83
+ iat: z.number().optional(),
84
+ sid: z.string().optional(),
85
+ name: z.string().optional(),
86
+ email: z.string().email().optional(),
87
+ preferred_username: z.string().optional(),
88
+ picture: z.string().url().optional()
89
+ }).passthrough(),
90
+ /**
91
+ * Creates a Zod validator for token responses from IdP
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * import { zodValidators } from '@enterprisestandard/react-validators-zod';
96
+ *
97
+ * const tokenResponse = zodValidators.tokenResponse();
98
+ * ```
99
+ */
100
+ tokenResponse: () => z.object({
101
+ access_token: z.string(),
102
+ id_token: z.string(),
103
+ refresh_token: z.string().optional(),
104
+ token_type: z.string(),
105
+ expires_in: z.number().optional(),
106
+ scope: z.string().optional(),
107
+ refresh_expires_in: z.number().optional(),
108
+ session_state: z.string().optional(),
109
+ expires: z.string().optional()
110
+ }),
111
+ /**
112
+ * Creates a Zod validator for SCIM User resources
113
+ * Use .extend() to add custom SCIM extensions
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * import { zodValidators } from '@enterprisestandard/react-validators-zod';
118
+ *
119
+ * const userValidator = zodValidators.scimUser();
120
+ * ```
121
+ *
122
+ * @example Extending with custom SCIM schema extensions
123
+ * ```typescript
124
+ * import { zodValidators } from '@enterprisestandard/react-validators-zod';
125
+ * import { z } from 'zod';
126
+ *
127
+ * const customUserSchema = (zodValidators.scimUser() as any)
128
+ * .extend({
129
+ * 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': z.object({
130
+ * customField: z.string(),
131
+ * }),
132
+ * });
133
+ * ```
134
+ */
135
+ scimUser: () => {
136
+ const nameSchema = z.object({
137
+ formatted: z.string().optional(),
138
+ familyName: z.string().optional(),
139
+ givenName: z.string().optional(),
140
+ middleName: z.string().optional(),
141
+ honorificPrefix: z.string().optional(),
142
+ honorificSuffix: z.string().optional()
29
143
  });
30
- const idTokenClaimsSchema = z
31
- .object({
32
- sub: z.string().optional(),
33
- iss: z.string().optional(),
34
- aud: z.string().optional(),
35
- exp: z.number().optional(),
36
- iat: z.number().optional(),
37
- sid: z.string().optional(),
38
- name: z.string().optional(),
39
- email: z.string().email().optional(),
40
- preferred_username: z.string().optional(),
41
- picture: z.string().url().optional(),
42
- })
43
- .passthrough(); // Allow additional claims
44
- const tokenResponseSchema = z.object({
45
- access_token: z.string(),
46
- id_token: z.string(),
47
- refresh_token: z.string().optional(),
48
- token_type: z.string(),
49
- expires_in: z.number().optional(),
50
- scope: z.string().optional(),
51
- refresh_expires_in: z.number().optional(),
52
- session_state: z.string().optional(),
53
- expires: z.string().optional(),
144
+ const emailSchema = z.object({
145
+ value: z.string().email(),
146
+ display: z.string().optional(),
147
+ type: z.string().optional(),
148
+ primary: z.boolean().optional()
54
149
  });
55
- return {
56
- callbackParams: oidcCallbackParamsSchema,
57
- idTokenClaims: idTokenClaimsSchema,
58
- tokenResponse: tokenResponseSchema,
59
- };
60
- }
61
- /**
62
- * Individual Zod schema factories for custom usage
63
- */
64
- export const zodValidators = {
65
- /**
66
- * Creates a Zod validator for OIDC callback parameters
67
- *
68
- * @example
69
- * ```typescript
70
- * import { zodValidators } from '@enterprisestandard/react-validators-zod';
71
- *
72
- * const callbackParams = zodValidators.oidcCallbackParams();
73
- * ```
74
- */
75
- oidcCallbackParams: () => z.object({
76
- code: z.string(),
77
- state: z.string().optional(),
78
- session_state: z.string().optional(),
79
- error: z.string().optional(),
80
- error_description: z.string().optional(),
81
- error_uri: z.string().optional(),
82
- iss: z.string().optional(),
83
- }),
84
- /**
85
- * Creates a Zod validator for ID token claims
86
- * Use .extend() to add custom claims validation
87
- *
88
- * @example Extending with custom claims
89
- * ```typescript
90
- * import { zodValidators } from '@enterprisestandard/react-validators-zod';
91
- * import { z } from 'zod';
92
- *
93
- * const customClaimsSchema = (zodValidators.idTokenClaims() as any)
94
- * .extend({
95
- * custom_claim: z.string(),
96
- * roles: z.array(z.string()),
97
- * });
98
- * ```
99
- */
100
- idTokenClaims: () => z
101
- .object({
102
- sub: z.string().optional(),
103
- iss: z.string().optional(),
104
- aud: z.string().optional(),
105
- exp: z.number().optional(),
106
- iat: z.number().optional(),
107
- sid: z.string().optional(),
108
- name: z.string().optional(),
109
- email: z.string().email().optional(),
110
- preferred_username: z.string().optional(),
111
- picture: z.string().url().optional(),
112
- })
113
- .passthrough(),
114
- /**
115
- * Creates a Zod validator for token responses from IdP
116
- *
117
- * @example
118
- * ```typescript
119
- * import { zodValidators } from '@enterprisestandard/react-validators-zod';
120
- *
121
- * const tokenResponse = zodValidators.tokenResponse();
122
- * ```
123
- */
124
- tokenResponse: () => z.object({
125
- access_token: z.string(),
126
- id_token: z.string(),
127
- refresh_token: z.string().optional(),
128
- token_type: z.string(),
129
- expires_in: z.number().optional(),
130
- scope: z.string().optional(),
131
- refresh_expires_in: z.number().optional(),
132
- session_state: z.string().optional(),
133
- expires: z.string().optional(),
134
- }),
135
- /**
136
- * Creates a Zod validator for SCIM User resources
137
- * Use .extend() to add custom SCIM extensions
138
- *
139
- * @example
140
- * ```typescript
141
- * import { zodValidators } from '@enterprisestandard/react-validators-zod';
142
- *
143
- * const userValidator = zodValidators.scimUser();
144
- * ```
145
- *
146
- * @example Extending with custom SCIM schema extensions
147
- * ```typescript
148
- * import { zodValidators } from '@enterprisestandard/react-validators-zod';
149
- * import { z } from 'zod';
150
- *
151
- * const customUserSchema = (zodValidators.scimUser() as any)
152
- * .extend({
153
- * 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': z.object({
154
- * customField: z.string(),
155
- * }),
156
- * });
157
- * ```
158
- */
159
- scimUser: () => {
160
- const nameSchema = z.object({
161
- formatted: z.string().optional(),
162
- familyName: z.string().optional(),
163
- givenName: z.string().optional(),
164
- middleName: z.string().optional(),
165
- honorificPrefix: z.string().optional(),
166
- honorificSuffix: z.string().optional(),
167
- });
168
- const emailSchema = z.object({
169
- value: z.string().email(),
170
- display: z.string().optional(),
171
- type: z.string().optional(),
172
- primary: z.boolean().optional(),
173
- });
174
- const phoneNumberSchema = z.object({
175
- value: z.string(),
176
- display: z.string().optional(),
177
- type: z.string().optional(),
178
- primary: z.boolean().optional(),
179
- });
180
- const addressSchema = z.object({
181
- formatted: z.string().optional(),
182
- streetAddress: z.string().optional(),
183
- locality: z.string().optional(),
184
- region: z.string().optional(),
185
- postalCode: z.string().optional(),
186
- country: z.string().optional(),
187
- type: z.string().optional(),
188
- primary: z.boolean().optional(),
189
- });
190
- const groupSchema = z.object({
191
- value: z.string(),
192
- $ref: z.string().optional(),
193
- display: z.string().optional(),
194
- type: z.string().optional(),
195
- });
196
- const roleSchema = z.object({
197
- value: z.string(),
198
- display: z.string().optional(),
199
- type: z.string().optional(),
200
- primary: z.boolean().optional(),
201
- });
202
- const enterpriseUserSchema = z.object({
203
- employeeNumber: z.string().optional(),
204
- costCenter: z.string().optional(),
205
- organization: z.string().optional(),
206
- division: z.string().optional(),
207
- department: z.string().optional(),
208
- manager: z
209
- .object({
210
- value: z.string().optional(),
211
- $ref: z.string().optional(),
212
- displayName: z.string().optional(),
213
- })
214
- .optional(),
215
- });
216
- return z.object({
217
- id: z.string().optional(),
218
- externalId: z.string().optional(),
219
- meta: z
220
- .object({
221
- resourceType: z.string().optional(),
222
- created: z.string().optional(),
223
- lastModified: z.string().optional(),
224
- location: z.string().optional(),
225
- version: z.string().optional(),
226
- })
227
- .optional(),
228
- userName: z.string(),
229
- name: nameSchema.optional(),
230
- displayName: z.string().optional(),
231
- nickName: z.string().optional(),
232
- profileUrl: z.string().url().optional(),
233
- title: z.string().optional(),
234
- userType: z.string().optional(),
235
- preferredLanguage: z.string().optional(),
236
- locale: z.string().optional(),
237
- timezone: z.string().optional(),
238
- active: z.boolean().optional(),
239
- password: z.string().optional(),
240
- emails: z.array(emailSchema).optional(),
241
- phoneNumbers: z.array(phoneNumberSchema).optional(),
242
- ims: z
243
- .array(z.object({
244
- value: z.string(),
245
- display: z.string().optional(),
246
- type: z.string().optional(),
247
- primary: z.boolean().optional(),
248
- }))
249
- .optional(),
250
- photos: z
251
- .array(z.object({
252
- value: z.string(),
253
- display: z.string().optional(),
254
- type: z.string().optional(),
255
- primary: z.boolean().optional(),
256
- }))
257
- .optional(),
258
- addresses: z.array(addressSchema).optional(),
259
- groups: z.array(groupSchema).optional(),
260
- entitlements: z
261
- .array(z.object({
262
- value: z.string(),
263
- display: z.string().optional(),
264
- type: z.string().optional(),
265
- primary: z.boolean().optional(),
266
- }))
267
- .optional(),
268
- roles: z.array(roleSchema).optional(),
269
- x509Certificates: z
270
- .array(z.object({
271
- value: z.string(),
272
- display: z.string().optional(),
273
- type: z.string().optional(),
274
- primary: z.boolean().optional(),
275
- }))
276
- .optional(),
277
- 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User': enterpriseUserSchema.optional(),
278
- schemas: z.array(z.string()).optional(),
279
- });
280
- },
281
- /**
282
- * Creates a Zod validator for tenant creation responses
283
- *
284
- * @example
285
- * ```typescript
286
- * import { zodValidators } from '@enterprisestandard/react-validators-zod';
287
- *
288
- * const tenantResponse = zodValidators.createTenantResponse();
289
- * ```
290
- */
291
- createTenantResponse: () => z.object({
292
- tenantUrl: z.string().url(),
293
- status: z.enum(['pending', 'processing', 'completed', 'failed']),
294
- }),
150
+ const phoneNumberSchema = z.object({
151
+ value: z.string(),
152
+ display: z.string().optional(),
153
+ type: z.string().optional(),
154
+ primary: z.boolean().optional()
155
+ });
156
+ const addressSchema = z.object({
157
+ formatted: z.string().optional(),
158
+ streetAddress: z.string().optional(),
159
+ locality: z.string().optional(),
160
+ region: z.string().optional(),
161
+ postalCode: z.string().optional(),
162
+ country: z.string().optional(),
163
+ type: z.string().optional(),
164
+ primary: z.boolean().optional()
165
+ });
166
+ const groupSchema = z.object({
167
+ value: z.string(),
168
+ $ref: z.string().optional(),
169
+ display: z.string().optional(),
170
+ type: z.string().optional()
171
+ });
172
+ const roleSchema = z.object({
173
+ value: z.string(),
174
+ display: z.string().optional(),
175
+ type: z.string().optional(),
176
+ primary: z.boolean().optional()
177
+ });
178
+ const enterpriseUserSchema = z.object({
179
+ employeeNumber: z.string().optional(),
180
+ costCenter: z.string().optional(),
181
+ organization: z.string().optional(),
182
+ division: z.string().optional(),
183
+ department: z.string().optional(),
184
+ manager: z.object({
185
+ value: z.string().optional(),
186
+ $ref: z.string().optional(),
187
+ displayName: z.string().optional()
188
+ }).optional()
189
+ });
190
+ return z.object({
191
+ id: z.string().optional(),
192
+ externalId: z.string().optional(),
193
+ meta: z.object({
194
+ resourceType: z.string().optional(),
195
+ created: z.string().optional(),
196
+ lastModified: z.string().optional(),
197
+ location: z.string().optional(),
198
+ version: z.string().optional()
199
+ }).optional(),
200
+ userName: z.string(),
201
+ name: nameSchema.optional(),
202
+ displayName: z.string().optional(),
203
+ nickName: z.string().optional(),
204
+ profileUrl: z.string().url().optional(),
205
+ title: z.string().optional(),
206
+ userType: z.string().optional(),
207
+ preferredLanguage: z.string().optional(),
208
+ locale: z.string().optional(),
209
+ timezone: z.string().optional(),
210
+ active: z.boolean().optional(),
211
+ password: z.string().optional(),
212
+ emails: z.array(emailSchema).optional(),
213
+ phoneNumbers: z.array(phoneNumberSchema).optional(),
214
+ ims: z.array(
215
+ z.object({
216
+ value: z.string(),
217
+ display: z.string().optional(),
218
+ type: z.string().optional(),
219
+ primary: z.boolean().optional()
220
+ })
221
+ ).optional(),
222
+ photos: z.array(
223
+ z.object({
224
+ value: z.string(),
225
+ display: z.string().optional(),
226
+ type: z.string().optional(),
227
+ primary: z.boolean().optional()
228
+ })
229
+ ).optional(),
230
+ addresses: z.array(addressSchema).optional(),
231
+ groups: z.array(groupSchema).optional(),
232
+ entitlements: z.array(
233
+ z.object({
234
+ value: z.string(),
235
+ display: z.string().optional(),
236
+ type: z.string().optional(),
237
+ primary: z.boolean().optional()
238
+ })
239
+ ).optional(),
240
+ roles: z.array(roleSchema).optional(),
241
+ x509Certificates: z.array(
242
+ z.object({
243
+ value: z.string(),
244
+ display: z.string().optional(),
245
+ type: z.string().optional(),
246
+ primary: z.boolean().optional()
247
+ })
248
+ ).optional(),
249
+ "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": enterpriseUserSchema.optional(),
250
+ schemas: z.array(z.string()).optional()
251
+ });
252
+ },
253
+ /**
254
+ * Creates a Zod validator for tenant creation responses
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * import { zodValidators } from '@enterprisestandard/react-validators-zod';
259
+ *
260
+ * const tenantResponse = zodValidators.createTenantResponse();
261
+ * ```
262
+ */
263
+ createTenantResponse: () => z.object({
264
+ tenantUrl: z.string().url(),
265
+ status: z.enum(["pending", "processing", "completed", "failed"])
266
+ })
267
+ };
268
+ export {
269
+ createZodValidators,
270
+ zodValidators
295
271
  };
272
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type {\n CreateTenantResponse,\n IdTokenClaims,\n OidcCallbackParams,\n ScimUser,\n StandardSchemaV1,\n TokenResponse,\n} from '@enterprisestandard/react';\nimport { z } from 'zod';\n\n/**\n * Pre-built Zod validators for OIDC/SSO flows\n *\n * These validators implement the StandardSchemaV1 interface and can be used\n * directly in SSOHandlerConfig.validation\n *\n * @example\n * ```typescript\n * import { createZodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const validators = createZodValidators();\n *\n * const ssoConfig: SSOHandlerConfig = {\n * loginUrl: '/api/auth/login',\n * validation: validators,\n * };\n * ```\n */\nexport function createZodValidators() {\n const oidcCallbackParamsSchema = z.object({\n code: z.string(),\n state: z.string().optional(),\n session_state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n iss: z.string().optional(),\n });\n\n const idTokenClaimsSchema = z\n .object({\n sub: z.string().optional(),\n iss: z.string().optional(),\n aud: z.string().optional(),\n exp: z.number().optional(),\n iat: z.number().optional(),\n sid: z.string().optional(),\n name: z.string().optional(),\n email: z.string().email().optional(),\n preferred_username: z.string().optional(),\n picture: z.string().url().optional(),\n })\n .passthrough(); // Allow additional claims\n\n const tokenResponseSchema = z.object({\n access_token: z.string(),\n id_token: z.string(),\n refresh_token: z.string().optional(),\n token_type: z.string(),\n expires_in: z.number().optional(),\n scope: z.string().optional(),\n refresh_expires_in: z.number().optional(),\n session_state: z.string().optional(),\n expires: z.string().optional(),\n });\n\n return {\n callbackParams: oidcCallbackParamsSchema as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n idTokenClaims: idTokenClaimsSchema as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n tokenResponse: tokenResponseSchema as unknown as StandardSchemaV1<unknown, TokenResponse>,\n };\n}\n\n/**\n * Individual Zod schema factories for custom usage\n */\nexport const zodValidators = {\n /**\n * Creates a Zod validator for OIDC callback parameters\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const callbackParams = zodValidators.oidcCallbackParams();\n * ```\n */\n oidcCallbackParams: () =>\n z.object({\n code: z.string(),\n state: z.string().optional(),\n session_state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n iss: z.string().optional(),\n }) as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n\n /**\n * Creates a Zod validator for ID token claims\n * Use .extend() to add custom claims validation\n *\n * @example Extending with custom claims\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n * import { z } from 'zod';\n *\n * const customClaimsSchema = (zodValidators.idTokenClaims() as any)\n * .extend({\n * custom_claim: z.string(),\n * roles: z.array(z.string()),\n * });\n * ```\n */\n idTokenClaims: () =>\n z\n .object({\n sub: z.string().optional(),\n iss: z.string().optional(),\n aud: z.string().optional(),\n exp: z.number().optional(),\n iat: z.number().optional(),\n sid: z.string().optional(),\n name: z.string().optional(),\n email: z.string().email().optional(),\n preferred_username: z.string().optional(),\n picture: z.string().url().optional(),\n })\n .passthrough() as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n\n /**\n * Creates a Zod validator for token responses from IdP\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const tokenResponse = zodValidators.tokenResponse();\n * ```\n */\n tokenResponse: () =>\n z.object({\n access_token: z.string(),\n id_token: z.string(),\n refresh_token: z.string().optional(),\n token_type: z.string(),\n expires_in: z.number().optional(),\n scope: z.string().optional(),\n refresh_expires_in: z.number().optional(),\n session_state: z.string().optional(),\n expires: z.string().optional(),\n }) as unknown as StandardSchemaV1<unknown, TokenResponse>,\n\n /**\n * Creates a Zod validator for SCIM User resources\n * Use .extend() to add custom SCIM extensions\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const userValidator = zodValidators.scimUser();\n * ```\n *\n * @example Extending with custom SCIM schema extensions\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n * import { z } from 'zod';\n *\n * const customUserSchema = (zodValidators.scimUser() as any)\n * .extend({\n * 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': z.object({\n * customField: z.string(),\n * }),\n * });\n * ```\n */\n scimUser: () => {\n const nameSchema = z.object({\n formatted: z.string().optional(),\n familyName: z.string().optional(),\n givenName: z.string().optional(),\n middleName: z.string().optional(),\n honorificPrefix: z.string().optional(),\n honorificSuffix: z.string().optional(),\n });\n\n const emailSchema = z.object({\n value: z.string().email(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const phoneNumberSchema = z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const addressSchema = z.object({\n formatted: z.string().optional(),\n streetAddress: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n postalCode: z.string().optional(),\n country: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const groupSchema = z.object({\n value: z.string(),\n $ref: z.string().optional(),\n display: z.string().optional(),\n type: z.string().optional(),\n });\n\n const roleSchema = z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const enterpriseUserSchema = z.object({\n employeeNumber: z.string().optional(),\n costCenter: z.string().optional(),\n organization: z.string().optional(),\n division: z.string().optional(),\n department: z.string().optional(),\n manager: z\n .object({\n value: z.string().optional(),\n $ref: z.string().optional(),\n displayName: z.string().optional(),\n })\n .optional(),\n });\n\n return z.object({\n id: z.string().optional(),\n externalId: z.string().optional(),\n meta: z\n .object({\n resourceType: z.string().optional(),\n created: z.string().optional(),\n lastModified: z.string().optional(),\n location: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n userName: z.string(),\n name: nameSchema.optional(),\n displayName: z.string().optional(),\n nickName: z.string().optional(),\n profileUrl: z.string().url().optional(),\n title: z.string().optional(),\n userType: z.string().optional(),\n preferredLanguage: z.string().optional(),\n locale: z.string().optional(),\n timezone: z.string().optional(),\n active: z.boolean().optional(),\n password: z.string().optional(),\n emails: z.array(emailSchema).optional(),\n phoneNumbers: z.array(phoneNumberSchema).optional(),\n ims: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n photos: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n addresses: z.array(addressSchema).optional(),\n groups: z.array(groupSchema).optional(),\n entitlements: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n roles: z.array(roleSchema).optional(),\n x509Certificates: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User': enterpriseUserSchema.optional(),\n schemas: z.array(z.string()).optional(),\n }) as unknown as StandardSchemaV1<unknown, ScimUser>;\n },\n\n /**\n * Creates a Zod validator for tenant creation responses\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const tenantResponse = zodValidators.createTenantResponse();\n * ```\n */\n createTenantResponse: () =>\n z.object({\n tenantUrl: z.string().url(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']),\n }) as unknown as StandardSchemaV1<unknown, CreateTenantResponse>,\n};\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enterprisestandard/react-validators-zod",
3
- "version": "0.0.5-beta.20260115.2",
3
+ "version": "0.0.5-beta.20260115.4",
4
4
  "description": "Zod validators for @enterprisestandard/react SSO/OIDC flows",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACd,MAAM,2BAA2B,CAAC;AAGnC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB;oBAuCwB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC;mBACnD,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC;mBACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC;EAE5F;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;;;;;OASG;8BAUgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAEhE;;;;;;;;;;;;;;;OAeG;yBAe8B,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC;IAEzE;;;;;;;;;OASG;yBAYgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC;IAE3D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;oBAwIgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAGtD;;;;;;;;;OASG;gCAKgB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACnE,CAAC"}