eigent/package/@stackframe/stack-shared/dist/esm/interface/crud/sessions.js

62 lines
2 KiB
JavaScript

// src/interface/crud/sessions.ts
import { createCrud } from "../../crud";
import { yupBoolean, yupMixed, yupNumber, yupObject, yupString } from "../../schema-fields";
import { geoInfoSchema } from "../../utils/geo";
var sessionsCrudServerCreateSchema = yupObject({
user_id: yupString().uuid().defined(),
expires_in_millis: yupNumber().max(1e3 * 60 * 60 * 24 * 367).default(1e3 * 60 * 60 * 24 * 365),
is_impersonation: yupBoolean().default(false)
}).defined();
var sessionsCreateOutputSchema = yupObject({
refresh_token: yupString().defined(),
access_token: yupString().defined()
}).defined();
var sessionsCrudReadSchema = yupObject({
id: yupString().defined(),
user_id: yupString().uuid().defined(),
created_at: yupNumber().defined(),
is_impersonation: yupBoolean().defined(),
last_used_at: yupNumber().optional(),
is_current_session: yupBoolean(),
// TODO move this to a shared type
// TODO: what about if not trusted?
last_used_at_end_user_ip_info: geoInfoSchema.optional()
}).defined();
var sessionsCrudDeleteSchema = yupMixed();
var sessionsCrud = createCrud({
// serverCreateSchema: sessionsCrudServerCreateSchema,
serverReadSchema: sessionsCrudReadSchema,
serverDeleteSchema: sessionsCrudDeleteSchema,
clientReadSchema: sessionsCrudReadSchema,
clientDeleteSchema: sessionsCrudDeleteSchema,
docs: {
serverList: {
summary: "List sessions",
description: "List all sessions for the current user.",
tags: ["Sessions"]
},
serverDelete: {
summary: "Delete session",
description: "Delete a session by ID.",
tags: ["Sessions"]
},
clientList: {
summary: "List sessions",
description: "List all sessions for the current user.",
tags: ["Sessions"]
},
clientDelete: {
summary: "Delete session",
description: "Delete a session by ID.",
tags: ["Sessions"]
}
}
});
export {
sessionsCreateOutputSchema,
sessionsCrud,
sessionsCrudDeleteSchema,
sessionsCrudReadSchema,
sessionsCrudServerCreateSchema
};
//# sourceMappingURL=sessions.js.map