@samebase/identity-broker 0.0.0-stage → 0.2.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.
- package/LICENSE +201 -0
- package/NOTICE +4 -0
- package/README.md +104 -2
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +39 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client/connectors/email.d.ts +6 -0
- package/dist/client/connectors/email.js +5 -0
- package/dist/client/connectors/email.js.map +1 -0
- package/dist/client/connectors/github.d.ts +7 -0
- package/dist/client/connectors/github.js +57 -0
- package/dist/client/connectors/github.js.map +1 -0
- package/dist/client/connectors/google.d.ts +7 -0
- package/dist/client/connectors/google.js +13 -0
- package/dist/client/connectors/google.js.map +1 -0
- package/dist/client/connectors/types.d.ts +47 -0
- package/dist/client/connectors/types.js +2 -0
- package/dist/client/connectors/types.js.map +1 -0
- package/dist/client/connectors/upstream.d.ts +25 -0
- package/dist/client/connectors/upstream.js +86 -0
- package/dist/client/connectors/upstream.js.map +1 -0
- package/dist/client/html.d.ts +34 -0
- package/dist/client/html.js +91 -0
- package/dist/client/html.js.map +1 -0
- package/dist/client/index.d.ts +93 -0
- package/dist/client/index.js +819 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/jwt.d.ts +31 -0
- package/dist/client/jwt.js +55 -0
- package/dist/client/jwt.js.map +1 -0
- package/dist/client/keys.d.ts +49 -0
- package/dist/client/keys.js +138 -0
- package/dist/client/keys.js.map +1 -0
- package/dist/client/protocol.d.ts +79 -0
- package/dist/client/protocol.js +279 -0
- package/dist/client/protocol.js.map +1 -0
- package/dist/client/responses.d.ts +24 -0
- package/dist/client/responses.js +57 -0
- package/dist/client/responses.js.map +1 -0
- package/dist/client/subject.d.ts +15 -0
- package/dist/client/subject.js +32 -0
- package/dist/client/subject.js.map +1 -0
- package/dist/component/_generated/api.d.ts +45 -0
- package/dist/component/_generated/api.js +31 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/component.d.ts +398 -0
- package/dist/component/_generated/component.js +11 -0
- package/dist/component/_generated/component.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +45 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +132 -0
- package/dist/component/_generated/server.js +80 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/apps.d.ts +36 -0
- package/dist/component/apps.js +124 -0
- package/dist/component/apps.js.map +1 -0
- package/dist/component/authRequests.d.ts +274 -0
- package/dist/component/authRequests.js +461 -0
- package/dist/component/authRequests.js.map +1 -0
- package/dist/component/clients.d.ts +43 -0
- package/dist/component/clients.js +95 -0
- package/dist/component/clients.js.map +1 -0
- package/dist/component/convex.config.d.ts +2 -0
- package/dist/component/convex.config.js +3 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/crypto.d.ts +2 -0
- package/dist/component/crypto.js +9 -0
- package/dist/component/crypto.js.map +1 -0
- package/dist/component/lifecycle.d.ts +18 -0
- package/dist/component/lifecycle.js +79 -0
- package/dist/component/lifecycle.js.map +1 -0
- package/dist/component/registration.d.ts +29 -0
- package/dist/component/registration.js +90 -0
- package/dist/component/registration.js.map +1 -0
- package/dist/component/schema.d.ts +749 -0
- package/dist/component/schema.js +140 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/component/signIns.d.ts +8 -0
- package/dist/component/signIns.js +26 -0
- package/dist/component/signIns.js.map +1 -0
- package/package.json +51 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/component/crypto.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deletes what has run out: expired requests, codes and registration tokens, preview clients
|
|
3
|
+
* nobody used for `previewClientMaxAgeMs`, audit rows older than `signInRetentionMs`, and email send
|
|
4
|
+
* rows outside the send window. The host calls this from a cron; production and development clients
|
|
5
|
+
* are never touched.
|
|
6
|
+
*/
|
|
7
|
+
export declare const cleanup: import("convex/server").RegisteredMutation<"public", {
|
|
8
|
+
now: number;
|
|
9
|
+
previewClientMaxAgeMs: number;
|
|
10
|
+
signInRetentionMs: number;
|
|
11
|
+
}, Promise<{
|
|
12
|
+
authRequests: number;
|
|
13
|
+
authorizationCodes: number;
|
|
14
|
+
registrationTokens: number;
|
|
15
|
+
previewClients: number;
|
|
16
|
+
signIns: number;
|
|
17
|
+
emailSends: number;
|
|
18
|
+
}>>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
import { mutation } from "./_generated/server";
|
|
3
|
+
import { EMAIL_SEND_WINDOW_MS } from "./authRequests";
|
|
4
|
+
const { number, object } = v;
|
|
5
|
+
/** How many documents one run deletes per table, so a run stays well inside one transaction. */
|
|
6
|
+
const BATCH = 200;
|
|
7
|
+
/**
|
|
8
|
+
* Deletes what has run out: expired requests, codes and registration tokens, preview clients
|
|
9
|
+
* nobody used for `previewClientMaxAgeMs`, audit rows older than `signInRetentionMs`, and email send
|
|
10
|
+
* rows outside the send window. The host calls this from a cron; production and development clients
|
|
11
|
+
* are never touched.
|
|
12
|
+
*/
|
|
13
|
+
export const cleanup = mutation({
|
|
14
|
+
args: { now: number(), previewClientMaxAgeMs: number(), signInRetentionMs: number() },
|
|
15
|
+
returns: object({
|
|
16
|
+
authRequests: number(),
|
|
17
|
+
authorizationCodes: number(),
|
|
18
|
+
registrationTokens: number(),
|
|
19
|
+
previewClients: number(),
|
|
20
|
+
signIns: number(),
|
|
21
|
+
emailSends: number(),
|
|
22
|
+
}),
|
|
23
|
+
handler: async (ctx, args) => {
|
|
24
|
+
const requests = await ctx.db
|
|
25
|
+
.query("authRequests")
|
|
26
|
+
.withIndex("by_expires_at", (q) => q.lt("expiresAt", args.now))
|
|
27
|
+
.take(BATCH);
|
|
28
|
+
for (const request of requests) {
|
|
29
|
+
await ctx.db.delete("authRequests", request._id);
|
|
30
|
+
}
|
|
31
|
+
const codes = await ctx.db
|
|
32
|
+
.query("authorizationCodes")
|
|
33
|
+
.withIndex("by_expires_at", (q) => q.lt("expiresAt", args.now))
|
|
34
|
+
.take(BATCH);
|
|
35
|
+
for (const code of codes) {
|
|
36
|
+
await ctx.db.delete("authorizationCodes", code._id);
|
|
37
|
+
}
|
|
38
|
+
const tokens = await ctx.db
|
|
39
|
+
.query("registrationTokens")
|
|
40
|
+
.withIndex("by_expires_at", (q) => q.lt("expiresAt", args.now))
|
|
41
|
+
.take(BATCH);
|
|
42
|
+
for (const token of tokens) {
|
|
43
|
+
await ctx.db.delete("registrationTokens", token._id);
|
|
44
|
+
}
|
|
45
|
+
const previewCutoff = args.now - args.previewClientMaxAgeMs;
|
|
46
|
+
const previewClients = (await ctx.db
|
|
47
|
+
.query("clients")
|
|
48
|
+
.withIndex("by_deployment_type", (q) => q.eq("deploymentType", "preview"))
|
|
49
|
+
.collect())
|
|
50
|
+
.filter((client) => (client.lastSignInAt ?? client.createdAt) < previewCutoff)
|
|
51
|
+
.slice(0, BATCH);
|
|
52
|
+
for (const client of previewClients) {
|
|
53
|
+
await ctx.db.delete("clients", client._id);
|
|
54
|
+
}
|
|
55
|
+
const signIns = await ctx.db
|
|
56
|
+
.query("signIns")
|
|
57
|
+
.withIndex("by_at", (q) => q.lt("at", args.now - args.signInRetentionMs))
|
|
58
|
+
.take(BATCH);
|
|
59
|
+
for (const signIn of signIns) {
|
|
60
|
+
await ctx.db.delete("signIns", signIn._id);
|
|
61
|
+
}
|
|
62
|
+
const emailSends = await ctx.db
|
|
63
|
+
.query("emailSends")
|
|
64
|
+
.withIndex("by_at", (q) => q.lt("at", args.now - EMAIL_SEND_WINDOW_MS))
|
|
65
|
+
.take(BATCH);
|
|
66
|
+
for (const emailSend of emailSends) {
|
|
67
|
+
await ctx.db.delete("emailSends", emailSend._id);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
authRequests: requests.length,
|
|
71
|
+
authorizationCodes: codes.length,
|
|
72
|
+
registrationTokens: tokens.length,
|
|
73
|
+
previewClients: previewClients.length,
|
|
74
|
+
signIns: signIns.length,
|
|
75
|
+
emailSends: emailSends.length,
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/component/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Stores the hash of an initial access token (RFC 7591 section 3) that registers clients of one app. */
|
|
2
|
+
export declare const mintToken: import("convex/server").RegisteredMutation<"public", {
|
|
3
|
+
appId: string;
|
|
4
|
+
createdAt: number;
|
|
5
|
+
expiresAt: number;
|
|
6
|
+
tokenHash: string;
|
|
7
|
+
}, Promise<null>>;
|
|
8
|
+
/** The app a live registration token belongs to, or null for an unknown or expired token. */
|
|
9
|
+
export declare const readToken: import("convex/server").RegisteredQuery<"public", {
|
|
10
|
+
now: number;
|
|
11
|
+
tokenHash: string;
|
|
12
|
+
}, Promise<{
|
|
13
|
+
appId: string;
|
|
14
|
+
name: string;
|
|
15
|
+
firstParty: boolean;
|
|
16
|
+
allowedCallbackHosts: string[];
|
|
17
|
+
} | null>>;
|
|
18
|
+
/** The tokens of one app, as hashes: the plaintext is never stored. Oldest first. */
|
|
19
|
+
export declare const listTokens: import("convex/server").RegisteredQuery<"public", {
|
|
20
|
+
appId: string;
|
|
21
|
+
}, Promise<{
|
|
22
|
+
tokenHash: string;
|
|
23
|
+
expiresAt: number;
|
|
24
|
+
createdAt: number;
|
|
25
|
+
}[]>>;
|
|
26
|
+
/** Deletes a registration token before it expires. Clients it registered stay. */
|
|
27
|
+
export declare const revokeToken: import("convex/server").RegisteredMutation<"public", {
|
|
28
|
+
tokenHash: string;
|
|
29
|
+
}, Promise<null>>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
import { mutation, query } from "./_generated/server";
|
|
3
|
+
const { array, boolean, number, object, string } = v;
|
|
4
|
+
/** Stores the hash of an initial access token (RFC 7591 section 3) that registers clients of one app. */
|
|
5
|
+
export const mintToken = mutation({
|
|
6
|
+
args: { tokenHash: string(), appId: string(), expiresAt: number(), createdAt: number() },
|
|
7
|
+
returns: v.null(),
|
|
8
|
+
handler: async (ctx, args) => {
|
|
9
|
+
const app = await ctx.db
|
|
10
|
+
.query("apps")
|
|
11
|
+
.withIndex("by_app_id", (q) => q.eq("appId", args.appId))
|
|
12
|
+
.unique();
|
|
13
|
+
if (app === null) {
|
|
14
|
+
throw new Error(`Unknown app "${args.appId}"`);
|
|
15
|
+
}
|
|
16
|
+
await ctx.db.insert("registrationTokens", {
|
|
17
|
+
tokenHash: args.tokenHash,
|
|
18
|
+
appId: args.appId,
|
|
19
|
+
expiresAt: args.expiresAt,
|
|
20
|
+
createdAt: args.createdAt,
|
|
21
|
+
});
|
|
22
|
+
return null;
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
/** The app a live registration token belongs to, or null for an unknown or expired token. */
|
|
26
|
+
export const readToken = query({
|
|
27
|
+
args: { tokenHash: string(), now: number() },
|
|
28
|
+
returns: v.union(object({
|
|
29
|
+
appId: string(),
|
|
30
|
+
name: string(),
|
|
31
|
+
firstParty: boolean(),
|
|
32
|
+
allowedCallbackHosts: array(string()),
|
|
33
|
+
}), v.null()),
|
|
34
|
+
handler: async (ctx, args) => {
|
|
35
|
+
const token = await ctx.db
|
|
36
|
+
.query("registrationTokens")
|
|
37
|
+
.withIndex("by_token_hash", (q) => q.eq("tokenHash", args.tokenHash))
|
|
38
|
+
.unique();
|
|
39
|
+
if (token === null || token.expiresAt <= args.now) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const app = await ctx.db
|
|
43
|
+
.query("apps")
|
|
44
|
+
.withIndex("by_app_id", (q) => q.eq("appId", token.appId))
|
|
45
|
+
.unique();
|
|
46
|
+
if (app === null) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
appId: app.appId,
|
|
51
|
+
name: app.name,
|
|
52
|
+
firstParty: app.firstParty,
|
|
53
|
+
allowedCallbackHosts: app.allowedCallbackHosts,
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
/** The tokens of one app, as hashes: the plaintext is never stored. Oldest first. */
|
|
58
|
+
export const listTokens = query({
|
|
59
|
+
args: { appId: string() },
|
|
60
|
+
returns: array(object({ tokenHash: string(), expiresAt: number(), createdAt: number() })),
|
|
61
|
+
handler: async (ctx, args) => {
|
|
62
|
+
const tokens = await ctx.db
|
|
63
|
+
.query("registrationTokens")
|
|
64
|
+
.withIndex("by_app_id", (q) => q.eq("appId", args.appId))
|
|
65
|
+
.collect();
|
|
66
|
+
return tokens
|
|
67
|
+
.map((token) => ({
|
|
68
|
+
tokenHash: token.tokenHash,
|
|
69
|
+
expiresAt: token.expiresAt,
|
|
70
|
+
createdAt: token.createdAt,
|
|
71
|
+
}))
|
|
72
|
+
.sort((a, b) => a.createdAt - b.createdAt || a.tokenHash.localeCompare(b.tokenHash));
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
/** Deletes a registration token before it expires. Clients it registered stay. */
|
|
76
|
+
export const revokeToken = mutation({
|
|
77
|
+
args: { tokenHash: string() },
|
|
78
|
+
returns: v.null(),
|
|
79
|
+
handler: async (ctx, args) => {
|
|
80
|
+
const token = await ctx.db
|
|
81
|
+
.query("registrationTokens")
|
|
82
|
+
.withIndex("by_token_hash", (q) => q.eq("tokenHash", args.tokenHash))
|
|
83
|
+
.unique();
|
|
84
|
+
if (token !== null) {
|
|
85
|
+
await ctx.db.delete("registrationTokens", token._id);
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/component/registration.ts"],"names":[],"mappings":"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"}
|