better-auth
Version:
The most comprehensive authentication framework for TypeScript.
130 lines (128 loc) • 2.04 kB
JavaScript
import { parseJSON } from "../../client/parser.mjs";
//#region src/plugins/api-key/schema.ts
const apiKeySchema = ({ timeWindow, rateLimitMax }) => ({ apikey: { fields: {
name: {
type: "string",
required: false,
input: false
},
start: {
type: "string",
required: false,
input: false
},
prefix: {
type: "string",
required: false,
input: false
},
key: {
type: "string",
required: true,
input: false,
index: true
},
userId: {
type: "string",
references: {
model: "user",
field: "id",
onDelete: "cascade"
},
required: true,
input: false,
index: true
},
refillInterval: {
type: "number",
required: false,
input: false
},
refillAmount: {
type: "number",
required: false,
input: false
},
lastRefillAt: {
type: "date",
required: false,
input: false
},
enabled: {
type: "boolean",
required: false,
input: false,
defaultValue: true
},
rateLimitEnabled: {
type: "boolean",
required: false,
input: false,
defaultValue: true
},
rateLimitTimeWindow: {
type: "number",
required: false,
input: false,
defaultValue: timeWindow
},
rateLimitMax: {
type: "number",
required: false,
input: false,
defaultValue: rateLimitMax
},
requestCount: {
type: "number",
required: false,
input: false,
defaultValue: 0
},
remaining: {
type: "number",
required: false,
input: false
},
lastRequest: {
type: "date",
required: false,
input: false
},
expiresAt: {
type: "date",
required: false,
input: false
},
createdAt: {
type: "date",
required: true,
input: false
},
updatedAt: {
type: "date",
required: true,
input: false
},
permissions: {
type: "string",
required: false,
input: false
},
metadata: {
type: "string",
required: false,
input: true,
transform: {
input(value) {
return JSON.stringify(value);
},
output(value) {
if (!value) return null;
return parseJSON(value);
}
}
}
} } });
//#endregion
export { apiKeySchema };
//# sourceMappingURL=schema.mjs.map