@kikiutils/nitro-session
Version:
Easy-to-use nitro session.
62 lines (59 loc) • 2.2 kB
JavaScript
import { consola } from 'consola';
import { nanoid } from 'nanoid';
import { createStorage, prefixStorage } from 'unstorage';
import { importModule } from '../../utils.mjs';
class UnstorageDataHandler {
constructor(keyLength, storage) {
this.
this.
}
static async createInstance(options) {
const keyLength = options?.key?.length || 24;
if (keyLength < 24)
throw new Error('The unstorage key length must be 24 or more');
let storage;
if (!options?.driver || options?.driver === 'memory') {
storage = createStorage({ driver: (await importModule('unstorage/drivers/memory'))() });
}
else {
try {
const driver = await importModule(`unstorage/drivers/${options.driver}`);
storage = prefixStorage(createStorage({ driver: driver(options.options) }), options.key?.prefix || 'session');
}
catch (error) {
consola.error(error);
// eslint-disable-next-line style/max-len
throw new Error(`Failed to import or create unstorage driver '${options.driver}', please check if the relevant dependency is installed and the driver is supported and set the correct options.`);
}
}
return new this(keyLength, storage);
}
delete(key) {
return this.
}
async get(event, key) {
try {
const data = await this.
if (data)
event.context._nitroSessionUnstorageKey = key;
return data;
}
catch (error) {
consola.error(error);
}
}
async setOrProcessAndGetToken(event, data) {
try {
const key = event.context._nitroSessionUnstorageKey ||= nanoid(this.
await this.
return key;
}
catch (error) {
consola.error(error);
}
}
}
export { UnstorageDataHandler };
//# sourceMappingURL=unstorage.mjs.map