@riffdb/better-auth 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/DESIGN.md +197 -0
- package/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +27 -0
- package/README.md +191 -2
- package/dist/adapter.d.ts +28 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +1262 -0
- package/dist/adapter.js.map +1 -0
- package/dist/generated/client.d.ts +1925 -0
- package/dist/generated/client.d.ts.map +1 -0
- package/dist/generated/client.js +2044 -0
- package/dist/generated/client.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/profile-contract.d.ts +60 -0
- package/dist/profile-contract.d.ts.map +1 -0
- package/dist/profile-contract.js +535 -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 +47 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +131 -0
- package/dist/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 +1996 -0
- package/generated/mcp/tools.json +12352 -0
- package/generated/python/client.py +3877 -0
- package/generated/riffdb.application.exact.json +1 -0
- package/generated/riffdb.contract.bundle +0 -0
- package/generated/rust/client.rs +6028 -0
- package/package.json +62 -4
- package/profiles/organization-security/materialization.json +48 -0
- package/profiles/organization-security/riffdb/contract.riff +766 -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_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 +167 -0
- package/profiles/organization-security/riffdb.toml +7 -0
- package/profiles/organization-security.profile.json +954 -0
- package/riffdb/contract.riff +489 -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_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 +107 -0
- package/riffdb.application.lock.json +1 -0
- package/scripts/real-riffdb-runner.mjs +333 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { createAdapterFactory, } from "better-auth/adapters";
|
|
2
|
+
import { BETTER_AUTH_PINNED_VERSION } from "./profile.js";
|
|
3
|
+
export const RIFFDB_BETTER_AUTH_PROFILE_PLAN_SCHEMA = "riffdb.better-auth-profile-plan/v1";
|
|
4
|
+
const MAX_MODELS = 32;
|
|
5
|
+
const MAX_FIELDS_PER_MODEL = 64;
|
|
6
|
+
const SYMBOL_PATTERN = /^[A-Za-z][A-Za-z0-9_]{0,127}$/u;
|
|
7
|
+
const LINEAGE_PATTERN = /^[A-Za-z][A-Za-z0-9_.-]{0,127}$/u;
|
|
8
|
+
const STORAGE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]{0,127}$/u;
|
|
9
|
+
const SECRET_FIELD_PATTERN = /(?:accessToken|backupCodes|clientSecret|idToken|password|privateKey|refreshToken|secret|token|totp|value)$/iu;
|
|
10
|
+
const SUPPORTED_FIELD_TYPES = new Set([
|
|
11
|
+
"boolean",
|
|
12
|
+
"date",
|
|
13
|
+
"json",
|
|
14
|
+
"number",
|
|
15
|
+
"number[]",
|
|
16
|
+
"string",
|
|
17
|
+
"string[]",
|
|
18
|
+
]);
|
|
19
|
+
export class RiffDBBetterAuthProfileGenerationError extends Error {
|
|
20
|
+
code;
|
|
21
|
+
constructor(code) {
|
|
22
|
+
super(`cannot generate RiffDB Better Auth profile: ${code}`);
|
|
23
|
+
this.code = code;
|
|
24
|
+
this.name = "RiffDBBetterAuthProfileGenerationError";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function reject(code) {
|
|
28
|
+
throw new RiffDBBetterAuthProfileGenerationError(code);
|
|
29
|
+
}
|
|
30
|
+
function validateGeneratorConfig(config) {
|
|
31
|
+
const applicationRole = config.applicationRole ?? "BetterAuthServer";
|
|
32
|
+
if (!SYMBOL_PATTERN.test(config.name) ||
|
|
33
|
+
!LINEAGE_PATTERN.test(config.contractLineage) ||
|
|
34
|
+
!SYMBOL_PATTERN.test(applicationRole) ||
|
|
35
|
+
(config.output !== undefined &&
|
|
36
|
+
(config.output.length < 1 || config.output.length > 4_096 || config.output.includes("\0")))) {
|
|
37
|
+
reject("invalid_generator_configuration");
|
|
38
|
+
}
|
|
39
|
+
return Object.freeze({
|
|
40
|
+
name: config.name,
|
|
41
|
+
lineage: config.contractLineage,
|
|
42
|
+
applicationRole,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function pluginIds(options) {
|
|
46
|
+
const ids = (options.plugins ?? []).map((plugin) => plugin.id);
|
|
47
|
+
if (ids.some((id) => !SYMBOL_PATTERN.test(id.replaceAll("-", "_")))) {
|
|
48
|
+
reject("invalid_generator_configuration");
|
|
49
|
+
}
|
|
50
|
+
return Object.freeze([...new Set(ids)].sort());
|
|
51
|
+
}
|
|
52
|
+
function fieldPlan(name, attributes, models) {
|
|
53
|
+
const storageName = attributes.fieldName ?? name;
|
|
54
|
+
if (!SYMBOL_PATTERN.test(name) || !STORAGE_NAME_PATTERN.test(storageName)) {
|
|
55
|
+
reject("invalid_field_name");
|
|
56
|
+
}
|
|
57
|
+
if (!SUPPORTED_FIELD_TYPES.has(attributes.type))
|
|
58
|
+
reject("unsupported_field_type");
|
|
59
|
+
const reference = attributes.references;
|
|
60
|
+
if (reference !== undefined &&
|
|
61
|
+
(!models.has(reference.model) ||
|
|
62
|
+
!SYMBOL_PATTERN.test(reference.model) ||
|
|
63
|
+
!SYMBOL_PATTERN.test(reference.field))) {
|
|
64
|
+
reject("invalid_reference");
|
|
65
|
+
}
|
|
66
|
+
const secret = attributes.returned === false || SECRET_FIELD_PATTERN.test(name);
|
|
67
|
+
return Object.freeze({
|
|
68
|
+
name,
|
|
69
|
+
storageName,
|
|
70
|
+
type: attributes.type,
|
|
71
|
+
required: attributes.required ?? false,
|
|
72
|
+
unique: attributes.unique ?? false,
|
|
73
|
+
indexed: attributes.index ?? false,
|
|
74
|
+
secret,
|
|
75
|
+
input: attributes.input !== false,
|
|
76
|
+
returned: attributes.returned !== false,
|
|
77
|
+
hasDefault: attributes.defaultValue !== undefined,
|
|
78
|
+
hasOnUpdate: attributes.onUpdate !== undefined,
|
|
79
|
+
...(reference === undefined
|
|
80
|
+
? {}
|
|
81
|
+
: {
|
|
82
|
+
reference: Object.freeze({
|
|
83
|
+
model: reference.model,
|
|
84
|
+
field: reference.field,
|
|
85
|
+
...(reference.onDelete === undefined ? {} : { onDelete: reference.onDelete }),
|
|
86
|
+
}),
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
export function defineRiffDBBetterAuthProfilePlan(options, tables, config) {
|
|
91
|
+
const checked = validateGeneratorConfig(config);
|
|
92
|
+
if (options.advanced?.database?.generateId !== "uuid") {
|
|
93
|
+
reject("unsupported_id_generation");
|
|
94
|
+
}
|
|
95
|
+
const modelEntries = Object.entries(tables).sort(([left], [right]) => left.localeCompare(right));
|
|
96
|
+
if (modelEntries.length < 1 || modelEntries.length > MAX_MODELS) {
|
|
97
|
+
reject("profile_model_bound_exceeded");
|
|
98
|
+
}
|
|
99
|
+
const modelNames = new Set(modelEntries.map(([name]) => name));
|
|
100
|
+
const models = modelEntries.map(([name, table]) => {
|
|
101
|
+
const storageName = table.modelName;
|
|
102
|
+
if (!SYMBOL_PATTERN.test(name) || !STORAGE_NAME_PATTERN.test(storageName)) {
|
|
103
|
+
reject("invalid_model_name");
|
|
104
|
+
}
|
|
105
|
+
const fields = Object.entries(table.fields).sort(([left], [right]) => left.localeCompare(right));
|
|
106
|
+
if (fields.length < 1 || fields.length > MAX_FIELDS_PER_MODEL) {
|
|
107
|
+
reject("profile_field_bound_exceeded");
|
|
108
|
+
}
|
|
109
|
+
return Object.freeze({
|
|
110
|
+
name,
|
|
111
|
+
storageName,
|
|
112
|
+
fields: Object.freeze(fields.map(([field, attributes]) => fieldPlan(field, attributes, modelNames))),
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
return Object.freeze({
|
|
116
|
+
schema: RIFFDB_BETTER_AUTH_PROFILE_PLAN_SCHEMA,
|
|
117
|
+
betterAuthVersion: BETTER_AUTH_PINNED_VERSION,
|
|
118
|
+
idGeneration: "uuid",
|
|
119
|
+
name: checked.name,
|
|
120
|
+
contract: Object.freeze({
|
|
121
|
+
lineage: checked.lineage,
|
|
122
|
+
applicationRole: checked.applicationRole,
|
|
123
|
+
}),
|
|
124
|
+
plugins: pluginIds(options),
|
|
125
|
+
models: Object.freeze(models),
|
|
126
|
+
bounds: Object.freeze({
|
|
127
|
+
maximumModels: MAX_MODELS,
|
|
128
|
+
maximumFieldsPerModel: MAX_FIELDS_PER_MODEL,
|
|
129
|
+
}),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
export function renderRiffDBBetterAuthProfilePlan(plan) {
|
|
133
|
+
return `${JSON.stringify(plan, null, 2)}\n`;
|
|
134
|
+
}
|
|
135
|
+
function generationOnlyFailure() {
|
|
136
|
+
throw new RiffDBBetterAuthProfileGenerationError("generation_only_runtime_call");
|
|
137
|
+
}
|
|
138
|
+
function generationOnlyAdapter(options, config) {
|
|
139
|
+
const fail = async () => generationOnlyFailure();
|
|
140
|
+
return {
|
|
141
|
+
create: fail,
|
|
142
|
+
update: fail,
|
|
143
|
+
updateMany: fail,
|
|
144
|
+
findOne: fail,
|
|
145
|
+
findMany: fail,
|
|
146
|
+
delete: fail,
|
|
147
|
+
deleteMany: fail,
|
|
148
|
+
consumeOne: fail,
|
|
149
|
+
incrementOne: fail,
|
|
150
|
+
count: fail,
|
|
151
|
+
createSchema: async ({ file, tables }) => ({
|
|
152
|
+
code: renderRiffDBBetterAuthProfilePlan(defineRiffDBBetterAuthProfilePlan(options, tables, config)),
|
|
153
|
+
path: file ?? config.output ?? "riffdb/better-auth.profile.json",
|
|
154
|
+
overwrite: true,
|
|
155
|
+
}),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Generation-only Better Auth adapter used by `better-auth generate`.
|
|
160
|
+
*
|
|
161
|
+
* It resolves the complete configured Better Auth schema without requiring a
|
|
162
|
+
* live RiffDB driver. Runtime methods always fail; the resulting reviewed plan
|
|
163
|
+
* is input to the compiled-profile materializer, never a generic CRUD schema.
|
|
164
|
+
*/
|
|
165
|
+
export function riffdbProfileAdapter(config) {
|
|
166
|
+
validateGeneratorConfig(config);
|
|
167
|
+
return createAdapterFactory({
|
|
168
|
+
config: {
|
|
169
|
+
adapterId: "riffdb-profile-generator",
|
|
170
|
+
adapterName: "RiffDB Better Auth Profile Generator",
|
|
171
|
+
supportsNumericIds: false,
|
|
172
|
+
supportsUUIDs: false,
|
|
173
|
+
supportsJSON: true,
|
|
174
|
+
supportsArrays: true,
|
|
175
|
+
transaction: false,
|
|
176
|
+
},
|
|
177
|
+
adapter: ({ options }) => generationOnlyAdapter(options, config),
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=profile-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-plan.js","sourceRoot":"","sources":["../src/profile-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const BETTER_AUTH_PINNED_VERSION: "1.6.29";
|
|
2
|
+
export declare const RIFFDB_BETTER_AUTH_PROFILE_SCHEMA: "riffdb.better-auth-core-profile/v1";
|
|
3
|
+
export declare const BETTER_AUTH_CORE_MODELS: readonly ["user", "session", "account", "verification"];
|
|
4
|
+
export type BetterAuthCoreModel = (typeof BETTER_AUTH_CORE_MODELS)[number];
|
|
5
|
+
export declare const BETTER_AUTH_CORE_FIELDS: {
|
|
6
|
+
readonly user: readonly ["id", "name", "email", "emailVerified", "image", "createdAt", "updatedAt"];
|
|
7
|
+
readonly session: readonly ["id", "userId", "token", "expiresAt", "ipAddress", "userAgent", "createdAt", "updatedAt"];
|
|
8
|
+
readonly account: readonly ["id", "userId", "accountId", "providerId", "accessToken", "refreshToken", "accessTokenExpiresAt", "refreshTokenExpiresAt", "scope", "idToken", "password", "createdAt", "updatedAt"];
|
|
9
|
+
readonly verification: readonly ["id", "identifier", "value", "expiresAt", "createdAt", "updatedAt"];
|
|
10
|
+
};
|
|
11
|
+
export interface BetterAuthModelShape {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly fields: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
export interface RiffDBContractIdentity {
|
|
16
|
+
readonly lineage: string;
|
|
17
|
+
readonly version: number;
|
|
18
|
+
readonly bundleHash: string;
|
|
19
|
+
readonly applicationRole: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RiffDBBetterAuthCoreProfileInput {
|
|
22
|
+
readonly schema: typeof RIFFDB_BETTER_AUTH_PROFILE_SCHEMA;
|
|
23
|
+
readonly betterAuthVersion: string;
|
|
24
|
+
readonly idGeneration: "uuid" | "default" | "serial";
|
|
25
|
+
readonly plugins?: readonly string[];
|
|
26
|
+
readonly models: readonly BetterAuthModelShape[];
|
|
27
|
+
readonly contract: RiffDBContractIdentity;
|
|
28
|
+
}
|
|
29
|
+
export interface RiffDBBetterAuthCoreProfile {
|
|
30
|
+
readonly schema: typeof RIFFDB_BETTER_AUTH_PROFILE_SCHEMA;
|
|
31
|
+
readonly betterAuthVersion: typeof BETTER_AUTH_PINNED_VERSION;
|
|
32
|
+
readonly idGeneration: "uuid";
|
|
33
|
+
readonly plugins: readonly [];
|
|
34
|
+
readonly models: Readonly<Record<BetterAuthCoreModel, {
|
|
35
|
+
readonly name: BetterAuthCoreModel;
|
|
36
|
+
readonly fields: readonly string[];
|
|
37
|
+
}>>;
|
|
38
|
+
readonly contract: Readonly<RiffDBContractIdentity>;
|
|
39
|
+
}
|
|
40
|
+
export type UnsupportedBetterAuthProfileCode = "invalid_profile_schema" | "unsupported_better_auth_version" | "unsupported_id_generation" | "unsupported_plugin" | "invalid_model_inventory" | "unsupported_model" | "unsupported_field_shape" | "invalid_contract_identity";
|
|
41
|
+
export declare class UnsupportedBetterAuthProfileError extends Error {
|
|
42
|
+
readonly code: UnsupportedBetterAuthProfileCode;
|
|
43
|
+
constructor(code: UnsupportedBetterAuthProfileCode);
|
|
44
|
+
}
|
|
45
|
+
/** Validates the exact compiled Better Auth core profile. */
|
|
46
|
+
export declare function defineRiffDBBetterAuthCoreProfile(input: RiffDBBetterAuthCoreProfileInput): RiffDBBetterAuthCoreProfile;
|
|
47
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,EAAG,QAAiB,CAAC;AAC5D,eAAO,MAAM,iCAAiC,EAC5C,oCAA6C,CAAC;AAEhD,eAAO,MAAM,uBAAuB,YAClC,MAAM,EACN,SAAS,EACT,SAAS,EACT,cAAc,CACN,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,eAAO,MAAM,uBAAuB;;;;;CA2CyC,CAAC;AAM9E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,OAAO,iCAAiC,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,iCAAiC,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,OAAO,0BAA0B,CAAC;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CACvB,MAAM,CAAC,mBAAmB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CACxG,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,gCAAgC,GACxC,wBAAwB,GACxB,iCAAiC,GACjC,2BAA2B,GAC3B,oBAAoB,GACpB,yBAAyB,GACzB,mBAAmB,GACnB,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,qBAAa,iCAAkC,SAAQ,KAAK;IAC1D,SAAgB,IAAI,EAAE,gCAAgC,CAAC;IAEvD,YAAmB,IAAI,EAAE,gCAAgC,EAIxD;CACF;AAkCD,6DAA6D;AAC7D,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,gCAAgC,GACtC,2BAA2B,CAgD7B"}
|
package/dist/profile.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export const BETTER_AUTH_PINNED_VERSION = "1.6.29";
|
|
2
|
+
export const RIFFDB_BETTER_AUTH_PROFILE_SCHEMA = "riffdb.better-auth-core-profile/v1";
|
|
3
|
+
export const BETTER_AUTH_CORE_MODELS = [
|
|
4
|
+
"user",
|
|
5
|
+
"session",
|
|
6
|
+
"account",
|
|
7
|
+
"verification",
|
|
8
|
+
];
|
|
9
|
+
export const BETTER_AUTH_CORE_FIELDS = {
|
|
10
|
+
user: [
|
|
11
|
+
"id",
|
|
12
|
+
"name",
|
|
13
|
+
"email",
|
|
14
|
+
"emailVerified",
|
|
15
|
+
"image",
|
|
16
|
+
"createdAt",
|
|
17
|
+
"updatedAt",
|
|
18
|
+
],
|
|
19
|
+
session: [
|
|
20
|
+
"id",
|
|
21
|
+
"userId",
|
|
22
|
+
"token",
|
|
23
|
+
"expiresAt",
|
|
24
|
+
"ipAddress",
|
|
25
|
+
"userAgent",
|
|
26
|
+
"createdAt",
|
|
27
|
+
"updatedAt",
|
|
28
|
+
],
|
|
29
|
+
account: [
|
|
30
|
+
"id",
|
|
31
|
+
"userId",
|
|
32
|
+
"accountId",
|
|
33
|
+
"providerId",
|
|
34
|
+
"accessToken",
|
|
35
|
+
"refreshToken",
|
|
36
|
+
"accessTokenExpiresAt",
|
|
37
|
+
"refreshTokenExpiresAt",
|
|
38
|
+
"scope",
|
|
39
|
+
"idToken",
|
|
40
|
+
"password",
|
|
41
|
+
"createdAt",
|
|
42
|
+
"updatedAt",
|
|
43
|
+
],
|
|
44
|
+
verification: [
|
|
45
|
+
"id",
|
|
46
|
+
"identifier",
|
|
47
|
+
"value",
|
|
48
|
+
"expiresAt",
|
|
49
|
+
"createdAt",
|
|
50
|
+
"updatedAt",
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
const HASH_PATTERN = /^[0-9a-f]{64}$/u;
|
|
54
|
+
const LINEAGE_PATTERN = /^[A-Za-z][A-Za-z0-9_.-]{0,127}$/u;
|
|
55
|
+
const SYMBOL_PATTERN = /^[A-Za-z][A-Za-z0-9_]{0,127}$/u;
|
|
56
|
+
export class UnsupportedBetterAuthProfileError extends Error {
|
|
57
|
+
code;
|
|
58
|
+
constructor(code) {
|
|
59
|
+
super(`unsupported Better Auth profile: ${code}`);
|
|
60
|
+
this.name = "UnsupportedBetterAuthProfileError";
|
|
61
|
+
this.code = code;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function reject(code) {
|
|
65
|
+
throw new UnsupportedBetterAuthProfileError(code);
|
|
66
|
+
}
|
|
67
|
+
function exactFields(model, fields) {
|
|
68
|
+
const expected = [...BETTER_AUTH_CORE_FIELDS[model]].sort();
|
|
69
|
+
const actual = [...fields].sort();
|
|
70
|
+
if (actual.length !== expected.length ||
|
|
71
|
+
new Set(actual).size !== actual.length ||
|
|
72
|
+
actual.some((field, index) => field !== expected[index])) {
|
|
73
|
+
reject("unsupported_field_shape");
|
|
74
|
+
}
|
|
75
|
+
return Object.freeze([...BETTER_AUTH_CORE_FIELDS[model]]);
|
|
76
|
+
}
|
|
77
|
+
function validateContractIdentity(contract) {
|
|
78
|
+
if (!LINEAGE_PATTERN.test(contract.lineage) ||
|
|
79
|
+
!Number.isSafeInteger(contract.version) ||
|
|
80
|
+
contract.version < 1 ||
|
|
81
|
+
!HASH_PATTERN.test(contract.bundleHash) ||
|
|
82
|
+
!SYMBOL_PATTERN.test(contract.applicationRole)) {
|
|
83
|
+
reject("invalid_contract_identity");
|
|
84
|
+
}
|
|
85
|
+
return Object.freeze({ ...contract });
|
|
86
|
+
}
|
|
87
|
+
/** Validates the exact compiled Better Auth core profile. */
|
|
88
|
+
export function defineRiffDBBetterAuthCoreProfile(input) {
|
|
89
|
+
if (input.schema !== RIFFDB_BETTER_AUTH_PROFILE_SCHEMA) {
|
|
90
|
+
reject("invalid_profile_schema");
|
|
91
|
+
}
|
|
92
|
+
if (input.betterAuthVersion !== BETTER_AUTH_PINNED_VERSION) {
|
|
93
|
+
reject("unsupported_better_auth_version");
|
|
94
|
+
}
|
|
95
|
+
if (input.idGeneration !== "uuid") {
|
|
96
|
+
reject("unsupported_id_generation");
|
|
97
|
+
}
|
|
98
|
+
if ((input.plugins?.length ?? 0) !== 0) {
|
|
99
|
+
reject("unsupported_plugin");
|
|
100
|
+
}
|
|
101
|
+
if (input.models.length !== BETTER_AUTH_CORE_MODELS.length) {
|
|
102
|
+
reject("invalid_model_inventory");
|
|
103
|
+
}
|
|
104
|
+
const supplied = new Map();
|
|
105
|
+
for (const model of input.models) {
|
|
106
|
+
if (supplied.has(model.name)) {
|
|
107
|
+
reject("invalid_model_inventory");
|
|
108
|
+
}
|
|
109
|
+
supplied.set(model.name, model);
|
|
110
|
+
}
|
|
111
|
+
const models = {};
|
|
112
|
+
for (const name of BETTER_AUTH_CORE_MODELS) {
|
|
113
|
+
const model = supplied.get(name);
|
|
114
|
+
if (model === undefined) {
|
|
115
|
+
reject("unsupported_model");
|
|
116
|
+
}
|
|
117
|
+
models[name] = Object.freeze({ name, fields: exactFields(name, model.fields) });
|
|
118
|
+
}
|
|
119
|
+
if ([...supplied].some(([name]) => !BETTER_AUTH_CORE_MODELS.includes(name))) {
|
|
120
|
+
reject("unsupported_model");
|
|
121
|
+
}
|
|
122
|
+
return Object.freeze({
|
|
123
|
+
schema: RIFFDB_BETTER_AUTH_PROFILE_SCHEMA,
|
|
124
|
+
betterAuthVersion: BETTER_AUTH_PINNED_VERSION,
|
|
125
|
+
idGeneration: "uuid",
|
|
126
|
+
plugins: Object.freeze([]),
|
|
127
|
+
models: Object.freeze(models),
|
|
128
|
+
contract: validateContractIdentity(input.contract),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAC5D,MAAM,CAAC,MAAM,iCAAiC,GAC5C,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM;IACN,SAAS;IACT,SAAS;IACT,cAAc;CACN,CAAC;AAIX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE;QACJ,IAAI;QACJ,MAAM;QACN,OAAO;QACP,eAAe;QACf,OAAO;QACP,WAAW;QACX,WAAW;KACZ;IACD,OAAO,EAAE;QACP,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;KACZ;IACD,OAAO,EAAE;QACP,IAAI;QACJ,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,aAAa;QACb,cAAc;QACd,sBAAsB;QACtB,uBAAuB;QACvB,OAAO;QACP,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW;KACZ;IACD,YAAY,EAAE;QACZ,IAAI;QACJ,YAAY;QACZ,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;KACZ;CAC0E,CAAC;AAE9E,MAAM,YAAY,GAAG,iBAAiB,CAAC;AACvC,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAC3D,MAAM,cAAc,GAAG,gCAAgC,CAAC;AA4CxD,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IAC1C,IAAI,CAAmC;IAEvD,YAAmB,IAAsC;QACvD,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,SAAS,MAAM,CAAC,IAAsC;IACpD,MAAM,IAAI,iCAAiC,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,KAA0B,EAAE,MAAyB;IACxE,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,IACE,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACjC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;QACtC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EACxD,CAAC;QACD,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAgC;IAEhC,IACE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,QAAQ,CAAC,OAAO,GAAG,CAAC;QACpB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACvC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAC9C,CAAC;QACD,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iCAAiC,CAC/C,KAAuC;IAEvC,IAAI,KAAK,CAAC,MAAM,KAAK,iCAAiC,EAAE,CAAC;QACvD,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,KAAK,0BAA0B,EAAE,CAAC;QAC3D,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,uBAAuB,CAAC,MAAM,EAAE,CAAC;QAC3D,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACpC,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,EAGd,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAA2B,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,iCAAiC;QACzC,iBAAiB,EAAE,0BAA0B;QAC7C,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAgB;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,QAAQ,EAAE,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC;KACnD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DBAdapterDebugLogOption } from "better-auth/adapters";
|
|
2
|
+
import { type ApplicationTransport } from "./generated/client.js";
|
|
3
|
+
export interface RiffDBBetterAuthTestingAdapterConfig {
|
|
4
|
+
readonly transport: ApplicationTransport;
|
|
5
|
+
readonly organizationId: string;
|
|
6
|
+
readonly commandAttemptBudget?: number;
|
|
7
|
+
readonly debugLogs?: DBAdapterDebugLogOption;
|
|
8
|
+
readonly resetModel: (model: string) => number | Promise<number>;
|
|
9
|
+
}
|
|
10
|
+
export declare function riffdbAdapterForTesting(config: RiffDBBetterAuthTestingAdapterConfig): import("better-auth/adapters").AdapterFactory<import("better-auth").BetterAuthOptions>;
|
|
11
|
+
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oCAAoC,0FAQnF"}
|
package/dist/testing.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { buildRiffDBBetterAuthAdapter } from "./adapter.js";
|
|
2
|
+
import { RiffDBBetterAuthCoreClient, } from "./generated/client.js";
|
|
3
|
+
export function riffdbAdapterForTesting(config) {
|
|
4
|
+
const commandAttemptBudget = config.commandAttemptBudget ?? 1;
|
|
5
|
+
return buildRiffDBBetterAuthAdapter({
|
|
6
|
+
client: new RiffDBBetterAuthCoreClient(config.transport, commandAttemptBudget),
|
|
7
|
+
organizationId: config.organizationId,
|
|
8
|
+
resetModelForTesting: config.resetModel,
|
|
9
|
+
...(config.debugLogs === undefined ? {} : { debugLogs: config.debugLogs }),
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=testing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EACL,0BAA0B,GAE3B,MAAM,uBAAuB,CAAC;AAU/B,MAAM,UAAU,uBAAuB,CAAC,MAA4C;IAClF,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAC9D,OAAO,4BAA4B,CAAC;QAClC,MAAM,EAAE,IAAI,0BAA0B,CAAC,MAAM,CAAC,SAAS,EAAE,oBAAoB,CAAC;QAC9E,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,oBAAoB,EAAE,MAAM,CAAC,UAAU;QACvC,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;KAC3E,CAAC,CAAC;AACL,CAAC"}
|