-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathmodule.ts
44 lines (37 loc) · 988 Bytes
/
module.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import type { Module } from '@nuxt/types'
import defu from 'defu'
export type { NuxtStorage } from './types'
const defaults = {
vuex: {
namespace: 'storage'
},
cookie: {
prefix: '',
options: {
path: '/'
}
},
localStorage: {
prefix: ''
},
ignoreExceptions: false
}
type DeepPartial<T> = { [P in keyof T]?: DeepPartial<T[P]>; }
export type Options = typeof defaults
export type Config = DeepPartial<Options>
declare module '@nuxt/types' {
interface Configuration {
storage?: Config
}
}
export default <Module<Config>> function module (moduleOptions) {
const { nuxt } = this
const options: DeepPartial<Options> = defu(moduleOptions, { ...this.options.storage }, defaults)
this.addPlugin({
src: require.resolve('./runtime/plugin'),
fileName: 'storage.js',
options
})
nuxt.options.alias['~storage'] = require.resolve('./runtime/storage')
nuxt.options.build.transpile.push(__dirname, '@nuxtjs/universal-storage')
}