From b14afbebe9be031126b71629ea3ee01df9b796b1 Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Mon, 21 Oct 2024 10:55:10 +0200 Subject: [PATCH] docs(prettier): update usage --- docs/plugins/prettier.ts | 39 +++++++++++++++++++-------------------- docs/workers/prettier.js | 12 ++++++++---- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/docs/plugins/prettier.ts b/docs/plugins/prettier.ts index 3abf6013..1fde3428 100644 --- a/docs/plugins/prettier.ts +++ b/docs/plugins/prettier.ts @@ -1,13 +1,14 @@ import type { Options } from 'prettier' +import { defu } from 'defu' import PrettierWorker from '@/workers/prettier.js?worker&inline' export interface SimplePrettier { - format: (source: string, options?: Options) => Promise; + format: (source: string, options?: Options) => Promise } function createPrettierWorkerApi (worker: Worker): SimplePrettier { let counter = 0 - const handlers = {} + const handlers: any = {} worker.addEventListener('message', (event) => { const { uid, message, error } = event.data @@ -26,7 +27,7 @@ function createPrettierWorkerApi (worker: Worker): SimplePrettier { } }) - function postMessage (message) { + function postMessage (message: any) { const uid = ++counter return new Promise((resolve, reject) => { handlers[uid] = [resolve, reject] @@ -41,27 +42,25 @@ function createPrettierWorkerApi (worker: Worker): SimplePrettier { } } -export default defineNuxtPlugin({ - async setup () { - let prettier: SimplePrettier - if (import.meta.server) { - const prettierModule = await import('prettier') - prettier = { - format (source, options = { +export default defineNuxtPlugin(async () => { + let prettier: SimplePrettier + if (import.meta.server) { + const prettierModule = await import('prettier') + prettier = { + format (source, options = {}) { + return prettierModule.format(source, defu(options, { parser: 'markdown' - }) { - return prettierModule.format(source, options) - } + })) } - } else { - const worker = new PrettierWorker() - prettier = createPrettierWorkerApi(worker) } + } else { + const worker = new PrettierWorker() + prettier = createPrettierWorkerApi(worker) + } - return { - provide: { - prettier - } + return { + provide: { + prettier } } }) diff --git a/docs/workers/prettier.js b/docs/workers/prettier.js index 0c39f96f..95f96cb7 100644 --- a/docs/workers/prettier.js +++ b/docs/workers/prettier.js @@ -1,8 +1,4 @@ /* eslint-disable no-undef */ -import('https://unpkg.com/prettier@3.0.3/standalone.js') -import('https://unpkg.com/prettier@3.0.3/plugins/html.js') -import('https://unpkg.com/prettier@3.0.3/plugins/markdown.js') - self.onmessage = async function (event) { self.postMessage({ uid: event.data.uid, @@ -18,6 +14,14 @@ function handleMessage (message) { } async function handleFormatMessage (message) { + if (!globalThis.prettier) { + await Promise.all([ + import('https://unpkg.com/prettier@3.3.3/standalone.js'), + import('https://unpkg.com/prettier@3.3.3/plugins/html.js'), + import('https://unpkg.com/prettier@3.3.3/plugins/markdown.js') + ]) + } + const { options, source } = message const formatted = await prettier.format(source, { parser: 'markdown',