From 462dc2801c4fc169589b67de736df15d4d79cb88 Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Sun, 18 Feb 2024 13:02:15 +0100 Subject: [PATCH 01/11] chore: bump versions --- package.json | 4 ++-- pnpm-lock.yaml | 35 +++++++++++++++++------------------ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 4b04fbd..421dab5 100644 --- a/package.json +++ b/package.json @@ -50,13 +50,13 @@ }, "dependencies": { "@nuxt/kit": "^3.10.0", - "@vue-email/compiler": "^0.8.12", + "@vue-email/compiler": "^0.8.13", "defu": "^6.1.4", "destr": "^2.0.2", "json5": "^2.2.3", "sirv": "^2.0.4", "vue-component-meta": "^1.8.27", - "vue-email": "^0.8.8" + "vue-email": "^0.8.9" }, "devDependencies": { "@antfu/eslint-config": "^2.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 753ebce..a8745ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^3.10.0 version: 3.10.0(rollup@3.29.4) '@vue-email/compiler': - specifier: ^0.8.12 - version: 0.8.12(typescript@5.3.3)(vue@3.4.15) + specifier: ^0.8.13 + version: 0.8.13(typescript@5.3.3)(vue@3.4.15) defu: specifier: ^6.1.4 version: 6.1.4 @@ -30,8 +30,8 @@ importers: specifier: ^1.8.27 version: 1.8.27(typescript@5.3.3) vue-email: - specifier: ^0.8.8 - version: 0.8.8(typescript@5.3.3)(vue@3.4.15) + specifier: ^0.8.9 + version: 0.8.9(typescript@5.3.3)(vue@3.4.15) devDependencies: '@antfu/eslint-config': specifier: ^2.6.3 @@ -2731,8 +2731,8 @@ packages: selderee: 0.11.0 dev: true - /@shikijs/core@1.0.0-beta.1: - resolution: {integrity: sha512-z3gdznaRj/DJSLQdR2Gdx6AB3e5+Il/kSGdLTGHI7HnalgPL15RbGgBSdLHW8rKAz4+dezAcTdnxm8z6YTu7nA==} + /@shikijs/core@1.0.0: + resolution: {integrity: sha512-UMKGMZ+8b88N0/n6DWwWth1PHsOaxjW+R2u+hzSiargZWTv+l3s1l8dhuIxUSsEUPlBDKLs2CSMiFZeviKQM1w==} dev: false /@shikijs/core@1.0.0-beta.3: @@ -3377,14 +3377,14 @@ packages: resolution: {integrity: sha512-20Yvbkn9xU+sbWg0c7f/Jo5/K8bo1483NQpF0AyYHDI+cvD+F76j+LkXyRRbgVN84Adi1aFKRi6Mcrov1+uo9Q==} hasBin: true dependencies: - '@vue-email/compiler': 0.8.12(typescript@5.3.3)(vue@3.4.15) + '@vue-email/compiler': 0.8.13(typescript@5.3.3)(vue@3.4.15) transitivePeerDependencies: - typescript - vue dev: false - /@vue-email/compiler@0.8.12(typescript@5.3.3)(vue@3.4.15): - resolution: {integrity: sha512-IPI1KWmH1qEE76SvOOlRXp6nDMSAu9Txb5NeUKehCg/1OGRqEBOzCpzn3VSBeg7a0BNX25nAcTJzY+Nry5db1g==} + /@vue-email/compiler@0.8.13(typescript@5.3.3)(vue@3.4.15): + resolution: {integrity: sha512-gVUKdo2ktwcRXHVHZfl6JsR8ltEntAEb45Wk9IcE50j81JmBbGxea5WOJ4BpCkl4G0QCZhtRBbfR+e6LciYAjQ==} peerDependencies: vue: ^3.3.8 dependencies: @@ -3392,7 +3392,7 @@ packages: kolorist: 1.8.0 scule: 1.3.0 vue: 3.4.15(typescript@5.3.3) - vue-email: 0.8.8(typescript@5.3.3)(vue@3.4.15) + vue-email: 0.8.9(typescript@5.3.3)(vue@3.4.15) transitivePeerDependencies: - bufferutil - canvas @@ -7104,7 +7104,7 @@ packages: magic-string: 0.30.5 mlly: 1.5.0 type-level-regexp: 0.1.17 - ufo: 1.3.2 + ufo: 1.4.0 unplugin: 1.6.0 dev: true @@ -9275,10 +9275,10 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /shiki@1.0.0-beta.1: - resolution: {integrity: sha512-iq32WxjemJVlAHg5HjYoL1qCxGmvyh3Z8kr2E/gMTQdcxyXxTpMhahIC7myxFBapAk9o8QN8mxCpr4JT5rqpRQ==} + /shiki@1.0.0: + resolution: {integrity: sha512-rOUGJa3yFGgOrEoiELYxraoBbag3ZWf9bpodlr05Wjm85Scx8OIX+otdSefq9Pk7L47TKEzGodSQb4L38jka6A==} dependencies: - '@shikijs/core': 1.0.0-beta.1 + '@shikijs/core': 1.0.0 dev: false /shiki@1.0.0-beta.3: @@ -9918,7 +9918,6 @@ packages: /ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} - dev: false /ultrahtml@1.5.2: resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} @@ -10727,8 +10726,8 @@ packages: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} dev: true - /vue-email@0.8.8(typescript@5.3.3)(vue@3.4.15): - resolution: {integrity: sha512-wBPvGhh3okP6qk5XBELLikYHUzt6OgNRMmB9Cyk7QXOgNFo3D6DNaaSsZQ9cZrwtM35lD8bH/awy9QO4MoDZtg==} + /vue-email@0.8.9(typescript@5.3.3)(vue@3.4.15): + resolution: {integrity: sha512-/0pHeUZu02LhnAGmWdBdT12xRgAMJH8Je61W9kYHDrTvPtt4MArw/kdQWABQO8eu8Bty56NjiJt90av4j7hlVQ==} hasBin: true peerDependencies: vue: ^3.4.15 @@ -10736,7 +10735,7 @@ packages: '@vue-email/cli': 0.0.12(typescript@5.3.3)(vue@3.4.15) '@vue-email/tailwind': 0.0.6 isomorphic-dompurify: 2.3.0 - shiki: 1.0.0-beta.1 + shiki: 1.0.0 ufo: 1.4.0 vue: 3.4.15(typescript@5.3.3) vue-i18n: 9.9.1(vue@3.4.15) From 639ad6739d8f5b0d00097190a3aeaed3b1c704f5 Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Sun, 18 Feb 2024 13:02:42 +0100 Subject: [PATCH 02/11] chore: release v0.8.15 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 421dab5..39781f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@vue-email/nuxt", "type": "module", - "version": "0.8.14", + "version": "0.8.15", "packageManager": "pnpm@8.11.0", "description": "Nuxt package for vue-email", "author": "David Arenas (https://github.com/Dave136/)", From 783f427e40e3a61a60a294f832943829f96d3d6d Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Thu, 22 Feb 2024 22:00:08 +0100 Subject: [PATCH 03/11] fix: emails not showing on playground when using layout (#29) --- src/module.ts | 6 +- src/runtime/server/api/emails.get.ts | 152 ++++++++++++++------------- 2 files changed, 85 insertions(+), 73 deletions(-) diff --git a/src/module.ts b/src/module.ts index e179c7a..fb1a6e6 100644 --- a/src/module.ts +++ b/src/module.ts @@ -47,6 +47,7 @@ export interface ModuleOptions { autoImport?: boolean useNuxtTailwind?: boolean tailwind?: VueEmailPluginOptions['tailwind'] + emailsDir?: string } export default defineNuxtModule({ @@ -67,6 +68,7 @@ export default defineNuxtModule({ autoImport: false, useNuxtTailwind: true, tailwind: undefined, + emailsDir: '/emails', } }, async setup(options, nuxt) { @@ -78,7 +80,7 @@ export default defineNuxtModule({ options, ) - let tempaltesDir = '/emails' + let tempaltesDir = resolve(options.emailsDir) || resolve('/emails') for (const layer of nuxt.options._layers) { const templatePath = join(layer.cwd, '/emails') @@ -90,6 +92,8 @@ export default defineNuxtModule({ break } + nuxt.options.runtimeConfig.public.vueEmail.emailsDir = tempaltesDir + if (hasNuxtModule('@nuxtjs/tailwindcss') && options.useNuxtTailwind) { // @ts-expect-error runtime type nuxt.hook('tailwindcss:resolvedConfig', (resolvedConfig) => { diff --git a/src/runtime/server/api/emails.get.ts b/src/runtime/server/api/emails.get.ts index 028c4b1..62bb071 100644 --- a/src/runtime/server/api/emails.get.ts +++ b/src/runtime/server/api/emails.get.ts @@ -4,22 +4,7 @@ import { createComponentMetaCheckerByJsonConfig } from 'vue-component-meta' import { destr } from 'destr' import JSON5 from 'json5' import type { Email } from '../../types/email' -import { createError, defineEventHandler, useStorage } from '#imports' - -const rootDir = process.cwd() -const checker = createComponentMetaCheckerByJsonConfig( - rootDir, - { - extends: `${rootDir}/tsconfig.json`, - skipLibCheck: true, - include: ['emails/**/*'], - exclude: [], - }, - { - forceUseTs: true, - printer: { newLine: 1 }, - }, -) +import { createError, defineEventHandler, useRuntimeConfig, useStorage } from '#imports' function stripeTypeScriptInternalTypesSchema(type: any): any { if (!type) @@ -55,6 +40,21 @@ function stripeTypeScriptInternalTypesSchema(type: any): any { export default defineEventHandler(async () => { try { const nitroEmails = await useStorage('assets:emails').getKeys() + const rootDir = useRuntimeConfig().public.vueEmail.emailsDir || process.cwd() + + const checker = createComponentMetaCheckerByJsonConfig( + rootDir, + { + extends: path.join(rootDir, '..', 'tsconfig.json'), + skipLibCheck: true, + include: ['./emails/**/*.vue'], + exclude: [], + }, + { + forceUseTs: true, + printer: { newLine: 1 }, + }, + ) const emails: Email[] = await Promise.all( nitroEmails.map(async (email) => { @@ -64,85 +64,93 @@ export default defineEventHandler(async () => { const emailData = JSON.parse(data) const emailPath = path.join( rootDir, - 'emails', email.replaceAll(':', '/'), ) - const { props } = checker.getComponentMeta(emailPath) - let emailProps = (props).filter(prop => !prop.global).sort((a, b) => { - if (!a.required && b.required) - return 1 - if (a.required && !b.required) - return -1 + let destructuredProps = [] - if (a.type === 'boolean' && b.type !== 'boolean') - return 1 + try { + const { props } = checker.getComponentMeta(emailPath) + let emailProps = (props).filter(prop => !prop.global).sort((a, b) => { + if (!a.required && b.required) + return 1 - if (a.type !== 'boolean' && b.type === 'boolean') - return -1 + if (a.required && !b.required) + return -1 - return 0 - }) - emailProps = emailProps.map(stripeTypeScriptInternalTypesSchema) - const destructuredProps = emailProps.map((prop) => { - const destructuredType = prop.type.split('|').map((type) => { - type = type.trim() - const value = prop.default + if (a.type === 'boolean' && b.type !== 'boolean') + return 1 - if (type === 'string') { - return { - type: 'string', - value: destr(value) ?? '', + if (a.type !== 'boolean' && b.type === 'boolean') + return -1 + + return 0 + }) + + emailProps = emailProps.map(stripeTypeScriptInternalTypesSchema) + destructuredProps = emailProps.map((prop) => { + const destructuredType = prop.type.split('|').map((type) => { + type = type.trim() + const value = prop.default + + if (type === 'string') { + return { + type: 'string', + value: destr(value) ?? '', + } } - } - if (type === 'number') { - return { - type: 'number', - value: destr(value) || 0, + if (type === 'number') { + return { + type: 'number', + value: destr(value) || 0, + } } - } - if (type === 'boolean') { - return { - type: 'boolean', - value: destr(value) || false, + if (type === 'boolean') { + return { + type: 'boolean', + value: destr(value) || false, + } } - } - if (type === 'object' || type.includes('Record') || type.includes('Record<')) { - return { - type: 'object', - value: value ? JSON5.parse(value) : {}, + if (type === 'object' || type.includes('Record') || type.includes('Record<')) { + return { + type: 'object', + value: value ? JSON5.parse(value) : {}, + } } - } - if (type === 'array' || type.includes('[]') || type.includes('Array') || type.includes('Array<')) { - return { - type: 'array', - value: value ? JSON5.parse(value) : [], + if (type === 'array' || type.includes('[]') || type.includes('Array') || type.includes('Array<')) { + return { + type: 'array', + value: value ? JSON5.parse(value) : [], + } + } + + if (type === 'Date') { + return { + type: 'date', + value: value ? eval(value) : new Date().toISOString(), + } } - } - if (type === 'Date') { return { - type: 'date', - value: value ? eval(value) : new Date().toISOString(), + type: 'string', + value: value ?? '', } - } + }) return { - type: 'string', - value: value ?? '', + label: prop.name, + type: destructuredType[0].type, + value: destructuredType[0].value, } }) - - return { - label: prop.name, - type: destructuredType[0].type, - value: destructuredType[0].value, - } - }) + } + catch (error) { + console.warn('Error destructuring props', error) + } const content = (await useStorage('assets:emails').getItem( email, From 1c46e5f5071c9d8a77e54de222f6bc43c0f4356a Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Thu, 22 Feb 2024 22:01:09 +0100 Subject: [PATCH 04/11] chore: release v0.8.16 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 39781f2..f5a4b77 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@vue-email/nuxt", "type": "module", - "version": "0.8.15", + "version": "0.8.16", "packageManager": "pnpm@8.11.0", "description": "Nuxt package for vue-email", "author": "David Arenas (https://github.com/Dave136/)", From 567bdb90c0e2ea6eaa169a1c99fa7e43970dbd62 Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Fri, 23 Feb 2024 10:33:25 +0100 Subject: [PATCH 05/11] fix: updated props destruction (#31) --- client/server/api/emails.get.ts | 151 ++++++++++++++------------- src/runtime/server/api/emails.get.ts | 2 +- 2 files changed, 80 insertions(+), 73 deletions(-) diff --git a/client/server/api/emails.get.ts b/client/server/api/emails.get.ts index e084171..181df9f 100644 --- a/client/server/api/emails.get.ts +++ b/client/server/api/emails.get.ts @@ -4,22 +4,6 @@ import { createComponentMetaCheckerByJsonConfig } from 'vue-component-meta' import { destr } from 'destr' import JSON5 from 'json5' import type { Email } from '~/types/email' -import { createError, defineEventHandler, useStorage } from '#imports' - -const rootDir = process.cwd() -const checker = createComponentMetaCheckerByJsonConfig( - rootDir, - { - extends: `${rootDir}/tsconfig.json`, - skipLibCheck: true, - include: ['emails/**/*'], - exclude: [], - }, - { - forceUseTs: true, - printer: { newLine: 1 }, - }, -) function stripeTypeScriptInternalTypesSchema(type: any): any { if (!type) @@ -55,6 +39,21 @@ function stripeTypeScriptInternalTypesSchema(type: any): any { export default defineEventHandler(async () => { try { const nitroEmails = await useStorage('assets:emails').getKeys() + const rootDir = useRuntimeConfig().public.vueEmail.emailsDir || process.cwd() + + const checker = createComponentMetaCheckerByJsonConfig( + rootDir, + { + extends: path.join(rootDir, '..', 'tsconfig.json'), + skipLibCheck: true, + include: ['**/*.vue'], + exclude: [], + }, + { + forceUseTs: true, + printer: { newLine: 1 }, + }, + ) const emails: Email[] = await Promise.all( nitroEmails.map(async (email) => { @@ -64,85 +63,93 @@ export default defineEventHandler(async () => { const emailData = JSON.parse(data) const emailPath = path.join( rootDir, - 'emails', email.replaceAll(':', '/'), ) - const { props } = checker.getComponentMeta(emailPath) - let emailProps = (props).filter(prop => !prop.global).sort((a, b) => { - if (!a.required && b.required) - return 1 - if (a.required && !b.required) - return -1 + let destructuredProps: any[] = [] - if (a.type === 'boolean' && b.type !== 'boolean') - return 1 + try { + const { props } = checker.getComponentMeta(emailPath) + let emailProps = (props).filter(prop => !prop.global).sort((a, b) => { + if (!a.required && b.required) + return 1 - if (a.type !== 'boolean' && b.type === 'boolean') - return -1 + if (a.required && !b.required) + return -1 - return 0 - }) - emailProps = emailProps.map(stripeTypeScriptInternalTypesSchema) - const destructuredProps = emailProps.map((prop) => { - const destructuredType = prop.type.split('|').map((type) => { - type = type.trim() - const value = prop.default + if (a.type === 'boolean' && b.type !== 'boolean') + return 1 - if (type === 'string') { - return { - type: 'string', - value: destr(value) ?? '', + if (a.type !== 'boolean' && b.type === 'boolean') + return -1 + + return 0 + }) + + emailProps = emailProps.map(stripeTypeScriptInternalTypesSchema) + destructuredProps = emailProps.map((prop) => { + const destructuredType = prop.type.split('|').map((type) => { + type = type.trim() + const value = prop.default + + if (type === 'string') { + return { + type: 'string', + value: destr(value) ?? '', + } } - } - if (type === 'number') { - return { - type: 'number', - value: destr(value) || 0, + if (type === 'number') { + return { + type: 'number', + value: destr(value) || 0, + } } - } - if (type === 'boolean') { - return { - type: 'boolean', - value: destr(value) || false, + if (type === 'boolean') { + return { + type: 'boolean', + value: destr(value) || false, + } } - } - if (type === 'object' || type.includes('Record') || type.includes('Record<')) { - return { - type: 'object', - value: value ? JSON5.parse(value) : {}, + if (type === 'object' || type.includes('Record') || type.includes('Record<')) { + return { + type: 'object', + value: value ? JSON5.parse(value) : {}, + } } - } - if (type === 'array' || type.includes('[]') || type.includes('Array') || type.includes('Array<')) { - return { - type: 'array', - value: value ? JSON5.parse(value) : [], + if (type === 'array' || type.includes('[]') || type.includes('Array') || type.includes('Array<')) { + return { + type: 'array', + value: value ? JSON5.parse(value) : [], + } + } + + if (type === 'Date') { + return { + type: 'date', + value: value ? eval(value) : new Date().toISOString(), + } } - } - if (type === 'Date') { return { - type: 'date', - value: value ? eval(value) : new Date().toISOString(), + type: 'string', + value: value ?? '', } - } + }) return { - type: 'string', - value: value ?? '', + label: prop.name, + type: destructuredType[0].type, + value: destructuredType[0].value, } }) - - return { - label: prop.name, - type: destructuredType[0].type, - value: destructuredType[0].value, - } - }) + } + catch (error) { + console.warn('Error destructuring props', error) + } const content = (await useStorage('assets:emails').getItem( email, diff --git a/src/runtime/server/api/emails.get.ts b/src/runtime/server/api/emails.get.ts index 62bb071..5ea631f 100644 --- a/src/runtime/server/api/emails.get.ts +++ b/src/runtime/server/api/emails.get.ts @@ -47,7 +47,7 @@ export default defineEventHandler(async () => { { extends: path.join(rootDir, '..', 'tsconfig.json'), skipLibCheck: true, - include: ['./emails/**/*.vue'], + include: ['**/*.vue'], exclude: [], }, { From c853441e6f494dade0d62a9eb85f8627f390e57e Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Fri, 23 Feb 2024 10:34:19 +0100 Subject: [PATCH 06/11] chore: release v0.8.17 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f5a4b77..410515c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@vue-email/nuxt", "type": "module", - "version": "0.8.16", + "version": "0.8.17", "packageManager": "pnpm@8.11.0", "description": "Nuxt package for vue-email", "author": "David Arenas (https://github.com/Dave136/)", From fce2d5618bc2bf59c630d8c74dcc77aad521a759 Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Tue, 27 Feb 2024 15:24:21 +0100 Subject: [PATCH 07/11] chore: bump versions --- package.json | 4 ++-- pnpm-lock.yaml | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 410515c..822627c 100644 --- a/package.json +++ b/package.json @@ -50,13 +50,13 @@ }, "dependencies": { "@nuxt/kit": "^3.10.0", - "@vue-email/compiler": "^0.8.13", + "@vue-email/compiler": "^0.8.14", "defu": "^6.1.4", "destr": "^2.0.2", "json5": "^2.2.3", "sirv": "^2.0.4", "vue-component-meta": "^1.8.27", - "vue-email": "^0.8.9" + "vue-email": "^0.8.10" }, "devDependencies": { "@antfu/eslint-config": "^2.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8745ef..507f631 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^3.10.0 version: 3.10.0(rollup@3.29.4) '@vue-email/compiler': - specifier: ^0.8.13 - version: 0.8.13(typescript@5.3.3)(vue@3.4.15) + specifier: ^0.8.14 + version: 0.8.14(typescript@5.3.3)(vue@3.4.15) defu: specifier: ^6.1.4 version: 6.1.4 @@ -30,8 +30,8 @@ importers: specifier: ^1.8.27 version: 1.8.27(typescript@5.3.3) vue-email: - specifier: ^0.8.9 - version: 0.8.9(typescript@5.3.3)(vue@3.4.15) + specifier: ^0.8.10 + version: 0.8.10(typescript@5.3.3)(vue@3.4.15) devDependencies: '@antfu/eslint-config': specifier: ^2.6.3 @@ -3373,18 +3373,18 @@ packages: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - /@vue-email/cli@0.0.12(typescript@5.3.3)(vue@3.4.15): - resolution: {integrity: sha512-20Yvbkn9xU+sbWg0c7f/Jo5/K8bo1483NQpF0AyYHDI+cvD+F76j+LkXyRRbgVN84Adi1aFKRi6Mcrov1+uo9Q==} + /@vue-email/cli@0.0.13(typescript@5.3.3)(vue@3.4.15): + resolution: {integrity: sha512-O/zG7lVh095IjxUEm7hkWlQmFANUMOvxiawGAQgxYCXwzRXOb467QqoPMz9fCbyZq+StWgGnRjxVTpYfr2cSiQ==} hasBin: true dependencies: - '@vue-email/compiler': 0.8.13(typescript@5.3.3)(vue@3.4.15) + '@vue-email/compiler': 0.8.14(typescript@5.3.3)(vue@3.4.15) transitivePeerDependencies: - typescript - vue dev: false - /@vue-email/compiler@0.8.13(typescript@5.3.3)(vue@3.4.15): - resolution: {integrity: sha512-gVUKdo2ktwcRXHVHZfl6JsR8ltEntAEb45Wk9IcE50j81JmBbGxea5WOJ4BpCkl4G0QCZhtRBbfR+e6LciYAjQ==} + /@vue-email/compiler@0.8.14(typescript@5.3.3)(vue@3.4.15): + resolution: {integrity: sha512-Z9zHYk7vY9S9WYz8xGf53oMDDQ5Di9Gn0/N0r/ifxEXwLgCcS/5EI3zqquiifXSnqWQJBD7pI18jQFwMgEq0Gw==} peerDependencies: vue: ^3.3.8 dependencies: @@ -3392,7 +3392,7 @@ packages: kolorist: 1.8.0 scule: 1.3.0 vue: 3.4.15(typescript@5.3.3) - vue-email: 0.8.9(typescript@5.3.3)(vue@3.4.15) + vue-email: 0.8.10(typescript@5.3.3)(vue@3.4.15) transitivePeerDependencies: - bufferutil - canvas @@ -10726,13 +10726,13 @@ packages: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} dev: true - /vue-email@0.8.9(typescript@5.3.3)(vue@3.4.15): - resolution: {integrity: sha512-/0pHeUZu02LhnAGmWdBdT12xRgAMJH8Je61W9kYHDrTvPtt4MArw/kdQWABQO8eu8Bty56NjiJt90av4j7hlVQ==} + /vue-email@0.8.10(typescript@5.3.3)(vue@3.4.15): + resolution: {integrity: sha512-JnBbDihdkz1NaNnUSQhXL2hQ9yfLnzVJHJ+DrskYlSALT5bmsxkQJSb7tyGUoSbJ4sEXA3AqpN6oYKKglnekrQ==} hasBin: true peerDependencies: vue: ^3.4.15 dependencies: - '@vue-email/cli': 0.0.12(typescript@5.3.3)(vue@3.4.15) + '@vue-email/cli': 0.0.13(typescript@5.3.3)(vue@3.4.15) '@vue-email/tailwind': 0.0.6 isomorphic-dompurify: 2.3.0 shiki: 1.0.0 From 8f8ffc52b0548a720cf908f42e16bd5df821474c Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Tue, 27 Feb 2024 15:24:29 +0100 Subject: [PATCH 08/11] chore: release v0.8.18 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 822627c..3b75637 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@vue-email/nuxt", "type": "module", - "version": "0.8.17", + "version": "0.8.18", "packageManager": "pnpm@8.11.0", "description": "Nuxt package for vue-email", "author": "David Arenas (https://github.com/Dave136/)", From acf737354ff30793c93684ecc85eee5f1bc32009 Mon Sep 17 00:00:00 2001 From: Larry Williamson Date: Fri, 1 Mar 2024 14:37:58 -0500 Subject: [PATCH 09/11] fix(compiler): when useStorage returns a `Uint8Array`, decode it to text (fixes #33) (#34) * fix(compiler): when useStorage returns a `Uint8Array`, decode it to text (fixes #33) * chore: lint --- src/runtime/server/nitro/useCompiler.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/runtime/server/nitro/useCompiler.ts b/src/runtime/server/nitro/useCompiler.ts index 49a3703..f4a200b 100644 --- a/src/runtime/server/nitro/useCompiler.ts +++ b/src/runtime/server/nitro/useCompiler.ts @@ -11,14 +11,18 @@ export async function useCompiler( verbose = false, ) { const vueEmailOptions = useRuntimeConfig().public.vueEmail as ModuleOptions - const source = await useStorage(storageKey).getItem(filename) + let source = await useStorage(storageKey).getItem(filename) + if (source instanceof Uint8Array) + source = new TextDecoder().decode(source) const keys = await useStorage(storageKey).getKeys() const components: { name: string source: string }[] = [] for (const key of keys) { - const value = await useStorage(storageKey).getItem(key) + let value = await useStorage(storageKey).getItem(key) + if (value instanceof Uint8Array) + value = new TextDecoder().decode(value) if (value && key.endsWith('.vue')) { components.push({ From a6b685a65e14e43a20b28a00066f8613aa30e63e Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Fri, 1 Mar 2024 21:44:30 +0100 Subject: [PATCH 10/11] chore: release v0.8.19 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3b75637..054a8b8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@vue-email/nuxt", "type": "module", - "version": "0.8.18", + "version": "0.8.19", "packageManager": "pnpm@8.11.0", "description": "Nuxt package for vue-email", "author": "David Arenas (https://github.com/Dave136/)", From 6cfa0f0c72ab8855759c4486306897fa68462a78 Mon Sep 17 00:00:00 2001 From: Younes Barrad Date: Sat, 22 Jun 2024 19:25:40 +0100 Subject: [PATCH 11/11] Update README.md (#53) --- README.md | 104 ++---------------------------------------------------- 1 file changed, 2 insertions(+), 102 deletions(-) diff --git a/README.md b/README.md index 8ef4db4..3fbca01 100644 --- a/README.md +++ b/README.md @@ -1,103 +1,3 @@ -[![vue-email](https://github.com/vue-email/vue-email/blob/main/public/repo-banner.png?raw=true)](https://vuemail.net) +we just merged a new project rewrite, please do check the docs and the updated logic https://vuemail.net/ -
- -[![npm version][npm-version-src]][npm-version-href] -[![npm downloads][npm-downloads-src]][npm-downloads-href] -[![JSDocs][jsdocs-src]][jsdocs-href] -[![License][license-src]][license-href] - -
- -# @vue-email/nuxt - -Official Nuxt module for Vue Email. Build email templates with Vue components. - -- [✨  Release Notes](https://github.com/vue-email/nuxt/releases) -- [📖  Documentation](https://vuemail.net/ssr/nuxt) - -## Features - -- Auto-import Vue Email components and composables -- `useCompiler` utility to render emails on the server -- All the DX Magic that comes with Nuxt ✨ -- Vue Email DevTools integration - -## Ecosystem - -| Package | Version | -| --------------------------- | :------------------------------------------------------------------------------------------------- | -| [Vue-Email](https://github.com/vue-email/vue-email) | ![tres version](https://img.shields.io/npm/v/vue-email/latest.svg?label=%20&colorB=1fa669) | -| [Nuxt](https://github.com/vue-email/nuxt) | ![nuxt version](https://img.shields.io/npm/v/@vue-email/nuxt/latest.svg?label=%20&color=4f4f4f&logo=nuxt.js) | -[SSR Compiler](https://github.com/vue-email/compiler) | ![cientos version](https://img.shields.io/npm/v/@vue-email/compiler/latest.svg?label=%20&colorB=1fa669) | -| [CLI](https://github.com/vue-email/cli) | ![tres version](https://img.shields.io/npm/v/@vue-email/cli/latest.svg?label=%20&colorB=1fa669) | - -## Quick Setup - -1. Add `@vue-email/nuxt` dependency to your project - -```bash -# Using pnpm -pnpm add -D @vue-email/nuxt - -# Using yarn -yarn add --dev @vue-email/nuxt - -# Using npm -npm install --save-dev @vue-email/nuxt -``` - -2. Add `@vue-email/nuxt` to the `modules` section of `nuxt.config.ts` - -```js -export default defineNuxtConfig({ - modules: [ - '@vue-email/nuxt' - ] -}) -``` - -That's it! You can now use My Module in your Nuxt app ✨ - -## Development - -```bash -# Install dependencies -npm install - -# Generate type stubs -npm run dev:prepare - -# Develop with the playground -npm run dev - -# Build the playground -npm run dev:build - -# Run ESLint -npm run lint - -# Run Vitest -npm run test -npm run test:watch - -# Release new version -npm run release -``` - -## License - -[MIT](./LICENSE) License © 2023-PRESENT [Vue Email](https://vuemail.net/) - - -[npm-version-src]: https://img.shields.io/npm/v/@vue-email/nuxt/latest.svg?style=flat&colorA=18181B&colorB=28CF8D -[npm-version-href]: https://npmjs.com/package/@vue-email/nuxt - -[npm-downloads-src]: https://img.shields.io/npm/dm/@vue-email/nuxt.svg?style=flat&colorA=18181B&colorB=28CF8D -[npm-downloads-href]: https://npmjs.com/package/@vue-email/nuxt - -[license-src]: https://img.shields.io/npm/l/@vue-email/nuxt.svg?style=flat&colorA=18181B&colorB=28CF8D -[license-href]: https://npmjs.com/package/@vue-email/nuxt - -[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669 -[jsdocs-href]: https://www.jsdocs.io/package/@vue-email/nuxt +Currently there's no need for a nuxt module, as we are not adding anything specific to nuxt. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy