From 9aa28ec583cd2842e12b84dabb14d7a35f510f6b Mon Sep 17 00:00:00 2001 From: justintaddei Date: Thu, 27 Jun 2024 00:48:57 -0600 Subject: [PATCH] fix: nuxt3 typescript support in nuxt.config.ts --- nuxt/index.d.ts | 18 ++++++++++++++++++ nuxt/index.js | 13 ------------- nuxt/index.ts | 25 +++++++++++++++++++++++++ nuxt/meta.json | 8 -------- nuxt/runtime/{plugin.js => plugin.ts} | 6 ++---- package.json | 4 ++-- 6 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 nuxt/index.d.ts delete mode 100644 nuxt/index.js create mode 100644 nuxt/index.ts delete mode 100644 nuxt/meta.json rename nuxt/runtime/{plugin.js => plugin.ts} (75%) diff --git a/nuxt/index.d.ts b/nuxt/index.d.ts new file mode 100644 index 0000000..2cbc906 --- /dev/null +++ b/nuxt/index.d.ts @@ -0,0 +1,18 @@ +import { NuxtModule, ModuleOptions } from '@nuxt/schema'; + +interface VWaveModuleOptions extends ModuleOptions { + randomProp: string; +} +declare const module: NuxtModule; + +declare module '@nuxt/schema' { + interface NuxtConfig { ['vWave']?: NuxtModule } + interface NuxtOptions { ['vWave']?: VWaveModuleOptions } +} + +declare module 'nuxt/schema' { + interface NuxtConfig { ['vWave']?: NuxtModule } + interface NuxtOptions { ['vWave']?: VWaveModuleOptions } +} + +export { VWaveModuleOptions, module as default }; diff --git a/nuxt/index.js b/nuxt/index.js deleted file mode 100644 index 6f4f6fd..0000000 --- a/nuxt/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import { defineNuxtModule, addPlugin, createResolver } from '@nuxt/kit' -import config from './meta.json' - -export default defineNuxtModule({ - meta: config, - setup(options, nuxt) { - const { resolve } = createResolver(import.meta.url) - - nuxt.options.runtimeConfig.public.vWave = options - - addPlugin(resolve('./runtime/plugin.js')) - } -}) diff --git a/nuxt/index.ts b/nuxt/index.ts new file mode 100644 index 0000000..ee9b0a6 --- /dev/null +++ b/nuxt/index.ts @@ -0,0 +1,25 @@ +import { defineNuxtModule, addPlugin, createResolver } from '@nuxt/kit' +import type { IVWavePluginOptions } from '../src/options' + +type ModuleOptions = Partial + +export default defineNuxtModule({ + meta: { + name: 'v-wave', + configKey: 'vWave', + compatibility: { + nuxt: '^3.0.0', + bridge: true + } + }, + defaults: { + directive: "wave" + }, + setup(options, nuxt) { + const { resolve } = createResolver(import.meta.url) + + nuxt.options.runtimeConfig.public.vWave = options + + addPlugin(resolve('./runtime/plugin.ts')) + } +}) diff --git a/nuxt/meta.json b/nuxt/meta.json deleted file mode 100644 index 37a4895..0000000 --- a/nuxt/meta.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "v-wave", - "configKey": "vWave", - "compatibility": { - "nuxt": "^3.0.0", - "bridge": true - } -} diff --git a/nuxt/runtime/plugin.js b/nuxt/runtime/plugin.ts similarity index 75% rename from nuxt/runtime/plugin.js rename to nuxt/runtime/plugin.ts index c84d068..4039903 100644 --- a/nuxt/runtime/plugin.js +++ b/nuxt/runtime/plugin.ts @@ -4,18 +4,16 @@ import { defineNuxtPlugin, useRuntimeConfig } from '#imports' export default defineNuxtPlugin((app) => { const options = useRuntimeConfig().public.vWave - const directive = options.directive || 'wave' - const { vWave, vWaveTrigger } = VWave.createLocalWaveDirective(options, app.vueApp) - app.vueApp.directive(directive, { + app.vueApp.directive(options.directive, { ...vWave, getSSRProps() { return {} } }) - app.vueApp.directive(`${directive}-trigger`, { + app.vueApp.directive(`${options.directive}-trigger`, { ...vWaveTrigger, getSSRProps() { return {} diff --git a/package.json b/package.json index ddf3381..f348b8c 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "description": "The material-ripple directive for Vue that actually works", "author": "Justin Taddei (https://justintaddei.com/)", "type": "module", - "main": "dist/index.js", - "module": "dist/index.mjs", + "main": "dist/index.cjs", + "module": "dist/index.js", "types": "dist/index.d.ts", "unpkg": "dist/index.global.js", "files": ["dist/**/*", "nuxt/**/*"],