UNPKG

@kikiutils/nitro-session

Version:
1 lines 7.16 kB
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { consola } from 'consola';\nimport type { H3Event } from 'h3';\nimport {\n cloneDeep,\n merge,\n} from 'lodash-es';\n\nimport {\n cachedHandlers,\n defaultOptions,\n} from './constants';\nimport { DataHandler } from './handlers/data';\nimport { CookieTokenHandler } from './handlers/token/cookie';\nimport { HeaderTokenHandler } from './handlers/token/header';\nimport type { NitroApp } from './types/nitro';\nimport type { PluginOptions } from './types/options';\nimport type { PartialH3EventContextSession } from './types/session';\nimport { setupH3EventContextSession } from './utils';\n\nexport type {} from './types/h3';\nexport type {} from './types/nitro';\nexport type * from './types/session';\n\n// eslint-disable-next-line import/no-mutable-exports\nexport let processResponseEvent: (event: H3Event) => Promise<void>;\n\nasync function createHandlers(options: Required<PluginOptions>) {\n const dataHandler = await DataHandler.createInstance(options);\n let tokenHandler;\n if (options.storage?.token?.driver === 'cookie') {\n tokenHandler = new CookieTokenHandler(options.storage.token.options, options.maxAge);\n } else if (options.storage?.token?.driver === 'header') {\n tokenHandler = new HeaderTokenHandler(options.storage?.token?.options);\n } else throw new Error('Invalid token storage driver');\n return {\n dataHandler,\n tokenHandler,\n };\n}\n\nexport async function initialization(framework: 'Nitro' | 'Nuxt', options?: PluginOptions) {\n consola.info(`Initializing ${framework} session...`);\n const pluginOptions = merge(cloneDeep(defaultOptions), options);\n if (!pluginOptions.enabled) return consola.info(`${framework} session disabled.`);\n consola.info(`${framework} session configured data with '${pluginOptions.storage.data.driver}' driver.`);\n consola.info(`${framework} session configured token with '${pluginOptions.storage.token.driver}' driver.`);\n const handlers = await createHandlers(pluginOptions);\n return {\n handlers,\n pluginOptions,\n };\n}\n\nexport async function nitroSession(nitroApp: NitroApp, options?: PluginOptions) {\n const initializationResult = await initialization('Nitro', options);\n if (!initializationResult) return;\n await registerHooksAndSetupCachedHandlers(\n nitroApp,\n initializationResult.pluginOptions,\n false,\n initializationResult.handlers,\n );\n\n consola.success('Nitro session initialization successful.');\n}\n\nexport async function registerHooksAndSetupCachedHandlers(\n nitroApp: NitroApp,\n options: Required<PluginOptions>,\n onlyApi?: boolean,\n handlers?: { dataHandler: DataHandler; tokenHandler: CookieTokenHandler | HeaderTokenHandler },\n) {\n if (!handlers) handlers = await createHandlers(options);\n cachedHandlers.data = handlers.dataHandler;\n processResponseEvent = async (event) => {\n if (!event.context._nitroSessionChanged || (onlyApi && !event.path.startsWith('/api'))) return;\n if (event.context._nitroSessionCleared) {\n const token = handlers.tokenHandler.get(event);\n if (token) await handlers.dataHandler.delete(token);\n handlers.tokenHandler.delete(event);\n } else {\n const token = await handlers.dataHandler.setAndGetToken(event, event.context.session);\n if (token) handlers.tokenHandler.set(event, token);\n }\n };\n\n nitroApp.hooks.hook('beforeResponse', processResponseEvent);\n // nitroApp.hooks.hook('error', async (_, { event }) => {\n // event && options.persistSessionOnError && await processResponseEvent(event);\n // });\n\n nitroApp.hooks.hook('request', async (event) => {\n if (onlyApi && !event.path.startsWith('/api')) return;\n const token = handlers.tokenHandler.get(event);\n let sessionData: PartialH3EventContextSession | undefined;\n if (token) {\n sessionData = await handlers.dataHandler.get(event, token);\n if (!sessionData) {\n await handlers.dataHandler.delete(token);\n handlers.tokenHandler.delete(event);\n }\n }\n\n setupH3EventContextSession(event, sessionData || {});\n });\n}\n"],"names":[],"mappings":"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"}