@riffdb/better-auth 0.0.0-stage → 0.2.1
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/DESIGN.md +273 -0
- package/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +27 -0
- package/README.md +323 -2
- package/dist/adapter.d.ts +34 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +1600 -0
- package/dist/adapter.js.map +1 -0
- package/dist/generated/client.d.ts +2166 -0
- package/dist/generated/client.d.ts.map +1 -0
- package/dist/generated/client.js +2454 -0
- package/dist/generated/client.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-dispatch.d.ts +37 -0
- package/dist/plugin-dispatch.d.ts.map +1 -0
- package/dist/plugin-dispatch.js +293 -0
- package/dist/plugin-dispatch.js.map +1 -0
- package/dist/profile-contract.d.ts +63 -0
- package/dist/profile-contract.d.ts.map +1 -0
- package/dist/profile-contract.js +543 -0
- package/dist/profile-contract.js.map +1 -0
- package/dist/profile-plan.d.ts +69 -0
- package/dist/profile-plan.d.ts.map +1 -0
- package/dist/profile-plan.js +180 -0
- package/dist/profile-plan.js.map +1 -0
- package/dist/profile.d.ts +48 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +132 -0
- package/dist/profile.js.map +1 -0
- package/dist/profiles/custom-fields/profile.d.ts +3 -0
- package/dist/profiles/custom-fields/profile.d.ts.map +1 -0
- package/dist/profiles/custom-fields/profile.js +475 -0
- package/dist/profiles/custom-fields/profile.js.map +1 -0
- package/dist/profiles/custom-fields/src/generated/client.d.ts +2710 -0
- package/dist/profiles/custom-fields/src/generated/client.d.ts.map +1 -0
- package/dist/profiles/custom-fields/src/generated/client.js +2663 -0
- package/dist/profiles/custom-fields/src/generated/client.js.map +1 -0
- package/dist/profiles/runtime/profile.d.ts +3 -0
- package/dist/profiles/runtime/profile.d.ts.map +1 -0
- package/dist/profiles/runtime/profile.js +1065 -0
- package/dist/profiles/runtime/profile.js.map +1 -0
- package/dist/profiles/runtime/src/generated/client.d.ts +4274 -0
- package/dist/profiles/runtime/src/generated/client.d.ts.map +1 -0
- package/dist/profiles/runtime/src/generated/client.js +4607 -0
- package/dist/profiles/runtime/src/generated/client.js.map +1 -0
- package/dist/runtime-materialize.d.ts +10 -0
- package/dist/runtime-materialize.d.ts.map +1 -0
- package/dist/runtime-materialize.js +344 -0
- package/dist/runtime-materialize.js.map +1 -0
- package/dist/runtime-profile.d.ts +34 -0
- package/dist/runtime-profile.d.ts.map +1 -0
- package/dist/runtime-profile.js +203 -0
- package/dist/runtime-profile.js.map +1 -0
- package/dist/testing.d.ts +11 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +12 -0
- package/dist/testing.js.map +1 -0
- package/generated/go/client.go +2250 -0
- package/generated/mcp/tools.json +13922 -0
- package/generated/python/client.py +4454 -0
- package/generated/riffdb.application.exact.json +1 -0
- package/generated/riffdb.contract.bundle +0 -0
- package/generated/rust/client.rs +6524 -0
- package/package.json +83 -4
- package/profiles/custom-fields/generated/go/client.go +2578 -0
- package/profiles/custom-fields/generated/mcp/tools.json +15998 -0
- package/profiles/custom-fields/generated/python/client.py +5141 -0
- package/profiles/custom-fields/generated/riffdb.application.exact.json +1 -0
- package/profiles/custom-fields/generated/riffdb.contract.bundle +0 -0
- package/profiles/custom-fields/generated/rust/client.rs +7980 -0
- package/profiles/custom-fields/profile.ts +474 -0
- package/profiles/custom-fields/riffdb/contract.riff +568 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_all_email_asc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_contains_asc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_contains_desc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_email_contains_created_desc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_email_contains_image_asc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_ends_with_asc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_ends_with_desc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_starts_with_asc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/admin_users_starts_with_desc.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/find_account_by_id.riffq +24 -0
- package/profiles/custom-fields/riffdb/queries/find_account_by_provider.riffq +26 -0
- package/profiles/custom-fields/riffdb/queries/find_accounts_by_user_id.riffq +25 -0
- package/profiles/custom-fields/riffdb/queries/find_accounts_by_user_provider.riffq +27 -0
- package/profiles/custom-fields/riffdb/queries/find_active_sessions_by_user_id.riffq +23 -0
- package/profiles/custom-fields/riffdb/queries/find_credential_account.riffq +25 -0
- package/profiles/custom-fields/riffdb/queries/find_expired_verification_ids.riffq +17 -0
- package/profiles/custom-fields/riffdb/queries/find_latest_verification.riffq +20 -0
- package/profiles/custom-fields/riffdb/queries/find_session_by_id.riffq +20 -0
- package/profiles/custom-fields/riffdb/queries/find_session_by_token.riffq +20 -0
- package/profiles/custom-fields/riffdb/queries/find_sessions_by_token_set.riffq +20 -0
- package/profiles/custom-fields/riffdb/queries/find_sessions_by_user_id.riffq +21 -0
- package/profiles/custom-fields/riffdb/queries/find_user_by_email.riffq +16 -0
- package/profiles/custom-fields/riffdb/queries/find_user_by_id.riffq +15 -0
- package/profiles/custom-fields/riffdb/queries/find_verification_by_id.riffq +19 -0
- package/profiles/custom-fields/riffdb/queries/find_verifications_by_identifier.riffq +21 -0
- package/profiles/custom-fields/riffdb/queries/profile_account_with_user_by_provider.riffq +31 -0
- package/profiles/custom-fields/riffdb/queries/profile_session_with_user_by_id.riffq +14 -0
- package/profiles/custom-fields/riffdb/queries/profile_session_with_user_by_token.riffq +14 -0
- package/profiles/custom-fields/riffdb/queries/profile_sessions_with_users_by_token_set.riffq +25 -0
- package/profiles/custom-fields/riffdb/queries/profile_user_with_accounts_by_email.riffq +19 -0
- package/profiles/custom-fields/riffdb/queries/profile_user_with_accounts_by_id.riffq +19 -0
- package/profiles/custom-fields/riffdb.application.json +217 -0
- package/profiles/custom-fields/riffdb.application.lock.json +1 -0
- package/profiles/custom-fields/riffdb.toml +3 -0
- package/profiles/custom-fields/src/generated/client.ts +3096 -0
- package/profiles/organization-security/materialization.json +51 -0
- package/profiles/organization-security/riffdb/contract.riff +778 -0
- package/profiles/organization-security/riffdb/queries/find_account_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_invitation_by_email.riffq +17 -0
- package/profiles/organization-security/riffdb/queries/find_invitation_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_invitation_by_organization_id.riffq +17 -0
- package/profiles/organization-security/riffdb/queries/find_member_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_member_by_user_id.riffq +17 -0
- package/profiles/organization-security/riffdb/queries/find_organization_by_id.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_organization_by_slug.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_session_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_session_by_token.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_team_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_team_member_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_team_member_by_membership_key.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_team_member_by_team_id.riffq +17 -0
- package/profiles/organization-security/riffdb/queries/find_two_factor_by_id.riffq +18 -0
- package/profiles/organization-security/riffdb/queries/find_two_factor_by_secret.riffq +17 -0
- package/profiles/organization-security/riffdb/queries/find_user_by_email.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_user_by_id.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_verification_by_id.riffq +16 -0
- package/profiles/organization-security/riffdb/queries/find_verification_by_identifier.riffq +17 -0
- package/profiles/organization-security/riffdb.application.json +172 -0
- package/profiles/organization-security/riffdb.toml +7 -0
- package/profiles/organization-security.profile.json +980 -0
- package/profiles/runtime/generated/go/client.go +4511 -0
- package/profiles/runtime/generated/mcp/tools.json +30004 -0
- package/profiles/runtime/generated/python/client.py +9337 -0
- package/profiles/runtime/generated/riffdb.application.exact.json +1 -0
- package/profiles/runtime/generated/riffdb.contract.bundle +0 -0
- package/profiles/runtime/generated/rust/client.rs +13297 -0
- package/profiles/runtime/profile.ts +1064 -0
- package/profiles/runtime/riffdb/contract.riff +1053 -0
- package/profiles/runtime/riffdb/queries/admin_users_all_email_asc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_contains_asc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_contains_desc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_email_contains_created_desc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_email_contains_image_asc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_ends_with_asc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_ends_with_desc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_starts_with_asc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/admin_users_starts_with_desc.riffq +24 -0
- package/profiles/runtime/riffdb/queries/find_account_by_id.riffq +24 -0
- package/profiles/runtime/riffdb/queries/find_account_by_provider.riffq +26 -0
- package/profiles/runtime/riffdb/queries/find_accounts_by_user_id.riffq +25 -0
- package/profiles/runtime/riffdb/queries/find_accounts_by_user_provider.riffq +27 -0
- package/profiles/runtime/riffdb/queries/find_active_sessions_by_user_id.riffq +23 -0
- package/profiles/runtime/riffdb/queries/find_credential_account.riffq +25 -0
- package/profiles/runtime/riffdb/queries/find_expired_verification_ids.riffq +17 -0
- package/profiles/runtime/riffdb/queries/find_latest_verification.riffq +20 -0
- package/profiles/runtime/riffdb/queries/find_session_by_id.riffq +20 -0
- package/profiles/runtime/riffdb/queries/find_session_by_token.riffq +20 -0
- package/profiles/runtime/riffdb/queries/find_sessions_by_token_set.riffq +20 -0
- package/profiles/runtime/riffdb/queries/find_sessions_by_user_id.riffq +21 -0
- package/profiles/runtime/riffdb/queries/find_user_by_email.riffq +16 -0
- package/profiles/runtime/riffdb/queries/find_user_by_id.riffq +15 -0
- package/profiles/runtime/riffdb/queries/find_verification_by_id.riffq +19 -0
- package/profiles/runtime/riffdb/queries/find_verifications_by_identifier.riffq +21 -0
- package/profiles/runtime/riffdb/queries/profile_account_with_user_by_provider.riffq +31 -0
- package/profiles/runtime/riffdb/queries/profile_invitation_by_email.riffq +17 -0
- package/profiles/runtime/riffdb/queries/profile_invitation_by_id.riffq +17 -0
- package/profiles/runtime/riffdb/queries/profile_invitation_by_organization_email_status.riffq +19 -0
- package/profiles/runtime/riffdb/queries/profile_invitation_by_organization_id.riffq +17 -0
- package/profiles/runtime/riffdb/queries/profile_invitation_by_organization_status.riffq +18 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_id.riffq +27 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_organization.riffq +20 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_organization_created_at_asc.riffq +20 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_organization_created_at_desc.riffq +20 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_organization_role_asc.riffq +20 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_organization_role_desc.riffq +20 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_organization_user.riffq +28 -0
- package/profiles/runtime/riffdb/queries/profile_member_by_user.riffq +27 -0
- package/profiles/runtime/riffdb/queries/profile_organization_by_id.riffq +27 -0
- package/profiles/runtime/riffdb/queries/profile_organization_by_slug.riffq +27 -0
- package/profiles/runtime/riffdb/queries/profile_session_with_user_by_id.riffq +14 -0
- package/profiles/runtime/riffdb/queries/profile_session_with_user_by_token.riffq +14 -0
- package/profiles/runtime/riffdb/queries/profile_sessions_with_users_by_token_set.riffq +25 -0
- package/profiles/runtime/riffdb/queries/profile_two_factor_by_id.riffq +17 -0
- package/profiles/runtime/riffdb/queries/profile_two_factor_by_user.riffq +17 -0
- package/profiles/runtime/riffdb/queries/profile_user_with_accounts_by_email.riffq +19 -0
- package/profiles/runtime/riffdb/queries/profile_user_with_accounts_by_id.riffq +19 -0
- package/profiles/runtime/riffdb/queries/profile_users_by_id_set.riffq +8 -0
- package/profiles/runtime/riffdb.application.json +324 -0
- package/profiles/runtime/riffdb.application.lock.json +1 -0
- package/profiles/runtime/riffdb.toml +3 -0
- package/profiles/runtime/src/generated/client.ts +5186 -0
- package/riffdb/contract.riff +547 -0
- package/riffdb/queries/admin_users_all_email_asc.riffq +24 -0
- package/riffdb/queries/admin_users_contains_asc.riffq +24 -0
- package/riffdb/queries/admin_users_contains_desc.riffq +24 -0
- package/riffdb/queries/admin_users_email_contains_created_desc.riffq +24 -0
- package/riffdb/queries/admin_users_email_contains_image_asc.riffq +24 -0
- package/riffdb/queries/admin_users_ends_with_asc.riffq +24 -0
- package/riffdb/queries/admin_users_ends_with_desc.riffq +24 -0
- package/riffdb/queries/admin_users_starts_with_asc.riffq +24 -0
- package/riffdb/queries/admin_users_starts_with_desc.riffq +24 -0
- package/riffdb/queries/find_account_by_id.riffq +24 -0
- package/riffdb/queries/find_account_by_provider.riffq +26 -0
- package/riffdb/queries/find_accounts_by_user_id.riffq +25 -0
- package/riffdb/queries/find_accounts_by_user_provider.riffq +27 -0
- package/riffdb/queries/find_active_sessions_by_user_id.riffq +23 -0
- package/riffdb/queries/find_credential_account.riffq +25 -0
- package/riffdb/queries/find_expired_verification_ids.riffq +17 -0
- package/riffdb/queries/find_latest_verification.riffq +20 -0
- package/riffdb/queries/find_session_by_id.riffq +20 -0
- package/riffdb/queries/find_session_by_token.riffq +20 -0
- package/riffdb/queries/find_sessions_by_token_set.riffq +20 -0
- package/riffdb/queries/find_sessions_by_user_id.riffq +21 -0
- package/riffdb/queries/find_user_by_email.riffq +16 -0
- package/riffdb/queries/find_user_by_id.riffq +15 -0
- package/riffdb/queries/find_verification_by_id.riffq +19 -0
- package/riffdb/queries/find_verifications_by_identifier.riffq +21 -0
- package/riffdb.application.json +187 -0
- package/riffdb.application.lock.json +1 -0
- package/scripts/real-riffdb-runner.mjs +333 -0
- package/src/generated/client.ts +2746 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RiffDBBetterAuthProfilePlan } from "./profile-plan.js";
|
|
2
|
+
import { type RiffDBProfileQuery } from "./runtime-profile.js";
|
|
3
|
+
export interface RiffDBRuntimeMaterialization {
|
|
4
|
+
readonly files: Readonly<Record<string, string>>;
|
|
5
|
+
readonly queries: readonly RiffDBProfileQuery[];
|
|
6
|
+
}
|
|
7
|
+
export declare const profileColumn: (field: string) => string;
|
|
8
|
+
/** Complete runtime sources for reviewed core extensions, organization (without teams), and 2FA. */
|
|
9
|
+
export declare function materializeRiffDBBetterAuthRuntimeProfile(plan: RiffDBBetterAuthProfilePlan): RiffDBRuntimeMaterialization;
|
|
10
|
+
//# sourceMappingURL=runtime-materialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-materialize.d.ts","sourceRoot":"","sources":["../src/runtime-materialize.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAoC,MAAM,mBAAmB,CAAC;AAEvG,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAKD,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MAAqE,CAAC;AAUpH,oGAAoG;AACpG,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,2BAA2B,GAAG,4BAA4B,CAkTzH"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { getAuthTables } from "better-auth/db";
|
|
3
|
+
import { organization, twoFactor as twoFactorPlugin } from "better-auth/plugins";
|
|
4
|
+
import { defineRiffDBBetterAuthProfilePlan } from "./profile-plan.js";
|
|
5
|
+
import { BETTER_AUTH_CORE_FIELDS, BETTER_AUTH_PINNED_VERSION } from "./profile.js";
|
|
6
|
+
import { storageField } from "./runtime-profile.js";
|
|
7
|
+
const coreModels = ["user", "account", "session", "verification"];
|
|
8
|
+
const entityName = (name) => name[0].toUpperCase() + name.slice(1);
|
|
9
|
+
const key = (model) => model === "organization" ? "org_id" : `${storageField(model)}_id`;
|
|
10
|
+
export const profileColumn = (field) => field === "organizationId" ? "org_id" : storageField(field);
|
|
11
|
+
function fieldType(field) {
|
|
12
|
+
if (typeof field.type !== "string")
|
|
13
|
+
throw new Error("runtime enum fields require a reviewed codec");
|
|
14
|
+
const base = field.reference !== undefined ? "uuid" : { string: `string<${{ email: 320, role: 256, status: 32, name: 256, slug: 256 }[field.name] ?? 2048}>`, boolean: "bool",
|
|
15
|
+
number: "i64", date: "timestamp" }[field.type];
|
|
16
|
+
if (base === undefined)
|
|
17
|
+
throw new Error(`runtime profile field type is not supported: ${field.type}`);
|
|
18
|
+
return field.required || field.name === "failedVerificationCount" || field.name === "verified" ? base : `optional<${base}>`;
|
|
19
|
+
}
|
|
20
|
+
/** Complete runtime sources for reviewed core extensions, organization (without teams), and 2FA. */
|
|
21
|
+
export function materializeRiffDBBetterAuthRuntimeProfile(plan) {
|
|
22
|
+
if (plan.betterAuthVersion !== BETTER_AUTH_PINNED_VERSION || plan.plugins.some((id) => !["organization", "two-factor"].includes(id)) ||
|
|
23
|
+
plan.models.some((model) => ![...coreModels, "organization", "member", "invitation", "twoFactor"].includes(model.name))) {
|
|
24
|
+
throw new Error("unsupported runtime profile");
|
|
25
|
+
}
|
|
26
|
+
const org = plan.plugins.includes("organization");
|
|
27
|
+
const twoFactor = plan.plugins.includes("two-factor");
|
|
28
|
+
const baselineOptions = { advanced: { database: { generateId: "uuid" } },
|
|
29
|
+
plugins: [...(org ? [organization()] : []), ...(twoFactor ? [twoFactorPlugin()] : [])] };
|
|
30
|
+
const baseline = defineRiffDBBetterAuthProfilePlan(baselineOptions, getAuthTables(baselineOptions), {
|
|
31
|
+
name: plan.name, contractLineage: plan.contract.lineage, applicationRole: plan.contract.applicationRole,
|
|
32
|
+
});
|
|
33
|
+
if (JSON.stringify(plan.models.map((model) => model.name)) !== JSON.stringify(baseline.models.map((model) => model.name))) {
|
|
34
|
+
throw new Error("unsupported runtime model inventory");
|
|
35
|
+
}
|
|
36
|
+
for (const model of plan.models) {
|
|
37
|
+
const expected = baseline.models.find((entry) => entry.name === model.name);
|
|
38
|
+
for (const field of expected.fields)
|
|
39
|
+
if (JSON.stringify(model.fields.find((entry) => entry.name === field.name)) !== JSON.stringify(field)) {
|
|
40
|
+
throw new Error("unsupported runtime schema override");
|
|
41
|
+
}
|
|
42
|
+
for (const field of model.fields.filter((field) => !expected.fields.some((entry) => entry.name === field.name))) {
|
|
43
|
+
if (model.name !== "user" || field.indexed || field.unique || field.reference !== undefined) {
|
|
44
|
+
throw new Error("unsupported runtime field extension");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
for (const model of plan.models) {
|
|
49
|
+
if (model.storageName !== model.name || model.fields.some((field) => field.storageName !== field.name)) {
|
|
50
|
+
throw new Error("runtime profiles require default storage names");
|
|
51
|
+
}
|
|
52
|
+
for (const field of model.fields)
|
|
53
|
+
fieldType(field);
|
|
54
|
+
}
|
|
55
|
+
const files = {};
|
|
56
|
+
const base = new URL("../", import.meta.url);
|
|
57
|
+
const application = JSON.parse(readFileSync(new URL("riffdb.application.json", base), "utf8"));
|
|
58
|
+
let contract = readFileSync(new URL("riffdb/contract.riff", base), "utf8")
|
|
59
|
+
.replace("contract RiffDBBetterAuthCore version 1", `contract ${plan.contract.lineage} version 1`);
|
|
60
|
+
const extra = new Map();
|
|
61
|
+
for (const model of coreModels) {
|
|
62
|
+
const fields = plan.models.find((entry) => entry.name === model)?.fields;
|
|
63
|
+
if (fields === undefined)
|
|
64
|
+
throw new Error(`missing runtime profile model: ${model}`);
|
|
65
|
+
const known = BETTER_AUTH_CORE_FIELDS[model];
|
|
66
|
+
extra.set(model, fields.filter((field) => !known.includes(field.name)));
|
|
67
|
+
}
|
|
68
|
+
const declarations = new Map();
|
|
69
|
+
const pattern = /^ (?:(?:bulk )?command|entity|aggregate) (\w+) \{/gmu;
|
|
70
|
+
const starts = [...contract.matchAll(pattern)];
|
|
71
|
+
for (let i = 0; i < starts.length; i += 1) {
|
|
72
|
+
declarations.set(starts[i][1], contract.slice(starts[i].index, starts[i + 1]?.index ?? contract.lastIndexOf("}")).trimEnd());
|
|
73
|
+
}
|
|
74
|
+
for (const model of coreModels) {
|
|
75
|
+
const entity = entityName(model);
|
|
76
|
+
const fields = extra.get(model);
|
|
77
|
+
let source = declarations.get(entity);
|
|
78
|
+
const inserted = fields.map((field) => ` field ${field.secret ? "secret " : ""}${storageField(field.name)}: ${fieldType(field)}`).join("\n");
|
|
79
|
+
source = source.replace(/ (unique|index|delete_policy)/u, `${inserted}${inserted ? "\n" : ""} $1`);
|
|
80
|
+
if (model === "user" && fields.length > 0)
|
|
81
|
+
source = source.replace(/cover\(([^)]+)\)/gu, (_match, cover) => `cover(${cover}, ${fields.map((field) => storageField(field.name)).join(", ")})`);
|
|
82
|
+
if (model === "user")
|
|
83
|
+
source = source.replace(" unique user_email", " index by_id (organization_id, user_id)\n unique user_email");
|
|
84
|
+
declarations.set(entity, source);
|
|
85
|
+
for (const command of [`Create${entity}`, `Update${entity}`,
|
|
86
|
+
...(model === "user" || model === "account" ? ["CreateSignupGraph", "CreateOAuthUserGraph"] : model === "session" ? ["CreateSignupGraph"] : [])]) {
|
|
87
|
+
let body = declarations.get(command);
|
|
88
|
+
const graph = command.endsWith("Graph");
|
|
89
|
+
const binding = model;
|
|
90
|
+
const inputs = fields.map((field) => ` input ${graph ? `${model}_` : ""}${storageField(field.name)}: ${fieldType(field)}`).join("\n");
|
|
91
|
+
body = body.replace(" idempotency_key", `${inputs}${inputs ? "\n" : ""} idempotency_key`);
|
|
92
|
+
const assignments = fields.map((field) => ` set ${binding}.${storageField(field.name)} = ${graph ? `${model}_` : ""}${storageField(field.name)}${command.startsWith("Update") && model !== "user" && model !== "verification" ? " checked_by current_revision" : ""}`).join("\n");
|
|
93
|
+
body = body.replace(` set ${binding}.revision =`, `${assignments}${assignments ? "\n" : ""} set ${binding}.revision =`);
|
|
94
|
+
if (command.startsWith("Update") && (model === "user" || model === "verification"))
|
|
95
|
+
body = body.replace(new RegExp(`( set ${model}\\.(?!revision)[^\\n]+)`, "gu"), "$1 checked_by current_revision");
|
|
96
|
+
declarations.set(command, body);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const query of application.query_modules[0].queries) {
|
|
100
|
+
let source = readFileSync(new URL(query.source, base), "utf8");
|
|
101
|
+
for (const model of coreModels) {
|
|
102
|
+
source = source.replace(new RegExp(`\\b(${model}s?): (${model}s?) \\{([^{}]*)\\}`, "gu"), (_match, label, alias, projection) => {
|
|
103
|
+
const fields = extra.get(model);
|
|
104
|
+
const leaves = fields.map((field) => `${storageField(field.name)}${field.secret ? ` reveals ${alias}.${storageField(field.name)}` : ""}`).join(" ");
|
|
105
|
+
return `${label}: ${alias} {${projection} ${leaves} }`;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
files[query.source] = source;
|
|
109
|
+
}
|
|
110
|
+
// Shared tenant ownership lets organization relationships retain both
|
|
111
|
+
// foreign-key proofs. Organization profiles omit user deletion: the current
|
|
112
|
+
// compiler cannot admit commands binding two cascade-policy entities.
|
|
113
|
+
declarations.delete("UserAuthData");
|
|
114
|
+
declarations.delete("VerificationData");
|
|
115
|
+
if (org) {
|
|
116
|
+
declarations.set("User", declarations.get("User").replace(/ delete_policy cascade \{[^}]*\}/u, ""));
|
|
117
|
+
declarations.delete("DeleteUser");
|
|
118
|
+
}
|
|
119
|
+
else if (twoFactor) {
|
|
120
|
+
declarations.set("User", declarations.get("User").replace(" delete_policy cascade {", " delete_policy cascade {\n relationship TwoFactor.two_factor_user using TwoFactor.by_user_id maximum 1"));
|
|
121
|
+
}
|
|
122
|
+
declarations.set("Tenant", " entity Tenant {\n key (organization_id: uuid)\n delete_policy no_inbound\n }");
|
|
123
|
+
const plugins = plan.models.filter((model) => !coreModels.includes(model.name));
|
|
124
|
+
const projection = (model, alias) => {
|
|
125
|
+
const fields = plan.models.find((entry) => entry.name === model).fields;
|
|
126
|
+
return [key(model), ...fields.map((field) => `${profileColumn(field.name)}${field.secret && field.reference === undefined ? ` reveals ${alias}.${profileColumn(field.name)}` : ""}`), "revision"].join(" ");
|
|
127
|
+
};
|
|
128
|
+
for (const model of plugins) {
|
|
129
|
+
const entity = entityName(model.name);
|
|
130
|
+
const columns = model.fields.map((field) => ` field ${field.secret && field.reference === undefined ? "secret " : ""}${profileColumn(field.name)}: ${fieldType(field)}`);
|
|
131
|
+
if (model.name === "organization")
|
|
132
|
+
columns.push(" field member_count: i64", " field invitation_count: i64");
|
|
133
|
+
if (model.name === "twoFactor")
|
|
134
|
+
columns.push(" field locked_until_millis: i64");
|
|
135
|
+
const indexes = model.fields.filter((field) => field.reference !== undefined || (!field.secret && (field.indexed || field.unique)))
|
|
136
|
+
.map((field) => ` index by_${profileColumn(field.name)} (organization_id, ${profileColumn(field.name)}, ${key(model.name)})${field.type === "string" && field.reference === undefined ? ` text_key(${profileColumn(field.name)}, binary_utf8_v1)` : ""}`);
|
|
137
|
+
const references = model.fields.filter((field) => field.reference !== undefined).map((field) => ` reference ${storageField(model.name)}_${field.name === "userId" ? "user" : storageField(field.name)} (organization_id, ${profileColumn(field.name)}) -> ${entityName(field.reference.model)}(organization_id, ${field.reference.model === "user" ? "user_id" : key(field.reference.model)})`);
|
|
138
|
+
const unique = model.fields.filter((field) => field.unique).map((field) => ` unique unique_${profileColumn(field.name)} (organization_id, ${profileColumn(field.name)})`);
|
|
139
|
+
if (model.name === "member") {
|
|
140
|
+
indexes.push(" index by_role (organization_id, role, member_id) text_key(role, binary_utf8_v1)", " index by_created_at (organization_id, created_at, member_id)");
|
|
141
|
+
unique.push(" unique membership (organization_id, org_id, user_id)");
|
|
142
|
+
indexes.push(" index by_org_user (organization_id, org_id, user_id, member_id)");
|
|
143
|
+
for (const name of ["role", "created_at"])
|
|
144
|
+
indexes.push(` index by_org_${name} (organization_id, org_id, ${name}, member_id)${name === "role" ? " text_key(role, binary_utf8_v1)" : ""}`);
|
|
145
|
+
}
|
|
146
|
+
if (model.name === "invitation") {
|
|
147
|
+
indexes.push(" index by_org_status (organization_id, org_id, status, invitation_id)", " index by_org_email_status (organization_id, org_id, email, status, invitation_id)");
|
|
148
|
+
}
|
|
149
|
+
if (model.name === "twoFactor")
|
|
150
|
+
unique.push(" unique two_factor_user (organization_id, user_id)");
|
|
151
|
+
const policy = model.name === "organization" ? ` delete_policy cascade {\n relationship Member.member_organization_id using Member.by_org_id maximum 100\n relationship Invitation.invitation_organization_id using Invitation.by_org_id maximum 100\n }` : " delete_policy no_inbound";
|
|
152
|
+
declarations.set(entity, [` entity ${entity} {`, ` key (organization_id: uuid, ${key(model.name)}: uuid)`, ...columns,
|
|
153
|
+
" field revision: u64", ...unique, ...indexes, ...references, policy, " }"].join("\n"));
|
|
154
|
+
const inputs = model.fields.map((field) => ` input ${profileColumn(field.name)}: ${fieldType(field)}`);
|
|
155
|
+
if (model.name === "twoFactor")
|
|
156
|
+
inputs.push(" input locked_until_millis: i64");
|
|
157
|
+
const parentReads = model.fields.filter((field) => field.reference !== undefined).map((field) => ` read ${entityName(field.reference.model)}(organization_id, ${profileColumn(field.name)}) as parent_${profileColumn(field.name)} else ${entity}ParentMissing {}`);
|
|
158
|
+
const setters = model.fields.map((field) => ` set record.${profileColumn(field.name)} = ${profileColumn(field.name)}`);
|
|
159
|
+
if (model.name === "twoFactor")
|
|
160
|
+
setters.push(" set record.locked_until_millis = locked_until_millis");
|
|
161
|
+
const initialCounters = model.name === "organization" ? [" set record.member_count = 0", " set record.invitation_count = 0"] : [];
|
|
162
|
+
declarations.set(`Create${entity}`, [` command Create${entity} {`, " input request_id: uuid", " input organization_id: uuid",
|
|
163
|
+
` input ${key(model.name)}: uuid`, ...inputs, " idempotency_key request_id", ...parentReads,
|
|
164
|
+
` create ${entity}(organization_id, ${key(model.name)}) as record else ${entity}AlreadyExists {}`,
|
|
165
|
+
...setters, ...initialCounters, " set record.revision = 1", ` return ${entity}Created {}`, " }"].join("\n"));
|
|
166
|
+
declarations.set(`Update${entity}`, [` command Update${entity} {`, " input request_id: uuid", " input organization_id: uuid",
|
|
167
|
+
` input ${key(model.name)}: uuid`, " input expected_revision: u64", ...inputs, " idempotency_key request_id", ...parentReads,
|
|
168
|
+
` mutate ${entity}(organization_id, ${key(model.name)}) as record else ${entity}Missing {}`,
|
|
169
|
+
" require current_revision: record.revision == expected_revision else Stale {}",
|
|
170
|
+
...setters.map((line) => `${line} checked_by current_revision`), " set record.revision = record.revision + 1",
|
|
171
|
+
` return ${entity}Updated {}`, " }"].join("\n"));
|
|
172
|
+
declarations.set(`Delete${entity}`, [` bulk command Delete${entity} {`, " input request_id: uuid", " input organization_id: uuid",
|
|
173
|
+
` input ids: list<uuid, 1..${model.name === "organization" ? 1 : 100}>`, " idempotency_key request_id", " for id in ids {",
|
|
174
|
+
` delete ${entity}(organization_id, id) as record else ${entity}Missing {}`,
|
|
175
|
+
...(model.name === "organization" ? [" cascade CascadeLimitExceeded {}"] : []), " }", ` return ${entity}Deleted {}`, " }"].join("\n"));
|
|
176
|
+
}
|
|
177
|
+
if (org) {
|
|
178
|
+
for (const [model, counter] of [["Member", "member_count"], ["Invitation", "invitation_count"]]) {
|
|
179
|
+
let create = declarations.get(`Create${model}`);
|
|
180
|
+
create = create.replace(" read Organization(organization_id, org_id) as parent_org_id", " mutate Organization(organization_id, org_id) as parent_org_id");
|
|
181
|
+
create = create.replace(" set record.", ` require capacity: parent_org_id.${counter} < 100 else CapacityExceeded {}\n set record.`);
|
|
182
|
+
create = create.replace(` return ${model}Created {}`, ` set parent_org_id.${counter} = parent_org_id.${counter} + 1\n set parent_org_id.revision = parent_org_id.revision + 1\n return ${model}Created {}`);
|
|
183
|
+
declarations.set(`Create${model}`, create);
|
|
184
|
+
const deletion = [
|
|
185
|
+
` bulk command Delete${model} {`, " input request_id: uuid", " input organization_id: uuid",
|
|
186
|
+
" input org_id: uuid", " input ids: list<uuid, 1..1>", " idempotency_key request_id",
|
|
187
|
+
" mutate Organization(organization_id, org_id) as parent else OrganizationMissing {}",
|
|
188
|
+
" for id in ids {", ` delete ${model}(organization_id, id) as record else ${model}Missing {}`,
|
|
189
|
+
" require same_organization: record.org_id == org_id else OrganizationMismatch {}", " }",
|
|
190
|
+
` require counted: parent.${counter} > 0 else CounterInconsistent {}`,
|
|
191
|
+
` set parent.${counter} = parent.${counter} - 1 checked_by counted`, " set parent.revision = parent.revision + 1",
|
|
192
|
+
` return ${model}Deleted {}`, " }",
|
|
193
|
+
].join("\n");
|
|
194
|
+
declarations.set(`Delete${model}`, deletion);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const entities = [...declarations.values()].filter((source) => source.startsWith(" entity"));
|
|
198
|
+
declarations.set("TenantData", [" aggregate TenantData {", " root Tenant",
|
|
199
|
+
...entities.filter((source) => !source.startsWith(" entity Tenant ")).map((source) => ` child ${/^ entity (\w+)/u.exec(source)[1]}`),
|
|
200
|
+
" partition_by organization_id", " conflict_key (organization_id)", " }"].join("\n"));
|
|
201
|
+
const queries = [];
|
|
202
|
+
const addQuery = (model, suffix, where, order = null) => {
|
|
203
|
+
const entity = entityName(model);
|
|
204
|
+
const name = `Profile${entity}${suffix}`;
|
|
205
|
+
const conditions = where.map((clause) => `${clause.field === "id" ? key(model) : profileColumn(clause.field)} ${clause.operator === "in" ? "in" : "=="} $${profileColumn(clause.field)}`);
|
|
206
|
+
const params = where.map((clause) => `$${profileColumn(clause.field)}: ${clause.operator === "in" ? "Set<" : ""}${entity}.${clause.field === "id" ? key(model) : profileColumn(clause.field)}${clause.operator === "in" ? ">" : ""}`);
|
|
207
|
+
const ordered = order === null ? `${key(model)} asc` : `${profileColumn(order[0])} ${order[1]}, ${key(model)} asc`;
|
|
208
|
+
const counted = model === "member" && where.length === 1 && where[0]?.field === "organizationId";
|
|
209
|
+
if (counted) {
|
|
210
|
+
conditions.push("role >= $minimum_role");
|
|
211
|
+
params.push("$minimum_role: Member.role = \"\"");
|
|
212
|
+
}
|
|
213
|
+
const effectiveOrder = counted && order === null ? "role asc, member_id asc" : ordered;
|
|
214
|
+
const hydrate = model === "member" && !counted ? "member" : model === "organization" && where[0]?.operator !== "in" ? "organization" : undefined;
|
|
215
|
+
let body;
|
|
216
|
+
if (hydrate === "organization") {
|
|
217
|
+
body = ` one record from Organization\n where organization_id == $organization_id && ${conditions.join(" && ")}\n else Missing\n\n` +
|
|
218
|
+
["member", "invitation"].map((child) => ` many ${child}s from ${entityName(child)}\n where organization_id == $organization_id && org_id == record.org_id\n order by ${key(child)} asc\n take 100\n`).join("\n") +
|
|
219
|
+
`\n return Found {\n record: record { ${projection(model, "record")} }\n members: members { ${projection("member", "members")} }\n invitations: invitations { ${projection("invitation", "invitations")} }\n }\n outcomes Found | Missing`;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
body = ` many rows from ${entity}\n where organization_id == $organization_id && ${conditions.join(" && ")}\n order by ${where[0]?.operator === "in" ? `${key(model)} asc` : effectiveOrder}\n take $limit${counted ? " offset $offset" : " after $after"}\n`;
|
|
223
|
+
if (hydrate === "member") {
|
|
224
|
+
body += `\n many organizations from Organization\n where organization_id == $organization_id && org_id in distinct(rows.org_id)\n take 100\n\n many users from User\n where organization_id == $organization_id && user_id in distinct(rows.user_id)\n take 100\n`;
|
|
225
|
+
}
|
|
226
|
+
if (counted)
|
|
227
|
+
body += "\n aggregate total from rows { exact_count() as value }\n";
|
|
228
|
+
body += `\n return Found {\n rows: rows { ${projection(model, "rows")} }\n${counted ? " total: total { value }\n" : ""}`;
|
|
229
|
+
if (hydrate === "member") {
|
|
230
|
+
const userFields = ["user_id", "name", "email", "email_verified", "image", "created_at", "updated_at", "revision", ...extra.get("user").map((field) => `${storageField(field.name)}${field.secret ? ` reveals users.${storageField(field.name)}` : ""}`)];
|
|
231
|
+
body += ` organizations: organizations { ${projection("organization", "organizations")} }\n users: users { ${userFields.join(" ")} }\n`;
|
|
232
|
+
}
|
|
233
|
+
body += " }\n outcomes Found";
|
|
234
|
+
}
|
|
235
|
+
const cursor = hydrate !== "organization" && !counted;
|
|
236
|
+
if (cursor)
|
|
237
|
+
params.push("$after: Cursor?");
|
|
238
|
+
const path = `riffdb/queries/${storageField(name)}.riffq`;
|
|
239
|
+
files[path] = `query ${name}(\n $organization_id: ${entity}.organization_id,\n ${params.join(",\n ")},\n $limit: Limit<100> = 100,\n $offset: u64 = 0\n) {\n${body}\n}\n`;
|
|
240
|
+
application.query_modules[0].queries.push({ name, source: path });
|
|
241
|
+
application.roles[0].queries.push(name);
|
|
242
|
+
queries.push({ model, ...(cursor ? { cursor: true } : {}), method: name[0].toLowerCase() + name.slice(1), where, order, ...(hydrate === undefined ? {} : { hydrate }) });
|
|
243
|
+
};
|
|
244
|
+
for (const model of plugins) {
|
|
245
|
+
addQuery(model.name, "ById", [{ field: "id", operator: "eq" }]);
|
|
246
|
+
if (model.name === "organization")
|
|
247
|
+
addQuery(model.name, "BySlug", [{ field: "slug", operator: "eq" }]);
|
|
248
|
+
if (model.name === "twoFactor")
|
|
249
|
+
addQuery(model.name, "ByUser", [{ field: "userId", operator: "eq" }]);
|
|
250
|
+
if (model.name === "member") {
|
|
251
|
+
addQuery("member", "ByUser", [{ field: "userId", operator: "eq" }]);
|
|
252
|
+
addQuery("member", "ByOrganization", [{ field: "organizationId", operator: "eq" }]);
|
|
253
|
+
addQuery("member", "ByOrganizationUser", [{ field: "organizationId", operator: "eq" }, { field: "userId", operator: "eq" }]);
|
|
254
|
+
for (const field of ["role", "createdAt"])
|
|
255
|
+
for (const direction of ["asc", "desc"]) {
|
|
256
|
+
addQuery("member", `ByOrganization${entityName(field)}${entityName(direction)}`, [{ field: "organizationId", operator: "eq" }], [field, direction]);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (model.name === "invitation") {
|
|
260
|
+
for (const field of ["organizationId", "email"])
|
|
261
|
+
addQuery("invitation", `By${entityName(field)}`, [{ field, operator: "eq" }]);
|
|
262
|
+
addQuery("invitation", "ByOrganizationStatus", [{ field: "organizationId", operator: "eq" }, { field: "status", operator: "eq" }]);
|
|
263
|
+
addQuery("invitation", "ByOrganizationEmailStatus", [{ field: "organizationId", operator: "eq" }, { field: "email", operator: "eq" }, { field: "status", operator: "eq" }]);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Exact point-batch hydration used by the organization plugin's user lists.
|
|
267
|
+
if (org) {
|
|
268
|
+
const user = files["riffdb/queries/find_user_by_id.riffq"];
|
|
269
|
+
const leaves = /user: user \{([^}]+)\}/u.exec(user)[1];
|
|
270
|
+
const path = "riffdb/queries/profile_users_by_id_set.riffq";
|
|
271
|
+
files[path] = `query ProfileUsersByIdSet($organization_id: User.organization_id, $ids: Set<User.user_id>) {\n many users from User\n where organization_id == $organization_id && user_id in $ids\n order by user_id asc\n take 100\n return Found { users: users { ${leaves.replaceAll("user.", "users.")} } }\n outcomes Found\n}\n`;
|
|
272
|
+
application.query_modules[0].queries.push({ name: "ProfileUsersByIdSet", source: path });
|
|
273
|
+
application.roles[0].queries.push("ProfileUsersByIdSet");
|
|
274
|
+
}
|
|
275
|
+
const leaves = (path, label) => new RegExp(`${label}: ${label} \\{([^}]+)\\}`, "u").exec(files[path])[1];
|
|
276
|
+
const userLeaves = leaves("riffdb/queries/find_user_by_id.riffq", "user");
|
|
277
|
+
const accountLeaves = leaves("riffdb/queries/find_accounts_by_user_id.riffq", "accounts");
|
|
278
|
+
const sessionLeaves = leaves("riffdb/queries/find_session_by_token.riffq", "sessions");
|
|
279
|
+
const addCoreQuery = (queryName, source) => {
|
|
280
|
+
const path = `riffdb/queries/${storageField(queryName)}.riffq`;
|
|
281
|
+
files[path] = source;
|
|
282
|
+
application.query_modules[0].queries.push({ name: queryName, source: path });
|
|
283
|
+
application.roles[0].queries.push(queryName);
|
|
284
|
+
};
|
|
285
|
+
for (const field of ["id", "email"]) {
|
|
286
|
+
const queryName = `ProfileUserWithAccountsBy${entityName(field)}`;
|
|
287
|
+
addCoreQuery(queryName, `query ${queryName}($organization_id: User.organization_id, $value: User.${field === "id" ? "user_id" : "email"}) {\n one user from User\n where organization_id == $organization_id && ${field === "id" ? "user_id" : "email"} == $value\n else Missing\n many accounts from Account\n where organization_id == $organization_id && user_id == user.user_id\n order by id asc\n take 33\n return Found { user: user { ${userLeaves} } accounts: accounts { ${accountLeaves} } }\n outcomes Found | Missing\n}\n`);
|
|
288
|
+
}
|
|
289
|
+
for (const field of ["id", "token"]) {
|
|
290
|
+
const queryName = `ProfileSessionWithUserBy${entityName(field)}`;
|
|
291
|
+
addCoreQuery(queryName, `query ${queryName}($organization_id: Session.organization_id, $value: Session.${field}) {\n one session from Session\n where organization_id == $organization_id && ${field} == $value\n else Missing\n one user from User\n where organization_id == $organization_id && user_id == session.user_id\n else IntegrityFailure\n return Found { session: session { ${sessionLeaves.replaceAll("sessions.", "session.")} } user: user { ${userLeaves} } }\n outcomes Found | Missing | IntegrityFailure\n}\n`);
|
|
292
|
+
}
|
|
293
|
+
for (const [basePath, originalName, queryName, label, bound] of [
|
|
294
|
+
["riffdb/queries/find_account_by_provider.riffq", "FindAccountByProvider", "ProfileAccountWithUserByProvider", "accounts", 1],
|
|
295
|
+
["riffdb/queries/find_sessions_by_token_set.riffq", "FindSessionsByTokenSet", "ProfileSessionsWithUsersByTokenSet", "sessions", 32],
|
|
296
|
+
]) {
|
|
297
|
+
const source = files[basePath].replace(originalName, queryName).replace(" return Found {", ` many users from User\n where organization_id == $organization_id && user_id in distinct(${label}.user_id)\n take ${bound}\n\n return Found {\n users: users { ${userLeaves.replaceAll("user.", "users.")} }`);
|
|
298
|
+
addCoreQuery(queryName, source);
|
|
299
|
+
}
|
|
300
|
+
const atomic = (name, model, inputs, guards, sets) => {
|
|
301
|
+
const entity = entityName(model);
|
|
302
|
+
declarations.set(name, [` command ${name} {`, " input request_id: uuid", " input organization_id: uuid",
|
|
303
|
+
` input ${key(model)}: uuid`, ...inputs.map((input) => ` input ${input}`), " idempotency_key request_id",
|
|
304
|
+
` mutate ${entity}(organization_id, ${key(model)}) as record else Missing {}`,
|
|
305
|
+
...guards.map((guard, i) => ` require guard_${i}: ${guard} else GuardFailed {}`),
|
|
306
|
+
...sets.map((set) => ` set record.${set} checked_by guard_0`), " set record.revision = record.revision + 1",
|
|
307
|
+
" return Changed { }",
|
|
308
|
+
" }"].join("\n"));
|
|
309
|
+
// Outcomes project exact leaves, including compiler-declared secret output.
|
|
310
|
+
const fields = plan.models.find((entry) => entry.name === model).fields;
|
|
311
|
+
const leaves = [`${key(model)}: record.${key(model)}`, ...fields.map((field) => `${profileColumn(field.name)}: record.${profileColumn(field.name)}${field.secret && field.reference === undefined ? ` reveals record.${profileColumn(field.name)}` : ""}`), "revision: record.revision"];
|
|
312
|
+
declarations.set(name, declarations.get(name).replace(" return Changed { }", ` return Changed {\n ${leaves.join(",\n ")}\n }`));
|
|
313
|
+
};
|
|
314
|
+
if (twoFactor) {
|
|
315
|
+
atomic("IncrementTwoFactorFailure", "twoFactor", [], ["record.failed_verification_count < 1000000"], ["failed_verification_count = record.failed_verification_count + 1"]);
|
|
316
|
+
atomic("LockTwoFactor", "twoFactor", ["minimum_failures: i64", "locked_until: optional<timestamp>", "locked_until_millis: i64"], ["record.failed_verification_count >= minimum_failures"], ["locked_until = locked_until", "locked_until_millis = locked_until_millis"]);
|
|
317
|
+
atomic("ResetExpiredTwoFactor", "twoFactor", ["before_millis: i64"], ["record.locked_until_millis > 0 && record.locked_until_millis <= before_millis"], ["failed_verification_count = 0", "locked_until = null", "locked_until_millis = 0"]);
|
|
318
|
+
atomic("ReplaceTwoFactorBackupCodes", "twoFactor", ["expected: string<2048>", "replacement: string<2048>"], ["record.backup_codes == expected"], ["backup_codes = replacement"]);
|
|
319
|
+
}
|
|
320
|
+
if (org) {
|
|
321
|
+
atomic("TransitionInvitation", "invitation", ["expected: string<32>", "replacement: string<32>"], ["record.status == expected"], ["status = replacement"]);
|
|
322
|
+
let body = declarations.get("CreateMember").replace("command CreateMember", "command CreateMemberAndActivateOrganization")
|
|
323
|
+
.replace(" idempotency_key", " input session_user_id: uuid\n input session_id: uuid\n input session_revision: u64\n input session_updated_at: timestamp\n input session_active_organization_id: optional<string<2048>>\n idempotency_key")
|
|
324
|
+
.replace("as record else MemberAlreadyExists {}", "as record else MemberAlreadyExists {}\n mutate Session(organization_id, session_user_id, session_id) as session else SessionMissing {}")
|
|
325
|
+
.replace(" require capacity:", " require session_snapshot: session.revision == session_revision else Stale {}\n require session_owner: session.user_id == user_id else SessionOwnerMismatch {}\n require capacity:");
|
|
326
|
+
body = body.replace(" return MemberCreated {}", " set session.active_organization_id = session_active_organization_id checked_by session_snapshot\n set session.updated_at = session_updated_at checked_by session_snapshot\n set session.revision = session.revision + 1\n return MemberCreated {}");
|
|
327
|
+
declarations.set("CreateMemberAndActivateOrganization", body);
|
|
328
|
+
}
|
|
329
|
+
contract = [`contract ${plan.contract.lineage} version 1 {`, ...[...declarations.values()].filter((source) => source.startsWith(" entity")),
|
|
330
|
+
declarations.get("TenantData"), ...[...declarations.values()].filter((source) => /^ (?:bulk )?command/u.test(source)), "}", ""].join("\n\n");
|
|
331
|
+
files["riffdb/contract.riff"] = contract;
|
|
332
|
+
application.application = storageField(plan.name).replaceAll("_", "-");
|
|
333
|
+
application.contract.lineage = plan.contract.lineage;
|
|
334
|
+
application.roles[0].name = plan.contract.applicationRole;
|
|
335
|
+
application.roles[0].commands = [...declarations.keys()].filter((name) => /^ (?:bulk )?command/u.test(declarations.get(name)));
|
|
336
|
+
files["riffdb.application.json"] = `${JSON.stringify(application, null, 2)}\n`;
|
|
337
|
+
files["riffdb.toml"] = '[project]\nschema = "riffdb.application.json"\ngenerators = ["typescript"]\n';
|
|
338
|
+
files["profile.ts"] = `// Generated profile binding. Review sources, then run riffdb application lock --write.\nimport { defineRiffDBCompiledProfile } from "@riffdb/better-auth";\nimport * as bindings from "./src/generated/client.js";\nexport default defineRiffDBCompiledProfile({\n plan: ${JSON.stringify(plan, null, 2)},\n queries: ${JSON.stringify(queries, null, 2)},\n bindings,\n});\n`;
|
|
339
|
+
for (const path of Object.keys(files)) {
|
|
340
|
+
files[path] = `${files[path].split("\n").map((line) => line.trimEnd()).join("\n").trimEnd()}\n`;
|
|
341
|
+
}
|
|
342
|
+
return Object.freeze({ files: Object.freeze(files), queries: Object.freeze(queries) });
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=runtime-materialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-materialize.js","sourceRoot":"","sources":["../src/runtime-materialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { BetterAuthOptions } from "better-auth";
|
|
2
|
+
import type { BetterAuthDBSchema } from "better-auth/db";
|
|
3
|
+
import type { ApplicationTransport } from "./generated/client.js";
|
|
4
|
+
import { type RiffDBBetterAuthProfilePlan, type RiffDBBetterAuthProfileFieldPlan } from "./profile-plan.js";
|
|
5
|
+
export interface RiffDBProfileQuery {
|
|
6
|
+
readonly model: string;
|
|
7
|
+
readonly method: string;
|
|
8
|
+
readonly where: readonly {
|
|
9
|
+
readonly field: string;
|
|
10
|
+
readonly operator: string;
|
|
11
|
+
}[];
|
|
12
|
+
readonly order: readonly [string, "asc" | "desc"] | null;
|
|
13
|
+
readonly hydrate?: "member" | "organization";
|
|
14
|
+
readonly cursor?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface RiffDBCompiledProfileInput {
|
|
17
|
+
readonly plan: RiffDBBetterAuthProfilePlan;
|
|
18
|
+
readonly queries: readonly RiffDBProfileQuery[];
|
|
19
|
+
/** The compiler-generated module namespace, never CRUD or transaction callbacks. */
|
|
20
|
+
readonly bindings: object;
|
|
21
|
+
}
|
|
22
|
+
export interface RiffDBCompiledProfile extends RiffDBCompiledProfileInput {
|
|
23
|
+
readonly schema: "riffdb.better-auth-runtime-profile/v1";
|
|
24
|
+
readonly contractBundleHash: string;
|
|
25
|
+
readonly Client: new (...args: never[]) => object;
|
|
26
|
+
}
|
|
27
|
+
export declare function instantiateProfileClient(profile: RiffDBCompiledProfile, transport: ApplicationTransport, budget: number): object;
|
|
28
|
+
/** Used by generated profile modules after their sources have been reviewed and locked. */
|
|
29
|
+
export declare function defineRiffDBCompiledProfile(input: RiffDBCompiledProfileInput): RiffDBCompiledProfile;
|
|
30
|
+
export declare function validateRuntimeProfile(profile: RiffDBCompiledProfile, options: BetterAuthOptions, tables: BetterAuthDBSchema): void;
|
|
31
|
+
export declare function storageField(name: string): string;
|
|
32
|
+
export declare function encodeProfileField(field: RiffDBBetterAuthProfileFieldPlan, value: unknown): unknown;
|
|
33
|
+
export declare function decodeProfileField(field: RiffDBBetterAuthProfileFieldPlan, value: unknown): unknown;
|
|
34
|
+
//# sourceMappingURL=runtime-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-profile.d.ts","sourceRoot":"","sources":["../src/runtime-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAqC,KAAK,2BAA2B,EAC1E,KAAK,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,WAAW,qBAAsB,SAAQ,0BAA0B;IACvE,QAAQ,CAAC,MAAM,EAAE,uCAAuC,CAAC;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;CACnD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhI;AAED,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,GAAG,qBAAqB,CA8EpG;AAcD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,GACrF,IAAI,CAoCN;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CA0BnG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBnG"}
|