diff --git a/.prettierignore b/.prettierignore index f99a496..8f9d2df 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,7 +6,6 @@ node_modules # Ignore all dts files: *.d.ts -vite.config.ts # lib /pnpm-lock.yaml diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f464c28..ac9b6a8 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -11,19 +11,19 @@ pnpm install serve ```bash -pnpm serve -F app +pnpm serve -F siyuan-plugin-picgo ``` dev ```bash -pnpm dev +pnpm dev -F siyuan-plugin-picgo ``` ## Build ```bash -pnpm package +pnpm build ``` artifacts structure diff --git a/packages/siyuan-plugin-picgo/.gitignore b/packages/siyuan-plugin-picgo/.gitignore index 8219359..09caeba 100644 --- a/packages/siyuan-plugin-picgo/.gitignore +++ b/packages/siyuan-plugin-picgo/.gitignore @@ -26,5 +26,4 @@ components.d.ts *.njsproj *.sln *.sw? -coverage -vite.config.ts \ No newline at end of file +coverage \ No newline at end of file diff --git a/packages/siyuan-plugin-picgo/common/Constants.ts b/packages/siyuan-plugin-picgo/common/Constants.ts index f603c18..f32e79b 100644 --- a/packages/siyuan-plugin-picgo/common/Constants.ts +++ b/packages/siyuan-plugin-picgo/common/Constants.ts @@ -1,26 +1,10 @@ /* - * Copyright (c) 2023, Terwer . All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Terwer designates this - * particular file as subject to the "Classpath" exception as provided - * by Terwer in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Terwer, Shenzhen, Guangdong, China, youweics@163.com - * or visit www.terwer.space if you need additional information or have any - * questions. + * Copyright (C) 2022-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. */ export const isDev = process.env.DEV_MODE === "true" diff --git a/packages/siyuan-plugin-picgo/common/appLogger.ts b/packages/siyuan-plugin-picgo/common/appLogger.ts index 6ba6b1a..2767d74 100644 --- a/packages/siyuan-plugin-picgo/common/appLogger.ts +++ b/packages/siyuan-plugin-picgo/common/appLogger.ts @@ -1,26 +1,10 @@ /* - * Copyright (c) 2023, Terwer . All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * GNU GENERAL PUBLIC LICENSE + * Version 3, 29 June 2007 * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Terwer designates this - * particular file as subject to the "Classpath" exception as provided - * by Terwer in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Terwer, Shenzhen, Guangdong, China, youweics@163.com - * or visit www.terwer.space if you need additional information or have any - * questions. + * Copyright (C) 2023-2024 Terwer, Inc. + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. */ import { isDev } from "./Constants" @@ -36,7 +20,7 @@ window.console = isDev ? win?.eruda?.get("console") : window.console /** * 简单的日志接口 */ -interface ILogger { +export interface ILogger { debug: (msg: string, obj?: any) => void info: (msg: string, obj?: any) => void warn: (msg: string, obj?: any) => void diff --git a/packages/siyuan-plugin-picgo/index.html b/packages/siyuan-plugin-picgo/index.html index 20de112..9d53ff9 100644 --- a/packages/siyuan-plugin-picgo/index.html +++ b/packages/siyuan-plugin-picgo/index.html @@ -5,10 +5,7 @@ PicGO 插件 - - + <%- injectScript %>
diff --git a/packages/siyuan-plugin-picgo/package.json b/packages/siyuan-plugin-picgo/package.json index c1ccdae..1e0fecb 100644 --- a/packages/siyuan-plugin-picgo/package.json +++ b/packages/siyuan-plugin-picgo/package.json @@ -5,18 +5,20 @@ "type": "module", "scripts": { "serve": "python -u scripts/serve.py && vite", - "dev": "python -u scripts/dev.py &&vue-tsc && vite build --wach", - "build": "vue-tsc && vite build", - "preview": "vite preview" + "dev": "python -u scripts/dev.py", + "build": "python -u scripts/build.py" }, "devDependencies": { "@terwer/esbuild-config-custom": "2.0.0", "@terwer/eslint-config-custom": "^1.3.6", "@vitejs/plugin-vue": "^5.0.4", + "fast-glob": "^3.3.2", "minimist": "^1.2.5", + "rollup-plugin-livereload": "^2.0.5", "typescript": "^5.2.2", "vite": "^5.1.6", "vite-plugin-html": "^3.2.2", + "vitest": "^1.3.1", "vue-tsc": "^1.8.27" }, "dependencies": { diff --git a/packages/siyuan-plugin-picgo/scripts/build.py b/packages/siyuan-plugin-picgo/scripts/build.py new file mode 100644 index 0000000..67a4d1a --- /dev/null +++ b/packages/siyuan-plugin-picgo/scripts/build.py @@ -0,0 +1,14 @@ +import shutil +import sys +import os + +# 设置标准输出的编码为 UTF-8 +# Windows 必须添加此设置 +sys.stdout.reconfigure(encoding="utf-8") + +# siyuan-plugin-bootstrap +# os.system("") + +# picgo-app +os.system("vue-tsc && vite build") +print"PicGO plugin build success") \ No newline at end of file diff --git a/packages/siyuan-plugin-picgo/scripts/dev.py b/packages/siyuan-plugin-picgo/scripts/dev.py index 86653b8..bf8d518 100644 --- a/packages/siyuan-plugin-picgo/scripts/dev.py +++ b/packages/siyuan-plugin-picgo/scripts/dev.py @@ -1,16 +1,13 @@ import shutil import sys +import os # 设置标准输出的编码为 UTF-8 # Windows 必须添加此设置 sys.stdout.reconfigure(encoding="utf-8") # siyuan-plugin-bootstrap -os.system("") +# os.system("") # picgo-app -shutil.copyfile("vite.config.plugin.ts", "vite.config.ts") -print("Config is reset to web, will serve as browser") - -# vite -# 会阻塞,最好在 npm 的 scripts 里面,便于及时查看日志 +os.system("vue-tsc && vite build --watch") \ No newline at end of file diff --git a/packages/siyuan-plugin-picgo/scripts/serve.py b/packages/siyuan-plugin-picgo/scripts/serve.py index afbdd9d..3c28c76 100644 --- a/packages/siyuan-plugin-picgo/scripts/serve.py +++ b/packages/siyuan-plugin-picgo/scripts/serve.py @@ -1,13 +1,10 @@ import shutil import sys +import os # 设置标准输出的编码为 UTF-8 # Windows 必须添加此设置 sys.stdout.reconfigure(encoding="utf-8") -# "serve": "cp index.siyuan-nginx.html index.html && cp vite.config.siyuan-nginx.ts vite.config.ts && vite" -shutil.copyfile("vite.config.web.ts", "vite.config.ts") -print("Config is reset to web, will serve as browser") - -# vite -# 会阻塞,最好在 npm 的 scripts 里面,便于及时查看日志 +os.environ['IS_SERVE'] = 'true' +os.system("vite") \ No newline at end of file diff --git a/packages/siyuan-plugin-picgo/src/setup.ts b/packages/siyuan-plugin-picgo/src/setup.ts new file mode 100644 index 0000000..b6372a9 --- /dev/null +++ b/packages/siyuan-plugin-picgo/src/setup.ts @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2023, Terwer . All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Terwer designates this + * particular file as subject to the "Classpath" exception as provided + * by Terwer in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Terwer, Shenzhen, Guangdong, China, youweics@163.com + * or visit www.terwer.space if you need additional information or have any + * questions. + */ + +import { afterEach, beforeEach } from "vitest" + +beforeEach(async () => { + console.log("======test is starting...======") +}) + +afterEach(() => { + console.log("======test is finished.========") +}) diff --git a/packages/siyuan-plugin-picgo/vite.config.plugin.ts b/packages/siyuan-plugin-picgo/vite.config.ts similarity index 59% rename from packages/siyuan-plugin-picgo/vite.config.plugin.ts rename to packages/siyuan-plugin-picgo/vite.config.ts index 47ec62f..9064234 100644 --- a/packages/siyuan-plugin-picgo/vite.config.plugin.ts +++ b/packages/siyuan-plugin-picgo/vite.config.ts @@ -9,16 +9,24 @@ import { defineConfig } from "vite" import vue from "@vitejs/plugin-vue" +import livereload from "rollup-plugin-livereload" import minimist from "minimist" +import fg from "fast-glob" import { createHtmlPlugin } from "vite-plugin-html" import path from "path" +// config const args = minimist(process.argv.slice(2)) +// 开启之后可以同eruda接管日志 +const isServe = process.env.IS_SERVE const isWatch = args.watch || args.w || false -const isDev = isWatch +const isDev = isServe || isWatch +const outDir = args.o || args.outDir + +const distDir = outDir || "./dist" // https://vitejs.dev/config/ -export default defineConfig({ +export default defineConfig(() => ({ plugins: [ vue(), @@ -80,4 +88,58 @@ export default defineConfig({ $composables: path.resolve(__dirname, "./src/composables"), }, }, -}) + + build: { + // 输出路径 + outDir: distDir, + emptyOutDir: false, + + // 构建后是否生成 source map 文件 + sourcemap: false, + + // 设置为 false 可以禁用最小化混淆 + // 或是用来指定是应用哪种混淆器 + // boolean | 'terser' | 'esbuild' + // 不压缩,用于调试 + minify: !isDev, + + rollupOptions: { + plugins: [ + ...(isWatch + ? [ + livereload(distDir), + { + //监听静态资源文件 + name: "watch-external", + async buildStart() { + const files = await fg(["src/assets/*", "./README*.md", "./widget.json"]) + for (const file of files) { + const that = this as any + that.addWatchFile(file) + } + }, + }, + ] + : []), + ] as any, + + // make sure to externalize deps that shouldn't be bundled into your library + external: [], + }, + }, + + test: { + globals: true, + environment: "jsdom", + // environment: "node", + // environment: "happy-dom", + setupFiles: ["./src/setup.ts"], + include: [ + "src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}", + "common/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}", + ], + server: { + deps: {}, + }, + }, +})) diff --git a/packages/siyuan-plugin-picgo/vite.config.web.ts b/packages/siyuan-plugin-picgo/vite.config.web.ts deleted file mode 100644 index ff9874a..0000000 --- a/packages/siyuan-plugin-picgo/vite.config.web.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * GNU GENERAL PUBLIC LICENSE - * Version 3, 29 June 2007 - * - * Copyright (C) 2023-2024 Terwer, Inc. - * Everyone is permitted to copy and distribute verbatim copies - * of this license document, but changing it is not allowed. - */ - -import { defineConfig } from "vite" -import vue from "@vitejs/plugin-vue" -import minimist from "minimist" -import path from "path" - -const args = minimist(process.argv.slice(2)) -const isWatch = args.watch || args.w || false -const isDev = isWatch - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [ - vue(), - - { - name: "add-query-param", - transformIndexHtml(html) { - const timestamp = Date.now() - html = html.replace(/(]+href=")([^"]+(\.css|\.js))"/g, (match, p1, p2) => `${p1}${p2}?v=${timestamp}"`) - html = html.replace(/(]+href=")([^"]+\.svg)"/g, `$1$2?v=${timestamp}"`) - html = html.replace(/(]+src=")([^"]+\.(jpe?g|gif|webp|bmp|png))"/g, `$1$2?v=${timestamp}"`) - return html - }, - }, - ], - - // 项目部署的基础路径 - base: "", - - // https://github.com/vitejs/vite/issues/1930 - // https://vitejs.dev/guide/env-and-mode.html#env-files - // https://github.com/vitejs/vite/discussions/3058#discussioncomment-2115319 - // 在这里自定义变量 - define: { - "process.env.DEV_MODE": `"${isDev}"`, - }, - - resolve: { - alias: { - "~": path.resolve(__dirname, "./"), - "@": path.resolve(__dirname, "./src/"), - $routes: path.resolve(__dirname, "./src/routes"), - $pages: path.resolve(__dirname, "./src/pages"), - $lib: path.resolve(__dirname, "./src/lib"), - $assets: path.resolve(__dirname, "./src/assets"), - $components: path.resolve(__dirname, "./src/components"), - $composables: path.resolve(__dirname, "./src/composables"), - }, - }, -}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b7254c..208b314 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,9 +263,15 @@ importers: '@vitejs/plugin-vue': specifier: ^5.0.4 version: 5.0.4(vite@5.1.6)(vue@3.4.21) + fast-glob: + specifier: ^3.3.2 + version: 3.3.2 minimist: specifier: ^1.2.5 version: 1.2.8 + rollup-plugin-livereload: + specifier: ^2.0.5 + version: 2.0.5 typescript: specifier: ^5.2.2 version: 5.4.2 @@ -275,6 +281,9 @@ importers: vite-plugin-html: specifier: ^3.2.2 version: 3.2.2(vite@5.1.6) + vitest: + specifier: ^1.3.1 + version: 1.3.1(@types/node@20.5.1)(stylus@0.59.0) vue-tsc: specifier: ^1.8.27 version: 1.8.27(typescript@5.4.2) @@ -1589,6 +1598,13 @@ packages: wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -2053,6 +2069,10 @@ packages: - '@types/node' dev: true + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@sindresorhus/is@0.7.0: resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} engines: {node: '>=4'} @@ -2956,6 +2976,14 @@ packages: chai: 4.4.1 dev: true + /@vitest/expect@1.3.1: + resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + dependencies: + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + chai: 4.4.1 + dev: true + /@vitest/runner@0.31.4: resolution: {integrity: sha512-Wgm6UER+gwq6zkyrm5/wbpXGF+g+UBB78asJlFkIOwyse0pz8lZoiC6SW5i4gPnls/zUcPLWS7Zog0LVepXnpg==} dependencies: @@ -2965,6 +2993,14 @@ packages: pathe: 1.1.2 dev: true + /@vitest/runner@1.3.1: + resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + dependencies: + '@vitest/utils': 1.3.1 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + /@vitest/snapshot@0.31.4: resolution: {integrity: sha512-LemvNumL3NdWSmfVAMpXILGyaXPkZbG5tyl6+RQSdcHnTj6hvA49UAI8jzez9oQyE/FWLKRSNqTGzsHuk89LRA==} dependencies: @@ -2973,12 +3009,26 @@ packages: pretty-format: 27.5.1 dev: true + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + dependencies: + magic-string: 0.30.8 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + /@vitest/spy@0.31.4: resolution: {integrity: sha512-3ei5ZH1s3aqbEyftPAzSuunGICRuhE+IXOmpURFdkm5ybUADk+viyQfejNk6q8M5QGX8/EVKw+QWMEP3DTJDag==} dependencies: tinyspy: 2.2.1 dev: true + /@vitest/spy@1.3.1: + resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + dependencies: + tinyspy: 2.2.1 + dev: true + /@vitest/utils@0.31.4: resolution: {integrity: sha512-DobZbHacWznoGUfYU8XDPY78UubJxXfMNY1+SUdOp1NsI34eopSA6aZMeaGu10waSOeYwE8lxrd/pLfT0RMxjQ==} dependencies: @@ -2987,6 +3037,15 @@ packages: pretty-format: 27.5.1 dev: true + /@vitest/utils@1.3.1: + resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: @@ -4953,6 +5012,11 @@ packages: engines: {node: '>=8'} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -6239,6 +6303,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /expand-tilde@2.0.2: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} @@ -6678,6 +6757,11 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -7074,6 +7158,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: @@ -7529,6 +7618,11 @@ packages: engines: {node: '>=8'} dev: true + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -7676,6 +7770,10 @@ packages: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -7881,6 +7979,14 @@ packages: engines: {node: '>=14'} dev: true + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + dev: true + /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} dev: true @@ -8260,6 +8366,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -8542,6 +8653,13 @@ packages: path-key: 3.1.1 dev: true + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -8634,6 +8752,13 @@ packages: mimic-fn: 2.1.0 dev: true + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -8761,6 +8886,13 @@ packages: yocto-queue: 1.0.0 dev: true + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} @@ -8899,6 +9031,11 @@ packages: engines: {node: '>=8'} dev: true + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -9197,6 +9334,15 @@ packages: react-is: 17.0.2 dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -9333,6 +9479,10 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -10174,6 +10324,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent@2.0.0: resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} engines: {node: '>=4'} @@ -10197,6 +10352,12 @@ packages: acorn: 8.11.3 dev: true + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + dependencies: + js-tokens: 8.0.3 + dev: true + /strip-outer@1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} @@ -10396,6 +10557,11 @@ packages: engines: {node: '>=14.0.0'} dev: true + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + engines: {node: '>=14.0.0'} + dev: true + /tinyspy@2.2.1: resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} @@ -10928,6 +11094,27 @@ packages: - terser dev: true + /vite-node@1.3.1(@types/node@20.5.1)(stylus@0.59.0): + resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.6(@types/node@20.5.1)(stylus@0.59.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vite-plugin-dts@2.3.0(@types/node@20.5.1)(vite@4.5.2): resolution: {integrity: sha512-WbJgGtsStgQhdm3EosYmIdTGbag5YQpZ3HXWUAPCDyoXI5qN6EY0V7NXq0lAmnv9hVQsvh0htbYcg0Or5Db9JQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -11189,6 +11376,62 @@ packages: - terser dev: true + /vitest@1.3.1(@types/node@20.5.1)(stylus@0.59.0): + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.5.1 + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.8 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.6(@types/node@20.5.1)(stylus@0.59.0) + vite-node: 1.3.1(@types/node@20.5.1)(stylus@0.59.0) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true