@c9up/visa 0.1.1 → 0.1.2
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/VisaManager.d.ts +40 -7
- package/dist/VisaManager.d.ts.map +1 -1
- package/dist/VisaManager.js +79 -3
- package/dist/VisaManager.js.map +1 -1
- package/dist/VisaProvider.d.ts.map +1 -1
- package/dist/VisaProvider.js +56 -0
- package/dist/VisaProvider.js.map +1 -1
- package/dist/authorize.d.ts +18 -0
- package/dist/authorize.d.ts.map +1 -1
- package/dist/authorize.js +6 -0
- package/dist/authorize.js.map +1 -1
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +9 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/guard.d.ts +21 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +19 -0
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/introspect.d.ts +9 -1
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +18 -1
- package/dist/introspect.js.map +1 -1
- package/dist/protectedResource.d.ts +81 -0
- package/dist/protectedResource.d.ts.map +1 -0
- package/dist/protectedResource.js +124 -0
- package/dist/protectedResource.js.map +1 -0
- package/dist/register.d.ts +96 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +173 -0
- package/dist/register.js.map +1 -0
- package/dist/resource.d.ts +50 -0
- package/dist/resource.d.ts.map +1 -0
- package/dist/resource.js +101 -0
- package/dist/resource.js.map +1 -0
- package/dist/store.d.ts +25 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/stores/atlas.d.ts +7 -0
- package/dist/stores/atlas.d.ts.map +1 -1
- package/dist/stores/atlas.js +70 -16
- package/dist/stores/atlas.js.map +1 -1
- package/dist/stores/memory.d.ts +4 -0
- package/dist/stores/memory.d.ts.map +1 -1
- package/dist/stores/memory.js +25 -0
- package/dist/stores/memory.js.map +1 -1
- package/dist/token.d.ts +2 -0
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +21 -1
- package/dist/token.js.map +1 -1
- package/dist/types.d.ts +42 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/VisaManager.ts +109 -3
- package/src/VisaProvider.ts +64 -0
- package/src/authorize.ts +27 -0
- package/src/config.ts +35 -0
- package/src/errors.ts +16 -2
- package/src/guard.ts +30 -0
- package/src/index.ts +25 -0
- package/src/introspect.ts +17 -0
- package/src/protectedResource.ts +171 -0
- package/src/register.ts +296 -0
- package/src/resource.ts +123 -0
- package/src/store.ts +29 -0
- package/src/stores/atlas.ts +99 -15
- package/src/stores/memory.ts +33 -0
- package/src/token.ts +45 -1
- package/src/types.ts +43 -0
- package/stubs/database/migrations/9000_create_visa_tables.stub +9 -0
package/dist/register.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clients that register themselves (RFC 7591).
|
|
3
|
+
*
|
|
4
|
+
* An MCP client such as claude.ai or ChatGPT has nobody to fill in a form for
|
|
5
|
+
* it: it discovers this server, registers, and comes back with an id. Without
|
|
6
|
+
* this the only way in is a human pasting credentials somewhere.
|
|
7
|
+
*
|
|
8
|
+
* OFF unless the application turns it on, and that is the important part. Open
|
|
9
|
+
* registration means anyone who can reach the endpoint can create a client —
|
|
10
|
+
* the RFC says a server SHOULD allow it for interoperability, and also says
|
|
11
|
+
* the endpoint MAY be protected (§1.2, §3). The safe default here is the one
|
|
12
|
+
* the RFC permits rather than the one it encourages, because an authorization
|
|
13
|
+
* server that silently accepts registrations is a thing nobody asked for. Turn
|
|
14
|
+
* it on deliberately, and with an initial access token if the deployment is
|
|
15
|
+
* not meant to be open.
|
|
16
|
+
*
|
|
17
|
+
* A registered client gets exactly what this server allows: the grants,
|
|
18
|
+
* scopes and auth methods in the configuration, never what the request asked
|
|
19
|
+
* for. That is the difference between letting a client name itself and letting
|
|
20
|
+
* it decide what it may do.
|
|
21
|
+
*/
|
|
22
|
+
import { OAuthError } from "./errors.js";
|
|
23
|
+
const DEFAULT_GRANTS = [
|
|
24
|
+
"authorization_code",
|
|
25
|
+
"refresh_token",
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Check a registration request and say what the client may be.
|
|
29
|
+
*
|
|
30
|
+
* Returns the client to store and the plaintext secret, if one was issued —
|
|
31
|
+
* the caller persists the first and hands back the second, once.
|
|
32
|
+
*/
|
|
33
|
+
export function validateRegistration(request, options, presentedToken) {
|
|
34
|
+
if (options.enabled !== true) {
|
|
35
|
+
throw new OAuthError("invalid_client_metadata", "This server does not accept client registrations.");
|
|
36
|
+
}
|
|
37
|
+
if (options.initialAccessToken !== undefined) {
|
|
38
|
+
// Constant-time is not the point here: the token is compared once per
|
|
39
|
+
// registration, and a registration endpoint is not a guessing oracle
|
|
40
|
+
// worth the machinery. Absent or wrong reads the same to the caller.
|
|
41
|
+
if (presentedToken !== options.initialAccessToken) {
|
|
42
|
+
throw new OAuthError("invalid_client_metadata", "Registration on this server needs an initial access token.");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const redirectUris = readStringList(request.redirect_uris);
|
|
46
|
+
const grantTypes = resolveGrants(request.grant_types, options);
|
|
47
|
+
// A client using the authorization code flow has somewhere to come back to,
|
|
48
|
+
// and this is the last moment anyone checks.
|
|
49
|
+
if (grantTypes.includes("authorization_code") && redirectUris.length === 0) {
|
|
50
|
+
throw new OAuthError("invalid_redirect_uri", "redirect_uris is required for the authorization_code grant.");
|
|
51
|
+
}
|
|
52
|
+
for (const uri of redirectUris)
|
|
53
|
+
assertRedirectUri(uri);
|
|
54
|
+
const allowed = options.scopes ?? [];
|
|
55
|
+
const requested = readScope(request.scope);
|
|
56
|
+
const outside = requested.filter((scope) => !allowed.includes(scope));
|
|
57
|
+
if (outside.length > 0) {
|
|
58
|
+
throw new OAuthError("invalid_client_metadata", `This server does not grant ${outside.join(", ")} to a self-registered client.`);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
redirectUris,
|
|
62
|
+
grantTypes,
|
|
63
|
+
// What was asked for, narrowed to what is allowed — never the allowed
|
|
64
|
+
// set, or every client would be registered with everything.
|
|
65
|
+
scopes: requested,
|
|
66
|
+
tokenEndpointAuthMethod: readAuthMethod(request.token_endpoint_auth_method),
|
|
67
|
+
name: readName(request.client_name),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** The 201 body for a client that was just created. */
|
|
71
|
+
export function registrationResponse(client, issuedAt, secret, options) {
|
|
72
|
+
const seconds = Math.floor(issuedAt.getTime() / 1000);
|
|
73
|
+
return {
|
|
74
|
+
client_id: client.id,
|
|
75
|
+
...(secret === undefined ? {} : { client_secret: secret }),
|
|
76
|
+
client_id_issued_at: seconds,
|
|
77
|
+
// REQUIRED when a secret was issued, and `0` is the spelling for "never"
|
|
78
|
+
// — not an omission, which would mean the field was not answered.
|
|
79
|
+
...(secret === undefined
|
|
80
|
+
? {}
|
|
81
|
+
: {
|
|
82
|
+
client_secret_expires_at: options.secretTtlSeconds === undefined
|
|
83
|
+
? 0
|
|
84
|
+
: seconds + options.secretTtlSeconds,
|
|
85
|
+
}),
|
|
86
|
+
redirect_uris: client.redirectUris,
|
|
87
|
+
grant_types: client.grantTypes,
|
|
88
|
+
token_endpoint_auth_method: client.tokenEndpointAuthMethod,
|
|
89
|
+
client_name: client.name,
|
|
90
|
+
...(client.scopes.length === 0 ? {} : { scope: client.scopes.join(" ") }),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function resolveGrants(value, options) {
|
|
94
|
+
const allowed = options.grantTypes ?? DEFAULT_GRANTS;
|
|
95
|
+
const requested = readStringList(value);
|
|
96
|
+
if (requested.length === 0)
|
|
97
|
+
return [...allowed];
|
|
98
|
+
const grants = [];
|
|
99
|
+
for (const grant of requested) {
|
|
100
|
+
if (!isGrantType(grant) || !allowed.includes(grant)) {
|
|
101
|
+
throw new OAuthError("invalid_client_metadata", `This server does not allow the ${grant} grant to a self-registered client.`);
|
|
102
|
+
}
|
|
103
|
+
if (!grants.includes(grant))
|
|
104
|
+
grants.push(grant);
|
|
105
|
+
}
|
|
106
|
+
return grants;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* A redirect URI a self-registered client may use.
|
|
110
|
+
*
|
|
111
|
+
* https, or http on a loopback address — a native app's callback. Anything
|
|
112
|
+
* else is refused: an authorization code sent over plain http to a host
|
|
113
|
+
* someone else controls is the code given away.
|
|
114
|
+
*/
|
|
115
|
+
function assertRedirectUri(value) {
|
|
116
|
+
let url;
|
|
117
|
+
try {
|
|
118
|
+
url = new URL(value);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
throw new OAuthError("invalid_redirect_uri", `${value} is not an absolute URI.`);
|
|
122
|
+
}
|
|
123
|
+
if (url.hash !== "") {
|
|
124
|
+
throw new OAuthError("invalid_redirect_uri", `${value} must not carry a fragment.`);
|
|
125
|
+
}
|
|
126
|
+
if (url.protocol === "https:")
|
|
127
|
+
return;
|
|
128
|
+
const loopback = url.hostname === "127.0.0.1" ||
|
|
129
|
+
url.hostname === "[::1]" ||
|
|
130
|
+
url.hostname === "localhost";
|
|
131
|
+
if (url.protocol === "http:" && loopback)
|
|
132
|
+
return;
|
|
133
|
+
throw new OAuthError("invalid_redirect_uri", `${value} must use https, or http on a loopback address.`);
|
|
134
|
+
}
|
|
135
|
+
function readStringList(value) {
|
|
136
|
+
if (value === undefined || value === null)
|
|
137
|
+
return [];
|
|
138
|
+
if (!Array.isArray(value)) {
|
|
139
|
+
throw new OAuthError("invalid_client_metadata", "redirect_uris and grant_types must be arrays of strings.");
|
|
140
|
+
}
|
|
141
|
+
return value.filter((entry) => typeof entry === "string");
|
|
142
|
+
}
|
|
143
|
+
function readScope(value) {
|
|
144
|
+
if (value === undefined || value === null)
|
|
145
|
+
return [];
|
|
146
|
+
if (typeof value !== "string") {
|
|
147
|
+
throw new OAuthError("invalid_client_metadata", "scope must be a space-separated string.");
|
|
148
|
+
}
|
|
149
|
+
return value.split(/\s+/).filter((scope) => scope !== "");
|
|
150
|
+
}
|
|
151
|
+
function readAuthMethod(value) {
|
|
152
|
+
if (value === undefined || value === null)
|
|
153
|
+
return "client_secret_basic";
|
|
154
|
+
if (value === "client_secret_basic" ||
|
|
155
|
+
value === "client_secret_post" ||
|
|
156
|
+
value === "none") {
|
|
157
|
+
return value;
|
|
158
|
+
}
|
|
159
|
+
throw new OAuthError("invalid_client_metadata", `token_endpoint_auth_method ${String(value)} is not supported.`);
|
|
160
|
+
}
|
|
161
|
+
function readName(value) {
|
|
162
|
+
if (typeof value === "string" && value.trim() !== "")
|
|
163
|
+
return value.trim();
|
|
164
|
+
// A client with no name shows as one on a consent screen, which is worse
|
|
165
|
+
// than a placeholder nobody mistakes for a brand.
|
|
166
|
+
return "Unnamed client";
|
|
167
|
+
}
|
|
168
|
+
function isGrantType(value) {
|
|
169
|
+
return (value === "authorization_code" ||
|
|
170
|
+
value === "refresh_token" ||
|
|
171
|
+
value === "client_credentials");
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which resource a token is for (RFC 8707).
|
|
3
|
+
*
|
|
4
|
+
* A token with no stated audience is a token for everything. Send it to the
|
|
5
|
+
* wrong server — or let a compromised one replay it — and every other resource
|
|
6
|
+
* that trusts the same issuer accepts it. The `resource` parameter is how a
|
|
7
|
+
* client says "this one is for the calendar API", and how the calendar API
|
|
8
|
+
* refuses one minted for somebody else.
|
|
9
|
+
*
|
|
10
|
+
* Read off the RFC rather than recalled: the value MUST be an absolute URI
|
|
11
|
+
* without a fragment (§2), it MAY repeat, and a resource the server does not
|
|
12
|
+
* accept is refused with `invalid_target` (§2) — not `invalid_request`, which
|
|
13
|
+
* would tell a client its request was malformed when it was merely aimed
|
|
14
|
+
* somewhere it may not go.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Normalise however the parameter arrived into a list.
|
|
18
|
+
*
|
|
19
|
+
* A form body gives one value or several under the same name, and a query
|
|
20
|
+
* string the same; both are `resource=` repeated, which parsers hand over
|
|
21
|
+
* either way.
|
|
22
|
+
*/
|
|
23
|
+
export declare function readResourceParameter(value: unknown): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Check each one, and refuse the request if any is unusable.
|
|
26
|
+
*
|
|
27
|
+
* `invalid_target` for every rejection here, including a malformed URI: §2
|
|
28
|
+
* names that code for "cannot parse the provided value(s)" as well as for a
|
|
29
|
+
* resource the server will not issue for.
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateResources(requested: readonly string[], accepted?: readonly string[]): string[];
|
|
32
|
+
/**
|
|
33
|
+
* What a token request may narrow to.
|
|
34
|
+
*
|
|
35
|
+
* A refresh or an exchange may ask for fewer resources than were authorised,
|
|
36
|
+
* never for more — the same rule scopes follow, and for the same reason: the
|
|
37
|
+
* user agreed to a set, and a later request must not widen it.
|
|
38
|
+
*/
|
|
39
|
+
export declare function narrowResources(requested: readonly string[], granted: readonly string[]): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Is this token for me?
|
|
42
|
+
*
|
|
43
|
+
* What a resource server asks. A token bound to nothing is accepted — that is
|
|
44
|
+
* every token issued before a client started sending `resource`, and refusing
|
|
45
|
+
* them would break each one. A token bound to SOMETHING must name this
|
|
46
|
+
* resource, or it was minted for another server and arriving here means it
|
|
47
|
+
* travelled.
|
|
48
|
+
*/
|
|
49
|
+
export declare function audienceAllows(audience: readonly string[] | undefined, resource: string | undefined): boolean;
|
|
50
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAM9D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,EAAE,CA8BV;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC9B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,EAAE,CAmBV;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAIT"}
|
package/dist/resource.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which resource a token is for (RFC 8707).
|
|
3
|
+
*
|
|
4
|
+
* A token with no stated audience is a token for everything. Send it to the
|
|
5
|
+
* wrong server — or let a compromised one replay it — and every other resource
|
|
6
|
+
* that trusts the same issuer accepts it. The `resource` parameter is how a
|
|
7
|
+
* client says "this one is for the calendar API", and how the calendar API
|
|
8
|
+
* refuses one minted for somebody else.
|
|
9
|
+
*
|
|
10
|
+
* Read off the RFC rather than recalled: the value MUST be an absolute URI
|
|
11
|
+
* without a fragment (§2), it MAY repeat, and a resource the server does not
|
|
12
|
+
* accept is refused with `invalid_target` (§2) — not `invalid_request`, which
|
|
13
|
+
* would tell a client its request was malformed when it was merely aimed
|
|
14
|
+
* somewhere it may not go.
|
|
15
|
+
*/
|
|
16
|
+
import { OAuthError } from "./errors.js";
|
|
17
|
+
/**
|
|
18
|
+
* Normalise however the parameter arrived into a list.
|
|
19
|
+
*
|
|
20
|
+
* A form body gives one value or several under the same name, and a query
|
|
21
|
+
* string the same; both are `resource=` repeated, which parsers hand over
|
|
22
|
+
* either way.
|
|
23
|
+
*/
|
|
24
|
+
export function readResourceParameter(value) {
|
|
25
|
+
if (value === undefined || value === null)
|
|
26
|
+
return [];
|
|
27
|
+
if (Array.isArray(value)) {
|
|
28
|
+
return value.filter((entry) => typeof entry === "string");
|
|
29
|
+
}
|
|
30
|
+
return typeof value === "string" && value !== "" ? [value] : [];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check each one, and refuse the request if any is unusable.
|
|
34
|
+
*
|
|
35
|
+
* `invalid_target` for every rejection here, including a malformed URI: §2
|
|
36
|
+
* names that code for "cannot parse the provided value(s)" as well as for a
|
|
37
|
+
* resource the server will not issue for.
|
|
38
|
+
*/
|
|
39
|
+
export function validateResources(requested, accepted) {
|
|
40
|
+
const resources = [];
|
|
41
|
+
for (const value of requested) {
|
|
42
|
+
let url;
|
|
43
|
+
try {
|
|
44
|
+
url = new URL(value);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
throw new OAuthError("invalid_target", `resource must be an absolute URI: ${value}`);
|
|
48
|
+
}
|
|
49
|
+
if (url.hash !== "") {
|
|
50
|
+
throw new OAuthError("invalid_target", `resource must not carry a fragment: ${value}`);
|
|
51
|
+
}
|
|
52
|
+
// §2 SHOULD NOT include a query, and recognises that some cases need
|
|
53
|
+
// one — so it travels rather than being refused or stripped. Stripping
|
|
54
|
+
// would hand back a token for a resource nobody asked for.
|
|
55
|
+
if (accepted !== undefined && !accepted.includes(value)) {
|
|
56
|
+
throw new OAuthError("invalid_target", `this server does not issue tokens for ${value}`);
|
|
57
|
+
}
|
|
58
|
+
if (!resources.includes(value))
|
|
59
|
+
resources.push(value);
|
|
60
|
+
}
|
|
61
|
+
return resources;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* What a token request may narrow to.
|
|
65
|
+
*
|
|
66
|
+
* A refresh or an exchange may ask for fewer resources than were authorised,
|
|
67
|
+
* never for more — the same rule scopes follow, and for the same reason: the
|
|
68
|
+
* user agreed to a set, and a later request must not widen it.
|
|
69
|
+
*/
|
|
70
|
+
export function narrowResources(requested, granted) {
|
|
71
|
+
if (requested.length === 0)
|
|
72
|
+
return [...granted];
|
|
73
|
+
if (granted.length === 0) {
|
|
74
|
+
// Nothing was bound at authorization time, so there is nothing to narrow
|
|
75
|
+
// FROM. Letting the request name one here would mint a token for an
|
|
76
|
+
// audience the user never saw.
|
|
77
|
+
throw new OAuthError("invalid_target", "this grant is not bound to any resource");
|
|
78
|
+
}
|
|
79
|
+
const outside = requested.filter((value) => !granted.includes(value));
|
|
80
|
+
if (outside.length > 0) {
|
|
81
|
+
throw new OAuthError("invalid_target", `this grant does not cover ${outside.join(", ")}`);
|
|
82
|
+
}
|
|
83
|
+
return [...requested];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Is this token for me?
|
|
87
|
+
*
|
|
88
|
+
* What a resource server asks. A token bound to nothing is accepted — that is
|
|
89
|
+
* every token issued before a client started sending `resource`, and refusing
|
|
90
|
+
* them would break each one. A token bound to SOMETHING must name this
|
|
91
|
+
* resource, or it was minted for another server and arriving here means it
|
|
92
|
+
* travelled.
|
|
93
|
+
*/
|
|
94
|
+
export function audienceAllows(audience, resource) {
|
|
95
|
+
if (audience === undefined || audience.length === 0)
|
|
96
|
+
return true;
|
|
97
|
+
if (resource === undefined)
|
|
98
|
+
return true;
|
|
99
|
+
return audience.includes(resource);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -38,6 +38,31 @@ export interface VisaStore {
|
|
|
38
38
|
revokeFamily(familyId: string, at: Date): Promise<void>;
|
|
39
39
|
findConsent(userId: string, clientId: string): Promise<Consent | null>;
|
|
40
40
|
saveConsent(consent: Consent): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Everything this user has granted, so they can be shown it.
|
|
43
|
+
*
|
|
44
|
+
* The consent is the unit a person manages: they authorised an
|
|
45
|
+
* application, not a token. Tokens come and go under that decision.
|
|
46
|
+
*/
|
|
47
|
+
listConsents(userId: string): Promise<Consent[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Every access token of this user, EXPIRED ONES INCLUDED.
|
|
50
|
+
*
|
|
51
|
+
* Included deliberately: "last used" is most interesting precisely when
|
|
52
|
+
* nothing is live any more, and a screen that hid them would tell a user an
|
|
53
|
+
* application never touched their data when it did.
|
|
54
|
+
*/
|
|
55
|
+
listAccessTokens(userId: string): Promise<AccessToken[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Cut one application off for one user: every token, both kinds.
|
|
58
|
+
*
|
|
59
|
+
* Not the consent — {@link deleteConsent} is separate, because forgetting
|
|
60
|
+
* the grant and ending the sessions are two different things and a caller
|
|
61
|
+
* revoking in a panic wants the second one first.
|
|
62
|
+
*/
|
|
63
|
+
revokeAccessFor(userId: string, clientId: string, at: Date): Promise<void>;
|
|
64
|
+
/** Forget the grant, so the user is asked again next time. */
|
|
65
|
+
deleteConsent(userId: string, clientId: string): Promise<void>;
|
|
41
66
|
/**
|
|
42
67
|
* Record that an access token was just used.
|
|
43
68
|
*
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,YAAY,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,SAAS;IACzB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE/C,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC3E;;;;;;OAMG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAClE,oEAAoE;IACpE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACvE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,YAAY,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,SAAS;IACzB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE/C,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC3E;;;;;;OAMG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAClE,oEAAoE;IACpE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACvE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzD;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3E,8DAA8D;IAC9D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
|
package/dist/stores/atlas.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export interface AtlasQuery {
|
|
|
33
33
|
whereNull(column: string): AtlasQuery;
|
|
34
34
|
orderBy(column: string, direction?: "asc" | "desc"): AtlasQuery;
|
|
35
35
|
first(): Promise<Row | null>;
|
|
36
|
+
/** Run the select and return every row — atlas' `exec()`. */
|
|
37
|
+
exec(): Promise<Row[]>;
|
|
36
38
|
insert(data: Row): PromiseLike<unknown>;
|
|
37
39
|
/** Resolves to the number of rows affected, which is what the atomic paths read. */
|
|
38
40
|
update(data: Row): PromiseLike<number | Row[]>;
|
|
@@ -92,6 +94,11 @@ export declare class AtlasStore implements VisaStore {
|
|
|
92
94
|
* three different ways, and re-granting is not a hot path.
|
|
93
95
|
*/
|
|
94
96
|
saveConsent(consent: Consent): Promise<void>;
|
|
97
|
+
listConsents(userId: string): Promise<Consent[]>;
|
|
98
|
+
/** Expired ones included — see the contract for why. */
|
|
99
|
+
listAccessTokens(userId: string): Promise<AccessToken[]>;
|
|
100
|
+
revokeAccessFor(userId: string, clientId: string, at: Date): Promise<void>;
|
|
101
|
+
deleteConsent(userId: string, clientId: string): Promise<void>;
|
|
95
102
|
/** Drop what has expired and can no longer be presented. */
|
|
96
103
|
prune(now: Date): Promise<void>;
|
|
97
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../../src/stores/atlas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,MAAM,EAEN,OAAO,EAEP,YAAY,EACZ,MAAM,aAAa,CAAC;AAErB,oCAAoC;AACpC,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnC,8CAA8C;AAC9C,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;AAErD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,KAAK,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAAC;IACnC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IACtE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IACtC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;IAChE,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7B,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,oFAAoF;IACpF,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;CACtC;AAED,wDAAwD;AACxD,MAAM,WAAW,OAAO;IACvB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CACjC;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAgFD,qBAAa,UAAW,YAAW,SAAS;;gBAI/B,EAAE,EAAE,OAAO,EAAE,MAAM,GAAE,gBAAqB;IAYhD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBpD,+FAA+F;IACzF,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../../src/stores/atlas.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/atlas.js
CHANGED
|
@@ -144,6 +144,7 @@ export class AtlasStore {
|
|
|
144
144
|
expires_at: code.expiresAt,
|
|
145
145
|
consumed_at: code.consumedAt ?? null,
|
|
146
146
|
nonce: code.nonce ?? null,
|
|
147
|
+
resources: encodeList(code.resources ?? []),
|
|
147
148
|
created_at: new Date(),
|
|
148
149
|
});
|
|
149
150
|
}
|
|
@@ -167,6 +168,7 @@ export class AtlasStore {
|
|
|
167
168
|
expiresAt: requireDate(row.expires_at, "expires_at"),
|
|
168
169
|
...(consumedAt === undefined ? {} : { consumedAt }),
|
|
169
170
|
...(nonce === undefined ? {} : { nonce }),
|
|
171
|
+
...listOrNothing("resources", row.resources),
|
|
170
172
|
};
|
|
171
173
|
}
|
|
172
174
|
/**
|
|
@@ -195,6 +197,7 @@ export class AtlasStore {
|
|
|
195
197
|
revoked_at: token.revokedAt ?? null,
|
|
196
198
|
last_used_at: token.lastUsedAt ?? null,
|
|
197
199
|
family_id: token.familyId ?? null,
|
|
200
|
+
audience: encodeList(token.audience ?? []),
|
|
198
201
|
created_at: new Date(),
|
|
199
202
|
});
|
|
200
203
|
}
|
|
@@ -203,22 +206,7 @@ export class AtlasStore {
|
|
|
203
206
|
.from(this.#tables.accessTokens)
|
|
204
207
|
.where({ token_hash: tokenHash })
|
|
205
208
|
.first();
|
|
206
|
-
|
|
207
|
-
return null;
|
|
208
|
-
const userId = optionalString(row.user_id);
|
|
209
|
-
const revokedAt = decodeDate(row.revoked_at);
|
|
210
|
-
const lastUsedAt = decodeDate(row.last_used_at);
|
|
211
|
-
const familyId = optionalString(row.family_id);
|
|
212
|
-
return {
|
|
213
|
-
tokenHash: requireString(row.token_hash, "token_hash"),
|
|
214
|
-
clientId: requireString(row.client_id, "client_id"),
|
|
215
|
-
...(userId === undefined ? {} : { userId }),
|
|
216
|
-
scopes: decodeList(row.scopes, "scopes"),
|
|
217
|
-
expiresAt: requireDate(row.expires_at, "expires_at"),
|
|
218
|
-
...(revokedAt === undefined ? {} : { revokedAt }),
|
|
219
|
-
...(lastUsedAt === undefined ? {} : { lastUsedAt }),
|
|
220
|
-
...(familyId === undefined ? {} : { familyId }),
|
|
221
|
-
};
|
|
209
|
+
return row === null ? null : readAccessToken(row);
|
|
222
210
|
}
|
|
223
211
|
async revokeAccessToken(tokenHash, at) {
|
|
224
212
|
await this.#db
|
|
@@ -243,6 +231,7 @@ export class AtlasStore {
|
|
|
243
231
|
expires_at: token.expiresAt,
|
|
244
232
|
consumed_at: token.consumedAt ?? null,
|
|
245
233
|
revoked_at: token.revokedAt ?? null,
|
|
234
|
+
resources: encodeList(token.resources ?? []),
|
|
246
235
|
created_at: new Date(),
|
|
247
236
|
});
|
|
248
237
|
}
|
|
@@ -265,6 +254,7 @@ export class AtlasStore {
|
|
|
265
254
|
expiresAt: requireDate(row.expires_at, "expires_at"),
|
|
266
255
|
...(consumedAt === undefined ? {} : { consumedAt }),
|
|
267
256
|
...(revokedAt === undefined ? {} : { revokedAt }),
|
|
257
|
+
...listOrNothing("resources", row.resources),
|
|
268
258
|
};
|
|
269
259
|
}
|
|
270
260
|
/** Same one-statement guarantee as a code: rotation depends on it. */
|
|
@@ -327,6 +317,46 @@ export class AtlasStore {
|
|
|
327
317
|
granted_at: consent.grantedAt,
|
|
328
318
|
});
|
|
329
319
|
}
|
|
320
|
+
async listConsents(userId) {
|
|
321
|
+
const rows = await this.#db
|
|
322
|
+
.from(this.#tables.consents)
|
|
323
|
+
.where({ user_id: userId })
|
|
324
|
+
.orderBy("granted_at", "desc")
|
|
325
|
+
.exec();
|
|
326
|
+
return rows.map((row) => ({
|
|
327
|
+
userId: requireString(row.user_id, "user_id"),
|
|
328
|
+
clientId: requireString(row.client_id, "client_id"),
|
|
329
|
+
scopes: decodeList(row.scopes, "scopes"),
|
|
330
|
+
grantedAt: requireDate(row.granted_at, "granted_at"),
|
|
331
|
+
}));
|
|
332
|
+
}
|
|
333
|
+
/** Expired ones included — see the contract for why. */
|
|
334
|
+
async listAccessTokens(userId) {
|
|
335
|
+
const rows = await this.#db
|
|
336
|
+
.from(this.#tables.accessTokens)
|
|
337
|
+
.where({ user_id: userId })
|
|
338
|
+
.orderBy("expires_at", "desc")
|
|
339
|
+
.exec();
|
|
340
|
+
return rows.map(readAccessToken);
|
|
341
|
+
}
|
|
342
|
+
async revokeAccessFor(userId, clientId, at) {
|
|
343
|
+
for (const table of [
|
|
344
|
+
this.#tables.accessTokens,
|
|
345
|
+
this.#tables.refreshTokens,
|
|
346
|
+
]) {
|
|
347
|
+
await this.#db
|
|
348
|
+
.from(table)
|
|
349
|
+
.where({ user_id: userId, client_id: clientId })
|
|
350
|
+
.whereNull("revoked_at")
|
|
351
|
+
.update({ revoked_at: at });
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
async deleteConsent(userId, clientId) {
|
|
355
|
+
await this.#db
|
|
356
|
+
.from(this.#tables.consents)
|
|
357
|
+
.where({ user_id: userId, client_id: clientId })
|
|
358
|
+
.delete();
|
|
359
|
+
}
|
|
330
360
|
/** Drop what has expired and can no longer be presented. */
|
|
331
361
|
async prune(now) {
|
|
332
362
|
for (const table of [
|
|
@@ -338,6 +368,30 @@ export class AtlasStore {
|
|
|
338
368
|
}
|
|
339
369
|
}
|
|
340
370
|
}
|
|
371
|
+
/** One access-token row, as the contract's shape. */
|
|
372
|
+
function readAccessToken(row) {
|
|
373
|
+
const userId = optionalString(row.user_id);
|
|
374
|
+
const revokedAt = decodeDate(row.revoked_at);
|
|
375
|
+
const lastUsedAt = decodeDate(row.last_used_at);
|
|
376
|
+
const familyId = optionalString(row.family_id);
|
|
377
|
+
return {
|
|
378
|
+
tokenHash: requireString(row.token_hash, "token_hash"),
|
|
379
|
+
clientId: requireString(row.client_id, "client_id"),
|
|
380
|
+
...(userId === undefined ? {} : { userId }),
|
|
381
|
+
scopes: decodeList(row.scopes, "scopes"),
|
|
382
|
+
expiresAt: requireDate(row.expires_at, "expires_at"),
|
|
383
|
+
...(revokedAt === undefined ? {} : { revokedAt }),
|
|
384
|
+
...(lastUsedAt === undefined ? {} : { lastUsedAt }),
|
|
385
|
+
...(familyId === undefined ? {} : { familyId }),
|
|
386
|
+
...listOrNothing("audience", row.audience),
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
function listOrNothing(key, value) {
|
|
390
|
+
const list = decodeList(value, key);
|
|
391
|
+
if (list.length === 0)
|
|
392
|
+
return {};
|
|
393
|
+
return key === "audience" ? { audience: list } : { resources: list };
|
|
394
|
+
}
|
|
341
395
|
function isGrantType(value) {
|
|
342
396
|
return (value === "authorization_code" ||
|
|
343
397
|
value === "refresh_token" ||
|
package/dist/stores/atlas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlas.js","sourceRoot":"","sources":["../../src/stores/atlas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"atlas.js","sourceRoot":"","sources":["../../src/stores/atlas.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/memory.d.ts
CHANGED
|
@@ -23,6 +23,10 @@ export declare class MemoryStore implements VisaStore {
|
|
|
23
23
|
saveAccessToken(token: AccessToken): Promise<void>;
|
|
24
24
|
findAccessToken(tokenHash: string): Promise<AccessToken | null>;
|
|
25
25
|
revokeAccessToken(tokenHash: string, at: Date): Promise<void>;
|
|
26
|
+
listConsents(userId: string): Promise<Consent[]>;
|
|
27
|
+
listAccessTokens(userId: string): Promise<AccessToken[]>;
|
|
28
|
+
revokeAccessFor(userId: string, clientId: string, at: Date): Promise<void>;
|
|
29
|
+
deleteConsent(userId: string, clientId: string): Promise<void>;
|
|
26
30
|
touchAccessToken(tokenHash: string, at: Date): Promise<void>;
|
|
27
31
|
saveRefreshToken(token: RefreshToken): Promise<void>;
|
|
28
32
|
findRefreshToken(tokenHash: string): Promise<RefreshToken | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,YAAY,EACZ,MAAM,aAAa,CAAC;AAErB,qBAAa,WAAY,YAAW,SAAS;;gBAOhC,OAAO,GAAE,SAAS,MAAM,EAAO;IAI3C,yEAAyE;IACzE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAK3B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI9C,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,qBAAqB,CAC1B,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI9B,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtE,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI/D,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIjE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAItE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAWrC"}
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,YAAY,EACZ,MAAM,aAAa,CAAC;AAErB,qBAAa,WAAY,YAAW,SAAS;;gBAOhC,OAAO,GAAE,SAAS,MAAM,EAAO;IAI3C,yEAAyE;IACzE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAK3B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI9C,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,qBAAqB,CAC1B,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI9B,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtE,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI/D,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAMhD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMxD,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,IAAI,GACN,OAAO,CAAC,IAAI,CAAC;IAWV,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIjE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAItE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAWrC"}
|