@noresponse/node 2.0.1 → 2.0.3
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/CHANGELOG.md +8 -0
- package/dist/commonjs/auth.d.ts +8 -1
- package/dist/commonjs/auth.d.ts.map +1 -1
- package/dist/commonjs/auth.js +121 -96
- package/dist/commonjs/auth.js.map +1 -1
- package/dist/commonjs/claim-map.d.ts +182 -0
- package/dist/commonjs/claim-map.d.ts.map +1 -0
- package/dist/commonjs/claim-map.js +237 -0
- package/dist/commonjs/claim-map.js.map +1 -0
- package/dist/commonjs/lib/config.d.ts +2 -2
- package/dist/commonjs/lib/config.js +2 -2
- package/dist/esm/auth.d.ts +8 -1
- package/dist/esm/auth.d.ts.map +1 -1
- package/dist/esm/auth.js +121 -96
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/claim-map.d.ts +182 -0
- package/dist/esm/claim-map.d.ts.map +1 -0
- package/dist/esm/claim-map.js +234 -0
- package/dist/esm/claim-map.js.map +1 -0
- package/dist/esm/lib/config.d.ts +2 -2
- package/dist/esm/lib/config.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.3
|
|
4
|
+
|
|
5
|
+
No changes detected.
|
|
6
|
+
|
|
7
|
+
## 2.0.2
|
|
8
|
+
|
|
9
|
+
API changes since the previous release are not listed: no earlier document was recorded.
|
|
10
|
+
|
|
3
11
|
All notable changes to `@noresponse/node`. The format follows Keep a Changelog and the package follows Semantic Versioning.
|
|
4
12
|
|
|
5
13
|
## 2.0.0
|
package/dist/commonjs/auth.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Auth context adapters.
|
|
2
|
+
* Auth context adapters. Generated by tools/generate_auth_adapters.py; do not edit.
|
|
3
3
|
*
|
|
4
4
|
* Each adapter maps claims your backend has already verified into the
|
|
5
5
|
* `authContext` of an assessment request. Pass verified claims, not a raw token.
|
|
6
|
+
*
|
|
7
|
+
* The mapping is the table in `claim-map.ts`, a copy of
|
|
8
|
+
* contracts/api/v1/fixtures/assessment-contract/auth-context-claim-map.json,
|
|
9
|
+
* run by the small interpreter below. Every SDK runs the same table and the
|
|
10
|
+
* same vectors (tests/fixtures/auth-context-vectors.json). A claim that is
|
|
11
|
+
* missing, mistyped or out of range maps to absent, never to a stronger
|
|
12
|
+
* assurance.
|
|
6
13
|
*/
|
|
7
14
|
import type { AuthContext } from "./models/auth-context.js";
|
|
8
15
|
export type VerifiedClaims = Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AA0IxD,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,GAAE,oBAAyB,GAAG,WAAW,CAEpG;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,GAAE,oBAAyB,GAAG,WAAW,CAEnG;AAED,kHAAkH;AAClH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,GAAE,oBAAyB,GAAG,WAAW,CAEnG;AAED,uGAAuG;AACvG,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,GAAE,oBAAyB,GAAG,WAAW,CAGpH"}
|
package/dist/commonjs/auth.js
CHANGED
|
@@ -4,126 +4,151 @@ exports.fromWorkOS = fromWorkOS;
|
|
|
4
4
|
exports.fromClerk = fromClerk;
|
|
5
5
|
exports.fromAuth0 = fromAuth0;
|
|
6
6
|
exports.fromOIDC = fromOIDC;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const claim_map_js_1 = require("./claim-map.js");
|
|
8
|
+
const kinds = new Map(Object.entries(claim_map_js_1.CLAIM_MAP.kinds).map(([name, k]) => [name, { re: new RegExp("^(?:" + k.pattern + ")$"), max: k.maxLength }]));
|
|
9
|
+
const slug = new RegExp("^(?:" + claim_map_js_1.CLAIM_MAP.slug + ")$");
|
|
10
|
+
const splitters = { whitespace: /[ \t\r\n\f\v]+/, comma_whitespace: /[ \t\r\n\f\v,]+/ };
|
|
11
|
+
const MAX_TIME = 253402300799;
|
|
12
|
+
function object(value) {
|
|
13
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : undefined;
|
|
9
14
|
}
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
function lookup(claims, path) {
|
|
16
|
+
let current = claims;
|
|
17
|
+
for (const key of path.split(".")) {
|
|
18
|
+
const record = object(current);
|
|
19
|
+
if (!record || !Object.hasOwn(record, key))
|
|
20
|
+
return undefined;
|
|
21
|
+
current = record[key];
|
|
16
22
|
}
|
|
17
|
-
return
|
|
23
|
+
return current;
|
|
18
24
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
function bounded(values, limit, maxLength) {
|
|
23
|
-
const kept = values
|
|
24
|
-
.filter((item) => typeof item === "string" && item.length > 0 && [...item].length <= maxLength)
|
|
25
|
-
.slice(0, limit);
|
|
26
|
-
return kept.length ? kept : undefined;
|
|
25
|
+
function matches(kind, value) {
|
|
26
|
+
const k = kinds.get(kind);
|
|
27
|
+
return typeof value === "string" && [...value].length <= k.max && k.re.test(value);
|
|
27
28
|
}
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
return bounded(value.split(/\s+/), limit, maxLength);
|
|
31
|
-
return Array.isArray(value) ? bounded(value, limit, maxLength) : undefined;
|
|
29
|
+
function lower(value) {
|
|
30
|
+
return value.replace(/[A-Z]/g, (c) => c.toLowerCase());
|
|
32
31
|
}
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
function mapTime(claims, rule) {
|
|
33
|
+
for (const path of rule.claims ?? []) {
|
|
34
|
+
const value = lookup(claims, path);
|
|
35
|
+
if (typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= MAX_TIME) {
|
|
36
|
+
// Whole UTC seconds; the fraction is truncated.
|
|
37
|
+
return new Date(Math.trunc(value) * 1000).toISOString().replace(".000Z", "Z");
|
|
38
|
+
}
|
|
39
|
+
if (matches("time", value))
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
return undefined;
|
|
37
43
|
}
|
|
38
|
-
function
|
|
39
|
-
|
|
44
|
+
function mapList(claims, rule) {
|
|
45
|
+
for (const path of rule.claims ?? []) {
|
|
46
|
+
const value = lookup(claims, path);
|
|
47
|
+
let items = [];
|
|
48
|
+
if (typeof value === "string")
|
|
49
|
+
items = rule.split === "none" ? [value] : value.split(splitters[rule.split ?? "whitespace"]);
|
|
50
|
+
else if (Array.isArray(value))
|
|
51
|
+
items = value;
|
|
52
|
+
const kept = items.filter((item) => matches(rule.kind, item)).slice(0, rule.max);
|
|
53
|
+
if (kept.length)
|
|
54
|
+
return kept;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
40
57
|
}
|
|
41
|
-
function
|
|
42
|
-
|
|
58
|
+
function mapRule(claims, rule) {
|
|
59
|
+
switch (rule.op) {
|
|
60
|
+
case "id":
|
|
61
|
+
for (const path of rule.claims ?? []) {
|
|
62
|
+
const value = lookup(claims, path);
|
|
63
|
+
if (matches(rule.kind, value))
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
case "list":
|
|
68
|
+
return mapList(claims, rule);
|
|
69
|
+
case "time":
|
|
70
|
+
return mapTime(claims, rule);
|
|
71
|
+
case "bool":
|
|
72
|
+
for (const path of rule.claims ?? []) {
|
|
73
|
+
const value = lookup(claims, path);
|
|
74
|
+
if (typeof value === "boolean")
|
|
75
|
+
return value;
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
case "actor": {
|
|
79
|
+
const value = lookup(claims, rule.claims[0]);
|
|
80
|
+
const record = object(value);
|
|
81
|
+
if (record)
|
|
82
|
+
return [record["sub"], record["email"]].some((item) => typeof item === "string" && item.length > 0);
|
|
83
|
+
return typeof value === "string" && value.length > 0;
|
|
84
|
+
}
|
|
85
|
+
case "mfa_factor_age": {
|
|
86
|
+
const value = lookup(claims, rule.claim);
|
|
87
|
+
const age = Array.isArray(value) ? value[rule.index] : undefined;
|
|
88
|
+
const seconds = typeof age === "number" ? age * rule.unitSeconds : NaN;
|
|
89
|
+
return seconds >= 0 && seconds <= rule.maxSeconds ? { present: true, age_seconds: Math.trunc(seconds) } : undefined;
|
|
90
|
+
}
|
|
91
|
+
case "mfa_methods": {
|
|
92
|
+
const value = lookup(claims, rule.claim);
|
|
93
|
+
if (!Array.isArray(value))
|
|
94
|
+
return undefined;
|
|
95
|
+
const kept = value.filter((item) => matches(rule.kind, item)).slice(0, rule.max);
|
|
96
|
+
const methods = kept.filter((item) => !rule.ignore.includes(lower(item)));
|
|
97
|
+
if (!methods.length)
|
|
98
|
+
return undefined;
|
|
99
|
+
return { present: kept.some((item) => lower(item) === rule.mfaValue), methods };
|
|
100
|
+
}
|
|
101
|
+
default:
|
|
102
|
+
throw new Error("unknown claim map op " + rule.op);
|
|
103
|
+
}
|
|
43
104
|
}
|
|
44
|
-
|
|
105
|
+
const camel = (key) => key.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
|
|
106
|
+
const snake = (key) => key.replace(/[A-Z]/g, (c) => "_" + c.toLowerCase());
|
|
107
|
+
function rekey(value, fn) {
|
|
45
108
|
const record = object(value);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined));
|
|
109
|
+
if (!record)
|
|
110
|
+
return value;
|
|
111
|
+
return Object.fromEntries(Object.entries(record).map(([k, v]) => [fn(k), k === "mfa" || k === "methods" ? rekey(v, fn) : v]));
|
|
50
112
|
}
|
|
51
|
-
function
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
|
|
113
|
+
function build(name, claims, overrides, provider) {
|
|
114
|
+
const spec = claim_map_js_1.CLAIM_MAP.providers[name];
|
|
115
|
+
const rules = { ...claim_map_js_1.CLAIM_MAP.base, ...spec.fields };
|
|
116
|
+
for (const field of spec.disable ?? [])
|
|
117
|
+
delete rules[field];
|
|
118
|
+
const wire = { provider, ...claim_map_js_1.CLAIM_MAP.constants };
|
|
119
|
+
for (const [field, rule] of Object.entries(rules)) {
|
|
120
|
+
const value = mapRule(claims, rule);
|
|
121
|
+
if (value !== undefined)
|
|
122
|
+
wire[field] = value;
|
|
123
|
+
}
|
|
124
|
+
for (const [field, value] of Object.entries(rekey(overrides, snake))) {
|
|
125
|
+
if (value !== undefined && value !== null)
|
|
126
|
+
wire[field] = value;
|
|
127
|
+
}
|
|
128
|
+
const audiences = wire["audiences"];
|
|
129
|
+
if (Array.isArray(audiences) && audiences.length && wire["audience"] === undefined)
|
|
130
|
+
wire["audience"] = audiences[0];
|
|
131
|
+
if (typeof wire["issuer"] !== "string" || !wire["issuer"] || typeof wire["subject"] !== "string" || !wire["subject"]) {
|
|
55
132
|
throw new TypeError("NoResponse auth context requires a verified issuer and subject");
|
|
56
|
-
const mergedAudiences = overrides.audiences ?? audiences(claims["aud"]);
|
|
57
|
-
const context = { provider, issuer, subject, verified: true, transport: "backend" };
|
|
58
|
-
if (mergedAudiences?.length) {
|
|
59
|
-
context.audiences = mergedAudiences;
|
|
60
|
-
context.audience = overrides.audience ?? mergedAudiences[0];
|
|
61
133
|
}
|
|
62
|
-
|
|
63
|
-
if (options.includeIssuedAt !== false && issuedAt)
|
|
64
|
-
context.issuedAt = issuedAt;
|
|
65
|
-
const expiresAt = iso(claims["exp"]);
|
|
66
|
-
if (expiresAt)
|
|
67
|
-
context.expiresAt = expiresAt;
|
|
68
|
-
const authTime = iso(claims["auth_time"]);
|
|
69
|
-
if (authTime)
|
|
70
|
-
context.authTime = authTime;
|
|
71
|
-
const sessionId = text(claims["sid"]);
|
|
72
|
-
if (sessionId)
|
|
73
|
-
context.sessionId = sessionId;
|
|
74
|
-
const tokenId = text(claims["jti"]);
|
|
75
|
-
if (tokenId)
|
|
76
|
-
context.tokenId = tokenId;
|
|
77
|
-
return { ...context, ...defined(overrides) };
|
|
134
|
+
return rekey(wire, camel);
|
|
78
135
|
}
|
|
79
136
|
/** Map verified WorkOS AuthKit claims plus verified user or session record overrides. */
|
|
80
137
|
function fromWorkOS(claims, overrides = {}) {
|
|
81
|
-
|
|
82
|
-
organizationId: text(claims["org_id"]),
|
|
83
|
-
roles: strings(claims["roles"] ?? claims["role"]),
|
|
84
|
-
scopes: strings(claims["permissions"]),
|
|
85
|
-
impersonated: actorPresent(claims["act"]),
|
|
86
|
-
};
|
|
87
|
-
return base("workos", claims, { ...defaults, ...overrides });
|
|
138
|
+
return build("workos", claims, overrides, "workos");
|
|
88
139
|
}
|
|
89
140
|
/** Map verified Clerk session claims. Pass Session.createdAt as sessionCreatedAt. */
|
|
90
141
|
function fromClerk(claims, overrides = {}) {
|
|
91
|
-
|
|
92
|
-
const secondFactorAgeMinutes = Array.isArray(claims["fva"]) && typeof claims["fva"][1] === "number" && Number.isFinite(claims["fva"][1]) ? claims["fva"][1] : undefined;
|
|
93
|
-
const mfa = secondFactorAgeMinutes !== undefined && secondFactorAgeMinutes >= 0
|
|
94
|
-
? { present: true, ageSeconds: Math.trunc(secondFactorAgeMinutes * 60) }
|
|
95
|
-
: undefined;
|
|
96
|
-
const defaults = {
|
|
97
|
-
organizationId: text(org?.["id"]) ?? text(claims["org_id"]),
|
|
98
|
-
// Clerk's role claim is one role slug, not a list.
|
|
99
|
-
roles: bounded([org?.["rol"]], 32, 64) ?? bounded([claims["org_role"]], 32, 64),
|
|
100
|
-
scopes: delimitedStrings(org?.["per"]) ?? delimitedStrings(claims["org_permissions"]),
|
|
101
|
-
impersonated: actorPresent(claims["act"]),
|
|
102
|
-
...(mfa ? { mfa } : {}),
|
|
103
|
-
};
|
|
104
|
-
// iat is a 60-second token refresh clock, so it is not sent as issuedAt; session age is the sessionCreatedAt override.
|
|
105
|
-
return base("clerk", claims, { ...defaults, ...overrides }, { includeIssuedAt: false });
|
|
142
|
+
return build("clerk", claims, overrides, "clerk");
|
|
106
143
|
}
|
|
107
144
|
/** Map verified Auth0 ID token, userinfo or normalised session claims. Do not pass an opaque API access token. */
|
|
108
145
|
function fromAuth0(claims, overrides = {}) {
|
|
109
|
-
|
|
110
|
-
const mfaMethods = amr?.filter((method) => method.toLowerCase() !== "pwd");
|
|
111
|
-
const defaults = {
|
|
112
|
-
organizationId: text(claims["org_id"]),
|
|
113
|
-
scopes: strings(claims["scope"]) ?? strings(claims["permissions"]),
|
|
114
|
-
emailVerified: typeof claims["email_verified"] === "boolean" ? claims["email_verified"] : undefined,
|
|
115
|
-
phoneVerified: typeof claims["phone_number_verified"] === "boolean" ? claims["phone_number_verified"] : undefined,
|
|
116
|
-
impersonated: actorPresent(claims["act"]),
|
|
117
|
-
...(mfaMethods?.length
|
|
118
|
-
? { mfa: { present: amr?.some((method) => method.toLowerCase() === "mfa") ?? false, methods: mfaMethods } }
|
|
119
|
-
: {}),
|
|
120
|
-
};
|
|
121
|
-
return base("auth0", claims, { ...defaults, ...overrides });
|
|
146
|
+
return build("auth0", claims, overrides, "auth0");
|
|
122
147
|
}
|
|
123
148
|
/** Generic OIDC adapter for providers without a first-class helper. `provider` is a lowercase slug. */
|
|
124
149
|
function fromOIDC(provider, claims, overrides = {}) {
|
|
125
|
-
if (
|
|
150
|
+
if (typeof provider !== "string" || !slug.test(provider))
|
|
126
151
|
throw new TypeError("provider must be a lowercase provider slug");
|
|
127
|
-
return
|
|
152
|
+
return build("oidc", claims, overrides, provider);
|
|
128
153
|
}
|
|
129
154
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":";;;;;;AAcA,iDAA2C;AAqB3C,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,OAAO,CAAC,wBAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAU,CAAC,CACrI,CAAC;AACF,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,wBAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACxD,MAAM,SAAS,GAA2B,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;AAChH,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B,SAAS,MAAM,CAAC,KAAc,EAAoB;IAChD,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CAC3G;AACD,SAAS,MAAM,CAAC,MAAY,EAAE,IAAY,EAAW;IACnD,IAAI,OAAO,GAAY,MAAM,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7D,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CAChB;AACD,SAAS,OAAO,CAAC,IAAY,EAAE,KAAc,EAAmB;IAC9D,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IAC3B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAAA,CACpF;AACD,SAAS,KAAK,CAAC,KAAa,EAAU;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAAA,CACxD;AAED,SAAS,OAAO,CAAC,MAAY,EAAE,IAAU,EAAsB;IAC7D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3F,gDAAgD;YAChD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CAClB;AACD,SAAS,OAAO,CAAC,MAAY,EAAE,IAAU,EAAwB;IAC/D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,GAAc,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAE,CAAC,CAAC;aACxH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAgB,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CAClB;AACD,SAAS,OAAO,CAAC,MAAY,EAAE,IAAU,EAAW;IAClD,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAK,EAAE,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC/C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM;YACT,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,IAAI,OAAO,KAAK,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;YAC/C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAO,CAAC,CAAC,CAAE,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChH,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAM,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,GAAG,CAAC;YACxE,OAAO,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvH,CAAC;QACD,KAAK,aAAa,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAa,CAAC;YAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QAClF,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;AAAA,CACF;AAED,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnG,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3F,SAAS,KAAK,CAAC,KAAc,EAAE,EAA2B,EAAW;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC/H;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,MAAsB,EAAE,SAA+B,EAAE,QAAgB,EAAe;IACnH,MAAM,IAAI,GAAG,wBAAS,CAAC,SAAS,CAAC,IAAwC,CAAoE,CAAC;IAC9I,MAAM,KAAK,GAAyB,EAAE,GAAI,wBAAS,CAAC,IAAwC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/G,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAS,EAAE,QAAQ,EAAE,GAAG,wBAAS,CAAC,SAAS,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAS,CAAC,EAAE,CAAC;QAC7E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACjE,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACpH,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACrH,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAgB,CAAC;AAAA,CAC1C;AAED,yFAAyF;AACzF,oBAA2B,MAAsB,EAAE,SAAS,GAAyB,EAAE,EAAe;IACpG,OAAO,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,CACrD;AAED,qFAAqF;AACrF,mBAA0B,MAAsB,EAAE,SAAS,GAAyB,EAAE,EAAe;IACnG,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAAA,CACnD;AAED,kHAAkH;AAClH,mBAA0B,MAAsB,EAAE,SAAS,GAAyB,EAAE,EAAe;IACnG,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAAA,CACnD;AAED,uGAAuG;AACvG,kBAAyB,QAAgB,EAAE,MAAsB,EAAE,SAAS,GAAyB,EAAE,EAAe;IACpH,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IAC5H,OAAO,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,CACnD"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
export declare const CLAIM_MAP: {
|
|
2
|
+
readonly version: 1;
|
|
3
|
+
readonly kinds: {
|
|
4
|
+
readonly id: {
|
|
5
|
+
readonly pattern: "[A-Za-z0-9._:@/|+=~-]+";
|
|
6
|
+
readonly maxLength: 256;
|
|
7
|
+
};
|
|
8
|
+
readonly audience: {
|
|
9
|
+
readonly pattern: "[A-Za-z0-9._:/-]+";
|
|
10
|
+
readonly maxLength: 256;
|
|
11
|
+
};
|
|
12
|
+
readonly role: {
|
|
13
|
+
readonly pattern: "[A-Za-z0-9._:@/-]+";
|
|
14
|
+
readonly maxLength: 64;
|
|
15
|
+
};
|
|
16
|
+
readonly method: {
|
|
17
|
+
readonly pattern: "[A-Za-z0-9._:-]+";
|
|
18
|
+
readonly maxLength: 32;
|
|
19
|
+
};
|
|
20
|
+
readonly issuer: {
|
|
21
|
+
readonly pattern: "https://[\\x21-\\x7e]+";
|
|
22
|
+
readonly maxLength: 256;
|
|
23
|
+
};
|
|
24
|
+
readonly time: {
|
|
25
|
+
readonly pattern: "[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\\.[0-9]+)?(Z|[+-]([01][0-9]|2[0-3]):[0-5][0-9])";
|
|
26
|
+
readonly maxLength: 64;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
readonly slug: "[a-z0-9][a-z0-9._-]{1,31}";
|
|
30
|
+
readonly constants: {
|
|
31
|
+
readonly verified: true;
|
|
32
|
+
readonly transport: "backend";
|
|
33
|
+
};
|
|
34
|
+
readonly base: {
|
|
35
|
+
readonly issuer: {
|
|
36
|
+
readonly op: "id";
|
|
37
|
+
readonly kind: "issuer";
|
|
38
|
+
readonly claims: readonly ["iss"];
|
|
39
|
+
readonly required: true;
|
|
40
|
+
};
|
|
41
|
+
readonly subject: {
|
|
42
|
+
readonly op: "id";
|
|
43
|
+
readonly kind: "id";
|
|
44
|
+
readonly claims: readonly ["sub"];
|
|
45
|
+
readonly required: true;
|
|
46
|
+
};
|
|
47
|
+
readonly audiences: {
|
|
48
|
+
readonly op: "list";
|
|
49
|
+
readonly kind: "audience";
|
|
50
|
+
readonly claims: readonly ["aud"];
|
|
51
|
+
readonly split: "whitespace";
|
|
52
|
+
readonly max: 8;
|
|
53
|
+
};
|
|
54
|
+
readonly issued_at: {
|
|
55
|
+
readonly op: "time";
|
|
56
|
+
readonly claims: readonly ["iat"];
|
|
57
|
+
};
|
|
58
|
+
readonly expires_at: {
|
|
59
|
+
readonly op: "time";
|
|
60
|
+
readonly claims: readonly ["exp"];
|
|
61
|
+
};
|
|
62
|
+
readonly auth_time: {
|
|
63
|
+
readonly op: "time";
|
|
64
|
+
readonly claims: readonly ["auth_time"];
|
|
65
|
+
};
|
|
66
|
+
readonly session_id: {
|
|
67
|
+
readonly op: "id";
|
|
68
|
+
readonly kind: "id";
|
|
69
|
+
readonly claims: readonly ["sid"];
|
|
70
|
+
};
|
|
71
|
+
readonly token_id: {
|
|
72
|
+
readonly op: "id";
|
|
73
|
+
readonly kind: "id";
|
|
74
|
+
readonly claims: readonly ["jti"];
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
readonly providers: {
|
|
78
|
+
readonly workos: {
|
|
79
|
+
readonly fields: {
|
|
80
|
+
readonly organization_id: {
|
|
81
|
+
readonly op: "id";
|
|
82
|
+
readonly kind: "id";
|
|
83
|
+
readonly claims: readonly ["org_id"];
|
|
84
|
+
};
|
|
85
|
+
readonly roles: {
|
|
86
|
+
readonly op: "list";
|
|
87
|
+
readonly kind: "role";
|
|
88
|
+
readonly claims: readonly ["roles", "role"];
|
|
89
|
+
readonly split: "whitespace";
|
|
90
|
+
readonly max: 32;
|
|
91
|
+
};
|
|
92
|
+
readonly scopes: {
|
|
93
|
+
readonly op: "list";
|
|
94
|
+
readonly kind: "role";
|
|
95
|
+
readonly claims: readonly ["permissions"];
|
|
96
|
+
readonly split: "whitespace";
|
|
97
|
+
readonly max: 32;
|
|
98
|
+
};
|
|
99
|
+
readonly impersonated: {
|
|
100
|
+
readonly op: "actor";
|
|
101
|
+
readonly claims: readonly ["act"];
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
readonly clerk: {
|
|
106
|
+
readonly disable: readonly ["issued_at"];
|
|
107
|
+
readonly fields: {
|
|
108
|
+
readonly organization_id: {
|
|
109
|
+
readonly op: "id";
|
|
110
|
+
readonly kind: "id";
|
|
111
|
+
readonly claims: readonly ["o.id", "org_id"];
|
|
112
|
+
};
|
|
113
|
+
readonly roles: {
|
|
114
|
+
readonly op: "list";
|
|
115
|
+
readonly kind: "role";
|
|
116
|
+
readonly claims: readonly ["o.rol", "org_role"];
|
|
117
|
+
readonly split: "none";
|
|
118
|
+
readonly max: 32;
|
|
119
|
+
};
|
|
120
|
+
readonly scopes: {
|
|
121
|
+
readonly op: "list";
|
|
122
|
+
readonly kind: "role";
|
|
123
|
+
readonly claims: readonly ["o.per", "org_permissions"];
|
|
124
|
+
readonly split: "comma_whitespace";
|
|
125
|
+
readonly max: 32;
|
|
126
|
+
};
|
|
127
|
+
readonly impersonated: {
|
|
128
|
+
readonly op: "actor";
|
|
129
|
+
readonly claims: readonly ["act"];
|
|
130
|
+
};
|
|
131
|
+
readonly mfa: {
|
|
132
|
+
readonly op: "mfa_factor_age";
|
|
133
|
+
readonly claim: "fva";
|
|
134
|
+
readonly index: 1;
|
|
135
|
+
readonly unitSeconds: 60;
|
|
136
|
+
readonly maxSeconds: 315360000;
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
readonly auth0: {
|
|
141
|
+
readonly fields: {
|
|
142
|
+
readonly organization_id: {
|
|
143
|
+
readonly op: "id";
|
|
144
|
+
readonly kind: "id";
|
|
145
|
+
readonly claims: readonly ["org_id"];
|
|
146
|
+
};
|
|
147
|
+
readonly scopes: {
|
|
148
|
+
readonly op: "list";
|
|
149
|
+
readonly kind: "role";
|
|
150
|
+
readonly claims: readonly ["scope", "permissions"];
|
|
151
|
+
readonly split: "whitespace";
|
|
152
|
+
readonly max: 32;
|
|
153
|
+
};
|
|
154
|
+
readonly email_verified: {
|
|
155
|
+
readonly op: "bool";
|
|
156
|
+
readonly claims: readonly ["email_verified"];
|
|
157
|
+
};
|
|
158
|
+
readonly phone_verified: {
|
|
159
|
+
readonly op: "bool";
|
|
160
|
+
readonly claims: readonly ["phone_number_verified"];
|
|
161
|
+
};
|
|
162
|
+
readonly impersonated: {
|
|
163
|
+
readonly op: "actor";
|
|
164
|
+
readonly claims: readonly ["act"];
|
|
165
|
+
};
|
|
166
|
+
readonly mfa: {
|
|
167
|
+
readonly op: "mfa_methods";
|
|
168
|
+
readonly kind: "method";
|
|
169
|
+
readonly claim: "amr";
|
|
170
|
+
readonly max: 8;
|
|
171
|
+
readonly mfaValue: "mfa";
|
|
172
|
+
readonly ignore: readonly ["pwd"];
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
readonly oidc: {
|
|
177
|
+
readonly slugArgument: true;
|
|
178
|
+
readonly fields: {};
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=claim-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-map.d.ts","sourceRoot":"","sources":["../../src/claim-map.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuOZ,CAAC"}
|