From 1335071d92c18c81539b57ca920cb6deae0c337c Mon Sep 17 00:00:00 2001 From: Jason Caldwell Date: Fri, 29 Sep 2023 19:03:40 -0400 Subject: [PATCH] Project update. [p][robotic] --- .browserslistrc | 2 +- .dockerignore | 2 +- .gitattributes | 2 +- .gitignore | 2 +- .npmignore | 2 +- .prettierignore | 2 +- .vscode/extensions.json | 52 +- .vscode/settings.json | 94 +- .vscodeignore | 2 +- dev/.files/eslint/config.mjs | 136 +- dev/.files/jest/config.mjs | 1 + dev/.files/madrun/config.mjs | 158 +- dev/.files/madrun/includes/events.mjs | 238 +-- dev/.files/prettier/config.mjs | 7 +- dev/.files/stylelint/config.mjs | 2 + dev/.files/tailwind/config.mjs | 12 +- dev/.files/tailwind/settings.mjs | 20 + dev/.files/typescript/config.mjs | 3 +- dev/.files/vite/config.mjs | 2 + .../vite/includes/{ssl => icons}/config.mjs | 16 +- dev/.files/vite/includes/mdx/config.mjs | 1 + dev/.files/vite/includes/vitest/config.mjs | 1 + dev/.files/vscode/config.mjs | 51 +- dev/.files/wrangler/config.mjs | 25 +- dev/.files/wrangler/settings.mjs | 31 + package-lock.json | 1271 +++++++++++------ package.json | 8 +- tsconfig.json | 20 +- wrangler.toml | 5 +- 29 files changed, 1519 insertions(+), 649 deletions(-) create mode 100644 dev/.files/tailwind/settings.mjs rename dev/.files/vite/includes/{ssl => icons}/config.mjs (52%) create mode 100755 dev/.files/wrangler/settings.mjs diff --git a/.browserslistrc b/.browserslistrc index 572f88ac..0200546e 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:33 PM EDT. [production] last 1 chrome versions diff --git a/.dockerignore b/.dockerignore index 00c4d2d0..7276f440 100644 --- a/.dockerignore +++ b/.dockerignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:32 PM EDT. # Locals diff --git a/.gitattributes b/.gitattributes index e88913bf..815e2610 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:32 PM EDT. # Default diff --git a/.gitignore b/.gitignore index 996554d4..30df12d7 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:32 PM EDT. # Locals diff --git a/.npmignore b/.npmignore index fc5f98f1..312c6740 100644 --- a/.npmignore +++ b/.npmignore @@ -25,7 +25,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:32 PM EDT. # Locals diff --git a/.prettierignore b/.prettierignore index 6cdf01b1..3bc2c685 100644 --- a/.prettierignore +++ b/.prettierignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:32 PM EDT. # Packages diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 4c5835e5..46cd26c0 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -9,26 +9,50 @@ */ { "recommendations": [ + /* + * Linting. + */ + "dbaeumer.vscode-eslint", + "stylelint.vscode-stylelint", + "bradlc.vscode-tailwindcss", + "timonwong.shellcheck", + "exiasr.hadolint", + + /* + * Formatting. + */ + "esbenp.prettier-vscode", + "tamasfe.even-better-toml", + + /* + * Markdown. + */ "bierner.markdown-checkbox", "bierner.markdown-footnotes", "bierner.markdown-mermaid", - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "exiasr.hadolint", - "ExodiusStudios.comment-anchors", - "idleberg.applescript", + "unifiedjs.vscode-mdx", + + /* + * EJS templates. + */ "leonzalion.vscode-ejs", + + /* + * Misc languages. + */ + "webben.browserslist", + "idleberg.applescript", "mrmlnc.vscode-apache", - "ms-python.black-formatter", - "ms-python.python", "ms-vscode.hexeditor", - "rohit-gohri.format-code-action", - "sissel.shopify-liquid", - "stylelint.vscode-stylelint", - "tamasfe.even-better-toml", - "timonwong.shellcheck", - "unifiedjs.vscode-mdx", - "webben.browserslist" + + "ms-python.python", // Optional, used rarely. + "ms-python.black-formatter", // Optional, used rarely. + + /* + * Misc features. + */ + "ExodiusStudios.comment-anchors", + "rohit-gohri.format-code-action" ] /* diff --git a/.vscode/settings.json b/.vscode/settings.json index 67177045..36662ca9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,7 +7,7 @@ * @note This entire file will be updated automatically. * @note Instead of editing here, please review `./settings.mjs`. * - * Last generated using `./settings.mjs` Thu, Sep 28, 2023, 3:29:41 PM EDT. + * Last generated using `./settings.mjs` Fri, Sep 29, 2023, 7:03:32 PM EDT. */ { "editor.formatOnType": false, @@ -171,7 +171,14 @@ "commentAnchors.tags.separators": [" ", ": "], "commentAnchors.workspace.excludeFiles": "**/{*.log,*.logs,*~,*.bak,*.rej,*.orig,*.patch,*.diff,*.code-*,.idea,.*.swp,*.ctags,.env.me,.tscache,*.tsbuildinfo,.vite,.vitest,.wrangler,.dev.vars,.dev.vars.*,.rollup,.webpack,.linaria-cache,.sass-cache,.docker,.vagrant,.elasticbeanstalk,.yarn,vendor,node_modules,jspm_packages,bower_components,.git,.svn,_svn,.svnignore,.bzr,.bzrignore,.hg,.hgignore,Thumbs.db,ehthumbs.db,Desktop.ini,$RECYCLE.BIN,._*,Icon,*.icloud,.DS_Store,.disk_label,.LSOverride,.VolumeIcon.icns,.com.apple.timemachine.*,.apdisk,.fseventsd,.AppleDB,.AppleDesktop,.AppleDouble,.Trashes,.TemporaryItems,.Spotlight-V100,.DocumentRevisions-V100,Network Trash Folder,Temporary Items,yarn.lock,composer.lock,package-lock.json,dist}/**", "commentAnchors.workspace.matchFiles": "**/*.{mdx,md,markdown,mdown,mdwn,mkd,mdtxt,mdtext,html,htm,shtml,shtm,xhtml,xhtm,ejs,liquid,php,phtml,phtm,phps,asp,aspx,rb,py,pl,plx,cgi,ppl,perl,bash,zsh,sh,js,jsx,mjs,mjsx,cjs,cjsx,ts,tsx,mts,mtsx,cts,ctsx,xsl,xslt,xml,xsd,dtd,atom,rdf,rss,rss2,rss-http,asx,dfxp,svg,kml}", - "extensions.ignoreRecommendations": false, + "extensions.ignoreRecommendations": true, + "css.validate": false, + "scss.validate": false, + "less.validate": false, + "json.validate.enable": true, + "javascript.validate.enable": true, + "typescript.validate.enable": true, + "javascript.suggestionActions.enabled": false, "eslint.enable": true, "eslint.format.enable": true, "eslint.lintTask.enable": false, @@ -186,15 +193,84 @@ ], "eslint.validate": ["mdx", "markdown", "javascript", "javascriptreact", "typescript", "typescriptreact"], "eslint.options": { - "overrideConfigFile": "eslint.config.mjs" + "overrideConfigFile": "./eslint.config.mjs" }, - "javascript.validate.enable": true, - "typescript.validate.enable": true, - "javascript.suggestionActions.enabled": false, - "css.validate": false, - "scss.validate": false, - "less.validate": false, "stylelint.validate": ["scss", "css"], + "tailwindCSS.validate": true, + "tailwindCSS.experimental.configFile": "./tailwind.config.mjs", + "tailwindCSS.classAttributes": ["class", "classes", "className", "classNames"], + "tailwindCSS.includeLanguages": {}, + "tailwindCSS.files.exclude": [ + "/dev/.files/**", + "**/*.log/**", + "**/*.logs/**", + "**/*~/**", + "**/*.bak/**", + "**/*.rej/**", + "**/*.orig/**", + "**/*.patch/**", + "**/*.diff/**", + "**/*.code-*/**", + "**/.idea/**", + "**/.*.swp/**", + "**/*.ctags/**", + "**/.env.me/**", + "**/.tscache/**", + "**/*.tsbuildinfo/**", + "**/.vite/**", + "**/.vitest/**", + "**/.wrangler/**", + "**/.dev.vars/**", + "**/.dev.vars.*/**", + "**/.rollup/**", + "**/.webpack/**", + "**/.linaria-cache/**", + "**/.sass-cache/**", + "**/.docker/**", + "**/.vagrant/**", + "**/.elasticbeanstalk/**", + "**/.yarn/**", + "**/vendor/**", + "**/node_modules/**", + "**/jspm_packages/**", + "**/bower_components/**", + "**/.git/**", + "**/.svn/**", + "**/_svn/**", + "**/.svnignore/**", + "**/.bzr/**", + "**/.bzrignore/**", + "**/.hg/**", + "**/.hgignore/**", + "**/Thumbs.db/**", + "**/ehthumbs.db/**", + "**/Desktop.ini/**", + "**/$RECYCLE.BIN/**", + "**/._*/**", + "**/Icon/**", + "**/*.icloud/**", + "**/.DS_Store/**", + "**/.disk_label/**", + "**/.LSOverride/**", + "**/.VolumeIcon.icns/**", + "**/.com.apple.timemachine.*/**", + "**/.apdisk/**", + "**/*.icloud/**", + "**/.fseventsd/**", + "**/.AppleDB/**", + "**/.AppleDesktop/**", + "**/.AppleDouble/**", + "**/.Trashes/**", + "**/.TemporaryItems/**", + "**/.Spotlight-V100/**", + "**/.DocumentRevisions-V100/**", + "**/Network Trash Folder/**", + "**/Temporary Items/**", + "**/yarn.lock/**", + "**/composer.lock/**", + "**/package-lock.json/**", + "**/dist/**" + ], "markdown.styles": [], "markdown.preview.fontSize": 16, "markdown.preview.lineHeight": 1.5, diff --git a/.vscodeignore b/.vscodeignore index 688621d7..68713912 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -17,7 +17,7 @@ # Generated data. # -# Last generated Thu, Sep 28, 2023, 3:29:41 PM EDT. +# Last generated Fri, Sep 29, 2023, 7:03:32 PM EDT. # Locals diff --git a/dev/.files/eslint/config.mjs b/dev/.files/eslint/config.mjs index 3ccf79ea..c52a7a56 100644 --- a/dev/.files/eslint/config.mjs +++ b/dev/.files/eslint/config.mjs @@ -25,6 +25,7 @@ import * as parserMDX from 'eslint-mdx'; import pluginJSXA11y from 'eslint-plugin-jsx-a11y'; import * as pluginMDX from 'eslint-plugin-mdx'; import pluginPrettier from 'eslint-plugin-prettier'; +import pluginTailwind from 'eslint-plugin-tailwindcss'; import * as parserESPree from 'espree'; import globals from 'globals'; import path from 'node:path'; @@ -34,6 +35,7 @@ import esVersion from '../bin/includes/es-version.mjs'; import exclusions from '../bin/includes/exclusions.mjs'; import extensions from '../bin/includes/extensions.mjs'; import u from '../bin/includes/utilities.mjs'; +import tailwindSettings from '../tailwind/settings.mjs'; const __dirname = $fs.imuDirname(import.meta.url); const projDir = path.resolve(__dirname, '../../..'); @@ -59,11 +61,18 @@ export default async () => { ...exclusions.logIgnores, // ...exclusions.backupIgnores, ...exclusions.patchIgnores, + ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores, ...exclusions.vcsIgnores, ...exclusions.osIgnores, ...exclusions.lockIgnores, ...exclusions.distIgnores, + + // We don’t ignore these; as they are handled explicitly below. + // The reason is because we *do* want to be capable for formatting. + // ...exclusions.sandboxIgnores, + // ...exclusions.exampleIgnores, ]), ], }, @@ -119,7 +128,9 @@ export default async () => { config: [ ...baseConfigs, - // Source configurations. + /** + * Source configurations. + */ { files: [ '**/*.' + @@ -161,7 +172,9 @@ export default async () => { languageOptions: { sourceType: 'module' }, // MDX only supports modules. }, - // Adds Node globals for `dev/.files`, as these always run in Node. + /** + * Adds Node globals for `dev/.files`, as these always run in Node. + */ { files: [ '*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScript, ...extensions.byDevGroup.allTypeScript]), // @@ -189,15 +202,23 @@ export default async () => { languageOptions: { globals: { ...globals.node } }, }, - // Baseline JS/TS/JSX/TSX recommended rule configurations. + /** + * Baseline JS/TS/JSX/TSX recommended rule configurations. + * + * - Rules not applied to sandbox|examples. + */ { - // Rules not applied to sandbox|examples. files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScript, ...extensions.byDevGroup.allTypeScript])], ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], rules: { ...eslintJS.configs.recommended.rules }, }, - // JSX/TSX accessbility plugin configurations. + /** + * JSX/TSX accessbility plugin configurations. + * + * - Plugin is loaded for all JSX/TSX. + * - However, rules are not applied to sandbox|examples. + */ { files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScriptReact, ...extensions.byDevGroup.allTypeScriptReact])], plugins: { 'jsx-a11y': pluginJSXA11y }, @@ -207,18 +228,46 @@ export default async () => { ecmaFeatures: { jsx: true }, }, }, - }, + }, // Rules, which are not applied to sandbox|examples. { - // Rules not applied to sandbox|examples. files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScriptReact, ...extensions.byDevGroup.allTypeScriptReact])], ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], rules: { ...pluginJSXA11y.configs.recommended.rules }, }, - // TS/TSX configurations for TypeScript projects. + /** + * Tailwind CSS-in-JSX/TSX plugin configurations. + * + * - Plugin is loaded for all JSX/TSX. + * - However, rules are not applied to sandbox|examples. + */ + { + files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScriptReact, ...extensions.byDevGroup.allTypeScriptReact])], + plugins: { tailwindcss: pluginTailwind }, + settings: { + tailwindcss: { + callees: tailwindSettings.classFunctions, + classRegex: tailwindSettings.classAttributesRegExpStr, + config: path.resolve(projDir, './tailwind.config.mjs'), + + cssFiles: ['!**/*'], // Choosing not to use CSS file scans, for now. + // As of 2023-09-29, this only impacts the `no-custom-classname` rule, which we don’t use. + }, + }, + }, // Rules, which are not applied to sandbox|examples. + { + files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScriptReact, ...extensions.byDevGroup.allTypeScriptReact])], + ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], + rules: { ...pluginTailwind.configs.recommended.rules }, + }, + + /** + * TS/TSX configurations for TypeScript projects. + * + * - Config not applied to MD/MDX fenced code-blocks. + * - MD/MDX fenced code-blocks are handled separately, below. + */ { - // Config not applied to MD/MDX fenced code-blocks. - // MD/MDX fenced code-blocks are handled separately, below. files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allTypeScript])], ignores: [ '**/*.' + @@ -238,10 +287,9 @@ export default async () => { project: ['./tsconfig.json'], }, }, - }, + }, // Specifically for MD/MDX fenced code-blocks. + // Config not applied to any other TypeScript files. { - // Specifically for MD/MDX fenced code-blocks. - // Config not applied to any other TypeScript files. files: [ '**/*.' + extensions.asBracedGlob([...extensions.byVSCodeLang.markdown, ...extensions.byVSCodeLang.mdx]) + @@ -258,10 +306,9 @@ export default async () => { ecmaFeatures: { globalReturn: false }, }, }, - }, + }, // Rules not applied to sandbox|examples. + // Rules not applied to MD/MDX fenced code-blocks. { - // Rules not applied to sandbox|examples. - // Rules not applied to MD/MDX fenced code-blocks. files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allTypeScript])], ignores: [ ...exclusions.sandboxIgnores, @@ -277,10 +324,13 @@ export default async () => { }, }, - // MD/MDX configurations. + /** + * MD/MDX configurations. + * + * - Config not applied to MD/MDX fenced code-blocks. + * - I.e., This is the processor for those fenced code-blocks. + */ { - // Config not applied to MD/MDX fenced code-blocks. - // i.e., This is the processor for those fenced code-blocks. files: ['**/*.' + extensions.asBracedGlob([...extensions.byVSCodeLang.markdown, ...extensions.byVSCodeLang.mdx])], plugins: { mdx: pluginMDX }, @@ -307,28 +357,29 @@ export default async () => { shellscript: 'bash', }, }), - }, + }, // Rules not applied to sandbox|examples. + // Rules not applied to MD/MDX fenced code-blocks. { - // Rules not applied to sandbox|examples. - // Rules not applied to MD/MDX fenced code-blocks. files: ['**/*.' + extensions.asBracedGlob([...extensions.byVSCodeLang.markdown, ...extensions.byVSCodeLang.mdx])], ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], rules: { ...pluginMDX.flat.rules }, - }, + // + }, // MD/MDX fenced code-block rules. + // Rules not applied to sandbox|examples. { - // MD/MDX fenced code-block rules. - // Rules not applied to sandbox|examples. files: ['**/*.' + extensions.asBracedGlob([...extensions.byVSCodeLang.markdown, ...extensions.byVSCodeLang.mdx]) + '/*'], ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], rules: { ...pluginMDX.flatCodeBlocks.rules }, }, - // JS/TS/JSX/TSX/MD/MDX prettier configurations. - // Several rules get disabled to avoid conflicts w/ Prettier. + /** + * JS/TS/JSX/TSX/MD/MDX prettier configurations. + * + * - Applies to all ESLint-able file extensions, such that formatting can occur even if no ESLint rules apply. + * - Several rules get disabled to avoid conflicts w/ our Prettier config. + * - Note that we do _not_ exclude MDX fenced code-blocks or sandbox|examples. + */ { - // Applies to all ESLint-able file extensions. - // Such that formatting can occur even if no ESLint rules apply. - // Note that we do *not* exclude MDX fenced code-blocks or sandbox|examples. files: [ '**/*.' + extensions.asBracedGlob([ @@ -346,10 +397,13 @@ export default async () => { }, }, - // JS/TS/JSX/TSX rule override configurations. - // These are our own overrides against all of the above. + /** + * JS/TS/JSX/TSX rule override configurations. + * + * - These are our own overrides against all of the above. + * - Rules not applied to sandbox|examples. + */ { - // Rules not applied to sandbox|examples. files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allJavaScript, ...extensions.byDevGroup.allTypeScript])], ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], rules: { @@ -367,19 +421,23 @@ export default async () => { destructuredArrayIgnorePattern: '^unusedꓺ', }, ], + 'tailwindcss/no-custom-classname': ['off'], }, }, - // TS/TSX rule override configurations. - // These are our own overrides against all of the above. + /** + * TS/TSX rule override configurations. + * + * - These are our own overrides against all of the above. + * - Rules not applied to sandbox|examples. + */ { - // Rules not applied to sandbox|examples. files: ['**/*.' + extensions.asBracedGlob([...extensions.byDevGroup.allTypeScript])], ignores: [...exclusions.sandboxIgnores, ...exclusions.exampleIgnores], rules: { - 'no-redeclare': 'off', // Disable in favor of TypeScript rule below. - 'no-unused-vars': 'off', // Disable in favor of TypeScript rule below. - 'no-undef': 'off', // Already baked into TypeScript; {@see https://o5p.me/k9TDGC}. + 'no-redeclare': ['off'], // Disable in favor of TypeScript rule below. + 'no-unused-vars': ['off'], // Disable in favor of TypeScript rule below. + 'no-undef': ['off'], // Already baked into TypeScript; {@see https://o5p.me/k9TDGC}. '@typescript-eslint/no-redeclare': ['warn'], '@typescript-eslint/require-await': ['off'], diff --git a/dev/.files/jest/config.mjs b/dev/.files/jest/config.mjs index 9de99426..22d8bc44 100644 --- a/dev/.files/jest/config.mjs +++ b/dev/.files/jest/config.mjs @@ -50,6 +50,7 @@ export default async () => { ...exclusions.backupIgnores, ...exclusions.patchIgnores, ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores, ...exclusions.vcsIgnores, ...exclusions.osIgnores, diff --git a/dev/.files/madrun/config.mjs b/dev/.files/madrun/config.mjs index 12ce1cc6..d37e71fc 100644 --- a/dev/.files/madrun/config.mjs +++ b/dev/.files/madrun/config.mjs @@ -13,42 +13,160 @@ import path from 'node:path'; import url from 'node:url'; +import { $cmd } from '../../../node_modules/@clevercanyon/utilities.node/dist/index.js'; +import wranglerSettings from '../wrangler/settings.mjs'; import events from './includes/events.mjs'; const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); const nodeIncludeFile = path.resolve(__dirname, './includes/node.cjs'); +const distDir = path.resolve(__dirname, '../../../dist'); + +const nodeEnvVars = { NODE_OPTIONS: $cmd.quote([`--require ${$cmd.esc(nodeIncludeFile)}`].join(' ')) }; +const cloudflareEnvVars = { CLOUDFLARE_API_TOKEN: process.env.USER_CLOUDFLARE_TOKEN || '' }; /** * Defines madrun configuration. */ -export default async (/* { cmd, args, ctx } */) => { - /** - * Node options. - */ - const n = 'NODE_OPTIONS=' + // See: . - [ `--require='${nodeIncludeFile}'` ].join(' ') + ' '; // prettier-ignore - +export default async () => { /** * Composition. */ return { - 'envs': n + './dev/.files/bin/envs.mjs {{@}}', - 'install': n + './dev/.files/bin/install.mjs {{@}}', - 'update': n + './dev/.files/bin/update.mjs {{@}}', + /** + * Our own commands. + */ + 'envs': async () => { + return { + env: { ...nodeEnvVars }, + cmds: [['./dev/.files/bin/envs.mjs', '{{@}}']], + }; + }, + 'install': async () => { + return { + env: { ...nodeEnvVars }, + cmds: [['./dev/.files/bin/install.mjs', '{{@}}']], + }; + }, + 'update': async () => { + return { + env: { ...nodeEnvVars }, + cmds: [['./dev/.files/bin/update.mjs', '{{@}}']], + }; + }, + + /** + * Vite-powered commands. + */ + 'dev': async ({ args }) => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'vite', 'dev', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + 'preview': async ({ args }) => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'vite', 'preview', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + 'build': async ({ args }) => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'vite', 'build', ...(args.mode ? [] : ['--mode', 'prod']), '{{@}}']], + }; + }, + + /** + * Test-related commands. + */ + 'jest': async () => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'jest', '{{@}}']], + }; + }, + 'vitest': async ({ args }) => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'vitest', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + 'tests': async ({ args }) => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'vitest', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + 'tests:bench': async ({ args }) => { + return { + env: { ...nodeEnvVars }, + cmds: [['npx', 'vitest', 'bench', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + 'tests:sandbox': async ({ args }) => { + return { + env: { ...nodeEnvVars, VITEST_SANDBOX_ENABLE: 'true' }, + cmds: [['npx', 'vitest', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + 'tests:examples': async ({ args }) => { + return { + env: { ...nodeEnvVars, VITEST_EXAMPLES_ENABLE: 'true' }, + cmds: [['npx', 'vitest', ...(args.mode ? [] : ['--mode', 'dev']), '{{@}}']], + }; + }, + + /** + * Wrangler commands. + */ + 'wrangler': async () => { + return { + env: { ...nodeEnvVars, ...cloudflareEnvVars }, + cmds: [['npx', 'wrangler', '{{@}}']], + }; + }, + 'pages': async ({ args }) => { + return { + env: { ...nodeEnvVars, ...cloudflareEnvVars }, + cmds: [ + [ + 'npx', + 'wrangler', + 'pages', + + // Default `project` command args. + ...('project' === args._?.[1] && 'create' === args._?.[2] ? (args._?.[3] ? [] : [wranglerSettings.defaultProjectName]) : []), + ...('project' === args._?.[1] && 'create' === args._?.[2] ? (args.productionBranch ? [] : ['--production-branch', 'production']) : []), + + // Default `dev` command args. + ...('dev' === args._?.[1] ? (args._?.[2] ? [] : [distDir]) : []), + ...('dev' === args._?.[1] ? (args.liveReload ? [] : ['--live-reload']) : []), + ...('dev' === args._?.[1] ? (args.compatibilityDate ? [] : ['--compatibility-date', wranglerSettings.compatibilityDate]) : []), + ...('dev' === args._?.[1] + ? args.compatibilityFlag || args.compatibilityFlags + ? [] // `--compatibility-flag` is an alias of `--compatibility-flags`. + : wranglerSettings.compatibilityFlags.map((f) => ['--compatibility-flag', f]).flat() + : []), - 'dev': async ({ args }) => n + 'npx vite dev' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', - 'preview': async ({ args }) => n + 'npx vite preview' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', - 'build': async ({ args }) => n + 'npx vite build' + (args.mode ? '' : ' --mode=prod') + ' {{@}}', + // Default `deploy` command args. + ...(['deploy', 'publish'].includes(args._?.[1]) ? (args.projectName ? [] : ['--project-name', wranglerSettings.defaultProjectName]) : []), + ...(['deploy', 'publish'].includes(args._?.[1]) ? (args.branch ? [] : ['--branch', 'production']) : []), - 'tests': async ({ args }) => n + 'npx vitest' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', - 'tests:bench': async ({ args }) => n + 'npx vitest bench' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', - 'tests:sandbox': async ({ args }) => n + 'VITEST_SANDBOX_ENABLE=true npx vitest' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', - 'tests:examples': async ({ args }) => n + 'VITEST_EXAMPLES_ENABLE=true npx vitest' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', + // Default `deployment` command args. + ...('deployment' === args._?.[1] && 'list' === args._?.[2] ? (args.projectName ? [] : ['--project-name', wranglerSettings.defaultProjectName]) : []), + ...('deployment' === args._?.[1] && 'tail' === args._?.[2] ? (args.projectName ? [] : ['--project-name', wranglerSettings.defaultProjectName]) : []), + ...('deployment' === args._?.[1] && 'tail' === args._?.[2] ? (args.environment ? [] : ['--environment', 'production']) : []), - 'jest': n + 'npx jest {{@}}', // Runs project Jest tests. - 'vitest': async ({ args }) => n + 'npx vitest' + (args.mode ? '' : ' --mode=dev') + ' {{@}}', - 'wrangler': n + 'CLOUDFLARE_API_TOKEN="${USER_CLOUDFLARE_TOKEN:-}" npx wrangler {{@}}', + // User-provided args. + '{{@}}', + ], + ], + }; + }, + /** + * Event-driven commands. + */ ...events, // e.g., `on::madrun:default:new`. }; }; diff --git a/dev/.files/madrun/includes/events.mjs b/dev/.files/madrun/includes/events.mjs index 96fd48c9..323b3992 100644 --- a/dev/.files/madrun/includes/events.mjs +++ b/dev/.files/madrun/includes/events.mjs @@ -26,133 +26,135 @@ export default { /** * `$ madrun new` events. */ - 'on::madrun:default:new': [ - /** - * Installs new project. - */ - 'npx @clevercanyon/madrun install project', - - /** - * Configures new project. - */ - async (args) => { + 'on::madrun:default:new': { + cmds: [ /** - * Propagates env vars. + * Installs new project. */ - await u.propagateUserEnvVars(); + ['npx', '@clevercanyon/madrun', 'install', 'project'], /** - * Deletes Dotenv Vault associated with template. + * Configures new project. */ - await fsp.rm(path.resolve(projDir, './.env.me'), { force: true }); - await fsp.rm(path.resolve(projDir, './.env.vault'), { force: true }); - - /** - * Initializes a few variables. - */ - const dirBasename = path.basename(projDir); - - const parentDir = path.dirname(projDir); - const parentDirBasename = path.basename(parentDir); - - const maybeParentDirBrand = $fn.try(() => $brand.get(parentDirBasename))(); // Maybe. - const parentDirOwner = $is.brand(maybeParentDirBrand) ? maybeParentDirBrand.org.slug : parentDirBasename; - - /** - * Updates `./package.json` in new project directory. - */ - await u.updatePkg({ - name: args.pkgName || '@' + parentDirOwner + '/' + dirBasename, - repository: 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename), - homepage: 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '#readme', - bugs: 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '/issues', - - $unset: /* Effectively resets these to default values. */ [ - 'private', // - 'publishConfig.access', - - 'version', - 'license', - 'description', - 'funding', - 'keywords', - - 'author', - 'contributors', - - 'config.c10n.&.github.teams', - 'config.c10n.&.github.labels', - 'config.c10n.&.github.configVersion', - 'config.c10n.&.github.envsVersion', - - 'config.c10n.&.npmjs.teams', - 'config.c10n.&.npmjs.configVersions', - ], - ...(args.pkg ? { $set: { private: false } } : {}), - ...(args.pkg && args.public ? { $set: { 'publishConfig.access': 'public' } } : {}), - }); - - /** - * Updates `./dev/.envs/.env.prod` file, if exists. - */ - const envProdFile = path.resolve(projDir, './dev/.envs/.env.prod'); - - if (fs.existsSync(envProdFile)) { - let envProd = fs.readFileSync(envProdFile).toString(); // Properties. - envProd = envProd.replace(/^(APP_BASE_URL)\s*=\s*[^\r\n]*$/gmu, "$1='https://" + $str.kebabCase(path.basename(args.pkgName || dirBasename)) + ".hop.gdn'"); - await fsp.writeFile(envProdFile, envProd); // Updates `./dev/.envs/.env.prod` file. - } - - /** - * Updates `./README.md` file in new project directory. - */ - const readmeFile = path.resolve(projDir, './README.md'); - - if (fs.existsSync(readmeFile)) { - let readme = fs.readFileSync(readmeFile).toString(); // Markdown. - - readme = readme.replace(/^(#\s+)(@[^/?#\s]+\/[^/?#\s]+)/gmu, '$1' + (args.pkgName || '@' + parentDirOwner + '/' + dirBasename)); - await fsp.writeFile(readmeFile, readme); // Updates `./README.md` file. - } + async ({ args }) => { + /** + * Propagates env vars. + */ + await u.propagateUserEnvVars(); + + /** + * Deletes Dotenv Vault associated with template. + */ + await fsp.rm(path.resolve(projDir, './.env.me'), { force: true }); + await fsp.rm(path.resolve(projDir, './.env.vault'), { force: true }); + + /** + * Initializes a few variables. + */ + const dirBasename = path.basename(projDir); + + const parentDir = path.dirname(projDir); + const parentDirBasename = path.basename(parentDir); + + const maybeParentDirBrand = $fn.try(() => $brand.get(parentDirBasename))(); // Maybe. + const parentDirOwner = $is.brand(maybeParentDirBrand) ? maybeParentDirBrand.org.slug : parentDirBasename; + + /** + * Updates `./package.json` in new project directory. + */ + await u.updatePkg({ + name: args.pkgName || '@' + parentDirOwner + '/' + dirBasename, + repository: 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename), + homepage: 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '#readme', + bugs: 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '/issues', + + $unset: /* Effectively resets these to default values. */ [ + 'private', // + 'publishConfig.access', + + 'version', + 'license', + 'description', + 'funding', + 'keywords', + + 'author', + 'contributors', + + 'config.c10n.&.github.teams', + 'config.c10n.&.github.labels', + 'config.c10n.&.github.configVersion', + 'config.c10n.&.github.envsVersion', + + 'config.c10n.&.npmjs.teams', + 'config.c10n.&.npmjs.configVersions', + ], + ...(args.pkg ? { $set: { private: false } } : {}), + ...(args.pkg && args.public ? { $set: { 'publishConfig.access': 'public' } } : {}), + }); + + /** + * Updates `./dev/.envs/.env.prod` file, if exists. + */ + const envProdFile = path.resolve(projDir, './dev/.envs/.env.prod'); + + if (fs.existsSync(envProdFile)) { + let envProd = fs.readFileSync(envProdFile).toString(); // Properties. + envProd = envProd.replace(/^(APP_BASE_URL)\s*=\s*[^\r\n]*$/gmu, "$1='https://" + $str.kebabCase(path.basename(args.pkgName || dirBasename)) + ".hop.gdn'"); + await fsp.writeFile(envProdFile, envProd); // Updates `./dev/.envs/.env.prod` file. + } - /** - * Initializes this as a new git repository. - */ - await u.spawn('git', ['init']); + /** + * Updates `./README.md` file in new project directory. + */ + const readmeFile = path.resolve(projDir, './README.md'); - /** - * Updates Vite build after the above changes. - */ - if (await u.isViteBuild()) await u.viteBuild(); + if (fs.existsSync(readmeFile)) { + let readme = fs.readFileSync(readmeFile).toString(); // Markdown. - /** - * Saves changes made here as first initial commit. - */ - await u.gitAddCommit('Initializing project directory. [n]'); - - /** - * Attempts to create a remote repository origin at GitHub; if at all possible. - */ - if ('clevercanyon' === parentDirOwner) { - if (process.env.GH_TOKEN && 'owner' === (await u.gistGetC10NUser()).github?.role) { - await u.spawn('gh', ['repo', 'create', parentDirOwner + '/' + dirBasename, '--source=.', args.public ? '--public' : '--private']); - } else { - const origin = 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '.git'; - await u.spawn('git', ['remote', 'add', 'origin', origin]); + readme = readme.replace(/^(#\s+)(@[^/?#\s]+\/[^/?#\s]+)/gmu, '$1' + (args.pkgName || '@' + parentDirOwner + '/' + dirBasename)); + await fsp.writeFile(readmeFile, readme); // Updates `./README.md` file. } - } else if (process.env.USER_GITHUB_USERNAME === parentDirOwner) { - if (process.env.GH_TOKEN) { - await u.spawn('gh', ['repo', 'create', parentDirOwner + '/' + dirBasename, '--source=.', args.public ? '--public' : '--private']); - } else { - const origin = 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '.git'; - await u.spawn('git', ['remote', 'add', 'origin', origin]); + + /** + * Initializes this as a new git repository. + */ + await u.spawn('git', ['init']); + + /** + * Updates Vite build after the above changes. + */ + if (await u.isViteBuild()) await u.viteBuild(); + + /** + * Saves changes made here as first initial commit. + */ + await u.gitAddCommit('Initializing project directory. [n]'); + + /** + * Attempts to create a remote repository origin at GitHub; if at all possible. + */ + if ('clevercanyon' === parentDirOwner) { + if (process.env.GH_TOKEN && 'owner' === (await u.gistGetC10NUser()).github?.role) { + await u.spawn('gh', ['repo', 'create', parentDirOwner + '/' + dirBasename, '--source=.', args.public ? '--public' : '--private']); + } else { + const origin = 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '.git'; + await u.spawn('git', ['remote', 'add', 'origin', origin]); + } + } else if (process.env.USER_GITHUB_USERNAME === parentDirOwner) { + if (process.env.GH_TOKEN) { + await u.spawn('gh', ['repo', 'create', parentDirOwner + '/' + dirBasename, '--source=.', args.public ? '--public' : '--private']); + } else { + const origin = 'https://github.com/' + $url.encode(parentDirOwner) + '/' + $url.encode(dirBasename) + '.git'; + await u.spawn('git', ['remote', 'add', 'origin', origin]); + } } - } - /** - * Signals completion with success. - */ - u.log(await u.finaleBox('Success', 'New project ready.')); - }, - ], + /** + * Signals completion with success. + */ + u.log(await u.finaleBox('Success', 'New project ready.')); + }, + ], + }, }; diff --git a/dev/.files/prettier/config.mjs b/dev/.files/prettier/config.mjs index d5f84572..c301f0f9 100644 --- a/dev/.files/prettier/config.mjs +++ b/dev/.files/prettier/config.mjs @@ -15,6 +15,7 @@ import path from 'node:path'; import { $fs } from '../../../node_modules/@clevercanyon/utilities.node/dist/index.js'; import extensions from '../bin/includes/extensions.mjs'; +import tailwindSettings from '../tailwind/settings.mjs'; const __dirname = $fs.imuDirname(import.meta.url); const projDir = path.resolve(__dirname, '../../..'); @@ -148,7 +149,7 @@ export default async () => { * @see https://o5p.me/wWDiYK */ files: ['*.' + extensions.asBracedGlob([...extensions.byVSCodeLang.python])], - options: { parser: '' }, // N/A ... instead, use . + options: { parser: '' }, // Work-in-progress. For now, use . }, { /** @@ -263,9 +264,9 @@ export default async () => { */ files: ['*.' + extensions.asBracedGlob([...extensions.tailwindPrettierContent])], options: { + tailwindFunctions: tailwindSettings.classFunctions, + tailwindAttributes: tailwindSettings.classAttributes, tailwindConfig: path.resolve(projDir, './tailwind.config.mjs'), - tailwindAttributes: ['class', 'classes', 'className', 'classNames'], - tailwindFunctions: ['$preact.classes'], // See: . }, }, { diff --git a/dev/.files/stylelint/config.mjs b/dev/.files/stylelint/config.mjs index 33a3f813..60518d18 100644 --- a/dev/.files/stylelint/config.mjs +++ b/dev/.files/stylelint/config.mjs @@ -28,6 +28,8 @@ export default async () => { ...exclusions.logIgnores, // ...exclusions.backupIgnores, ...exclusions.patchIgnores, + ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores, ...exclusions.vcsIgnores, ...exclusions.osIgnores, diff --git a/dev/.files/tailwind/config.mjs b/dev/.files/tailwind/config.mjs index 9ac99321..092001b0 100644 --- a/dev/.files/tailwind/config.mjs +++ b/dev/.files/tailwind/config.mjs @@ -69,19 +69,26 @@ export default /* not async compatible */ () => { ], }, screens: { - 'sm': { min: '320px' }, + 'sm': { min: '1px' }, 'md': { min: '480px' }, 'lg': { min: '960px' }, 'xl': { min: '1280px' }, '2xl': { min: '1440px' }, '3xl': { min: '2560px' }, - 'phone': { min: '320px' }, + 'phone': { min: '1px' }, 'tablet': { min: '480px' }, 'notebook': { min: '960px' }, 'laptop': { min: '1280px' }, 'desktop': { min: '1440px' }, 'widescreen': { min: '2560px' }, + + 'phone-only': { min: '1px', max: '479px' }, + 'tablet-only': { min: '480px', max: '959px' }, + 'notebook-only': { min: '960px', max: '1279px' }, + 'laptop-only': { min: '1280px', max: '1439px' }, + 'desktop-only': { min: '1440px', max: '2559px' }, + 'widescreen-only': { min: '2560px' /* ... infinity */ }, }, }, content: [ @@ -105,6 +112,7 @@ export default /* not async compatible */ () => { ...exclusions.backupIgnores, ...exclusions.patchIgnores, ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores // .filter((ignore) => ignore !== '**/node_modules/**'), diff --git a/dev/.files/tailwind/settings.mjs b/dev/.files/tailwind/settings.mjs new file mode 100644 index 00000000..ba72eca2 --- /dev/null +++ b/dev/.files/tailwind/settings.mjs @@ -0,0 +1,20 @@ +/** + * Tailwind CSS settings file. + * + * Tailwind is not aware of this config file's location. We use the exports provided by this file to centralize a few + * settings associated with Tailwind that are reused across various tools that integrate with Tailwind CSS. + * + * @note PLEASE DO NOT EDIT THIS FILE! + * @note This entire file will be updated automatically. + * @note Instead of editing here, please review . + */ + +/** + * Defines Tailwind settings. + */ +export default { + classFunctions: ['$preact.classes', 'classnames'], + classAttributesRegExpStr: '^class(?:es|Names?)?$', + classAttributesRegExp: new RegExp('^class(?:es|Names?)?$', 'u'), + classAttributes: ['class', 'classes', 'className', 'classNames'], +}; diff --git a/dev/.files/typescript/config.mjs b/dev/.files/typescript/config.mjs index d619f1e5..e6290040 100755 --- a/dev/.files/typescript/config.mjs +++ b/dev/.files/typescript/config.mjs @@ -60,6 +60,7 @@ export default async () => { ...exclusions.backupIgnores, ...exclusions.patchIgnores, ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores, ...exclusions.vcsIgnores, ...exclusions.osIgnores, @@ -86,7 +87,7 @@ export default async () => { target: esVersion.lcnYear, lib: [esVersion.lcnYear], - types: ['vite/client', '@types/mdx'], + types: ['vite/client', '@types/mdx', 'unplugin-icons/types/preact'], jsx: 'react-jsx', jsxImportSource: 'preact', diff --git a/dev/.files/vite/config.mjs b/dev/.files/vite/config.mjs index 2756f035..4371f8f0 100644 --- a/dev/.files/vite/config.mjs +++ b/dev/.files/vite/config.mjs @@ -23,6 +23,7 @@ import viteA16sDir from './includes/a16s/dir.mjs'; import viteC10nConfig from './includes/c10n/config.mjs'; import viteEJSConfig from './includes/ejs/config.mjs'; import viteESBuildConfig from './includes/esbuild/config.mjs'; +import viteIconsConfig from './includes/icons/config.mjs'; import viteMDXConfig from './includes/mdx/config.mjs'; import viteMinifyConfig from './includes/minify/config.mjs'; import vitePkgUpdates from './includes/package/updates.mjs'; @@ -159,6 +160,7 @@ export default async ({ mode, command, ssrBuild: isSSRBuild }) => { * Configures plugins for Vite. */ const plugins = [ + await viteIconsConfig({}), await viteMDXConfig({ projDir }), await viteEJSConfig({ mode, projDir, srcDir, pkg, env }), await viteMinifyConfig({ mode }), diff --git a/dev/.files/vite/includes/ssl/config.mjs b/dev/.files/vite/includes/icons/config.mjs similarity index 52% rename from dev/.files/vite/includes/ssl/config.mjs rename to dev/.files/vite/includes/icons/config.mjs index 5ddd4d4d..9f4bf4f4 100644 --- a/dev/.files/vite/includes/ssl/config.mjs +++ b/dev/.files/vite/includes/icons/config.mjs @@ -1,5 +1,5 @@ /** - * SSL config file. + * Icons config file. * * Vite is not aware of this config file's location. * @@ -7,16 +7,22 @@ * @note This entire file will be updated automatically. * @note Instead of editing here, please review . * - * @see https://github.com/vitejs/vite-plugin-basic-ssl + * @see https://www.npmjs.com/package/unplugin-icons */ /** - * Configures SSL for Vite. + * Configures icons for Vite. * * @param props Props from vite config file driver. * - * @returns SSL configuration. + * @returns Icon configuration. */ export default async (/* {} */) => { - return (await import('@vitejs/plugin-basic-ssl')).default(); + return (await import('unplugin-icons/vite')).default({ + compiler: 'jsx', + jsx: 'preact', + scale: 1.2, + defaultStyle: '', + defaultClass: '', + }); }; diff --git a/dev/.files/vite/includes/mdx/config.mjs b/dev/.files/vite/includes/mdx/config.mjs index 003845be..c7bcb85a 100644 --- a/dev/.files/vite/includes/mdx/config.mjs +++ b/dev/.files/vite/includes/mdx/config.mjs @@ -30,6 +30,7 @@ export default async ({ projDir }) => { ...exclusions.backupIgnores, ...exclusions.patchIgnores, ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores, ...exclusions.vcsIgnores, ...exclusions.osIgnores, diff --git a/dev/.files/vite/includes/vitest/config.mjs b/dev/.files/vite/includes/vitest/config.mjs index dd9dc7de..4758148d 100644 --- a/dev/.files/vite/includes/vitest/config.mjs +++ b/dev/.files/vite/includes/vitest/config.mjs @@ -51,6 +51,7 @@ export default async ({ projDir, srcDir, logsDir, targetEnv, vitestSandboxEnable ...exclusions.backupIgnores, ...exclusions.patchIgnores, ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, ...exclusions.pkgIgnores, ...exclusions.vcsIgnores, ...exclusions.osIgnores, diff --git a/dev/.files/vscode/config.mjs b/dev/.files/vscode/config.mjs index 90b7f232..8431f3ce 100755 --- a/dev/.files/vscode/config.mjs +++ b/dev/.files/vscode/config.mjs @@ -22,6 +22,7 @@ import { $path } from '../../../node_modules/@clevercanyon/utilities/dist/index. import exclusions from '../bin/includes/exclusions.mjs'; import extensions from '../bin/includes/extensions.mjs'; import u from '../bin/includes/utilities.mjs'; +import tailwindSettings from '../tailwind/settings.mjs'; const __dirname = $fs.imuDirname(import.meta.url); const projDir = path.resolve(__dirname, '../../..'); @@ -219,7 +220,21 @@ export default async () => { * Extension options. */ - 'extensions.ignoreRecommendations': false, + 'extensions.ignoreRecommendations': true, // Let’s not nag ourselves. + + /** + * Native lint options. + */ + + 'css.validate': false, + 'scss.validate': false, + 'less.validate': false, + + 'json.validate.enable': true, + 'javascript.validate.enable': true, + 'typescript.validate.enable': true, + // . + 'javascript.suggestionActions.enabled': false, /** * ESLint options. @@ -245,22 +260,40 @@ export default async () => { 'typescriptreact', ], 'eslint.options': { - 'overrideConfigFile': 'eslint.config.mjs', + 'overrideConfigFile': './eslint.config.mjs', }, - 'javascript.validate.enable': true, - 'typescript.validate.enable': true, - // . - 'javascript.suggestionActions.enabled': false, /** * Stylelint options. */ - 'css.validate': false, - 'scss.validate': false, - 'less.validate': false, 'stylelint.validate': ['scss', 'css'], + /** + * Tailwind CSS options. + * + * This extension adds a `tailwindcss` language to VS Code that we don’t use. Not sure why it even exists, + * because the language mapping that this extension does already covers CSS files. + */ + + 'tailwindCSS.validate': true, + 'tailwindCSS.experimental.configFile': './tailwind.config.mjs', + 'tailwindCSS.classAttributes': tailwindSettings.classAttributes, + 'tailwindCSS.includeLanguages': {}, // Defaults ok; {@see https://o5p.me/kaPo3F}. + 'tailwindCSS.files.exclude': [ + ...(!(await u.isPkgRepo('clevercanyon/skeleton')) ? [...exclusions.devDotFileIgnores] : []), + ...exclusions.logIgnores, // + ...exclusions.backupIgnores, + ...exclusions.patchIgnores, + ...exclusions.editorIgnores, + ...exclusions.toolingIgnores, + ...exclusions.pkgIgnores, + ...exclusions.vcsIgnores, + ...exclusions.osIgnores, + ...exclusions.lockIgnores, + ...exclusions.distIgnores, + ], + /** * Markdown options. */ diff --git a/dev/.files/wrangler/config.mjs b/dev/.files/wrangler/config.mjs index 39cda7d9..81ced773 100755 --- a/dev/.files/wrangler/config.mjs +++ b/dev/.files/wrangler/config.mjs @@ -22,20 +22,13 @@ import path from 'node:path'; import { $fs } from '../../../node_modules/@clevercanyon/utilities.node/dist/index.js'; -import { $path, $str, $url } from '../../../node_modules/@clevercanyon/utilities/dist/index.js'; +import { $path, $url } from '../../../node_modules/@clevercanyon/utilities/dist/index.js'; import extensions from '../bin/includes/extensions.mjs'; -import u from '../bin/includes/utilities.mjs'; +import wranglerSettings from './settings.mjs'; const __dirname = $fs.imuDirname(import.meta.url); const projDir = path.resolve(__dirname, '../../..'); -const pkg = await u.pkg(); // From utilities. - -const defaultZoneName = 'hop.gdn'; -const defaultZoneDomain = 'workers.hop.gdn'; -const defaultAccountId = 'f1176464a976947aa5665d989814a4b1'; -const defaultWorkerName = $str.kebabCase(path.basename(pkg.name || ''), { asciiOnly: true }); - /** * Defines Wrangler configuration. */ @@ -46,14 +39,18 @@ export default async () => { const baseConfig = { // Platform settings. - compatibility_date: '2023-08-15', send_metrics: false, // Don't share usage. usage_model: 'bundled', // 10M/mo free + $0.50/M. + // Compatibility settings. + + compatibility_date: wranglerSettings.compatibilityDate, + compatibility_flags: wranglerSettings.compatibilityFlags, + // Worker name & account ID. - name: defaultWorkerName, - account_id: defaultAccountId, + name: wranglerSettings.defaultWorkerName, + account_id: wranglerSettings.defaultAccountId, // Workers.dev configuration. @@ -148,8 +145,8 @@ export default async () => { // Worker route configuration. route: { - zone_name: defaultZoneName, - pattern: defaultZoneDomain + '/' + $url.encode(defaultWorkerName) + '/*', + zone_name: wranglerSettings.defaultZoneName, + pattern: wranglerSettings.defaultZoneDomain + '/' + $url.encode(wranglerSettings.defaultWorkerName) + '/*', }, // Other environments used by this worker. diff --git a/dev/.files/wrangler/settings.mjs b/dev/.files/wrangler/settings.mjs new file mode 100755 index 00000000..ecaec536 --- /dev/null +++ b/dev/.files/wrangler/settings.mjs @@ -0,0 +1,31 @@ +/** + * Wrangler settings file. + * + * Wrangler is not aware of this config file's location. We use the exports provided by this file to centralize a few + * settings associated with Wrangler that are reused across various tools that integrate with Wrangler. + * + * @note PLEASE DO NOT EDIT THIS FILE! + * @note This entire file will be updated automatically. + * @note Instead of editing here, please review . + */ + +import path from 'node:path'; +import { $str } from '../../../node_modules/@clevercanyon/utilities/dist/index.js'; +import u from '../bin/includes/utilities.mjs'; + +const pkg = await u.pkg(); // From utilities. + +/** + * Defines Wrangler settings. + */ +export default { + compatibilityDate: '2023-08-15', + compatibilityFlags: [], // None at this time. + + defaultZoneName: 'hop.gdn', + defaultZoneDomain: 'workers.hop.gdn', + defaultAccountId: 'f1176464a976947aa5665d989814a4b1', + + defaultWorkerName: $str.kebabCase(path.basename(pkg.name || ''), { asciiOnly: true }), + defaultProjectName: $str.kebabCase(path.basename(pkg.name || ''), { asciiOnly: true }), +}; diff --git a/package-lock.json b/package-lock.json index f724dcaf..c8713304 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@clevercanyon/micromatch.fork", - "version": "4.0.62", + "version": "4.0.63", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@clevercanyon/micromatch.fork", - "version": "4.0.62", + "version": "4.0.63", "cpu": [ "x64", "arm64" @@ -17,11 +17,11 @@ "linux" ], "dependencies": { - "braces": "npm:@clevercanyon/braces.fork@^3.0.59", - "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.58" + "braces": "npm:@clevercanyon/braces.fork@^3.0.60", + "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.59" }, "devDependencies": { - "@clevercanyon/dev-deps": "^1.0.238" + "@clevercanyon/dev-deps": "^1.0.242" }, "engines": { "node": "^19.1.0 || ^20.5.0", @@ -65,6 +65,83 @@ "node": ">=6.0.0" } }, + "node_modules/@antfu/install-pkg": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", + "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", + "dev": true, + "dependencies": { + "execa": "^5.1.1", + "find-up": "^5.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/install-pkg/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.6.tgz", + "integrity": "sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -766,9 +843,9 @@ "dev": true }, "node_modules/@clevercanyon/dev-deps": { - "version": "1.0.238", - "resolved": "https://registry.npmjs.org/@clevercanyon/dev-deps/-/dev-deps-1.0.238.tgz", - "integrity": "sha512-EHuXlkiE4IQjKvDdrVCaU6v3t465hSCCUBXXljXqAI9IwXXRopgSX7gcAuBwugw4SnDgndbYqxgZCxsQuWbaOA==", + "version": "1.0.242", + "resolved": "https://registry.npmjs.org/@clevercanyon/dev-deps/-/dev-deps-1.0.242.tgz", + "integrity": "sha512-KHTKI+bzhl96BCNXSs11M+OgyLN8EMSF2pfiRa7XVRWIgDhU5udNg2+wo4YgoOKUL09f72icjnIEcIR9CJ/ULA==", "cpu": [ "x64", "arm64" @@ -779,14 +856,15 @@ "linux" ], "dependencies": { - "@clevercanyon/madrun": "^1.0.103", - "@clevercanyon/utilities": "^1.0.284", - "@clevercanyon/utilities.bash": "^1.0.128", - "@clevercanyon/utilities.cfp": "^1.0.98", - "@clevercanyon/utilities.node": "^1.0.111", + "@clevercanyon/madrun": "^1.0.109", + "@clevercanyon/utilities": "^1.0.286", + "@clevercanyon/utilities.bash": "^1.0.129", + "@clevercanyon/utilities.cfp": "^1.0.99", + "@clevercanyon/utilities.node": "^1.0.112", "@cloudflare/workers-types": "^4.20230922.0", "@eslint/js": "^8.48.0", "@iarna/toml": "^2.2.5", + "@iconify/json": "^2.2.122", "@mdx-js/mdx": "^2.3.0", "@mdx-js/rollup": "^2.3.0", "@microflash/rehype-starry-night": "^2.1.1", @@ -796,6 +874,8 @@ "@prettier/plugin-php": "^0.20.1", "@prettier/plugin-ruby": "^4.0.2", "@prettier/plugin-xml": "^3.2.1", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0", "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.10", "@testing-library/preact": "^3.2.3", @@ -804,15 +884,15 @@ "@types/luxon": "^3.3.2", "@types/mdx": "^2.0.8", "@types/micromatch": "^4.0.3", - "@types/node": "^18.18.0", + "@types/node": "^18.18.1", "@types/semver": "^7.5.3", - "@types/yargs": "^17.0.25", + "@types/yargs": "^17.0.26", "@types/yargs-parser": "^21.0.1", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", - "@vitest/browser": "^0.34.5", - "@vitest/coverage-v8": "^0.34.5", - "@vitest/ui": "^0.34.5", + "@vitest/browser": "^0.34.6", + "@vitest/coverage-v8": "^0.34.6", + "@vitest/ui": "^0.34.6", "browserslist-generator": "2.0.3", "dotenv": "^16.3.1", "dotenv-vault": "^1.25.0", @@ -821,16 +901,17 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-mdx": "^2.2.0", "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-tailwindcss": "^3.13.0", "globals": "^13.22.0", "jest": "^29.7.0", "jsdom": "^21.1.2", "libsodium-wrappers": "^0.7.13", "madge": "^6.1.0", "make-synchronous": "^1.0.0", - "postcss": "^8.4.30", + "postcss": "^8.4.31", "postcss-preset-env": "^9.1.4", "postcss-safe-parser": "^6.0.0", - "postcss-scss": "^4.0.8", + "postcss-scss": "^4.0.9", "preact": "^10.18.0", "prettier": "^3.0.3", "prettier-plugin-ini": "^1.1.0", @@ -860,12 +941,13 @@ "stylelint-scss": "^5.2.1", "tailwindcss": "^3.3.3", "typescript": "^5.2.2", + "unplugin-icons": "^0.17.0", "vite": "^4.4.9", "vite-plugin-ejs": "^1.6.4", "vite-plugin-minify": "^1.5.2", - "vitest": "^0.34.5", + "vitest": "^0.34.6", "vitest-environment-miniflare": "^2.14.1", - "webdriverio": "^8.16.15", + "webdriverio": "^8.16.17", "wrangler": "^3.10.1" }, "engines": { @@ -877,9 +959,9 @@ } }, "node_modules/@clevercanyon/madrun": { - "version": "1.0.104", - "resolved": "https://registry.npmjs.org/@clevercanyon/madrun/-/madrun-1.0.104.tgz", - "integrity": "sha512-x5myFEqqRTssK1TH1BUVtATPccjYzLnVq0zjVLr2SRM1WW3QeDBcqCFbIB7Rce9+avvrKLYASoOIpyHnF90lyA==", + "version": "1.0.110", + "resolved": "https://registry.npmjs.org/@clevercanyon/madrun/-/madrun-1.0.110.tgz", + "integrity": "sha512-+YperhP/cSQ1DnCamnwKxIiYudLtC1y6LU/VxajNAr9re+JD2x9aW8F04Cr1M3vKiPDHE35R/UNvChJSLloSaA==", "cpu": [ "x64", "arm64" @@ -890,8 +972,8 @@ "linux" ], "dependencies": { - "@clevercanyon/utilities": "^1.0.284", - "@clevercanyon/utilities.node": "^1.0.111" + "@clevercanyon/utilities": "^1.0.286", + "@clevercanyon/utilities.node": "^1.0.112" }, "bin": { "madrun": "dist/bin/cli.js" @@ -905,9 +987,9 @@ } }, "node_modules/@clevercanyon/preact-iso.fork": { - "version": "2.3.66", - "resolved": "https://registry.npmjs.org/@clevercanyon/preact-iso.fork/-/preact-iso.fork-2.3.66.tgz", - "integrity": "sha512-96PUv3B3mEMVM5Xr9DiaotLCgdPfqTgZxBrz7Jhh/nmrf2w4RTWR65kyDCNa/goQ88vM3D6GsaxpSXQnuWJj9g==", + "version": "2.3.67", + "resolved": "https://registry.npmjs.org/@clevercanyon/preact-iso.fork/-/preact-iso.fork-2.3.67.tgz", + "integrity": "sha512-ZG0a9fA6Wk/v5C/aceOelmN6z9MNa7tU3CR7WVNfI9qXR3cV8BUe5zDiP6/tD068eNZDS0f1a9W7CmENTjX7fA==", "cpu": [ "x64", "arm64" @@ -931,9 +1013,9 @@ } }, "node_modules/@clevercanyon/split-cmd.fork": { - "version": "1.0.60", - "resolved": "https://registry.npmjs.org/@clevercanyon/split-cmd.fork/-/split-cmd.fork-1.0.60.tgz", - "integrity": "sha512-I4bixdjrGcSVdNNxTGj4VUPP9bJxn+5b4CdzYyTqoldHgg+VXUxh6XoSquzKF5Aoj6nWNznXkt3f8zUiCkiptA==", + "version": "1.0.61", + "resolved": "https://registry.npmjs.org/@clevercanyon/split-cmd.fork/-/split-cmd.fork-1.0.61.tgz", + "integrity": "sha512-xOYD5X8WODHg9+Iwigdih6/sVqDCffLy8BCy1qk+erRdzZ3I7K9Ext4PLSpJfyzs75UDT13r7/en3J+rBlqO6A==", "cpu": [ "x64", "arm64" @@ -953,9 +1035,9 @@ } }, "node_modules/@clevercanyon/utilities": { - "version": "1.0.284", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities/-/utilities-1.0.284.tgz", - "integrity": "sha512-zx0u/qJlq3W1N4P2tOEqIv5NVKKUVtkDl1CrFDNoWlMZB28rEfLcWYLYl3sl/sGGEMbpJZ6i4drb2K/UDy2cnQ==", + "version": "1.0.286", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities/-/utilities-1.0.286.tgz", + "integrity": "sha512-7wzXBxqFM4NeWSfDT2a1x6XyHSiVRTmNLnfRjheJ29leWEeLROEw64XGlM4cDwqaCczfPfRa4Rhs8mJyoMGpqw==", "cpu": [ "x64", "arm64" @@ -973,12 +1055,12 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/preact-iso.fork": "^2.3.66", + "@clevercanyon/preact-iso.fork": "^2.3.67", "ignore": "^5.2.4", "ip-regex": "^5.0.0", "luxon": "^3.4.3", "micro-memoize": "^4.1.2", - "micromatch": "npm:@clevercanyon/micromatch.fork@^4.0.62", + "micromatch": "npm:@clevercanyon/micromatch.fork@^4.0.63", "preact": "^10.18.0", "preact-render-to-string": "^6.2.1", "react": "npm:@preact/compat@^17.1.2", @@ -987,9 +1069,9 @@ } }, "node_modules/@clevercanyon/utilities.bash": { - "version": "1.0.128", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.bash/-/utilities.bash-1.0.128.tgz", - "integrity": "sha512-0YyXr3Ba2NObF/JxKVDcTOUgaOt4uvkbUeNk2j7KfCfZEDEs6Drqi0sD4WRzlkZMv3FYTOikYUK3DO1gClgSWg==", + "version": "1.0.129", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.bash/-/utilities.bash-1.0.129.tgz", + "integrity": "sha512-fUoYQLd1ASdThSaB1AKa9hF0KWprwN4VyK7LFNxsErfOxbNrrOE6ciwlVrGyJbPu7haAGoHa/uXsp2N3gGWFxQ==", "cpu": [ "x64", "arm64" @@ -1007,14 +1089,14 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.280", - "@clevercanyon/utilities.node": "^1.0.110" + "@clevercanyon/utilities": "^1.0.285", + "@clevercanyon/utilities.node": "^1.0.112" } }, "node_modules/@clevercanyon/utilities.cfp": { - "version": "1.0.98", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfp/-/utilities.cfp-1.0.98.tgz", - "integrity": "sha512-KwK23UpOZO9XNhVEohNc/m9j2aZMlqhkcSgPNzlZWECtYHGVEcVtHYyWKUm+ib31kCMGoswg6YXsy6o0SebVVg==", + "version": "1.0.99", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfp/-/utilities.cfp-1.0.99.tgz", + "integrity": "sha512-eaWh23XKqzDWJDM48UoIz/iL5CAeeUAhfyqMrHHlS8V+be2d2ERkB+Q26yqsEvlsXIm9jIAYPbSBjFkCksYBAw==", "cpu": [ "x64", "arm64" @@ -1032,15 +1114,15 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.281", - "@clevercanyon/utilities.cfw": "^1.0.106", + "@clevercanyon/utilities": "^1.0.285", + "@clevercanyon/utilities.cfw": "^1.0.108", "@clevercanyon/utilities.web": "^1.0.76" } }, "node_modules/@clevercanyon/utilities.cfw": { - "version": "1.0.107", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfw/-/utilities.cfw-1.0.107.tgz", - "integrity": "sha512-MmOIme3AIVmnHphbNfY1TVTVl5HhQEXK6DyCGxCSyY4bTviWlPhSvxI+v/dDPkOIdPnhILne3toKbcNsYslEGg==", + "version": "1.0.108", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.cfw/-/utilities.cfw-1.0.108.tgz", + "integrity": "sha512-Imhr5wTS/OJ1gG+bYX4pmNfdMeLmcY2riv41yOaXBNRAY+IfnpmIkM8G7UXN/+zCoZFctRvjZ9oXFXZECpP+7w==", "cpu": [ "x64", "arm64" @@ -1059,14 +1141,14 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.284", + "@clevercanyon/utilities": "^1.0.285", "@cloudflare/kv-asset-handler": "^0.2.0" } }, "node_modules/@clevercanyon/utilities.node": { - "version": "1.0.111", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.node/-/utilities.node-1.0.111.tgz", - "integrity": "sha512-JlEVZt04SYTJz4m8QFJbD+B9uPvFV25WyPYs1q0/09cYNLL1jGx5HY6hsDjRXNG7d0g9PIoWcJEsrrXwL0p+0Q==", + "version": "1.0.112", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.node/-/utilities.node-1.0.112.tgz", + "integrity": "sha512-QOMke9944B9k1waszt1Ul8E2XVnspev9kd8bjPD3LzuaLCPsZ5UosxE77RljMja1kczsV34SGB43B+ZeZF/QTw==", "cpu": [ "x64", "arm64" @@ -1084,8 +1166,8 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/split-cmd.fork": "^1.0.60", - "@clevercanyon/utilities": "^1.0.284", + "@clevercanyon/split-cmd.fork": "^1.0.61", + "@clevercanyon/utilities": "^1.0.285", "archiver": "^5.3.2", "boxen": "^7.1.1", "chalk": "^5.3.0", @@ -1095,16 +1177,16 @@ "globby": "^13.2.2", "prettier": "^3.0.3", "shescape": "^2.0.0", - "spawn-please": "npm:@clevercanyon/spawn-please.fork@^2.0.54", + "spawn-please": "npm:@clevercanyon/spawn-please.fork@^2.0.55", "term-img": "^6.0.0", "yargs": "^17.7.2", "yargs-parser": "^21.1.1" } }, "node_modules/@clevercanyon/utilities.web": { - "version": "1.0.76", - "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.web/-/utilities.web-1.0.76.tgz", - "integrity": "sha512-P2nonIdiyiMtixmjxN1AmyBT8Qa6Rn+hzAv36LSF1C5lfzRT93qT0LKpY81cRnsa8KGDJJsHgiPZe6Hv0iS4HQ==", + "version": "1.0.77", + "resolved": "https://registry.npmjs.org/@clevercanyon/utilities.web/-/utilities.web-1.0.77.tgz", + "integrity": "sha512-r3Xhp4DeQ3xwh6DgAjSVWtygQxvdq1A3cf0imB01H0s1ftbQbQjcuZoIEESLdxPPefI4gJL7MYQCKYI5yVSTPQ==", "cpu": [ "x64", "arm64" @@ -1123,7 +1205,7 @@ "url": "https://github.com/sponsors/clevercanyon" }, "peerDependencies": { - "@clevercanyon/utilities": "^1.0.280" + "@clevercanyon/utilities": "^1.0.285" } }, "node_modules/@cloudflare/kv-asset-handler": { @@ -2564,24 +2646,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@eslint/js": { "version": "8.50.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", @@ -2640,6 +2704,36 @@ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, + "node_modules/@iconify/json": { + "version": "2.2.122", + "resolved": "https://registry.npmjs.org/@iconify/json/-/json-2.2.122.tgz", + "integrity": "sha512-hVMVyLska1jAhoNSLdL/WVuMPCOYafwIpsNYoyboCHEZ2TNu6qoWbV4wVY1LU6R7anwWJ7kn1gXNklxqS7eb6g==", + "dev": true, + "dependencies": { + "@iconify/types": "*", + "pathe": "^1.1.0" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true + }, + "node_modules/@iconify/utils": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.11.tgz", + "integrity": "sha512-M/w3PkN8zQYXi8N6qK/KhnYMfEbbb6Sk8RZVn8g+Pmmu5ybw177RpsaGwpziyHeUsu4etrexYSWq3rwnIqzYCg==", + "dev": true, + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.5", + "@iconify/types": "^2.0.0", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.4.3" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2700,6 +2794,15 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -2722,6 +2825,19 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2779,6 +2895,12 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -3855,6 +3977,15 @@ "node": ">=14.0.0" } }, + "node_modules/@oclif/core/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@oclif/core/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -3909,6 +4040,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@oclif/core/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@oclif/core/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3918,6 +4062,12 @@ "node": ">=8" } }, + "node_modules/@oclif/core/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@oclif/core/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4018,6 +4168,15 @@ "node": ">=14.0.0" } }, + "node_modules/@oclif/plugin-help/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@oclif/plugin-help/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4072,6 +4231,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@oclif/plugin-help/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@oclif/plugin-help/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4081,6 +4253,12 @@ "node": ">=8" } }, + "node_modules/@oclif/plugin-help/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@oclif/plugin-help/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4177,6 +4355,15 @@ "node": ">=14.0.0" } }, + "node_modules/@oclif/plugin-not-found/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@oclif/plugin-not-found/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4231,6 +4418,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@oclif/plugin-not-found/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@oclif/plugin-not-found/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4240,6 +4440,12 @@ "node": ">=8" } }, + "node_modules/@oclif/plugin-not-found/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@oclif/plugin-not-found/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4345,6 +4551,15 @@ "node": ">=14.0.0" } }, + "node_modules/@oclif/plugin-update/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@oclif/plugin-update/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4399,6 +4614,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@oclif/plugin-update/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@oclif/plugin-update/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4408,6 +4636,12 @@ "node": ">=8" } }, + "node_modules/@oclif/plugin-update/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@oclif/plugin-update/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4507,6 +4741,15 @@ "node": ">=14.0.0" } }, + "node_modules/@oclif/plugin-warn-if-update-available/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@oclif/plugin-warn-if-update-available/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4561,6 +4804,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@oclif/plugin-warn-if-update-available/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@oclif/plugin-warn-if-update-available/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4570,6 +4826,12 @@ "node": ">=8" } }, + "node_modules/@oclif/plugin-warn-if-update-available/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@oclif/plugin-warn-if-update-available/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5026,6 +5288,219 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -5469,9 +5944,9 @@ } }, "node_modules/@types/node": { - "version": "18.18.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.0.tgz", - "integrity": "sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw==", + "version": "18.18.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.1.tgz", + "integrity": "sha512-3G42sxmm0fF2+Vtb9TJQpnjmP+uKlWvFa8KoEGquh4gqRmoUG/N0ufuhikw6HEsdG2G2oIKhog1GCTfz9v5NdQ==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -5550,9 +6025,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.25", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.25.tgz", - "integrity": "sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==", + "version": "17.0.26", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.26.tgz", + "integrity": "sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -5792,9 +6267,9 @@ } }, "node_modules/@vitest/browser": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-0.34.5.tgz", - "integrity": "sha512-cIykJtWNV9T/X2C2ldwKti+M7VWC/T54YUO56TGyOlPUIKXj3WAMYcpfZTbH21dV0PawP7Z2MZ+aGLEUhurrjw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-0.34.6.tgz", + "integrity": "sha512-XCIGROVgw3L+PwYw/T2l+HP/SPrXvh2MfmQNU3aULl5ekE+QVj9A1RYu/1mcYXdac9ES4ahxUz6n4wgcVd9tbA==", "dev": true, "dependencies": { "estree-walker": "^3.0.3", @@ -5810,9 +6285,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.5.tgz", - "integrity": "sha512-97xjhRTSdmeeHCm2nNHhT3hLsMYkAhHXm/rwj6SZ3voka8xiCJrwgtfIjoZIFEL4OO0KezGmVuHWQXcMunULIA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz", + "integrity": "sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -5835,26 +6310,26 @@ } }, "node_modules/@vitest/expect": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.5.tgz", - "integrity": "sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.5", - "@vitest/utils": "0.34.5", - "chai": "^4.3.7" + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", - "integrity": "sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.5", + "@vitest/utils": "0.34.6", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -5890,9 +6365,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.5.tgz", - "integrity": "sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", "dev": true, "dependencies": { "magic-string": "^0.30.1", @@ -5936,9 +6411,9 @@ "dev": true }, "node_modules/@vitest/spy": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.5.tgz", - "integrity": "sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", "dev": true, "dependencies": { "tinyspy": "^2.1.1" @@ -5948,12 +6423,12 @@ } }, "node_modules/@vitest/ui": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.34.5.tgz", - "integrity": "sha512-nK3Ny7fQgoTJMCGXLzYL0oo1ePtruRM9eYT1Y8esQx8fHj05davqVgqWv4Kd+Yy8PfzyrduTx1EYBdSMIbQh8A==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.34.6.tgz", + "integrity": "sha512-/fxnCwGC0Txmr3tF3BwAbo3v6U2SkBTGR9UB8zo0Ztlx0BTOXHucE0gDHY7SjwEktCOHatiGmli9kZD6gYSoWQ==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.5", + "@vitest/utils": "0.34.6", "fast-glob": "^3.3.0", "fflate": "^0.8.0", "flatted": "^3.2.7", @@ -5969,9 +6444,9 @@ } }, "node_modules/@vitest/utils": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.5.tgz", - "integrity": "sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, "dependencies": { "diff-sequences": "^29.4.3", @@ -6015,14 +6490,14 @@ "dev": true }, "node_modules/@wdio/config": { - "version": "8.16.15", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.15.tgz", - "integrity": "sha512-2XRSyQy5Rui+sr7ah+2tMiQds1wT1EStf9QO7xyxo/sn7cpjs+/kaBm00LvMB5tFrsHBFbd3lkpejs/SwxBoDA==", + "version": "8.16.17", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.17.tgz", + "integrity": "sha512-9+AY73Dp6N/CHzUYe4KbYV8wcKh3mpzBsMKieNlwXi1bQ3AAirTjOXzQ2BoQn6fg/Yd1GxmT3F0YsVS+bF1PmQ==", "dev": true, "dependencies": { - "@wdio/logger": "8.11.0", + "@wdio/logger": "8.16.17", "@wdio/types": "8.16.12", - "@wdio/utils": "8.16.15", + "@wdio/utils": "8.16.17", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -6098,6 +6573,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/@wdio/config/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/@wdio/config/node_modules/lines-and-columns": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", @@ -6225,9 +6709,9 @@ } }, "node_modules/@wdio/logger": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz", - "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==", + "version": "8.16.17", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.16.17.tgz", + "integrity": "sha512-zeQ41z3T+b4IsrriZZipayXxLNDuGsm7TdExaviNGojPVrIsQUCSd/FvlLHM32b7ZrMyInHenu/zx1cjAZO71g==", "dev": true, "dependencies": { "chalk": "^5.1.2", @@ -6285,9 +6769,9 @@ } }, "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "20.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", - "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.2.tgz", + "integrity": "sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==", "dev": true }, "node_modules/@wdio/types": { @@ -6303,19 +6787,19 @@ } }, "node_modules/@wdio/types/node_modules/@types/node": { - "version": "20.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", - "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.2.tgz", + "integrity": "sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==", "dev": true }, "node_modules/@wdio/utils": { - "version": "8.16.15", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.16.15.tgz", - "integrity": "sha512-uVomufAbqSVJZuuy2HW9Zt7MJOLdB1MEJ/1T3wByNYcG9HSMPX3/KGn/1OSBg9kQO7QA7+x6c9rGgQMTgxNrWQ==", + "version": "8.16.17", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.16.17.tgz", + "integrity": "sha512-jDyOrxbQRDJO0OPt9UBgnwpUIKqtRn4+R0gR5VSDrIG/in5ZZg28yer8urrIVY4yY9ut5r/22VaMHZI9LEXF5w==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.11.0", + "@wdio/logger": "8.16.17", "@wdio/types": "8.16.12", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", @@ -6855,13 +7339,10 @@ "dev": true }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/aria-query": { "version": "5.1.3", @@ -7465,6 +7946,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -7489,9 +7983,9 @@ }, "node_modules/braces": { "name": "@clevercanyon/braces.fork", - "version": "3.0.59", - "resolved": "https://registry.npmjs.org/@clevercanyon/braces.fork/-/braces.fork-3.0.59.tgz", - "integrity": "sha512-UO8xAHc3q8fZaQbqU++JBiPEQBs9rtOKwXl64AIq/yG4zfbwWmYMqf3DxoyDGkNByBex1RQ1uSARz5KTYDMxtQ==", + "version": "3.0.60", + "resolved": "https://registry.npmjs.org/@clevercanyon/braces.fork/-/braces.fork-3.0.60.tgz", + "integrity": "sha512-2/oTFQo+2fMpzpgEVvGDSD4n+qAtJXND+yoXPZ/9bFkenqlAfzPwOhksOrtd+uQpTET5EP4InpkKzlnlbpBnYA==", "cpu": [ "x64", "arm64" @@ -7501,7 +7995,7 @@ "linux" ], "dependencies": { - "fill-range": "npm:@clevercanyon/fill-range.fork@^7.0.58" + "fill-range": "npm:@clevercanyon/fill-range.fork@^7.0.59" }, "engines": { "node": "^19.1.0 || ^20.5.0", @@ -7512,9 +8006,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.0.tgz", - "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -7531,8 +8025,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001539", - "electron-to-chromium": "^1.4.530", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.13" }, @@ -7766,13 +8260,12 @@ } }, "node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "peer": true, "engines": { - "node": ">=14.16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7793,25 +8286,13 @@ "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8457,48 +8938,6 @@ } } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/cosmiconfig/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -10426,9 +10865,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.535", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.535.tgz", - "integrity": "sha512-4548PpR4S5X5dlvX8NUIw0njH7btQtBoJWcgzpq7n2F9NQ5gMXOPP/6p6iVx6+YT3FVioNhEGa14WJj1k+2SfA==", + "version": "1.4.537", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", + "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", "dev": true }, "node_modules/elkjs": { @@ -10922,6 +11361,22 @@ } } }, + "node_modules/eslint-plugin-tailwindcss": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.13.0.tgz", + "integrity": "sha512-Fcep4KDRLWaK3KmkQbdyKHG0P4GdXFmXdDaweTIPcgOP60OOuWFbh1++dufRT28Q4zpKTKaHwTsXPJ4O/EjU2Q==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.5", + "postcss": "^8.4.4" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "tailwindcss": "^3.3.2" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -10947,12 +11402,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11010,18 +11459,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -11616,9 +12053,9 @@ }, "node_modules/fill-range": { "name": "@clevercanyon/fill-range.fork", - "version": "7.0.58", - "resolved": "https://registry.npmjs.org/@clevercanyon/fill-range.fork/-/fill-range.fork-7.0.58.tgz", - "integrity": "sha512-USVh1krCBEDyw7Y4vcuQxYVK8teoR2iV3Ot466gWKnkmVGm63Fkoao8OQk9fGodGR/sG19ELnNQCAfjwWaaLSA==", + "version": "7.0.59", + "resolved": "https://registry.npmjs.org/@clevercanyon/fill-range.fork/-/fill-range.fork-7.0.59.tgz", + "integrity": "sha512-xwadTLaEj9g3u1qIeGraPKRz/y1/l1sQYmgc5ZFD5+s3zic4WPjIOOfjwch72oeNX5Ob03OgjpQdlTgRvkdquA==", "cpu": [ "x64", "arm64" @@ -11628,7 +12065,7 @@ "linux" ], "dependencies": { - "to-regex-range": "npm:@clevercanyon/to-regex-range.fork@^5.0.58" + "to-regex-range": "npm:@clevercanyon/to-regex-range.fork@^5.0.59" }, "engines": { "node": "^19.1.0 || ^20.5.0", @@ -13105,6 +13542,19 @@ "node": ">=8.0.0" } }, + "node_modules/http-call/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -13753,9 +14203,9 @@ }, "node_modules/is-number": { "name": "@clevercanyon/is-number.fork", - "version": "7.0.61", - "resolved": "https://registry.npmjs.org/@clevercanyon/is-number.fork/-/is-number.fork-7.0.61.tgz", - "integrity": "sha512-jhsWPn7CiahpCHdzj72s1XJkgvexaoAVbCZda33DPbA6LDiUYqzKdcf9sx5N2Ms3usdy0iyfCnqQJ3sIbMJUZw==", + "version": "7.0.62", + "resolved": "https://registry.npmjs.org/@clevercanyon/is-number.fork/-/is-number.fork-7.0.62.tgz", + "integrity": "sha512-PnyewNpVKaxkYbRrAJcGhNz/FR2/8utjJrASuqzXBWMsfuwevl1umKQ7+qkk9TGFTy6KqyHUGeYhyrnIQzJEAg==", "cpu": [ "x64", "arm64" @@ -14483,30 +14933,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/jest-config/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -15376,18 +15802,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-validate/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -15526,13 +15940,12 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -15608,13 +16021,10 @@ "dev": true }, "node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -15718,6 +16128,12 @@ "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", "dev": true }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true + }, "node_modules/ky": { "version": "0.33.3", "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", @@ -16251,9 +16667,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.4.tgz", + "integrity": "sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -18456,9 +18872,9 @@ }, "node_modules/micromatch": { "name": "@clevercanyon/micromatch.fork", - "version": "4.0.62", - "resolved": "https://registry.npmjs.org/@clevercanyon/micromatch.fork/-/micromatch.fork-4.0.62.tgz", - "integrity": "sha512-UKRbVY64HrC6AxnYXI5neKc0OIUbkrRviRa3KMJ5VCXOAvyWIr2fcrGj7m2ItARlFJFq6XBt/kBS9UqJK7rhow==", + "version": "4.0.63", + "resolved": "https://registry.npmjs.org/@clevercanyon/micromatch.fork/-/micromatch.fork-4.0.63.tgz", + "integrity": "sha512-S6iQvGE2gG6bW813TtQD9i7px+GI7g5rYZLD1qmqFrwgZoLDcr6leEyZ7MQCqYCD3sdXfcVsdQ79l0sAneKBFQ==", "cpu": [ "x64", "arm64" @@ -18469,8 +18885,8 @@ "linux" ], "dependencies": { - "braces": "npm:@clevercanyon/braces.fork@^3.0.58", - "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.57" + "braces": "npm:@clevercanyon/braces.fork@^3.0.59", + "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.58" }, "engines": { "node": "^19.1.0 || ^20.5.0", @@ -18642,9 +19058,9 @@ } }, "node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -19735,16 +20151,21 @@ } }, "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parse-latin": { @@ -19928,9 +20349,9 @@ }, "node_modules/picomatch": { "name": "@clevercanyon/picomatch.fork", - "version": "2.3.58", - "resolved": "https://registry.npmjs.org/@clevercanyon/picomatch.fork/-/picomatch.fork-2.3.58.tgz", - "integrity": "sha512-qdQfQ/A/CzFeP2GZX+vr+6zVKviggelHzxVKyfN4LqKY23FKc6tr78i73vdw0ER9VSpEhoN1SS2/WVAsUiBwTQ==", + "version": "2.3.59", + "resolved": "https://registry.npmjs.org/@clevercanyon/picomatch.fork/-/picomatch.fork-2.3.59.tgz", + "integrity": "sha512-wKwvkN52vCW7iNOepVz32c3mIUzXq+QwjeUUKN6rqI50yVzssiD+nENQHW+7NjFuX6rgfAdkNXdF/kEi9MhG0w==", "cpu": [ "x64", "arm64" @@ -20086,9 +20507,9 @@ } }, "node_modules/postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -20959,9 +21380,9 @@ } }, "node_modules/postcss-scss": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.8.tgz", - "integrity": "sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, "funding": [ { @@ -22213,6 +22634,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/read-pkg": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", @@ -22315,30 +22745,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/read-pkg/node_modules/type-fest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", @@ -23430,12 +23836,6 @@ "node": ">=8.0" } }, - "node_modules/roarr/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", @@ -23971,6 +24371,16 @@ "npm": ">= 3.0.0" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -24073,9 +24483,9 @@ }, "node_modules/spawn-please": { "name": "@clevercanyon/spawn-please.fork", - "version": "2.0.54", - "resolved": "https://registry.npmjs.org/@clevercanyon/spawn-please.fork/-/spawn-please.fork-2.0.54.tgz", - "integrity": "sha512-q9/P+BT8GP+auxNbQi/U7OHbAOnFoaGwFHYiUy962eXqXNFrvxjvn9vzuEL7us4T0XTfeto1bS0bLmMfrYQlpQ==", + "version": "2.0.55", + "resolved": "https://registry.npmjs.org/@clevercanyon/spawn-please.fork/-/spawn-please.fork-2.0.55.tgz", + "integrity": "sha512-BMLIRs9lBvd6AwzdO+gKIO97u9NEV76vSQnKUhIqbpSiUURtEtIbzyVkk5Z0RLgvRldy2osKu+3TABgSq2oPKA==", "cpu": [ "x64", "arm64" @@ -24139,9 +24549,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "node_modules/sql-formatter": { @@ -24158,12 +24568,6 @@ "sql-formatter": "bin/sql-formatter-cli.cjs" } }, - "node_modules/sql-formatter/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -25010,6 +25414,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -25384,9 +25794,9 @@ }, "node_modules/to-regex-range": { "name": "@clevercanyon/to-regex-range.fork", - "version": "5.0.58", - "resolved": "https://registry.npmjs.org/@clevercanyon/to-regex-range.fork/-/to-regex-range.fork-5.0.58.tgz", - "integrity": "sha512-HB9I4BiEVq8ZwS79gOnzIxCzUKecXyHkMPvfU+Dlto8kSZ6Z+o+6eF4HpvXgqENdd55CinihxWz5mesPw8TwLA==", + "version": "5.0.59", + "resolved": "https://registry.npmjs.org/@clevercanyon/to-regex-range.fork/-/to-regex-range.fork-5.0.59.tgz", + "integrity": "sha512-ch0DRTN7qMAMcp6dr6kJ4C278BZVq/f3BYVowuEsB5fwWhQoRRyLZBZ1j9H7ezFNFliljIrsu/+XcApFsXijYA==", "cpu": [ "x64", "arm64" @@ -25396,7 +25806,7 @@ "linux" ], "dependencies": { - "is-number": "npm:@clevercanyon/is-number.fork@^7.0.61" + "is-number": "npm:@clevercanyon/is-number.fork@^7.0.62" }, "engines": { "node": "^19.1.0 || ^20.5.0", @@ -25950,12 +26360,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unified-engine/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, "node_modules/unified-engine/node_modules/lines-and-columns": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", @@ -26251,6 +26655,60 @@ "node": ">= 10.0.0" } }, + "node_modules/unplugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz", + "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.5.0" + } + }, + "node_modules/unplugin-icons": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.17.0.tgz", + "integrity": "sha512-gMv66eY/Hj64heM55XrfDH3LUCWI51mtkBVUPVl9VkpvLgAYhdVe9nRuzu6p+idmCLSQVq7xiPxQcD4aXCgW5A==", + "dev": true, + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.6", + "@iconify/utils": "^2.1.9", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.4.3", + "unplugin": "^1.4.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@svgr/core": ">=7.0.0", + "@svgx/core": "^1.0.1", + "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", + "vue-template-compiler": "^2.6.12", + "vue-template-es2015-compiler": "^1.9.0" + }, + "peerDependenciesMeta": { + "@svgr/core": { + "optional": true + }, + "@svgx/core": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "vue-template-es2015-compiler": { + "optional": true + } + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -26632,9 +27090,9 @@ } }, "node_modules/vite-node": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.5.tgz", - "integrity": "sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -26676,23 +27134,23 @@ } }, "node_modules/vitest": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.5.tgz", - "integrity": "sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", "dev": true, "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.34.5", - "@vitest/runner": "0.34.5", - "@vitest/snapshot": "0.34.5", - "@vitest/spy": "0.34.5", - "@vitest/utils": "0.34.5", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", - "chai": "^4.3.7", + "chai": "^4.3.10", "debug": "^4.3.4", "local-pkg": "^0.4.3", "magic-string": "^0.30.1", @@ -26703,7 +27161,7 @@ "tinybench": "^2.5.0", "tinypool": "^0.7.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.5", + "vite-node": "0.34.6", "why-is-node-running": "^2.2.2" }, "bin": { @@ -26908,18 +27366,18 @@ "dev": true }, "node_modules/webdriver": { - "version": "8.16.15", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.16.15.tgz", - "integrity": "sha512-lzZaS88ivm6RmPmb7MGafbrXkR6K4/btBMaZz1lgYxS9i/yPuiAq7tMSddM8dXTVkRpXmckICUfSj5oBmcth1Q==", + "version": "8.16.17", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.16.17.tgz", + "integrity": "sha512-pG5aEqK6odI9Tr9pr0+1mN6iGqUu5uc5HTVbqbEM6CSX2g035JRVQ/tavFTegCF1HI6yIquHiwAqsfPgLciAnQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.16.15", - "@wdio/logger": "8.11.0", + "@wdio/config": "8.16.17", + "@wdio/logger": "8.16.17", "@wdio/protocols": "8.16.5", "@wdio/types": "8.16.12", - "@wdio/utils": "8.16.15", + "@wdio/utils": "8.16.17", "deepmerge-ts": "^5.1.0", "got": "^ 12.6.1", "ky": "^0.33.0", @@ -26954,9 +27412,9 @@ } }, "node_modules/webdriver/node_modules/@types/node": { - "version": "20.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", - "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.2.tgz", + "integrity": "sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==", "dev": true }, "node_modules/webdriver/node_modules/cacheable-lookup": { @@ -27085,18 +27543,18 @@ } }, "node_modules/webdriverio": { - "version": "8.16.15", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.16.15.tgz", - "integrity": "sha512-M3WJnXoqDFA9vyfPm8p0qpqACjyuPHGKP/iydpiMVcgq++msgInJhu04emnXwk8yY/gGqnacD9434E4lhEA2xA==", + "version": "8.16.17", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.16.17.tgz", + "integrity": "sha512-AV66CkFM9z9W+oOG1j+IokQ6zihTtR6co3mlmN0IvXKdHH6ReV1pMc4kt+efk/y3+ilVcODKca7+rQ/Stzpx3A==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.16.15", - "@wdio/logger": "8.11.0", + "@wdio/config": "8.16.17", + "@wdio/logger": "8.16.17", "@wdio/protocols": "8.16.5", "@wdio/repl": "8.10.1", "@wdio/types": "8.16.12", - "@wdio/utils": "8.16.15", + "@wdio/utils": "8.16.17", "archiver": "^6.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", @@ -27113,7 +27571,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.16.15" + "webdriver": "8.16.17" }, "engines": { "node": "^16.13 || >=18" @@ -27128,9 +27586,9 @@ } }, "node_modules/webdriverio/node_modules/@types/node": { - "version": "20.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", - "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.2.tgz", + "integrity": "sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==", "dev": true }, "node_modules/webdriverio/node_modules/archiver": { @@ -27322,6 +27780,21 @@ "node": ">=12" } }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", + "dev": true + }, "node_modules/whatwg-encoding": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", diff --git a/package.json b/package.json index afe43232..40e4d568 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "4.0.63", + "version": "4.0.64", "license": "MIT", "name": "@clevercanyon/micromatch.fork", "description": "Glob matching. A replacement and faster alternative to minimatch and multimatch.", @@ -35,15 +35,15 @@ "types": "", "typesVersions": {}, "dependencies": { - "braces": "npm:@clevercanyon/braces.fork@^3.0.59", - "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.58" + "braces": "npm:@clevercanyon/braces.fork@^3.0.60", + "picomatch": "npm:@clevercanyon/picomatch.fork@^2.3.59" }, "peerDependencies": {}, "peerDependenciesMeta": {}, "optionalDependencies": {}, "bundleDependencies": [], "devDependencies": { - "@clevercanyon/dev-deps": "^1.0.238" + "@clevercanyon/dev-deps": "^1.0.242" }, "overrides": {}, "cpu": ["x64", "arm64"], diff --git a/tsconfig.json b/tsconfig.json index 70f54df5..c918b096 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ * @note This entire file will be updated automatically. * @note Instead of editing here, please review `./tsconfig.mjs`. * - * Last generated using `./tsconfig.mjs` Thu, Sep 28, 2023, 3:29:41 PM EDT. + * Last generated using `./tsconfig.mjs` Fri, Sep 29, 2023, 7:03:33 PM EDT. */ { "include": ["./src/**/*", "./dev-types.d.ts"], @@ -27,6 +27,21 @@ "**/.idea/**", "**/.*.swp/**", "**/*.ctags/**", + "**/.env.me/**", + "**/.tscache/**", + "**/*.tsbuildinfo/**", + "**/.vite/**", + "**/.vitest/**", + "**/.wrangler/**", + "**/.dev.vars/**", + "**/.dev.vars.*/**", + "**/.rollup/**", + "**/.webpack/**", + "**/.linaria-cache/**", + "**/.sass-cache/**", + "**/.docker/**", + "**/.vagrant/**", + "**/.elasticbeanstalk/**", "**/.yarn/**", "**/vendor/**", "**/node_modules/**", @@ -63,7 +78,6 @@ "**/Network Trash Folder/**", "**/Temporary Items/**", "**/.*/**", - "**/*.tsbuildinfo/**", "**/*.config.*/**", "**/wrangler.*/**", "**/tsconfig.*/**", @@ -92,7 +106,7 @@ "skipLibCheck": true, "target": "es2022", "lib": ["es2022"], - "types": ["vite/client", "@types/mdx"], + "types": ["vite/client", "@types/mdx", "unplugin-icons/types/preact"], "jsx": "react-jsx", "jsxImportSource": "preact", "module": "node16", diff --git a/wrangler.toml b/wrangler.toml index 05f21082..8d294795 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -7,12 +7,13 @@ # @note This entire file will be updated automatically. # @note Instead of editing here, please review `./wrangler.mjs`. # -# Last generated using `./wrangler.mjs` Thu, Sep 28, 2023, 3:29:42 PM EDT. +# Last generated using `./wrangler.mjs` Fri, Sep 29, 2023, 7:03:33 PM EDT. ## -compatibility_date = "2023-08-15" send_metrics = false usage_model = "bundled" +compatibility_date = "2023-08-15" +compatibility_flags = [ ] name = "micromatch-fork" account_id = "f1176464a976947aa5665d989814a4b1" workers_dev = false