@enterprisestandard/react-validators-valibot 0.0.5
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.js +81 -0
- package/dist/index.js.map +10 -0
- package/package.json +42 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
function createValibotValidators() {
|
|
4
|
+
const oidcCallbackParamsSchema = v.object({
|
|
5
|
+
code: v.string(),
|
|
6
|
+
state: v.optional(v.string()),
|
|
7
|
+
session_state: v.optional(v.string()),
|
|
8
|
+
error: v.optional(v.string()),
|
|
9
|
+
error_description: v.optional(v.string()),
|
|
10
|
+
error_uri: v.optional(v.string()),
|
|
11
|
+
iss: v.optional(v.string())
|
|
12
|
+
});
|
|
13
|
+
const idTokenClaimsSchema = v.looseObject({
|
|
14
|
+
sub: v.optional(v.string()),
|
|
15
|
+
iss: v.optional(v.string()),
|
|
16
|
+
aud: v.optional(v.string()),
|
|
17
|
+
exp: v.optional(v.number()),
|
|
18
|
+
iat: v.optional(v.number()),
|
|
19
|
+
sid: v.optional(v.string()),
|
|
20
|
+
name: v.optional(v.string()),
|
|
21
|
+
email: v.optional(v.pipe(v.string(), v.email())),
|
|
22
|
+
preferred_username: v.optional(v.string()),
|
|
23
|
+
picture: v.optional(v.pipe(v.string(), v.url()))
|
|
24
|
+
});
|
|
25
|
+
const tokenResponseSchema = v.object({
|
|
26
|
+
access_token: v.string(),
|
|
27
|
+
id_token: v.string(),
|
|
28
|
+
refresh_token: v.optional(v.string()),
|
|
29
|
+
token_type: v.string(),
|
|
30
|
+
expires_in: v.optional(v.number()),
|
|
31
|
+
scope: v.optional(v.string()),
|
|
32
|
+
refresh_expires_in: v.optional(v.number()),
|
|
33
|
+
session_state: v.optional(v.string()),
|
|
34
|
+
expires: v.optional(v.string())
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
callbackParams: oidcCallbackParamsSchema,
|
|
38
|
+
idTokenClaims: idTokenClaimsSchema,
|
|
39
|
+
tokenResponse: tokenResponseSchema
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
var valibotValidators = {
|
|
43
|
+
oidcCallbackParams: () => v.object({
|
|
44
|
+
code: v.string(),
|
|
45
|
+
state: v.optional(v.string()),
|
|
46
|
+
session_state: v.optional(v.string()),
|
|
47
|
+
error: v.optional(v.string()),
|
|
48
|
+
error_description: v.optional(v.string()),
|
|
49
|
+
error_uri: v.optional(v.string()),
|
|
50
|
+
iss: v.optional(v.string())
|
|
51
|
+
}),
|
|
52
|
+
idTokenClaims: () => v.looseObject({
|
|
53
|
+
sub: v.optional(v.string()),
|
|
54
|
+
iss: v.optional(v.string()),
|
|
55
|
+
aud: v.optional(v.string()),
|
|
56
|
+
exp: v.optional(v.number()),
|
|
57
|
+
iat: v.optional(v.number()),
|
|
58
|
+
sid: v.optional(v.string()),
|
|
59
|
+
name: v.optional(v.string()),
|
|
60
|
+
email: v.optional(v.pipe(v.string(), v.email())),
|
|
61
|
+
preferred_username: v.optional(v.string()),
|
|
62
|
+
picture: v.optional(v.pipe(v.string(), v.url()))
|
|
63
|
+
}),
|
|
64
|
+
tokenResponse: () => v.object({
|
|
65
|
+
access_token: v.string(),
|
|
66
|
+
id_token: v.string(),
|
|
67
|
+
refresh_token: v.optional(v.string()),
|
|
68
|
+
token_type: v.string(),
|
|
69
|
+
expires_in: v.optional(v.number()),
|
|
70
|
+
scope: v.optional(v.string()),
|
|
71
|
+
refresh_expires_in: v.optional(v.number()),
|
|
72
|
+
session_state: v.optional(v.string()),
|
|
73
|
+
expires: v.optional(v.string())
|
|
74
|
+
})
|
|
75
|
+
};
|
|
76
|
+
export {
|
|
77
|
+
valibotValidators,
|
|
78
|
+
createValibotValidators
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
//# debugId=48305A53B2E2D5DF64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import * as v from 'valibot';\nimport type { StandardSchemaV1 } from '@enterprisestandard/react';\nimport type { OidcCallbackParams, TokenResponse, IdTokenClaims } from '@enterprisestandard/react';\n\n/**\n * Pre-built Valibot 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 { createValibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const validators = createValibotValidators();\n *\n * const ssoConfig: SSOHandlerConfig = {\n * loginUrl: '/api/auth/login',\n * validation: validators,\n * };\n * ```\n */\nexport function createValibotValidators() {\n const oidcCallbackParamsSchema = v.object({\n code: v.string(),\n state: v.optional(v.string()),\n session_state: v.optional(v.string()),\n error: v.optional(v.string()),\n error_description: v.optional(v.string()),\n error_uri: v.optional(v.string()),\n iss: v.optional(v.string()),\n });\n\n const idTokenClaimsSchema = v.looseObject({\n sub: v.optional(v.string()),\n iss: v.optional(v.string()),\n aud: v.optional(v.string()),\n exp: v.optional(v.number()),\n iat: v.optional(v.number()),\n sid: v.optional(v.string()),\n name: v.optional(v.string()),\n email: v.optional(v.pipe(v.string(), v.email())),\n preferred_username: v.optional(v.string()),\n picture: v.optional(v.pipe(v.string(), v.url())),\n });\n\n const tokenResponseSchema = v.object({\n access_token: v.string(),\n id_token: v.string(),\n refresh_token: v.optional(v.string()),\n token_type: v.string(),\n expires_in: v.optional(v.number()),\n scope: v.optional(v.string()),\n refresh_expires_in: v.optional(v.number()),\n session_state: v.optional(v.string()),\n expires: v.optional(v.string()),\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 Valibot schema factories for custom usage\n */\nexport const valibotValidators = {\n /**\n * Creates a Valibot validator for OIDC callback parameters\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const callbackParams = valibotValidators.oidcCallbackParams();\n * ```\n */\n oidcCallbackParams: () =>\n v.object({\n code: v.string(),\n state: v.optional(v.string()),\n session_state: v.optional(v.string()),\n error: v.optional(v.string()),\n error_description: v.optional(v.string()),\n error_uri: v.optional(v.string()),\n iss: v.optional(v.string()),\n }) as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n\n /**\n * Creates a Valibot validator for ID token claims\n * Use v.object() with looseObject to extend with custom claims\n *\n * @example Extending with custom claims\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n * import * as v from 'valibot';\n *\n * const customClaimsSchema = v.looseObject({\n * ...(valibotValidators.idTokenClaims() as any).entries,\n * custom_claim: v.string(),\n * roles: v.array(v.string()),\n * });\n * ```\n */\n idTokenClaims: () =>\n v.looseObject({\n sub: v.optional(v.string()),\n iss: v.optional(v.string()),\n aud: v.optional(v.string()),\n exp: v.optional(v.number()),\n iat: v.optional(v.number()),\n sid: v.optional(v.string()),\n name: v.optional(v.string()),\n email: v.optional(v.pipe(v.string(), v.email())),\n preferred_username: v.optional(v.string()),\n picture: v.optional(v.pipe(v.string(), v.url())),\n }) as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n\n /**\n * Creates a Valibot validator for token responses from IdP\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const tokenResponse = valibotValidators.tokenResponse();\n * ```\n */\n tokenResponse: () =>\n v.object({\n access_token: v.string(),\n id_token: v.string(),\n refresh_token: v.optional(v.string()),\n token_type: v.string(),\n expires_in: v.optional(v.number()),\n scope: v.optional(v.string()),\n refresh_expires_in: v.optional(v.number()),\n session_state: v.optional(v.string()),\n expires: v.optional(v.string()),\n }) as unknown as StandardSchemaV1<unknown, TokenResponse>,\n};\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "48305A53B2E2D5DF64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@enterprisestandard/react-validators-valibot",
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"description": "Valibot validators for @enterprisestandard/react SSO/OIDC flows",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "bun run build.ts",
|
|
20
|
+
"prepublishOnly": "bun run build"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"enterprisestandard",
|
|
24
|
+
"oidc",
|
|
25
|
+
"oauth",
|
|
26
|
+
"sso",
|
|
27
|
+
"validation",
|
|
28
|
+
"valibot",
|
|
29
|
+
"standardschema"
|
|
30
|
+
],
|
|
31
|
+
"author": "Enterprise Standard",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@enterprisestandard/react": "^0.0.5",
|
|
35
|
+
"valibot": "^1.0.0 || ^0.30.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@enterprisestandard/react": "workspace:*",
|
|
39
|
+
"typescript": "^5.7.3",
|
|
40
|
+
"valibot": "^1.2.0"
|
|
41
|
+
}
|
|
42
|
+
}
|