@schemavaults/auth-common 0.10.10 → 0.10.15
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 +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/oauth2-state-schema.d.ts +29 -0
- package/dist/oauth2-state-schema.js +71 -0
- package/dist/oauth2-state-schema.js.map +1 -0
- package/dist/request_tokens_result.d.ts +40 -0
- package/dist/timing-safe-string-equal.d.ts +13 -0
- package/dist/timing-safe-string-equal.js +24 -0
- package/dist/timing-safe-string-equal.js.map +1 -0
- package/dist/token-data/token-data.d.ts +9 -0
- package/dist/token-data/token-data.js +1 -0
- package/dist/token-data/token-data.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -28,3 +28,6 @@ export { determineRefreshTokenCookieSameSiteValue } from "./determineRefreshToke
|
|
|
28
28
|
export { authorizeClientApplicationFormType } from "./authorize-client-application-form-type";
|
|
29
29
|
export { paginationOptionsSchema, DEFAULT_PAGINATION_PAGE_INDEX, DEFAULT_PAGINATION_PAGE_SIZE, isValidPaginationOptions, } from "./pagination";
|
|
30
30
|
export type { PaginationOptions } from "./pagination";
|
|
31
|
+
export { timingSafeStringEqual } from "./timing-safe-string-equal";
|
|
32
|
+
export { oauth2StateSchema, OAUTH2_STATE_VSCHAR_REGEX, parseOAuth2State, OAuth2StateValidationError, } from "./oauth2-state-schema";
|
|
33
|
+
export type { OAuth2State } from "./oauth2-state-schema";
|
package/dist/index.js
CHANGED
|
@@ -19,4 +19,6 @@ export { AccessTokenCookieName, AccessTokenExpiryCookieName, } from "./AccessTok
|
|
|
19
19
|
export { determineRefreshTokenCookieSameSiteValue } from "./determineRefreshTokenCookieSameSiteValue";
|
|
20
20
|
export { authorizeClientApplicationFormType } from "./authorize-client-application-form-type";
|
|
21
21
|
export { paginationOptionsSchema, DEFAULT_PAGINATION_PAGE_INDEX, DEFAULT_PAGINATION_PAGE_SIZE, isValidPaginationOptions, } from "./pagination";
|
|
22
|
+
export { timingSafeStringEqual } from "./timing-safe-string-equal";
|
|
23
|
+
export { oauth2StateSchema, OAUTH2_STATE_VSCHAR_REGEX, parseOAuth2State, OAuth2StateValidationError, } from "./oauth2-state-schema";
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,GACf,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAE5D,cAAc,eAAe,CAAC;AAG9B,mBAAmB;AACnB,cAAc,cAAc,CAAC;AAM7B,cAAc,cAAc,CAAC;AAG7B,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EAEzB,uCAAuC,GAExC,MAAM,yBAAyB,CAAC;AAEjC,cAAc,mCAAmC,CAAC;AAGlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EACb,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,iCAAiC,EACjC,kCAAkC,EAClC,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AAEtG,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAE9F,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,GACf,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAE5D,cAAc,eAAe,CAAC;AAG9B,mBAAmB;AACnB,cAAc,cAAc,CAAC;AAM7B,cAAc,cAAc,CAAC;AAG7B,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EAEzB,uCAAuC,GAExC,MAAM,yBAAyB,CAAC;AAEjC,cAAc,mCAAmC,CAAC;AAGlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EACb,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,iCAAiC,EACjC,kCAAkC,EAClC,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AAEtG,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAE9F,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const OAUTH2_STATE_VSCHAR_REGEX: RegExp;
|
|
3
|
+
export declare const oauth2StateSchema: z.ZodString;
|
|
4
|
+
export type OAuth2State = z.infer<typeof oauth2StateSchema>;
|
|
5
|
+
/**
|
|
6
|
+
* Thrown by `parseOAuth2State` when the caller supplied a `state`
|
|
7
|
+
* value that is present but fails schema validation. Callers at
|
|
8
|
+
* server-side entry points should turn this into a 400 response
|
|
9
|
+
* (e.g. `redirectWithError(400, "bad_request")` for page routes,
|
|
10
|
+
* `NextResponse.json(..., { status: 400 })` for API routes).
|
|
11
|
+
*/
|
|
12
|
+
export declare class OAuth2StateValidationError extends Error {
|
|
13
|
+
readonly reasons: readonly string[];
|
|
14
|
+
constructor(reasons: readonly string[]);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Validates an OAuth2 `state` at a server boundary.
|
|
18
|
+
*
|
|
19
|
+
* - Absent / null / undefined → returns `null` (RFC-legal; `state`
|
|
20
|
+
* is optional).
|
|
21
|
+
* - Present + well-formed → returns the validated string.
|
|
22
|
+
* - Present + malformed (wrong type, empty, too long, non-VSCHAR)
|
|
23
|
+
* → throws `OAuth2StateValidationError` so the caller can 400.
|
|
24
|
+
*
|
|
25
|
+
* Empty strings are treated as malformed (not absent) so a client
|
|
26
|
+
* that accidentally serializes `?state=` gets a loud signal instead
|
|
27
|
+
* of a silent downgrade.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseOAuth2State(raw: unknown): string | null;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// RFC 6749 §10.12 introduces the OAuth2 `state` parameter as a
|
|
3
|
+
// client-side CSRF nonce. RFC 6749 §A.5 defines its on-the-wire form
|
|
4
|
+
// as `*VSCHAR` — zero or more printable ASCII characters %x20-%x7E.
|
|
5
|
+
// The auth server never interprets `state`; it only echoes the value
|
|
6
|
+
// untouched on the callback. The validator below therefore captures
|
|
7
|
+
// only the properties worth enforcing at the protocol boundary:
|
|
8
|
+
//
|
|
9
|
+
// 1. Non-empty (a zero-length state has no CSRF value).
|
|
10
|
+
// 2. Bounded length — 512 chars is comfortably above common shapes
|
|
11
|
+
// (UUID, base64url 32-byte nonce, short signed JWTs) while
|
|
12
|
+
// protecting log pipelines and callback-URL buffers from
|
|
13
|
+
// unbounded echo.
|
|
14
|
+
// 3. Printable ASCII only — prevents log-pollution / terminal-escape
|
|
15
|
+
// smuggling via control chars, NULs, and CR/LF.
|
|
16
|
+
//
|
|
17
|
+
// This schema is deliberately not base64url-specific: that would be
|
|
18
|
+
// SDK-opinionated and would break RFC-legal third-party clients that
|
|
19
|
+
// use UUIDs, signed JWTs, or other formats for their state value.
|
|
20
|
+
const MAX_OAUTH2_STATE_LENGTH = 512;
|
|
21
|
+
export const OAUTH2_STATE_VSCHAR_REGEX = /^[\x20-\x7E]+$/;
|
|
22
|
+
export const oauth2StateSchema = z
|
|
23
|
+
.string()
|
|
24
|
+
.min(1)
|
|
25
|
+
.max(MAX_OAUTH2_STATE_LENGTH)
|
|
26
|
+
.regex(OAUTH2_STATE_VSCHAR_REGEX, {
|
|
27
|
+
message: "OAuth2 'state' must contain only printable ASCII (RFC 6749 §A.5 VSCHAR)",
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Thrown by `parseOAuth2State` when the caller supplied a `state`
|
|
31
|
+
* value that is present but fails schema validation. Callers at
|
|
32
|
+
* server-side entry points should turn this into a 400 response
|
|
33
|
+
* (e.g. `redirectWithError(400, "bad_request")` for page routes,
|
|
34
|
+
* `NextResponse.json(..., { status: 400 })` for API routes).
|
|
35
|
+
*/
|
|
36
|
+
export class OAuth2StateValidationError extends Error {
|
|
37
|
+
reasons;
|
|
38
|
+
constructor(reasons) {
|
|
39
|
+
super(`Invalid OAuth2 'state' parameter: ${reasons.join("; ")}`);
|
|
40
|
+
this.name = "OAuth2StateValidationError";
|
|
41
|
+
this.reasons = reasons;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validates an OAuth2 `state` at a server boundary.
|
|
46
|
+
*
|
|
47
|
+
* - Absent / null / undefined → returns `null` (RFC-legal; `state`
|
|
48
|
+
* is optional).
|
|
49
|
+
* - Present + well-formed → returns the validated string.
|
|
50
|
+
* - Present + malformed (wrong type, empty, too long, non-VSCHAR)
|
|
51
|
+
* → throws `OAuth2StateValidationError` so the caller can 400.
|
|
52
|
+
*
|
|
53
|
+
* Empty strings are treated as malformed (not absent) so a client
|
|
54
|
+
* that accidentally serializes `?state=` gets a loud signal instead
|
|
55
|
+
* of a silent downgrade.
|
|
56
|
+
*/
|
|
57
|
+
export function parseOAuth2State(raw) {
|
|
58
|
+
if (raw === undefined || raw === null)
|
|
59
|
+
return null;
|
|
60
|
+
if (typeof raw !== "string") {
|
|
61
|
+
throw new OAuth2StateValidationError([
|
|
62
|
+
`Expected string, got ${Array.isArray(raw) ? "array" : typeof raw}`,
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
const parsed = oauth2StateSchema.safeParse(raw);
|
|
66
|
+
if (!parsed.success) {
|
|
67
|
+
throw new OAuth2StateValidationError(parsed.error.issues.map((i) => i.message));
|
|
68
|
+
}
|
|
69
|
+
return parsed.data;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=oauth2-state-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-state-schema.js","sourceRoot":"","sources":["../src/oauth2-state-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAC/D,qEAAqE;AACrE,oEAAoE;AACpE,qEAAqE;AACrE,oEAAoE;AACpE,gEAAgE;AAChE,EAAE;AACF,0DAA0D;AAC1D,qEAAqE;AACrE,gEAAgE;AAChE,8DAA8D;AAC9D,uBAAuB;AACvB,uEAAuE;AACvE,qDAAqD;AACrD,EAAE;AACF,oEAAoE;AACpE,qEAAqE;AACrE,kEAAkE;AAElE,MAAM,uBAAuB,GAAG,GAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GAAW,gBAAgB,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,uBAAuB,CAAC;KAC5B,KAAK,CAAC,yBAAyB,EAAE;IAChC,OAAO,EACL,yEAAyE;CAC5E,CAAC,CAAC;AAIL;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnC,OAAO,CAAoB;IAC3C,YAAmB,OAA0B;QAC3C,KAAK,CAAC,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,0BAA0B,CAAC;YACnC,wBAAwB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,0BAA0B,CAClC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAC1C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -6,6 +6,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
6
6
|
exp: z.ZodNumber;
|
|
7
7
|
token: z.ZodString;
|
|
8
8
|
aud: z.ZodString;
|
|
9
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
9
10
|
} & {
|
|
10
11
|
type: z.ZodLiteral<"access">;
|
|
11
12
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -15,6 +16,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
15
16
|
exp: number;
|
|
16
17
|
token: string;
|
|
17
18
|
aud: string;
|
|
19
|
+
jti?: string | undefined;
|
|
18
20
|
}, {
|
|
19
21
|
type: "access";
|
|
20
22
|
uid: string;
|
|
@@ -22,6 +24,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
22
24
|
exp: number;
|
|
23
25
|
token: string;
|
|
24
26
|
aud: string;
|
|
27
|
+
jti?: string | undefined;
|
|
25
28
|
}>, z.ZodLiteral<"AS_HTTP_ONLY_COOKIE">]>>>;
|
|
26
29
|
refresh: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
27
30
|
uid: z.ZodString;
|
|
@@ -29,6 +32,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
29
32
|
exp: z.ZodNumber;
|
|
30
33
|
token: z.ZodString;
|
|
31
34
|
aud: z.ZodString;
|
|
35
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
32
36
|
} & {
|
|
33
37
|
type: z.ZodLiteral<"refresh">;
|
|
34
38
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -38,6 +42,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
38
42
|
exp: number;
|
|
39
43
|
token: string;
|
|
40
44
|
aud: string;
|
|
45
|
+
jti?: string | undefined;
|
|
41
46
|
}, {
|
|
42
47
|
type: "refresh";
|
|
43
48
|
uid: string;
|
|
@@ -45,6 +50,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
45
50
|
exp: number;
|
|
46
51
|
token: string;
|
|
47
52
|
aud: string;
|
|
53
|
+
jti?: string | undefined;
|
|
48
54
|
}>, z.ZodLiteral<"AS_HTTP_ONLY_COOKIE">]>>;
|
|
49
55
|
refresh_token_expiry: z.ZodOptional<z.ZodNumber>;
|
|
50
56
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -55,6 +61,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
55
61
|
exp: number;
|
|
56
62
|
token: string;
|
|
57
63
|
aud: string;
|
|
64
|
+
jti?: string | undefined;
|
|
58
65
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
59
66
|
access?: Record<string, {
|
|
60
67
|
type: "access";
|
|
@@ -63,6 +70,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
63
70
|
exp: number;
|
|
64
71
|
token: string;
|
|
65
72
|
aud: string;
|
|
73
|
+
jti?: string | undefined;
|
|
66
74
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
67
75
|
refresh_token_expiry?: number | undefined;
|
|
68
76
|
}, {
|
|
@@ -73,6 +81,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
73
81
|
exp: number;
|
|
74
82
|
token: string;
|
|
75
83
|
aud: string;
|
|
84
|
+
jti?: string | undefined;
|
|
76
85
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
77
86
|
access?: Record<string, {
|
|
78
87
|
type: "access";
|
|
@@ -81,6 +90,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
81
90
|
exp: number;
|
|
82
91
|
token: string;
|
|
83
92
|
aud: string;
|
|
93
|
+
jti?: string | undefined;
|
|
84
94
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
85
95
|
refresh_token_expiry?: number | undefined;
|
|
86
96
|
}>, {
|
|
@@ -91,6 +101,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
91
101
|
exp: number;
|
|
92
102
|
token: string;
|
|
93
103
|
aud: string;
|
|
104
|
+
jti?: string | undefined;
|
|
94
105
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
95
106
|
access?: Record<string, {
|
|
96
107
|
type: "access";
|
|
@@ -99,6 +110,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
99
110
|
exp: number;
|
|
100
111
|
token: string;
|
|
101
112
|
aud: string;
|
|
113
|
+
jti?: string | undefined;
|
|
102
114
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
103
115
|
refresh_token_expiry?: number | undefined;
|
|
104
116
|
}, {
|
|
@@ -109,6 +121,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
109
121
|
exp: number;
|
|
110
122
|
token: string;
|
|
111
123
|
aud: string;
|
|
124
|
+
jti?: string | undefined;
|
|
112
125
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
113
126
|
access?: Record<string, {
|
|
114
127
|
type: "access";
|
|
@@ -117,6 +130,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
117
130
|
exp: number;
|
|
118
131
|
token: string;
|
|
119
132
|
aud: string;
|
|
133
|
+
jti?: string | undefined;
|
|
120
134
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
121
135
|
refresh_token_expiry?: number | undefined;
|
|
122
136
|
}>, {
|
|
@@ -127,6 +141,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
127
141
|
exp: number;
|
|
128
142
|
token: string;
|
|
129
143
|
aud: string;
|
|
144
|
+
jti?: string | undefined;
|
|
130
145
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
131
146
|
access?: Record<string, {
|
|
132
147
|
type: "access";
|
|
@@ -135,6 +150,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
135
150
|
exp: number;
|
|
136
151
|
token: string;
|
|
137
152
|
aud: string;
|
|
153
|
+
jti?: string | undefined;
|
|
138
154
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
139
155
|
refresh_token_expiry?: number | undefined;
|
|
140
156
|
}, {
|
|
@@ -145,6 +161,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
145
161
|
exp: number;
|
|
146
162
|
token: string;
|
|
147
163
|
aud: string;
|
|
164
|
+
jti?: string | undefined;
|
|
148
165
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
149
166
|
access?: Record<string, {
|
|
150
167
|
type: "access";
|
|
@@ -153,6 +170,7 @@ export declare const successfullyGeneratedTokensRecordSchema: z.ZodEffects<z.Zod
|
|
|
153
170
|
exp: number;
|
|
154
171
|
token: string;
|
|
155
172
|
aud: string;
|
|
173
|
+
jti?: string | undefined;
|
|
156
174
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
157
175
|
refresh_token_expiry?: number | undefined;
|
|
158
176
|
}>;
|
|
@@ -181,6 +199,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
181
199
|
exp: z.ZodNumber;
|
|
182
200
|
token: z.ZodString;
|
|
183
201
|
aud: z.ZodString;
|
|
202
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
184
203
|
} & {
|
|
185
204
|
type: z.ZodLiteral<"access">;
|
|
186
205
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -190,6 +209,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
190
209
|
exp: number;
|
|
191
210
|
token: string;
|
|
192
211
|
aud: string;
|
|
212
|
+
jti?: string | undefined;
|
|
193
213
|
}, {
|
|
194
214
|
type: "access";
|
|
195
215
|
uid: string;
|
|
@@ -197,6 +217,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
197
217
|
exp: number;
|
|
198
218
|
token: string;
|
|
199
219
|
aud: string;
|
|
220
|
+
jti?: string | undefined;
|
|
200
221
|
}>, z.ZodLiteral<"AS_HTTP_ONLY_COOKIE">]>>>;
|
|
201
222
|
refresh: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
202
223
|
uid: z.ZodString;
|
|
@@ -204,6 +225,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
204
225
|
exp: z.ZodNumber;
|
|
205
226
|
token: z.ZodString;
|
|
206
227
|
aud: z.ZodString;
|
|
228
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
207
229
|
} & {
|
|
208
230
|
type: z.ZodLiteral<"refresh">;
|
|
209
231
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -213,6 +235,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
213
235
|
exp: number;
|
|
214
236
|
token: string;
|
|
215
237
|
aud: string;
|
|
238
|
+
jti?: string | undefined;
|
|
216
239
|
}, {
|
|
217
240
|
type: "refresh";
|
|
218
241
|
uid: string;
|
|
@@ -220,6 +243,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
220
243
|
exp: number;
|
|
221
244
|
token: string;
|
|
222
245
|
aud: string;
|
|
246
|
+
jti?: string | undefined;
|
|
223
247
|
}>, z.ZodLiteral<"AS_HTTP_ONLY_COOKIE">]>>;
|
|
224
248
|
refresh_token_expiry: z.ZodOptional<z.ZodNumber>;
|
|
225
249
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -230,6 +254,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
230
254
|
exp: number;
|
|
231
255
|
token: string;
|
|
232
256
|
aud: string;
|
|
257
|
+
jti?: string | undefined;
|
|
233
258
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
234
259
|
access?: Record<string, {
|
|
235
260
|
type: "access";
|
|
@@ -238,6 +263,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
238
263
|
exp: number;
|
|
239
264
|
token: string;
|
|
240
265
|
aud: string;
|
|
266
|
+
jti?: string | undefined;
|
|
241
267
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
242
268
|
refresh_token_expiry?: number | undefined;
|
|
243
269
|
}, {
|
|
@@ -248,6 +274,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
248
274
|
exp: number;
|
|
249
275
|
token: string;
|
|
250
276
|
aud: string;
|
|
277
|
+
jti?: string | undefined;
|
|
251
278
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
252
279
|
access?: Record<string, {
|
|
253
280
|
type: "access";
|
|
@@ -256,6 +283,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
256
283
|
exp: number;
|
|
257
284
|
token: string;
|
|
258
285
|
aud: string;
|
|
286
|
+
jti?: string | undefined;
|
|
259
287
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
260
288
|
refresh_token_expiry?: number | undefined;
|
|
261
289
|
}>, {
|
|
@@ -266,6 +294,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
266
294
|
exp: number;
|
|
267
295
|
token: string;
|
|
268
296
|
aud: string;
|
|
297
|
+
jti?: string | undefined;
|
|
269
298
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
270
299
|
access?: Record<string, {
|
|
271
300
|
type: "access";
|
|
@@ -274,6 +303,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
274
303
|
exp: number;
|
|
275
304
|
token: string;
|
|
276
305
|
aud: string;
|
|
306
|
+
jti?: string | undefined;
|
|
277
307
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
278
308
|
refresh_token_expiry?: number | undefined;
|
|
279
309
|
}, {
|
|
@@ -284,6 +314,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
284
314
|
exp: number;
|
|
285
315
|
token: string;
|
|
286
316
|
aud: string;
|
|
317
|
+
jti?: string | undefined;
|
|
287
318
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
288
319
|
access?: Record<string, {
|
|
289
320
|
type: "access";
|
|
@@ -292,6 +323,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
292
323
|
exp: number;
|
|
293
324
|
token: string;
|
|
294
325
|
aud: string;
|
|
326
|
+
jti?: string | undefined;
|
|
295
327
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
296
328
|
refresh_token_expiry?: number | undefined;
|
|
297
329
|
}>, {
|
|
@@ -302,6 +334,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
302
334
|
exp: number;
|
|
303
335
|
token: string;
|
|
304
336
|
aud: string;
|
|
337
|
+
jti?: string | undefined;
|
|
305
338
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
306
339
|
access?: Record<string, {
|
|
307
340
|
type: "access";
|
|
@@ -310,6 +343,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
310
343
|
exp: number;
|
|
311
344
|
token: string;
|
|
312
345
|
aud: string;
|
|
346
|
+
jti?: string | undefined;
|
|
313
347
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
314
348
|
refresh_token_expiry?: number | undefined;
|
|
315
349
|
}, {
|
|
@@ -320,6 +354,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
320
354
|
exp: number;
|
|
321
355
|
token: string;
|
|
322
356
|
aud: string;
|
|
357
|
+
jti?: string | undefined;
|
|
323
358
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
324
359
|
access?: Record<string, {
|
|
325
360
|
type: "access";
|
|
@@ -328,6 +363,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
328
363
|
exp: number;
|
|
329
364
|
token: string;
|
|
330
365
|
aud: string;
|
|
366
|
+
jti?: string | undefined;
|
|
331
367
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
332
368
|
refresh_token_expiry?: number | undefined;
|
|
333
369
|
}>>;
|
|
@@ -401,6 +437,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
401
437
|
exp: number;
|
|
402
438
|
token: string;
|
|
403
439
|
aud: string;
|
|
440
|
+
jti?: string | undefined;
|
|
404
441
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
405
442
|
access?: Record<string, {
|
|
406
443
|
type: "access";
|
|
@@ -409,6 +446,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
409
446
|
exp: number;
|
|
410
447
|
token: string;
|
|
411
448
|
aud: string;
|
|
449
|
+
jti?: string | undefined;
|
|
412
450
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
413
451
|
refresh_token_expiry?: number | undefined;
|
|
414
452
|
} | undefined;
|
|
@@ -438,6 +476,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
438
476
|
exp: number;
|
|
439
477
|
token: string;
|
|
440
478
|
aud: string;
|
|
479
|
+
jti?: string | undefined;
|
|
441
480
|
} | "AS_HTTP_ONLY_COOKIE" | undefined;
|
|
442
481
|
access?: Record<string, {
|
|
443
482
|
type: "access";
|
|
@@ -446,6 +485,7 @@ export declare const requestTokensResultSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
446
485
|
exp: number;
|
|
447
486
|
token: string;
|
|
448
487
|
aud: string;
|
|
488
|
+
jti?: string | undefined;
|
|
449
489
|
} | "AS_HTTP_ONLY_COOKIE"> | undefined;
|
|
450
490
|
refresh_token_expiry?: number | undefined;
|
|
451
491
|
} | undefined;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timing-safe string comparison usable from browser bundles.
|
|
3
|
+
*
|
|
4
|
+
* `node:crypto.timingSafeEqual` is Node-only; this pure-JS variant
|
|
5
|
+
* operates on strings and runs in both browser and server contexts.
|
|
6
|
+
* Not strictly constant-time under every JIT, but avoids early-exit on
|
|
7
|
+
* the first byte of divergence — strictly better than `===` for
|
|
8
|
+
* CSRF-nonce / token comparison.
|
|
9
|
+
*
|
|
10
|
+
* Returns false on any non-string input or length mismatch.
|
|
11
|
+
*/
|
|
12
|
+
export declare function timingSafeStringEqual(a: string, b: string): boolean;
|
|
13
|
+
export default timingSafeStringEqual;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timing-safe string comparison usable from browser bundles.
|
|
3
|
+
*
|
|
4
|
+
* `node:crypto.timingSafeEqual` is Node-only; this pure-JS variant
|
|
5
|
+
* operates on strings and runs in both browser and server contexts.
|
|
6
|
+
* Not strictly constant-time under every JIT, but avoids early-exit on
|
|
7
|
+
* the first byte of divergence — strictly better than `===` for
|
|
8
|
+
* CSRF-nonce / token comparison.
|
|
9
|
+
*
|
|
10
|
+
* Returns false on any non-string input or length mismatch.
|
|
11
|
+
*/
|
|
12
|
+
export function timingSafeStringEqual(a, b) {
|
|
13
|
+
if (typeof a !== "string" || typeof b !== "string")
|
|
14
|
+
return false;
|
|
15
|
+
if (a.length !== b.length)
|
|
16
|
+
return false;
|
|
17
|
+
let diff = 0;
|
|
18
|
+
for (let i = 0; i < a.length; i++) {
|
|
19
|
+
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
20
|
+
}
|
|
21
|
+
return diff === 0;
|
|
22
|
+
}
|
|
23
|
+
export default timingSafeStringEqual;
|
|
24
|
+
//# sourceMappingURL=timing-safe-string-equal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing-safe-string-equal.js","sourceRoot":"","sources":["../src/timing-safe-string-equal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAS,EAAE,CAAS;IACxD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -8,6 +8,7 @@ export declare const tokenDataSchema: z.ZodObject<{
|
|
|
8
8
|
exp: z.ZodNumber;
|
|
9
9
|
token: z.ZodString;
|
|
10
10
|
aud: z.ZodString;
|
|
11
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
11
12
|
}, "strict", z.ZodTypeAny, {
|
|
12
13
|
type: "refresh" | "access";
|
|
13
14
|
uid: string;
|
|
@@ -15,6 +16,7 @@ export declare const tokenDataSchema: z.ZodObject<{
|
|
|
15
16
|
exp: number;
|
|
16
17
|
token: string;
|
|
17
18
|
aud: string;
|
|
19
|
+
jti?: string | undefined;
|
|
18
20
|
}, {
|
|
19
21
|
type: "refresh" | "access";
|
|
20
22
|
uid: string;
|
|
@@ -22,6 +24,7 @@ export declare const tokenDataSchema: z.ZodObject<{
|
|
|
22
24
|
exp: number;
|
|
23
25
|
token: string;
|
|
24
26
|
aud: string;
|
|
27
|
+
jti?: string | undefined;
|
|
25
28
|
}>;
|
|
26
29
|
/**
|
|
27
30
|
* @name AuthToken
|
|
@@ -36,6 +39,7 @@ export declare const refreshTokenDataSchema: z.ZodObject<{
|
|
|
36
39
|
exp: z.ZodNumber;
|
|
37
40
|
token: z.ZodString;
|
|
38
41
|
aud: z.ZodString;
|
|
42
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
39
43
|
} & {
|
|
40
44
|
type: z.ZodLiteral<"refresh">;
|
|
41
45
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -45,6 +49,7 @@ export declare const refreshTokenDataSchema: z.ZodObject<{
|
|
|
45
49
|
exp: number;
|
|
46
50
|
token: string;
|
|
47
51
|
aud: string;
|
|
52
|
+
jti?: string | undefined;
|
|
48
53
|
}, {
|
|
49
54
|
type: "refresh";
|
|
50
55
|
uid: string;
|
|
@@ -52,6 +57,7 @@ export declare const refreshTokenDataSchema: z.ZodObject<{
|
|
|
52
57
|
exp: number;
|
|
53
58
|
token: string;
|
|
54
59
|
aud: string;
|
|
60
|
+
jti?: string | undefined;
|
|
55
61
|
}>;
|
|
56
62
|
export declare const accessTokenDataSchema: z.ZodObject<{
|
|
57
63
|
uid: z.ZodString;
|
|
@@ -59,6 +65,7 @@ export declare const accessTokenDataSchema: z.ZodObject<{
|
|
|
59
65
|
exp: z.ZodNumber;
|
|
60
66
|
token: z.ZodString;
|
|
61
67
|
aud: z.ZodString;
|
|
68
|
+
jti: z.ZodOptional<z.ZodString>;
|
|
62
69
|
} & {
|
|
63
70
|
type: z.ZodLiteral<"access">;
|
|
64
71
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -68,6 +75,7 @@ export declare const accessTokenDataSchema: z.ZodObject<{
|
|
|
68
75
|
exp: number;
|
|
69
76
|
token: string;
|
|
70
77
|
aud: string;
|
|
78
|
+
jti?: string | undefined;
|
|
71
79
|
}, {
|
|
72
80
|
type: "access";
|
|
73
81
|
uid: string;
|
|
@@ -75,6 +83,7 @@ export declare const accessTokenDataSchema: z.ZodObject<{
|
|
|
75
83
|
exp: number;
|
|
76
84
|
token: string;
|
|
77
85
|
aud: string;
|
|
86
|
+
jti?: string | undefined;
|
|
78
87
|
}>;
|
|
79
88
|
/**
|
|
80
89
|
* @name RefreshToken
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-data.js","sourceRoot":"","sources":["../../src/token-data/token-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAG7E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"token-data.js","sourceRoot":"","sources":["../../src/token-data/token-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAG7E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,QAAQ,CAAC;IACR,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;CACV,CAAC;KACD,MAAM,EAAE,CAAC;AAUZ,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC,MAAM,CAAC;IAC3D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC1B,CAAC,CAAC"}
|
package/package.json
CHANGED