@effect-auth/core 0.1.0-alpha.3 → 0.1.0-alpha.5
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/README.md +148 -13
- package/dist/ApiKey.d.ts +207 -0
- package/dist/ApiKey.d.ts.map +1 -0
- package/dist/ApiKey.js +275 -0
- package/dist/ApiKey.js.map +1 -0
- package/dist/AuditLog.d.ts +204 -1
- package/dist/AuditLog.d.ts.map +1 -1
- package/dist/AuditLog.js +170 -0
- package/dist/AuditLog.js.map +1 -1
- package/dist/AuthConfig.d.ts +0 -9
- package/dist/AuthConfig.d.ts.map +1 -1
- package/dist/AuthConfig.js +1 -14
- package/dist/AuthConfig.js.map +1 -1
- package/dist/AuthFlow.d.ts +220 -51
- package/dist/AuthFlow.d.ts.map +1 -1
- package/dist/AuthFlow.js +550 -22
- package/dist/AuthFlow.js.map +1 -1
- package/dist/AuthKernel.d.ts +1 -1
- package/dist/Challenge.d.ts +5 -1
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js +58 -48
- package/dist/Challenge.js.map +1 -1
- package/dist/Client.d.ts +263 -1
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +533 -1
- package/dist/Client.js.map +1 -1
- package/dist/D1Kysely.d.ts +1 -1
- package/dist/D1Kysely.d.ts.map +1 -1
- package/dist/EffectQbSqliteStorage.d.ts +115 -3
- package/dist/EffectQbSqliteStorage.d.ts.map +1 -1
- package/dist/EffectQbSqliteStorage.js +314 -4
- package/dist/EffectQbSqliteStorage.js.map +1 -1
- package/dist/EmailOtp.d.ts +5 -2
- package/dist/EmailOtp.d.ts.map +1 -1
- package/dist/EmailOtp.js +11 -4
- package/dist/EmailOtp.js.map +1 -1
- package/dist/EmailVerification.d.ts +2 -2
- package/dist/EmailVerification.d.ts.map +1 -1
- package/dist/EmailVerification.js +2 -3
- package/dist/EmailVerification.js.map +1 -1
- package/dist/HttpApi/Api.d.ts +1363 -19
- package/dist/HttpApi/Api.d.ts.map +1 -1
- package/dist/HttpApi/Api.js +1625 -20
- package/dist/HttpApi/Api.js.map +1 -1
- package/dist/HttpApi/Endpoints.d.ts +682 -0
- package/dist/HttpApi/Endpoints.d.ts.map +1 -1
- package/dist/HttpApi/Endpoints.js +252 -1
- package/dist/HttpApi/Endpoints.js.map +1 -1
- package/dist/HttpApi/Schemas.d.ts +841 -0
- package/dist/HttpApi/Schemas.d.ts.map +1 -1
- package/dist/HttpApi/Schemas.js +513 -1
- package/dist/HttpApi/Schemas.js.map +1 -1
- package/dist/HttpApi/Security.d.ts +13 -1
- package/dist/HttpApi/Security.d.ts.map +1 -1
- package/dist/HttpApi/Security.js +107 -16
- package/dist/HttpApi/Security.js.map +1 -1
- package/dist/HttpApi/Transport.d.ts +36 -2
- package/dist/HttpApi/Transport.d.ts.map +1 -1
- package/dist/HttpApi/Transport.js +151 -9
- package/dist/HttpApi/Transport.js.map +1 -1
- package/dist/Jwt.d.ts +271 -0
- package/dist/Jwt.d.ts.map +1 -0
- package/dist/Jwt.js +512 -0
- package/dist/Jwt.js.map +1 -0
- package/dist/KyselyStorage.d.ts +151 -1
- package/dist/KyselyStorage.d.ts.map +1 -1
- package/dist/KyselyStorage.js +1021 -4
- package/dist/KyselyStorage.js.map +1 -1
- package/dist/LoginApproval.d.ts +314 -0
- package/dist/LoginApproval.d.ts.map +1 -0
- package/dist/LoginApproval.js +551 -0
- package/dist/LoginApproval.js.map +1 -0
- package/dist/LoginNotification.d.ts +183 -0
- package/dist/LoginNotification.d.ts.map +1 -0
- package/dist/LoginNotification.js +329 -0
- package/dist/LoginNotification.js.map +1 -0
- package/dist/LoginRisk.d.ts +73 -0
- package/dist/LoginRisk.d.ts.map +1 -0
- package/dist/LoginRisk.js +57 -0
- package/dist/LoginRisk.js.map +1 -0
- package/dist/MagicLink.d.ts +85 -0
- package/dist/MagicLink.d.ts.map +1 -0
- package/dist/MagicLink.js +206 -0
- package/dist/MagicLink.js.map +1 -0
- package/dist/Mailer.d.ts +33 -2
- package/dist/Mailer.d.ts.map +1 -1
- package/dist/Mailer.js +107 -0
- package/dist/Mailer.js.map +1 -1
- package/dist/OAuth.d.ts +742 -0
- package/dist/OAuth.d.ts.map +1 -0
- package/dist/OAuth.js +1387 -0
- package/dist/OAuth.js.map +1 -0
- package/dist/Passkey.d.ts +334 -0
- package/dist/Passkey.d.ts.map +1 -0
- package/dist/Passkey.js +422 -0
- package/dist/Passkey.js.map +1 -0
- package/dist/Password.d.ts +138 -8
- package/dist/Password.d.ts.map +1 -1
- package/dist/Password.js +397 -8
- package/dist/Password.js.map +1 -1
- package/dist/RecoveryCode.d.ts +169 -0
- package/dist/RecoveryCode.d.ts.map +1 -0
- package/dist/RecoveryCode.js +299 -0
- package/dist/RecoveryCode.js.map +1 -0
- package/dist/RefreshToken.d.ts +222 -0
- package/dist/RefreshToken.d.ts.map +1 -0
- package/dist/RefreshToken.js +342 -0
- package/dist/RefreshToken.js.map +1 -0
- package/dist/Sessions.d.ts +52 -2
- package/dist/Sessions.d.ts.map +1 -1
- package/dist/Sessions.js +123 -1
- package/dist/Sessions.js.map +1 -1
- package/dist/StepUp.d.ts +44 -0
- package/dist/StepUp.d.ts.map +1 -0
- package/dist/StepUp.js +82 -0
- package/dist/StepUp.js.map +1 -0
- package/dist/Storage.d.ts +14 -1
- package/dist/Storage.d.ts.map +1 -1
- package/dist/Storage.js.map +1 -1
- package/dist/StorageMigrations.d.ts +10 -1
- package/dist/StorageMigrations.d.ts.map +1 -1
- package/dist/StorageMigrations.js +179 -0
- package/dist/StorageMigrations.js.map +1 -1
- package/dist/Testing.d.ts +1 -1
- package/dist/Totp.d.ts +220 -0
- package/dist/Totp.d.ts.map +1 -0
- package/dist/Totp.js +477 -0
- package/dist/Totp.js.map +1 -0
- package/dist/TrustedDevice.d.ts +115 -0
- package/dist/TrustedDevice.d.ts.map +1 -0
- package/dist/TrustedDevice.js +222 -0
- package/dist/TrustedDevice.js.map +1 -0
- package/dist/Webhook.d.ts +72 -0
- package/dist/Webhook.d.ts.map +1 -0
- package/dist/Webhook.js +82 -0
- package/dist/Webhook.js.map +1 -0
- package/dist/alchemy/cloudflare/Email.d.ts +25 -0
- package/dist/alchemy/cloudflare/Email.d.ts.map +1 -0
- package/dist/alchemy/cloudflare/Email.js +117 -0
- package/dist/alchemy/cloudflare/Email.js.map +1 -0
- package/dist/cloudflare/Email.d.ts +25 -0
- package/dist/cloudflare/Email.d.ts.map +1 -0
- package/dist/cloudflare/Email.js +153 -0
- package/dist/cloudflare/Email.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/migrations/0003_auth_login_approval_review.sql +22 -0
- package/migrations/0004_auth_trusted_device.sql +12 -0
- package/migrations/0005_auth_passkey.sql +17 -0
- package/migrations/0006_auth_totp_factor.sql +17 -0
- package/migrations/0007_auth_recovery_code.sql +13 -0
- package/migrations/0008_auth_api_key.sql +17 -0
- package/migrations/0009_auth_refresh_token.sql +21 -0
- package/migrations/0010_auth_jwt_revocation.sql +8 -0
- package/migrations/0011_auth_oauth_account.sql +16 -0
- package/package.json +65 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Effect, Encoding, Layer } from "effect";
|
|
2
|
+
import { EmailSendError, Mailer, } from "../Mailer.js";
|
|
3
|
+
const crlf = "\r\n";
|
|
4
|
+
const multipartBoundary = "effect-auth-cloudflare-email-boundary";
|
|
5
|
+
const textEncoder = new TextEncoder();
|
|
6
|
+
const reservedHeaderNames = new Set([
|
|
7
|
+
"bcc",
|
|
8
|
+
"cc",
|
|
9
|
+
"content-transfer-encoding",
|
|
10
|
+
"content-type",
|
|
11
|
+
"from",
|
|
12
|
+
"mime-version",
|
|
13
|
+
"reply-to",
|
|
14
|
+
"subject",
|
|
15
|
+
"to",
|
|
16
|
+
]);
|
|
17
|
+
const sendError = (message, cause, provider = "cloudflare") => new EmailSendError({ provider, message, cause });
|
|
18
|
+
const addressEmail = (address) => typeof address === "string" ? address : address.email;
|
|
19
|
+
const escapeDisplayName = (name) => `"${name.replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"`;
|
|
20
|
+
const addressHeader = (address) => typeof address === "string"
|
|
21
|
+
? address
|
|
22
|
+
: address.name === undefined || address.name.length === 0
|
|
23
|
+
? address.email
|
|
24
|
+
: `${escapeDisplayName(address.name)} <${address.email}>`;
|
|
25
|
+
const addressList = (address) => {
|
|
26
|
+
if (address === undefined) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
return Array.isArray(address) ? address : [address];
|
|
30
|
+
};
|
|
31
|
+
const uniqueStrings = (values) => [
|
|
32
|
+
...new Set(values),
|
|
33
|
+
];
|
|
34
|
+
const validateHeaderName = (name, provider) => {
|
|
35
|
+
if (!/^[A-Za-z0-9-]+$/.test(name)) {
|
|
36
|
+
return Effect.fail(sendError(`Invalid email header name: ${name}`, undefined, provider));
|
|
37
|
+
}
|
|
38
|
+
if (reservedHeaderNames.has(name.toLowerCase())) {
|
|
39
|
+
return Effect.fail(sendError(`Email header is managed by CloudflareMailer: ${name}`, undefined, provider));
|
|
40
|
+
}
|
|
41
|
+
return Effect.succeed(name);
|
|
42
|
+
};
|
|
43
|
+
const validateHeaderValue = (value, provider) => value.includes("\r") || value.includes("\n")
|
|
44
|
+
? Effect.fail(sendError("Email header values must not contain newlines", undefined, provider))
|
|
45
|
+
: Effect.succeed(value);
|
|
46
|
+
const headerLine = (name, value, provider) => Effect.gen(function* () {
|
|
47
|
+
const safeName = yield* validateHeaderName(name, provider);
|
|
48
|
+
const safeValue = yield* validateHeaderValue(value, provider);
|
|
49
|
+
return `${safeName}: ${safeValue}`;
|
|
50
|
+
});
|
|
51
|
+
const systemHeaderLine = (name, value, provider) => validateHeaderValue(value, provider).pipe(Effect.map((safeValue) => `${name}: ${safeValue}`));
|
|
52
|
+
const wrapBase64 = (value) => value.match(/.{1,76}/g)?.join(crlf) ?? "";
|
|
53
|
+
const base64Body = (content) => wrapBase64(Encoding.encodeBase64(textEncoder.encode(content)));
|
|
54
|
+
const contentPart = (contentType, content) => [
|
|
55
|
+
`Content-Type: ${contentType}; charset=utf-8`,
|
|
56
|
+
"Content-Transfer-Encoding: base64",
|
|
57
|
+
"",
|
|
58
|
+
base64Body(content),
|
|
59
|
+
].join(crlf);
|
|
60
|
+
const renderedBody = (message, provider) => {
|
|
61
|
+
if (message.text === undefined && message.html === undefined) {
|
|
62
|
+
return Effect.fail(sendError("Email message must include text or html content", undefined, provider));
|
|
63
|
+
}
|
|
64
|
+
if (message.text !== undefined && message.html !== undefined) {
|
|
65
|
+
return Effect.succeed([
|
|
66
|
+
[`Content-Type: multipart/alternative; boundary="${multipartBoundary}"`],
|
|
67
|
+
[
|
|
68
|
+
`--${multipartBoundary}`,
|
|
69
|
+
contentPart("text/plain", message.text),
|
|
70
|
+
`--${multipartBoundary}`,
|
|
71
|
+
contentPart("text/html", message.html),
|
|
72
|
+
`--${multipartBoundary}--`,
|
|
73
|
+
"",
|
|
74
|
+
].join(crlf),
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
if (message.html !== undefined) {
|
|
78
|
+
return Effect.succeed([
|
|
79
|
+
[
|
|
80
|
+
"Content-Type: text/html; charset=utf-8",
|
|
81
|
+
"Content-Transfer-Encoding: base64",
|
|
82
|
+
],
|
|
83
|
+
base64Body(message.html),
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
86
|
+
return Effect.succeed([
|
|
87
|
+
[
|
|
88
|
+
"Content-Type: text/plain; charset=utf-8",
|
|
89
|
+
"Content-Transfer-Encoding: base64",
|
|
90
|
+
],
|
|
91
|
+
base64Body(message.text ?? ""),
|
|
92
|
+
]);
|
|
93
|
+
};
|
|
94
|
+
const recipientHeaders = (message) => [
|
|
95
|
+
addressList(message.to).map(addressHeader).join(", "),
|
|
96
|
+
...addressList(message.cc).map(addressHeader),
|
|
97
|
+
];
|
|
98
|
+
const envelopeRecipients = (message) => uniqueStrings([
|
|
99
|
+
...addressList(message.to),
|
|
100
|
+
...addressList(message.cc),
|
|
101
|
+
...addressList(message.bcc),
|
|
102
|
+
].map((address) => addressEmail(address)));
|
|
103
|
+
export const renderCloudflareEmail = (options, message) => Effect.gen(function* () {
|
|
104
|
+
const provider = options.provider ?? "cloudflare";
|
|
105
|
+
const from = yield* validateHeaderValue(addressEmail(message.from ?? options.from), provider);
|
|
106
|
+
const recipients = [];
|
|
107
|
+
for (const recipient of envelopeRecipients(message)) {
|
|
108
|
+
recipients.push(yield* validateHeaderValue(recipient, provider));
|
|
109
|
+
}
|
|
110
|
+
if (recipients.length === 0) {
|
|
111
|
+
return yield* sendError("Email message must include at least one recipient", undefined, provider);
|
|
112
|
+
}
|
|
113
|
+
const [toHeader] = recipientHeaders(message);
|
|
114
|
+
const headers = [];
|
|
115
|
+
const [contentHeaders, body] = yield* renderedBody(message, provider);
|
|
116
|
+
headers.push(yield* systemHeaderLine("From", addressHeader(message.from ?? options.from), provider));
|
|
117
|
+
headers.push(yield* systemHeaderLine("To", toHeader, provider));
|
|
118
|
+
const cc = addressList(message.cc);
|
|
119
|
+
if (cc.length > 0) {
|
|
120
|
+
headers.push(yield* systemHeaderLine("Cc", cc.map(addressHeader).join(", "), provider));
|
|
121
|
+
}
|
|
122
|
+
if (message.replyTo !== undefined) {
|
|
123
|
+
headers.push(yield* systemHeaderLine("Reply-To", addressHeader(message.replyTo), provider));
|
|
124
|
+
}
|
|
125
|
+
headers.push(yield* systemHeaderLine("Subject", message.subject, provider));
|
|
126
|
+
headers.push("MIME-Version: 1.0");
|
|
127
|
+
headers.push(...contentHeaders);
|
|
128
|
+
for (const [name, value] of Object.entries(message.headers ?? {})) {
|
|
129
|
+
headers.push(yield* headerLine(name, value, provider));
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
from,
|
|
133
|
+
recipients,
|
|
134
|
+
raw: `${headers.join(crlf)}${crlf}${crlf}${body}`,
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
export const makeCloudflareMailer = (options) => Mailer.make({
|
|
138
|
+
send: Effect.fn("auth.cloudflare_email.send")(function* (message) {
|
|
139
|
+
const rendered = yield* renderCloudflareEmail(options, message);
|
|
140
|
+
for (const recipient of rendered.recipients) {
|
|
141
|
+
const cloudflareMessage = new options.EmailMessage(rendered.from, recipient, rendered.raw);
|
|
142
|
+
yield* Effect.tryPromise({
|
|
143
|
+
try: () => Promise.resolve(options.binding.send(cloudflareMessage)),
|
|
144
|
+
catch: (cause) => sendError("Cloudflare failed to send email", cause, options.provider),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
export const CloudflareMailer = {
|
|
150
|
+
make: makeCloudflareMailer,
|
|
151
|
+
layer: (options) => Layer.succeed(Mailer, makeCloudflareMailer(options)),
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=Email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/cloudflare/Email.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const packageName: "@effect-auth/core";
|
|
2
|
+
export * from "./ApiKey.js";
|
|
2
3
|
export * from "./AuditLog.js";
|
|
3
4
|
export * from "./AuthConfig.js";
|
|
4
5
|
export * from "./AuthFlow.js";
|
|
@@ -8,11 +9,24 @@ export * from "./Crypto.js";
|
|
|
8
9
|
export * from "./EmailOtp.js";
|
|
9
10
|
export * from "./EmailVerification.js";
|
|
10
11
|
export * from "./Identifiers.js";
|
|
12
|
+
export * from "./Jwt.js";
|
|
13
|
+
export * from "./LoginApproval.js";
|
|
14
|
+
export * from "./LoginNotification.js";
|
|
15
|
+
export * from "./LoginRisk.js";
|
|
11
16
|
export * from "./Mailer.js";
|
|
17
|
+
export * from "./MagicLink.js";
|
|
18
|
+
export * from "./OAuth.js";
|
|
12
19
|
export * from "./Password.js";
|
|
20
|
+
export * from "./Passkey.js";
|
|
13
21
|
export * from "./Policy.js";
|
|
14
22
|
export * from "./Privacy.js";
|
|
23
|
+
export * from "./RecoveryCode.js";
|
|
24
|
+
export * from "./RefreshToken.js";
|
|
15
25
|
export * from "./Sessions.js";
|
|
16
26
|
export * from "./Storage.js";
|
|
27
|
+
export * from "./StepUp.js";
|
|
28
|
+
export * from "./Totp.js";
|
|
29
|
+
export * from "./TrustedDevice.js";
|
|
17
30
|
export * from "./WaitUntil.js";
|
|
31
|
+
export * from "./Webhook.js";
|
|
18
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,EAAG,mBAA4B,CAAC;AAExD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,EAAG,mBAA4B,CAAC;AAExD,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const packageName = "@effect-auth/core";
|
|
2
|
+
export * from "./ApiKey.js";
|
|
2
3
|
export * from "./AuditLog.js";
|
|
3
4
|
export * from "./AuthConfig.js";
|
|
4
5
|
export * from "./AuthFlow.js";
|
|
@@ -8,11 +9,24 @@ export * from "./Crypto.js";
|
|
|
8
9
|
export * from "./EmailOtp.js";
|
|
9
10
|
export * from "./EmailVerification.js";
|
|
10
11
|
export * from "./Identifiers.js";
|
|
12
|
+
export * from "./Jwt.js";
|
|
13
|
+
export * from "./LoginApproval.js";
|
|
14
|
+
export * from "./LoginNotification.js";
|
|
15
|
+
export * from "./LoginRisk.js";
|
|
11
16
|
export * from "./Mailer.js";
|
|
17
|
+
export * from "./MagicLink.js";
|
|
18
|
+
export * from "./OAuth.js";
|
|
12
19
|
export * from "./Password.js";
|
|
20
|
+
export * from "./Passkey.js";
|
|
13
21
|
export * from "./Policy.js";
|
|
14
22
|
export * from "./Privacy.js";
|
|
23
|
+
export * from "./RecoveryCode.js";
|
|
24
|
+
export * from "./RefreshToken.js";
|
|
15
25
|
export * from "./Sessions.js";
|
|
16
26
|
export * from "./Storage.js";
|
|
27
|
+
export * from "./StepUp.js";
|
|
28
|
+
export * from "./Totp.js";
|
|
29
|
+
export * from "./TrustedDevice.js";
|
|
17
30
|
export * from "./WaitUntil.js";
|
|
31
|
+
export * from "./Webhook.js";
|
|
18
32
|
//# 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,MAAM,CAAC,MAAM,WAAW,GAAG,mBAA4B,CAAC;AAExD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,mBAA4B,CAAC;AAExD,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
create table if not exists auth_login_approval_review (
|
|
2
|
+
approval_challenge_id text primary key,
|
|
3
|
+
flow_id text not null,
|
|
4
|
+
user_id text not null,
|
|
5
|
+
channel text not null,
|
|
6
|
+
reason text not null,
|
|
7
|
+
session_binding text not null,
|
|
8
|
+
same_device_required integer not null,
|
|
9
|
+
status text not null,
|
|
10
|
+
created_at integer not null,
|
|
11
|
+
expires_at integer not null,
|
|
12
|
+
reviewed_at integer,
|
|
13
|
+
reviewed_by text,
|
|
14
|
+
denied_reason text,
|
|
15
|
+
risk text,
|
|
16
|
+
metadata text,
|
|
17
|
+
review_metadata text
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
create index if not exists auth_login_approval_review_flow_id_idx on auth_login_approval_review (flow_id);
|
|
21
|
+
create index if not exists auth_login_approval_review_user_id_idx on auth_login_approval_review (user_id);
|
|
22
|
+
create index if not exists auth_login_approval_review_status_expires_at_idx on auth_login_approval_review (status, expires_at);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
create table if not exists auth_trusted_device (
|
|
2
|
+
user_id text not null,
|
|
3
|
+
token_hash text not null,
|
|
4
|
+
created_at integer not null,
|
|
5
|
+
last_seen_at integer not null,
|
|
6
|
+
expires_at integer not null,
|
|
7
|
+
metadata text,
|
|
8
|
+
primary key (user_id, token_hash)
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
create index if not exists auth_trusted_device_user_id_idx on auth_trusted_device (user_id);
|
|
12
|
+
create index if not exists auth_trusted_device_expires_at_idx on auth_trusted_device (expires_at);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
create table if not exists auth_passkey_credential (
|
|
2
|
+
id text primary key,
|
|
3
|
+
user_id text not null,
|
|
4
|
+
credential_id text not null,
|
|
5
|
+
public_key text not null,
|
|
6
|
+
sign_count integer not null,
|
|
7
|
+
transports text,
|
|
8
|
+
backed_up integer,
|
|
9
|
+
created_at integer not null,
|
|
10
|
+
last_used_at integer,
|
|
11
|
+
revoked_at integer,
|
|
12
|
+
metadata text
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
create unique index if not exists auth_passkey_credential_credential_id_idx on auth_passkey_credential (credential_id);
|
|
16
|
+
create index if not exists auth_passkey_credential_user_id_idx on auth_passkey_credential (user_id);
|
|
17
|
+
create index if not exists auth_passkey_credential_revoked_at_idx on auth_passkey_credential (revoked_at);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
create table if not exists auth_totp_factor (
|
|
2
|
+
id text primary key,
|
|
3
|
+
user_id text not null,
|
|
4
|
+
secret text not null,
|
|
5
|
+
algorithm text not null,
|
|
6
|
+
digits integer not null,
|
|
7
|
+
period integer not null,
|
|
8
|
+
created_at integer not null,
|
|
9
|
+
confirmed_at integer,
|
|
10
|
+
last_used_at integer,
|
|
11
|
+
revoked_at integer,
|
|
12
|
+
metadata text
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
create index if not exists auth_totp_factor_user_id_idx on auth_totp_factor (user_id);
|
|
16
|
+
create index if not exists auth_totp_factor_confirmed_at_idx on auth_totp_factor (confirmed_at);
|
|
17
|
+
create index if not exists auth_totp_factor_revoked_at_idx on auth_totp_factor (revoked_at);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
create table if not exists auth_recovery_code (
|
|
2
|
+
id text primary key,
|
|
3
|
+
user_id text not null,
|
|
4
|
+
code_hash text not null,
|
|
5
|
+
created_at integer not null,
|
|
6
|
+
used_at integer,
|
|
7
|
+
revoked_at integer,
|
|
8
|
+
metadata text
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
create index if not exists auth_recovery_code_user_id_idx on auth_recovery_code (user_id);
|
|
12
|
+
create index if not exists auth_recovery_code_used_at_idx on auth_recovery_code (used_at);
|
|
13
|
+
create index if not exists auth_recovery_code_revoked_at_idx on auth_recovery_code (revoked_at);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
create table if not exists auth_api_key (
|
|
2
|
+
id text primary key,
|
|
3
|
+
user_id text not null,
|
|
4
|
+
prefix text not null,
|
|
5
|
+
secret_hash text not null,
|
|
6
|
+
scopes text not null,
|
|
7
|
+
created_at integer not null,
|
|
8
|
+
expires_at integer,
|
|
9
|
+
last_used_at integer,
|
|
10
|
+
revoked_at integer,
|
|
11
|
+
metadata text
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
create unique index if not exists auth_api_key_prefix_idx on auth_api_key (prefix);
|
|
15
|
+
create index if not exists auth_api_key_user_id_idx on auth_api_key (user_id);
|
|
16
|
+
create index if not exists auth_api_key_expires_at_idx on auth_api_key (expires_at);
|
|
17
|
+
create index if not exists auth_api_key_revoked_at_idx on auth_api_key (revoked_at);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
create table if not exists auth_refresh_token (
|
|
2
|
+
id text primary key,
|
|
3
|
+
family_id text not null,
|
|
4
|
+
user_id text not null,
|
|
5
|
+
secret_hash text not null,
|
|
6
|
+
created_at integer not null,
|
|
7
|
+
expires_at integer not null,
|
|
8
|
+
last_used_at integer,
|
|
9
|
+
rotated_at integer,
|
|
10
|
+
replaced_by_id text,
|
|
11
|
+
revoked_at integer,
|
|
12
|
+
reuse_detected_at integer,
|
|
13
|
+
metadata text
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
create unique index if not exists auth_refresh_token_secret_hash_idx on auth_refresh_token (secret_hash);
|
|
17
|
+
create index if not exists auth_refresh_token_family_id_idx on auth_refresh_token (family_id);
|
|
18
|
+
create index if not exists auth_refresh_token_user_id_idx on auth_refresh_token (user_id);
|
|
19
|
+
create index if not exists auth_refresh_token_expires_at_idx on auth_refresh_token (expires_at);
|
|
20
|
+
create index if not exists auth_refresh_token_rotated_at_idx on auth_refresh_token (rotated_at);
|
|
21
|
+
create index if not exists auth_refresh_token_revoked_at_idx on auth_refresh_token (revoked_at);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
create table if not exists auth_oauth_account (
|
|
2
|
+
id text primary key,
|
|
3
|
+
provider_id text not null,
|
|
4
|
+
provider_account_id text not null,
|
|
5
|
+
user_id text not null,
|
|
6
|
+
email text,
|
|
7
|
+
email_verified integer,
|
|
8
|
+
created_at integer not null,
|
|
9
|
+
updated_at integer not null,
|
|
10
|
+
unlinked_at integer,
|
|
11
|
+
metadata text
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
create unique index if not exists auth_oauth_account_provider_account_idx on auth_oauth_account (provider_id, provider_account_id);
|
|
15
|
+
create index if not exists auth_oauth_account_user_id_idx on auth_oauth_account (user_id);
|
|
16
|
+
create index if not exists auth_oauth_account_unlinked_at_idx on auth_oauth_account (unlinked_at);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-auth/core",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.5",
|
|
4
4
|
"description": "Composable Effect-first authentication primitives.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
"types": "./dist/index.d.ts",
|
|
18
18
|
"default": "./dist/index.js"
|
|
19
19
|
},
|
|
20
|
+
"./ApiKey": {
|
|
21
|
+
"types": "./dist/ApiKey.d.ts",
|
|
22
|
+
"default": "./dist/ApiKey.js"
|
|
23
|
+
},
|
|
20
24
|
"./AuditLog": {
|
|
21
25
|
"types": "./dist/AuditLog.d.ts",
|
|
22
26
|
"default": "./dist/AuditLog.js"
|
|
@@ -41,10 +45,18 @@
|
|
|
41
45
|
"types": "./dist/alchemy/cloudflare/RateLimitDurableObject.d.ts",
|
|
42
46
|
"default": "./dist/alchemy/cloudflare/RateLimitDurableObject.js"
|
|
43
47
|
},
|
|
48
|
+
"./AlchemyCloudflareEmail": {
|
|
49
|
+
"types": "./dist/alchemy/cloudflare/Email.d.ts",
|
|
50
|
+
"default": "./dist/alchemy/cloudflare/Email.js"
|
|
51
|
+
},
|
|
44
52
|
"./CloudflareRateLimitDurableObject": {
|
|
45
53
|
"types": "./dist/cloudflare/RateLimitDurableObject.d.ts",
|
|
46
54
|
"default": "./dist/cloudflare/RateLimitDurableObject.js"
|
|
47
55
|
},
|
|
56
|
+
"./CloudflareEmail": {
|
|
57
|
+
"types": "./dist/cloudflare/Email.d.ts",
|
|
58
|
+
"default": "./dist/cloudflare/Email.js"
|
|
59
|
+
},
|
|
48
60
|
"./Client": {
|
|
49
61
|
"types": "./dist/Client.d.ts",
|
|
50
62
|
"default": "./dist/Client.js"
|
|
@@ -73,10 +85,30 @@
|
|
|
73
85
|
"types": "./dist/WaitUntil.d.ts",
|
|
74
86
|
"default": "./dist/WaitUntil.js"
|
|
75
87
|
},
|
|
88
|
+
"./Webhook": {
|
|
89
|
+
"types": "./dist/Webhook.d.ts",
|
|
90
|
+
"default": "./dist/Webhook.js"
|
|
91
|
+
},
|
|
76
92
|
"./Identifiers": {
|
|
77
93
|
"types": "./dist/Identifiers.d.ts",
|
|
78
94
|
"default": "./dist/Identifiers.js"
|
|
79
95
|
},
|
|
96
|
+
"./LoginApproval": {
|
|
97
|
+
"types": "./dist/LoginApproval.d.ts",
|
|
98
|
+
"default": "./dist/LoginApproval.js"
|
|
99
|
+
},
|
|
100
|
+
"./LoginNotification": {
|
|
101
|
+
"types": "./dist/LoginNotification.d.ts",
|
|
102
|
+
"default": "./dist/LoginNotification.js"
|
|
103
|
+
},
|
|
104
|
+
"./LoginRisk": {
|
|
105
|
+
"types": "./dist/LoginRisk.d.ts",
|
|
106
|
+
"default": "./dist/LoginRisk.js"
|
|
107
|
+
},
|
|
108
|
+
"./Jwt": {
|
|
109
|
+
"types": "./dist/Jwt.d.ts",
|
|
110
|
+
"default": "./dist/Jwt.js"
|
|
111
|
+
},
|
|
80
112
|
"./HttpApi": {
|
|
81
113
|
"types": "./dist/HttpApi.d.ts",
|
|
82
114
|
"default": "./dist/HttpApi.js"
|
|
@@ -85,6 +117,14 @@
|
|
|
85
117
|
"types": "./dist/Mailer.d.ts",
|
|
86
118
|
"default": "./dist/Mailer.js"
|
|
87
119
|
},
|
|
120
|
+
"./MagicLink": {
|
|
121
|
+
"types": "./dist/MagicLink.d.ts",
|
|
122
|
+
"default": "./dist/MagicLink.js"
|
|
123
|
+
},
|
|
124
|
+
"./OAuth": {
|
|
125
|
+
"types": "./dist/OAuth.d.ts",
|
|
126
|
+
"default": "./dist/OAuth.js"
|
|
127
|
+
},
|
|
88
128
|
"./Policy": {
|
|
89
129
|
"types": "./dist/Policy.d.ts",
|
|
90
130
|
"default": "./dist/Policy.js"
|
|
@@ -97,6 +137,14 @@
|
|
|
97
137
|
"types": "./dist/RateLimiter.d.ts",
|
|
98
138
|
"default": "./dist/RateLimiter.js"
|
|
99
139
|
},
|
|
140
|
+
"./RecoveryCode": {
|
|
141
|
+
"types": "./dist/RecoveryCode.d.ts",
|
|
142
|
+
"default": "./dist/RecoveryCode.js"
|
|
143
|
+
},
|
|
144
|
+
"./RefreshToken": {
|
|
145
|
+
"types": "./dist/RefreshToken.d.ts",
|
|
146
|
+
"default": "./dist/RefreshToken.js"
|
|
147
|
+
},
|
|
100
148
|
"./KyselyStorage": {
|
|
101
149
|
"types": "./dist/KyselyStorage.d.ts",
|
|
102
150
|
"default": "./dist/KyselyStorage.js"
|
|
@@ -105,6 +153,10 @@
|
|
|
105
153
|
"types": "./dist/Password.d.ts",
|
|
106
154
|
"default": "./dist/Password.js"
|
|
107
155
|
},
|
|
156
|
+
"./Passkey": {
|
|
157
|
+
"types": "./dist/Passkey.d.ts",
|
|
158
|
+
"default": "./dist/Passkey.js"
|
|
159
|
+
},
|
|
108
160
|
"./Sessions": {
|
|
109
161
|
"types": "./dist/Sessions.d.ts",
|
|
110
162
|
"default": "./dist/Sessions.js"
|
|
@@ -113,6 +165,10 @@
|
|
|
113
165
|
"types": "./dist/Storage.d.ts",
|
|
114
166
|
"default": "./dist/Storage.js"
|
|
115
167
|
},
|
|
168
|
+
"./StepUp": {
|
|
169
|
+
"types": "./dist/StepUp.d.ts",
|
|
170
|
+
"default": "./dist/StepUp.js"
|
|
171
|
+
},
|
|
116
172
|
"./StorageMigrations": {
|
|
117
173
|
"types": "./dist/StorageMigrations.d.ts",
|
|
118
174
|
"default": "./dist/StorageMigrations.js"
|
|
@@ -121,6 +177,14 @@
|
|
|
121
177
|
"types": "./dist/Testing.d.ts",
|
|
122
178
|
"default": "./dist/Testing.js"
|
|
123
179
|
},
|
|
180
|
+
"./Totp": {
|
|
181
|
+
"types": "./dist/Totp.d.ts",
|
|
182
|
+
"default": "./dist/Totp.js"
|
|
183
|
+
},
|
|
184
|
+
"./TrustedDevice": {
|
|
185
|
+
"types": "./dist/TrustedDevice.d.ts",
|
|
186
|
+
"default": "./dist/TrustedDevice.js"
|
|
187
|
+
},
|
|
124
188
|
"./package.json": {
|
|
125
189
|
"default": "./package.json"
|
|
126
190
|
}
|