@samebase/identity-broker 0.7.0 → 0.9.0

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.
Files changed (39) hide show
  1. package/README.md +8 -8
  2. package/dist/client/index.d.ts +0 -24
  3. package/dist/client/index.js +22 -163
  4. package/dist/client/index.js.map +1 -1
  5. package/dist/client/keys.js +2 -9
  6. package/dist/client/keys.js.map +1 -1
  7. package/dist/client/protocol.d.ts +5 -20
  8. package/dist/client/protocol.js +14 -95
  9. package/dist/client/protocol.js.map +1 -1
  10. package/dist/client/responses.d.ts +4 -1
  11. package/dist/client/responses.js +9 -6
  12. package/dist/client/responses.js.map +1 -1
  13. package/dist/client/subject.js +3 -8
  14. package/dist/client/subject.js.map +1 -1
  15. package/dist/component/_generated/api.d.ts +0 -4
  16. package/dist/component/_generated/api.js.map +1 -1
  17. package/dist/component/_generated/component.d.ts +6 -45
  18. package/dist/component/apps.d.ts +8 -17
  19. package/dist/component/apps.js +24 -36
  20. package/dist/component/apps.js.map +1 -1
  21. package/dist/component/authRequests.d.ts +8 -8
  22. package/dist/component/authRequests.js +9 -10
  23. package/dist/component/authRequests.js.map +1 -1
  24. package/dist/component/clients.d.ts +0 -9
  25. package/dist/component/clients.js +1 -21
  26. package/dist/component/clients.js.map +1 -1
  27. package/dist/component/lifecycle.d.ts +5 -6
  28. package/dist/component/lifecycle.js +5 -14
  29. package/dist/component/lifecycle.js.map +1 -1
  30. package/dist/component/schema.d.ts +61 -79
  31. package/dist/component/schema.js +5 -17
  32. package/dist/component/schema.js.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/component/crypto.d.ts +0 -2
  35. package/dist/component/crypto.js +0 -9
  36. package/dist/component/crypto.js.map +0 -1
  37. package/dist/component/registration.d.ts +0 -29
  38. package/dist/component/registration.js +0 -90
  39. package/dist/component/registration.js.map +0 -1
@@ -11,28 +11,13 @@ export type Validation<T> = {
11
11
  error: string;
12
12
  description: string;
13
13
  };
14
- export declare const TOKEN_ENDPOINT_AUTH_METHODS: readonly ["client_secret_post", "client_secret_basic"];
15
- export type TokenEndpointAuthMethod = (typeof TOKEN_ENDPOINT_AUTH_METHODS)[number];
16
- export declare const DEPLOYMENT_TYPES: readonly ["production", "development", "preview"];
17
- export type DeploymentType = (typeof DEPLOYMENT_TYPES)[number];
14
+ export type TokenEndpointAuthMethod = "client_secret_post" | "client_secret_basic";
18
15
  /** The own enumerable entries of a JSON value, or an empty record for anything but an object. */
19
16
  export declare function asRecord(value: unknown): Record<string, unknown>;
20
- /** A redirect URI: absolute, no fragment, https, or http on a loopback host for local development. */
17
+ /** https, or http on a loopback host for local development. */
18
+ export declare function isSecureUrl(url: URL): boolean;
19
+ /** A redirect URI: absolute, no fragment, and secure. */
21
20
  export declare function parseRedirectUri(value: string): URL | null;
22
- /**
23
- * Whether `hostname` is covered by one of an app's allowed callback hosts: an exact host, or a
24
- * `*.suffix` pattern whose wildcard stands for exactly one leading label.
25
- */
26
- export declare function hostAllowed(hostname: string, allowedHosts: readonly string[]): boolean;
27
- export type RegistrationInput = {
28
- redirectUri: string;
29
- clientName: string;
30
- softwareVersion: string;
31
- deploymentType: DeploymentType;
32
- tokenEndpointAuthMethod: TokenEndpointAuthMethod;
33
- };
34
- /** RFC 7591 registration metadata as this provider accepts it: one redirect URI per client. */
35
- export declare function validateRegistration(payload: unknown): Validation<RegistrationInput>;
36
21
  export type AuthorizeInput = {
37
22
  clientId: string;
38
23
  redirectUri: string;
@@ -71,7 +56,7 @@ export type TokenInput = {
71
56
  /**
72
57
  * Client credentials from HTTP Basic (RFC 6749 section 2.3.1) or the form body. The first look at a
73
58
  * token request, so it also refuses a repeated parameter (RFC 6749 section 3.2) and a request that
74
- * uses both methods (section 2.3.1): an Authorization header and a `client_secret` in the body. A
59
+ * uses both methods (section 2.3): an Authorization header and a `client_secret` in the body. A
75
60
  * `client_id` in the body names the client and is not a method; an empty `client_secret` counts as
76
61
  * omitted (section 3.2).
77
62
  */
@@ -4,10 +4,7 @@
4
4
  */
5
5
  const MAX_STATE_LENGTH = 4096;
6
6
  const MAX_REDIRECT_URI_LENGTH = 2048;
7
- const MAX_CLIENT_NAME_LENGTH = 120;
8
7
  const pkceValuePattern = /^[A-Za-z0-9\-._~]{43,128}$/;
9
- export const TOKEN_ENDPOINT_AUTH_METHODS = ["client_secret_post", "client_secret_basic"];
10
- export const DEPLOYMENT_TYPES = ["production", "development", "preview"];
11
8
  /** The own enumerable entries of a JSON value, or an empty record for anything but an object. */
12
9
  export function asRecord(value) {
13
10
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -26,7 +23,11 @@ function hasRepeatedParameter(params) {
26
23
  function isLoopbackHost(hostname) {
27
24
  return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]";
28
25
  }
29
- /** A redirect URI: absolute, no fragment, https, or http on a loopback host for local development. */
26
+ /** https, or http on a loopback host for local development. */
27
+ export function isSecureUrl(url) {
28
+ return url.protocol === "https:" || (url.protocol === "http:" && isLoopbackHost(url.hostname));
29
+ }
30
+ /** A redirect URI: absolute, no fragment, and secure. */
30
31
  export function parseRedirectUri(value) {
31
32
  if (value.length === 0 || value.length > MAX_REDIRECT_URI_LENGTH) {
32
33
  return null;
@@ -38,96 +39,7 @@ export function parseRedirectUri(value) {
38
39
  catch {
39
40
  return null;
40
41
  }
41
- if (url.hash.length > 0) {
42
- return null;
43
- }
44
- if (url.protocol === "https:") {
45
- return url;
46
- }
47
- if (url.protocol === "http:" && isLoopbackHost(url.hostname)) {
48
- return url;
49
- }
50
- return null;
51
- }
52
- /**
53
- * Whether `hostname` is covered by one of an app's allowed callback hosts: an exact host, or a
54
- * `*.suffix` pattern whose wildcard stands for exactly one leading label.
55
- */
56
- export function hostAllowed(hostname, allowedHosts) {
57
- const host = hostname.toLowerCase();
58
- return allowedHosts.some((allowed) => {
59
- const pattern = allowed.toLowerCase();
60
- if (!pattern.startsWith("*.")) {
61
- return host === pattern;
62
- }
63
- const suffix = pattern.slice(1);
64
- if (!host.endsWith(suffix)) {
65
- return false;
66
- }
67
- const label = host.slice(0, host.length - suffix.length);
68
- return label.length > 0 && !label.includes(".");
69
- });
70
- }
71
- function readString(value, maxLength) {
72
- if (typeof value !== "string") {
73
- return null;
74
- }
75
- const trimmed = value.trim();
76
- return trimmed.length === 0 || trimmed.length > maxLength ? null : trimmed;
77
- }
78
- /** RFC 7591 registration metadata as this provider accepts it: one redirect URI per client. */
79
- export function validateRegistration(payload) {
80
- if (typeof payload !== "object" || payload === null || Array.isArray(payload)) {
81
- return invalid(400, "invalid_client_metadata", "The request body must be a JSON object.");
82
- }
83
- const record = asRecord(payload);
84
- const redirectUris = record["redirect_uris"];
85
- if (!Array.isArray(redirectUris) || redirectUris.length !== 1) {
86
- return invalid(400, "invalid_redirect_uri", "redirect_uris must hold exactly one URI: a client is one deployment.");
87
- }
88
- const redirectUri = typeof redirectUris[0] === "string" ? redirectUris[0] : "";
89
- if (parseRedirectUri(redirectUri) === null) {
90
- return invalid(400, "invalid_redirect_uri", "The redirect URI must be an absolute https URL without a fragment, or http on a loopback host.");
91
- }
92
- const clientName = readString(record["client_name"], MAX_CLIENT_NAME_LENGTH);
93
- if (clientName === null) {
94
- return invalid(400, "invalid_client_metadata", "client_name is required.");
95
- }
96
- const softwareVersion = readString(record["software_version"] ?? "unknown", 200);
97
- if (softwareVersion === null) {
98
- return invalid(400, "invalid_client_metadata", "software_version must be a non-empty string.");
99
- }
100
- const deploymentType = DEPLOYMENT_TYPES.find((type) => type === record["deployment_type"]);
101
- if (deploymentType === undefined) {
102
- return invalid(400, "invalid_client_metadata", `deployment_type must be one of ${DEPLOYMENT_TYPES.join(", ")}.`);
103
- }
104
- // RFC 7591 section 2: the default is client_secret_basic.
105
- const authMethod = TOKEN_ENDPOINT_AUTH_METHODS.find((method) => method === (record["token_endpoint_auth_method"] ?? "client_secret_basic"));
106
- if (authMethod === undefined) {
107
- return invalid(400, "invalid_client_metadata", `token_endpoint_auth_method must be one of ${TOKEN_ENDPOINT_AUTH_METHODS.join(", ")}.`);
108
- }
109
- const grantTypes = record["grant_types"];
110
- if (grantTypes !== undefined &&
111
- (!Array.isArray(grantTypes) ||
112
- grantTypes.length !== 1 ||
113
- grantTypes[0] !== "authorization_code")) {
114
- return invalid(400, "invalid_client_metadata", 'grant_types must be ["authorization_code"].');
115
- }
116
- const responseTypes = record["response_types"];
117
- if (responseTypes !== undefined &&
118
- (!Array.isArray(responseTypes) || responseTypes.length !== 1 || responseTypes[0] !== "code")) {
119
- return invalid(400, "invalid_client_metadata", 'response_types must be ["code"].');
120
- }
121
- return {
122
- ok: true,
123
- value: {
124
- redirectUri,
125
- clientName,
126
- softwareVersion,
127
- deploymentType,
128
- tokenEndpointAuthMethod: authMethod,
129
- },
130
- };
42
+ return url.hash.length === 0 && isSecureUrl(url) ? url : null;
131
43
  }
132
44
  /**
133
45
  * The first half of /authorize validation: the parameters that identify the client and where to
@@ -150,6 +62,13 @@ export function validateAuthorizeTarget(params) {
150
62
  return { ok: true, value: { clientId, redirectUri } };
151
63
  }
152
64
  export function validateAuthorizeRest(params, target) {
65
+ // Discovery says neither is supported, and OIDC Core sections 6.1 and 6.2 name these errors.
66
+ if (params.has("request")) {
67
+ return invalid(400, "request_not_supported", "Request Objects are not supported.");
68
+ }
69
+ if (params.has("request_uri")) {
70
+ return invalid(400, "request_uri_not_supported", "request_uri is not supported.");
71
+ }
153
72
  if (params.get("response_type") !== "code") {
154
73
  return invalid(400, "unsupported_response_type", 'response_type must be "code".');
155
74
  }
@@ -206,7 +125,7 @@ export function validateAuthorizeRest(params, target) {
206
125
  /**
207
126
  * Client credentials from HTTP Basic (RFC 6749 section 2.3.1) or the form body. The first look at a
208
127
  * token request, so it also refuses a repeated parameter (RFC 6749 section 3.2) and a request that
209
- * uses both methods (section 2.3.1): an Authorization header and a `client_secret` in the body. A
128
+ * uses both methods (section 2.3): an Authorization header and a `client_secret` in the body. A
210
129
  * `client_id` in the body names the client and is not a method; an empty `client_secret` counts as
211
130
  * omitted (section 3.2).
212
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client/protocol.ts"],"names":[],"mappings":"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"}
@@ -26,5 +26,8 @@ export declare function authorizationError(args: {
26
26
  error: string;
27
27
  description: string;
28
28
  }): Response;
29
- /** The parameters of a GET query or a form POST, which the authorization endpoint accepts alike. */
29
+ /**
30
+ * The parameters of a GET query or a form POST, which the authorization endpoint accepts alike. A
31
+ * parameter sent without a value counts as omitted (RFC 6749 section 3.1).
32
+ */
30
33
  export declare function readParameters(request: Request): Promise<URLSearchParams | null>;
@@ -48,15 +48,18 @@ export function authorizationError(args) {
48
48
  params: { error: args.error, error_description: args.description },
49
49
  });
50
50
  }
51
- /** The parameters of a GET query or a form POST, which the authorization endpoint accepts alike. */
51
+ /**
52
+ * The parameters of a GET query or a form POST, which the authorization endpoint accepts alike. A
53
+ * parameter sent without a value counts as omitted (RFC 6749 section 3.1).
54
+ */
52
55
  export async function readParameters(request) {
53
- if (request.method === "GET") {
54
- return new URL(request.url).searchParams;
55
- }
56
56
  const contentType = request.headers.get("content-type")?.toLowerCase() ?? "";
57
- if (!contentType.startsWith("application/x-www-form-urlencoded")) {
57
+ if (request.method !== "GET" && !contentType.startsWith("application/x-www-form-urlencoded")) {
58
58
  return null;
59
59
  }
60
- return new URLSearchParams(await request.text());
60
+ const params = request.method === "GET"
61
+ ? new URL(request.url).searchParams
62
+ : new URLSearchParams(await request.text());
63
+ return new URLSearchParams([...params].filter(([, value]) => value !== ""));
61
64
  }
62
65
  //# sourceMappingURL=responses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/client/responses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/client/responses.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { base64url } from "jose";
1
2
  /**
2
3
  * The pairwise subject of OIDC Core 8.1 with the app as the sector: deterministic, not reversible,
3
4
  * and the same for every deployment of an app.
@@ -5,10 +6,7 @@
5
6
  export async function pairwiseSubject(args) {
6
7
  const input = `${args.appId}\u0000${args.connector}\u0000${args.upstreamId}\u0000${args.salt}`;
7
8
  const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(input));
8
- return btoa(String.fromCharCode(...new Uint8Array(digest)))
9
- .replace(/\+/g, "-")
10
- .replace(/\//g, "_")
11
- .replace(/=+$/, "");
9
+ return base64url.encode(new Uint8Array(digest));
12
10
  }
13
11
  export async function sha256Hex(input) {
14
12
  const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(input));
@@ -18,10 +16,7 @@ export async function sha256Hex(input) {
18
16
  export function randomToken(bytes = 32) {
19
17
  const buffer = new Uint8Array(bytes);
20
18
  crypto.getRandomValues(buffer);
21
- return btoa(String.fromCharCode(...buffer))
22
- .replace(/\+/g, "-")
23
- .replace(/\//g, "_")
24
- .replace(/=+$/, "");
19
+ return base64url.encode(buffer);
25
20
  }
26
21
  /** A six-digit code for the email connector, uniform over 000000 to 999999. */
27
22
  export function randomDigits(count = 6) {
@@ -1 +1 @@
1
- {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/client/subject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAKrC;IACC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,SAAS,SAAS,IAAI,CAAC,UAAU,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;SACxD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,EAAE;IACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC;SACxC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,KAAK,GAAG,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/client/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAKrC;IACC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,SAAS,SAAS,IAAI,CAAC,UAAU,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,EAAE;IACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,KAAK,GAAG,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC"}
@@ -9,18 +9,14 @@
9
9
  import type * as apps from "../apps.js";
10
10
  import type * as authRequests from "../authRequests.js";
11
11
  import type * as clients from "../clients.js";
12
- import type * as crypto from "../crypto.js";
13
12
  import type * as lifecycle from "../lifecycle.js";
14
- import type * as registration from "../registration.js";
15
13
  import type * as signIns from "../signIns.js";
16
14
  import type { ApiFromModules, FilterApi, FunctionReference } from "convex/server";
17
15
  declare const fullApi: ApiFromModules<{
18
16
  apps: typeof apps;
19
17
  authRequests: typeof authRequests;
20
18
  clients: typeof clients;
21
- crypto: typeof crypto;
22
19
  lifecycle: typeof lifecycle;
23
- registration: typeof registration;
24
20
  signIns: typeof signIns;
25
21
  }>;
26
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/component/_generated/api.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;;;;GAOG;AAeH,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,OAAO,GAQR,MAAa,CAAC;AAEnB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAGZ,MAAa,CAAC;AAElB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAGjB,MAAa,CAAC;AAElB,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,EAAmB,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/component/_generated/api.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;;;;GAOG;AAaH,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,OAAO,GAMR,MAAa,CAAC;AAEnB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAGZ,MAAa,CAAC;AAElB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAGjB,MAAa,CAAC;AAElB,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,EAAmB,CAAC"}
@@ -21,7 +21,6 @@ import type { FunctionReference } from "convex/server";
21
21
  export type ComponentApi<Name extends string | undefined = string | undefined> = {
22
22
  apps: {
23
23
  create: FunctionReference<"mutation", "internal", {
24
- allowedCallbackHosts?: Array<string>;
25
24
  appId: string;
26
25
  createdAt: number;
27
26
  firstParty: boolean;
@@ -30,14 +29,12 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
30
29
  get: FunctionReference<"query", "internal", {
31
30
  appId: string;
32
31
  }, {
33
- allowedCallbackHosts?: Array<string>;
34
32
  appId: string;
35
33
  createdAt: number;
36
34
  firstParty: boolean;
37
35
  name: string;
38
36
  } | null, Name>;
39
37
  list: FunctionReference<"query", "internal", {}, Array<{
40
- allowedCallbackHosts?: Array<string>;
41
38
  appId: string;
42
39
  createdAt: number;
43
40
  firstParty: boolean;
@@ -46,10 +43,6 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
46
43
  remove: FunctionReference<"mutation", "internal", {
47
44
  appId: string;
48
45
  }, null, Name>;
49
- setAllowedCallbackHosts: FunctionReference<"mutation", "internal", {
50
- allowedCallbackHosts: Array<string>;
51
- appId: string;
52
- }, null, Name>;
53
46
  };
54
47
  authRequests: {
55
48
  abandon: FunctionReference<"mutation", "internal", {
@@ -122,7 +115,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
122
115
  requestId: string;
123
116
  scope: string;
124
117
  state?: string;
125
- txnCookieHash?: string;
118
+ txnCookieHash: string;
126
119
  }, null, Name>;
127
120
  exchangeCode: FunctionReference<"mutation", "internal", {
128
121
  clientId: string;
@@ -168,7 +161,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
168
161
  scope: string;
169
162
  state?: string;
170
163
  status: "pending";
171
- txnCookieHash?: string;
164
+ txnCookieHash: string;
172
165
  } | {
173
166
  appId: string;
174
167
  clientId: string;
@@ -183,7 +176,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
183
176
  scope: string;
184
177
  state?: string;
185
178
  status: "upstream";
186
- txnCookieHash?: string;
179
+ txnCookieHash: string;
187
180
  upstreamCodeVerifier: string;
188
181
  upstreamNonce?: string;
189
182
  upstreamStateHash: string;
@@ -201,7 +194,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
201
194
  scope: string;
202
195
  state?: string;
203
196
  status: "claimed";
204
- txnCookieHash?: string;
197
+ txnCookieHash: string;
205
198
  } | {
206
199
  appId: string;
207
200
  clientId: string;
@@ -222,7 +215,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
222
215
  scope: string;
223
216
  state?: string;
224
217
  status: "emailSent";
225
- txnCookieHash?: string;
218
+ txnCookieHash: string;
226
219
  } | {
227
220
  appId: string;
228
221
  authTime: number;
@@ -245,7 +238,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
245
238
  scope: string;
246
239
  state?: string;
247
240
  status: "completed";
248
- txnCookieHash?: string;
241
+ txnCookieHash: string;
249
242
  } | null, Name>;
250
243
  startEmail: FunctionReference<"mutation", "internal", {
251
244
  connector: string;
@@ -353,10 +346,6 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
353
346
  remove: FunctionReference<"mutation", "internal", {
354
347
  clientId: string;
355
348
  }, null, Name>;
356
- unregister: FunctionReference<"mutation", "internal", {
357
- appId: string;
358
- clientId: string;
359
- }, boolean, Name>;
360
349
  };
361
350
  lifecycle: {
362
351
  cleanup: FunctionReference<"mutation", "internal", {
@@ -368,37 +357,9 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
368
357
  authorizationCodes: number;
369
358
  emailSends: number;
370
359
  previewClients: number;
371
- registrationTokens: number;
372
360
  signIns: number;
373
361
  }, Name>;
374
362
  };
375
- registration: {
376
- listTokens: FunctionReference<"query", "internal", {
377
- appId: string;
378
- }, Array<{
379
- createdAt: number;
380
- expiresAt: number;
381
- tokenHash: string;
382
- }>, Name>;
383
- mintToken: FunctionReference<"mutation", "internal", {
384
- appId: string;
385
- createdAt: number;
386
- expiresAt: number;
387
- tokenHash: string;
388
- }, null, Name>;
389
- readToken: FunctionReference<"query", "internal", {
390
- now: number;
391
- tokenHash: string;
392
- }, {
393
- allowedCallbackHosts: Array<string>;
394
- appId: string;
395
- firstParty: boolean;
396
- name: string;
397
- } | null, Name>;
398
- revokeToken: FunctionReference<"mutation", "internal", {
399
- tokenHash: string;
400
- }, null, Name>;
401
- };
402
363
  signIns: {
403
364
  record: FunctionReference<"mutation", "internal", {
404
365
  appId: string;
@@ -1,6 +1,5 @@
1
- /** Registers an app. Its clients come later, one per deployment, through registration tokens. */
1
+ /** Registers an app. Its clients come later, one per deployment. */
2
2
  export declare const create: import("convex/server").RegisteredMutation<"public", {
3
- allowedCallbackHosts?: string[];
4
3
  appId: string;
5
4
  createdAt: number;
6
5
  firstParty: boolean;
@@ -9,29 +8,21 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
9
8
  export declare const get: import("convex/server").RegisteredQuery<"public", {
10
9
  appId: string;
11
10
  }, Promise<{
12
- allowedCallbackHosts?: string[];
13
11
  appId: string;
14
- createdAt: number;
15
- firstParty: boolean;
16
12
  name: string;
13
+ firstParty: boolean;
14
+ createdAt: number;
17
15
  } | null>>;
18
16
  export declare const list: import("convex/server").RegisteredQuery<"public", {}, Promise<{
19
- allowedCallbackHosts?: string[];
20
17
  appId: string;
21
- createdAt: number;
22
- firstParty: boolean;
23
18
  name: string;
19
+ firstParty: boolean;
20
+ createdAt: number;
24
21
  }[]>>;
25
- /** Replaces the hosts a client callback may use, for example when an app gets a custom domain. */
26
- export declare const setAllowedCallbackHosts: import("convex/server").RegisteredMutation<"public", {
27
- allowedCallbackHosts: string[];
28
- appId: string;
29
- }, Promise<null>>;
30
22
  /**
31
- * Deletes an app with its registration tokens and clients. This is the emergency revocation. The
32
- * app row goes first: registration, /authorize and /token refuse a token or client whose app is
33
- * gone, so this transaction revokes every token and client of the app, however many batches their
34
- * rows take to delete.
23
+ * Deletes an app with its clients. This is the emergency revocation. The app row goes first:
24
+ * /authorize and /token refuse a client whose app is gone, so this transaction revokes every client
25
+ * of the app, however many batches their rows take to delete.
35
26
  */
36
27
  export declare const remove: import("convex/server").RegisteredMutation<"public", {
37
28
  appId: string;
@@ -2,21 +2,19 @@ import { v } from "convex/values";
2
2
  import { internal } from "./_generated/api";
3
3
  import { internalMutation, mutation, query } from "./_generated/server";
4
4
  import { BATCH } from "./lifecycle";
5
- const { array, boolean, number, object, optional, string } = v;
5
+ const { array, boolean, number, object, string } = v;
6
6
  const vApp = object({
7
7
  appId: string(),
8
8
  name: string(),
9
9
  firstParty: boolean(),
10
- allowedCallbackHosts: optional(array(string())),
11
10
  createdAt: number(),
12
11
  });
13
- /** Registers an app. Its clients come later, one per deployment, through registration tokens. */
12
+ /** Registers an app. Its clients come later, one per deployment. */
14
13
  export const create = mutation({
15
14
  args: {
16
15
  appId: string(),
17
16
  name: string(),
18
17
  firstParty: boolean(),
19
- allowedCallbackHosts: optional(array(string())),
20
18
  createdAt: number(),
21
19
  },
22
20
  returns: v.null(),
@@ -28,7 +26,12 @@ export const create = mutation({
28
26
  if (existing !== null) {
29
27
  throw new Error(`An app with id "${args.appId}" already exists`);
30
28
  }
31
- await ctx.db.insert("apps", args);
29
+ await ctx.db.insert("apps", {
30
+ appId: args.appId,
31
+ name: args.name,
32
+ firstParty: args.firstParty,
33
+ createdAt: args.createdAt,
34
+ });
32
35
  return null;
33
36
  },
34
37
  });
@@ -43,8 +46,12 @@ export const get = query({
43
46
  if (app === null) {
44
47
  return null;
45
48
  }
46
- const { _id, _creationTime, ...fields } = app;
47
- return fields;
49
+ return {
50
+ appId: app.appId,
51
+ name: app.name,
52
+ firstParty: app.firstParty,
53
+ createdAt: app.createdAt,
54
+ };
48
55
  },
49
56
  });
50
57
  export const list = query({
@@ -53,34 +60,16 @@ export const list = query({
53
60
  handler: async (ctx) => {
54
61
  const apps = await ctx.db.query("apps").collect();
55
62
  return apps
56
- .map(({ _id, _creationTime, ...fields }) => fields)
63
+ .map((app) => ({
64
+ appId: app.appId,
65
+ name: app.name,
66
+ firstParty: app.firstParty,
67
+ createdAt: app.createdAt,
68
+ }))
57
69
  .sort((a, b) => a.createdAt - b.createdAt || a.appId.localeCompare(b.appId));
58
70
  },
59
71
  });
60
- /** Replaces the hosts a client callback may use, for example when an app gets a custom domain. */
61
- export const setAllowedCallbackHosts = mutation({
62
- args: { appId: string(), allowedCallbackHosts: array(string()) },
63
- returns: v.null(),
64
- handler: async (ctx, args) => {
65
- const app = await ctx.db
66
- .query("apps")
67
- .withIndex("by_app_id", (q) => q.eq("appId", args.appId))
68
- .unique();
69
- if (app === null) {
70
- throw new Error(`Unknown app "${args.appId}"`);
71
- }
72
- await ctx.db.patch("apps", app._id, { allowedCallbackHosts: args.allowedCallbackHosts });
73
- return null;
74
- },
75
- });
76
72
  async function removeRows(ctx, appId) {
77
- const tokens = await ctx.db
78
- .query("registrationTokens")
79
- .withIndex("by_app_id", (q) => q.eq("appId", appId))
80
- .take(BATCH);
81
- for (const token of tokens) {
82
- await ctx.db.delete("registrationTokens", token._id);
83
- }
84
73
  const clients = await ctx.db
85
74
  .query("clients")
86
75
  .withIndex("by_app_id", (q) => q.eq("appId", appId))
@@ -88,15 +77,14 @@ async function removeRows(ctx, appId) {
88
77
  for (const client of clients) {
89
78
  await ctx.db.delete("clients", client._id);
90
79
  }
91
- if (tokens.length === BATCH || clients.length === BATCH) {
80
+ if (clients.length === BATCH) {
92
81
  await ctx.scheduler.runAfter(0, internal.apps.continueRemove, { appId });
93
82
  }
94
83
  }
95
84
  /**
96
- * Deletes an app with its registration tokens and clients. This is the emergency revocation. The
97
- * app row goes first: registration, /authorize and /token refuse a token or client whose app is
98
- * gone, so this transaction revokes every token and client of the app, however many batches their
99
- * rows take to delete.
85
+ * Deletes an app with its clients. This is the emergency revocation. The app row goes first:
86
+ * /authorize and /token refuse a client whose app is gone, so this transaction revokes every client
87
+ * of the app, however many batches their rows take to delete.
100
88
  */
101
89
  export const remove = mutation({
102
90
  args: { appId: string() },