From 8d08d7b9127dc0c29e61a00773e08ebfc26de311 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Sat, 21 Dec 2024 12:33:29 +0100 Subject: [PATCH 01/75] change some configuration --- .github/workflows/pages.yml | 34 ++++++++++++++++++++++++++++++++++ .npmignore | 18 ++++++++++++++++++ .nvmrc | 1 + 3 files changed, 53 insertions(+) create mode 100644 .github/workflows/pages.yml create mode 100644 .npmignore create mode 100644 .nvmrc diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..3821d82 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,34 @@ +name: Deploy GitHub Pages + +on: + push: + branches: [ "master" ] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: './docs' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v3 diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e6f38ab --- /dev/null +++ b/.npmignore @@ -0,0 +1,18 @@ +# Development files +demo/ +docs/ +scripts/ +.github/ +.vscode/ + +# Config files +.editorconfig +.gitignore +vite.config.js + +# Logs +*.log +npm-debug.log* + +# Only include the built files in dist/ +!dist/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..bb8c76c --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v22.11.0 From 2177da33b292f62fbac839fb7cf74b29895b9de7 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Sat, 21 Dec 2024 12:33:49 +0100 Subject: [PATCH 02/75] remove the overall build logic, migrate to vite 6 --- {css => demo/css}/demo-only/prism.css | 0 {css => demo/css}/demo.css | 0 {css => demo/css}/scss/demo.scss | 0 .../scss/simplyCountdown.theme.default.scss | 0 .../scss/simplyCountdown.theme.losange.scss | 0 .../css}/simplyCountdown.theme.custom.css | 0 .../css}/simplyCountdown.theme.default.css | 0 .../css}/simplyCountdown.theme.losange.css | 0 index.html => demo/index.html | 39 +- dist/simplyCountdown.es.js | 120 + dist/simplyCountdown.es.js.map | 1 + dist/simplyCountdown.iife.js | 11 + dist/simplyCountdown.iife.js.map | 1 + dist/simplyCountdown.min.js | 11 - dist/simplyCountdown.umd.js | 11 + dist/simplyCountdown.umd.js.map | 1 + docs/css/demo-only/prism.css | 135 + docs/css/demo.css | 1 + docs/css/simplyCountdown.theme.custom.css | 29 + docs/css/simplyCountdown.theme.default.css | 1 + docs/css/simplyCountdown.theme.losange.css | 1 + docs/dist/simplyCountdown.es.js | 120 + docs/dist/simplyCountdown.es.js.map | 1 + docs/dist/simplyCountdown.iife.js | 11 + docs/dist/simplyCountdown.iife.js.map | 1 + docs/dist/simplyCountdown.umd.js | 11 + docs/dist/simplyCountdown.umd.js.map | 1 + docs/index.html | 450 + gulpfile.mjs | 113 - package-lock.json | 16786 ++-------------- package.json | 51 +- scripts/build-docs.js | 61 + {dev => src}/simplyCountdown.js | 0 vite.config.js | 27 + 34 files changed, 2819 insertions(+), 15176 deletions(-) rename {css => demo/css}/demo-only/prism.css (100%) rename {css => demo/css}/demo.css (100%) rename {css => demo/css}/scss/demo.scss (100%) rename {css => demo/css}/scss/simplyCountdown.theme.default.scss (100%) rename {css => demo/css}/scss/simplyCountdown.theme.losange.scss (100%) rename {css => demo/css}/simplyCountdown.theme.custom.css (100%) rename {css => demo/css}/simplyCountdown.theme.default.css (100%) rename {css => demo/css}/simplyCountdown.theme.losange.css (100%) rename index.html => demo/index.html (94%) create mode 100644 dist/simplyCountdown.es.js create mode 100644 dist/simplyCountdown.es.js.map create mode 100644 dist/simplyCountdown.iife.js create mode 100644 dist/simplyCountdown.iife.js.map delete mode 100644 dist/simplyCountdown.min.js create mode 100644 dist/simplyCountdown.umd.js create mode 100644 dist/simplyCountdown.umd.js.map create mode 100644 docs/css/demo-only/prism.css create mode 100644 docs/css/demo.css create mode 100644 docs/css/simplyCountdown.theme.custom.css create mode 100644 docs/css/simplyCountdown.theme.default.css create mode 100644 docs/css/simplyCountdown.theme.losange.css create mode 100644 docs/dist/simplyCountdown.es.js create mode 100644 docs/dist/simplyCountdown.es.js.map create mode 100644 docs/dist/simplyCountdown.iife.js create mode 100644 docs/dist/simplyCountdown.iife.js.map create mode 100644 docs/dist/simplyCountdown.umd.js create mode 100644 docs/dist/simplyCountdown.umd.js.map create mode 100644 docs/index.html delete mode 100644 gulpfile.mjs create mode 100644 scripts/build-docs.js rename {dev => src}/simplyCountdown.js (100%) create mode 100644 vite.config.js diff --git a/css/demo-only/prism.css b/demo/css/demo-only/prism.css similarity index 100% rename from css/demo-only/prism.css rename to demo/css/demo-only/prism.css diff --git a/css/demo.css b/demo/css/demo.css similarity index 100% rename from css/demo.css rename to demo/css/demo.css diff --git a/css/scss/demo.scss b/demo/css/scss/demo.scss similarity index 100% rename from css/scss/demo.scss rename to demo/css/scss/demo.scss diff --git a/css/scss/simplyCountdown.theme.default.scss b/demo/css/scss/simplyCountdown.theme.default.scss similarity index 100% rename from css/scss/simplyCountdown.theme.default.scss rename to demo/css/scss/simplyCountdown.theme.default.scss diff --git a/css/scss/simplyCountdown.theme.losange.scss b/demo/css/scss/simplyCountdown.theme.losange.scss similarity index 100% rename from css/scss/simplyCountdown.theme.losange.scss rename to demo/css/scss/simplyCountdown.theme.losange.scss diff --git a/css/simplyCountdown.theme.custom.css b/demo/css/simplyCountdown.theme.custom.css similarity index 100% rename from css/simplyCountdown.theme.custom.css rename to demo/css/simplyCountdown.theme.custom.css diff --git a/css/simplyCountdown.theme.default.css b/demo/css/simplyCountdown.theme.default.css similarity index 100% rename from css/simplyCountdown.theme.default.css rename to demo/css/simplyCountdown.theme.default.css diff --git a/css/simplyCountdown.theme.losange.css b/demo/css/simplyCountdown.theme.losange.css similarity index 100% rename from css/simplyCountdown.theme.losange.css rename to demo/css/simplyCountdown.theme.losange.css diff --git a/index.html b/demo/index.html similarity index 94% rename from index.html rename to demo/index.html index 1dffbbe..09bc147 100644 --- a/index.html +++ b/demo/index.html @@ -332,26 +332,24 @@

Easy to customize

+ +

Examples

-

Default

-

Displayed whithout jQuery - UTC enabled

-
+ +

Default Theme

+
-

Custom

-

Displayed with jQuery - UTC disabled

-
+

Losange Theme

+
+ +

Without Zero Units

+
-

Remove Zero Units

-

Displayed with removeZeroUnits enabled

-
-

Inline

-

Display a simple inline countdown

-

countup

-

countup Enabled option

-
+

Count Up

+
@@ -371,15 +369,13 @@

countup

- + + + + + + diff --git a/gulpfile.mjs b/gulpfile.mjs deleted file mode 100644 index d07c6e7..0000000 --- a/gulpfile.mjs +++ /dev/null @@ -1,113 +0,0 @@ -/*jslint node: true, for */ - -"use strict"; - -import gulp from "gulp"; -import dartSass from "sass"; -import gulpSass from "gulp-sass"; -import babel from "gulp-babel"; -import autoprefixer from "gulp-autoprefixer"; -import cssCompressor from "gulp-csso"; -import terser from "gulp-terser"; -import eslint from "gulp-eslint"; -import saveLicense from "uglify-save-license"; -import browserSyncPackage from "browser-sync"; -import concat from "gulp-concat"; - -const browserSync = browserSyncPackage.create(); -const sass = gulpSass(dartSass); -const browserChoice = "default"; - -/** - * Build the demo Sass styles - */ -export function buildScssDemo() { - return gulp.src("css/scss/demo.scss") - .pipe(sass({ precision: 10 }).on("error", sass.logError)) - .pipe(autoprefixer()) - .pipe(cssCompressor({ restructure: false })) - .pipe(gulp.dest("css")); -} - -/** - * Build the themes Sass styles - */ -export function buildScssThemes() { - return gulp.src("css/scss/simplyCountdown.theme.*.scss") - .pipe(sass({ precision: 10 }).on("error", sass.logError)) - .pipe(autoprefixer()) - .pipe(cssCompressor({ restructure: false })) - .pipe(gulp.dest("css")); -} - -/** - * Transpile the lib from ES6 to ES5 - */ -export function buildEs6() { - return gulp.src("dev/simplyCountdown.js") - .pipe(concat("simplyCountdown.min.js")) - .pipe(babel({ - presets: ["@babel/env"] - })) - .pipe(terser({ - output: { - comments: saveLicense - } - })) - .pipe(gulp.dest("dist")); -} - -/** - * Lint ES6 - */ -export function lintEs6() { - return gulp.src("dev/simplyCountdown.js") - .pipe(eslint()) - .pipe(eslint.format()) - .pipe(eslint.failAfterError()); -} - -/** - * Lint without breaking - */ -export function lintNoBreakEs6() { - return gulp.src("dev/simplyCountdown.js") - .pipe(eslint()) - .pipe(eslint.format()); -} - -/** - * Reload Browser - */ -export function reload(done) { - browserSync.reload(); - done(); -} - -/** - * Serve with BrowserSync - */ -export function serve() { - browserSync.init({ - notify: true, - port: 9000, - reloadDelay: 100, - browser: browserChoice, - server: { - baseDir: "./" - } - }); - - gulp.watch("dev/**/*.js", gulp.series(lintNoBreakEs6, buildEs6, reload)); - gulp.watch("css/scss/**/*", gulp.series(buildScssDemo, buildScssThemes, reload)); - gulp.watch("./**/*.html", gulp.series(reload)); -} - -// Default Task -export default gulp.series(buildScssDemo, buildScssThemes, lintNoBreakEs6, buildEs6, serve); - -// Serve Task -export const serveTask = gulp.series(buildScssDemo, buildScssThemes, lintNoBreakEs6, buildEs6, serve); - -// Build Task -export const build = gulp.series(buildScssDemo, buildScssThemes, lintEs6, buildEs6); diff --git a/package-lock.json b/package-lock.json index dc7a189..4c5bb37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15542 +9,2312 @@ "version": "2.0.1", "license": "MIT", "devDependencies": { - "@babel/core": "^7.1.6", - "@babel/polyfill": "^7.0.0", - "@babel/preset-env": "^7.1.6", - "browser-sync": "^3.0.3", - "core-js": "^2.5.7", - "eslint-config-airbnb-base": "^13.1.0", - "gulp": "^5.0.0", - "gulp-autoprefixer": "^9.0.0", - "gulp-babel": "^8.0.0", - "gulp-concat": "^2.6.1", - "gulp-csso": "^3.0.1", - "gulp-eslint": "^5.0.0", - "gulp-sass": "^6.0.0", - "gulp-terser": "^1.1.5", - "gulp-uglify": "^3.0.1", - "prismjs": "^1.15.0", - "sass": "^1.82.0", - "uglify-save-license": "^0.4.1" + "fs-extra": "^11.2.0", + "sass": "^1.69.5", + "terser": "^5.24.0", + "vite": "^6.0.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">=18" } }, - "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "semver": "^6.3.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.26.3" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "node_modules/@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "dev": true, + "hasInstallScript": true, + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", + "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", + "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", + "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", + "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", + "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", + "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", + "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", + "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", + "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", + "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", + "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", + "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", + "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", + "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", + "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", + "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", + "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", + "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", + "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, - "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.4.0" } }, - "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@gulpjs/messages": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", - "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@gulpjs/to-absolute-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", - "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", - "dev": true, - "dependencies": { - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "peer": true - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "peer": true - }, - "node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", - "dev": true, - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/vinyl": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", - "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", - "dev": true, - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "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/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-done": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", - "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.4.4", - "once": "^1.4.0", - "stream-exhaust": "^1.0.2" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/async-settle": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", - "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", - "dev": true, - "dependencies": { - "async-done": "^2.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "peer": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", - "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/bach": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", - "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", - "dev": true, - "dependencies": { - "async-done": "^2.0.0", - "async-settle": "^2.0.0", - "now-and-later": "^3.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", - "dev": true, - "optional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", - "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", - "dev": true, - "dependencies": { - "browser-sync-client": "^3.0.3", - "browser-sync-ui": "^3.0.3", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "micromatch": "^4.0.8", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "^0.19.0", - "serve-index": "^1.9.1", - "serve-static": "^1.16.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/browser-sync-client": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", - "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", - "dev": true, - "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/browser-sync-ui": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", - "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", - "dev": true, - "dependencies": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001686", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz", - "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", - "dev": true - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-props": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", - "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", - "dev": true, - "dependencies": { - "each-props": "^3.0.0", - "is-plain-object": "^5.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", - "dev": true, - "dependencies": { - "browserslist": "^4.24.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "dev": true, - "dependencies": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "dev": true, - "dependencies": { - "css-tree": "1.0.0-alpha.29" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/each-props": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", - "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", - "dev": true, - "dependencies": { - "is-plain-object": "^5.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/easy-transform-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/easy-transform-stream/-/easy-transform-stream-1.0.1.tgz", - "integrity": "sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", - "dev": true, - "dependencies": { - "chalk": "4.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", - "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.7.2", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", - "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" - } - }, - "node_modules/engine.io-parser": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", - "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/es-abstract": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", - "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", - "dev": true, - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "peer": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "peer": true, - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.5", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "eslint": "^4.19.1 || ^5.3.0", - "eslint-plugin-import": "^2.17.2" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "peer": true, - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "dependencies": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/fined": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", - "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^5.0.0", - "object.defaults": "^1.1.0", - "object.pick": "^1.3.0", - "parse-filepath": "^1.0.2" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/flagged-respawn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", - "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "peer": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", - "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.8", - "streamx": "^2.12.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-stream": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz", - "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", - "dev": true, - "dependencies": { - "@gulpjs/to-absolute-glob": "^4.0.0", - "anymatch": "^3.1.3", - "fastq": "^1.13.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "is-negated-glob": "^1.0.0", - "normalize-path": "^3.0.0", - "streamx": "^2.12.5" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-watcher": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", - "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", - "dev": true, - "dependencies": { - "async-done": "^2.0.0", - "chokidar": "^3.5.3" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/gulp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", - "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==", - "dev": true, - "dependencies": { - "glob-watcher": "^6.0.0", - "gulp-cli": "^3.0.0", - "undertaker": "^2.0.0", - "vinyl-fs": "^4.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/gulp-autoprefixer": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-9.0.0.tgz", - "integrity": "sha512-lVQz5fqdjm4RMB1O3xLPtaZNMbFFoGKbV+SN3NJgT9X+PIyYld7dXARpoXIKEZAqE9WC2SoDQU0mxqZahWq07A==", - "dev": true, - "dependencies": { - "autoprefixer": "^10.4.16", - "gulp-plugin-extras": "^0.2.2", - "postcss": "^8.4.31", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - }, - "peerDependencies": { - "gulp": ">=4" - }, - "peerDependenciesMeta": { - "gulp": { - "optional": true - } - } - }, - "node_modules/gulp-babel": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-8.0.0.tgz", - "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", - "dev": true, - "dependencies": { - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/gulp-babel/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-cli": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", - "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==", - "dev": true, - "dependencies": { - "@gulpjs/messages": "^1.1.0", - "chalk": "^4.1.2", - "copy-props": "^4.0.0", - "gulplog": "^2.2.0", - "interpret": "^3.1.1", - "liftoff": "^5.0.0", - "mute-stdout": "^2.0.0", - "replace-homedir": "^2.0.0", - "semver-greatest-satisfied-range": "^2.0.0", - "string-width": "^4.2.3", - "v8flags": "^4.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/gulp-cli/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/gulp-cli/node_modules/glogg": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", - "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", - "dev": true, - "dependencies": { - "sparkles": "^2.1.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/gulp-cli/node_modules/gulplog": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", - "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", - "dev": true, - "dependencies": { - "glogg": "^2.2.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/sparkles": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", - "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", - "dev": true, - "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-concat/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-csso": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gulp-csso/-/gulp-csso-3.0.1.tgz", - "integrity": "sha512-zhkvq06x1SJrpBN8YNJfc1PDono2+xjB6nI9UmBPh88nS4Weuz0hZMgJ4YruOw9Bf+oDrX71U6pkos6pIQhc1g==", - "dev": true, - "dependencies": { - "csso": "^3.0.0", - "plugin-error": "^0.1.2", - "vinyl-sourcemaps-apply": "^0.2.1" - } - }, - "node_modules/gulp-csso/node_modules/arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-csso/node_modules/arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-csso/node_modules/array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-csso/node_modules/extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==", - "dev": true, - "dependencies": { - "kind-of": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-csso/node_modules/kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-csso/node_modules/plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==", - "dev": true, - "dependencies": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-eslint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-5.0.0.tgz", - "integrity": "sha512-9GUqCqh85C7rP9120cpxXuZz2ayq3BZc85pCTuPJS03VQYxne0aWPIXWx6LSvsGPa3uRqtSO537vaugOh+5cXg==", - "dev": true, - "dependencies": { - "eslint": "^5.0.1", - "fancy-log": "^1.3.2", - "plugin-error": "^1.0.1" - } - }, - "node_modules/gulp-plugin-extras": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/gulp-plugin-extras/-/gulp-plugin-extras-0.2.2.tgz", - "integrity": "sha512-0gssXzTNrrOocYBWN4qOZqd03cz3bxhjxVUPZV9iJdBR0ZZbwMQO/OT8hZChYoc9GjKaA5meaqDr6CjkmKA7BA==", - "dev": true, - "dependencies": { - "@types/vinyl": "^2.0.9", - "chalk": "^5.3.0", - "easy-transform-stream": "^1.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gulp-plugin-extras/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/gulp-sass": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-6.0.0.tgz", - "integrity": "sha512-FGb4Uab4jnH2GnSfBGd6uW3+imvNodAGfsjGcUhEtpNYPVx+TK2tp5uh7MO0sSR7aIf1Sm544werc+zV7ejHHw==", - "dev": true, - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.0.0", - "plugin-error": "^1.0.1", - "replace-ext": "^2.0.0", - "strip-ansi": "^6.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/gulp-sass/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-sass/node_modules/replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/gulp-sass/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-terser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/gulp-terser/-/gulp-terser-1.4.1.tgz", - "integrity": "sha512-VUoKrk24G0ojr7fXqlZ7vA8qDFHRloYAM6doNRyKdJ/LFkj+X3P04f+7LlOp7j05WtdOCEg65oG6nGjSf//78A==", - "dev": true, - "dependencies": { - "is-promise": "^4.0.0", - "plugin-error": "^1.0.1", - "terser": ">=4", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - } - }, - "node_modules/gulp-terser/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gulp-terser/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "node_modules/gulp-uglify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", - "dev": true, - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "peer": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "peer": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "peer": true, - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz", - "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "peer": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "peer": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", - "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "peer": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-number-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.0.tgz", - "integrity": "sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", - "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "gopd": "^1.1.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.0.tgz", - "integrity": "sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz", - "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "has-symbols": "^1.0.3", - "safe-regex-test": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "peer": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "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==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/last-run": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", - "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/lead": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", - "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/liftoff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", - "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==", - "dev": true, - "dependencies": { - "extend": "^3.0.2", - "findup-sync": "^5.0.0", - "fined": "^2.0.0", - "flagged-respawn": "^2.0.0", - "is-plain-object": "^5.0.0", - "rechoir": "^0.8.0", - "resolve": "^1.20.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", - "dev": true, - "dependencies": { - "make-error": "^1.2.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mute-stdout": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", - "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/now-and-later": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", - "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "dev": true, - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", - "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "which-builtin-type": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "dev": true, - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replace-homedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", - "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", - "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", - "dev": true, - "dependencies": { - "value-or-function": "^4.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dev": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resp-modifier/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/resp-modifier/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sass": { - "version": "1.82.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.82.0.tgz", - "integrity": "sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/sass/node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/sass/node_modules/immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/sass/node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", - "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", - "dev": true, - "dependencies": { - "sver": "^1.8.3" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/send": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", - "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-static/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/socket.io": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", - "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.6.0", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", - "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", - "dev": true, - "dependencies": { - "debug": "~4.3.4", - "ws": "~8.17.1" - } - }, - "node_modules/socket.io-client": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", - "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.6.1", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "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/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-composer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", - "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", - "dev": true, - "dependencies": { - "streamx": "^2.13.2" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "dev": true, - "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", - "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", - "dev": true, - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sver": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", - "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", - "dev": true, - "optionalDependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/teex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", - "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", - "dev": true, - "dependencies": { - "streamx": "^2.12.5" - } - }, - "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", - "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-through": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", - "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", - "dev": true, - "dependencies": { - "streamx": "^2.12.5" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", - "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", - "dev": true, - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", - "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "bin": { - "ua-parser-js": "script/cli.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-save-license": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz", - "integrity": "sha512-ErJczQkCvQKoEk7xxIfJTGp2JHtbKr8lEPtTgeJqm3PVCdF930Ba7x+wwtj3dZKwVu7lDy2nTOwncm3qCD+RMw==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undertaker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", - "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", - "dev": true, - "dependencies": { - "bach": "^2.0.1", - "fast-levenshtein": "^3.0.0", - "last-run": "^2.0.0", - "undertaker-registry": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/undertaker-registry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", - "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", - "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", - "dev": true, - "dependencies": { - "fastest-levenshtein": "^1.0.7" - } - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/v8flags": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", - "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/value-or-function": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", - "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", - "dev": true, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dev": true, - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-contents": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", - "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", - "dev": true, - "dependencies": { - "bl": "^5.0.0", - "vinyl": "^3.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/vinyl-contents/node_modules/replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/vinyl-contents/node_modules/vinyl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", - "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", - "dev": true, - "dependencies": { - "clone": "^2.1.2", - "clone-stats": "^1.0.0", - "remove-trailing-separator": "^1.1.0", - "replace-ext": "^2.0.0", - "teex": "^1.0.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/vinyl-fs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz", - "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", - "dev": true, - "dependencies": { - "fs-mkdirp-stream": "^2.0.1", - "glob-stream": "^8.0.0", - "graceful-fs": "^4.2.11", - "iconv-lite": "^0.6.3", - "is-valid-glob": "^1.0.0", - "lead": "^4.0.0", - "normalize-path": "3.0.0", - "resolve-options": "^2.0.0", - "stream-composer": "^1.0.2", - "streamx": "^2.14.0", - "to-through": "^3.0.0", - "value-or-function": "^4.0.0", - "vinyl": "^3.0.0", - "vinyl-sourcemap": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/vinyl-fs/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vinyl-fs/node_modules/replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/vinyl-fs/node_modules/vinyl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", - "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", - "dev": true, - "dependencies": { - "clone": "^2.1.2", - "clone-stats": "^1.0.0", - "remove-trailing-separator": "^1.1.0", - "replace-ext": "^2.0.0", - "teex": "^1.0.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", - "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", - "dev": true, - "dependencies": { - "convert-source-map": "^2.0.0", - "graceful-fs": "^4.2.10", - "now-and-later": "^3.0.0", - "streamx": "^2.12.5", - "vinyl": "^3.0.0", - "vinyl-contents": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/vinyl-sourcemap/node_modules/replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/vinyl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", - "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", - "dev": true, - "dependencies": { - "clone": "^2.1.2", - "clone-stats": "^1.0.0", - "remove-trailing-separator": "^1.1.0", - "replace-ext": "^2.0.0", - "teex": "^1.0.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", - "dev": true, - "dependencies": { - "source-map": "^0.5.1" - } - }, - "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz", - "integrity": "sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==", - "dev": true, - "peer": true, - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.0", - "is-number-object": "^1.1.0", - "is-string": "^1.1.0", - "is-symbol": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", - "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "peer": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", - "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", - "dev": true, - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", - "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - } - }, - "@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", - "dev": true - }, - "@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, - "requires": { - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "semver": "^6.3.1" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", - "dev": true, - "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", - "dev": true, - "requires": { - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", - "dev": true, - "requires": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", - "dev": true, - "requires": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" - } - }, - "@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", - "dev": true, - "requires": { - "@babel/types": "^7.26.3" - } - }, - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" - } - }, - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "requires": {} - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" - } - }, - "@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" - } - }, - "@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", - "semver": "^6.3.1" - } - }, - "@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.14.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - } - } - }, - "@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - } - }, - "@gulpjs/messages": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", - "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", - "dev": true - }, - "@gulpjs/to-absolute-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", - "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", - "dev": true, - "requires": { - "is-negated-glob": "^1.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", - "dev": true, - "optional": true, - "requires": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0", - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - } - }, - "@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", - "dev": true, - "optional": true - }, - "@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", - "dev": true, - "optional": true - }, - "@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", - "dev": true, - "optional": true - }, - "@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", - "dev": true, - "optional": true - }, - "@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", - "dev": true, - "optional": true - }, - "@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", - "dev": true, - "optional": true - }, - "@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", - "dev": true, - "optional": true - }, - "@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", - "dev": true, - "optional": true - }, - "@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", - "dev": true, - "optional": true - }, - "@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", - "dev": true, - "optional": true - }, - "@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", - "dev": true, - "optional": true - }, - "@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", - "dev": true, - "optional": true - }, - "@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", - "dev": true, - "optional": true - }, - "@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "peer": true - }, - "@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "peer": true - }, - "@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", - "dev": true, - "requires": { - "undici-types": "~6.20.0" - } - }, - "@types/vinyl": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", - "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", - "dev": true, - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true - }, - "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - } - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", - "dev": true - }, - "array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "peer": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-done": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", - "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", - "dev": true, - "requires": { - "end-of-stream": "^1.4.4", - "once": "^1.4.0", - "stream-exhaust": "^1.0.2" - } - }, - "async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true - }, - "async-settle": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", - "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", - "dev": true, - "requires": { - "async-done": "^2.0.0" - } - }, - "autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "requires": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "peer": true, - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", - "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", - "semver": "^6.3.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.3" - } - }, - "bach": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", - "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", - "dev": true, - "requires": { - "async-done": "^2.0.0", - "async-settle": "^2.0.0", - "now-and-later": "^3.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", - "dev": true, - "optional": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true - }, - "bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browser-sync": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", - "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", - "dev": true, - "requires": { - "browser-sync-client": "^3.0.3", - "browser-sync-ui": "^3.0.3", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "micromatch": "^4.0.8", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "^0.19.0", - "serve-index": "^1.9.1", - "serve-static": "^1.16.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - } - }, - "browser-sync-client": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", - "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", - "dev": true, - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" - } - }, - "browser-sync-ui": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", - "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", - "dev": true, - "requires": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - } - }, - "bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001686", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz", - "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true - }, - "copy-props": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", - "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", - "dev": true, - "requires": { - "each-props": "^3.0.0", - "is-plain-object": "^5.0.0" - } - }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", - "dev": true, - "requires": { - "browserslist": "^4.24.2" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } - } - }, - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "dev": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.29" - } - }, - "data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "optional": true - }, - "dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "each-props": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", - "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", - "dev": true, - "requires": { - "is-plain-object": "^5.0.0", - "object.defaults": "^1.1.0" - } - }, - "easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "easy-transform-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/easy-transform-stream/-/easy-transform-stream-1.0.1.tgz", - "integrity": "sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==", - "dev": true - }, - "eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", - "dev": true, - "requires": { - "chalk": "4.1.2" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", - "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.7.2", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" - } - }, - "engine.io-client": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", - "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" - } - }, - "engine.io-parser": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", - "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", - "dev": true - }, - "es-abstract": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", - "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", - "dev": true, - "peer": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true - }, - "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "peer": true, - "requires": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "peer": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "peer": true, - "requires": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - } - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.5", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "peer": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "peer": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "peer": true, - "requires": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", - "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^5.0.0", - "object.defaults": "^1.1.0", - "object.pick": "^1.3.0", - "parse-filepath": "^1.0.2" - } - }, - "flagged-respawn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", - "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", - "dev": true - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "peer": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "fs-mkdirp-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", - "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.8", - "streamx": "^2.12.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "peer": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-stream": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz", - "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", - "dev": true, - "requires": { - "@gulpjs/to-absolute-glob": "^4.0.0", - "anymatch": "^3.1.3", - "fastq": "^1.13.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "is-negated-glob": "^1.0.0", - "normalize-path": "^3.0.0", - "streamx": "^2.12.5" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - } - } - }, - "glob-watcher": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", - "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", - "dev": true, - "requires": { - "async-done": "^2.0.0", - "chokidar": "^3.5.3" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "peer": true, - "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "gulp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", - "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==", - "dev": true, - "requires": { - "glob-watcher": "^6.0.0", - "gulp-cli": "^3.0.0", - "undertaker": "^2.0.0", - "vinyl-fs": "^4.0.0" - } - }, - "gulp-autoprefixer": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-9.0.0.tgz", - "integrity": "sha512-lVQz5fqdjm4RMB1O3xLPtaZNMbFFoGKbV+SN3NJgT9X+PIyYld7dXARpoXIKEZAqE9WC2SoDQU0mxqZahWq07A==", - "dev": true, - "requires": { - "autoprefixer": "^10.4.16", - "gulp-plugin-extras": "^0.2.2", - "postcss": "^8.4.31", - "vinyl-sourcemaps-apply": "^0.2.1" - } - }, - "gulp-babel": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-8.0.0.tgz", - "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", - "dev": true, - "requires": { - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-cli": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", - "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==", - "dev": true, - "requires": { - "@gulpjs/messages": "^1.1.0", - "chalk": "^4.1.2", - "copy-props": "^4.0.0", - "gulplog": "^2.2.0", - "interpret": "^3.1.1", - "liftoff": "^5.0.0", - "mute-stdout": "^2.0.0", - "replace-homedir": "^2.0.0", - "semver-greatest-satisfied-range": "^2.0.0", - "string-width": "^4.2.3", - "v8flags": "^4.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "glogg": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", - "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", - "dev": true, - "requires": { - "sparkles": "^2.1.0" - } - }, - "gulplog": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", - "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", - "dev": true, - "requires": { - "glogg": "^2.2.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "sparkles": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", - "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", - "dev": true, - "requires": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-csso": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gulp-csso/-/gulp-csso-3.0.1.tgz", - "integrity": "sha512-zhkvq06x1SJrpBN8YNJfc1PDono2+xjB6nI9UmBPh88nS4Weuz0hZMgJ4YruOw9Bf+oDrX71U6pkos6pIQhc1g==", - "dev": true, - "requires": { - "csso": "^3.0.0", - "plugin-error": "^0.1.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==", - "dev": true - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - } - } - } - }, - "gulp-eslint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-5.0.0.tgz", - "integrity": "sha512-9GUqCqh85C7rP9120cpxXuZz2ayq3BZc85pCTuPJS03VQYxne0aWPIXWx6LSvsGPa3uRqtSO537vaugOh+5cXg==", - "dev": true, - "requires": { - "eslint": "^5.0.1", - "fancy-log": "^1.3.2", - "plugin-error": "^1.0.1" - } - }, - "gulp-plugin-extras": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/gulp-plugin-extras/-/gulp-plugin-extras-0.2.2.tgz", - "integrity": "sha512-0gssXzTNrrOocYBWN4qOZqd03cz3bxhjxVUPZV9iJdBR0ZZbwMQO/OT8hZChYoc9GjKaA5meaqDr6CjkmKA7BA==", - "dev": true, - "requires": { - "@types/vinyl": "^2.0.9", - "chalk": "^5.3.0", - "easy-transform-stream": "^1.0.1" - }, - "dependencies": { - "chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true - } - } - }, - "gulp-sass": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-6.0.0.tgz", - "integrity": "sha512-FGb4Uab4jnH2GnSfBGd6uW3+imvNodAGfsjGcUhEtpNYPVx+TK2tp5uh7MO0sSR7aIf1Sm544werc+zV7ejHHw==", - "dev": true, - "requires": { - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.0.0", - "plugin-error": "^1.0.1", - "replace-ext": "^2.0.0", - "strip-ansi": "^6.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "gulp-terser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/gulp-terser/-/gulp-terser-1.4.1.tgz", - "integrity": "sha512-VUoKrk24G0ojr7fXqlZ7vA8qDFHRloYAM6doNRyKdJ/LFkj+X3P04f+7LlOp7j05WtdOCEg65oG6nGjSf//78A==", - "dev": true, - "requires": { - "is-promise": "^4.0.0", - "plugin-error": "^1.0.1", - "terser": ">=4", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - } - } - }, - "gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.7" - } - }, - "has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "peer": true, - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "dependencies": { - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "peer": true, - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - } - }, - "is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "peer": true, - "requires": { - "has-bigints": "^1.0.2" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz", - "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "has-tostringtag": "^1.0.2" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "peer": true - }, - "is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "requires": { - "hasown": "^2.0.2" - } - }, - "is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "peer": true, - "requires": { - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-finalizationregistry": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", - "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "peer": true - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "peer": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "is-number-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.0.tgz", - "integrity": "sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "has-tostringtag": "^1.0.2" - } - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true - }, - "is-regex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", - "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "gopd": "^1.1.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "peer": true - }, - "is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.0.tgz", - "integrity": "sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "has-tostringtag": "^1.0.2" - } - }, - "is-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz", - "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "has-symbols": "^1.0.3", - "safe-regex-test": "^1.0.3" - } - }, - "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "peer": true, - "requires": { - "which-typed-array": "^1.1.14" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "dev": true - }, - "is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "peer": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "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, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "last-run": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", - "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", - "dev": true - }, - "lead": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", - "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "liftoff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", - "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==", - "dev": true, - "requires": { - "extend": "^3.0.2", - "findup-sync": "^5.0.0", - "fined": "^2.0.0", - "flagged-respawn": "^2.0.0", - "is-plain-object": "^5.0.0", - "rechoir": "^0.8.0", - "resolve": "^1.20.0" - } - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", - "dev": true, - "requires": { - "make-error": "^1.2.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true - }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", - "dev": true - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "mute-stdout": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", - "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true - }, - "nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "now-and-later": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", - "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "requires": { - "once": "^1.4.0" + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, - "peer": true + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" } }, - "object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, - "object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } + "license": "ISC" }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "requires": { - "wrappy": "1" + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { - "mimic-fn": "^1.0.0" + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "requires": { - "is-wsl": "^1.1.0" + "optional": true, + "engines": { + "node": ">=0.12.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "requires": { - "callsites": "^3.0.0" + "optional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "dev": true + "optional": true }, - "picocolors": { + "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, - "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "peer": true - }, - "postcss": { + "node_modules/postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, - "requires": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "requires": { - "resolve": "^1.20.0" + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "reflect.getprototypeof": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", - "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "which-builtin-type": "^1.1.4" + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "node_modules/rollup": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", + "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", "dev": true, - "requires": { - "regenerate": "^1.4.2" + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.29.1", + "@rollup/rollup-android-arm64": "4.29.1", + "@rollup/rollup-darwin-arm64": "4.29.1", + "@rollup/rollup-darwin-x64": "4.29.1", + "@rollup/rollup-freebsd-arm64": "4.29.1", + "@rollup/rollup-freebsd-x64": "4.29.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", + "@rollup/rollup-linux-arm-musleabihf": "4.29.1", + "@rollup/rollup-linux-arm64-gnu": "4.29.1", + "@rollup/rollup-linux-arm64-musl": "4.29.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", + "@rollup/rollup-linux-riscv64-gnu": "4.29.1", + "@rollup/rollup-linux-s390x-gnu": "4.29.1", + "@rollup/rollup-linux-x64-gnu": "4.29.1", + "@rollup/rollup-linux-x64-musl": "4.29.1", + "@rollup/rollup-win32-arm64-msvc": "4.29.1", + "@rollup/rollup-win32-ia32-msvc": "4.29.1", + "@rollup/rollup-win32-x64-msvc": "4.29.1", + "fsevents": "~2.3.2" } }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "node_modules/sass": { + "version": "1.83.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", + "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.2" + "engines": { + "node": ">=0.10.0" } }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "engines": { + "node": ">=0.10.0" } }, - "regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true - }, - "regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { - "jsesc": "~3.0.2" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "replace-homedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", - "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", - "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "requires": { - "value-or-function": "^4.0.0" + "license": "MIT", + "engines": { + "node": ">= 10.0.0" } }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "node_modules/vite": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", + "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", "dev": true, - "requires": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "esbuild": "0.24.0", + "postcss": "^8.4.49", + "rollup": "^4.23.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + } + }, + "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "optional": true }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true + "optional": true }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "optional": true }, - "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "optional": true }, - "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - } + "optional": true }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "dev": true, + "optional": true }, - "sass": { - "version": "1.82.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.82.0.tgz", - "integrity": "sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==", + "@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "dev": true, - "requires": { - "@parcel/watcher": "^2.4.1", - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "dependencies": { - "chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", - "dev": true, - "requires": { - "readdirp": "^4.0.1" - } - }, - "immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "dev": true - }, - "readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "dev": true - } - } + "optional": true }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "dev": true, + "optional": true }, - "semver-greatest-satisfied-range": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", - "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", + "@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "dev": true, - "requires": { - "sver": "^1.8.3" - } + "optional": true }, - "send": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", - "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } + "optional": true }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } + "optional": true }, - "serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "dev": true, - "requires": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } + "optional": true }, - "server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true + "@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "dev": true, + "optional": true }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } + "optional": true }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "dev": true, - "peer": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } + "optional": true }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "dev": true, + "optional": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } + "optional": true }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true + "@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "dev": true, + "optional": true }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } + "optional": true }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "dev": true, + "optional": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - } - } + "optional": true }, - "socket.io": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", - "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.6.0", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - } + "optional": true }, - "socket.io-adapter": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", - "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "dev": true, - "requires": { - "debug": "~4.3.4", - "ws": "~8.17.1" - } + "optional": true }, - "socket.io-client": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", - "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.6.1", - "socket.io-parser": "~4.2.4" - } + "optional": true }, - "socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true }, - "source-map-js": { + "@jridgewell/set-array": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, - "stream-composer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", - "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "requires": { - "streamx": "^2.13.2" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "dev": true, + "optional": true, "requires": { - "commander": "^2.2.0", - "limiter": "^1.0.5" + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" } }, - "streamx": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", - "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", + "@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", "dev": true, - "requires": { - "bare-events": "^2.2.0", - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - } + "optional": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } + "optional": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } + "optional": true }, - "string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - } + "optional": true }, - "string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } + "optional": true }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } + "optional": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "optional": true }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true + "@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "dev": true, + "optional": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "optional": true }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "dev": true, + "optional": true }, - "sver": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", - "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", + "@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", "dev": true, - "requires": { - "semver": "^6.3.0" - } + "optional": true }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } + "optional": true }, - "teex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", - "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", "dev": true, - "requires": { - "streamx": "^2.12.5" - } + "optional": true }, - "terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "@rollup/rollup-android-arm-eabi": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", + "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true - } - } + "optional": true }, - "text-decoder": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", - "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", - "dev": true + "@rollup/rollup-android-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", + "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", + "dev": true, + "optional": true }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "@rollup/rollup-darwin-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", + "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", + "dev": true, + "optional": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "@rollup/rollup-darwin-x64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", + "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", + "dev": true, + "optional": true }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "dev": true + "@rollup/rollup-freebsd-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", + "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", + "dev": true, + "optional": true }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "@rollup/rollup-freebsd-x64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", + "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } + "optional": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", + "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", "dev": true, - "requires": { - "is-number": "^7.0.0" - } + "optional": true }, - "to-through": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", - "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", + "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", "dev": true, - "requires": { - "streamx": "^2.12.5" - } + "optional": true }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", + "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", + "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", + "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", + "dev": true, + "optional": true }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", + "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", "dev": true, - "peer": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "peer": true - } - } + "optional": true }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", + "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", + "dev": true, + "optional": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", + "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } + "optional": true }, - "typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "@rollup/rollup-linux-x64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", + "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - } + "optional": true }, - "typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "@rollup/rollup-linux-x64-musl": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", + "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } + "optional": true }, - "typed-array-byte-offset": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", - "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", + "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", "dev": true, - "peer": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "reflect.getprototypeof": "^1.0.6" - } + "optional": true }, - "typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", + "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - } + "optional": true }, - "ua-parser-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", - "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", - "dev": true + "@rollup/rollup-win32-x64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", + "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "dev": true, + "optional": true }, - "uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, - "uglify-save-license": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz", - "integrity": "sha512-ErJczQkCvQKoEk7xxIfJTGp2JHtbKr8lEPtTgeJqm3PVCdF930Ba7x+wwtj3dZKwVu7lDy2nTOwncm3qCD+RMw==", + "acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "peer": true, + "optional": true, "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "fill-range": "^7.1.1" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "undertaker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", - "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "requires": { - "bach": "^2.0.1", - "fast-levenshtein": "^3.0.0", - "last-run": "^2.0.0", - "undertaker-registry": "^2.0.0" - }, - "dependencies": { - "fast-levenshtein": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", - "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", - "dev": true, - "requires": { - "fastest-levenshtein": "^1.0.7" - } - } + "readdirp": "^4.0.1" } }, - "undertaker-registry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", - "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", - "dev": true - }, - "undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "optional": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true + "esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } }, - "update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "optional": true, "requires": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "to-regex-range": "^5.0.1" } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "requires": { - "punycode": "^2.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "v8flags": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", - "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", - "dev": true + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true }, - "value-or-function": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", - "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", "dev": true }, - "vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } + "optional": true }, - "vinyl-contents": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", - "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "optional": true, "requires": { - "bl": "^5.0.0", - "vinyl": "^3.0.0" - }, - "dependencies": { - "replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true - }, - "vinyl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", - "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", - "dev": true, - "requires": { - "clone": "^2.1.2", - "clone-stats": "^1.0.0", - "remove-trailing-separator": "^1.1.0", - "replace-ext": "^2.0.0", - "teex": "^1.0.1" - } - } + "is-extglob": "^2.1.1" } }, - "vinyl-fs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz", - "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "requires": { - "fs-mkdirp-stream": "^2.0.1", - "glob-stream": "^8.0.0", - "graceful-fs": "^4.2.11", - "iconv-lite": "^0.6.3", - "is-valid-glob": "^1.0.0", - "lead": "^4.0.0", - "normalize-path": "3.0.0", - "resolve-options": "^2.0.0", - "stream-composer": "^1.0.2", - "streamx": "^2.14.0", - "to-through": "^3.0.0", - "value-or-function": "^4.0.0", - "vinyl": "^3.0.0", - "vinyl-sourcemap": "^2.0.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true - }, - "vinyl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", - "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", - "dev": true, - "requires": { - "clone": "^2.1.2", - "clone-stats": "^1.0.0", - "remove-trailing-separator": "^1.1.0", - "replace-ext": "^2.0.0", - "teex": "^1.0.1" - } - } - } + "optional": true }, - "vinyl-sourcemap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", - "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "convert-source-map": "^2.0.0", - "graceful-fs": "^4.2.10", - "now-and-later": "^3.0.0", - "streamx": "^2.12.5", - "vinyl": "^3.0.0", - "vinyl-contents": "^2.0.0" - }, - "dependencies": { - "replace-ext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", - "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", - "dev": true - }, - "vinyl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", - "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", - "dev": true, - "requires": { - "clone": "^2.1.2", - "clone-stats": "^1.0.0", - "remove-trailing-separator": "^1.1.0", - "replace-ext": "^2.0.0", - "teex": "^1.0.1" - } - } + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "optional": true, "requires": { - "source-map": "^0.5.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } + "braces": "^3.0.3", + "picomatch": "^2.3.1" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true + }, + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "optional": true }, - "which-boxed-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz", - "integrity": "sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==", + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "peer": true, - "requires": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.0", - "is-number-object": "^1.1.0", - "is-string": "^1.1.0", - "is-symbol": "^1.1.0" - } + "optional": true }, - "which-builtin-type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", - "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", + "postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, - "peer": true, "requires": { - "call-bind": "^1.0.7", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true - } + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" } }, - "which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "peer": true, - "requires": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" + "readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true + }, + "rollup": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", + "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.29.1", + "@rollup/rollup-android-arm64": "4.29.1", + "@rollup/rollup-darwin-arm64": "4.29.1", + "@rollup/rollup-darwin-x64": "4.29.1", + "@rollup/rollup-freebsd-arm64": "4.29.1", + "@rollup/rollup-freebsd-x64": "4.29.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", + "@rollup/rollup-linux-arm-musleabihf": "4.29.1", + "@rollup/rollup-linux-arm64-gnu": "4.29.1", + "@rollup/rollup-linux-arm64-musl": "4.29.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", + "@rollup/rollup-linux-riscv64-gnu": "4.29.1", + "@rollup/rollup-linux-s390x-gnu": "4.29.1", + "@rollup/rollup-linux-x64-gnu": "4.29.1", + "@rollup/rollup-linux-x64-musl": "4.29.1", + "@rollup/rollup-win32-arm64-msvc": "4.29.1", + "@rollup/rollup-win32-ia32-msvc": "4.29.1", + "@rollup/rollup-win32-x64-msvc": "4.29.1", + "@types/estree": "1.0.6", + "fsevents": "~2.3.2" } }, - "which-typed-array": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", - "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", + "sass": { + "version": "1.83.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", + "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", "dev": true, - "peer": true, "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" } }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, "requires": { - "mkdirp": "^0.5.1" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" } }, - "ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": {} - }, - "xmlhttprequest-ssl": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", - "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "optional": true, + "requires": { + "is-number": "^7.0.0" + } }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "vite": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", + "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", "dev": true, "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "esbuild": "0.24.0", + "fsevents": "~2.3.3", + "postcss": "^8.4.49", + "rollup": "^4.23.0" } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } } diff --git a/package.json b/package.json index d213b71..10e0d94 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { - "name": "simplycountdown.js", - "description": "Tiny Javascript Countdown", - "version": "2.0.1", + "name": "simplycountdown", + "description": "A dead simple countdown javascript library", + "version": "3.0.0", + "type": "module", "homepage": "http://vincentloy.github.io/simplyCountdown.js", "author": { "name": "Vincent Loy", @@ -15,7 +16,9 @@ "clock", "jquery", "vanilla", - "plugin" + "plugin", + "vue", + "react" ], "repository": { "type": "git", @@ -28,24 +31,28 @@ "browserslist": [ "defaults" ], + "main": "./dist/simplyCountdown.umd.js", + "module": "./dist/simplyCountdown.es.js", + "exports": { + ".": { + "import": "./dist/simplyCountdown.es.js", + "require": "./dist/simplyCountdown.umd.js" + } + }, + "files": [ + "dist", + "README.md", + "LICENSE" + ], + "scripts": { + "dev": "vite", + "build": "vite build && node scripts/build-docs.js", + "clean": "rm -rf dist docs" + }, "devDependencies": { - "@babel/core": "^7.1.6", - "@babel/polyfill": "^7.0.0", - "@babel/preset-env": "^7.1.6", - "browser-sync": "^3.0.3", - "core-js": "^2.5.7", - "eslint-config-airbnb-base": "^13.1.0", - "gulp": "^5.0.0", - "gulp-autoprefixer": "^9.0.0", - "gulp-babel": "^8.0.0", - "gulp-concat": "^2.6.1", - "gulp-csso": "^3.0.1", - "gulp-eslint": "^5.0.0", - "gulp-sass": "^6.0.0", - "gulp-terser": "^1.1.5", - "gulp-uglify": "^3.0.1", - "prismjs": "^1.15.0", - "sass": "^1.82.0", - "uglify-save-license": "^0.4.1" + "fs-extra": "^11.2.0", + "sass": "^1.69.5", + "terser": "^5.24.0", + "vite": "^6.0.0" } } diff --git a/scripts/build-docs.js b/scripts/build-docs.js new file mode 100644 index 0000000..2a4eaa0 --- /dev/null +++ b/scripts/build-docs.js @@ -0,0 +1,61 @@ +import { build } from 'vite'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; +import fs from 'fs-extra'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const rootDir = dirname(__dirname); + +async function buildDocs() { + // 1. Prepare docs directory + await fs.emptyDir(path.join(rootDir, 'docs')); + + // 2. Create css directory + await fs.mkdir(path.join(rootDir, 'docs/css')); + + // 3. Copy specific CSS files + const cssFiles = [ + 'demo.css', + 'simplyCountdown.theme.custom.css', + 'simplyCountdown.theme.default.css', + 'simplyCountdown.theme.losange.css' + ]; + + for (const file of cssFiles) { + await fs.copy( + path.join(rootDir, 'demo/css', file), + path.join(rootDir, 'docs/css', file) + ); + } + + // Copy demo-only directory + await fs.copy( + path.join(rootDir, 'demo/css/demo-only'), + path.join(rootDir, 'docs/css/demo-only') + ); + + // 4. Copy index.html + await fs.copy( + path.join(rootDir, 'demo/index.html'), + path.join(rootDir, 'docs/index.html') + ); + + // 5. Copy dist files + await fs.copy( + path.join(rootDir, 'dist'), + path.join(rootDir, 'docs/dist') + ); + + // 6. Update script path in docs/index.html + const indexPath = path.join(rootDir, 'docs/index.html'); + let content = await fs.readFile(indexPath, 'utf-8'); + content = content.replace( + '../src/simplyCountdown.js', + './dist/simplyCountdown.iife.js' + ); + await fs.writeFile(indexPath, content); +} + +buildDocs().catch(console.error); diff --git a/dev/simplyCountdown.js b/src/simplyCountdown.js similarity index 100% rename from dev/simplyCountdown.js rename to src/simplyCountdown.js diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..a1f62e8 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,27 @@ +import { defineConfig } from 'vite'; +import path from 'path'; + +export default defineConfig({ + build: { + lib: { + entry: path.resolve(__dirname, 'src/simplyCountdown.js'), + name: 'simplyCountdown', + fileName: (format) => `simplyCountdown.${format}.js`, + formats: ['es', 'umd', 'iife'] + }, + outDir: 'dist', + emptyOutDir: true, + sourcemap: true, + rollupOptions: { + output: { + globals: { + jquery: 'jQuery' + } + } + } + }, + server: { + port: 3000, + open: '/demo/index.html' + } +}); From c2f2becdce0f49d7b080aacf6bc3d0224341b65f Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Sat, 21 Dec 2024 14:43:05 +0100 Subject: [PATCH 03/75] change all build stuff --- .npmignore | 18 - demo/css/demo.css | 113 +- demo/css/scss/demo.scss | 343 -- .../scss/simplyCountdown.theme.default.scss | 31 - .../scss/simplyCountdown.theme.losange.scss | 35 - demo/css/simplyCountdown.theme.cyberpunk.css | 173 + demo/css/simplyCountdown.theme.dark.css | 95 + demo/css/simplyCountdown.theme.default.css | 94 +- demo/css/simplyCountdown.theme.losange.css | 84 +- demo/index.html | 574 +-- demo/js/demo.js | 74 + demo/main.js | 25 + dist/simplyCountdown.es.js | 68 +- dist/simplyCountdown.es.js.map | 2 +- dist/simplyCountdown.iife.js | 4 +- dist/simplyCountdown.iife.js.map | 2 +- dist/simplyCountdown.umd.js | 4 +- dist/simplyCountdown.umd.js.map | 2 +- docs/assets/demo.js | 1 + docs/assets/index.css | 1 + docs/assets/index.js | 10 + docs/assets/simplyCountdown.iife.js | 11 + docs/css/demo-only/prism.css | 135 - docs/css/demo.css | 1 - docs/css/simplyCountdown.theme.custom.css | 29 - docs/css/simplyCountdown.theme.default.css | 1 - docs/css/simplyCountdown.theme.losange.css | 1 - docs/dist/simplyCountdown.es.js | 120 - docs/dist/simplyCountdown.es.js.map | 1 - docs/dist/simplyCountdown.iife.js | 11 - docs/dist/simplyCountdown.iife.js.map | 1 - docs/dist/simplyCountdown.umd.js | 11 - docs/dist/simplyCountdown.umd.js.map | 1 - docs/index.html | 570 +-- package-lock.json | 4247 +++++++++++++++-- package.json | 24 +- scripts/build-docs.js | 61 - scripts/serve.js | 51 + src/simplyCountdown.js | 16 +- uno.config.js | 84 + vite.config.js | 132 +- 41 files changed, 5174 insertions(+), 2087 deletions(-) delete mode 100644 .npmignore delete mode 100644 demo/css/scss/demo.scss delete mode 100644 demo/css/scss/simplyCountdown.theme.default.scss delete mode 100644 demo/css/scss/simplyCountdown.theme.losange.scss create mode 100644 demo/css/simplyCountdown.theme.cyberpunk.css create mode 100644 demo/css/simplyCountdown.theme.dark.css create mode 100644 demo/js/demo.js create mode 100644 demo/main.js create mode 100644 docs/assets/demo.js create mode 100644 docs/assets/index.css create mode 100644 docs/assets/index.js create mode 100644 docs/assets/simplyCountdown.iife.js delete mode 100644 docs/css/demo-only/prism.css delete mode 100644 docs/css/demo.css delete mode 100644 docs/css/simplyCountdown.theme.custom.css delete mode 100644 docs/css/simplyCountdown.theme.default.css delete mode 100644 docs/css/simplyCountdown.theme.losange.css delete mode 100644 docs/dist/simplyCountdown.es.js delete mode 100644 docs/dist/simplyCountdown.es.js.map delete mode 100644 docs/dist/simplyCountdown.iife.js delete mode 100644 docs/dist/simplyCountdown.iife.js.map delete mode 100644 docs/dist/simplyCountdown.umd.js delete mode 100644 docs/dist/simplyCountdown.umd.js.map delete mode 100644 scripts/build-docs.js create mode 100644 scripts/serve.js create mode 100644 uno.config.js diff --git a/.npmignore b/.npmignore deleted file mode 100644 index e6f38ab..0000000 --- a/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -# Development files -demo/ -docs/ -scripts/ -.github/ -.vscode/ - -# Config files -.editorconfig -.gitignore -vite.config.js - -# Logs -*.log -npm-debug.log* - -# Only include the built files in dist/ -!dist/ diff --git a/demo/css/demo.css b/demo/css/demo.css index f2518c3..e0ef45f 100644 --- a/demo/css/demo.css +++ b/demo/css/demo.css @@ -1 +1,112 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}body,html{font-family:"Wix Madefor Text",serif;font-optical-sizing:auto;font-style:normal;overflow-x:hidden;font-size:16px}p{font-size:1.2rem;line-height:1.6;font-weight:400;margin:20px 0 45px}h1,h2,h3{font-family:"Montserrat",sans-serif}header{display:flex;align-items:center;justify-content:center;background:#112d4e;border-bottom:5px solid #3f72af;padding:20px;height:450px}@media screen and (min-width:970px){header{height:650px}}header .header-content{text-align:center}header .header-content h1{font-style:italic;font-size:2rem;font-weight:600;color:#f9f7f7}@media screen and (min-width:970px){header .header-content h1{font-size:4rem}}header .header-content h2{font-size:1.33rem;color:#f9f7f7;margin:20px 0;font-weight:500}@media screen and (min-width:970px){header .header-content h2{font-size:1.75rem;margin:40px 0 60px 0}}header .header-content .repo-buttons{display:flex;align-items:center;justify-content:center}.button{color:#f9f7f7;border:2px solid #f9f7f7;border-radius:2px;text-decoration:none;padding:10px;transition:.1s ease-in-out all;display:block;margin:0 20px 20px 20px}.button span{display:none}@media screen and (min-width:970px){.button{margin-bottom:0}.button span{display:inline}}@media screen and (min-width:970px){.button>i{margin-right:10px}}.button:hover{background:#f9f7f7;color:#112d4e}.container{width:100%;padding:0 20px;margin:auto}@media screen and (min-width:970px){.container{width:960px}}.note{background:#3f72af;color:#fff;font-style:italic;border-radius:2px;padding:6.6666666667px 20px;border-radius:5px}.note p{margin-bottom:20px}main>section:not(:last-of-type){border-bottom:1px solid #112d4e;padding-bottom:20px}main h2{font-size:2rem;color:#3f72af;font-weight:700;margin:20px 0}@media screen and (min-width:970px){main h2{font-size:3rem;margin:40px 0}}main h3{font-size:20px;color:#3f72af;font-weight:700;margin:20px 0}@media screen and (min-width:970px){main h3{font-size:25px;margin:40px 0}}main h3 a{color:#6995ca;text-decoration:none}main h3 a:hover{text-decoration:underline}main a{font-weight:700;text-decoration:none;color:#6995ca;transition:.2s ease all}main a:hover{color:#112d4e;text-decoration:underline}.simply-countdown-inline{margin-top:20px;font-weight:700;font-size:1.3rem}.sc-inline-header{color:#f9f7f7;font-weight:100;font-size:1.4rem;font-style:italic}.alert{position:fixed;bottom:-60px;left:0;right:0;margin:auto;padding:20px;display:table;background:#112d4e;color:#fff;border-radius:5px;font-size:1.3rem;opacity:0;transition:.3s ease all}.alert.show-after-header-cd.active{opacity:1;bottom:60px}.alert.show-after-header-cd a{font-weight:700;color:#f9f7f7}footer{background:#112d4e;color:#fff;text-align:center;padding:20px;margin-top:40px;font-weight:600}footer a{color:#c7d8eb;text-decoration:none;font-weight:700}footer a:hover{text-decoration:underline}.table-wrapper{width:100%;overflow-x:auto}.table-wrapper table{width:100%;margin-bottom:1rem;color:#212529;border-collapse:collapse;min-width:600px}.table-wrapper table th,.table-wrapper table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table-wrapper table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6;background-color:#f8f9fa;font-weight:700}.table-wrapper table tbody tr:nth-child(even){background-color:#f2f2f2}.table-wrapper table.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-wrapper table.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-wrapper table.table-bordered{border:1px solid #dee2e6}.table-wrapper table.table-bordered th,.table-wrapper table.table-bordered td{border:1px solid #dee2e6}.table-wrapper table.table-sm th,.table-wrapper table.table-sm td{padding:.3rem}.text-center{text-align:center}.text-right{text-align:right}.bold{font-weight:700}.ff-code{font-family:monospace;font-size:.9rem}.hide{display:none} \ No newline at end of file +/* layer: preflights */ +*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;} +*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;} + + *, + *::before, + *::after { + box-sizing: border-box; + margin: 0; + padding: 0; + } + + body { + line-height: 1.5; + -webkit-font-smoothing: antialiased; + } + + img, + picture, + video, + canvas, + svg { + display: block; + max-width: 100%; + } + + input, + button, + textarea, + select { + font: inherit; + } + + p, + h1, + h2, + h3, + h4, + h5, + h6 { + overflow-wrap: break-word; + } + +/* layer: icons */ +.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} +/* layer: shortcuts */ +.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem;} +/* layer: default */ +.grid{display:grid;} +.mx-auto{margin-left:auto;margin-right:auto;} +.mb-20{margin-bottom:5rem;} +.mb-4{margin-bottom:1rem;} +.mb-8{margin-bottom:2rem;} +.inline{display:inline;} +.inline-block{display:inline-block;} +.flex{display:flex;} +.inline-flex{display:inline-flex;} +.items-center{align-items:center;} +.gap-1{gap:0.25rem;} +.gap-2{gap:0.5rem;} +.gap-4{gap:1rem;} +.gap-8{gap:2rem;} +.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse));} +.overflow-x-auto{overflow-x:auto;} +.rounded-lg{border-radius:0.5rem;} +.rounded-xl{border-radius:0.75rem;} +.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity));} +.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity));} +.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));} +.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity));} +.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity));} +.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);} +.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position);} +.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient));} +.p-0{padding:0;} +.p-4{padding:1rem;} +.p-6{padding:1.5rem;} +.px-4{padding-left:1rem;padding-right:1rem;} +.px-6{padding-left:1.5rem;padding-right:1.5rem;} +.py-12{padding-top:3rem;padding-bottom:3rem;} +.py-16{padding-top:4rem;padding-bottom:4rem;} +.py-20{padding-top:5rem;padding-bottom:5rem;} +.py-3{padding-top:0.75rem;padding-bottom:0.75rem;} +.text-center{text-align:center;} +.text-3xl{font-size:1.875rem;line-height:2.25rem;} +.text-5xl{font-size:3rem;line-height:1;} +.text-lg{font-size:1.125rem;line-height:1.75rem;} +.text-xl{font-size:1.25rem;line-height:1.75rem;} +.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity));} +.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity));} +.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity));} +.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity));} +.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity));} +.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity));} +.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));} +.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity));} +.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity));} +.font-bold{font-weight:700;} +.font-semibold{font-weight:600;} +.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";} +.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);} +.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;} +@media (min-width: 768px){ +.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr));} +.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));} +} \ No newline at end of file diff --git a/demo/css/scss/demo.scss b/demo/css/scss/demo.scss deleted file mode 100644 index 84906f4..0000000 --- a/demo/css/scss/demo.scss +++ /dev/null @@ -1,343 +0,0 @@ -/** -* Project : simply-countdown -* File : demo -* Date : 27/06/2015 -* Author : Vincent Loy -*/ -@use "sass:color"; - -$color-main: #3F72AF; -$color-main-darken: #112D4E; -$color-main-lighten: #6995ca; -$color-secondary: #F9F7F7; -$color-secondary-lighten: #F9F7F7; -$color-white: #fff; - -$ff-base: "Wix Madefor Text", serif; -$ff-title: "Montserrat", sans-serif; - -$spacing: 20px; - -$tablet: "screen and (min-width: 970px)"; - -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0} - -* { - box-sizing: border-box; -} - -body, html { - font-family: $ff-base; - font-optical-sizing: auto; - font-style: normal; - overflow-x: hidden; - font-size: 16px; -} - -p { - font-size: 1.2rem; - line-height: 1.6; - font-weight: 400; - margin: $spacing 0 45px; -} - -h1, h2, h3 { - font-family: $ff-title; -} - - -header { - display: flex; - align-items: center; - justify-content: center; - background: $color-main-darken; - border-bottom: 5px solid $color-main; - padding: $spacing; - height: 450px; - - @media #{$tablet} { - height: 650px; - } - - .header-content { - text-align: center; - - h1 { - font-style: italic; - font-size: 2rem; - font-weight: 600; - color: $color-secondary-lighten; - - @media #{$tablet} { - font-size: 4rem; - } - } - - h2 { - font-size: 1.33rem; - color: $color-secondary-lighten; - margin: $spacing 0; - font-weight: 500; - - @media #{$tablet} { - font-size: 1.75rem; - margin: calc($spacing * 2) 0 calc($spacing * 3) 0; - } - } - - .repo-buttons { - display: flex; - align-items: center; - justify-content: center; - } - } -} - -.button { - color: $color-secondary-lighten; - border:2px solid $color-secondary-lighten; - border-radius: 2px; - text-decoration: none; - padding: calc($spacing / 2); - transition: 0.1s ease-in-out all; - display: block; - margin: 0 $spacing $spacing $spacing; - - span { - display: none; - } - - @media #{$tablet} { - margin-bottom: 0; - - span { - display: inline; - } - } - - > i { - @media #{$tablet} { - margin-right: calc($spacing / 2); - } - } - - &:hover { - background: $color-secondary-lighten; - color: $color-main-darken; - } -} - -.container { - width: 100%; - padding: 0 $spacing; - margin: auto; - - @media #{$tablet} { - width: 960px; - } -} - -.note { - background: $color-main; - color: $color-white; - font-style: italic; - border-radius: 2px; - padding: calc($spacing / 3) $spacing; - border-radius: 5px; - - p { - margin-bottom: $spacing; - } -} - -main { - > section:not(:last-of-type) { - border-bottom: 1px solid $color-main-darken; - padding-bottom: $spacing; - } - - h2 { - font-size: 2rem; - color: $color-main; - font-weight: 700; - margin: $spacing 0; - - @media #{$tablet} { - font-size: 3rem; - margin: $spacing * 2 0; - } - } - - h3 { - font-size: 20px; - color: $color-main; - font-weight: 700; - margin: $spacing 0; - - @media #{$tablet} { - font-size: 25px; - margin: calc($spacing * 2) 0; - } - - a { - color: $color-main-lighten; - text-decoration: none; - &:hover { - text-decoration: underline; - } - } - } - - a { - font-weight: bold; - text-decoration: none; - color: $color-main-lighten; - transition: 0.2s ease all; - - &:hover { - color: $color-main-darken; - text-decoration: underline; - } - } -} - -.simply-countdown-inline { - margin-top: $spacing; - font-weight: bold; - font-size: 1.3rem; -} - -.sc-inline-header { - color: $color-secondary-lighten; - font-weight: 100; - font-size: 1.4rem; - font-style: italic; -} - -.alert { - position: fixed; - bottom: -60px; - left: 0; - right: 0; - margin: auto; - padding: 20px; - display: table; - background: $color-main-darken; - color: white; - border-radius: 5px; - font-size: 1.3rem; - opacity: 0; - transition: 0.3s ease all; - - &.show-after-header-cd { - - &.active { - opacity: 1; - bottom: 60px; - } - - a { - font-weight: bold; - color: $color-secondary-lighten; - } - } -} - -footer { - background: $color-main-darken; - color: $color-white; - text-align: center; - padding: $spacing; - margin-top: $spacing * 2; - font-weight: 600; - - a { - color: color.adjust($color-main-lighten, $lightness: 25%); - text-decoration: none; - font-weight: bold; - - &:hover{ - text-decoration: underline; - } - } -} - -.table-wrapper { - width: 100%; - overflow-x: auto; - - table { - width: 100%; - margin-bottom: 1rem; - color: #212529; - border-collapse: collapse; - min-width: 600px; // Ensures the table maintains its width with a scrollbar on smaller screens - - th, - td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; - } - - thead { - th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; - background-color: #f8f9fa; - font-weight: bold; - } - } - - tbody { - tr { - &:nth-child(even) { - background-color: #f2f2f2; - } - } - } - - &.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); - } - - &.table-hover tbody tr:hover { - background-color: rgba(0, 0, 0, 0.075); - } - - &.table-bordered { - border: 1px solid #dee2e6; - - th, - td { - border: 1px solid #dee2e6; - } - } - - &.table-sm th, - &.table-sm td { - padding: 0.3rem; - } - } -} - -.text-center { - text-align: center; -} - -.text-right { - text-align: right; -} - -.bold { - font-weight: bold; -} - -.ff-code { - font-family: monospace; - font-size: 0.9rem; -} - -.hide { - display: none; -} \ No newline at end of file diff --git a/demo/css/scss/simplyCountdown.theme.default.scss b/demo/css/scss/simplyCountdown.theme.default.scss deleted file mode 100644 index 00b1dc3..0000000 --- a/demo/css/scss/simplyCountdown.theme.default.scss +++ /dev/null @@ -1,31 +0,0 @@ -/** -* Project : simply-countdown -* File : simplyCountdown.theme.default -* Date : 27/06/2015 -* Author : Vincent Loy -*/ - -.simply-countdown { - overflow: hidden; - display: table; - font-family: 'Arial', sans-serif; - - & > .simply-section { - width: 50px; - height: 50px; - padding: 50px; - display: flex; - align-items: center; - justify-content: center; - float: left; - margin: 15px; - background: #fff; - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); - - .simply-amount, - .simply-word { - display: block; - text-align: center; - } - } -} diff --git a/demo/css/scss/simplyCountdown.theme.losange.scss b/demo/css/scss/simplyCountdown.theme.losange.scss deleted file mode 100644 index 051f28c..0000000 --- a/demo/css/scss/simplyCountdown.theme.losange.scss +++ /dev/null @@ -1,35 +0,0 @@ -/** -* Project : simply-countdown -* File : simplyCountdown.theme.losange -* Date : 27/06/2015 -* Author : Vincent Loy -*/ - -.simply-countdown-losange { - overflow: visible; - display: table; - font-family: 'Arial', sans-serif; - - > .simply-section { - width: 100px; - height: 100px; - display: flex; - justify-content: center; - align-items: center; - transform: rotate(-45deg); - float: left; - margin: 30px; - background: #024772; - - > div { - transform: rotate(45deg); - .simply-amount, - .simply-word { - display: block; - color: #fff; - font-weight: bold; - text-align: center; - } - } - } -} diff --git a/demo/css/simplyCountdown.theme.cyberpunk.css b/demo/css/simplyCountdown.theme.cyberpunk.css new file mode 100644 index 0000000..f214fe2 --- /dev/null +++ b/demo/css/simplyCountdown.theme.cyberpunk.css @@ -0,0 +1,173 @@ +/** +* Project : simply-countdown +* File : simplyCountdown.theme.cyberpunk +* Author : Vincent Loy +* Theme : Modern Cyberpunk +*/ + +.simply-countdown-cyber { + overflow: visible; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.75rem; + font-family: "Inter", system-ui, -apple-system, sans-serif; + perspective: 1000px; +} + +.simply-countdown-cyber > .simply-section { + width: 70px; + height: 70px; + padding: 1.5rem; + position: relative; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(135deg, + rgba(23, 25, 35, 0.9), + rgba(15, 17, 25, 0.95)); + border-radius: 0.5rem; + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + backdrop-filter: blur(12px); + transform-style: preserve-3d; +} + +.simply-countdown-cyber > .simply-section::before { + content: ''; + position: absolute; + inset: -1px; + background: linear-gradient(135deg, + rgba(120, 240, 255, 0.2), + rgba(255, 90, 220, 0.2)); + border-radius: 0.5rem; + z-index: -1; + opacity: 0; + transition: opacity 0.3s ease; +} + +.simply-countdown-cyber > .simply-section::after { + content: ''; + position: absolute; + inset: -2px; + background: linear-gradient(135deg, + #78f0ff, + #ff5adc); + border-radius: 0.5rem; + z-index: -2; + opacity: 0.15; + filter: blur(4px); + animation: pulse 4s ease-in-out infinite; +} + +.simply-countdown-cyber > .simply-section .glass-overlay { + position: absolute; + inset: 0; + background: linear-gradient(135deg, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.05)); + border-radius: 0.5rem; +} + +.simply-countdown-cyber > .simply-section:hover { + transform: translateY(-4px) translateZ(10px) rotateX(5deg); + box-shadow: + 0 20px 40px -10px rgba(0, 0, 0, 0.5), + 0 0 20px rgba(120, 240, 255, 0.2), + 0 0 0 1px rgba(120, 240, 255, 0.1); +} + +.simply-countdown-cyber > .simply-section:hover::before { + opacity: 1; +} + +.simply-countdown-cyber > .simply-section > div { + display: flex; + flex-direction: column; + gap: 0.4rem; + align-items: center; + transform-style: preserve-3d; +} + +.simply-countdown-cyber > .simply-section .simply-amount { + font-size: 1.75rem; + font-weight: 700; + background: linear-gradient(to bottom right, + #78f0ff, + #ff5adc); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-shadow: + 0 0 20px rgba(120, 240, 255, 0.3), + 0 0 40px rgba(120, 240, 255, 0.2); + letter-spacing: -0.02em; + transform: translateZ(10px); +} + +.simply-countdown-cyber > .simply-section .simply-word { + font-size: 0.7rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.2em; + color: rgba(255, 255, 255, 0.7); + transform: translateZ(5px); + position: relative; +} + +.simply-countdown-cyber > .simply-section .simply-word::after { + content: ''; + position: absolute; + left: -10%; + bottom: -4px; + width: 120%; + height: 1px; + background: linear-gradient(to right, + rgba(120, 240, 255, 0), + rgba(120, 240, 255, 0.5), + rgba(255, 90, 220, 0.5), + rgba(255, 90, 220, 0)); +} + +@media (min-width: 640px) { + .simply-countdown-cyber > .simply-section { + width: 80px; + height: 80px; + padding: 1.75rem; + } + + .simply-countdown-cyber > .simply-section .simply-amount { + font-size: 2rem; + } + + .simply-countdown-cyber > .simply-section .simply-word { + font-size: 0.75rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown-cyber > .simply-section { + width: 100px; + height: 100px; + padding: 2rem; + } + + .simply-countdown-cyber > .simply-section .simply-amount { + font-size: 2.5rem; + } + + .simply-countdown-cyber > .simply-section .simply-word { + font-size: 0.8rem; + } +} + +/* Add subtle animation for extra futuristic feel */ +@keyframes pulse { + 0%, 100% { + opacity: 0.15; + transform: scale(1); + } + 50% { + opacity: 0.25; + transform: scale(1.05); + } +} diff --git a/demo/css/simplyCountdown.theme.dark.css b/demo/css/simplyCountdown.theme.dark.css new file mode 100644 index 0000000..1eed398 --- /dev/null +++ b/demo/css/simplyCountdown.theme.dark.css @@ -0,0 +1,95 @@ +/** +* Project : simply-countdown +* File : simplyCountdown.theme.dark +* Author : Vincent Loy +* Theme : Dark Modern +*/ + +.simply-countdown-dark { + overflow: hidden; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.25rem; + font-family: "Inter", system-ui, -apple-system, sans-serif; +} + +.simply-countdown-dark > .simply-section { + width: 65px; + height: 65px; + padding: 1.5rem; + display: flex; + align-items: center; + justify-content: center; + background: rgba(15, 23, 42, 0.75); + border: 1px solid rgba(51, 65, 85, 0.6); + border-radius: 1rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.2), + 0 2px 4px -1px rgba(0, 0, 0, 0.1), + 0 0 0 1px rgba(255, 255, 255, 0.05); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + backdrop-filter: blur(10px); +} + +.simply-countdown-dark > .simply-section:hover { + transform: translateY(-2px); + box-shadow: 0 6px 12px -2px rgba(0, 0, 0, 0.3), + 0 3px 6px -2px rgba(0, 0, 0, 0.2), + 0 0 0 1px rgba(255, 255, 255, 0.08); + background: rgba(15, 23, 42, 0.85); +} + +.simply-countdown-dark > .simply-section > div { + display: flex; + flex-direction: column; + gap: 0.35rem; + align-items: center; +} + +.simply-countdown-dark > .simply-section .simply-amount { + font-size: 1.5rem; + font-weight: 700; + color: #f1f5f9; + line-height: 1.2; + letter-spacing: -0.025em; +} + +.simply-countdown-dark > .simply-section .simply-word { + font-size: 0.7rem; + font-weight: 500; + color: #94a3b8; + text-transform: uppercase; + letter-spacing: 0.1em; +} + +@media (min-width: 640px) { + .simply-countdown-dark > .simply-section { + width: 75px; + height: 75px; + padding: 1.75rem; + } + + .simply-countdown-dark > .simply-section .simply-amount { + font-size: 1.75rem; + } + + .simply-countdown-dark > .simply-section .simply-word { + font-size: 0.75rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown-dark > .simply-section { + width: 90px; + height: 90px; + padding: 2rem; + } + + .simply-countdown-dark > .simply-section .simply-amount { + font-size: 2rem; + } + + .simply-countdown-dark > .simply-section .simply-word { + font-size: 0.8rem; + } +} diff --git a/demo/css/simplyCountdown.theme.default.css b/demo/css/simplyCountdown.theme.default.css index 1efede8..aafbdeb 100644 --- a/demo/css/simplyCountdown.theme.default.css +++ b/demo/css/simplyCountdown.theme.default.css @@ -1 +1,93 @@ -.simply-countdown{overflow:hidden;display:table;font-family:"Arial",sans-serif}.simply-countdown>.simply-section{width:50px;height:50px;padding:50px;display:flex;align-items:center;justify-content:center;float:left;margin:15px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.simply-countdown>.simply-section .simply-amount,.simply-countdown>.simply-section .simply-word{display:block;text-align:center} \ No newline at end of file +/** +* Project : simply-countdown +* File : simplyCountdown.theme.default +* Author : Vincent Loy +* Theme : Light Modern +*/ + +.simply-countdown { + overflow: hidden; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.25rem; + font-family: "Inter", system-ui, -apple-system, sans-serif; +} + +.simply-countdown > .simply-section { + width: 65px; + height: 65px; + padding: 1.5rem; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255, 255, 255, 0.9); + border: 1px solid rgba(226, 232, 240, 0.8); + border-radius: 1rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), + 0 2px 4px -1px rgba(0, 0, 0, 0.03), + 0 0 0 1px rgba(0, 0, 0, 0.02); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + backdrop-filter: blur(10px); +} + +.simply-countdown > .simply-section:hover { + transform: translateY(-2px); + box-shadow: 0 6px 12px -2px rgba(0, 0, 0, 0.08), + 0 3px 6px -2px rgba(0, 0, 0, 0.05); +} + +.simply-countdown > .simply-section > div { + display: flex; + flex-direction: column; + gap: 0.35rem; + align-items: center; +} + +.simply-countdown > .simply-section .simply-amount { + font-size: 1.5rem; + font-weight: 700; + color: #1e293b; + line-height: 1.2; + letter-spacing: -0.025em; +} + +.simply-countdown > .simply-section .simply-word { + font-size: 0.7rem; + font-weight: 500; + color: #64748b; + text-transform: uppercase; + letter-spacing: 0.1em; +} + +@media (min-width: 640px) { + .simply-countdown > .simply-section { + width: 75px; + height: 75px; + padding: 1.75rem; + } + + .simply-countdown > .simply-section .simply-amount { + font-size: 1.75rem; + } + + .simply-countdown > .simply-section .simply-word { + font-size: 0.75rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown > .simply-section { + width: 90px; + height: 90px; + padding: 2rem; + } + + .simply-countdown > .simply-section .simply-amount { + font-size: 2rem; + } + + .simply-countdown > .simply-section .simply-word { + font-size: 0.8rem; + } +} diff --git a/demo/css/simplyCountdown.theme.losange.css b/demo/css/simplyCountdown.theme.losange.css index ac5262a..931da86 100644 --- a/demo/css/simplyCountdown.theme.losange.css +++ b/demo/css/simplyCountdown.theme.losange.css @@ -1 +1,83 @@ -.simply-countdown-losange{overflow:visible;display:table;font-family:"Arial",sans-serif}.simply-countdown-losange>.simply-section{width:100px;height:100px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);float:left;margin:30px;background:#024772}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg)}.simply-countdown-losange>.simply-section>div .simply-amount,.simply-countdown-losange>.simply-section>div .simply-word{display:block;color:#fff;font-weight:700;text-align:center} \ No newline at end of file +/** +* Project : simply-countdown +* File : simplyCountdown.theme.losange +* Author : Vincent Loy +*/ + +.simply-countdown-losange { + overflow: visible; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 4rem; + font-family: "Inter", sans-serif; +} + +.simply-countdown-losange > .simply-section { + width: 70px; + height: 70px; + display: flex; + justify-content: center; + align-items: center; + transform: rotate(-45deg); + background: linear-gradient(135deg, #4f46e5, #7c3aed); + border-radius: 0.5rem; + transition: all 0.2s ease-in-out; +} + +.simply-countdown-losange > .simply-section > div { + transform: rotate(45deg); + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.simply-countdown-losange > .simply-section .simply-amount, +.simply-countdown-losange > .simply-section .simply-word { + display: block; + text-align: center; +} + +.simply-countdown-losange > .simply-section .simply-amount { + font-size: 1.25rem; + font-weight: 700; + color: #fff; +} + +.simply-countdown-losange > .simply-section .simply-word { + font-size: 0.65rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.9); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +@media (min-width: 640px) { + .simply-countdown-losange > .simply-section { + width: 80px; + height: 80px; + } + + .simply-countdown-losange > .simply-section .simply-amount { + font-size: 1.5rem; + } + + .simply-countdown-losange > .simply-section .simply-word { + font-size: 0.7rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown-losange > .simply-section { + width: 90px; + height: 90px; + } + + .simply-countdown-losange > .simply-section .simply-amount { + font-size: 1.75rem; + } + + .simply-countdown-losange > .simply-section .simply-word { + font-size: 0.75rem; + } +} diff --git a/demo/index.html b/demo/index.html index 09bc147..7567ffc 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1,450 +1,154 @@ - - + + simplyCountdown.js | A Tiny and dead simple Javascript Countdown Library - - - + - - - - - - - + + + + + + + + + + - -
-
-

simplyCountdown.js

-

A Tiny Javascript Countdown Library

- -

- You're just - - away from discovering the perfect Countdown Library for your next project! -

- -
- - View on GitHub - - - Download Sources - + +
+
+

simplyCountdown.js

+

A dead simple and lightweight countdown library

+
-
-
- -
-
-

Why another countdown ?

- -

- I created this little library on a day when I had some extra time, - inspired by my regular need for JavaScript countdown solutions on websites. - This library is designed to meet my exact needs for simplicity and flexibility, - making it perfect for use cases like 'under construction' pages or upcoming event countdowns. -

- -

- This JavaScript countdown library is lightweight and easy to use—ideal for developers who want a straightforward, - customizable countdown without the unnecessary complexity of many other libraries. Whether it's for landing pages, - promotions, or personal projects, this solution can help you add engaging countdown timers effortlessly. -

- -

- simplyCountdown.js has been adopted by a variety of projects where developers needed a simple, reliable countdown solution. - Its lightweight nature and ease of customization make it an appealing choice for straightforward use cases like 'under construction' pages or event countdowns -

- -
-

Getting Started

- -

install via yarn, npm, direct - download

- -
-
-    $ npm install simplycountdown.js
-
-    // or
-
-    $ yarn add simplycountdown.js
-
-        
- -

Insert simplyCountdown to your HTML

-
-
-    <link rel="stylesheet" href="css/simplyCountdown.theme.default.css"/>
-    <script src="dist/simplyCountdown.min.js"></script>
-
-        
-
-
-    // This is an example with default parameters
-    // You'll always have to call simplyCountdown using ID's, no classes.
-
-    simplyCountdown('[CSS-SELECTOR]', {
-        year: 2015, // Target year (required)
-        month: 6, // Target month [1-12] (required)
-        day: 28, // Target day [1-31] (required)
-        hours: 0, // Target hour [0-23], default: 0
-        minutes: 0, // Target minute [0-59], default: 0
-        seconds: 0, // Target second [0-59], default: 0
-        words: { // Custom labels, with lambda for plurals
-            days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root },
-            hours: { root: 'hour', lambda: (root, n) => n > 1 ? root + 's' : root },
-            minutes: { root: 'minute', lambda: (root, n) => n > 1 ? root + 's' : root },
-            seconds: { root: 'second', lambda: (root, n) => n > 1 ? root + 's' : root }
-        },
-        plural: true, // Use plurals for labels
-        inline: false, // Inline format: e.g., "24 days, 4 hours, 2 minutes"
-        inlineSeparator: ', ', // Separator for inline format, default: ", "
-        inlineClass: 'simply-countdown-inline', // CSS class for inline countdown
-        enableUtc: false, // Use UTC time if true
-        onEnd: function () {}, // Callback when countdown ends
-        refresh: 1000, // Refresh interval in ms, default: 1000
-        sectionClass: 'simply-section', // CSS class for each countdown section
-        amountClass: 'simply-amount', // CSS class for numeric values
-        wordClass: 'simply-word', // CSS class for unit labels
-        zeroPad: false, // Pad numbers with leading zero
-        removeZeroUnits: false, // Remove units with zero value
-        countUp: false // Count up after reaching zero
-    });    
-
-    // Also, you can init with already existing Javascript Object.
-    let myElement = document.querySelector('.my-countdown');
-    simplyCountdown(myElement, { /* options */ });
-
-    let multipleElements = document.querySelectorAll('.my-countdown');
-    simplyCountdown(multipleElements, { /* options */ });
-
-        
-

You can use it with jQuery too (not required)

- -
-
-    // jQuery Example
-
-    $('[SELECTOR]').simplyCountdown({
-        year: 2015, // required
-        month: 6, // required
-        day: 28, // required
-        ...
-    });
-
-        
- -

Parameters

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescriptionDefault
yearNumber (required)The target year for the countdown.-
monthNumber (required)The target month [1-12] for the countdown.-
dayNumber (required)The target day [1-31] for the countdown.-
hoursNumberThe target hour [0-23].0
minutesNumberThe target minute [0-59].0
secondsNumberThe target second [0-59].0
wordsObjectCustom labels for the units (days, hours, minutes, seconds) with optional lambda function for correct pluralization. - { days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root }, ... } -
pluralBooleanWhether to use plural forms for the unit labels.true
inlineBooleanSet to true for a simple inline countdown (e.g., "24 days, 4 hours, 2 minutes").false
inlineSeparatorStringSeparator used in the inline countdown format.", "
inlineClassStringCSS class applied to the inline countdown container."simply-countdown-inline"
enableUtcBooleanSet to true to use UTC time for the countdown calculations.false
onEndFunctionCallback function executed when the countdown ends.() => {}
refreshNumberThe countdown refresh interval in milliseconds.1000
sectionClassStringCSS class applied to each countdown section (days, hours, minutes, seconds)."simply-section"
amountClassStringCSS class applied to the numeric value of each countdown section."simply-amount"
wordClassStringCSS class applied to the unit label of each countdown section."simply-word"
zeroPadBooleanWhether to pad the numeric values with leading zeros (e.g., "05").false
removeZeroUnitsBooleanRemove units with zero value (e.g., remove "0 days" if days are zero).false
countUpBooleanCount up after reaching zero if set to true.false
-
-
- -
-

Easy to customize

-

- You can easly customize the countdown using the css theme starter file or create your - own like so : -

+ + +
+
+
+

Installation

+
+
+

+
+ NPM +

+
$ npm install simplycountdown
+
+
+

+
+ Yarn +

+
$ yarn add simplycountdown
+
+
+
+ +
+

+
+ Examples +

+ +
+
+

Default Theme

+
+
+ +
+

Without Zero Units - Dark Theme

+
+
+ +
+

Inline

+
+
+ +
+

Count Up - Cyberpunk Theme

+
+
+
+ +
+
+

Losange Theme

+
+
+
+
+ +
+

+
+ Usage +

+
+
+simplyCountdown('[CSS-SELECTOR]', {
+    year: 2025, // required
+    month: 6, // required
+    day: 28, // required
+    hours: 0, // Default is 0 [0-23] integer
+    minutes: 0, // Default is 0 [0-59] integer
+    seconds: 0, // Default is 0 [0-59] integer
+    words: { //words displayed into the countdown
+        days: { singular: 'day', plural: 'days' },
+        hours: { singular: 'hour', plural: 'hours' },
+        minutes: { singular: 'minute', plural: 'minutes' },
+        seconds: { singular: 'second', plural: 'seconds' }
+    },
+    plural: true, //use plurals
+    inline: false, //set to true to display inline
+    inlineClass: 'simply-countdown-inline', //inline css span class
+    enableUtc: false, //Use UTC or not - default : false
+    onEnd: function() { return; }, //Callback on countdown end
+    refresh: 1000, //default refresh every 1s
+    sectionClass: 'simply-section', //section css class
+    amountClass: 'simply-amount', //amount css class
+    wordClass: 'simply-word', //word css class
+    zeroPad: false,
+    countUp: false
+});
+                    
+
+
+
+
-
+
+
+

+ Made with

by + Vincent Loy +

-   The following theme template works with default - class in parameters + Like simplyCountdown? + + Give it a star on Github!

+

-
-
-    /**
-    * Project : simply-countdown
-    * File : simplyCountdown.theme.custom
-    * Author : Your Name <your-mail[at]example.com>
-    */
-
-    .simply-countdown {
-    /* The countdown */
-    }
-    .simply-countdown > .simply-section {
-    /* coutndown blocks */
-    }
-
-    .simply-countdown > .simply-section > div {
-    /* countdown block inner div */
-    }
-
-    .simply-countdown > .simply-section .simply-amount,
-    .simply-countdown > .simply-section .simply-word {
-    /* amounts and words */
-    }
-
-    .simply-countdown > .simply-section .simply-amount {
-    /* amounts */
-    }
-
-    .simply-countdown > .simply-section .simply-word {
-    /* words */
-    }
-
-
-        
-
- -
-

Examples

- -

Default Theme

-
- -

Losange Theme

-
- -

Without Zero Units

-
- -

Inline

-
- -

Count Up

-
-
-
- - - -
- You like simplyCountdown ? Give it a star on Github ! -
- - - - - + diff --git a/demo/js/demo.js b/demo/js/demo.js new file mode 100644 index 0000000..146948b --- /dev/null +++ b/demo/js/demo.js @@ -0,0 +1,74 @@ +/** + * WARNING: I set this coundtown to be running until the end of times. + * So when you'll init the plugin, follow how it's done in plugin documentation. + */ +let d = new Date(); +d.setMonth(d.getMonth() + 1); + +// default example +simplyCountdown('.simply-countdown-one', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate(), + enableUtc: true +}); + +//jQuery example +$('#simply-countdown-losange').simplyCountdown({ + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate(), + enableUtc: false +}); + +// example with removeZeroUnits +simplyCountdown('.simply-countdown-two', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate() - 30, + removeZeroUnits: true +}); + +// inline example +simplyCountdown('.simply-countdown-inline', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate(), + inline: true +}); + +// Header inline Countdown +let dateInTwoMinutes = new Date(); +dateInTwoMinutes.setSeconds(dateInTwoMinutes.getSeconds() + 30); +simplyCountdown('.sc-inline-header__cd', { + year: dateInTwoMinutes.getFullYear(), + month: dateInTwoMinutes.getMonth() + 1, + day: dateInTwoMinutes.getDate(), + hours: dateInTwoMinutes.getHours(), + minutes: dateInTwoMinutes.getMinutes(), + seconds: dateInTwoMinutes.getSeconds(), + removeZeroUnits: true, + inline: true, + inlineSeparator: ' - ', + onEnd: () => { + let afterHeaderCdAlert = document.querySelector('.show-after-header-cd'); + afterHeaderCdAlert.classList.add('active'); + document.querySelector('.sc-inline-header').classList.add('hide'); + + window.setInterval(() => { + afterHeaderCdAlert.classList.remove('active'); + }, 20000); + } +}); + +// Count Up Example +var countUpDate = new Date(); +simplyCountdown('.simply-countdown-countup', { + year: countUpDate.getFullYear(), + month: countUpDate.getMonth() + 1, + day: countUpDate.getDate(), + hours: countUpDate.getHours(), + minutes: countUpDate.getMinutes(), + seconds: countUpDate.getSeconds(), + countUp: true +}); diff --git a/demo/main.js b/demo/main.js new file mode 100644 index 0000000..f9807c0 --- /dev/null +++ b/demo/main.js @@ -0,0 +1,25 @@ +// Import UnoCSS +import '@unocss/reset/tailwind.css' +import 'virtual:uno.css' + +// Import styles +import './css/demo.css' +import './css/simplyCountdown.theme.default.css' +import './css/simplyCountdown.theme.dark.css' +import './css/simplyCountdown.theme.cyberpunk.css' +import './css/simplyCountdown.theme.losange.css' + +// Import the library +import simplyCountdown from '/src/simplyCountdown.js' + +// Make it available globally for the demo +window.simplyCountdown = simplyCountdown + +// Wait for jQuery to be loaded +const checkJQuery = setInterval(() => { + if (window.jQuery) { + clearInterval(checkJQuery) + // Initialize demo + import('./js/demo.js') + } +}, 100) diff --git a/dist/simplyCountdown.es.js b/dist/simplyCountdown.es.js index e00067d..40dc0a6 100644 --- a/dist/simplyCountdown.es.js +++ b/dist/simplyCountdown.es.js @@ -8,7 +8,7 @@ * - Justin Beasley * - Nathan Smith */ -(function(T) { +(function(P) { let w = function(n) { let s, a = n || {}; for (let e = 1; e < arguments.length; e += 1) { @@ -21,14 +21,14 @@ } } return a; - }, b = (n) => n !== null && Symbol.iterator in Object(n), f = (n, s, a) => { + }, T = (n) => n !== null && Symbol.iterator in Object(n), f = (n, s, a) => { let e = document.createElement("div"), d = document.createElement("span"), r = document.createElement("span"), t = document.createElement("div"); return t.appendChild(d), t.appendChild(r), e.appendChild(t), e.classList.add(s.sectionClass), e.classList.add(a), d.classList.add(s.amountClass), r.classList.add(s.wordClass), n.appendChild(e), { full: e, amount: d, word: r }; - }, S = (n, s) => { + }, b = (n, s) => { let a; return n.inline ? (a = document.createElement("span"), a.classList.add(n.inlineClass), a) : { days: f(s, n, "simply-days-section"), @@ -36,8 +36,7 @@ minutes: f(s, n, "simply-minutes-section"), seconds: f(s, n, "simply-seconds-section") }; - }; - T.simplyCountdown = (n, s) => { + }, S = (n, s) => { const a = Object.getPrototypeOf(n); let e = w({ year: 2015, @@ -47,10 +46,10 @@ minutes: 0, seconds: 0, words: { - days: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "day" }, - hours: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "hour" }, - minutes: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "minute" }, - seconds: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "second" } + days: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "day" }, + hours: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "hour" }, + minutes: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "minute" }, + seconds: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "second" } }, plural: !0, inline: !1, @@ -66,8 +65,8 @@ zeroPad: !1, removeZeroUnits: !1, countUp: !1 - }, s), d, r, t, y, i, u, p, h, C; - a === String.prototype ? C = document.querySelectorAll(n) : C = n, e.enableUtc ? r = new Date(Date.UTC( + }, s), d, r, t, y, i, u, p, C, h; + a === String.prototype ? h = document.querySelectorAll(n) : h = n, e.enableUtc ? r = new Date(Date.UTC( e.year, e.month - 1, e.day, @@ -82,11 +81,11 @@ e.minutes, e.seconds ); - let P = (l) => { - let c = l, o = S(e, c), D; - D = function() { - let $, v, E, x, I = () => { - i = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, p = parseInt(y / 60, 10), h = parseInt(y % 60, 10); + let I = (o) => { + let c = o, l = b(e, c), x; + x = function() { + let $, D, v, E, L = () => { + i = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, p = parseInt(y / 60, 10), C = parseInt(y % 60, 10); }; e.enableUtc ? (t = /* @__PURE__ */ new Date(), t = new Date(Date.UTC( t.getUTCFullYear(), @@ -95,26 +94,33 @@ t.getUTCHours(), t.getUTCMinutes(), t.getUTCSeconds() - ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((r - t.getTime()) / 1e3), y > 0 ? I() : e.countUp ? (y = (t.getTime() - r) / 1e3, I()) : (i = 0, u = 0, p = 0, h = 0, window.clearInterval(d), e.onEnd()); - let g = (m, L) => m.hasOwnProperty("lambda") ? m.lambda(m.root, L) : m.root, U = e.words; - if ($ = g(U.days, i), v = g(U.hours, u), E = g(U.minutes, p), x = g(U.seconds, h), e.inline) { + ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((r - t.getTime()) / 1e3), y > 0 ? L() : e.countUp ? (y = (t.getTime() - r) / 1e3, L()) : (i = 0, u = 0, p = 0, C = 0, window.clearInterval(d), e.onEnd()); + let g = (m, O) => m.hasOwnProperty("lambda") ? m.lambda(m.root, O) : m.root, U = e.words; + if ($ = g(U.days, i), D = g(U.hours, u), v = g(U.minutes, p), E = g(U.seconds, C), e.inline) { let m = ""; - e.removeZeroUnits && i === 0 || (m += `${i} ${$}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 || (m += `${u} ${v}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 && p === 0 || (m += `${p} ${E}${e.inlineSeparator}`), m += `${h} ${x}`, c.innerHTML = m.replace(/, $/, ""); + e.removeZeroUnits && i === 0 || (m += `${i} ${$}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 || (m += `${u} ${D}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 && p === 0 || (m += `${p} ${v}${e.inlineSeparator}`), m += `${C} ${E}`, c.innerHTML = m.replace(/, $/, ""); } else - e.removeZeroUnits && i === 0 ? o.days.full.style.display = "none" : (o.days.amount.textContent = (e.zeroPad && i.toString().length < 2 ? "0" : "") + i, o.days.word.textContent = $, o.days.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 ? o.hours.full.style.display = "none" : (o.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, o.hours.word.textContent = v, o.hours.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 && p === 0 ? o.minutes.full.style.display = "none" : (o.minutes.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, o.minutes.word.textContent = E, o.minutes.full.style.display = ""), o.seconds.amount.textContent = (e.zeroPad && h.toString().length < 2 ? "0" : "") + h, o.seconds.word.textContent = x, o.seconds.full.style.display = ""; - }, D(), d = window.setInterval(D, e.refresh); + e.removeZeroUnits && i === 0 ? l.days.full.style.display = "none" : (l.days.amount.textContent = (e.zeroPad && i.toString().length < 2 ? "0" : "") + i, l.days.word.textContent = $, l.days.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 ? l.hours.full.style.display = "none" : (l.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, l.hours.word.textContent = D, l.hours.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 && p === 0 ? l.minutes.full.style.display = "none" : (l.minutes.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, l.minutes.word.textContent = v, l.minutes.full.style.display = ""), l.seconds.amount.textContent = (e.zeroPad && C.toString().length < 2 ? "0" : "") + C, l.seconds.word.textContent = E, l.seconds.full.style.display = ""; + }, x(), d = window.setInterval(x, e.refresh); }; - b(C) ? Array.prototype.forEach.call(C, (l) => { - P(l); - }) : P(C); + T(h) ? Array.prototype.forEach.call(h, (o) => { + I(o); + }) : I(h); }; -})(window); -window.jQuery && function(T, w) { - function b(f, S) { - w(f, S); + typeof module < "u" && module.exports ? module.exports = S : typeof define == "function" && define.amd ? define([], function() { + return S; + }) : window.simplyCountdown = S; +})(); +window.jQuery && function(P, w) { + function T(f, b) { + w(f, b); } - T.fn.simplyCountdown = function(f) { - return b(this.selector, f); + P.fn.simplyCountdown = function(f) { + return T(this.selector, f); }; }(jQuery, simplyCountdown); +const Z = simplyCountdown; +export { + Z as default +}; //# sourceMappingURL=simplyCountdown.es.js.map diff --git a/dist/simplyCountdown.es.js.map b/dist/simplyCountdown.es.js.map index 54af5bd..91ba5c2 100644 --- a/dist/simplyCountdown.es.js.map +++ b/dist/simplyCountdown.es.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.es.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n exports.simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdown","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.es.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return simplyCountdown;\n });\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdownify","el","options","simplyCountdown$1"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.iife.js b/dist/simplyCountdown.iife.js index ebe3b54..795184a 100644 --- a/dist/simplyCountdown.iife.js +++ b/dist/simplyCountdown.iife.js @@ -1,4 +1,4 @@ -(function(){"use strict";/*! +var simplyCountdown=function(){"use strict";/*! * Project : simply-countdown * Date : 06/12/2024 * License : MIT @@ -7,5 +7,5 @@ * Contributors : * - Justin Beasley * - Nathan Smith -*/(function(T){let w=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},S=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}};T.simplyCountdown=(n,s)=>{const a=Object.getPrototypeOf(n);let e=w({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,c)=>c>1?l+"s":l,root:"day"},hours:{lambda:(l,c)=>c>1?l+"s":l,root:"hour"},minutes:{lambda:(l,c)=>c>1?l+"s":l,root:"minute"},seconds:{lambda:(l,c)=>c>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,i,u,p,h,C;a===String.prototype?C=document.querySelectorAll(n):C=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=l=>{let c=l,o=S(e,c),D;D=function(){let $,v,E,x,I=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),h=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?I():e.countUp?(y=(t.getTime()-r)/1e3,I()):(i=0,u=0,p=0,h=0,window.clearInterval(d),e.onEnd());let g=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,U=e.words;if($=g(U.days,i),v=g(U.hours,u),E=g(U.minutes,p),x=g(U.seconds,h),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&p===0||(m+=`${p} ${E}${e.inlineSeparator}`),m+=`${h} ${x}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?o.days.full.style.display="none":(o.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,o.days.word.textContent=$,o.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?o.hours.full.style.display="none":(o.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,o.hours.word.textContent=v,o.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&p===0?o.minutes.full.style.display="none":(o.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,o.minutes.word.textContent=E,o.minutes.full.style.display=""),o.seconds.amount.textContent=(e.zeroPad&&h.toString().length<2?"0":"")+h,o.seconds.word.textContent=x,o.seconds.full.style.display=""},D(),d=window.setInterval(D,e.refresh)};b(C)?Array.prototype.forEach.call(C,l=>{P(l)}):P(C)}})(window),window.jQuery&&function(T,w){function b(f,S){w(f,S)}T.fn.simplyCountdown=function(f){return b(this.selector,f)}}(jQuery,simplyCountdown)})(); +*/return function(P){let w=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},b=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}},S=(n,s)=>{const a=Object.getPrototypeOf(n);let e=w({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,i,u,p,C,h;a===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let I=o=>{let c=o,l=b(e,c),$;$=function(){let v,x,D,E,L=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),C=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?L():e.countUp?(y=(t.getTime()-r)/1e3,L()):(i=0,u=0,p=0,C=0,window.clearInterval(d),e.onEnd());let g=(m,O)=>m.hasOwnProperty("lambda")?m.lambda(m.root,O):m.root,U=e.words;if(v=g(U.days,i),x=g(U.hours,u),D=g(U.minutes,p),E=g(U.seconds,C),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&p===0||(m+=`${p} ${D}${e.inlineSeparator}`),m+=`${C} ${E}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,l.days.word.textContent=v,l.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=x,l.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=D,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=E,l.seconds.full.style.display=""},$(),d=window.setInterval($,e.refresh)};T(h)?Array.prototype.forEach.call(h,o=>{I(o)}):I(h)};typeof module<"u"&&module.exports?module.exports=S:typeof define=="function"&&define.amd?define([],function(){return S}):window.simplyCountdown=S}(),window.jQuery&&function(P,w){function T(f,b){w(f,b)}P.fn.simplyCountdown=function(f){return T(this.selector,f)}}(jQuery,simplyCountdown),simplyCountdown}(); //# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/dist/simplyCountdown.iife.js.map b/dist/simplyCountdown.iife.js.map index 4501ca1..00f88f5 100644 --- a/dist/simplyCountdown.iife.js.map +++ b/dist/simplyCountdown.iife.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n exports.simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdown","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return simplyCountdown;\n });\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.umd.js b/dist/simplyCountdown.umd.js index 0098b19..632a7f9 100644 --- a/dist/simplyCountdown.umd.js +++ b/dist/simplyCountdown.umd.js @@ -1,4 +1,4 @@ -(function(h){typeof define=="function"&&define.amd?define(h):h()})(function(){"use strict";/*! +(function(g,h){typeof exports=="object"&&typeof module<"u"?module.exports=h():typeof define=="function"&&define.amd?define(h):(g=typeof globalThis<"u"?globalThis:g||self,g.simplyCountdown=h())})(this,function(){"use strict";/*! * Project : simply-countdown * Date : 06/12/2024 * License : MIT @@ -7,5 +7,5 @@ * Contributors : * - Justin Beasley * - Nathan Smith -*/(function(h){let g=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),i=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(i),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),i.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:i}},S=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}};h.simplyCountdown=(n,s)=>{const a=Object.getPrototypeOf(n);let e=g({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,i,t,y,r,u,p,C,w;a===String.prototype?w=document.querySelectorAll(n):w=n,e.enableUtc?i=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):i=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=o=>{let c=o,l=S(e,c),D;D=function(){let $,v,E,x,I=()=>{r=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),C=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((i-t.getTime())/1e3),y>0?I():e.countUp?(y=(t.getTime()-i)/1e3,I()):(r=0,u=0,p=0,C=0,window.clearInterval(d),e.onEnd());let U=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,T=e.words;if($=U(T.days,r),v=U(T.hours,u),E=U(T.minutes,p),x=U(T.seconds,C),e.inline){let m="";e.removeZeroUnits&&r===0||(m+=`${r} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0&&p===0||(m+=`${p} ${E}${e.inlineSeparator}`),m+=`${C} ${x}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&r===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&r.toString().length<2?"0":"")+r,l.days.word.textContent=$,l.days.full.style.display=""),e.removeZeroUnits&&r===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=v,l.hours.full.style.display=""),e.removeZeroUnits&&r===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=E,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=x,l.seconds.full.style.display=""},D(),d=window.setInterval(D,e.refresh)};b(w)?Array.prototype.forEach.call(w,o=>{P(o)}):P(w)}})(window),window.jQuery&&function(h,g){function b(f,S){g(f,S)}h.fn.simplyCountdown=function(f){return b(this.selector,f)}}(jQuery,simplyCountdown)}); +*/return function(h){let U=function(n){let o,d=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),y=(n,o,d)=>{let e=document.createElement("div"),a=document.createElement("span"),i=document.createElement("span"),t=document.createElement("div");return t.appendChild(a),t.appendChild(i),e.appendChild(t),e.classList.add(o.sectionClass),e.classList.add(d),a.classList.add(o.amountClass),i.classList.add(o.wordClass),n.appendChild(e),{full:e,amount:a,word:i}},S=(n,o)=>{let d;return n.inline?(d=document.createElement("span"),d.classList.add(n.inlineClass),d):{days:y(o,n,"simply-days-section"),hours:y(o,n,"simply-hours-section"),minutes:y(o,n,"simply-minutes-section"),seconds:y(o,n,"simply-seconds-section")}},$=(n,o)=>{const d=Object.getPrototypeOf(n);let e=U({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(s,m)=>m>1?s+"s":s,root:"day"},hours:{lambda:(s,m)=>m>1?s+"s":s,root:"hour"},minutes:{lambda:(s,m)=>m>1?s+"s":s,root:"minute"},seconds:{lambda:(s,m)=>m>1?s+"s":s,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},o),a,i,t,f,r,u,p,C,w;d===String.prototype?w=document.querySelectorAll(n):w=n,e.enableUtc?i=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):i=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let L=s=>{let m=s,l=S(e,m),D;D=function(){let v,E,P,I,O=()=>{r=parseInt(f/86400,10),f%=86400,u=parseInt(f/3600,10),f%=3600,p=parseInt(f/60,10),C=parseInt(f%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,f=Math.floor((i-t.getTime())/1e3),f>0?O():e.countUp?(f=(t.getTime()-i)/1e3,O()):(r=0,u=0,p=0,C=0,window.clearInterval(a),e.onEnd());let T=(c,Z)=>c.hasOwnProperty("lambda")?c.lambda(c.root,Z):c.root,b=e.words;if(v=T(b.days,r),E=T(b.hours,u),P=T(b.minutes,p),I=T(b.seconds,C),e.inline){let c="";e.removeZeroUnits&&r===0||(c+=`${r} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0||(c+=`${u} ${E}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0&&p===0||(c+=`${p} ${P}${e.inlineSeparator}`),c+=`${C} ${I}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&r===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&r.toString().length<2?"0":"")+r,l.days.word.textContent=v,l.days.full.style.display=""),e.removeZeroUnits&&r===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=E,l.hours.full.style.display=""),e.removeZeroUnits&&r===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=P,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=I,l.seconds.full.style.display=""},D(),a=window.setInterval(D,e.refresh)};x(w)?Array.prototype.forEach.call(w,s=>{L(s)}):L(w)};typeof module<"u"&&module.exports?module.exports=$:typeof define=="function"&&define.amd?define([],function(){return $}):window.simplyCountdown=$}(),window.jQuery&&function(h,U){function x(y,S){U(y,S)}h.fn.simplyCountdown=function(y){return x(this.selector,y)}}(jQuery,simplyCountdown),simplyCountdown}); //# sourceMappingURL=simplyCountdown.umd.js.map diff --git a/dist/simplyCountdown.umd.js.map b/dist/simplyCountdown.umd.js.map index 992f5b9..fbbbedb 100644 --- a/dist/simplyCountdown.umd.js.map +++ b/dist/simplyCountdown.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n exports.simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdown","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return simplyCountdown;\n });\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file diff --git a/docs/assets/demo.js b/docs/assets/demo.js new file mode 100644 index 0000000..ae7bea9 --- /dev/null +++ b/docs/assets/demo.js @@ -0,0 +1 @@ +let e=new Date;e.setMonth(e.getMonth()+1);simplyCountdown(".simply-countdown-one",{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),enableUtc:!0});$("#simply-countdown-losange").simplyCountdown({year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),enableUtc:!1});simplyCountdown(".simply-countdown-two",{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()-30,removeZeroUnits:!0});simplyCountdown(".simply-countdown-inline",{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),inline:!0});let t=new Date;t.setSeconds(t.getSeconds()+30);simplyCountdown(".sc-inline-header__cd",{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate(),hours:t.getHours(),minutes:t.getMinutes(),seconds:t.getSeconds(),removeZeroUnits:!0,inline:!0,inlineSeparator:" - ",onEnd:()=>{let o=document.querySelector(".show-after-header-cd");o.classList.add("active"),document.querySelector(".sc-inline-header").classList.add("hide"),window.setInterval(()=>{o.classList.remove("active")},2e4)}});var n=new Date;simplyCountdown(".simply-countdown-countup",{year:n.getFullYear(),month:n.getMonth()+1,day:n.getDate(),hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds(),countUp:!0}); diff --git a/docs/assets/index.css b/docs/assets/index.css new file mode 100644 index 0000000..d24ecc2 --- /dev/null +++ b/docs/assets/index.css @@ -0,0 +1 @@ +.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section:hover{transform:translateY(-2px);box-shadow:0 6px 12px -2px #0000004d,0 3px 6px -2px #0003,0 0 0 1px #ffffff14;background:#0f172ad9}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section:hover{transform:translateY(-2px);box-shadow:0 6px 12px -2px #00000014,0 3px 6px -2px #0000000d}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;gap:.25rem}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.inline{display:inline}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse))}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-800{--un-bg-opacity:1;background-color:rgb(31 41 55 / var(--un-bg-opacity))}.bg-gray-900{--un-bg-opacity:1;background-color:rgb(17 24 39 / var(--un-bg-opacity))}.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity))}.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity))}.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity))}.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-0{padding:0}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity))}.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity))}.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity))}.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity))}.color-white,.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}} diff --git a/docs/assets/index.js b/docs/assets/index.js new file mode 100644 index 0000000..ebd93a2 --- /dev/null +++ b/docs/assets/index.js @@ -0,0 +1,10 @@ +(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))f(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const n of r.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&f(n)}).observe(document,{childList:!0,subtree:!0});function g(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function f(s){if(s.ep)return;s.ep=!0;const r=g(s);fetch(s.href,r)}})();const Z="modulepreload",_=function(v,p){return new URL(v,p).href},I={},A=function(p,g,f){let s=Promise.resolve();if(g&&g.length>0){const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),m=(t==null?void 0:t.nonce)||(t==null?void 0:t.getAttribute("nonce"));s=Promise.allSettled(g.map(e=>{if(e=_(e,f),e in I)return;I[e]=!0;const a=e.endsWith(".css"),y=a?'[rel="stylesheet"]':"";if(!!f)for(let i=n.length-1;i>=0;i--){const d=n[i];if(d.href===e&&(!a||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${y}`))return;const l=document.createElement("link");if(l.rel=a?"stylesheet":Z,a||(l.as="script"),l.crossOrigin="",l.href=e,m&&l.setAttribute("nonce",m),document.head.appendChild(l),a)return new Promise((i,d)=>{l.addEventListener("load",i),l.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${e}`)))})}))}function r(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return s.then(n=>{for(const t of n||[])t.status==="rejected"&&r(t.reason);return p().catch(r)})};/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/(function(v){let p=function(n){let t,m=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,t,m)=>{let e=document.createElement("div"),a=document.createElement("span"),y=document.createElement("span"),o=document.createElement("div");return o.appendChild(a),o.appendChild(y),e.appendChild(o),e.classList.add(t.sectionClass),e.classList.add(m),a.classList.add(t.amountClass),y.classList.add(t.wordClass),n.appendChild(e),{full:e,amount:a,word:y}},s=(n,t)=>{let m;return n.inline?(m=document.createElement("span"),m.classList.add(n.inlineClass),m):{days:f(t,n,"simply-days-section"),hours:f(t,n,"simply-hours-section"),minutes:f(t,n,"simply-minutes-section"),seconds:f(t,n,"simply-seconds-section")}},r=(n,t)=>{const m=Object.getPrototypeOf(n);let e=p({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(u,h)=>h>1?u+"s":u,root:"day"},hours:{lambda:(u,h)=>h>1?u+"s":u,root:"hour"},minutes:{lambda:(u,h)=>h>1?u+"s":u,root:"minute"},seconds:{lambda:(u,h)=>h>1?u+"s":u,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},t),a,y,o,l,i,d,C,E,U;m===String.prototype?U=document.querySelectorAll(n):U=n,e.enableUtc?y=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):y=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let D=u=>{let h=u,c=s(e,h),P;P=function(){let T,L,$,O,x=()=>{i=parseInt(l/86400,10),l%=86400,d=parseInt(l/3600,10),l%=3600,C=parseInt(l/60,10),E=parseInt(l%60,10)};e.enableUtc?(o=new Date,o=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate(),o.getUTCHours(),o.getUTCMinutes(),o.getUTCSeconds()))):o=new Date,l=Math.floor((y-o.getTime())/1e3),l>0?x():e.countUp?(l=(o.getTime()-y)/1e3,x()):(i=0,d=0,C=0,E=0,window.clearInterval(a),e.onEnd());let b=(w,j)=>w.hasOwnProperty("lambda")?w.lambda(w.root,j):w.root,S=e.words;if(T=b(S.days,i),L=b(S.hours,d),$=b(S.minutes,C),O=b(S.seconds,E),e.inline){let w="";e.removeZeroUnits&&i===0||(w+=`${i} ${T}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&d===0||(w+=`${d} ${L}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&d===0&&C===0||(w+=`${C} ${$}${e.inlineSeparator}`),w+=`${E} ${O}`,h.innerHTML=w.replace(/, $/,"")}else e.removeZeroUnits&&i===0?c.days.full.style.display="none":(c.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,c.days.word.textContent=T,c.days.full.style.display=""),e.removeZeroUnits&&i===0&&d===0?c.hours.full.style.display="none":(c.hours.amount.textContent=(e.zeroPad&&d.toString().length<2?"0":"")+d,c.hours.word.textContent=L,c.hours.full.style.display=""),e.removeZeroUnits&&i===0&&d===0&&C===0?c.minutes.full.style.display="none":(c.minutes.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,c.minutes.word.textContent=$,c.minutes.full.style.display=""),c.seconds.amount.textContent=(e.zeroPad&&E.toString().length<2?"0":"")+E,c.seconds.word.textContent=O,c.seconds.full.style.display=""},P(),a=window.setInterval(P,e.refresh)};g(U)?Array.prototype.forEach.call(U,u=>{D(u)}):D(U)};typeof module<"u"&&module.exports?module.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):window.simplyCountdown=r})();window.jQuery&&function(v,p){function g(f,s){p(f,s)}v.fn.simplyCountdown=function(f){return g(this.selector,f)}}(jQuery,simplyCountdown);const R=simplyCountdown;window.simplyCountdown=R;const W=setInterval(()=>{window.jQuery&&(clearInterval(W),A(()=>import("./demo.js"),[],import.meta.url))},100); diff --git a/docs/assets/simplyCountdown.iife.js b/docs/assets/simplyCountdown.iife.js new file mode 100644 index 0000000..795184a --- /dev/null +++ b/docs/assets/simplyCountdown.iife.js @@ -0,0 +1,11 @@ +var simplyCountdown=function(){"use strict";/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/return function(P){let w=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},b=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}},S=(n,s)=>{const a=Object.getPrototypeOf(n);let e=w({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,i,u,p,C,h;a===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let I=o=>{let c=o,l=b(e,c),$;$=function(){let v,x,D,E,L=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),C=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?L():e.countUp?(y=(t.getTime()-r)/1e3,L()):(i=0,u=0,p=0,C=0,window.clearInterval(d),e.onEnd());let g=(m,O)=>m.hasOwnProperty("lambda")?m.lambda(m.root,O):m.root,U=e.words;if(v=g(U.days,i),x=g(U.hours,u),D=g(U.minutes,p),E=g(U.seconds,C),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&p===0||(m+=`${p} ${D}${e.inlineSeparator}`),m+=`${C} ${E}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,l.days.word.textContent=v,l.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=x,l.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=D,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=E,l.seconds.full.style.display=""},$(),d=window.setInterval($,e.refresh)};T(h)?Array.prototype.forEach.call(h,o=>{I(o)}):I(h)};typeof module<"u"&&module.exports?module.exports=S:typeof define=="function"&&define.amd?define([],function(){return S}):window.simplyCountdown=S}(),window.jQuery&&function(P,w){function T(f,b){w(f,b)}P.fn.simplyCountdown=function(f){return T(this.selector,f)}}(jQuery,simplyCountdown),simplyCountdown}(); +//# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/docs/css/demo-only/prism.css b/docs/css/demo-only/prism.css deleted file mode 100644 index 4412600..0000000 --- a/docs/css/demo-only/prism.css +++ /dev/null @@ -1,135 +0,0 @@ -/** - * prism.js default theme for JavaScript, CSS and HTML - * Based on dabblet (http://dabblet.com) - * @author Lea Verou - */ - -code[class*="language-"], -pre[class*="language-"] { - color: black; - text-shadow: 0 1px white; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - direction: ltr; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*="language-"]::selection, pre[class*="language-"] ::selection, -code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #f5f2f0; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #999; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: hsla(0, 0%, 100%, .5); -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; -} - -.token.function { - color: #DD4A68; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} diff --git a/docs/css/demo.css b/docs/css/demo.css deleted file mode 100644 index f2518c3..0000000 --- a/docs/css/demo.css +++ /dev/null @@ -1 +0,0 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}body,html{font-family:"Wix Madefor Text",serif;font-optical-sizing:auto;font-style:normal;overflow-x:hidden;font-size:16px}p{font-size:1.2rem;line-height:1.6;font-weight:400;margin:20px 0 45px}h1,h2,h3{font-family:"Montserrat",sans-serif}header{display:flex;align-items:center;justify-content:center;background:#112d4e;border-bottom:5px solid #3f72af;padding:20px;height:450px}@media screen and (min-width:970px){header{height:650px}}header .header-content{text-align:center}header .header-content h1{font-style:italic;font-size:2rem;font-weight:600;color:#f9f7f7}@media screen and (min-width:970px){header .header-content h1{font-size:4rem}}header .header-content h2{font-size:1.33rem;color:#f9f7f7;margin:20px 0;font-weight:500}@media screen and (min-width:970px){header .header-content h2{font-size:1.75rem;margin:40px 0 60px 0}}header .header-content .repo-buttons{display:flex;align-items:center;justify-content:center}.button{color:#f9f7f7;border:2px solid #f9f7f7;border-radius:2px;text-decoration:none;padding:10px;transition:.1s ease-in-out all;display:block;margin:0 20px 20px 20px}.button span{display:none}@media screen and (min-width:970px){.button{margin-bottom:0}.button span{display:inline}}@media screen and (min-width:970px){.button>i{margin-right:10px}}.button:hover{background:#f9f7f7;color:#112d4e}.container{width:100%;padding:0 20px;margin:auto}@media screen and (min-width:970px){.container{width:960px}}.note{background:#3f72af;color:#fff;font-style:italic;border-radius:2px;padding:6.6666666667px 20px;border-radius:5px}.note p{margin-bottom:20px}main>section:not(:last-of-type){border-bottom:1px solid #112d4e;padding-bottom:20px}main h2{font-size:2rem;color:#3f72af;font-weight:700;margin:20px 0}@media screen and (min-width:970px){main h2{font-size:3rem;margin:40px 0}}main h3{font-size:20px;color:#3f72af;font-weight:700;margin:20px 0}@media screen and (min-width:970px){main h3{font-size:25px;margin:40px 0}}main h3 a{color:#6995ca;text-decoration:none}main h3 a:hover{text-decoration:underline}main a{font-weight:700;text-decoration:none;color:#6995ca;transition:.2s ease all}main a:hover{color:#112d4e;text-decoration:underline}.simply-countdown-inline{margin-top:20px;font-weight:700;font-size:1.3rem}.sc-inline-header{color:#f9f7f7;font-weight:100;font-size:1.4rem;font-style:italic}.alert{position:fixed;bottom:-60px;left:0;right:0;margin:auto;padding:20px;display:table;background:#112d4e;color:#fff;border-radius:5px;font-size:1.3rem;opacity:0;transition:.3s ease all}.alert.show-after-header-cd.active{opacity:1;bottom:60px}.alert.show-after-header-cd a{font-weight:700;color:#f9f7f7}footer{background:#112d4e;color:#fff;text-align:center;padding:20px;margin-top:40px;font-weight:600}footer a{color:#c7d8eb;text-decoration:none;font-weight:700}footer a:hover{text-decoration:underline}.table-wrapper{width:100%;overflow-x:auto}.table-wrapper table{width:100%;margin-bottom:1rem;color:#212529;border-collapse:collapse;min-width:600px}.table-wrapper table th,.table-wrapper table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table-wrapper table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6;background-color:#f8f9fa;font-weight:700}.table-wrapper table tbody tr:nth-child(even){background-color:#f2f2f2}.table-wrapper table.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-wrapper table.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-wrapper table.table-bordered{border:1px solid #dee2e6}.table-wrapper table.table-bordered th,.table-wrapper table.table-bordered td{border:1px solid #dee2e6}.table-wrapper table.table-sm th,.table-wrapper table.table-sm td{padding:.3rem}.text-center{text-align:center}.text-right{text-align:right}.bold{font-weight:700}.ff-code{font-family:monospace;font-size:.9rem}.hide{display:none} \ No newline at end of file diff --git a/docs/css/simplyCountdown.theme.custom.css b/docs/css/simplyCountdown.theme.custom.css deleted file mode 100644 index 38452a9..0000000 --- a/docs/css/simplyCountdown.theme.custom.css +++ /dev/null @@ -1,29 +0,0 @@ -/** -* Project : simply-countdown -* File : simplyCountdown.theme.custom -* Author : Your Name -*/ - -.simply-countdown { - /* The countdown */ -} -.simply-countdown > .simply-section { - /* coutndown blocks */ -} - -.simply-countdown > .simply-section > div { - /* countdown block inner div */ -} - -.simply-countdown > .simply-section .simply-amount, -.simply-countdown > .simply-section .simply-word { - /* amounts and words */ -} - -.simply-countdown > .simply-section .simply-amount { - /* amounts */ -} - -.simply-countdown > .simply-section .simply-word { - /* words */ -} diff --git a/docs/css/simplyCountdown.theme.default.css b/docs/css/simplyCountdown.theme.default.css deleted file mode 100644 index 1efede8..0000000 --- a/docs/css/simplyCountdown.theme.default.css +++ /dev/null @@ -1 +0,0 @@ -.simply-countdown{overflow:hidden;display:table;font-family:"Arial",sans-serif}.simply-countdown>.simply-section{width:50px;height:50px;padding:50px;display:flex;align-items:center;justify-content:center;float:left;margin:15px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.simply-countdown>.simply-section .simply-amount,.simply-countdown>.simply-section .simply-word{display:block;text-align:center} \ No newline at end of file diff --git a/docs/css/simplyCountdown.theme.losange.css b/docs/css/simplyCountdown.theme.losange.css deleted file mode 100644 index ac5262a..0000000 --- a/docs/css/simplyCountdown.theme.losange.css +++ /dev/null @@ -1 +0,0 @@ -.simply-countdown-losange{overflow:visible;display:table;font-family:"Arial",sans-serif}.simply-countdown-losange>.simply-section{width:100px;height:100px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);float:left;margin:30px;background:#024772}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg)}.simply-countdown-losange>.simply-section>div .simply-amount,.simply-countdown-losange>.simply-section>div .simply-word{display:block;color:#fff;font-weight:700;text-align:center} \ No newline at end of file diff --git a/docs/dist/simplyCountdown.es.js b/docs/dist/simplyCountdown.es.js deleted file mode 100644 index e00067d..0000000 --- a/docs/dist/simplyCountdown.es.js +++ /dev/null @@ -1,120 +0,0 @@ -/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/ -(function(T) { - let w = function(n) { - let s, a = n || {}; - for (let e = 1; e < arguments.length; e += 1) { - s = arguments[e]; - const d = Object.keys(s); - if (d.length) - for (let r = 0; r < d.length; r += 1) { - let t = d[r]; - Object.prototype.hasOwnProperty.call(s, t) && (typeof s[t] == "object" ? w(a[t], s[t]) : a[t] = s[t]); - } - } - return a; - }, b = (n) => n !== null && Symbol.iterator in Object(n), f = (n, s, a) => { - let e = document.createElement("div"), d = document.createElement("span"), r = document.createElement("span"), t = document.createElement("div"); - return t.appendChild(d), t.appendChild(r), e.appendChild(t), e.classList.add(s.sectionClass), e.classList.add(a), d.classList.add(s.amountClass), r.classList.add(s.wordClass), n.appendChild(e), { - full: e, - amount: d, - word: r - }; - }, S = (n, s) => { - let a; - return n.inline ? (a = document.createElement("span"), a.classList.add(n.inlineClass), a) : { - days: f(s, n, "simply-days-section"), - hours: f(s, n, "simply-hours-section"), - minutes: f(s, n, "simply-minutes-section"), - seconds: f(s, n, "simply-seconds-section") - }; - }; - T.simplyCountdown = (n, s) => { - const a = Object.getPrototypeOf(n); - let e = w({ - year: 2015, - month: 6, - day: 28, - hours: 0, - minutes: 0, - seconds: 0, - words: { - days: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "day" }, - hours: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "hour" }, - minutes: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "minute" }, - seconds: { lambda: (l, c) => c > 1 ? l + "s" : l, root: "second" } - }, - plural: !0, - inline: !1, - inlineSeparator: ", ", - enableUtc: !1, - onEnd: () => { - }, - refresh: 1e3, - inlineClass: "simply-countdown-inline", - sectionClass: "simply-section", - amountClass: "simply-amount", - wordClass: "simply-word", - zeroPad: !1, - removeZeroUnits: !1, - countUp: !1 - }, s), d, r, t, y, i, u, p, h, C; - a === String.prototype ? C = document.querySelectorAll(n) : C = n, e.enableUtc ? r = new Date(Date.UTC( - e.year, - e.month - 1, - e.day, - e.hours, - e.minutes, - e.seconds - )) : r = new Date( - e.year, - e.month - 1, - e.day, - e.hours, - e.minutes, - e.seconds - ); - let P = (l) => { - let c = l, o = S(e, c), D; - D = function() { - let $, v, E, x, I = () => { - i = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, p = parseInt(y / 60, 10), h = parseInt(y % 60, 10); - }; - e.enableUtc ? (t = /* @__PURE__ */ new Date(), t = new Date(Date.UTC( - t.getUTCFullYear(), - t.getUTCMonth(), - t.getUTCDate(), - t.getUTCHours(), - t.getUTCMinutes(), - t.getUTCSeconds() - ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((r - t.getTime()) / 1e3), y > 0 ? I() : e.countUp ? (y = (t.getTime() - r) / 1e3, I()) : (i = 0, u = 0, p = 0, h = 0, window.clearInterval(d), e.onEnd()); - let g = (m, L) => m.hasOwnProperty("lambda") ? m.lambda(m.root, L) : m.root, U = e.words; - if ($ = g(U.days, i), v = g(U.hours, u), E = g(U.minutes, p), x = g(U.seconds, h), e.inline) { - let m = ""; - e.removeZeroUnits && i === 0 || (m += `${i} ${$}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 || (m += `${u} ${v}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 && p === 0 || (m += `${p} ${E}${e.inlineSeparator}`), m += `${h} ${x}`, c.innerHTML = m.replace(/, $/, ""); - } else - e.removeZeroUnits && i === 0 ? o.days.full.style.display = "none" : (o.days.amount.textContent = (e.zeroPad && i.toString().length < 2 ? "0" : "") + i, o.days.word.textContent = $, o.days.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 ? o.hours.full.style.display = "none" : (o.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, o.hours.word.textContent = v, o.hours.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 && p === 0 ? o.minutes.full.style.display = "none" : (o.minutes.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, o.minutes.word.textContent = E, o.minutes.full.style.display = ""), o.seconds.amount.textContent = (e.zeroPad && h.toString().length < 2 ? "0" : "") + h, o.seconds.word.textContent = x, o.seconds.full.style.display = ""; - }, D(), d = window.setInterval(D, e.refresh); - }; - b(C) ? Array.prototype.forEach.call(C, (l) => { - P(l); - }) : P(C); - }; -})(window); -window.jQuery && function(T, w) { - function b(f, S) { - w(f, S); - } - T.fn.simplyCountdown = function(f) { - return b(this.selector, f); - }; -}(jQuery, simplyCountdown); -//# sourceMappingURL=simplyCountdown.es.js.map diff --git a/docs/dist/simplyCountdown.es.js.map b/docs/dist/simplyCountdown.es.js.map deleted file mode 100644 index 54af5bd..0000000 --- a/docs/dist/simplyCountdown.es.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"simplyCountdown.es.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n exports.simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdown","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file diff --git a/docs/dist/simplyCountdown.iife.js b/docs/dist/simplyCountdown.iife.js deleted file mode 100644 index ebe3b54..0000000 --- a/docs/dist/simplyCountdown.iife.js +++ /dev/null @@ -1,11 +0,0 @@ -(function(){"use strict";/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/(function(T){let w=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},S=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}};T.simplyCountdown=(n,s)=>{const a=Object.getPrototypeOf(n);let e=w({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,c)=>c>1?l+"s":l,root:"day"},hours:{lambda:(l,c)=>c>1?l+"s":l,root:"hour"},minutes:{lambda:(l,c)=>c>1?l+"s":l,root:"minute"},seconds:{lambda:(l,c)=>c>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,i,u,p,h,C;a===String.prototype?C=document.querySelectorAll(n):C=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=l=>{let c=l,o=S(e,c),D;D=function(){let $,v,E,x,I=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),h=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?I():e.countUp?(y=(t.getTime()-r)/1e3,I()):(i=0,u=0,p=0,h=0,window.clearInterval(d),e.onEnd());let g=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,U=e.words;if($=g(U.days,i),v=g(U.hours,u),E=g(U.minutes,p),x=g(U.seconds,h),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&p===0||(m+=`${p} ${E}${e.inlineSeparator}`),m+=`${h} ${x}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?o.days.full.style.display="none":(o.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,o.days.word.textContent=$,o.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?o.hours.full.style.display="none":(o.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,o.hours.word.textContent=v,o.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&p===0?o.minutes.full.style.display="none":(o.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,o.minutes.word.textContent=E,o.minutes.full.style.display=""),o.seconds.amount.textContent=(e.zeroPad&&h.toString().length<2?"0":"")+h,o.seconds.word.textContent=x,o.seconds.full.style.display=""},D(),d=window.setInterval(D,e.refresh)};b(C)?Array.prototype.forEach.call(C,l=>{P(l)}):P(C)}})(window),window.jQuery&&function(T,w){function b(f,S){w(f,S)}T.fn.simplyCountdown=function(f){return b(this.selector,f)}}(jQuery,simplyCountdown)})(); -//# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/docs/dist/simplyCountdown.iife.js.map b/docs/dist/simplyCountdown.iife.js.map deleted file mode 100644 index 4501ca1..0000000 --- a/docs/dist/simplyCountdown.iife.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n exports.simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdown","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file diff --git a/docs/dist/simplyCountdown.umd.js b/docs/dist/simplyCountdown.umd.js deleted file mode 100644 index 0098b19..0000000 --- a/docs/dist/simplyCountdown.umd.js +++ /dev/null @@ -1,11 +0,0 @@ -(function(h){typeof define=="function"&&define.amd?define(h):h()})(function(){"use strict";/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/(function(h){let g=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),i=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(i),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),i.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:i}},S=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}};h.simplyCountdown=(n,s)=>{const a=Object.getPrototypeOf(n);let e=g({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,i,t,y,r,u,p,C,w;a===String.prototype?w=document.querySelectorAll(n):w=n,e.enableUtc?i=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):i=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=o=>{let c=o,l=S(e,c),D;D=function(){let $,v,E,x,I=()=>{r=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),C=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((i-t.getTime())/1e3),y>0?I():e.countUp?(y=(t.getTime()-i)/1e3,I()):(r=0,u=0,p=0,C=0,window.clearInterval(d),e.onEnd());let U=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,T=e.words;if($=U(T.days,r),v=U(T.hours,u),E=U(T.minutes,p),x=U(T.seconds,C),e.inline){let m="";e.removeZeroUnits&&r===0||(m+=`${r} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0&&p===0||(m+=`${p} ${E}${e.inlineSeparator}`),m+=`${C} ${x}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&r===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&r.toString().length<2?"0":"")+r,l.days.word.textContent=$,l.days.full.style.display=""),e.removeZeroUnits&&r===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=v,l.hours.full.style.display=""),e.removeZeroUnits&&r===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=E,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=x,l.seconds.full.style.display=""},D(),d=window.setInterval(D,e.refresh)};b(w)?Array.prototype.forEach.call(w,o=>{P(o)}):P(w)}})(window),window.jQuery&&function(h,g){function b(f,S){g(f,S)}h.fn.simplyCountdown=function(f){return b(this.selector,f)}}(jQuery,simplyCountdown)}); -//# sourceMappingURL=simplyCountdown.umd.js.map diff --git a/docs/dist/simplyCountdown.umd.js.map b/docs/dist/simplyCountdown.umd.js.map deleted file mode 100644 index 992f5b9..0000000 --- a/docs/dist/simplyCountdown.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n exports.simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdown","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 23257ae..134c997 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,450 +1,150 @@ - - + + simplyCountdown.js | A Tiny and dead simple Javascript Countdown Library - - - + - - - - - - - + + + + + + - -
-
-

simplyCountdown.js

-

A Tiny Javascript Countdown Library

- -

- You're just - - away from discovering the perfect Countdown Library for your next project! -

- -
- - View on GitHub - - - Download Sources - + +
+
+

simplyCountdown.js

+

A dead simple and lightweight countdown library

+
-
-
- -
-
-

Why another countdown ?

- -

- I created this little library on a day when I had some extra time, - inspired by my regular need for JavaScript countdown solutions on websites. - This library is designed to meet my exact needs for simplicity and flexibility, - making it perfect for use cases like 'under construction' pages or upcoming event countdowns. -

- -

- This JavaScript countdown library is lightweight and easy to use—ideal for developers who want a straightforward, - customizable countdown without the unnecessary complexity of many other libraries. Whether it's for landing pages, - promotions, or personal projects, this solution can help you add engaging countdown timers effortlessly. -

- -

- simplyCountdown.js has been adopted by a variety of projects where developers needed a simple, reliable countdown solution. - Its lightweight nature and ease of customization make it an appealing choice for straightforward use cases like 'under construction' pages or event countdowns -

- -
-

Getting Started

- -

install via yarn, npm, direct - download

- -
-
-    $ npm install simplycountdown.js
-
-    // or
-
-    $ yarn add simplycountdown.js
-
-        
- -

Insert simplyCountdown to your HTML

-
-
-    <link rel="stylesheet" href="css/simplyCountdown.theme.default.css"/>
-    <script src="dist/simplyCountdown.min.js"></script>
-
-        
-
-
-    // This is an example with default parameters
-    // You'll always have to call simplyCountdown using ID's, no classes.
-
-    simplyCountdown('[CSS-SELECTOR]', {
-        year: 2015, // Target year (required)
-        month: 6, // Target month [1-12] (required)
-        day: 28, // Target day [1-31] (required)
-        hours: 0, // Target hour [0-23], default: 0
-        minutes: 0, // Target minute [0-59], default: 0
-        seconds: 0, // Target second [0-59], default: 0
-        words: { // Custom labels, with lambda for plurals
-            days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root },
-            hours: { root: 'hour', lambda: (root, n) => n > 1 ? root + 's' : root },
-            minutes: { root: 'minute', lambda: (root, n) => n > 1 ? root + 's' : root },
-            seconds: { root: 'second', lambda: (root, n) => n > 1 ? root + 's' : root }
-        },
-        plural: true, // Use plurals for labels
-        inline: false, // Inline format: e.g., "24 days, 4 hours, 2 minutes"
-        inlineSeparator: ', ', // Separator for inline format, default: ", "
-        inlineClass: 'simply-countdown-inline', // CSS class for inline countdown
-        enableUtc: false, // Use UTC time if true
-        onEnd: function () {}, // Callback when countdown ends
-        refresh: 1000, // Refresh interval in ms, default: 1000
-        sectionClass: 'simply-section', // CSS class for each countdown section
-        amountClass: 'simply-amount', // CSS class for numeric values
-        wordClass: 'simply-word', // CSS class for unit labels
-        zeroPad: false, // Pad numbers with leading zero
-        removeZeroUnits: false, // Remove units with zero value
-        countUp: false // Count up after reaching zero
-    });    
-
-    // Also, you can init with already existing Javascript Object.
-    let myElement = document.querySelector('.my-countdown');
-    simplyCountdown(myElement, { /* options */ });
-
-    let multipleElements = document.querySelectorAll('.my-countdown');
-    simplyCountdown(multipleElements, { /* options */ });
-
-        
-

You can use it with jQuery too (not required)

- -
-
-    // jQuery Example
-
-    $('[SELECTOR]').simplyCountdown({
-        year: 2015, // required
-        month: 6, // required
-        day: 28, // required
-        ...
-    });
-
-        
- -

Parameters

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescriptionDefault
yearNumber (required)The target year for the countdown.-
monthNumber (required)The target month [1-12] for the countdown.-
dayNumber (required)The target day [1-31] for the countdown.-
hoursNumberThe target hour [0-23].0
minutesNumberThe target minute [0-59].0
secondsNumberThe target second [0-59].0
wordsObjectCustom labels for the units (days, hours, minutes, seconds) with optional lambda function for correct pluralization. - { days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root }, ... } -
pluralBooleanWhether to use plural forms for the unit labels.true
inlineBooleanSet to true for a simple inline countdown (e.g., "24 days, 4 hours, 2 minutes").false
inlineSeparatorStringSeparator used in the inline countdown format.", "
inlineClassStringCSS class applied to the inline countdown container."simply-countdown-inline"
enableUtcBooleanSet to true to use UTC time for the countdown calculations.false
onEndFunctionCallback function executed when the countdown ends.() => {}
refreshNumberThe countdown refresh interval in milliseconds.1000
sectionClassStringCSS class applied to each countdown section (days, hours, minutes, seconds)."simply-section"
amountClassStringCSS class applied to the numeric value of each countdown section."simply-amount"
wordClassStringCSS class applied to the unit label of each countdown section."simply-word"
zeroPadBooleanWhether to pad the numeric values with leading zeros (e.g., "05").false
removeZeroUnitsBooleanRemove units with zero value (e.g., remove "0 days" if days are zero).false
countUpBooleanCount up after reaching zero if set to true.false
-
-
- -
-

Easy to customize

-

- You can easly customize the countdown using the css theme starter file or create your - own like so : -

+ + +
+
+
+

Installation

+
+
+

+
+ NPM +

+
$ npm install simplycountdown
+
+
+

+
+ Yarn +

+
$ yarn add simplycountdown
+
+
+
+ +
+

+
+ Examples +

+ +
+
+

Default Theme

+
+
+ +
+

Without Zero Units - Dark Theme

+
+
+ +
+

Inline

+
+
+ +
+

Count Up - Cyberpunk Theme

+
+
+
+ +
+
+

Losange Theme

+
+
+
+
+ +
+

+
+ Usage +

+
+
+simplyCountdown('[CSS-SELECTOR]', {
+    year: 2025, // required
+    month: 6, // required
+    day: 28, // required
+    hours: 0, // Default is 0 [0-23] integer
+    minutes: 0, // Default is 0 [0-59] integer
+    seconds: 0, // Default is 0 [0-59] integer
+    words: { //words displayed into the countdown
+        days: { singular: 'day', plural: 'days' },
+        hours: { singular: 'hour', plural: 'hours' },
+        minutes: { singular: 'minute', plural: 'minutes' },
+        seconds: { singular: 'second', plural: 'seconds' }
+    },
+    plural: true, //use plurals
+    inline: false, //set to true to display inline
+    inlineClass: 'simply-countdown-inline', //inline css span class
+    enableUtc: false, //Use UTC or not - default : false
+    onEnd: function() { return; }, //Callback on countdown end
+    refresh: 1000, //default refresh every 1s
+    sectionClass: 'simply-section', //section css class
+    amountClass: 'simply-amount', //amount css class
+    wordClass: 'simply-word', //word css class
+    zeroPad: false,
+    countUp: false
+});
+                    
+
+
+
+
-
+
+
+

+ Made with

by + Vincent Loy +

-   The following theme template works with default - class in parameters + Like simplyCountdown? + + Give it a star on Github!

+

-
-
-    /**
-    * Project : simply-countdown
-    * File : simplyCountdown.theme.custom
-    * Author : Your Name <your-mail[at]example.com>
-    */
-
-    .simply-countdown {
-    /* The countdown */
-    }
-    .simply-countdown > .simply-section {
-    /* coutndown blocks */
-    }
-
-    .simply-countdown > .simply-section > div {
-    /* countdown block inner div */
-    }
-
-    .simply-countdown > .simply-section .simply-amount,
-    .simply-countdown > .simply-section .simply-word {
-    /* amounts and words */
-    }
-
-    .simply-countdown > .simply-section .simply-amount {
-    /* amounts */
-    }
-
-    .simply-countdown > .simply-section .simply-word {
-    /* words */
-    }
-
-
-        
-
- -
-

Examples

- -

Default Theme

-
- -

Losange Theme

-
- -

Without Zero Units

-
- -

Inline

-
- -

Count Up

-
-
-
- - - -
- You like simplyCountdown ? Give it a star on Github ! -
- - - - - + diff --git a/package-lock.json b/package-lock.json index 4c5bb37..4aa488d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,120 @@ { - "name": "simplycountdown.js", - "version": "2.0.1", + "name": "simplycountdown", + "version": "3.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "simplycountdown.js", - "version": "2.0.1", + "name": "simplycountdown", + "version": "3.0.0", "license": "MIT", + "dependencies": { + "@unocss/reset": "^0.65.2" + }, "devDependencies": { + "@iconify-json/lucide": "^1.2.20", + "@unocss/preset-attributify": "^0.58.0", + "@unocss/preset-icons": "^0.65.2", + "@unocss/preset-typography": "^0.58.9", + "@unocss/preset-wind": "^0.58.9", "fs-extra": "^11.2.0", - "sass": "^1.69.5", "terser": "^5.24.0", + "unocss": "^0.65.2", "vite": "^6.0.0" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", + "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^0.2.0", + "tinyexec": "^0.3.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", @@ -423,6 +523,40 @@ "node": ">=18" } }, + "node_modules/@iconify-json/lucide": { + "version": "1.2.20", + "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.20.tgz", + "integrity": "sha512-m/8rqukvQfsE+MYTwNXCxP/K2iucTCGSQfS0XZhYpkZKGRdiEOdAAnd8Vv+E78xKK94Jza2eTc5ihxbw6+i7EQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@iconify/types": "*" + } + }, + "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, + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.2.1.tgz", + "integrity": "sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^0.4.1", + "@antfu/utils": "^0.7.10", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.13.0", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.1", + "mlly": "^1.7.3" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -488,6 +622,7 @@ "dev": true, "hasInstallScript": true, "optional": true, + "peer": true, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -529,6 +664,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -549,6 +685,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -569,6 +706,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -589,6 +727,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -609,6 +748,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -629,6 +769,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -649,6 +790,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -669,6 +811,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -689,6 +832,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -709,6 +853,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -729,6 +874,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -749,6 +895,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -769,6 +916,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -777,6 +925,49 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.29.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", @@ -1030,436 +1221,2342 @@ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "node_modules/@unocss/astro": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.65.2.tgz", + "integrity": "sha512-lpGoleJToxaYeN5LTGrNbvbXATNWswgoQwlljIJ9kWOjx4NbGC71pXRvDQSb9yRFDTCr5S2hMtupna4ulrHisA==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2", + "@unocss/reset": "0.65.2", + "@unocss/vite": "0.65.2" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/@unocss/astro/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", "dev": true, - "optional": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/@unocss/cli": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.65.2.tgz", + "integrity": "sha512-N2SeSeGNNuWUQAtsOC02Uqhm1wCtyoRRmh8ylzA/NttbXJlqg5P03vxGfzmaRA+VJhNLwjFqhYE6Yuu4nqCwlg==", "dev": true, + "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.4", + "@unocss/config": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/preset-uno": "0.65.2", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "magic-string": "^0.30.17", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "tinyglobby": "^0.2.10" + }, + "bin": { + "unocss": "bin/unocss.mjs" }, "engines": { - "node": ">= 14.16.0" + "node": ">=14" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "node_modules/@unocss/cli/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", "dev": true, - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "node_modules/@unocss/cli/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=18" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "fsevents": "~2.3.2" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/@unocss/cli/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">=8.10.0" } }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@unocss/config": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.65.2.tgz", + "integrity": "sha512-HDQVoWwrkZ6qRCXus11bUM12eNoErZ7r4lPY5EQqtrwxAcul+l5StvYk0qXr3IC8Ct42RDjKGeM03o7VBpwafQ==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@unocss/core": "0.65.2", + "unconfig": "~0.6.0" }, "engines": { - "node": ">=14.14" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/@unocss/config/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "node_modules/@unocss/core": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.9.tgz", + "integrity": "sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==", "dev": true, - "license": "ISC" - }, - "node_modules/immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "dev": true + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.9.tgz", + "integrity": "sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@unocss/inspector": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.65.2.tgz", + "integrity": "sha512-90kBrMiQqHpGzPhT9ot7bDAFs+G9RxWROVxrT/JwDqNe+OmcLh5uETO84NU0ScurniEJ8umGBLqmsPGLmHML2g==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "@unocss/core": "0.65.2", + "@unocss/rule-utils": "0.65.2", + "gzip-size": "^6.0.0", + "sirv": "^3.0.0", + "vue-flow-layout": "^0.1.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "node_modules/@unocss/inspector/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector/node_modules/@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.65.2.tgz", + "integrity": "sha512-vhBWsXnuWUP7qybnucle+gja1YBjL2NRfzCwSaOoRc7C5y201mqfC55AFqjGdxEAcqeeXVtx98Y1oh0FSa5GzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/config": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/rule-utils": "0.65.2", + "css-tree": "^3.1.0", + "postcss": "^8.4.49", + "tinyglobby": "^0.2.10" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/@unocss/postcss/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss/node_modules/@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-attributify": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.9.tgz", + "integrity": "sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.65.2.tgz", + "integrity": "sha512-NruqU6PlRzyJT0qJQL3yZ/7KrolIWRfXQf82ZfAktPTHYgvaSS4+KtlStsoYSXLSGjPydMlXuYlj8Pum5rTTjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/utils": "^2.2.1", + "@unocss/core": "0.65.2", + "ofetch": "^1.4.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.9.tgz", + "integrity": "sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/extractor-arbitrary-variants": "0.58.9", + "@unocss/rule-utils": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.65.2.tgz", + "integrity": "sha512-YFhne3eNfZUvKT/MJ7SgjK/FXLradgZCKc5XXsMXA4YTAhNAvQIUZCNmlBzaqDevwbyF6UlXxGHfHUA8CdpSWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-typography": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.9.tgz", + "integrity": "sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9" + } + }, + "node_modules/@unocss/preset-uno": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.65.2.tgz", + "integrity": "sha512-8HA21mlXwnkXHhtSKYbBYJTmtJN0ncUPSJKiavNGkJUB4cUUbEeFRx2aNIfhOjKYIcH/MNzRc2YYsAAM2s6vgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/preset-wind": "0.65.2", + "@unocss/rule-utils": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", + "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/preset-mini": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", + "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2", + "@unocss/extractor-arbitrary-variants": "0.65.2", + "@unocss/rule-utils": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/preset-wind": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", + "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/rule-utils": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.65.2.tgz", + "integrity": "sha512-Pl0sKjhrb6FuDID3PMwGflZXwSVW1G1vZEwCd0yEwYH92421VEfK5D073cUtZ1l6irqIA3aux9uMWA9iKtQj7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2", + "ofetch": "^1.4.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.9.tgz", + "integrity": "sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9", + "@unocss/rule-utils": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/reset": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.65.2.tgz", + "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.9.tgz", + "integrity": "sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.65.2.tgz", + "integrity": "sha512-Kan2EPHc65t/iHdjqJvtRgc+lUnq2uSDknsTrOk+w1N/ZmjcbVf2E6VXbxBCqmHowJVipeHrxeVX1POyBm0bTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.65.2.tgz", + "integrity": "sha512-z615DntK0bN0v3QicEGVmzt57yXXB20GhpOBTsShq/nTnTP0v+Av1JTbGQBSg8lzmW0z7QdLhCvSAQs8OKMmRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.65.2.tgz", + "integrity": "sha512-CwdjBoqWbX5FkJrt6Mpy6nBjppuQV2zvIma5W2rdd5XLsYeR0mhdbbQfgvRF94pFIR86ExfOKu/EI6bGuTcaHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2", + "@unocss/rule-utils": "0.65.2", + "css-tree": "^3.1.0" + } + }, + "node_modules/@unocss/transformer-directives/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives/node_modules/@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-variant-group": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.65.2.tgz", + "integrity": "sha512-Sh/WKN7lys2TUVnA3Nu7Yn3rLqy0OqfWSf6PbY1RKAD+N7cRlabu3vJF0gIMwV+rmVQnHs/k9BWjNPlB56Kl/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-variant-group/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.65.2.tgz", + "integrity": "sha512-MC2PqDB2tbYky7s1XTBoOAdtvUIwwl65qL1UbHTLYiWO9Q704IZUYvrdtpgieR+8IPu2dG2vUyIe3dbD4zPf9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.4", + "@unocss/config": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/inspector": "0.65.2", + "chokidar": "^3.6.0", + "magic-string": "^0.30.17", + "tinyglobby": "^0.2.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/@unocss/vite/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@unocss/vite/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-require": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", + "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.0.tgz", + "integrity": "sha512-kxltocVQCwQNFvw40dlVRYeAkAvtYjMFZYNlOcsF5wExPpGwPxMwgx4IfDJvBRPtBpnQwItd5WkTaR0ZwT/TmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/importx": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/importx/-/importx-0.5.1.tgz", + "integrity": "sha512-YrRaigAec1sC2CdIJjf/hCH1Wp9Ii8Cq5ROw4k5nJ19FVl2FcJUHZ5gGIb1vs8+JNYIyOJpc2fcufS2330bxDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-require": "^5.0.0", + "debug": "^4.4.0", + "esbuild": "^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", + "jiti": "^2.4.1", + "pathe": "^1.1.2", + "tsx": "^4.19.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "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, + "license": "MIT" + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mlly": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", + "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "ufo": "^1.5.4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/node-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ofetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", + "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "dev": true, + "license": "MIT", + "dependencies": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.4", + "ufo": "^1.5.4" + } + }, + "node_modules/package-manager-detector": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", + "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", + "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rollup": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", + "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.29.1", + "@rollup/rollup-android-arm64": "4.29.1", + "@rollup/rollup-darwin-arm64": "4.29.1", + "@rollup/rollup-darwin-x64": "4.29.1", + "@rollup/rollup-freebsd-arm64": "4.29.1", + "@rollup/rollup-freebsd-x64": "4.29.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", + "@rollup/rollup-linux-arm-musleabihf": "4.29.1", + "@rollup/rollup-linux-arm64-gnu": "4.29.1", + "@rollup/rollup-linux-arm64-musl": "4.29.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", + "@rollup/rollup-linux-riscv64-gnu": "4.29.1", + "@rollup/rollup-linux-s390x-gnu": "4.29.1", + "@rollup/rollup-linux-x64-gnu": "4.29.1", + "@rollup/rollup-linux-x64-musl": "4.29.1", + "@rollup/rollup-win32-arm64-msvc": "4.29.1", + "@rollup/rollup-win32-ia32-msvc": "4.29.1", + "@rollup/rollup-win32-x64-msvc": "4.29.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.83.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", + "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinyexec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.12.0" + "node": ">=18" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, + "os": [ + "win32" + ], "engines": { - "node": ">=8.6" + "node": ">=18" } }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "node_modules/tsx/node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "hasInstallScript": true, + "license": "MIT", "bin": { - "nanoid": "bin/nanoid.cjs" + "esbuild": "bin/esbuild" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", "dev": true, - "optional": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "license": "MIT" }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/unconfig": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.6.0.tgz", + "integrity": "sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==", "dev": true, - "optional": true, - "engines": { - "node": ">=8.6" + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "defu": "^6.1.4", + "importx": "^0.5.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 10.0.0" } }, - "node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "node_modules/unocss": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.65.2.tgz", + "integrity": "sha512-PEN8Yltr/n6xdNcI9iqIK4Dp/fpQ1bPa4aR2TwFg2lV6aRA2PNzarviqL62oOqXYSyQ4sqW3s/oaWD3JGOgJ1A==", "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/astro": "0.65.2", + "@unocss/cli": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/postcss": "0.65.2", + "@unocss/preset-attributify": "0.65.2", + "@unocss/preset-icons": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/preset-tagify": "0.65.2", + "@unocss/preset-typography": "0.65.2", + "@unocss/preset-uno": "0.65.2", + "@unocss/preset-web-fonts": "0.65.2", + "@unocss/preset-wind": "0.65.2", + "@unocss/transformer-attributify-jsx": "0.65.2", + "@unocss/transformer-compile-class": "0.65.2", + "@unocss/transformer-directives": "0.65.2", + "@unocss/transformer-variant-group": "0.65.2", + "@unocss/vite": "0.65.2" + }, "engines": { - "node": ">= 14.16.0" + "node": ">=14" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" + "url": "https://github.com/sponsors/antfu" }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "peerDependencies": { + "@unocss/webpack": "0.65.2", + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", - "fsevents": "~2.3.2" + "peerDependenciesMeta": { + "@unocss/webpack": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/sass": { - "version": "1.83.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", - "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", + "node_modules/unocss/node_modules/@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", "dev": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/unocss/node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", + "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "node_modules/unocss/node_modules/@unocss/preset-attributify": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.65.2.tgz", + "integrity": "sha512-Aj67qbRoBPYutJasi7EKUaxKwJwEvhA0SVYjXwZG3kjTTBkp1rJvNI0wGXbdz9FkesymiC1KgzBF2UCsFsZ0dQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@unocss/core": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/unocss/node_modules/@unocss/preset-mini": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", + "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@unocss/core": "0.65.2", + "@unocss/extractor-arbitrary-variants": "0.65.2", + "@unocss/rule-utils": "0.65.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "node_modules/unocss/node_modules/@unocss/preset-typography": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.65.2.tgz", + "integrity": "sha512-k/uOu2ASnBQtotMBsx9pOmCgS+pyn7/4mCiifoeTTLnhMK8F6dcGLbVQkOnUD2hsboKXJ1oHgd+1qX0QVr61ww==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/unocss/node_modules/@unocss/preset-wind": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", + "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/rule-utils": "0.65.2" }, - "engines": { - "node": ">=8.0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/unocss/node_modules/@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", "dev": true, "license": "MIT", + "dependencies": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/vite": { @@ -1533,9 +3630,103 @@ "optional": true } } + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-flow-layout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/vue-flow-layout/-/vue-flow-layout-0.1.1.tgz", + "integrity": "sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vue": "^3.4.37" + } } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@antfu/install-pkg": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", + "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", + "dev": true, + "requires": { + "package-manager-detector": "^0.2.0", + "tinyexec": "^0.3.0" + } + }, + "@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true + }, + "@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "peer": true + }, + "@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "peer": true + }, + "@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.26.3" + } + }, + "@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + } + }, "@esbuild/aix-ppc64": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", @@ -1704,6 +3895,37 @@ "dev": true, "optional": true }, + "@iconify-json/lucide": { + "version": "1.2.20", + "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.20.tgz", + "integrity": "sha512-m/8rqukvQfsE+MYTwNXCxP/K2iucTCGSQfS0XZhYpkZKGRdiEOdAAnd8Vv+E78xKK94Jza2eTc5ihxbw6+i7EQ==", + "dev": true, + "requires": { + "@iconify/types": "*" + } + }, + "@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 + }, + "@iconify/utils": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.2.1.tgz", + "integrity": "sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==", + "dev": true, + "requires": { + "@antfu/install-pkg": "^0.4.1", + "@antfu/utils": "^0.7.10", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.13.0", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.1", + "mlly": "^1.7.3" + } + }, "@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -1759,6 +3981,7 @@ "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@parcel/watcher-android-arm64": "2.5.0", "@parcel/watcher-darwin-arm64": "2.5.0", @@ -1784,91 +4007,129 @@ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-darwin-arm64": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-darwin-x64": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-freebsd-x64": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-linux-arm-glibc": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-linux-arm-musl": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-linux-arm64-glibc": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-linux-arm64-musl": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-linux-x64-glibc": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-linux-x64-musl": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-win32-arm64": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-win32-ia32": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@parcel/watcher-win32-x64": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", "dev": true, - "optional": true + "optional": true, + "peer": true + }, + "@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true + }, + "@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "dependencies": { + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } + } }, "@rollup/rollup-android-arm-eabi": { "version": "4.29.1", @@ -1980,34 +4241,609 @@ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", "dev": true, - "optional": true + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", + "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", + "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", + "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "dev": true, + "optional": true + }, + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "@unocss/astro": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.65.2.tgz", + "integrity": "sha512-lpGoleJToxaYeN5LTGrNbvbXATNWswgoQwlljIJ9kWOjx4NbGC71pXRvDQSb9yRFDTCr5S2hMtupna4ulrHisA==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/reset": "0.65.2", + "@unocss/vite": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/cli": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.65.2.tgz", + "integrity": "sha512-N2SeSeGNNuWUQAtsOC02Uqhm1wCtyoRRmh8ylzA/NttbXJlqg5P03vxGfzmaRA+VJhNLwjFqhYE6Yuu4nqCwlg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.4", + "@unocss/config": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/preset-uno": "0.65.2", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "magic-string": "^0.30.17", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "tinyglobby": "^0.2.10" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + } + } + }, + "@unocss/config": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.65.2.tgz", + "integrity": "sha512-HDQVoWwrkZ6qRCXus11bUM12eNoErZ7r4lPY5EQqtrwxAcul+l5StvYk0qXr3IC8Ct42RDjKGeM03o7VBpwafQ==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "unconfig": "~0.6.0" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/core": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.9.tgz", + "integrity": "sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==", + "dev": true + }, + "@unocss/extractor-arbitrary-variants": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.9.tgz", + "integrity": "sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==", + "dev": true, + "requires": { + "@unocss/core": "0.58.9" + } + }, + "@unocss/inspector": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.65.2.tgz", + "integrity": "sha512-90kBrMiQqHpGzPhT9ot7bDAFs+G9RxWROVxrT/JwDqNe+OmcLh5uETO84NU0ScurniEJ8umGBLqmsPGLmHML2g==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/rule-utils": "0.65.2", + "gzip-size": "^6.0.0", + "sirv": "^3.0.0", + "vue-flow-layout": "^0.1.1" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "requires": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + } + } + } + }, + "@unocss/postcss": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.65.2.tgz", + "integrity": "sha512-vhBWsXnuWUP7qybnucle+gja1YBjL2NRfzCwSaOoRc7C5y201mqfC55AFqjGdxEAcqeeXVtx98Y1oh0FSa5GzA==", + "dev": true, + "requires": { + "@unocss/config": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/rule-utils": "0.65.2", + "css-tree": "^3.1.0", + "postcss": "^8.4.49", + "tinyglobby": "^0.2.10" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "requires": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + } + } + } + }, + "@unocss/preset-attributify": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.9.tgz", + "integrity": "sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==", + "dev": true, + "requires": { + "@unocss/core": "0.58.9" + } + }, + "@unocss/preset-icons": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.65.2.tgz", + "integrity": "sha512-NruqU6PlRzyJT0qJQL3yZ/7KrolIWRfXQf82ZfAktPTHYgvaSS4+KtlStsoYSXLSGjPydMlXuYlj8Pum5rTTjw==", + "dev": true, + "requires": { + "@iconify/utils": "^2.2.1", + "@unocss/core": "0.65.2", + "ofetch": "^1.4.1" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/preset-mini": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.9.tgz", + "integrity": "sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==", + "dev": true, + "requires": { + "@unocss/core": "0.58.9", + "@unocss/extractor-arbitrary-variants": "0.58.9", + "@unocss/rule-utils": "0.58.9" + } + }, + "@unocss/preset-tagify": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.65.2.tgz", + "integrity": "sha512-YFhne3eNfZUvKT/MJ7SgjK/FXLradgZCKc5XXsMXA4YTAhNAvQIUZCNmlBzaqDevwbyF6UlXxGHfHUA8CdpSWg==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/preset-typography": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.9.tgz", + "integrity": "sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==", + "dev": true, + "requires": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9" + } + }, + "@unocss/preset-uno": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.65.2.tgz", + "integrity": "sha512-8HA21mlXwnkXHhtSKYbBYJTmtJN0ncUPSJKiavNGkJUB4cUUbEeFRx2aNIfhOjKYIcH/MNzRc2YYsAAM2s6vgw==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/preset-wind": "0.65.2", + "@unocss/rule-utils": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "@unocss/extractor-arbitrary-variants": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", + "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + } + }, + "@unocss/preset-mini": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", + "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/extractor-arbitrary-variants": "0.65.2", + "@unocss/rule-utils": "0.65.2" + } + }, + "@unocss/preset-wind": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", + "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/rule-utils": "0.65.2" + } + }, + "@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "requires": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + } + } + } + }, + "@unocss/preset-web-fonts": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.65.2.tgz", + "integrity": "sha512-Pl0sKjhrb6FuDID3PMwGflZXwSVW1G1vZEwCd0yEwYH92421VEfK5D073cUtZ1l6irqIA3aux9uMWA9iKtQj7A==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "ofetch": "^1.4.1" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/preset-wind": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.9.tgz", + "integrity": "sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==", + "dev": true, + "requires": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9", + "@unocss/rule-utils": "0.58.9" + } + }, + "@unocss/reset": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.65.2.tgz", + "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==" + }, + "@unocss/rule-utils": { + "version": "0.58.9", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.9.tgz", + "integrity": "sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==", + "dev": true, + "requires": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + } + }, + "@unocss/transformer-attributify-jsx": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.65.2.tgz", + "integrity": "sha512-Kan2EPHc65t/iHdjqJvtRgc+lUnq2uSDknsTrOk+w1N/ZmjcbVf2E6VXbxBCqmHowJVipeHrxeVX1POyBm0bTQ==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/transformer-compile-class": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.65.2.tgz", + "integrity": "sha512-z615DntK0bN0v3QicEGVmzt57yXXB20GhpOBTsShq/nTnTP0v+Av1JTbGQBSg8lzmW0z7QdLhCvSAQs8OKMmRQ==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/transformer-directives": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.65.2.tgz", + "integrity": "sha512-CwdjBoqWbX5FkJrt6Mpy6nBjppuQV2zvIma5W2rdd5XLsYeR0mhdbbQfgvRF94pFIR86ExfOKu/EI6bGuTcaHA==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/rule-utils": "0.65.2", + "css-tree": "^3.1.0" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "requires": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + } + } + } + }, + "@unocss/transformer-variant-group": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.65.2.tgz", + "integrity": "sha512-Sh/WKN7lys2TUVnA3Nu7Yn3rLqy0OqfWSf6PbY1RKAD+N7cRlabu3vJF0gIMwV+rmVQnHs/k9BWjNPlB56Kl/A==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + } + } + }, + "@unocss/vite": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.65.2.tgz", + "integrity": "sha512-MC2PqDB2tbYky7s1XTBoOAdtvUIwwl65qL1UbHTLYiWO9Q704IZUYvrdtpgieR+8IPu2dG2vUyIe3dbD4zPf9g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.4", + "@unocss/config": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/inspector": "0.65.2", + "chokidar": "^3.6.0", + "magic-string": "^0.30.17", + "tinyglobby": "^0.2.10" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + } + } + }, + "@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "peer": true, + "requires": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, + "peer": true, + "requires": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dev": true, + "peer": true, + "requires": { + "@vue/shared": "3.5.13" + } }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", "dev": true, - "optional": true + "peer": true, + "requires": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } }, - "@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", "dev": true, - "optional": true + "peer": true, + "requires": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", "dev": true, - "optional": true + "peer": true, + "requires": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + } }, - "@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "peer": true }, "acorn": { "version": "8.14.0", @@ -2015,12 +4851,27 @@ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, "braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "optional": true, "requires": { "fill-range": "^7.1.1" } @@ -2031,27 +4882,114 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "bundle-require": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", + "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", + "dev": true, + "requires": { + "load-tsconfig": "^0.2.3" + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, "chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, + "optional": true, + "peer": true, "requires": { "readdirp": "^4.0.1" } }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true + }, + "consola": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.0.tgz", + "integrity": "sha512-kxltocVQCwQNFvw40dlVRYeAkAvtYjMFZYNlOcsF5wExPpGwPxMwgx4IfDJvBRPtBpnQwItd5WkTaR0ZwT/TmQ==", + "dev": true + }, + "css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "requires": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "peer": true + }, + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true + }, + "destr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", + "dev": true + }, "detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "optional": true + "optional": true, + "peer": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "peer": true }, "esbuild": { "version": "0.24.0", @@ -2085,12 +5023,17 @@ "@esbuild/win32-x64": "0.24.0" } }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "optional": true, "requires": { "to-regex-range": "^5.0.1" } @@ -2113,31 +5056,87 @@ "dev": true, "optional": true }, + "get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "dev": true + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, "immutable": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "dev": true + "dev": true, + "optional": true, + "peer": true + }, + "importx": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/importx/-/importx-0.5.1.tgz", + "integrity": "sha512-YrRaigAec1sC2CdIJjf/hCH1Wp9Ii8Cq5ROw4k5nJ19FVl2FcJUHZ5gGIb1vs8+JNYIyOJpc2fcufS2330bxDw==", + "dev": true, + "requires": { + "bundle-require": "^5.0.0", + "debug": "^4.4.0", + "esbuild": "^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", + "jiti": "^2.4.1", + "pathe": "^1.1.2", + "tsx": "^4.19.2" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "optional": true + "dev": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -2146,8 +5145,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true + "dev": true + }, + "jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true }, "jsonfile": { "version": "6.1.0", @@ -2159,17 +5163,79 @@ "universalify": "^2.0.0" } }, + "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 + }, + "load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true + }, + "local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dev": true, + "requires": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + } + }, + "magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true + }, "micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "optional": true, + "peer": true, "requires": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, + "mlly": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", + "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "dev": true, + "requires": { + "acorn": "^8.14.0", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "ufo": "^1.5.4" + } + }, + "mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "nanoid": { "version": "3.3.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", @@ -2181,7 +5247,49 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, - "optional": true + "optional": true, + "peer": true + }, + "node-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "ofetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", + "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "dev": true, + "requires": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.4", + "ufo": "^1.5.4" + } + }, + "package-manager-detector": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", + "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", + "dev": true + }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true }, "picocolors": { "version": "1.1.1", @@ -2193,8 +5301,18 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-types": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", + "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", "dev": true, - "optional": true + "requires": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } }, "postcss": { "version": "8.4.49", @@ -2211,6 +5329,14 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "optional": true, + "peer": true + }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true }, "rollup": { @@ -2247,6 +5373,8 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", "dev": true, + "optional": true, + "peer": true, "requires": { "@parcel/watcher": "^2.4.1", "chokidar": "^4.0.0", @@ -2254,6 +5382,17 @@ "source-map-js": ">=0.6.2 <2.0.0" } }, + "sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2288,22 +5427,381 @@ "source-map-support": "~0.5.20" } }, + "tinyexec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "dev": true + }, + "tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "requires": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "dependencies": { + "fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "requires": {} + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, "requires": { "is-number": "^7.0.0" } }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true + }, + "tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "dev": true, + "requires": { + "esbuild": "~0.23.0", + "fsevents": "~2.3.3", + "get-tsconfig": "^4.7.5" + }, + "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + } + } + }, + "ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "dev": true + }, + "unconfig": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.6.0.tgz", + "integrity": "sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==", + "dev": true, + "requires": { + "@antfu/utils": "^0.7.10", + "defu": "^6.1.4", + "importx": "^0.5.0" + } + }, "universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true }, + "unocss": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.65.2.tgz", + "integrity": "sha512-PEN8Yltr/n6xdNcI9iqIK4Dp/fpQ1bPa4aR2TwFg2lV6aRA2PNzarviqL62oOqXYSyQ4sqW3s/oaWD3JGOgJ1A==", + "dev": true, + "requires": { + "@unocss/astro": "0.65.2", + "@unocss/cli": "0.65.2", + "@unocss/core": "0.65.2", + "@unocss/postcss": "0.65.2", + "@unocss/preset-attributify": "0.65.2", + "@unocss/preset-icons": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/preset-tagify": "0.65.2", + "@unocss/preset-typography": "0.65.2", + "@unocss/preset-uno": "0.65.2", + "@unocss/preset-web-fonts": "0.65.2", + "@unocss/preset-wind": "0.65.2", + "@unocss/transformer-attributify-jsx": "0.65.2", + "@unocss/transformer-compile-class": "0.65.2", + "@unocss/transformer-directives": "0.65.2", + "@unocss/transformer-variant-group": "0.65.2", + "@unocss/vite": "0.65.2" + }, + "dependencies": { + "@unocss/core": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", + "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", + "dev": true + }, + "@unocss/extractor-arbitrary-variants": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", + "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + } + }, + "@unocss/preset-attributify": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.65.2.tgz", + "integrity": "sha512-Aj67qbRoBPYutJasi7EKUaxKwJwEvhA0SVYjXwZG3kjTTBkp1rJvNI0wGXbdz9FkesymiC1KgzBF2UCsFsZ0dQ==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2" + } + }, + "@unocss/preset-mini": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", + "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/extractor-arbitrary-variants": "0.65.2", + "@unocss/rule-utils": "0.65.2" + } + }, + "@unocss/preset-typography": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.65.2.tgz", + "integrity": "sha512-k/uOu2ASnBQtotMBsx9pOmCgS+pyn7/4mCiifoeTTLnhMK8F6dcGLbVQkOnUD2hsboKXJ1oHgd+1qX0QVr61ww==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2" + } + }, + "@unocss/preset-wind": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", + "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", + "dev": true, + "requires": { + "@unocss/core": "0.65.2", + "@unocss/preset-mini": "0.65.2", + "@unocss/rule-utils": "0.65.2" + } + }, + "@unocss/rule-utils": { + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", + "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", + "dev": true, + "requires": { + "@unocss/core": "^0.65.2", + "magic-string": "^0.30.17" + } + } + } + }, "vite": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", @@ -2315,6 +5813,27 @@ "postcss": "^8.4.49", "rollup": "^4.23.0" } + }, + "vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "peer": true, + "requires": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "vue-flow-layout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/vue-flow-layout/-/vue-flow-layout-0.1.1.tgz", + "integrity": "sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==", + "dev": true, + "requires": {} } } } diff --git a/package.json b/package.json index 10e0d94..177be96 100644 --- a/package.json +++ b/package.json @@ -40,19 +40,33 @@ } }, "files": [ - "dist", - "README.md", - "LICENSE" + "dist/simplyCountdown.es.js", + "dist/simplyCountdown.umd.js", + "dist/simplyCountdown.iife.js", + "dist/simplyCountdown.es.js.map", + "dist/simplyCountdown.umd.js.map", + "dist/simplyCountdown.iife.js.map" ], "scripts": { "dev": "vite", - "build": "vite build && node scripts/build-docs.js", + "build": "npm run build:lib && npm run build:docs", + "build:lib": "vite build", + "build:docs": "BUILD_TYPE=docs vite build", + "serve": "node scripts/serve.js", "clean": "rm -rf dist docs" }, "devDependencies": { + "@iconify-json/lucide": "^1.2.20", + "@unocss/preset-attributify": "^0.58.0", + "@unocss/preset-icons": "^0.65.2", + "@unocss/preset-typography": "^0.58.9", + "@unocss/preset-wind": "^0.58.9", "fs-extra": "^11.2.0", - "sass": "^1.69.5", "terser": "^5.24.0", + "unocss": "^0.65.2", "vite": "^6.0.0" + }, + "dependencies": { + "@unocss/reset": "^0.65.2" } } diff --git a/scripts/build-docs.js b/scripts/build-docs.js deleted file mode 100644 index 2a4eaa0..0000000 --- a/scripts/build-docs.js +++ /dev/null @@ -1,61 +0,0 @@ -import { build } from 'vite'; -import path from 'path'; -import { fileURLToPath } from 'url'; -import { dirname } from 'path'; -import fs from 'fs-extra'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); -const rootDir = dirname(__dirname); - -async function buildDocs() { - // 1. Prepare docs directory - await fs.emptyDir(path.join(rootDir, 'docs')); - - // 2. Create css directory - await fs.mkdir(path.join(rootDir, 'docs/css')); - - // 3. Copy specific CSS files - const cssFiles = [ - 'demo.css', - 'simplyCountdown.theme.custom.css', - 'simplyCountdown.theme.default.css', - 'simplyCountdown.theme.losange.css' - ]; - - for (const file of cssFiles) { - await fs.copy( - path.join(rootDir, 'demo/css', file), - path.join(rootDir, 'docs/css', file) - ); - } - - // Copy demo-only directory - await fs.copy( - path.join(rootDir, 'demo/css/demo-only'), - path.join(rootDir, 'docs/css/demo-only') - ); - - // 4. Copy index.html - await fs.copy( - path.join(rootDir, 'demo/index.html'), - path.join(rootDir, 'docs/index.html') - ); - - // 5. Copy dist files - await fs.copy( - path.join(rootDir, 'dist'), - path.join(rootDir, 'docs/dist') - ); - - // 6. Update script path in docs/index.html - const indexPath = path.join(rootDir, 'docs/index.html'); - let content = await fs.readFile(indexPath, 'utf-8'); - content = content.replace( - '../src/simplyCountdown.js', - './dist/simplyCountdown.iife.js' - ); - await fs.writeFile(indexPath, content); -} - -buildDocs().catch(console.error); diff --git a/scripts/serve.js b/scripts/serve.js new file mode 100644 index 0000000..e89e110 --- /dev/null +++ b/scripts/serve.js @@ -0,0 +1,51 @@ +import http from 'http'; +import { fileURLToPath } from 'url'; +import { dirname, resolve } from 'path'; +import fs from 'fs'; +import { spawn } from 'child_process'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const docsDir = resolve(__dirname, '..', 'docs'); +const PORT = 8000; + +const server = http.createServer((req, res) => { + const filePath = resolve(docsDir, req.url === '/' ? 'index.html' : req.url.slice(1)); + + fs.readFile(filePath, (err, data) => { + if (err) { + res.writeHead(404); + res.end('File not found'); + return; + } + + const ext = filePath.split('.').pop(); + const contentTypes = { + 'html': 'text/html', + 'css': 'text/css', + 'js': 'application/javascript', + 'png': 'image/png', + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'gif': 'image/gif', + 'svg': 'image/svg+xml' + }; + + res.writeHead(200, { 'Content-Type': contentTypes[ext] || 'text/plain' }); + res.end(data); + }); +}); + +server.listen(PORT, () => { + console.log(`Server running at http://localhost:${PORT}`); + // Open browser + spawn('xdg-open', [`http://localhost:${PORT}`], { + stdio: 'inherit' + }); +}); + +// Handle graceful shutdown +process.on('SIGINT', () => { + console.log('\nShutting down server...'); + server.close(); + process.exit(0); +}); diff --git a/src/simplyCountdown.js b/src/simplyCountdown.js index 8a775b7..2f52402 100644 --- a/src/simplyCountdown.js +++ b/src/simplyCountdown.js @@ -107,7 +107,7 @@ * @param elt * @param args (parameters) */ - exports.simplyCountdown = (elt, args) => { + let simplyCountdown = (elt, args) => { const eltProto = Object.getPrototypeOf(elt); let parameters = extend({ year: 2015, @@ -307,6 +307,18 @@ }); } }; + + // Export for module systems + if (typeof module !== 'undefined' && module.exports) { + module.exports = simplyCountdown; + } else if (typeof define === 'function' && define.amd) { + define([], function() { + return simplyCountdown; + }); + } else { + window.simplyCountdown = simplyCountdown; + } + }(window)); /* global jQuery, simplyCountdown */ @@ -323,3 +335,5 @@ if (window.jQuery) { }; }(jQuery, simplyCountdown)); } + +export default simplyCountdown; diff --git a/uno.config.js b/uno.config.js new file mode 100644 index 0000000..439b132 --- /dev/null +++ b/uno.config.js @@ -0,0 +1,84 @@ +import { defineConfig } from 'unocss' +import { presetWind } from '@unocss/preset-wind' +import { presetAttributify } from '@unocss/preset-attributify' +import { presetTypography } from '@unocss/preset-typography' +import { presetIcons } from '@unocss/preset-icons' +import { presetUno } from '@unocss/preset-uno' + +export default defineConfig({ + presets: [ + presetUno({ dark: 'class' }), + presetWind(), + presetAttributify(), + presetTypography(), + presetIcons({ + scale: 1.2, + warn: true, + }), + ], + preflights: [ + { + getCSS: () => ` + *, + *::before, + *::after { + box-sizing: border-box; + margin: 0; + padding: 0; + } + + body { + line-height: 1.5; + -webkit-font-smoothing: antialiased; + } + + img, + picture, + video, + canvas, + svg { + display: block; + max-width: 100%; + } + + input, + button, + textarea, + select { + font: inherit; + } + + p, + h1, + h2, + h3, + h4, + h5, + h6 { + overflow-wrap: break-word; + } + ` + } + ], + theme: { + colors: { + 'main': '#3F72AF', + 'main-dark': '#112D4E', + 'main-light': '#6995ca', + 'secondary': '#F9F7F7', + 'secondary-dark': '#DBE2EF', + 'dark': '#112D4E', + 'light': '#DBE2EF', + 'lighter': '#F9F7F7' + }, + fontFamily: { + 'montserrat': ['Montserrat', 'sans-serif'], + 'wix': ['Wix Madefor Text', 'sans-serif'], + }, + }, + shortcuts: { + 'btn': 'px-4 py-2 rounded-lg bg-main text-white hover:bg-main-dark transition-colors', + 'section-title': 'text-3xl font-bold text-main-dark mb-6', + 'container': 'max-w-6xl mx-auto px-4', + } +}) diff --git a/vite.config.js b/vite.config.js index a1f62e8..9f4746d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,11 @@ import { defineConfig } from 'vite'; import path from 'path'; +import UnoCSS from 'unocss/vite'; +import { presetWind, presetIcons, presetTypography } from 'unocss'; +import fs from 'fs-extra'; -export default defineConfig({ +// Configuration pour le build de la librairie +const libConfig = { build: { lib: { entry: path.resolve(__dirname, 'src/simplyCountdown.js'), @@ -11,17 +15,133 @@ export default defineConfig({ }, outDir: 'dist', emptyOutDir: true, - sourcemap: true, + sourcemap: true + }, + plugins: [ + UnoCSS({ + mode: 'global', + presets: [ + presetWind(), + presetIcons({ + cdn: 'https://esm.sh/' + }), + presetTypography() + ], + shortcuts: { + 'btn': 'py-2 px-4 font-semibold rounded-lg shadow-md', + 'btn-primary': 'text-white bg-indigo-500 hover:bg-indigo-700' + } + }) + ], + server: { + port: 3000, + open: '/demo/index.html', + watch: { + usePolling: true, + include: [ + 'src/**', + 'demo/**' + ] + } + }, + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + '@demo': path.resolve(__dirname, './demo') + } + } +}; + +// Configuration pour le build de la documentation +const docsConfig = { + root: '.', + base: '', + build: { + outDir: 'docs', + emptyOutDir: true, rollupOptions: { + input: path.resolve(__dirname, 'demo/index.html'), output: { - globals: { - jquery: 'jQuery' + dir: 'docs', + entryFileNames: 'assets/[name].js', + chunkFileNames: 'assets/[name].js', + format: 'es', + assetFileNames: (assetInfo) => { + const info = assetInfo.name.split('.'); + const ext = info[info.length - 1]; + if (ext === 'css') { + return 'assets/[name][extname]'; + } + return 'assets/[name][extname]'; } } } }, + plugins: [ + UnoCSS({ + mode: 'global', + presets: [ + presetWind(), + presetIcons({ + cdn: 'https://esm.sh/' + }), + presetTypography() + ], + shortcuts: { + 'btn': 'py-2 px-4 font-semibold rounded-lg shadow-md', + 'btn-primary': 'text-white bg-indigo-500 hover:bg-indigo-700' + } + }), + { + name: 'post-build', + closeBundle: async () => { + // Copier le fichier IIFE de la lib dans docs/assets + await fs.copy( + path.resolve(__dirname, 'dist/simplyCountdown.iife.js'), + path.resolve(__dirname, 'docs/assets/simplyCountdown.iife.js') + ); + + // Déplacer index.html à la racine de docs + const indexPath = path.resolve(__dirname, 'docs/demo/index.html'); + if (await fs.pathExists(indexPath)) { + const content = await fs.readFile(indexPath, 'utf-8'); + // Ajuster les chemins relatifs + const updatedContent = content + .replace(/src="\.?\/?/g, 'src="') + .replace(/href="\.?\/?/g, 'href="') + .replace(/assets\/assets\//g, 'assets/') + .replace( + 'src="https://code.jquery.com/jquery-1.11.3.min.js"', + 'src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"' + ) + .replace( + 'src="https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.js"', + 'src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"' + ); + + await fs.writeFile(path.resolve(__dirname, 'docs/index.html'), updatedContent); + await fs.remove(path.resolve(__dirname, 'docs/demo')); + } + } + } + ], server: { port: 3000, - open: '/demo/index.html' + open: '/demo/index.html', + watch: { + usePolling: true, + include: [ + 'src/**', + 'demo/**' + ] + } + }, + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + '@demo': path.resolve(__dirname, './demo') + } } -}); +}; + +export default defineConfig(process.env.BUILD_TYPE === 'docs' ? docsConfig : libConfig); From f2eb507d16f48e8a2180453a1facd61f3d459671 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Sat, 21 Dec 2024 14:56:36 +0100 Subject: [PATCH 04/75] Remove jquery support --- demo/css/demo.css | 112 --------------------------------- demo/index.html | 5 +- demo/js/demo.js | 136 +++++++++++++++++++++-------------------- demo/main.js | 17 ++---- package.json | 3 +- src/simplyCountdown.js | 21 +------ 6 files changed, 78 insertions(+), 216 deletions(-) delete mode 100644 demo/css/demo.css diff --git a/demo/css/demo.css b/demo/css/demo.css deleted file mode 100644 index e0ef45f..0000000 --- a/demo/css/demo.css +++ /dev/null @@ -1,112 +0,0 @@ -/* layer: preflights */ -*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;} -*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;} - - *, - *::before, - *::after { - box-sizing: border-box; - margin: 0; - padding: 0; - } - - body { - line-height: 1.5; - -webkit-font-smoothing: antialiased; - } - - img, - picture, - video, - canvas, - svg { - display: block; - max-width: 100%; - } - - input, - button, - textarea, - select { - font: inherit; - } - - p, - h1, - h2, - h3, - h4, - h5, - h6 { - overflow-wrap: break-word; - } - -/* layer: icons */ -.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;} -/* layer: shortcuts */ -.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem;} -/* layer: default */ -.grid{display:grid;} -.mx-auto{margin-left:auto;margin-right:auto;} -.mb-20{margin-bottom:5rem;} -.mb-4{margin-bottom:1rem;} -.mb-8{margin-bottom:2rem;} -.inline{display:inline;} -.inline-block{display:inline-block;} -.flex{display:flex;} -.inline-flex{display:inline-flex;} -.items-center{align-items:center;} -.gap-1{gap:0.25rem;} -.gap-2{gap:0.5rem;} -.gap-4{gap:1rem;} -.gap-8{gap:2rem;} -.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse));} -.overflow-x-auto{overflow-x:auto;} -.rounded-lg{border-radius:0.5rem;} -.rounded-xl{border-radius:0.75rem;} -.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity));} -.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity));} -.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));} -.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity));} -.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity));} -.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to);} -.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position);} -.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient));} -.p-0{padding:0;} -.p-4{padding:1rem;} -.p-6{padding:1.5rem;} -.px-4{padding-left:1rem;padding-right:1rem;} -.px-6{padding-left:1.5rem;padding-right:1.5rem;} -.py-12{padding-top:3rem;padding-bottom:3rem;} -.py-16{padding-top:4rem;padding-bottom:4rem;} -.py-20{padding-top:5rem;padding-bottom:5rem;} -.py-3{padding-top:0.75rem;padding-bottom:0.75rem;} -.text-center{text-align:center;} -.text-3xl{font-size:1.875rem;line-height:2.25rem;} -.text-5xl{font-size:3rem;line-height:1;} -.text-lg{font-size:1.125rem;line-height:1.75rem;} -.text-xl{font-size:1.25rem;line-height:1.75rem;} -.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity));} -.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity));} -.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity));} -.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity));} -.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity));} -.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity));} -.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));} -.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity));} -.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity));} -.font-bold{font-weight:700;} -.font-semibold{font-weight:600;} -.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";} -.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);} -.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;} -@media (min-width: 768px){ -.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr));} -.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));} -} \ No newline at end of file diff --git a/demo/index.html b/demo/index.html index 7567ffc..ae11e5b 100644 --- a/demo/index.html +++ b/demo/index.html @@ -10,14 +10,13 @@ - - + + -
diff --git a/demo/js/demo.js b/demo/js/demo.js index 146948b..992a3f5 100644 --- a/demo/js/demo.js +++ b/demo/js/demo.js @@ -1,74 +1,78 @@ -/** - * WARNING: I set this coundtown to be running until the end of times. - * So when you'll init the plugin, follow how it's done in plugin documentation. - */ -let d = new Date(); -d.setMonth(d.getMonth() + 1); +import simplyCountdown from '../../src/simplyCountdown.js'; -// default example -simplyCountdown('.simply-countdown-one', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - enableUtc: true -}); +document.addEventListener('DOMContentLoaded', function() { + /** + * WARNING: I set this coundtown to be running until the end of times. + * So when you'll init the plugin, follow how it's done in plugin documentation. + */ + let d = new Date(); + d.setMonth(d.getMonth() + 1); -//jQuery example -$('#simply-countdown-losange').simplyCountdown({ - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - enableUtc: false -}); + // default example + simplyCountdown('.simply-countdown-one', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate(), + enableUtc: true + }); -// example with removeZeroUnits -simplyCountdown('.simply-countdown-two', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate() - 30, - removeZeroUnits: true -}); + // losange example + simplyCountdown('#simply-countdown-losange', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate(), + enableUtc: false + }); -// inline example -simplyCountdown('.simply-countdown-inline', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - inline: true -}); + // example with removeZeroUnits + simplyCountdown('.simply-countdown-two', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate() - 30, + removeZeroUnits: true + }); -// Header inline Countdown -let dateInTwoMinutes = new Date(); -dateInTwoMinutes.setSeconds(dateInTwoMinutes.getSeconds() + 30); -simplyCountdown('.sc-inline-header__cd', { - year: dateInTwoMinutes.getFullYear(), - month: dateInTwoMinutes.getMonth() + 1, - day: dateInTwoMinutes.getDate(), - hours: dateInTwoMinutes.getHours(), - minutes: dateInTwoMinutes.getMinutes(), - seconds: dateInTwoMinutes.getSeconds(), - removeZeroUnits: true, - inline: true, - inlineSeparator: ' - ', - onEnd: () => { - let afterHeaderCdAlert = document.querySelector('.show-after-header-cd'); - afterHeaderCdAlert.classList.add('active'); - document.querySelector('.sc-inline-header').classList.add('hide'); + // inline example + simplyCountdown('.simply-countdown-inline', { + year: d.getFullYear(), + month: d.getMonth() + 1, + day: d.getDate(), + inline: true + }); - window.setInterval(() => { - afterHeaderCdAlert.classList.remove('active'); - }, 20000); - } -}); + // Header inline Countdown + let dateInTwoMinutes = new Date(); + dateInTwoMinutes.setSeconds(dateInTwoMinutes.getSeconds() + 30); + simplyCountdown('.sc-inline-header__cd', { + year: dateInTwoMinutes.getFullYear(), + month: dateInTwoMinutes.getMonth() + 1, + day: dateInTwoMinutes.getDate(), + hours: dateInTwoMinutes.getHours(), + minutes: dateInTwoMinutes.getMinutes(), + seconds: dateInTwoMinutes.getSeconds(), + removeZeroUnits: true, + inline: true, + inlineSeparator: ' - ', + onEnd: () => { + let afterHeaderCdAlert = document.querySelector('.show-after-header-cd'); + afterHeaderCdAlert.classList.add('active'); + document.querySelector('.sc-inline-header').classList.add('hide'); + + window.setInterval(() => { + afterHeaderCdAlert.classList.remove('active'); + }, 20000); + } + }); -// Count Up Example -var countUpDate = new Date(); -simplyCountdown('.simply-countdown-countup', { - year: countUpDate.getFullYear(), - month: countUpDate.getMonth() + 1, - day: countUpDate.getDate(), - hours: countUpDate.getHours(), - minutes: countUpDate.getMinutes(), - seconds: countUpDate.getSeconds(), - countUp: true + // Count Up Example + var countUpDate = new Date(); + simplyCountdown('.simply-countdown-countup', { + year: countUpDate.getFullYear(), + month: countUpDate.getMonth() + 1, + day: countUpDate.getDate(), + hours: countUpDate.getHours(), + minutes: countUpDate.getMinutes(), + seconds: countUpDate.getSeconds(), + countUp: true + }); }); diff --git a/demo/main.js b/demo/main.js index f9807c0..f5d0190 100644 --- a/demo/main.js +++ b/demo/main.js @@ -1,25 +1,16 @@ // Import UnoCSS +import 'uno.css' import '@unocss/reset/tailwind.css' -import 'virtual:uno.css' // Import styles -import './css/demo.css' import './css/simplyCountdown.theme.default.css' import './css/simplyCountdown.theme.dark.css' import './css/simplyCountdown.theme.cyberpunk.css' import './css/simplyCountdown.theme.losange.css' -// Import the library -import simplyCountdown from '/src/simplyCountdown.js' +// Import the library and demo +import simplyCountdown from '../src/simplyCountdown.js' +import './js/demo.js' // Make it available globally for the demo window.simplyCountdown = simplyCountdown - -// Wait for jQuery to be loaded -const checkJQuery = setInterval(() => { - if (window.jQuery) { - clearInterval(checkJQuery) - // Initialize demo - import('./js/demo.js') - } -}, 100) diff --git a/package.json b/package.json index 177be96..031b6c3 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "countdown", "countup", "clock", - "jquery", "vanilla", "plugin", "vue", @@ -48,7 +47,7 @@ "dist/simplyCountdown.iife.js.map" ], "scripts": { - "dev": "vite", + "dev": "vite --config vite.config.js", "build": "npm run build:lib && npm run build:docs", "build:lib": "vite build", "build:docs": "BUILD_TYPE=docs vite build", diff --git a/src/simplyCountdown.js b/src/simplyCountdown.js index 2f52402..85176fa 100644 --- a/src/simplyCountdown.js +++ b/src/simplyCountdown.js @@ -308,32 +308,13 @@ } }; - // Export for module systems + // Export for modern module systems if (typeof module !== 'undefined' && module.exports) { module.exports = simplyCountdown; - } else if (typeof define === 'function' && define.amd) { - define([], function() { - return simplyCountdown; - }); } else { window.simplyCountdown = simplyCountdown; } }(window)); -/* global jQuery, simplyCountdown */ -if (window.jQuery) { - (function ($, simplyCountdown) { - 'use strict'; - - function simplyCountdownify(el, options) { - simplyCountdown(el, options); - } - - $.fn.simplyCountdown = function (options) { - return simplyCountdownify(this.selector, options); - }; - }(jQuery, simplyCountdown)); -} - export default simplyCountdown; From 3844b2e984c39631dc3108bf34514a7568f7f727 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Sat, 21 Dec 2024 15:20:05 +0100 Subject: [PATCH 05/75] improve other build :shit: :happy: --- demo/assets/simplyCountdown.js | 319 +++++++++++++++++++++ demo/css/simplyCountdown.theme.dark.css | 8 - demo/css/simplyCountdown.theme.default.css | 6 - demo/index.html | 7 +- demo/js/demo.js | 2 +- demo/main.js | 5 +- dist/simplyCountdown.es.js | 88 +++--- dist/simplyCountdown.es.js.map | 2 +- dist/simplyCountdown.iife.js | 2 +- dist/simplyCountdown.iife.js.map | 2 +- dist/simplyCountdown.umd.js | 4 +- dist/simplyCountdown.umd.js.map | 2 +- docs/assets/demo.js | 1 - docs/assets/index.css | 1 - docs/assets/index.js | 10 - docs/assets/main.css | 1 + docs/assets/main.js | 19 ++ docs/assets/simplyCountdown.iife.js | 2 +- docs/index.html | 6 +- src/simplyCountdown.js | 1 - vite.config.js | 74 ++--- 21 files changed, 432 insertions(+), 130 deletions(-) create mode 100644 demo/assets/simplyCountdown.js delete mode 100644 docs/assets/demo.js delete mode 100644 docs/assets/index.css delete mode 100644 docs/assets/index.js create mode 100644 docs/assets/main.css create mode 100644 docs/assets/main.js diff --git a/demo/assets/simplyCountdown.js b/demo/assets/simplyCountdown.js new file mode 100644 index 0000000..331ff57 --- /dev/null +++ b/demo/assets/simplyCountdown.js @@ -0,0 +1,319 @@ +/* global Symbol */ + +/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/ +(function (exports) { + 'use strict'; + + /** + * Function that merge user parameters with defaults one. + * @param output + * @returns {*|{}} + */ + let extend = function (output) { + let obj; + let out = output || {}; + + for (let i = 1; i < arguments.length; i += 1) { + obj = arguments[i]; + const keys = Object.keys(obj); + + if (keys.length) { + for (let i2 = 0; i2 < keys.length; i2 += 1) { + let key = keys[i2]; + + if (Object.prototype.hasOwnProperty.call(obj, key)) { + if (typeof obj[key] === 'object') { + extend(out[key], obj[key]); + } else { + out[key] = obj[key]; + } + } + } + } + } + + return out; + }; + + let isIterableElement = (val) => { + return val !== null && Symbol.iterator in Object(val); + }; + + /** + * Function that create a countdown section + * @param countdown + * @param parameters + * @param typeClass + * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}} + */ + let createCountdownElt = (countdown, parameters, typeClass) => { + let sectionTag = document.createElement('div'); + let amountTag = document.createElement('span'); + let wordTag = document.createElement('span'); + let innerSectionTag = document.createElement('div'); + + innerSectionTag.appendChild(amountTag); + innerSectionTag.appendChild(wordTag); + sectionTag.appendChild(innerSectionTag); + + sectionTag.classList.add(parameters.sectionClass); + sectionTag.classList.add(typeClass); + amountTag.classList.add(parameters.amountClass); + wordTag.classList.add(parameters.wordClass); + + countdown.appendChild(sectionTag); + + return { + full: sectionTag, + amount: amountTag, + word: wordTag + }; + }; + + /** + * Function that create full countdown DOM elements calling createCountdownElt + * @param parameters + * @param countdown + * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}} + */ + let createElements = (parameters, countdown) => { + let spanTag; + + if (!parameters.inline) { + return { + days: createCountdownElt(countdown, parameters, 'simply-days-section'), + hours: createCountdownElt(countdown, parameters, 'simply-hours-section'), + minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'), + seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section') + }; + } + + spanTag = document.createElement('span'); + spanTag.classList.add(parameters.inlineClass); + return spanTag; + }; + + /** + * simplyCountdown, create and display the coundtown. + * @param elt + * @param args (parameters) + */ + let simplyCountdown = (elt, args) => { + const eltProto = Object.getPrototypeOf(elt); + let parameters = extend({ + year: 2015, + month: 6, + day: 28, + hours: 0, + minutes: 0, + seconds: 0, + words: { + days: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'day'}, + hours: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'hour'}, + minutes: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'minute'}, + seconds: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'second'} + }, + plural: true, + inline: false, + inlineSeparator: ', ', + enableUtc: false, + onEnd: () => { + }, + refresh: 1000, + inlineClass: 'simply-countdown-inline', + sectionClass: 'simply-section', + amountClass: 'simply-amount', + wordClass: 'simply-word', + zeroPad: false, + removeZeroUnits: false, + countUp: false + }, args); + let interval; + let targetDate; + let now; + let secondsLeft; + let days; + let hours; + let minutes; + let seconds; + let cd; + + // console.log(typeof elt); + // + if (eltProto === String.prototype) { + cd = document.querySelectorAll(elt); + } else { + cd = elt; + } + + if (parameters.enableUtc) { + // Use UTC for target date + targetDate = new Date(Date.UTC( + parameters.year, + parameters.month - 1, + parameters.day, + parameters.hours, + parameters.minutes, + parameters.seconds + )); + } else { + // Use local time for target date + targetDate = new Date( + parameters.year, + parameters.month - 1, + parameters.day, + parameters.hours, + parameters.minutes, + parameters.seconds + ); + } + + let runCountdown = (theCountdown) => { + let countdown = theCountdown; + let fullCountDown = createElements(parameters, countdown); + let refresh; + + refresh = function () { + let dayWord; + let hourWord; + let minuteWord; + let secondWord; + + let updateDisplayDate = () => { + days = parseInt(secondsLeft / 86400, 10); + secondsLeft %= 86400; + + hours = parseInt(secondsLeft / 3600, 10); + secondsLeft %= 3600; + + minutes = parseInt(secondsLeft / 60, 10); + seconds = parseInt(secondsLeft % 60, 10); + }; + + if (parameters.enableUtc) { + // Calculate "now" in UTC + now = new Date(); + now = new Date(Date.UTC( + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate(), + now.getUTCHours(), + now.getUTCMinutes(), + now.getUTCSeconds() + )); + } else { + // Calculate "now" in local time + now = new Date(); + } + + secondsLeft = Math.floor((targetDate - now.getTime()) / 1000); + + if (secondsLeft > 0) { + updateDisplayDate(); + } else if (parameters.countUp) { + secondsLeft = (now.getTime() - targetDate) / 1000; + updateDisplayDate(); + } else { + days = 0; + hours = 0; + minutes = 0; + seconds = 0; + window.clearInterval(interval); + parameters.onEnd(); + } + + let getWord = (obj, n) => { + return obj.hasOwnProperty('lambda') + ? obj.lambda(obj.root, n) + : obj.root + }; + let words = parameters.words; + dayWord = getWord(words.days, days); + hourWord = getWord(words.hours, hours); + minuteWord = getWord(words.minutes, minutes); + secondWord = getWord(words.seconds, seconds); + + /* display an inline countdown into a span tag */ + if (parameters.inline) { + let displayStr = ''; + + if (!(parameters.removeZeroUnits && days === 0)) { + displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { + displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { + displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`; + } + + // Seconds should always be displayed + displayStr += `${seconds} ${secondWord}`; + + countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any + } else { + if (!(parameters.removeZeroUnits && days === 0)) { + fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days; + fullCountDown.days.word.textContent = dayWord; + fullCountDown.days.full.style.display = ''; + } else { + fullCountDown.days.full.style.display = 'none'; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { + fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours; + fullCountDown.hours.word.textContent = hourWord; + fullCountDown.hours.full.style.display = ''; + } else { + fullCountDown.hours.full.style.display = 'none'; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { + fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes; + fullCountDown.minutes.word.textContent = minuteWord; + fullCountDown.minutes.full.style.display = ''; + } else { + fullCountDown.minutes.full.style.display = 'none'; + } + + // Seconds should always be displayed + fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds; + fullCountDown.seconds.word.textContent = secondWord; + fullCountDown.seconds.full.style.display = ''; + } + }; + + // Refresh immediately to prevent a Flash of Unstyled Content + refresh(); + interval = window.setInterval(refresh, parameters.refresh); + }; + + if (!isIterableElement(cd)) { + runCountdown(cd); + } else { + Array.prototype.forEach.call(cd, (cdElt) => { + runCountdown(cdElt); + }); + } + }; + + // Export for modern module systems + if (typeof module !== 'undefined' && module.exports) { + module.exports = simplyCountdown; + } else { + window.simplyCountdown = simplyCountdown; + } +}(window)); + +export default simplyCountdown; diff --git a/demo/css/simplyCountdown.theme.dark.css b/demo/css/simplyCountdown.theme.dark.css index 1eed398..352fbff 100644 --- a/demo/css/simplyCountdown.theme.dark.css +++ b/demo/css/simplyCountdown.theme.dark.css @@ -31,14 +31,6 @@ backdrop-filter: blur(10px); } -.simply-countdown-dark > .simply-section:hover { - transform: translateY(-2px); - box-shadow: 0 6px 12px -2px rgba(0, 0, 0, 0.3), - 0 3px 6px -2px rgba(0, 0, 0, 0.2), - 0 0 0 1px rgba(255, 255, 255, 0.08); - background: rgba(15, 23, 42, 0.85); -} - .simply-countdown-dark > .simply-section > div { display: flex; flex-direction: column; diff --git a/demo/css/simplyCountdown.theme.default.css b/demo/css/simplyCountdown.theme.default.css index aafbdeb..8ec8656 100644 --- a/demo/css/simplyCountdown.theme.default.css +++ b/demo/css/simplyCountdown.theme.default.css @@ -31,12 +31,6 @@ backdrop-filter: blur(10px); } -.simply-countdown > .simply-section:hover { - transform: translateY(-2px); - box-shadow: 0 6px 12px -2px rgba(0, 0, 0, 0.08), - 0 3px 6px -2px rgba(0, 0, 0, 0.05); -} - .simply-countdown > .simply-section > div { display: flex; flex-direction: column; diff --git a/demo/index.html b/demo/index.html index ae11e5b..70d21f5 100644 --- a/demo/index.html +++ b/demo/index.html @@ -10,13 +10,14 @@ - - - + + + +
diff --git a/demo/js/demo.js b/demo/js/demo.js index 992a3f5..0922b06 100644 --- a/demo/js/demo.js +++ b/demo/js/demo.js @@ -1,4 +1,4 @@ -import simplyCountdown from '../../src/simplyCountdown.js'; +import simplyCountdown from '../assets/simplyCountdown.js'; document.addEventListener('DOMContentLoaded', function() { /** diff --git a/demo/main.js b/demo/main.js index f5d0190..528f5a4 100644 --- a/demo/main.js +++ b/demo/main.js @@ -8,9 +8,8 @@ import './css/simplyCountdown.theme.dark.css' import './css/simplyCountdown.theme.cyberpunk.css' import './css/simplyCountdown.theme.losange.css' -// Import the library and demo -import simplyCountdown from '../src/simplyCountdown.js' -import './js/demo.js' +// Import the library +import simplyCountdown from './assets/simplyCountdown.js' // Make it available globally for the demo window.simplyCountdown = simplyCountdown diff --git a/dist/simplyCountdown.es.js b/dist/simplyCountdown.es.js index 40dc0a6..d8b8c38 100644 --- a/dist/simplyCountdown.es.js +++ b/dist/simplyCountdown.es.js @@ -8,37 +8,37 @@ * - Justin Beasley * - Nathan Smith */ -(function(P) { - let w = function(n) { - let s, a = n || {}; +(function(O) { + let $ = function(n) { + let s, i = n || {}; for (let e = 1; e < arguments.length; e += 1) { s = arguments[e]; const d = Object.keys(s); if (d.length) for (let r = 0; r < d.length; r += 1) { let t = d[r]; - Object.prototype.hasOwnProperty.call(s, t) && (typeof s[t] == "object" ? w(a[t], s[t]) : a[t] = s[t]); + Object.prototype.hasOwnProperty.call(s, t) && (typeof s[t] == "object" ? $(i[t], s[t]) : i[t] = s[t]); } } - return a; - }, T = (n) => n !== null && Symbol.iterator in Object(n), f = (n, s, a) => { + return i; + }, P = (n) => n !== null && Symbol.iterator in Object(n), C = (n, s, i) => { let e = document.createElement("div"), d = document.createElement("span"), r = document.createElement("span"), t = document.createElement("div"); - return t.appendChild(d), t.appendChild(r), e.appendChild(t), e.classList.add(s.sectionClass), e.classList.add(a), d.classList.add(s.amountClass), r.classList.add(s.wordClass), n.appendChild(e), { + return t.appendChild(d), t.appendChild(r), e.appendChild(t), e.classList.add(s.sectionClass), e.classList.add(i), d.classList.add(s.amountClass), r.classList.add(s.wordClass), n.appendChild(e), { full: e, amount: d, word: r }; - }, b = (n, s) => { - let a; - return n.inline ? (a = document.createElement("span"), a.classList.add(n.inlineClass), a) : { - days: f(s, n, "simply-days-section"), - hours: f(s, n, "simply-hours-section"), - minutes: f(s, n, "simply-minutes-section"), - seconds: f(s, n, "simply-seconds-section") + }, I = (n, s) => { + let i; + return n.inline ? (i = document.createElement("span"), i.classList.add(n.inlineClass), i) : { + days: C(s, n, "simply-days-section"), + hours: C(s, n, "simply-hours-section"), + minutes: C(s, n, "simply-minutes-section"), + seconds: C(s, n, "simply-seconds-section") }; - }, S = (n, s) => { - const a = Object.getPrototypeOf(n); - let e = w({ + }, D = (n, s) => { + const i = Object.getPrototypeOf(n); + let e = $({ year: 2015, month: 6, day: 28, @@ -46,10 +46,10 @@ minutes: 0, seconds: 0, words: { - days: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "day" }, - hours: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "hour" }, - minutes: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "minute" }, - seconds: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "second" } + days: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "day" }, + hours: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "hour" }, + minutes: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "minute" }, + seconds: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "second" } }, plural: !0, inline: !1, @@ -65,8 +65,8 @@ zeroPad: !1, removeZeroUnits: !1, countUp: !1 - }, s), d, r, t, y, i, u, p, C, h; - a === String.prototype ? h = document.querySelectorAll(n) : h = n, e.enableUtc ? r = new Date(Date.UTC( + }, s), d, r, t, y, a, u, p, f, h; + i === String.prototype ? h = document.querySelectorAll(n) : h = n, e.enableUtc ? r = new Date(Date.UTC( e.year, e.month - 1, e.day, @@ -81,11 +81,11 @@ e.minutes, e.seconds ); - let I = (o) => { - let c = o, l = b(e, c), x; - x = function() { - let $, D, v, E, L = () => { - i = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, p = parseInt(y / 60, 10), C = parseInt(y % 60, 10); + let v = (l) => { + let m = l, o = I(e, m), U; + U = function() { + let T, b, S, x, E = () => { + a = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, p = parseInt(y / 60, 10), f = parseInt(y % 60, 10); }; e.enableUtc ? (t = /* @__PURE__ */ new Date(), t = new Date(Date.UTC( t.getUTCFullYear(), @@ -94,31 +94,21 @@ t.getUTCHours(), t.getUTCMinutes(), t.getUTCSeconds() - ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((r - t.getTime()) / 1e3), y > 0 ? L() : e.countUp ? (y = (t.getTime() - r) / 1e3, L()) : (i = 0, u = 0, p = 0, C = 0, window.clearInterval(d), e.onEnd()); - let g = (m, O) => m.hasOwnProperty("lambda") ? m.lambda(m.root, O) : m.root, U = e.words; - if ($ = g(U.days, i), D = g(U.hours, u), v = g(U.minutes, p), E = g(U.seconds, C), e.inline) { - let m = ""; - e.removeZeroUnits && i === 0 || (m += `${i} ${$}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 || (m += `${u} ${D}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 && p === 0 || (m += `${p} ${v}${e.inlineSeparator}`), m += `${C} ${E}`, c.innerHTML = m.replace(/, $/, ""); + ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((r - t.getTime()) / 1e3), y > 0 ? E() : e.countUp ? (y = (t.getTime() - r) / 1e3, E()) : (a = 0, u = 0, p = 0, f = 0, window.clearInterval(d), e.onEnd()); + let w = (c, L) => c.hasOwnProperty("lambda") ? c.lambda(c.root, L) : c.root, g = e.words; + if (T = w(g.days, a), b = w(g.hours, u), S = w(g.minutes, p), x = w(g.seconds, f), e.inline) { + let c = ""; + e.removeZeroUnits && a === 0 || (c += `${a} ${T}${e.inlineSeparator}`), e.removeZeroUnits && a === 0 && u === 0 || (c += `${u} ${b}${e.inlineSeparator}`), e.removeZeroUnits && a === 0 && u === 0 && p === 0 || (c += `${p} ${S}${e.inlineSeparator}`), c += `${f} ${x}`, m.innerHTML = c.replace(/, $/, ""); } else - e.removeZeroUnits && i === 0 ? l.days.full.style.display = "none" : (l.days.amount.textContent = (e.zeroPad && i.toString().length < 2 ? "0" : "") + i, l.days.word.textContent = $, l.days.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 ? l.hours.full.style.display = "none" : (l.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, l.hours.word.textContent = D, l.hours.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 && p === 0 ? l.minutes.full.style.display = "none" : (l.minutes.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, l.minutes.word.textContent = v, l.minutes.full.style.display = ""), l.seconds.amount.textContent = (e.zeroPad && C.toString().length < 2 ? "0" : "") + C, l.seconds.word.textContent = E, l.seconds.full.style.display = ""; - }, x(), d = window.setInterval(x, e.refresh); + e.removeZeroUnits && a === 0 ? o.days.full.style.display = "none" : (o.days.amount.textContent = (e.zeroPad && a.toString().length < 2 ? "0" : "") + a, o.days.word.textContent = T, o.days.full.style.display = ""), e.removeZeroUnits && a === 0 && u === 0 ? o.hours.full.style.display = "none" : (o.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, o.hours.word.textContent = b, o.hours.full.style.display = ""), e.removeZeroUnits && a === 0 && u === 0 && p === 0 ? o.minutes.full.style.display = "none" : (o.minutes.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, o.minutes.word.textContent = S, o.minutes.full.style.display = ""), o.seconds.amount.textContent = (e.zeroPad && f.toString().length < 2 ? "0" : "") + f, o.seconds.word.textContent = x, o.seconds.full.style.display = ""; + }, U(), d = window.setInterval(U, e.refresh); }; - T(h) ? Array.prototype.forEach.call(h, (o) => { - I(o); - }) : I(h); + P(h) ? Array.prototype.forEach.call(h, (l) => { + v(l); + }) : v(h); }; - typeof module < "u" && module.exports ? module.exports = S : typeof define == "function" && define.amd ? define([], function() { - return S; - }) : window.simplyCountdown = S; + typeof module < "u" && module.exports ? module.exports = D : window.simplyCountdown = D; })(); -window.jQuery && function(P, w) { - function T(f, b) { - w(f, b); - } - P.fn.simplyCountdown = function(f) { - return T(this.selector, f); - }; -}(jQuery, simplyCountdown); const Z = simplyCountdown; export { Z as default diff --git a/dist/simplyCountdown.es.js.map b/dist/simplyCountdown.es.js.map index 91ba5c2..fb824eb 100644 --- a/dist/simplyCountdown.es.js.map +++ b/dist/simplyCountdown.es.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.es.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return simplyCountdown;\n });\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdownify","el","options","simplyCountdown$1"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.es.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for modern module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n}(window));\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","simplyCountdown$1"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.iife.js b/dist/simplyCountdown.iife.js index 795184a..a46682a 100644 --- a/dist/simplyCountdown.iife.js +++ b/dist/simplyCountdown.iife.js @@ -7,5 +7,5 @@ var simplyCountdown=function(){"use strict";/*! * Contributors : * - Justin Beasley * - Nathan Smith -*/return function(P){let w=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},b=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}},S=(n,s)=>{const a=Object.getPrototypeOf(n);let e=w({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,i,u,p,C,h;a===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let I=o=>{let c=o,l=b(e,c),$;$=function(){let v,x,D,E,L=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),C=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?L():e.countUp?(y=(t.getTime()-r)/1e3,L()):(i=0,u=0,p=0,C=0,window.clearInterval(d),e.onEnd());let g=(m,O)=>m.hasOwnProperty("lambda")?m.lambda(m.root,O):m.root,U=e.words;if(v=g(U.days,i),x=g(U.hours,u),D=g(U.minutes,p),E=g(U.seconds,C),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&p===0||(m+=`${p} ${D}${e.inlineSeparator}`),m+=`${C} ${E}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,l.days.word.textContent=v,l.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=x,l.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=D,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=E,l.seconds.full.style.display=""},$(),d=window.setInterval($,e.refresh)};T(h)?Array.prototype.forEach.call(h,o=>{I(o)}):I(h)};typeof module<"u"&&module.exports?module.exports=S:typeof define=="function"&&define.amd?define([],function(){return S}):window.simplyCountdown=S}(),window.jQuery&&function(P,w){function T(f,b){w(f,b)}P.fn.simplyCountdown=function(f){return T(this.selector,f)}}(jQuery,simplyCountdown),simplyCountdown}(); +*/return function(Z){let v=function(n){let s,i=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,s,i)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(i),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},I=(n,s)=>{let i;return n.inline?(i=document.createElement("span"),i.classList.add(n.inlineClass),i):{days:C(s,n,"simply-days-section"),hours:C(s,n,"simply-hours-section"),minutes:C(s,n,"simply-minutes-section"),seconds:C(s,n,"simply-seconds-section")}},x=(n,s)=>{const i=Object.getPrototypeOf(n);let e=v({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,m)=>m>1?l+"s":l,root:"day"},hours:{lambda:(l,m)=>m>1?l+"s":l,root:"hour"},minutes:{lambda:(l,m)=>m>1?l+"s":l,root:"minute"},seconds:{lambda:(l,m)=>m>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,a,u,p,f,h;i===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let D=l=>{let m=l,o=I(e,m),U;U=function(){let T,b,S,$,E=()=>{a=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),f=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?E():e.countUp?(y=(t.getTime()-r)/1e3,E()):(a=0,u=0,p=0,f=0,window.clearInterval(d),e.onEnd());let w=(c,L)=>c.hasOwnProperty("lambda")?c.lambda(c.root,L):c.root,g=e.words;if(T=w(g.days,a),b=w(g.hours,u),S=w(g.minutes,p),$=w(g.seconds,f),e.inline){let c="";e.removeZeroUnits&&a===0||(c+=`${a} ${T}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0||(c+=`${u} ${b}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0&&p===0||(c+=`${p} ${S}${e.inlineSeparator}`),c+=`${f} ${$}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&a===0?o.days.full.style.display="none":(o.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,o.days.word.textContent=T,o.days.full.style.display=""),e.removeZeroUnits&&a===0&&u===0?o.hours.full.style.display="none":(o.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,o.hours.word.textContent=b,o.hours.full.style.display=""),e.removeZeroUnits&&a===0&&u===0&&p===0?o.minutes.full.style.display="none":(o.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,o.minutes.word.textContent=S,o.minutes.full.style.display=""),o.seconds.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,o.seconds.word.textContent=$,o.seconds.full.style.display=""},U(),d=window.setInterval(U,e.refresh)};P(h)?Array.prototype.forEach.call(h,l=>{D(l)}):D(h)};typeof module<"u"&&module.exports?module.exports=x:window.simplyCountdown=x}(),simplyCountdown}(); //# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/dist/simplyCountdown.iife.js.map b/dist/simplyCountdown.iife.js.map index 00f88f5..dc57775 100644 --- a/dist/simplyCountdown.iife.js.map +++ b/dist/simplyCountdown.iife.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return simplyCountdown;\n });\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for modern module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n}(window));\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.umd.js b/dist/simplyCountdown.umd.js index 632a7f9..2073666 100644 --- a/dist/simplyCountdown.umd.js +++ b/dist/simplyCountdown.umd.js @@ -1,4 +1,4 @@ -(function(g,h){typeof exports=="object"&&typeof module<"u"?module.exports=h():typeof define=="function"&&define.amd?define(h):(g=typeof globalThis<"u"?globalThis:g||self,g.simplyCountdown=h())})(this,function(){"use strict";/*! +(function(C,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(C=typeof globalThis<"u"?globalThis:C||self,C.simplyCountdown=w())})(this,function(){"use strict";/*! * Project : simply-countdown * Date : 06/12/2024 * License : MIT @@ -7,5 +7,5 @@ * Contributors : * - Justin Beasley * - Nathan Smith -*/return function(h){let U=function(n){let o,d=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),y=(n,o,d)=>{let e=document.createElement("div"),a=document.createElement("span"),i=document.createElement("span"),t=document.createElement("div");return t.appendChild(a),t.appendChild(i),e.appendChild(t),e.classList.add(o.sectionClass),e.classList.add(d),a.classList.add(o.amountClass),i.classList.add(o.wordClass),n.appendChild(e),{full:e,amount:a,word:i}},S=(n,o)=>{let d;return n.inline?(d=document.createElement("span"),d.classList.add(n.inlineClass),d):{days:y(o,n,"simply-days-section"),hours:y(o,n,"simply-hours-section"),minutes:y(o,n,"simply-minutes-section"),seconds:y(o,n,"simply-seconds-section")}},$=(n,o)=>{const d=Object.getPrototypeOf(n);let e=U({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(s,m)=>m>1?s+"s":s,root:"day"},hours:{lambda:(s,m)=>m>1?s+"s":s,root:"hour"},minutes:{lambda:(s,m)=>m>1?s+"s":s,root:"minute"},seconds:{lambda:(s,m)=>m>1?s+"s":s,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},o),a,i,t,f,r,u,p,C,w;d===String.prototype?w=document.querySelectorAll(n):w=n,e.enableUtc?i=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):i=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let L=s=>{let m=s,l=S(e,m),D;D=function(){let v,E,P,I,O=()=>{r=parseInt(f/86400,10),f%=86400,u=parseInt(f/3600,10),f%=3600,p=parseInt(f/60,10),C=parseInt(f%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,f=Math.floor((i-t.getTime())/1e3),f>0?O():e.countUp?(f=(t.getTime()-i)/1e3,O()):(r=0,u=0,p=0,C=0,window.clearInterval(a),e.onEnd());let T=(c,Z)=>c.hasOwnProperty("lambda")?c.lambda(c.root,Z):c.root,b=e.words;if(v=T(b.days,r),E=T(b.hours,u),P=T(b.minutes,p),I=T(b.seconds,C),e.inline){let c="";e.removeZeroUnits&&r===0||(c+=`${r} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0||(c+=`${u} ${E}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0&&p===0||(c+=`${p} ${P}${e.inlineSeparator}`),c+=`${C} ${I}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&r===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&r.toString().length<2?"0":"")+r,l.days.word.textContent=v,l.days.full.style.display=""),e.removeZeroUnits&&r===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=E,l.hours.full.style.display=""),e.removeZeroUnits&&r===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=P,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=I,l.seconds.full.style.display=""},D(),a=window.setInterval(D,e.refresh)};x(w)?Array.prototype.forEach.call(w,s=>{L(s)}):L(w)};typeof module<"u"&&module.exports?module.exports=$:typeof define=="function"&&define.amd?define([],function(){return $}):window.simplyCountdown=$}(),window.jQuery&&function(h,U){function x(y,S){U(y,S)}h.fn.simplyCountdown=function(y){return x(this.selector,y)}}(jQuery,simplyCountdown),simplyCountdown}); +*/return function(w){let v=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),g=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),i=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(i),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),i.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:i}},O=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:g(s,n,"simply-days-section"),hours:g(s,n,"simply-hours-section"),minutes:g(s,n,"simply-minutes-section"),seconds:g(s,n,"simply-seconds-section")}},E=(n,s)=>{const a=Object.getPrototypeOf(n);let e=v({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,m)=>m>1?o+"s":o,root:"day"},hours:{lambda:(o,m)=>m>1?o+"s":o,root:"hour"},minutes:{lambda:(o,m)=>m>1?o+"s":o,root:"minute"},seconds:{lambda:(o,m)=>m>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,i,t,y,r,u,p,f,h;a===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?i=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):i=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=o=>{let m=o,l=O(e,m),b;b=function(){let x,S,$,D,I=()=>{r=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),f=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((i-t.getTime())/1e3),y>0?I():e.countUp?(y=(t.getTime()-i)/1e3,I()):(r=0,u=0,p=0,f=0,window.clearInterval(d),e.onEnd());let U=(c,Z)=>c.hasOwnProperty("lambda")?c.lambda(c.root,Z):c.root,T=e.words;if(x=U(T.days,r),S=U(T.hours,u),$=U(T.minutes,p),D=U(T.seconds,f),e.inline){let c="";e.removeZeroUnits&&r===0||(c+=`${r} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0||(c+=`${u} ${S}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0&&p===0||(c+=`${p} ${$}${e.inlineSeparator}`),c+=`${f} ${D}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&r===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&r.toString().length<2?"0":"")+r,l.days.word.textContent=x,l.days.full.style.display=""),e.removeZeroUnits&&r===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=S,l.hours.full.style.display=""),e.removeZeroUnits&&r===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=$,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,l.seconds.word.textContent=D,l.seconds.full.style.display=""},b(),d=window.setInterval(b,e.refresh)};L(h)?Array.prototype.forEach.call(h,o=>{P(o)}):P(h)};typeof module<"u"&&module.exports?module.exports=E:window.simplyCountdown=E}(),simplyCountdown}); //# sourceMappingURL=simplyCountdown.umd.js.map diff --git a/dist/simplyCountdown.umd.js.map b/dist/simplyCountdown.umd.js.map index fbbbedb..28a3456 100644 --- a/dist/simplyCountdown.umd.js.map +++ b/dist/simplyCountdown.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return simplyCountdown;\n });\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n\n}(window));\n\n/* global jQuery, simplyCountdown */\nif (window.jQuery) {\n (function ($, simplyCountdown) {\n 'use strict';\n\n function simplyCountdownify(el, options) {\n simplyCountdown(el, options);\n }\n\n $.fn.simplyCountdown = function (options) {\n return simplyCountdownify(this.selector, options);\n };\n }(jQuery, simplyCountdown));\n}\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","$","simplyCountdownify","el","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for modern module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n}(window));\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/docs/assets/demo.js b/docs/assets/demo.js deleted file mode 100644 index ae7bea9..0000000 --- a/docs/assets/demo.js +++ /dev/null @@ -1 +0,0 @@ -let e=new Date;e.setMonth(e.getMonth()+1);simplyCountdown(".simply-countdown-one",{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),enableUtc:!0});$("#simply-countdown-losange").simplyCountdown({year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),enableUtc:!1});simplyCountdown(".simply-countdown-two",{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()-30,removeZeroUnits:!0});simplyCountdown(".simply-countdown-inline",{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),inline:!0});let t=new Date;t.setSeconds(t.getSeconds()+30);simplyCountdown(".sc-inline-header__cd",{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate(),hours:t.getHours(),minutes:t.getMinutes(),seconds:t.getSeconds(),removeZeroUnits:!0,inline:!0,inlineSeparator:" - ",onEnd:()=>{let o=document.querySelector(".show-after-header-cd");o.classList.add("active"),document.querySelector(".sc-inline-header").classList.add("hide"),window.setInterval(()=>{o.classList.remove("active")},2e4)}});var n=new Date;simplyCountdown(".simply-countdown-countup",{year:n.getFullYear(),month:n.getMonth()+1,day:n.getDate(),hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds(),countUp:!0}); diff --git a/docs/assets/index.css b/docs/assets/index.css deleted file mode 100644 index d24ecc2..0000000 --- a/docs/assets/index.css +++ /dev/null @@ -1 +0,0 @@ -.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section:hover{transform:translateY(-2px);box-shadow:0 6px 12px -2px #0000004d,0 3px 6px -2px #0003,0 0 0 1px #ffffff14;background:#0f172ad9}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section:hover{transform:translateY(-2px);box-shadow:0 6px 12px -2px #00000014,0 3px 6px -2px #0000000d}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;gap:.25rem}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.inline{display:inline}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse))}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-800{--un-bg-opacity:1;background-color:rgb(31 41 55 / var(--un-bg-opacity))}.bg-gray-900{--un-bg-opacity:1;background-color:rgb(17 24 39 / var(--un-bg-opacity))}.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity))}.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity))}.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity))}.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-0{padding:0}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity))}.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity))}.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity))}.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity))}.color-white,.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}} diff --git a/docs/assets/index.js b/docs/assets/index.js deleted file mode 100644 index ebd93a2..0000000 --- a/docs/assets/index.js +++ /dev/null @@ -1,10 +0,0 @@ -(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))f(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const n of r.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&f(n)}).observe(document,{childList:!0,subtree:!0});function g(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function f(s){if(s.ep)return;s.ep=!0;const r=g(s);fetch(s.href,r)}})();const Z="modulepreload",_=function(v,p){return new URL(v,p).href},I={},A=function(p,g,f){let s=Promise.resolve();if(g&&g.length>0){const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),m=(t==null?void 0:t.nonce)||(t==null?void 0:t.getAttribute("nonce"));s=Promise.allSettled(g.map(e=>{if(e=_(e,f),e in I)return;I[e]=!0;const a=e.endsWith(".css"),y=a?'[rel="stylesheet"]':"";if(!!f)for(let i=n.length-1;i>=0;i--){const d=n[i];if(d.href===e&&(!a||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${y}`))return;const l=document.createElement("link");if(l.rel=a?"stylesheet":Z,a||(l.as="script"),l.crossOrigin="",l.href=e,m&&l.setAttribute("nonce",m),document.head.appendChild(l),a)return new Promise((i,d)=>{l.addEventListener("load",i),l.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${e}`)))})}))}function r(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return s.then(n=>{for(const t of n||[])t.status==="rejected"&&r(t.reason);return p().catch(r)})};/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/(function(v){let p=function(n){let t,m=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,t,m)=>{let e=document.createElement("div"),a=document.createElement("span"),y=document.createElement("span"),o=document.createElement("div");return o.appendChild(a),o.appendChild(y),e.appendChild(o),e.classList.add(t.sectionClass),e.classList.add(m),a.classList.add(t.amountClass),y.classList.add(t.wordClass),n.appendChild(e),{full:e,amount:a,word:y}},s=(n,t)=>{let m;return n.inline?(m=document.createElement("span"),m.classList.add(n.inlineClass),m):{days:f(t,n,"simply-days-section"),hours:f(t,n,"simply-hours-section"),minutes:f(t,n,"simply-minutes-section"),seconds:f(t,n,"simply-seconds-section")}},r=(n,t)=>{const m=Object.getPrototypeOf(n);let e=p({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(u,h)=>h>1?u+"s":u,root:"day"},hours:{lambda:(u,h)=>h>1?u+"s":u,root:"hour"},minutes:{lambda:(u,h)=>h>1?u+"s":u,root:"minute"},seconds:{lambda:(u,h)=>h>1?u+"s":u,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},t),a,y,o,l,i,d,C,E,U;m===String.prototype?U=document.querySelectorAll(n):U=n,e.enableUtc?y=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):y=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let D=u=>{let h=u,c=s(e,h),P;P=function(){let T,L,$,O,x=()=>{i=parseInt(l/86400,10),l%=86400,d=parseInt(l/3600,10),l%=3600,C=parseInt(l/60,10),E=parseInt(l%60,10)};e.enableUtc?(o=new Date,o=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate(),o.getUTCHours(),o.getUTCMinutes(),o.getUTCSeconds()))):o=new Date,l=Math.floor((y-o.getTime())/1e3),l>0?x():e.countUp?(l=(o.getTime()-y)/1e3,x()):(i=0,d=0,C=0,E=0,window.clearInterval(a),e.onEnd());let b=(w,j)=>w.hasOwnProperty("lambda")?w.lambda(w.root,j):w.root,S=e.words;if(T=b(S.days,i),L=b(S.hours,d),$=b(S.minutes,C),O=b(S.seconds,E),e.inline){let w="";e.removeZeroUnits&&i===0||(w+=`${i} ${T}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&d===0||(w+=`${d} ${L}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&d===0&&C===0||(w+=`${C} ${$}${e.inlineSeparator}`),w+=`${E} ${O}`,h.innerHTML=w.replace(/, $/,"")}else e.removeZeroUnits&&i===0?c.days.full.style.display="none":(c.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,c.days.word.textContent=T,c.days.full.style.display=""),e.removeZeroUnits&&i===0&&d===0?c.hours.full.style.display="none":(c.hours.amount.textContent=(e.zeroPad&&d.toString().length<2?"0":"")+d,c.hours.word.textContent=L,c.hours.full.style.display=""),e.removeZeroUnits&&i===0&&d===0&&C===0?c.minutes.full.style.display="none":(c.minutes.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,c.minutes.word.textContent=$,c.minutes.full.style.display=""),c.seconds.amount.textContent=(e.zeroPad&&E.toString().length<2?"0":"")+E,c.seconds.word.textContent=O,c.seconds.full.style.display=""},P(),a=window.setInterval(P,e.refresh)};g(U)?Array.prototype.forEach.call(U,u=>{D(u)}):D(U)};typeof module<"u"&&module.exports?module.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):window.simplyCountdown=r})();window.jQuery&&function(v,p){function g(f,s){p(f,s)}v.fn.simplyCountdown=function(f){return g(this.selector,f)}}(jQuery,simplyCountdown);const R=simplyCountdown;window.simplyCountdown=R;const W=setInterval(()=>{window.jQuery&&(clearInterval(W),A(()=>import("./demo.js"),[],import.meta.url))},100); diff --git a/docs/assets/main.css b/docs/assets/main.css new file mode 100644 index 0000000..8b8ec2d --- /dev/null +++ b/docs/assets/main.css @@ -0,0 +1 @@ +.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;gap:.25rem}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.inline{display:inline}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse))}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-800{--un-bg-opacity:1;background-color:rgb(31 41 55 / var(--un-bg-opacity))}.bg-gray-900{--un-bg-opacity:1;background-color:rgb(17 24 39 / var(--un-bg-opacity))}.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity))}.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity))}.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity))}.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-0{padding:0}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity))}.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity))}.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity))}.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity))}.color-white,.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none} diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 0000000..f2ed1d5 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,19 @@ +var z=(p,i)=>()=>(i||p((i={exports:{}}).exports,i),i.exports);var W=z((Y,M)=>{(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))C(f);new MutationObserver(f=>{for(const g of f)if(g.type==="childList")for(const n of g.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&C(n)}).observe(document,{childList:!0,subtree:!0});function S(f){const g={};return f.integrity&&(g.integrity=f.integrity),f.referrerPolicy&&(g.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?g.credentials="include":f.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function C(f){if(f.ep)return;f.ep=!0;const g=S(f);fetch(f.href,g)}})();/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/(function(p){let i=function(n){let o,d=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,o,d)=>{let e=document.createElement("div"),u=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(u),t.appendChild(r),e.appendChild(t),e.classList.add(o.sectionClass),e.classList.add(d),u.classList.add(o.amountClass),r.classList.add(o.wordClass),n.appendChild(e),{full:e,amount:u,word:r}},f=(n,o)=>{let d;return n.inline?(d=document.createElement("span"),d.classList.add(n.inlineClass),d):{days:C(o,n,"simply-days-section"),hours:C(o,n,"simply-hours-section"),minutes:C(o,n,"simply-minutes-section"),seconds:C(o,n,"simply-seconds-section")}},g=(n,o)=>{const d=Object.getPrototypeOf(n);let e=i({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(s,m)=>m>1?s+"s":s,root:"day"},hours:{lambda:(s,m)=>m>1?s+"s":s,root:"hour"},minutes:{lambda:(s,m)=>m>1?s+"s":s,root:"minute"},seconds:{lambda:(s,m)=>m>1?s+"s":s,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},o),u,r,t,h,a,c,w,U,D;d===String.prototype?D=document.querySelectorAll(n):D=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let O=s=>{let m=s,l=f(e,m),v;v=function(){let E,$,x,L,I=()=>{a=parseInt(h/86400,10),h%=86400,c=parseInt(h/3600,10),h%=3600,w=parseInt(h/60,10),U=parseInt(h%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,h=Math.floor((r-t.getTime())/1e3),h>0?I():e.countUp?(h=(t.getTime()-r)/1e3,I()):(a=0,c=0,w=0,U=0,window.clearInterval(u),e.onEnd());let b=(y,Z)=>y.hasOwnProperty("lambda")?y.lambda(y.root,Z):y.root,T=e.words;if(E=b(T.days,a),$=b(T.hours,c),x=b(T.minutes,w),L=b(T.seconds,U),e.inline){let y="";e.removeZeroUnits&&a===0||(y+=`${a} ${E}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0||(y+=`${c} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0&&w===0||(y+=`${w} ${x}${e.inlineSeparator}`),y+=`${U} ${L}`,m.innerHTML=y.replace(/, $/,"")}else e.removeZeroUnits&&a===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,l.days.word.textContent=E,l.days.full.style.display=""),e.removeZeroUnits&&a===0&&c===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&c.toString().length<2?"0":"")+c,l.hours.word.textContent=$,l.hours.full.style.display=""),e.removeZeroUnits&&a===0&&c===0&&w===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&w.toString().length<2?"0":"")+w,l.minutes.word.textContent=x,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&U.toString().length<2?"0":"")+U,l.seconds.word.textContent=L,l.seconds.full.style.display=""},v(),u=window.setInterval(v,e.refresh)};S(D)?Array.prototype.forEach.call(D,s=>{O(s)}):O(D)};typeof M<"u"&&M.exports?M.exports=g:window.simplyCountdown=g})();simplyCountdown;/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/(function(p){let i=function(n){let o,d=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,o,d)=>{let e=document.createElement("div"),u=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(u),t.appendChild(r),e.appendChild(t),e.classList.add(o.sectionClass),e.classList.add(d),u.classList.add(o.amountClass),r.classList.add(o.wordClass),n.appendChild(e),{full:e,amount:u,word:r}},f=(n,o)=>{let d;return n.inline?(d=document.createElement("span"),d.classList.add(n.inlineClass),d):{days:C(o,n,"simply-days-section"),hours:C(o,n,"simply-hours-section"),minutes:C(o,n,"simply-minutes-section"),seconds:C(o,n,"simply-seconds-section")}},g=(n,o)=>{const d=Object.getPrototypeOf(n);let e=i({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(s,m)=>m>1?s+"s":s,root:"day"},hours:{lambda:(s,m)=>m>1?s+"s":s,root:"hour"},minutes:{lambda:(s,m)=>m>1?s+"s":s,root:"minute"},seconds:{lambda:(s,m)=>m>1?s+"s":s,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},o),u,r,t,h,a,c,w,U,D;d===String.prototype?D=document.querySelectorAll(n):D=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let O=s=>{let m=s,l=f(e,m),v;v=function(){let E,$,x,L,I=()=>{a=parseInt(h/86400,10),h%=86400,c=parseInt(h/3600,10),h%=3600,w=parseInt(h/60,10),U=parseInt(h%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,h=Math.floor((r-t.getTime())/1e3),h>0?I():e.countUp?(h=(t.getTime()-r)/1e3,I()):(a=0,c=0,w=0,U=0,window.clearInterval(u),e.onEnd());let b=(y,Z)=>y.hasOwnProperty("lambda")?y.lambda(y.root,Z):y.root,T=e.words;if(E=b(T.days,a),$=b(T.hours,c),x=b(T.minutes,w),L=b(T.seconds,U),e.inline){let y="";e.removeZeroUnits&&a===0||(y+=`${a} ${E}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0||(y+=`${c} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0&&w===0||(y+=`${w} ${x}${e.inlineSeparator}`),y+=`${U} ${L}`,m.innerHTML=y.replace(/, $/,"")}else e.removeZeroUnits&&a===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,l.days.word.textContent=E,l.days.full.style.display=""),e.removeZeroUnits&&a===0&&c===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&c.toString().length<2?"0":"")+c,l.hours.word.textContent=$,l.hours.full.style.display=""),e.removeZeroUnits&&a===0&&c===0&&w===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&w.toString().length<2?"0":"")+w,l.minutes.word.textContent=x,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&U.toString().length<2?"0":"")+U,l.seconds.word.textContent=L,l.seconds.full.style.display=""},v(),u=window.setInterval(v,e.refresh)};S(D)?Array.prototype.forEach.call(D,s=>{O(s)}):O(D)};typeof M<"u"&&M.exports?M.exports=g:window.simplyCountdown=g})();const P=simplyCountdown;window.simplyCountdown=P;document.addEventListener("DOMContentLoaded",function(){let p=new Date;p.setMonth(p.getMonth()+1),P(".simply-countdown-one",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate(),enableUtc:!0}),P("#simply-countdown-losange",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate(),enableUtc:!1}),P(".simply-countdown-two",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate()-30,removeZeroUnits:!0}),P(".simply-countdown-inline",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate(),inline:!0});let i=new Date;i.setSeconds(i.getSeconds()+30),P(".sc-inline-header__cd",{year:i.getFullYear(),month:i.getMonth()+1,day:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),removeZeroUnits:!0,inline:!0,inlineSeparator:" - ",onEnd:()=>{let C=document.querySelector(".show-after-header-cd");C.classList.add("active"),document.querySelector(".sc-inline-header").classList.add("hide"),window.setInterval(()=>{C.classList.remove("active")},2e4)}});var S=new Date;P(".simply-countdown-countup",{year:S.getFullYear(),month:S.getMonth()+1,day:S.getDate(),hours:S.getHours(),minutes:S.getMinutes(),seconds:S.getSeconds(),countUp:!0})})});export default W(); diff --git a/docs/assets/simplyCountdown.iife.js b/docs/assets/simplyCountdown.iife.js index 795184a..a46682a 100644 --- a/docs/assets/simplyCountdown.iife.js +++ b/docs/assets/simplyCountdown.iife.js @@ -7,5 +7,5 @@ var simplyCountdown=function(){"use strict";/*! * Contributors : * - Justin Beasley * - Nathan Smith -*/return function(P){let w=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),f=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},b=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:f(s,n,"simply-days-section"),hours:f(s,n,"simply-hours-section"),minutes:f(s,n,"simply-minutes-section"),seconds:f(s,n,"simply-seconds-section")}},S=(n,s)=>{const a=Object.getPrototypeOf(n);let e=w({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,i,u,p,C,h;a===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let I=o=>{let c=o,l=b(e,c),$;$=function(){let v,x,D,E,L=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),C=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?L():e.countUp?(y=(t.getTime()-r)/1e3,L()):(i=0,u=0,p=0,C=0,window.clearInterval(d),e.onEnd());let g=(m,O)=>m.hasOwnProperty("lambda")?m.lambda(m.root,O):m.root,U=e.words;if(v=g(U.days,i),x=g(U.hours,u),D=g(U.minutes,p),E=g(U.seconds,C),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&p===0||(m+=`${p} ${D}${e.inlineSeparator}`),m+=`${C} ${E}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,l.days.word.textContent=v,l.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=x,l.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=D,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,l.seconds.word.textContent=E,l.seconds.full.style.display=""},$(),d=window.setInterval($,e.refresh)};T(h)?Array.prototype.forEach.call(h,o=>{I(o)}):I(h)};typeof module<"u"&&module.exports?module.exports=S:typeof define=="function"&&define.amd?define([],function(){return S}):window.simplyCountdown=S}(),window.jQuery&&function(P,w){function T(f,b){w(f,b)}P.fn.simplyCountdown=function(f){return T(this.selector,f)}}(jQuery,simplyCountdown),simplyCountdown}(); +*/return function(Z){let v=function(n){let s,i=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,s,i)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(i),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},I=(n,s)=>{let i;return n.inline?(i=document.createElement("span"),i.classList.add(n.inlineClass),i):{days:C(s,n,"simply-days-section"),hours:C(s,n,"simply-hours-section"),minutes:C(s,n,"simply-minutes-section"),seconds:C(s,n,"simply-seconds-section")}},x=(n,s)=>{const i=Object.getPrototypeOf(n);let e=v({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,m)=>m>1?l+"s":l,root:"day"},hours:{lambda:(l,m)=>m>1?l+"s":l,root:"hour"},minutes:{lambda:(l,m)=>m>1?l+"s":l,root:"minute"},seconds:{lambda:(l,m)=>m>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,a,u,p,f,h;i===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let D=l=>{let m=l,o=I(e,m),U;U=function(){let T,b,S,$,E=()=>{a=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),f=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?E():e.countUp?(y=(t.getTime()-r)/1e3,E()):(a=0,u=0,p=0,f=0,window.clearInterval(d),e.onEnd());let w=(c,L)=>c.hasOwnProperty("lambda")?c.lambda(c.root,L):c.root,g=e.words;if(T=w(g.days,a),b=w(g.hours,u),S=w(g.minutes,p),$=w(g.seconds,f),e.inline){let c="";e.removeZeroUnits&&a===0||(c+=`${a} ${T}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0||(c+=`${u} ${b}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0&&p===0||(c+=`${p} ${S}${e.inlineSeparator}`),c+=`${f} ${$}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&a===0?o.days.full.style.display="none":(o.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,o.days.word.textContent=T,o.days.full.style.display=""),e.removeZeroUnits&&a===0&&u===0?o.hours.full.style.display="none":(o.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,o.hours.word.textContent=b,o.hours.full.style.display=""),e.removeZeroUnits&&a===0&&u===0&&p===0?o.minutes.full.style.display="none":(o.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,o.minutes.word.textContent=S,o.minutes.full.style.display=""),o.seconds.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,o.seconds.word.textContent=$,o.seconds.full.style.display=""},U(),d=window.setInterval(U,e.refresh)};P(h)?Array.prototype.forEach.call(h,l=>{D(l)}):D(h)};typeof module<"u"&&module.exports?module.exports=x:window.simplyCountdown=x}(),simplyCountdown}(); //# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/docs/index.html b/docs/index.html index 134c997..e50413f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -10,10 +10,10 @@ - - - + + +
diff --git a/src/simplyCountdown.js b/src/simplyCountdown.js index 85176fa..331ff57 100644 --- a/src/simplyCountdown.js +++ b/src/simplyCountdown.js @@ -314,7 +314,6 @@ } else { window.simplyCountdown = simplyCountdown; } - }(window)); export default simplyCountdown; diff --git a/vite.config.js b/vite.config.js index 9f4746d..8862a16 100644 --- a/vite.config.js +++ b/vite.config.js @@ -37,18 +37,22 @@ const libConfig = { port: 3000, open: '/demo/index.html', watch: { - usePolling: true, - include: [ - 'src/**', - 'demo/**' - ] + include: ['src/**', 'demo/**'], + usePolling: true + }, + hmr: { + overlay: true } }, resolve: { alias: { '@': path.resolve(__dirname, './src'), - '@demo': path.resolve(__dirname, './demo') + '@demo': path.resolve(__dirname, './demo'), + 'simplyCountdown': path.resolve(__dirname, './src/simplyCountdown.js') } + }, + optimizeDeps: { + include: ['src/simplyCountdown.js'] } }; @@ -60,20 +64,14 @@ const docsConfig = { outDir: 'docs', emptyOutDir: true, rollupOptions: { - input: path.resolve(__dirname, 'demo/index.html'), + input: { + main: path.resolve(__dirname, 'demo/index.html') + }, output: { dir: 'docs', entryFileNames: 'assets/[name].js', chunkFileNames: 'assets/[name].js', - format: 'es', - assetFileNames: (assetInfo) => { - const info = assetInfo.name.split('.'); - const ext = info[info.length - 1]; - if (ext === 'css') { - return 'assets/[name][extname]'; - } - return 'assets/[name][extname]'; - } + assetFileNames: 'assets/[name].[ext]' } } }, @@ -92,31 +90,40 @@ const docsConfig = { 'btn-primary': 'text-white bg-indigo-500 hover:bg-indigo-700' } }), + { + name: 'pre-build', + buildStart: async () => { + // Créer le dossier assets s'il n'existe pas + await fs.ensureDir(path.resolve(__dirname, 'demo/assets')); + + // Copier simplyCountdown.js dans les assets de la démo + await fs.copy( + path.resolve(__dirname, 'src/simplyCountdown.js'), + path.resolve(__dirname, 'demo/assets/simplyCountdown.js') + ); + } + }, { name: 'post-build', closeBundle: async () => { - // Copier le fichier IIFE de la lib dans docs/assets + // Copier le fichier IIFE await fs.copy( path.resolve(__dirname, 'dist/simplyCountdown.iife.js'), path.resolve(__dirname, 'docs/assets/simplyCountdown.iife.js') ); - + // Déplacer index.html à la racine de docs const indexPath = path.resolve(__dirname, 'docs/demo/index.html'); if (await fs.pathExists(indexPath)) { const content = await fs.readFile(indexPath, 'utf-8'); - // Ajuster les chemins relatifs + // Ajuster les chemins relatifs et ajouter le script IIFE const updatedContent = content .replace(/src="\.?\/?/g, 'src="') .replace(/href="\.?\/?/g, 'href="') .replace(/assets\/assets\//g, 'assets/') .replace( - 'src="https://code.jquery.com/jquery-1.11.3.min.js"', - 'src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"' - ) - .replace( - 'src="https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.js"', - 'src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"' + '', + '\n ' ); await fs.writeFile(path.resolve(__dirname, 'docs/index.html'), updatedContent); @@ -125,22 +132,15 @@ const docsConfig = { } } ], - server: { - port: 3000, - open: '/demo/index.html', - watch: { - usePolling: true, - include: [ - 'src/**', - 'demo/**' - ] - } - }, resolve: { alias: { '@': path.resolve(__dirname, './src'), - '@demo': path.resolve(__dirname, './demo') + '@demo': path.resolve(__dirname, './demo'), + 'simplyCountdown': path.resolve(__dirname, './src/simplyCountdown.js') } + }, + optimizeDeps: { + include: ['src/simplyCountdown.js'] } }; From 17666f8a021e7d688e4b9653126c0ccff41cc2b8 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Sun, 22 Dec 2024 23:23:51 +0100 Subject: [PATCH 06/75] improve themes and doc --- demo/css/simplyCountdown.theme.cyberpunk.css | 2 +- demo/css/simplyCountdown.theme.dark.css | 4 +- demo/css/simplyCountdown.theme.default.css | 4 +- demo/css/simplyCountdown.theme.losange.css | 2 +- demo/index.html | 108 +++++++++++-------- docs/assets/main.css | 2 +- docs/index.html | 70 +++++++----- package-lock.json | 8 +- package.json | 4 +- src/simplyCountdown.js | 1 + 10 files changed, 119 insertions(+), 86 deletions(-) diff --git a/demo/css/simplyCountdown.theme.cyberpunk.css b/demo/css/simplyCountdown.theme.cyberpunk.css index f214fe2..71cf2fb 100644 --- a/demo/css/simplyCountdown.theme.cyberpunk.css +++ b/demo/css/simplyCountdown.theme.cyberpunk.css @@ -105,7 +105,7 @@ } .simply-countdown-cyber > .simply-section .simply-word { - font-size: 0.7rem; + font-size: 0.6rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.2em; diff --git a/demo/css/simplyCountdown.theme.dark.css b/demo/css/simplyCountdown.theme.dark.css index 352fbff..0d4dcb6 100644 --- a/demo/css/simplyCountdown.theme.dark.css +++ b/demo/css/simplyCountdown.theme.dark.css @@ -34,7 +34,7 @@ .simply-countdown-dark > .simply-section > div { display: flex; flex-direction: column; - gap: 0.35rem; + line-height: 1; align-items: center; } @@ -47,7 +47,7 @@ } .simply-countdown-dark > .simply-section .simply-word { - font-size: 0.7rem; + font-size: 0.6rem; font-weight: 500; color: #94a3b8; text-transform: uppercase; diff --git a/demo/css/simplyCountdown.theme.default.css b/demo/css/simplyCountdown.theme.default.css index 8ec8656..ffd9929 100644 --- a/demo/css/simplyCountdown.theme.default.css +++ b/demo/css/simplyCountdown.theme.default.css @@ -34,7 +34,7 @@ .simply-countdown > .simply-section > div { display: flex; flex-direction: column; - gap: 0.35rem; + line-height: 1; align-items: center; } @@ -47,7 +47,7 @@ } .simply-countdown > .simply-section .simply-word { - font-size: 0.7rem; + font-size: 0.6rem; font-weight: 500; color: #64748b; text-transform: uppercase; diff --git a/demo/css/simplyCountdown.theme.losange.css b/demo/css/simplyCountdown.theme.losange.css index 931da86..e3ab6fe 100644 --- a/demo/css/simplyCountdown.theme.losange.css +++ b/demo/css/simplyCountdown.theme.losange.css @@ -29,7 +29,7 @@ transform: rotate(45deg); display: flex; flex-direction: column; - gap: 0.25rem; + line-height: 1.2; } .simply-countdown-losange > .simply-section .simply-amount, diff --git a/demo/index.html b/demo/index.html index 70d21f5..62fb35b 100644 --- a/demo/index.html +++ b/demo/index.html @@ -11,13 +11,17 @@ - + + + + +
@@ -42,7 +46,10 @@

simplyCountdown.js

-

Installation

+

+ + Installation +

@@ -63,7 +70,7 @@

-
+ Examples

@@ -99,56 +106,71 @@

Losange Theme

-
+ Usage

-
-simplyCountdown('[CSS-SELECTOR]', {
-    year: 2025, // required
-    month: 6, // required
-    day: 28, // required
-    hours: 0, // Default is 0 [0-23] integer
-    minutes: 0, // Default is 0 [0-59] integer
-    seconds: 0, // Default is 0 [0-59] integer
-    words: { //words displayed into the countdown
-        days: { singular: 'day', plural: 'days' },
-        hours: { singular: 'hour', plural: 'hours' },
-        minutes: { singular: 'minute', plural: 'minutes' },
-        seconds: { singular: 'second', plural: 'seconds' }
-    },
-    plural: true, //use plurals
-    inline: false, //set to true to display inline
-    inlineClass: 'simply-countdown-inline', //inline css span class
-    enableUtc: false, //Use UTC or not - default : false
-    onEnd: function() { return; }, //Callback on countdown end
-    refresh: 1000, //default refresh every 1s
-    sectionClass: 'simply-section', //section css class
-    amountClass: 'simply-amount', //amount css class
-    wordClass: 'simply-word', //word css class
-    zeroPad: false,
-    countUp: false
-});
+                    
+                        
+    simplyCountdown('[CSS-SELECTOR]', {
+        year: 2025, // required
+        month: 6, // required
+        day: 28, // required
+        hours: 0, // Default is 0 [0-23] integer
+        minutes: 0, // Default is 0 [0-59] integer
+        seconds: 0, // Default is 0 [0-59] integer
+        words: { //words displayed into the countdown
+            days: { singular: 'day', plural: 'days' },
+            hours: { singular: 'hour', plural: 'hours' },
+            minutes: { singular: 'minute', plural: 'minutes' },
+            seconds: { singular: 'second', plural: 'seconds' }
+        },
+        plural: true, //use plurals
+        inline: false, //set to true to display inline
+        inlineClass: 'simply-countdown-inline', //inline css span class
+        enableUtc: false, //Use UTC or not - default : false
+        onEnd: function() { return; }, //Callback on countdown end
+        refresh: 1000, //default refresh every 1s
+        sectionClass: 'simply-section', //section css class
+        amountClass: 'simply-amount', //amount css class
+        wordClass: 'simply-word', //word css class
+        zeroPad: false,
+        countUp: false
+    });
+                        
                     

-
-
-

- Made with

by - Vincent Loy -

-

- Like simplyCountdown? - - Give it a star on Github!

- -

+ + + diff --git a/docs/assets/main.css b/docs/assets/main.css index 8b8ec2d..63ede3b 100644 --- a/docs/assets/main.css +++ b/docs/assets/main.css @@ -1 +1 @@ -.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;gap:.25rem}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.inline{display:inline}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse))}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-800{--un-bg-opacity:1;background-color:rgb(31 41 55 / var(--un-bg-opacity))}.bg-gray-900{--un-bg-opacity:1;background-color:rgb(17 24 39 / var(--un-bg-opacity))}.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity))}.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity))}.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity))}.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-0{padding:0}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity))}.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity))}.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity))}.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity))}.color-white,.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none} +.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;gap:.25rem}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.inline{display:inline}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse))}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-800{--un-bg-opacity:1;background-color:rgb(31 41 55 / var(--un-bg-opacity))}.bg-gray-900{--un-bg-opacity:1;background-color:rgb(17 24 39 / var(--un-bg-opacity))}.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity))}.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity))}.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity))}.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-0{padding:0}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity))}.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity))}.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity))}.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity))}.color-white,.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none} diff --git a/docs/index.html b/docs/index.html index e50413f..345666a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,6 +12,11 @@ + + + + + @@ -38,7 +43,10 @@

simplyCountdown.js

-

Installation

+

+ + Installation +

@@ -59,7 +67,7 @@

-
+ Examples

@@ -95,36 +103,38 @@

Losange Theme

-
+ Usage

-
-simplyCountdown('[CSS-SELECTOR]', {
-    year: 2025, // required
-    month: 6, // required
-    day: 28, // required
-    hours: 0, // Default is 0 [0-23] integer
-    minutes: 0, // Default is 0 [0-59] integer
-    seconds: 0, // Default is 0 [0-59] integer
-    words: { //words displayed into the countdown
-        days: { singular: 'day', plural: 'days' },
-        hours: { singular: 'hour', plural: 'hours' },
-        minutes: { singular: 'minute', plural: 'minutes' },
-        seconds: { singular: 'second', plural: 'seconds' }
-    },
-    plural: true, //use plurals
-    inline: false, //set to true to display inline
-    inlineClass: 'simply-countdown-inline', //inline css span class
-    enableUtc: false, //Use UTC or not - default : false
-    onEnd: function() { return; }, //Callback on countdown end
-    refresh: 1000, //default refresh every 1s
-    sectionClass: 'simply-section', //section css class
-    amountClass: 'simply-amount', //amount css class
-    wordClass: 'simply-word', //word css class
-    zeroPad: false,
-    countUp: false
-});
+                    
+                        
+    simplyCountdown('[CSS-SELECTOR]', {
+        year: 2025, // required
+        month: 6, // required
+        day: 28, // required
+        hours: 0, // Default is 0 [0-23] integer
+        minutes: 0, // Default is 0 [0-59] integer
+        seconds: 0, // Default is 0 [0-59] integer
+        words: { //words displayed into the countdown
+            days: { singular: 'day', plural: 'days' },
+            hours: { singular: 'hour', plural: 'hours' },
+            minutes: { singular: 'minute', plural: 'minutes' },
+            seconds: { singular: 'second', plural: 'seconds' }
+        },
+        plural: true, //use plurals
+        inline: false, //set to true to display inline
+        inlineClass: 'simply-countdown-inline', //inline css span class
+        enableUtc: false, //Use UTC or not - default : false
+        onEnd: function() { return; }, //Callback on countdown end
+        refresh: 1000, //default refresh every 1s
+        sectionClass: 'simply-section', //section css class
+        amountClass: 'simply-amount', //amount css class
+        wordClass: 'simply-word', //word css class
+        zeroPad: false,
+        countUp: false
+    });
+                        
                     
@@ -146,5 +156,7 @@

+ + diff --git a/package-lock.json b/package-lock.json index 4aa488d..70d1f31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,15 +8,13 @@ "name": "simplycountdown", "version": "3.0.0", "license": "MIT", - "dependencies": { - "@unocss/reset": "^0.65.2" - }, "devDependencies": { "@iconify-json/lucide": "^1.2.20", "@unocss/preset-attributify": "^0.58.0", "@unocss/preset-icons": "^0.65.2", "@unocss/preset-typography": "^0.58.9", "@unocss/preset-wind": "^0.58.9", + "@unocss/reset": "^0.65.2", "fs-extra": "^11.2.0", "terser": "^5.24.0", "unocss": "^0.65.2", @@ -1694,6 +1692,7 @@ "version": "0.65.2", "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.65.2.tgz", "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -4598,7 +4597,8 @@ "@unocss/reset": { "version": "0.65.2", "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.65.2.tgz", - "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==" + "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==", + "dev": true }, "@unocss/rule-utils": { "version": "0.58.9", diff --git a/package.json b/package.json index 031b6c3..4b8094f 100644 --- a/package.json +++ b/package.json @@ -60,12 +60,10 @@ "@unocss/preset-icons": "^0.65.2", "@unocss/preset-typography": "^0.58.9", "@unocss/preset-wind": "^0.58.9", + "@unocss/reset": "^0.65.2", "fs-extra": "^11.2.0", "terser": "^5.24.0", "unocss": "^0.65.2", "vite": "^6.0.0" - }, - "dependencies": { - "@unocss/reset": "^0.65.2" } } diff --git a/src/simplyCountdown.js b/src/simplyCountdown.js index 331ff57..7445a22 100644 --- a/src/simplyCountdown.js +++ b/src/simplyCountdown.js @@ -18,6 +18,7 @@ * @param output * @returns {*|{}} */ + let extend = function (output) { let obj; let out = output || {}; From 5370589b9cd8979c281777a442a82196c46ab8e2 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Mon, 23 Dec 2024 21:02:55 +0100 Subject: [PATCH 07/75] prepare for V3 --- .eslintrc | 23 - .github/workflows/pages.yml | 34 - .gitignore | 6 - .nvmrc | 1 - CONTRIBUTING.md | 9 - LICENSE | 21 - README.md | 222 - bun.lockb | Bin 0 -> 87734 bytes demo/assets/simplyCountdown.js | 319 - demo/css/demo-only/prism.css | 135 - demo/js/demo.js | 78 - demo/main.js | 15 - dist/simplyCountdown.es.js | 116 - dist/simplyCountdown.es.js.map | 1 - dist/simplyCountdown.iife.js | 11 - dist/simplyCountdown.iife.js.map | 1 - dist/simplyCountdown.umd.js | 11 - dist/simplyCountdown.umd.js.map | 1 - dist/themes/cyber.min.css | 0 dist/themes/dark.min.css | 0 dist/themes/default.min.css | 0 dist/themes/losange.min.css | 0 docs/assets/main.css | 1 - docs/assets/main.js | 19 - docs/assets/simplyCountdown.iife.js | 11 - docs/dist/assets/main.min.css | 0 docs/dist/assets/main.min.js | 0 docs/dist/favicon.ico | 0 docs/dist/index.html | 0 docs/src/assets/js/examples.js | 0 docs/src/assets/js/highlight.js | 0 docs/src/assets/styles/highlight.css | 0 docs/src/assets/styles/main.css | 0 docs/{ => src}/index.html | 86 +- docs/src/main.js | 59 + docs/src/style.css | 9 + demo/index.html => index.html | 23 +- package-lock.json | 5839 ----------------- package.json | 33 +- postcss.config.js | 6 + project-structure.md | 72 + scripts/serve.js | 51 - src/core/simplyCountdown.js | 324 + src/main.js | 5 + src/simplyCountdown.js | 320 - .../themes/custom_example.css | 0 .../themes/cyber.css | 0 .../themes/dark.css | 0 .../themes/default.css | 0 .../themes/losange.css | 0 src/types/index.d.ts | 0 tailwind.config.js | 25 + tsconfig.json | 23 + uno.config.js | 84 - vite.config.js | 158 +- 55 files changed, 625 insertions(+), 7527 deletions(-) delete mode 100644 .eslintrc delete mode 100644 .github/workflows/pages.yml delete mode 100644 .nvmrc delete mode 100644 CONTRIBUTING.md delete mode 100644 README.md create mode 100755 bun.lockb delete mode 100644 demo/assets/simplyCountdown.js delete mode 100644 demo/css/demo-only/prism.css delete mode 100644 demo/js/demo.js delete mode 100644 demo/main.js create mode 100644 dist/themes/cyber.min.css create mode 100644 dist/themes/dark.min.css create mode 100644 dist/themes/default.min.css create mode 100644 dist/themes/losange.min.css delete mode 100644 docs/assets/main.css delete mode 100644 docs/assets/main.js delete mode 100644 docs/assets/simplyCountdown.iife.js create mode 100644 docs/dist/assets/main.min.css create mode 100644 docs/dist/assets/main.min.js create mode 100644 docs/dist/favicon.ico create mode 100644 docs/dist/index.html create mode 100644 docs/src/assets/js/examples.js create mode 100644 docs/src/assets/js/highlight.js create mode 100644 docs/src/assets/styles/highlight.css create mode 100644 docs/src/assets/styles/main.css rename docs/{ => src}/index.html (66%) create mode 100644 docs/src/main.js create mode 100644 docs/src/style.css rename demo/index.html => index.html (86%) delete mode 100644 package-lock.json create mode 100644 postcss.config.js create mode 100644 project-structure.md delete mode 100644 scripts/serve.js create mode 100644 src/core/simplyCountdown.js create mode 100644 src/main.js delete mode 100644 src/simplyCountdown.js rename demo/css/simplyCountdown.theme.custom.css => src/themes/custom_example.css (100%) rename demo/css/simplyCountdown.theme.cyberpunk.css => src/themes/cyber.css (100%) rename demo/css/simplyCountdown.theme.dark.css => src/themes/dark.css (100%) rename demo/css/simplyCountdown.theme.default.css => src/themes/default.css (100%) rename demo/css/simplyCountdown.theme.losange.css => src/themes/losange.css (100%) create mode 100644 src/types/index.d.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.json delete mode 100644 uno.config.js diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index f504fb7..0000000 --- a/.eslintrc +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "airbnb-base/legacy", - "rules": { - "indent": ["error", 4], // Use 4 spaces for indentation - "func-names": ["error", "never"], // Allow anonymous functions - "no-param-reassign": ["error", { "props": false }], // Allow parameter reassignment for object properties - "quotes": "off", // Disable quotes enforcement - "object-curly-spacing": ["off"], // Disable spacing inside curly braces - "block-spacing": ["off"], // Disable spacing enforcement inside blocks - "semi": ["off"], // Allow missing semicolons - "no-plusplus": ["off"], // Allow ++ and -- operators - "prefer-arrow-callback": ["off"], // Allow traditional function expressions - "vars-on-top": ["off"], // Allow variable declarations anywhere - "consistent-return": ["off"], // Allow inconsistent returns in functions - "no-loop-func": ["off"], // Allow functions inside loops - "object-shorthand": ["off"], // Allow verbose object property declarations - "no-prototype-builtins": ["off"], // Allow direct use of Object.prototype methods - "prefer-template": ["off"] // Allow string concatenation with `+` - }, - "parserOptions": { - "ecmaVersion": 6 - } -} diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index 3821d82..0000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Deploy GitHub Pages - -on: - push: - branches: [ "master" ] - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Pages - uses: actions/configure-pages@v4 - - name: Upload artifact - uses: actions/upload-pages-artifact@v2 - with: - path: './docs' - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v3 diff --git a/.gitignore b/.gitignore index c8229fc..3c3629e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1 @@ node_modules -bower_components -yarn-error.log - -# IntelliJ project files -.idea - diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index bb8c76c..0000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v22.11.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index c264d10..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,9 +0,0 @@ -### Contributing -- Give it a [star](https://github.com/VincentLoy/simplyCountdown.js/stargazers) ! -- [Report a bug](https://github.com/VincentLoy/simplyCountdown.js/issues) -- Tweet about it :) - -#### Pull Requests -- **Solve a problem** -- For code enhancement, use [ESLint](https://eslint.org/) as a code quality tool. -- Small is better than Big. diff --git a/LICENSE b/LICENSE index 80536d6..e69de29 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Vincent Loy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 6e01b55..0000000 --- a/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# simplyCountdown.js - -## Why another countdown ? - -I developed this little library in a boring day. I regularly use this kind of Javascript's libraries to display countdowns on websites and this one exactly meets the needs that I have. It is perfect to make 'under construction' pages, etc. - -This is a very (very) basic Javascript CountDown. - -## Getting Started - -install via npm or bower - -``` -$ yarn add simplycountdown.js - -// or - -$ npm install simplycountdown.js -``` - -### Insert simplyCountdown to your HTML - -```html - - -``` -```javascript - // This is an example with default parameters - - simplyCountdown('[CSS-SELECTOR]', { - year: 2015, // Target year (required) - month: 6, // Target month [1-12] (required) - day: 28, // Target day [1-31] (required) - hours: 0, // Target hour [0-23], default: 0 - minutes: 0, // Target minute [0-59], default: 0 - seconds: 0, // Target second [0-59], default: 0 - words: { // Custom labels, with lambda for plurals - days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root }, - hours: { root: 'hour', lambda: (root, n) => n > 1 ? root + 's' : root }, - minutes: { root: 'minute', lambda: (root, n) => n > 1 ? root + 's' : root }, - seconds: { root: 'second', lambda: (root, n) => n > 1 ? root + 's' : root } - }, - plural: true, // Use plurals for labels - inline: false, // Inline format: e.g., "24 days, 4 hours, 2 minutes" - inlineSeparator: ', ', // Separator for inline format, default: ", " - inlineClass: 'simply-countdown-inline', // CSS class for inline countdown - enableUtc: false, // Use UTC time if true - onEnd: function () {}, // Callback when countdown ends - refresh: 1000, // Refresh interval in ms, default: 1000 - sectionClass: 'simply-section', // CSS class for each countdown section - amountClass: 'simply-amount', // CSS class for numeric values - wordClass: 'simply-word', // CSS class for unit labels - zeroPad: false, // Pad numbers with leading zero - removeZeroUnits: false, // Remove units with zero value - countUp: false // Count up after reaching zero - }); - - // Also, you can init with already existing Javascript Object. - let myElement = document.querySelector('.my-countdown'); - simplyCountdown(myElement, { /* options */ }); - - let multipleElements = document.querySelectorAll('.my-countdown'); - simplyCountdown(multipleElements, { /* options */ }); -``` - -### You can use it with jQuery too (not required) - -```javascript -// jQuery Example -$('[CSS-SELECTOR]').simplyCountdown({ - year: 2019, // required - month: 6, // required - day: 28, // required - ... -}); -``` - -## Parameters -| Parameter | Type | Description | Default | -|--------------------|-----------------|---------------------------------------------------------------------------------------------|-----------------------------| -| `year` | Number (required) | The target year for the countdown. | - | -| `month` | Number (required) | The target month [1-12] for the countdown. | - | -| `day` | Number (required) | The target day [1-31] for the countdown. | - | -| `hours` | Number | The target hour [0-23]. | 0 | -| `minutes` | Number | The target minute [0-59]. | 0 | -| `seconds` | Number | The target second [0-59]. | 0 | -| `words` | Object | Custom labels for the units (days, hours, minutes, seconds) with optional lambda for pluralization. | `{ days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root }, ... }` | -| `plural` | Boolean | Whether to use plural forms for the unit labels. | `true` | -| `inline` | Boolean | Set to `true` for a simple inline countdown (e.g., "24 days, 4 hours, 2 minutes"). | `false` | -| `inlineSeparator` | String | Separator used in the inline countdown format. | `, ` | -| `inlineClass` | String | CSS class applied to the inline countdown container. | `"simply-countdown-inline"` | -| `enableUtc` | Boolean | Set to `true` to use UTC time for the countdown calculations. | `false` | -| `onEnd` | Function | Callback function executed when the countdown ends. | `() => {}` | -| `refresh` | Number | The countdown refresh interval in milliseconds. | `1000` | -| `sectionClass` | String | CSS class applied to each countdown section (days, hours, minutes, seconds). | `"simply-section"` | -| `amountClass` | String | CSS class applied to the numeric value of each countdown section. | `"simply-amount"` | -| `wordClass` | String | CSS class applied to the unit label of each countdown section. | `"simply-word"` | -| `zeroPad` | Boolean | Whether to pad the numeric values with leading zeros (e.g., "05"). | `false` | -| `removeZeroUnits` | Boolean | Remove units with zero value (e.g., remove "0 days" if days are zero). | `false` | -| `countUp` | Boolean | Count up after reaching zero if set to `true`. | `false` | - -## Easy to customize - -You can easly customize the countdown using the css theme starter file or create your own like so : - -/!\ The following theme template works with default class in parameters. - - ```css - /* - * Project : simply-countdown - * File : simplyCountdown.theme.custom - * Author : Your Name - */ - - .simply-countdown { - /* The countdown */ - } - .simply-countdown > .simply-section { - /* coutndown blocks */ - } - - .simply-countdown > .simply-section > div { - /* countdown block inner div */ - } - - .simply-countdown > .simply-section .simply-amount, - .simply-countdown > .simply-section .simply-word { - /* amounts and words */ - } - - .simply-countdown > .simply-section .simply-amount { - /* amounts */ - } - - .simply-countdown > .simply-section .simply-word { - /* words */ - } -``` - -### Contributing -- Give it a [star](https://github.com/VincentLoy/simplyCountdown.js/stargazers) ! -- [Report a bug](https://github.com/VincentLoy/simplyCountdown.js/issues) -- Tweet about it :) - -#### Pull Requests -- **Solve a problem** -- For code enhancement, use [ESLint](https://eslint.org/) as a code quality tool. -- Small is better than Big. - -### Changelog - -#### 2.0.1 -Update all 2015 npm dependencies and rebuild the plugin with new deps. - -#### 2.0.0 -This version may have breaking changes, if your website is working well with 1.7.0, you may want to stay on the previous version. -- fix plurals in a generic way [#52](https://github.com/VincentLoy/simplyCountdown.js/pull/52) - - Thumbs up to [mira01](https://github.com/mira01) that fixed [#51](https://github.com/VincentLoy/simplyCountdown.js/issues/51), [#23](https://github.com/VincentLoy/simplyCountdown.js/issues/23) & [#42](https://github.com/VincentLoy/simplyCountdown.js/issues/42) ! -- Added the `inlineSeparator` parameter. Previously, the inline mode only supported a comma-separated countdown. Now, you can customize the separator, using options like |, /, -, or any character that suits your needs. -- Fix potential UTC-related issues (fingers crossed!). - - -#### 1.7.0 -- Countdowns can be initialized directly with HTML elements with variables like - - document.getElementById - - document.querySelector - - document.querySelectorAll - - etc... - -##### 1.6.0 -- Compatibility with languages like german for plurals ([PR #15](https://github.com/VincentLoy/simplyCountdown.js/pull/15)), thanks to [q30t](https://github.com/q30t) - -##### 1.5.0 -- Resolve #10 - Add countup support -- Upgrade yarn dev dependencies -- Some minor code reformatting - -##### 1.4.0 -- Remove bower support -- migrate from LESS to SASS (scss) / for demo and themes -- migrate lib from ES5 to a really basic ES6 - - Remove JSLint support - - Add ESLint support based on customized [airbnb rules](https://www.npmjs.com/package/eslint-config-airbnb-base) - -##### 1.3.2 -- add zeroPad parameter -```javascript -zeroPad: false //default -``` -- fixed Flash of Unstyled Content - -##### 1.3.1 -- clean some code -- add refresh parameter -```javascript -refresh: 1000 //default -``` - -##### 1.3.0 -- Add onEnd callback -```javascript -onEnd: function () { - // some code -} -``` - -##### 1.2.0 -- Resolve #4 - Add UTC support adding enableUtc parameter -```javascript -enableUtc: true //true is default -``` -##### 1.1.1 -- Resolve #3 - Remove ID Only compatibility - -##### 1.1.0 -- Add hours, minutes, seconds in available settings to set the target Date - -##### 1.0.1 -- Fix console error when not using jQuery - -##### 1.0.0 -- initial release diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..3fd9789b5a72fdbc02fe81df09e3239a6ea70385 GIT binary patch literal 87734 zcmeFac|2BK+Xj3YG9>dnWh|7LOp$q>r=mhKWG1r=Au<(7Ql_GkDH4^6$V`Kw2q9yV zF;hhP*5caFv)}i7p8MAApYQwq-t*V$xYpY1IL>p8d+mK)-8UD9kdK$A&}m0EAv-r; z_R~IYyFn6gakp`{cXY86uy^-#we}Y972b`D!C>4+9@X>F^RO6oMMx|EGX3(DZ>WUw z)#64g^WTb$@`n0lHbcxjWioFm_(2eH>kEF)H{N3_U0p1V{&v0gJd;oWk2G z{|Jy4T(1R41F#s2X;_THq8Apeu&9kiNi1>$qy~ISEN*~qf%!=+_5h>;`9>^0#^N0; zCSuXk-NnVn1A~zTjpGLO8L+st2ZP}P`S$=h0hR(}2Y3x28$cf{9>t;*z`dZH35)9_ zTlvobSwVRX7IOfyfP5?#-LPm3kQtOq17rfo4v-NbH9*+!m%y07e)qQX^s@8BV8lTu z!uDkXgyl&9LDkTM0Eq!w+qiqW0S+z5!|_-Fe?dJzFi6nPDS&XihCn$)e}=7b2?HFc zgLxDgdJaBCwvfgPohBeE?=1)Ps3KP!8ke26;+= zXI$J*!}=dVqhTD404V@o1Dyiv$6%2ebRL|49snWV!`j z!G^d2u7e>AO$B+_F9`slzZy^v;sr2CAio13tp9g9yZ3L!@xOJDaq_hDa(D5y!?^Nn z%_|##P}dY7jNif9%iRwQPzr|n>VO%G)#nSAaY$_ke>4EEnYAcsqmZu)P-8dd2`@Jq3X+-P4}dHefnn zo`O6q{{;~G*B9Kn?&Rq02=yGj1U9DtzR*@Zd91DkKp3B^o#z=lQ49tt?*R4S{74es zYDWz=KMC@1Tzo~g#@F83%ljgUs9iJ>QUdhRiD;z=msJUAb(wUOYb{C7}pp;SpEi!szT0tJ_dw@LD0rwm*b3pXie7Mq<-w}Xd z35GTSg!|VTqNB2Py%*%+_!WXY?1waf&>vVI-T@wV7;z96J;)>L=d zM<=~vG&aiaaR*uHvvG6Qbj49{$tn90E@td#dNnT4OfpRhUJv>eJ7bk{T~>F^Yn)8*9Y({$^^~|ss=NozJCH&f#K&*5u+9fyCy<|6t%CeHAIw04wmCwdlQXc=wL-D zCIascTbFkW zxUA>&amIo=L!&*@c>1F?Ny&%XMflfWuXl;Q_>ZOQ^&TW?y0o6(3~d4p;&?;O z&rAl$YSG>5F!~Vr-ONXM*ALs#ZzD0n^9zL&xmK?(-&^*#H708yHHzsf+H0n@``jls ziZ?a_0rtl(&oG(mspjwL+W4*9Db7em8+{JD)D`w_j zous4fh%|ja#eL45!km?Jh^v~I^VxBn^iOI(Zh8E2!FlMxsnT2ME>h+)W0N^$d)%~N zwpv9`s3x1SrIzOOS#CK65^||_v-~#A#am;4r(@nAVf0OFb?SfXAmhXz3d~go=%k(S`!UH z1Quy>m+rYuy4IzcjT^o;JvH_F=N0SaYMO3>=e6T(atqZZEfj|w@XbU`-V)^39}v=5 zUpYZDACum74FBk!YQG5kFM|3$hjwQS^+phmh-F@Up`81REJsBC?!KT4luU~`ROz@^ z?XMu^Rs3nahfNu@-tN);aQyKsU!3i=l8WBu&ryVYnYwo#-9OBxVR`PVmbUM()_Y;S z%NFF^swVQu{3olzZA%MMwU3pM?j4P}oF{OmI@W?&Ug)_B`NR9(m)l}(FFiTx*q1rO z$(F*%%4rn0;b5dEX8YEA@lZs&o^YAA@j=c z^AnPfWb+yp!TE>GL-ug4f7HTNHF*~;rPVScn#Sa>U7On}HRwB_AN|DhOvlw*sMyzH%ATdLI%dhw~*vXVymh4I3S&SuKkl3p(FWzoe5p(`FkK<;1=2 zQu|BygufL7PlWY{+oA?4^EmTkFTJZPqgn4N!I-!D&nubN_qYHz5SmZaI_wp`AMwX zg~X}%NiTcvAqhxIT>6A@m?rBFM%K^m_U9h$WNz^{YprLm9E)#oTa{kXbuwb^WeS}l z&%~<|CFjKWR2njCEAXjj*OigtfcxZ53>Qnz0tk+Hp}PR$g9Oe7+cJbt3<3d1rcjv2 z!=~*BAbdr@2S>0__{0qTgIKm@2tNVvl>i?A29`nGjv@SZKmbRqO+MuQDW4e#fwN91 z(stO6?HJ{n`5d+6zJBIL2fKJof0Y4A$b#}mC+96*NG@2^KUBP!}B{h#$muwVDlMZI|2xQ5b)vt3;FxDL&VlW_-f$Lt_%3E7;1p*whZCt z0s@R5l3?4Bet`MEGK4=0_~2FWX8%DhQvO$5cnzt?3BDwP{SWh?D>k3u;Pt;Vgl`Y{ zVt@~hA@IHbwhiIm1bhu_`{6UxpN>Bzc*(4f;)Aahwq=O_tAK9=_^|Kb_-)q^{wUyU z0X~fVpY*>V_#P1Qp>iek$ODuYN*d?9l#n{xPNTd5dUo8 z%MoP#ZPz#Sf$$vxAI1;I9+^Yii2>o?LivaM?Ha=G2Ye-L|H1zM)A_^3vNeAp4{9Rg z@ON<_{sRDC1o#KX;7#s!*C4{527D91N8(0syZ#lyp&RZ$NdNyG54n!`zXkYk{9(Jd z>lK)|RiXZkHTtk1_f8l_y1pGr^+kJNp>mvT^u>O(zE>aHb{FNc~qB*zXN7nCOanRQg z{#(F@=RaiK|7rhIbN&1L3-$k$uMhYNz(4GJ7}KBje+l3p1^n&ufQwB-+E2*6wSOZ0 zk6iydMEI&$K8*iQVnFy;0AC5jkL3Tf|M~zQjvwT~1moC_A^sTlZOtFp{_XmP`Uu|$ z@S%TX|JaUiG(R58hx6~B_-_Gx1>k=dmXE{*ef*Un^%(a5`~4kK_E$XQ8dCQp;KTbb z-2Y%1QjXO7Z-~@O#qweMVcB;30O5B7KHPudxI^xr@>zMd_J7C&k3#UbUE4Cm|0Te; z2mZI~7ZFGJ^MH@cUw949qwN^N7v#lYRDpk(2d|R;xcy#$FOKCyzlbjU{8xt5D+7Eb zZ2Ms!Amx9>h1ZaJ%YYB}FF5}HgnyiGXZOEcz=!Sslf4Tae;?LAGJoNw|!}*KEzuk3!@Hr0d zZ2z|bd^rE%@7A{K8y$ZG;G@?cytW-f;>QIKuSoxGx9_1o!WRX618n~xWq;y79Pr`( z`zOB9{;L6BWe0qGf&V%FMB51-)qYLDhw~S<9ht-1kwE(D0^p<9?{@nE;lIMh5BFU- zf3`b^5I%|ER{z2KFSI}9n*ly-|91ENEieC`KN)}zpWmTh`0jJNI!OHQ03W{pK-TY{ z_8*zh*7!rcf6{+ifDh*{+le|r8h0es~77sm9b>n8{Bk^4W49hryV<6j!m{vTNXNd8ax5@7NvVEYfz z_)Evwi%8u_z*j@@|8)Mn27LJb8@3&Mm9uR_{BHn0od3wUBkSPrgb=lKutthve}jmB z61lDU2dn>+{xbx8xc;GUcz%QZupLAECjh=W;3M;fsihhD_?I#WzYFjcvHlqVW4mWa zgnt4AZ-Vs?9dFAysE6>&0bd#Lkv#QZM*Z)LNc}ayH^lmfYhUNzRsQl5!q)*eZ#aJ; z7nc2L{I>xgJi>0Sf2cwFmtOyU5%JHiu=V?Y*zf;@9}M_#|NE!>+8y$l761MFfqxV~ z;DasrAIJX`@Ra}`=}!bfcmAaz^;Q8N?%#0z!T7gp2wzQU>-iC`TPBeHbp6BwK5YL# zTcT`16nF z&kL-7IBx%B{{8~|owQ$B_20jL!T~YBIJRR*`vU+Uo}VBG#!n7EY{L*f6A1no;1ggu z$aCP|Ng({QfNuc!_*ep>vt9lxz}LX?5skm&!t02CVsP_Q!1AGQq#V}yD?{pO0zTLR zLSbFl|J#iL;oks!a0L3-{sVQkV+j8};DaT!dH;rG+dY3kAMm^n(;krE-UAKUgIKq+ zoByT)enjW#K_0wz*tGvYB0Q^WV&nh+1Hw6_3lbb(@T|6Je}%9fIMZy_H{Plae`CIB z5aAwibSt}wbl|fKNQ5AHVaw47>-&NP=eHjg{Q*MzPYBmh$mZ28gzgA!tyMb0rpo2>)qX~^*<5n-2(|?4)!`k*q&T$9*wX( zA0&K`im=zw2(LfHmP3T~%0Pnpk3oX=R|xq}H*0MnTp@=@!C# z1xWDz@(NoH5ti401pU-uu>l}7i12zN%m9N3^Gz@V>^~t9C~pG^)@ug|8bp}y015i} z01`Ab!tySV2teus3FZetf(8-tKVxwaAhbb{;5d$e1PzUlKL!#pNHZWo{wzq){t98e zIglWJ2MHP)2|<2kv-GbK#Ti`G@mp zg!<&*I_y7MY&`~mu$&2tECAv7a{z?)pAcT+#MbA=)dob)s#hY@gvozJDitupPkD5Ks5a;?|%1O z$!UMH-~rqB9mo3F1EnJ)`C{*U$LhlS1l;=&!yjkD3qF5K=xHyGbZ@v_!o3pL8n*V? z$2r0+`7E~2M+IgpSQ++~?^Ni0r~j-B#E^L5*$6Rw zseStC7t%^E_%7=hCy0JFs))b3tWxmJYF@m)!%UX?MTFj16yD@of}ecd&FuW-m2utR z56|rFmUbrw+3HoiNJsSpj2SU}L!V0rsNTIYN}F{jGWtMnMc-{aS?ITa+UQZ${7}Rk z_nw#KdiO~d_ONiZ6B!AWQh2>+dKeMLTyL;2jHk?GrGV0fXCuV$>l>qbn};61)LAym zCu@$V&Ab;F^7E#IE#>(U%BuFdcF%KoZYfVMKQc&>Z&yy3?|Y%T&Z~3j?8tIv@A174 z>r7C(@C=9;zFEiTF`l5TbiK6Eg`5z@beHqz zT#|h;)#9zX91X?ppccy_D)FN#pGUNQc$(F>(u(lp{WQL&A=GY?6IQS}Zd<>%hR+O$ z;dA7^yD=Nf{otwF5npeU%S5lmI`Njs?#OuIeyH+!th}criIXm%u{Xq1dOT%T!ztn* z(Hje+uZi^mEjV3cmCbIO@owqDvnpcv-G0aRGzK#?Q8SfxrKh)c<91{#%D2s^M;;O~ zyI9*FWh1OlT(cOS-X4}AKE!K{^TYUNluYw*Hc^9q2Z76lJt$rD`!)P>za;`2g83|= zx4jFvxe^*-Rqx%)*F|1U6l=NfFFSd7ZjVyWU2HY%EAWv zlgn-vVrEB`acW5lYZx7WNlKV-TD3Jav2hGzb>YDSzFR^J-%C4X$$(}TS-+0(oq{RW zrqf@m8(r1E=aSe-bHvC`$*F(1j@wbNm%Qq67Z-W2t+wQclSFkVF9|Y;G%LMvp<2i4 z!Zm^Zo&=wKcS>G*QPLGo^D{pT=Z95911Kc@e@Mw3?qf;L95r~oY)G5j+cWV!>ZN0+{}6pcT!@@pl?IxDUh zUND2xfM--yEc07%FSQXL^&{hf$5%;|$d6Ty#wPG_?`C_UsMmZ(J5XV6Qx`+T4g|>& zQGoa?rMk7B&pulB=`~a|-c3EHs#J2YUHs5li5orBrQ<*1Kh5Lnza8po>a?b7$b9gY zr~fds)CG5yUun$}0sQw%?`-MfQUEQO5W{~rDP79)4gboIfFO^TVm{5pl;^IHUZ9k_ zj(5E`dpxy@^Ge;sMU6qrX?1m7twEzx^Q^WM3e~xij7nXTY99U{Hg!WcH7OBMfcRaM zoxd{4C>Mn9mR1yH*1R-RB=esl@pw>{+!Vp^a+GMbcm$_PaBn!-9P!ht4VpszQTIJK zFG}CK;{Md`@xUL!_AiW;3auOSs5ouE*nw(GtHvO%Qo>(iY-WdE(fgekz9UmA^y0xZ zgVp|*2aoMdJIAx+&#G@t!SK2~a?j1kyfxiXSxd#dA#DG`HB61xop@83VGB_)jlpE*zQbb<% zdz(CKy7Uy4@9ZwW?d`gfpPWkAb;Du*U7bzct<8rPty{r0`<8b?_AF;t(@ozK)z@pk zTUvIxjG5q5@V;`sJ^V=By_l@ArpU=4q$`TF@`zRZ#={)dpLbRw?me75Uo7UisY`?j z1)A_(9%A^KcJ=fIaXqxUBKKTYD3nr2tn3cfhIjm4cb`hbuzZQs`lUS6?Oa)QF)`Hq z28~fcDrrX(QAeSsRl8J7*Kf8{o4T9Z1N?8%{>$)>M?Vn>`gp0H=xNoHvv-XNEq>E!Z8!pq}N00~el@NMd=Nms0PBvwpqFwP+?B28he0IkHvT!~y z{7V(gv(qad$+FvX=f-+IwM$9tPi0vt{E^HTH*xR#4L&Y4zx}p&y51xC+9$ZRcrW)h zHh$V4{!FprM6!x)b@3bX%RzeBc;Ws4zso`lzht)gk`?Lo)5**+q?}XNMXZ*4u4fjq zQ0ZmOzlKdF0@=VqYX+)=zBYpLqrO4m$-=YwL4MYT*8IJ~7t z-jrJybI}j3QD9c)xUjkkK#LizJNcFC#&N6H3hKt!CUSZNqgsn<1MU~C@UMPIQ1m9N z^1JI6+g}s(-b8IB-&07jfxaMDEQxzO>z0MB`-NeGf&*Ax*uN}j-L5CBdg;aQ{U3Q) zgb=VyzQtAYo(z@g%4at|MxfIFrwG66Ct@&Z!Cx)qIhU2=BLhIOUib4uIa8DrV6EZ-4*QfR_Azxbx_P92Op;WmOh)h zTjxnOw61El|7h#zjbt&+Q&S&$`bQ;AhsFy?K6CnZk{x{+8FZh$pHsC2g*=ejtb7u-DeOZS9lnXx*ikdoEmOYt2i{G)dt2pm%ot&@SC4w0rDB zq#f6}vrgbW739-W8X?lCo5r2})Zkb^eOvCm-IKFd-CEg>gx=cwV{6Z&NYWjEiw}$CTbBd3i*op7_Q~9ABD}=rbF` zLmz##FU`VQ7kr71a;i zXkF&iGi_~I$z?io!$R2TV&kfOxpBIcdxG10h)vjS8aOqZr@=F|fDpsRg_gk_^ z_w=@w9r?IYA|^PriyeR%vr-F)_*Iy1>F&ttK=aJ}tE>jn+Amsy>1 zVj)iQroFFweBJ5lFolZkKA+pU`%I5N9#G%i_c1wH5T`oKOUmQZjl$^x0kZP5Fa^5<`xpw(*x)I?B5)}7 zQ&5QrJN+d3n+9p-=nt{ZD{czf0sIw5%ug^zKi$;bx?k|3bst1njtT7Yl-ApIjWDdN zMdEo05$*m^QOmR?105dfbkbPjoNi59yyAm;Z$o-3U;gsI2>bV3GOX&UwW2&Uus?HC z7qfXT;X~`1wc2qiTU@2}h~E80i1OGy$9@{;_{1V!?l0DJ%0Eo24tzP;ufgtiQKESN z8=3Fq3cMnjQp1Ec68nb|-EW>L{j#Zxzqu|Bpmoo@CHvWRqh6dy*M=)?`G7=JrJn_v zRUTec{pv=ElIX~{hXqtkQuiuXj#Ty!pNxGF;uPZP_qtQ7JN6k9eO;LCR=h-^K=UA4 zcg+G6i4=i z|2A(vmtS_|Y(EC?oCqA(Ne#jCO^y=&a&#m2Y<{9j@2V zO~hJn>TW#;2%>d=7*wshT}b;OH0vgiGcc~twXyHLPw#=ulh!(&2ku`N&WTG;vMi69 zVs)Ow{PHGHY&xffJCQGMBHFv8%hAzOfYpVaA%xZ?zH9Zsg2it{gQMP5a^?F^T5ZWO z!~DQf0mfUYCnpXI2TkV=H`JbA>sYPpx$CGZMEOXX;Ph_ovG=b62`OJbqsHpO`@Aq( zw|mriT5icknI|d#@(U7A375x%ukY*NiM+q3ARAw`f5!KOg;;}rS!N` zi*~ilUQ~!`vi#{1Kf0xhA%f>g5wvcEMsBo<9O<}3dW3_&5BWEyB{@F&w*=wF2f|3n zHJ16LLie@Vi|TNk{3`y?ka033B9gg}lS-6L%W^Q?+_Y+8GhPf4j2HaY@Lz_X@SUsc z;{7)(UnI3pKcEjd=suoN&7s}-oSlEL-m22(x{JKVX(q~Mi;NiMjA2dQk$Jat)%aXO z!%J^^mMOK*No?wF-QUFir3&uHI5D5PyhUviTm#1pam@C={lR`YqO!|gT3)5aKsb(~ z^|pk^k^UnEW)UA%p5WfgbtmQ2C_i8GPDo^r{j#0#Y>j@FG!J2yf3ooq>WMDa6e zzy3p&A%>nYVJ_+cF`DPm!M{~{^Uf4Y#7sNBzJG$tyZfQsuX$!l$CIon>^eEWlrF}F zpmYzRbqU{4s%aJkhEYDNd9yM0eXurptYKWnR3T4WV9hF<|4vi;``a|r73bgaJ&6!l zJWDhl(kdp|?ffHzLAgbj_RA@ht^``Qobp3oW#79RQEShXg~t9uC!zWe;aMUVR5Pzy z2O6nU^%#o`j{g4nHSpZ?$bEZfRqUfeVts}VT>hrChu%L)+cwrVpm(VQ>4WcU0@N^)vm%%o`rowSW8 z{aODRl&%z7mwK#?n1#wUCwn)u`!~G{HH1gp*}_T-W_S}DQ*QD$&K>6~KW!y*kv1W4QD9B~n#LQIpV1qELSx*TLubfV8y7B}Md`|*bv-SgFMGu3 zUU3l`ct;;YqvUq#3&oS?ytZw9X8qQr7y)YQ4w9n^qHKJjncX5xnt=x=z0Z0cWJ}|G zeXZP5(R1tEw>5tcqjfv48ryvt%s1DY{gm1B>}g?Gk>B#WKrQ`Ih7J|(v-L6fc0yFT zmJ5>aXm*v~cu_vTIvA_vqhYk0&P;#$=_H2;DqdN%ZbgrbgN~?+^YK@XkJi`c(oem+ z#7APzzFbo%T;T??mNuhZQ-^$Ruuv-1Ih8y`UuMIw1wXLc6w`{+=^EY ztsDNUM>U(u*l$FZi1bl;m|E6#g_rr|C%uO*ke^tu{q99lqPv_*5$?MD?rV;!;NkAO z`-589>%t4z&yUQ>-8syNiuVXw*OiJYl#@%|RsQkgt8zB@ahVh*i{{jfg5*7#LSsbr zN)KKcDJ<-ItoLN;((6Mire8m>8y~v0dhtr7(rT=EFW*6wt~^>d_7pR|BlGH)w%1g* z-)*SBaQvb&<*;Y0G3xE!Dtd>L?+Yr3I~yy8(hS{;jPwaAi)e&;B4bXJP} zo*7D40j;avM4~ET*^(jI;?nv%dpPA+McJ8))KX`=9^9SPZDF)k;4-zSn5Xx4TQo_L zxQi#;*CxZAy?T+-t*ho(Tl4tV`<<=+RYdF72G{l6F4hoReC%#$KXS~mbL@)GH+u2A zic|6q7oWr}-ub>b)VN!y#Aefi97VJut;b#;4gKCvnV384@H=4SJ*^U2cTTO7 z>|kZ|=W$AYkpO;WzG>FyfyY1C+}k_;MRVVGVY$*zYdZE<-sCK`F*P1>63JZRs7)QytgRGZSwJbFyE66YravF(otJmR z!th#FuUza;X5(wu`hR8jjcUqjWqxU2qWP|Uz9lJxzl$_R568nC)7ElRX?!ut9;K^_ z)@^;OCO$KsaRL8gN!H@iN2y^_tFep6Lv%bm8HI~Z24n86w0(U48rOao%a4sqd;Kdp zoFfHY&HKD-ET>DC7S8pcbk)$hDt!iQKcg4c{GQM@lN0hkRxW@0Eq5~E+UwtihfEY3 zBgebPHl%Mk$bXGVZ+FTubau8kF&z%qe2{DE@Kir8`36c?9j&W+)QH1UgV};G$?tx4 z?@*N-_0q(1FOFA&ioZ`0xE;736v?>}FcF7amT`jlN zM(Jvxb*Htz@Z}v<>-Pv3T~aG4$>KcvTZNG(>h`^%Vq16H_*+5`n4gV#H@XvlE3nS9 zbaxYYDj3E1l=I#%sl9vbSWk4LbT!esg*T{`0%+2MUFgY0_3s%O2h|SL=e#IjjELK7 zQ-5s5)~#daV4co^`_DNh6f57Fu_f&ogB zQ}+;sw4dS1*NNn{&;v2WiGi~D-@N)~r`J1LoP7w=@r|3S4FhEhWM}i~Mk0y~?8z=Y z{XPnR^MTA?ZM5zb^SX)!_awvD=>g38x|zUZ+~Ak#tH&)qt%iN#R!*KeyziworGGei zcUsWQT#i2HaAWbo+x54Etf$nN#m-OdMd|9Gbq&-sw9kKfeIa~){)hY-V+%^^dtY92 z*_`G|Ybuhs@H<(cNb%Ul`x7$W(r;==u(37lT%R}+>VX)?|5u77P>J@Gz6*>3IS)2dYW z$Hfy|2ktpOqKRHLd|Lk!6|Wv53J~92_Gag-Z0-BU(H$oac-^avm^7Ok8@cn?#TBpL zlc#Fd^~%rhg`c?$Rfg#dMz5Z}9v-aom8S{MqNCg?-nk>U7^SO^)_rDiMcQUL!)5BV z{iXX2i81A;mwLSD69=QNMLDqP#fU^Si4Sw9mvl@$>)h4fY(I_ha&wMseyf!3>{ZIA z?pJ}*H9+fL33C1<;duI^ePO>7narfsvd;rnTjuKTKZ*Gc8kPqH6kER8@1bk0d+MmQ z&e($-;g9P#@8<}T#;=|J^hr|Pe(QUNt^PGc>(0(*&@rEE3|<`=JYG;;tA4?)j{X6m z@C!S1SCd$_gyHBVG#^Gwbz?L^61nWtr=wJWY~sVOc+?&b;+rc}v#_t(z^K zDXEpQCcsrHB9Ij?TdX`#km4b%Npy{?XoAdY#N6uY8~XABvmypwy{qF*QG{u3G#3j) z#$+tKRVGmVV2swqe%Ty%hwWrwOhPt*af9)g4R_D(hS zwJ0L3wXD}}<5MsSetvp*pCE6c!R9}HVSV|PKwxKZ4HeVfTGe45tp=Yb zN^R+a++E34b3yylaNBkrXHdL@(ltlxT6z#wlJ6Cpz@4~9(pV^{#83MuXe#cb-wBq^ zzT-!AP90jbeA1=E>Q>D{b8nDOvFG@kmp9|Hg-#Ia(?-znKR~aG<7nN1h)jcNY7xs9 z5&a4`A5R^;l$xhE9nUf5PNQu5O}!1gc;HDHDpPO_#@u4|e#&~O=$hjRd?tC^eH+_b!PF)d+y=Lq|_mOK|%Y)?Do|_ zmy3$pZ6}@V=zioB7OYOlIo}o=H6TRkoW2m5(zQyf@*etoYIMxrsUJ62RTIc-n+fP^IbpV2ujxit$Vns?{dyZ zr(^NVZEf!dDJ|?3byr)5Y!nI(XLA>grNm>>C}XSUeZ?YL6BxQbOTQvsdv)^UjHj#X ztG>wQ5+@3jt|eO6+Auo7k?BTRQX|>rk{e$M={stg7n>U`ADxl9KPu7r&g;k*pB$^p z=V>kK)-3j}UN#w(vDi;AxJ#hrbA8;yCG`Gah1Rt>PbJ`6%?P7WNcMPKKh)S{)5KgeRs->wpLXgu|!k(t;qT)S;*3BO_ zur%o~IK9k&-pKHr>@gCC;TEP$2HvlwMrrTxKRi51{aW&{4xcZ#S2LT}uj`tk#&lI7 z-=x0$y4PVRqPQFWb`rTCTcdTW3$Li|w&Bqxy8j^J!F~&-rZ@YXneL}jO7N;*oVhra ztoOUSiSVB2x%rL9f${mz2IuAb>h5+m+X+{4PsZ-|+Cb@^M(ein<&00he0Y%R1pBYt zuFT68wR9^=e9c|#D#ZunJ((lSK} zrE7!M72)lETYp)KbZ<4zM60sMy)gG0vPTI5y39eY=VD7I<7sy%v>zd!{P_Li)350R zoW^g-@n3lNi&;`R6L%U}M{K?S-MU}cqIKUs3@+qU&_DhuexI_tgA=de+fx;%p6HVr zvY7W>^dLWbPNMIG#Wmba@9YoHL{>t-M!p}T%Xso>mjZvZrR_B;Dpb67XkArG+#^kE zv9sUZQ+Hdx-o<*rk)~%VVZ&G2q@C}jn0zXa)h^Y~hwN|4ka~RY!NWsO)Hz2O?@6*>a*i`z3lmyPJDV6R?OS`N@$=xU z=+R8Y^Xj*>Uq@ucN*9Eko$iv8!6&f9@GGEn&!BZ53AUNVmm0J@n<$~8TfY6o<&C$^ zgFE!?t30J2jd@*v9Dd@SoT$#7)Ya9aek)ic*|79(DdW{z1xzoA?1f5QVwA1}S~s>R z)6__2*qcI^?m%~e%7rt&&-7kXnHlqt5Dr~xVol>{Fk?(@o#S{%dt03PntM~F(LwyI zvabhvGBXZTmD{4<6F8!Er@T{!@R@_BMjn4A<o-!tk6dSN zjW-0RhS=bLGjk?;nwG6~$>~;#>sZCD4Zr3E{1w~VGE~+1# z(Yjo%)Yi%AOa3=lX{3JpNf$|d4%ZkG+V|x8P;}%_gleh5*Dr^gWz(Fz^GJP!T z{5HEG$>2Qxs33}IhVvWx`Pc=mD`bV|kVdbmDY14ruc|q&^hUG3gA<*i%COwy>WSN~ zT7_pEv}bKx4E5H(kQ-X=mMm4%4Kw%ek&3$S>niiRvjr8eD_YlO;MY8kmE!s0IMVjn z0}bX(_Y3=T)fBmnq{ar5&J5}kG}4Wfxz@Xt5OG`{TUc>^r9N03zn1Q}a4x$j;yr4jdpmV3 z*@z^;>sum6a4C)8V%7n<=jeWL{~x-Go@=Xp?2Q+ah54Ts?&jnfDBAxpa=dc> z0o%j_!fG42%;#qxp1*V^^PGNU$4I86o)T$Ml*N;#@Xli+sCYfly4n478Qzs4gtnnk zd*x;lS$YncksnDN>7A&%6TsRz_uxfAn_^d4T|cYiRN!LkQBRy!{)rQ_bE2Z=8xU1{&!TntMZM$<@hKKVUMGnC@DQi$7qzJ3!?0XDo-jIgk@fU$vroSw9!_#UO#L=v z9Mw=!U^20EPUQLR-9b*w?>I2)r6^rbw65XLy~1R-*l!8zhN&1y-pj~}o_z6hW#HS% zL?NYN0_V?mBh0u(qc@~Yu5^r4ON6lENmpD~BX`K2EaH7#P~rO-rHlM~9Vn0AL1nVU zp77E}jGf+`?vB2N{d3>kK=bxRk8ruygO9XZ8U{R9=IHl5C|19bYig=EFK44Z7XO_b zgERefP)nKy{r=1w9q;tnw{;=ktoqcxoEC1-aJwlZvR*@ZsP;Bl#nFeaeedpG?zf)! z+R}b)pneyJngWg30k?iD)R2Pud_^Pna5SF zkn6ZkBsxZ_pVHO8glWuKl9m2CWqFvp5;LbL%iR%uD5Nyvp@MTo(+N%yDnVbAt}j}b zVs5qIL`u_1&ASI)r}G?25BN5Km- zBzs;rQWoF%E2!Ec%}t7>KfOld-edin)1zwjxA**p|Fe7KKJSm#WhI#YR8w?KP=QC} z<=HfwW$hNi{u&w{?U&Jq%#1#NkT1FMx|PYm<%yOtWlGEVAn7uFbJm+M8m`j?+~wb& zpL&bZ4M6LB8@l5a5)&q17_JR; z_?*KjZYF=)&o=9YCt+`KMSXrDzS@%W{q#UYvPJ%xpKd$~hbLN5@dl!GXDaFCrE(<~ zZlihvi9oQ%GZN+YAbR^LJQv2bYOP8Nz6ATwVo__eqr2dMaMQ5KlQ!E+r zH}jJjS8-9gL1iqOxk-#F6u$xa;o=~=Q!V?Enydh}ai>Vtt zdWzkqW(K<&{U4Y$U4A}wtACG_j`8hto(I3o)7yIowiceu%LX#Xi^2wFnCJJ-N~8W>$(W;cY(F1 zu0p$xQWQR5zjQFha6Ct@xj0mhiTbW^QXOBO3Q9K=t^2H-A1C3KUf}GE(qYHK69v02 zyDJbzvmU^om6N-ga5dr!!&g?fl3HH*GD5qRXOhk9CQIu2&dc~ymo?t*k8{gL>4u?o zKfG5eEhu`hO6xk-FeF4wEARTTr+hT@e#~z%v!?;K7jKTM@KiUptOSo#U6%EWp8NgK z^~uKZdO?lob0m(&>H#R-aI~%}-!J-N@=NE{^Lt!N_`aPIIA$4{xyUdxKK;0#Ey$z& z!Q))Hg1%5`*?zZ{VveF-3AdxcbLMo(H;V1A7ik{FL+M^X>rQ-e8GRvnye<2oPu`Ni zMPnh>d@Z%OP*ZKW2B+MJiK!WPJ)dsyDB&Y)us8f`c$$)$#1Y@$H;&Mqj;>KB6y`_i zMxb@&g4hV?1Uo2{X2;YZ2{3zN{copk=kb+ zRT01CMTnJ|86Ijx66H(aqjV$Dy8Cpe{k`ADTT7U5M85kXOBqx{dJ;dEHTC-%Q5C_} zGJgfL#J#5d4xO0wwtX_IDJmA;ajpjig>Y@IupiB%p+W!t_aa)inc!pS>^se5~^xUwuiI44ZbIOcb8RDo6eZ0ph)a)sj_WpRDe zdu}|4T{Ec6mgCEwKk)QO1Z^4m92Je$olIJbJCZWaaj^3ZOZcLQ>m%W5P07%yXWmh+ zXJTtBhreBXswqD_ydHG!DQB6u+D7-OM;U{c_H*PHVrn#cWJ^%}8-vyzF~|INnWOP@&ME3AM=zSaxaYbO(e*Z^ z_D7$IK_V|3#EG*t!u?XG^d{UE=cnN@a$@YRtHpyT-FUQaR&YT%j=`(n?~3I2&xUl5-9Jl; zSH_PC{3WP!iy}j(t$#Q(tdx`X(Qi$qYHC;U{JE_5yA?#NkL?V)9@Kw+d>EyhfYzNa z>ZHOWJ`o=DxUo}Si2eQhlgb1Z?l>y>^i}3JdAX#6wT(O<+NLpIBKEOow`a19VLmVB)?5a!6&%8Uwf}Rgo z(Yh}mloLFdPfM&*a=pxZ;77B^+~s$(datM>DaNm6TsYY4^E|tKMP#PP{jIc&IImmd zDWAjVQnl>m-n8Th3e*4WMfGnIT31a&|42q@(d}vl^5sk2XWo4z$35|L$j_QHvv)S$ zA1_si>!Di`gTPe%+Os~)i=e>|l6-Qy2U~qiJ9$#`m!(!vy4TRUUo2^xuLXU5a{ijE zx$fROxm6e%-K%Y3+QPq{C$bH zHuV0RjMkO-a#^$J*0sB<`|jRQ7IjF{BYrEoL`0U##Ju`ozN>HL0N#kiZYFaj58Qb+ z&Y?uxT|)F@On3KCR?ocTI49S#h>G_*T2~?Kqns-Td6SfZ%3?o{p6|qhR$Thx0H)l} z#j5`8*~5aZQ#WYBJH;bcQu?AW)Ev=Da-@~Sx}tn9bZ}NL8z`f6Q_#A`J&g+uPlH#hWNKII*g&1+(=pHXqAdwEKKfmv3*(sPwFRy*g|@i2D5@q~u9uLc@X z(~hkEO9jeT74Pb$W*xs}H*cb(@v#~e?@hGs1!m8XJM2@ZA4L+Uz0ZuDdi%XpwknNd zy>`%FRsPCJ8vY8r3@@Mg)Z4YPK|Ta{gC%X4F;32qnBIjh0TujObiAo(-D#7h{?$9# z9eGR#lumT0D3BCVd_O`Z#FJ7yIB1}7Bc_aDBu?~8rMU3d^+S2>S44JK_8loQzsr;( zi_cEl^#uL?Hw~?8`-;+fQs%B~M$1sPZ{rJ@SKl8$I&6OI8r7vi^_9a9`bCWRZb+Qy zQPFSdZer9s^k~*iBX~kP;26Hxz?akyYF4OzNJr}ue+`+r6p%ObdjD`^)@8PHtP^|3 z@K^{b4X5IIj^e==V^vpl>44drL|4qe*NCY zE>R#HReMOK#>|J%O~3GjIq&YzcYdE)+qmB3CwD6S*_m=S#;9?-oMoW}$VLdW4)Q_>Y_~98qtmwQDBbM;p{tRy&UlW;C3RPY)@=pD zw9xGP47^Fr6xOu~R5a=GglR8Mi|>sfdlsc}`0mq)7uU0H@R6lc*uHsB&%l?&z4i^I zdk3xCk{I*I`hkxRng2VtAKvr+VQf^?GNltXxJ;v8=7hA_1e+5UyC)~@J;YD7Un^Yt zd^d@m%lLv{z+7vsW8;PLt$)w3_5SxRTKA*tH&*&)0w;;f9-r%r8c_ZnkARwR1mizT1&9X;vJaF>}wTds4iJ~7||t7v)?D&Bi&-E-Z?^!hs( zY(swB5cGA5=^U|EnHgYEj1CKxd+F6%RwRF}Z&_GXIWt~Om^aP4ZU+BNM2hIX3)DQ$ zo|Qu$P4K^kfIQFVpmkl-xYSn?<1KWPOt~*PDZDAQQtF$Dl{(W)p67b~*PQnuCVe5X zZYy{COZdMpeOjXNBU)6;x;WtIo@B$1TPQ@0(!Gz?{i^kP>ZaO@Qc`nvA`rzVGqJkLPkhlXn(TIud5f6kG&!blxkY@WB^Z^(?)3v%;Yy)}>0%|+`T zIW;^mwfoCiH_N>rNu^CQ1On@>y{L5k8TE62yl49+c$e!7gc+H$gdUblXe!A^7@nNAY zd?&2Ln;Vzz@H6`2%X1xUiwsFRzfKfB;dfgNla*Ycen9s2v!Oey0&YD@_aRyrPbT*6 z={rS7>csL}OmWEXvR2H8-pVW?dU1ey=}qKtz(wcBLH2sLrfHl`AEf_&-hP$rli!17 z$K>)P!MeyYu`-ly30hZ3xgbaA0Mj+K-wPHi=e;WoLIya-pG|vda^#4Qghv_1@jU;) zcapX{a5(;knxeq9R9ePB{K}&w-%mxIDjsk6fYN=0)(!C?srYs_UGV%-(zm z5~D8X%7Qu4x*@RmTH?n8nuAI@pC2j91(5uh8r(zQ$)+`WdRpNBY419~no7DhAQn(5 zioN%mP*t#E@4Xk$5CQ~4f(hM*ZN;_sURfLVwO3fNcg42$-o?6h@qf?Uo7|fSiTZv2 z^X&gWu+O`>ch1Z^XU?1{ckbNrN z-R@BE?~GBi+Z8Xr?w^T=J8in|StwjFWlL)1#s@ZNUd#Wu^xNq&j%(h17_!uEr*f-! zy?Tq7H*(zV(xs|Y9#v*h3)Lg#iqXBRSOpGr^*ObB?zOl3Gn^K**taLH%x?dkPoMNy zvc5s;v2R~*IPALHq{vdgenYjfxuQjO*ed2tR_1U{A3XD6!CgH@mA~7yk>u?0guF!; z%{~A8MZw-RMntt=f1qK_Zihpt<|>COJf$876f?4fVvZ$*OpY9>$Bh@UUEiFu!& z-+a=g;fL}oy(ZsVyZUl-|D#nC&-eSQ+|#~QL$piYgAG8=!p3Slwc6$WW^>_~ZZmy9D5N^gaq)hFU1Hwet==W|>(eA{$Ed_7_fPIE zR;O^$`U_vzX#2+N{_k^a^ENmdmr_3A&Z@09?YbsOa_ds;t#=)2((P!kzDo}5Q`bqJ zAkufYm^WvYiHmEjeKBRnw>O>M*-9?Gui1Xcs&5D8e_VOord`U4vuclHrQQw-nIcz5 z&I`yGUFbzjaJLO>Tc&sHUa-`Mx}U}SboYpP&&@t~@=@vh0WB-WS8lhZ`-@Rhq zC9AKF?l-kuT(_Oiz9bZ^e5A#Wg*!f!z2~v3NTXEOKzZ`TZtva7zUZD~{ho#|oTsE` zoKb&jwWY)0nhoq{cs=d4V~&V-pO`mkO8nkpL;t)wsr38b{~UIB;r`D1G9oT6D;~b~ z%#0TquKD`Ce_s8n&Fkd&oBM8heeryFW!|J*`~4iMm+cog^uyDa;`wi~nAa+QT8~Cs za)hieKe}SCCdu2D%5$wt{G52|@kGx`$KTYnmN|8CxTbx(uWy4f0S^bwO0oWP%iN^T zOBWSNOKz2sc;b*q-xM+LlBw$VBhF~<%#6A>!*}1yMRSuDejLB?R-*-Z;xtQhr&*0& zvaZpb_p`gMtdp|j!W&)1y0=d^8{DPevKjBsSr7C|zAEDVOU&yxap&;`U6Q}pE?b*= zH1b5j_?*L9v^w*3`{|{s>j@rne2!K2{jF|n-g6aS*=_LYTz6iZ+}GArdEd!lpKgy! za+!a`^VI!f-mohbzYacDcH+Y>b1NQRZ-Cr0eFyI7#$uBTJO*H!3z zuw#7Ee2+cpS@TPEyX7)%w4#awLDMvz>FJh`$y%yC?UP=Xmqa9e?#$zdTMIN@*1%FZs`y zw6S@m%3(b>?9A0^Th|=}JAM=Cdr-`KzQTj#Bdb*H7auKH=>2xz@Pqy%KVPg-Ea`nh zptNkoPAdEE^+&npe_!LlpoBhWomQ_{ajHfIhb8M$#@I)kXubGyf{6E!n78FYPrDU+ zb2Qri%GohtVVHlH%I#*}@BSfo(2+_hPT!`lzWZXOWaH3gH`bS05}H1({F&&%xf+k( z`DEX)S(6679~UKF*ElTZJzQ{B<&-wt-KsyU?N#Mg+NozBUv4O!zQ1o&zKW`YQwAR_ zntSCR^A31FSeGy3T+@v~bLVc{H+$#D=go(d_75vlaPMxBzDLBo_O&`4Q9pcMJtL;j zfj3K!?CO2|-c5JKMAb<7~m`;lqZk#P0 z=X+iJ9B@?3t1B9PX}nIUa*!_f-yBk9K@E*ZUO#R^POQy%_v|IMgb9uMnrFb96aWQX7 zo*m^1bpI9@-!~>~s!!vOXK%C!?K-ZD{rTJDd;4i)Yjkh@;9TPz8%x+!Khxmv^6~P^ zlB5;+K7RV=Yl3fJ`@ek#i1a;S#QWE$ecN&$v>RTb^07**s;k#*I5czQ&K}j4HtBD_ zwD(^dj>@=T)ap9`yV3SlVaY$J26jE9jdiD zb^S$5%KIiK9VVaOGkjn1sOB|pDp!1Yndio#lUAkfN9MRi%=$fJ?d=V-9P7nzKKn`oopGptMQuxZlzQ9lpXZGYm3S6uH5il zd~#ix#}}Gv94^l+@@+xghv_qFi7yS&wP)|QWb20Yt*^vbacss1N#&Qm-KTX%Den@HdDVqWJPTe~hl zstcdl{G)BNnWIjRZJn}mcf!sUl@FaN{vy0hpZu-*hL!Tm^V(sCO|H*L+MTndeT#0s zerL?zvz-=No$1h9#Ct)^d&}{hee%1i+hZr~?%>w%O7&V{){nM-4*lj;HN^Hxv1{!n zf4jZ>x8Ft=A2UhOdd$3$1sm--Ri)e!56vi9ks*n?7bQi!7sb4fd-j>-SXdj z-@PasKI7}|`Qvj2tnBe{m!C?xwr+`Gf8UQgH{{dU<>`kv6?#)=)r9tQJJ*wxYtdo; zr=^>+Qp+ZbywC31-0sP}<1V&mOFe68S1;Lr;f=m)SBc*r z|1IXNwPfRV$EtTzhE`bi&ndsvce{>F{5top{hXo!_UBir?>BsXXlI7C=dwe?&qobi z@p*Nzs%4HoKR*3!?TdX}1|`+>wHN7oMa)~cVbSLKQ%*OZ9-LoQ=*5)$dyDt0vgUW| zYN->4tjymsXOl78B69bwUv=V|KWt9U{(8D;(}ww){`SnzeYtk(rmkjxQa3J@9{n}fTwzRtWK7U4)xHsEQ*4iPm!*wxlIfpdGmExj^`cyUBu2B25unF@A->W2%R{Qg&uIIu(=S!9??y}nD!`uZq;yXHh z5I?`&67!x(lCO^FzHgg{{lR}W+Ya~h*s^#1%qGq9JxUFE_G#9OjoJx$Lad$YJAXQT z{zk*d85l+9%%>EODrd{!)-Bd*Dbn1?H5navDmF%uBNf;{`j-F&5V_+ zlQ)dm-+G$vwA!(em%l3gT&=`;5~su0R%j1RA9Zy=nG%Nrrl0=Pu6yfl;`N<7V&2bo z>OIxZj)}W{F3oN<4 z&+S&R>C^i!*;uLE@UULfMEc$p^UnWPBk8egZifV^?Y{Xjg7pLoHKllz}*73O5eOgTfTLfJmh((5fSD{x|adC1tY{{Z}kN^{dsW zRFT+BdfJ|y)fN9=A{crgr{oa@6{K>k^ zzfZq^i=DFd;4DD?qE+ZLswjn3fhzyL`2p!C*Xa~GIsToBYX5mZNqn)gF!pInfKn|D z3l)ETz}Y1G|C|NLR-wuWCEZPv{`-7`(=z-2KVkva&Xr+WS&%SpQP{tEEc=miQ5>2_ z!kRZ^=g1nu z5cL1{kCqzTo3MYkIR5`_A^#5+EQ=+e|AQsTRyo@O*%rvQK(+<4Es$-2Yzt&tAlm}j z7Ra_hwgs{+kZpl%3uId$+XC4Z$hJVX1+p!WZGmhHWLqHH0@)VGwm`N8vMrEpfouz8 zTOiv4*%rvQK(+<4Es$-2Yzt&tAlm}}I~FK~{n6PA6qXYR0qBp;O`xz`z(9ch=*$D+&kfLbn`?a!bo=tqi-hYY;OvC2vArn z-hPkx0@~M)^z>*5Gi6~gN<;dRepFs6AL&f`5HIOR`cVFqUw(kjR-}LbyADtb@CN97 z$ZwF564n6yI~a6EAf1CisyqfB0aTu+z%$@E@B|>;Zv(dga)aUkKFzeE^H1okk{&=$ zfa<3=&Imcp@&I&h(PzYc0b~H_z-!;dRZw`5=!unnLyAlCy)z*1ltkO-&%4S>(Ztp)-3{Mf1!&>rXjlmaRP zu0Rz)3X})jfT}=gpc+sCa0fhr>VOAO11JMj1Zo0h0SQnECm2aNs6z1Golk2hISgz1KNeme7FF0N+)BY=@WJTL*6 z1WW-EfE~aA;4rWp_#KD>$|F6UqcRHDqk$#BPT&xr1ik<#fPKI!APi6gu|OO^?S4Ek z5tt181}p{^0`q{P5Ai?zIX&ZkEw$ylh;|zwdmIJ+0@ebQ_evlKuoP$v)B?N!YoH8} z8z8w2z;~fp{^UZOoPaG*8X%u536ube1I2)%KoOuYPzZ1V3IYWHXTS+?1RQ|;Kt3QZ zU=P>wZF(uaJLeANvgzb2n1zpM$6&yxR=Pge!10F{ACKt-SeP#!1;lm*Ba$!~oC z@?md)e7F%%A7}`WfBN#j6t)DQdZ9X*3(Nt?Kd9cQ{>UHV0P=xRz(|1XL-rg73<0Rl zV*v6$4bTLjJjoy00&RfiKr^5z&1fPB3R&qs9zbuP58wy%1402A5CZfEf&qUZ5TI}h8^Hg{@f!drfFK|Yp!Aeh$^WYGI}p$U zgMe^A-{zumP3?usPBtOGCwu7~Y$zW-0>8rnvJb_J2Yv&_0Aqm!U>q<3AiGZorUFxd z$pG1(!e;@~0BYA1XC^QkATE+G0u}<4Zay#yumKhTlox@*mH}j6vf&C~IgkkG?fwU@ zNk+CMyRHF}fYm(cIvLmtYy-9ee*&9;jlc$A9k3qQ3~T}R0K0)*0M)}zUV3FeE_9R0S*EOfK*^VkP{$#<^U-C2yhrU1Q0jLDUCI73^)y322KJOf#U$x4~3rq z^l?Z|VW)s|z**o7U<*)q8gKzP50IQ>mjKd(;!rw@M?A#a0JsWJ*cIS!{+jOT`WA2# zxB*-T8UxV)`O_U9zRz%hzX^1h9{%j>_w}gl7wL_OVr|2`$6c5xIwFn>+^el`wU)~c zY{{R;+TUG@|Gc~^K;jI^mE!Tw92ezChQtjLFRrgF0?9vDtwNqVTp!9LwWRKDto0Uv z=TAAO_q*}d)W)5A*3e=)rJL!9cLNp1T>QX9ItbH0%mY;8UqRpoq<*bNd-s0OX|r<%MP z+2`BJ3f7GwsU`Iw(FC$B(k!kNU$e#-MF5j{N>k*eA%om$#`ieVCF1O3@Hom5v_ zIWBKJ)yCT2OX@)){i#My6&f^+&i!UPByLgS`jJ>|@>l1-Ze-2dtj%6yA-+ysDY=Ck~>tGat zlT$6|#?8k8o%c5O(1=ejY1q#`fLu z4(k~w1W6r8sBIs~-D!4Ohwkz$iypJGx21#K^x->jfqhu-Pm4d_u9W6=n7iso*(fX*v zf}|)fS<^!4r)^Yafgq9c64iiZ-!4ww*;tS?gM@m%vrC;y9jN-aqaY~=cPD>q=x?*< z{EIv{ZLHzb(%SI$EZQmhx3Wl63~3tW?i{2|I2vecjqbpQeAEY$;*gANyLjN!)%NWK zNmocpK(gDVZ~?!`b4LmiH6$e=+4}9-Yy0BIDhZO`dC5hO-QOm@?rAMZR`3$XJ7?W% zemVX{knD$~6xb59^Q&A>Xq{h>+~g&t;yPO2A95jHkbHrpG}7dXI2Wio^#*>eFHdna zd6IOyk-T*5+Y!YDi8n8K(6~~bf0{NsAV_*ZQU+i*;57EEAc^E9n=9G+xjh{^vC7tJ`r~58Bn;}RxLsAxOb*ilM_V|3Jg&;|Tq&y_!Cx2bAy@K--LGlkI6(ITG zKX;hdf@9wVNl{dFMM(UP4r<=4%}}&ceM#%{l4&DK_8u1XPgOxu2(C+>80)t4rE58L z8}vwSTz{=U*Xr;0lLL1xx%UbZZz;w=%;=HE4rwkr_^1mMYTFtTjEpp5ctJwF*es{` z#-4ubo7-3qbCY6haGgadVZnpPl}J(GmuFzN%OLIZVQO<*d@UWvPLeRY@r3 zgnUYR7Vxfgrs6`d!2+a#OiOckj5G(!U+O%&b9p8~H;?moLNo)Ffsm*C?pLCb>n=z< zrOXC3!A92El)v=7aT8Zdc-@dDP!+}4l1Bz^UNf(4PbQ(k*{U|uQ2n?!`lHg2QO?B~ zn!)D{=J$Ho`8dz!jTsjt4$xpoF2DH=CM+jE z@I*ea&Olzb-?gE8{n|V}BuKIzPqUhb)Uk@<^KsLho;$V3P%4i*CWFXmG_PBU)x&SD zf4J3(*A4yKBuHp9>-aHs>mJ*HdAtPHS<18ZUQ^*o{xMN|AgRsO=>|y1-wv#gZc@Oy z*Ccx5>NzpJc<&Bqb2NvA)4NqfXYCB#;;xo)Iw6sX!Za(>LK zUXe{9@sQRbws56Z7NO8t4Nrd>Tfa@=#gI@wuud(o(YXDjvwU!;@m0At=PvcZDhedz zRmv z`pw$MtNQ;n(Z<>janb3;XPr-&QmqWfEK-+i%24^7x-np@gUW{8k}&vCTSzHhDcA1) z18zY={Q)GKc}W?YJN}*1)59V0K}qo>u?G^;ZH!Ytm1?y00;U_L@$OcKA#sAFSb+kn zZWSEQ^K7u&B}mXI#V6&vnDMRY1uvF{*?`2MW~hB7=i z#rqbzIj3%No}qjis#8d)7VIDQEY)bqgikCD(?F?H#3+!@s+v8obS?1Yl91+mi*CWN zhl-9rgflC~oSt*RjptQ)Hfa4fB-HAAc0S+U@Ac8! zl!mi`q8z8&qNHh03l};!1`=;bsQo}fwq6yRq48W&0`nbu(xVof0SWoTSC#d~@bb;B zAPqHbq$!6XlhSSSTDHR;{9UsQF?NP)>)*1WHQo_ z2G0WfbiZCdr5V$jvCV^oY_V43zD1QTUjzx?_m0A}fyxswsA2=(ypGG1NnUpkZt@&EWq@-kn%uC9r$)uz{a76flePymrdmpOZ z^ZV&|5-6bG|Pr zbv_XqQ_pYqUS#+?l)tU)G7<2LgUQ#Kdth7G7W`dCHiBx+5d!fJG{+Ck1oZupagx=S}Jml|A2 zJM7=w?c$z*`79q+bEa%eH%v+0tyUoowU*`MmQ<+TVOc|@;akZbNT?PX=iO?x_Qd`P zybWM${TYfzZrmUD>m=eXl6}rb%l-S z-`Dmqs%@nCzC6SDF<7RK4UwK>PYYSk@Y;H-NqMMod&i6A1)=E(ROy**|tuvX6VNOB$WHJ}y zOZqEwvCQT!TzRtAI_p_Y)^nFookmT&A=;*{y5M~)>IUkEAI;n_`=-&^yUnq5kNL%E zrivbsYOWq6Y?gbejZO1zrxJuZ&01p0hB*?=DZr$S;m%K-S+iiy-`(odQ)nGLy`$~O zLu9IfXh)~-j&N&NxZh=_0UMcO@c^oWWb)HHNp<4WKSSbP2ag3FRw_-POos_+%AKeN z3w=7!ychXE;vR^n1xb)v*I?SDW?vic`w9tq9jZC~S&r4`t)KEooQj@|s7Hby^hcjf zHn5kv3~$xC>kuYkx`jeQ^N_?ZjT;{r=cuv4Dky8FR?(19`)Qskm!GWihMt*_g35z2 zSQ4a?1y8>gvMYbDtH&VW$C9^r-lQ~zGs-tl-jFs45>gqu`QoXCdZc_wXU^2MT|hlK zMl2+=igou^!vt2%UR%Guzb}HGcBv;v$AdEvBbAU8tuk76eu+mXNN8w;1~@ubrji9J zzNk{aw(lF$9}?;*AjxDVM7539o3}1k+YN%x1P&P+S`lfW86_$L3H5Iqlxr@WD7ddM zNjMEEL*fj{z3ZJ1E1#F*Ms$`>CNoujl*xLYn1yce#7t&({7f~ITA&dSX|k?`2%Sn9 z0K2tVd_8Gdk=-9yc~~0#>5`f`ryYkSw3`hHtV1sg?$_t6<2g+p_t(NDLv5@tBZNHT z6@JNgTBi8V9$csf`2pUe&@A8!BxJXt9?~-V3+ABJ71R#-Tc+y=tmZPEhp^U|>70UT z{k?8Q8gjZ-#4pWip4OAej(T*UXEO|Q(mI}2-h7PhMGsy(b0*^+BvhyFK8DjYJH1%C zvd@tr+?d7cG*ho)x@B6POfBkUy#YDXTu=WmW9Z-iI9X3=#LXq5BIyYb?}TfAem3gC zn{Ak-VXa7twY1ZSLAK8LC&i~sjlx)w!Qz|L9o~C|Pn&0b&D3emvvvuRCyCB=DzISeZ#AJSe4S}GXZ+hj7$GMOL+T|wQee~ zkp?d}Mfd1m;OIJm?fa7I^U0bm>+)os#;!593TnOUYn=aqVRAtOIV9x8j!j!!b!_n5 z8-9QusTMpQ@62!xv_h9RH>C7@nykKm!tZ+Wf{^1>NYi{o5T0QF&vv`|?G+FC5 zvI*C+3Kx9Pu4+Q7zc>wQLxUrb(E4blgDbjLDG_R`*UiW3E+pk4dC(~?NBiz`w+oW2 z%agU%cFi~qW^HSmn5WKx_h7@k8;!x;w9P@n-YR-qWnI#&ZJo6ZvaZvteJ9hEU{*hP zo{NYLS6KPHi^!KZb~?R3rQRQ{Bx?=k!v^G|(Y3!QhK+A|P4JMlkWeqSyzoyyE z36iYYvX*4cmfD=F1@%Xt5A8#{lz`S=SaC*gc^VQYXfQWb_F_uUNwf}&H@oDCHzA?^ zZOPeP;b$GxG@jB(i`mBa&!=pn?0d z@D{cu;3-(nI8r{lEZ5GM;)3(-T`A1*Mq>T+QiFCy;2eD|`25n!j_4B9_QNEYi{^Br zy=$GYj&aC{kSSHsN_Ak%zUL~Z*Vt4g4R0Q(f191**+jLmZ2?njnaWL9jt}8Uo~(Pd z``|x%t|?pWEbb}45k6BsNs#v)uQXLV9g%V#S z6u=XjgyzStsz|vqP@xZV)!W8be*p(^Ma$9zYh~dfvA#5dh3Z_xRgu9;wFG^+EHXk9 zu2lpnV-#8{Sfo~qUQ`tuq6`kfj^mIB93d{^qDHEdYn9;JH zRl|dzJMC(aD8d31fq{xZGx_MB@{pJQQo^=OPCc5_R&JfAk6VmEJ59JkZOX@~2m6Tl__7)Y>J>B&)vIV6$|uP%`RAwB&Pz;Vop8^hH93b+GA7|sWGLZ52zr@9t+rY)&|0I`@Wx-{1 z|C3xsbq6k^`=8_zI|r!5w?D}way<}f^{uyp<^=;ZnmhvY*V4|<>T?Ogo-o~ zh?=5_MBJ;Ih(zrLqo{FCdP3OfJDE@e!Rknpbb>4_Ql~Nz3N93;i;|lN4Ruo6OOh2Y z>rpe2ikfUD%%XBi6tV!NnT)ekn%O~;2|1^>evr>fadI`tDEE+{tn!yo?q;H}(O;&O zhnTTYxF%YmrD>~5K^dCyz)ZC;NiO&&S4BUl3wAZl$5{Fw zW@D(}%yKaZ|AS0KUS^twNc2k?a4ksia)IAe@=NsM#!a;$(3?triQcq@3-qRvU!phZ zUIca%!7q_>1~Bw&0=bFcKOpC-6&`3xZV>zuIahj&%B)`$xQ)YqiJB`rqt3)z^x^*@ zbtVQOW(5BdvC)tzSi>mzmxx6^%;w$vWWXr+mx#r413_VN=r7UgOAKQQtfIhQA{C}S z0;dr6gOuW_6==9Q78aneMy+2y(y!2(8PJ4-Vfzq%uF`5v?LfHS%XQV(pRJ1p z{)zAAv42n!j;g{Qd%kY)LI?-p@ZUE`Q2l1;M6swa+&2-F2A)XoR^dPm8A{Kg|VyWvEX^)hmJLFGWC(SokqXHwn(LKz`zY#K{^>K^VWvg}GS;@($KI?b4VB3U>cSPWfwU2jH81w1g^u1T#s+Edeo%|InDEgM zr7AESk!8UO_8OCoq!P;COrDu1fEJkxP%iRR^ENhB3T&o9?9CagEA$z78>tJIMXSjN zWh#8bt~95yC>DrCcdYg-)xRh^q!!&tsBy57Qx~ELkg0>w=-Ir-jPXojk~+p|(dOty zEX<`Bpt=+>KS0Uii3r&}tj5!sVbFhvgT(qvq~raXUIk0oH#}0dTqxX|VPx?^$9`Fn zEDeh6>m8(Ezk(6WwOkR12_HscbDTyIiP9*5wRB7MZ0MVi+;9zVqm7TKFkhukCX?%ERuZZ7 z4IdaxyCi7frtQ3DR5OhVc0)26DX9}O-vt@vjO0uM%(C&mowY``nMM+=42%fDzKXh7 z^2QXHyZ6P`Av9ZYkOaE|=sp~i0i9BxfV=bM_D>69iX4rNA%?hy8(+>@4fhn&j1>&= zpugdobyKYLq>2O^yl{Gj84^J+un0F2whM|(!DuY?NI!A%XDMtO49#}2Ez4Z-jN*aJ=w4{}T(DXeX08(yA{mG%1$DA$wC3BC!3UAl za7|CH7F(m>cStJSus-yM45=RtMXtxb=(C`)IoD%fzfgJwo@rz{rA*B{&WxKGM?^`C z1JE(iXm8$zA~zxe!Rs+9VEw>C>a3lLzWKH^Eitt%=0k1#8sI8G<6!@(9cgB&Z#; zTlK{8z+;q-wQftkmBkY_8H76`N@DWtjUj}e0YyeARgypjDp!tgZp_rCaYRrX2QYgx zJ;@ijUASi0xCmh3E`F#}*O!G`RS*@93qYAHw_!bpXt6>>Bnm~_;^!M?N}Gj4WOsLdQ9n+FIs2n4KN{;g%B(SI%m5t(o%jjMhkjyaX zRpHiwMCxz>67E0@YI*vYQ8HB|Eho{c4}Ilmak?)=0=;naWBmbk0+Uj-A($p87W)sr zg@~0D6-pcoYg_g((TW*pM0Y>r{54o>mk&L@wDzoN*PZw1ZEuPNJbu&UFFbFqny1{ae&~Q^ti%iB5!DbvF%zx48 zt0S?a+T3!WAr5#9*TQ_B`aC+(#{AxIih=a>16Rh2lOGtL_;n@Z$(EL=S7OFQ0L}}f zFf&b6h{UPQr$9CGPvvIPvh2`ivH2Z|MR)A+!_tUkSZqdG!!=xiz5zqe;LB}m55V4Z zDQ0jH;`?ZPNNPqe?(=fcau+ZpE&Q3ExrwwlDT`qyX(mTg<)}zHDXB@d$n7B)$H8}- zYJAB3gN%G^j+DP)6~vYqw2^A+II%)&es8jgJ$W`*7F7I-g&BRsxge?dmKBlpp@Sk7 z=*3xof;qRjDl&-)Mw1XmYH5gMU;a};=mY?yV4p~suV?;KeJTR?(LR#V!JFn&;m9kb z!2c-|u63EQmGDA^5*gmEup(J%75W3YkWzn%Ho-5vqp_kJk!i8Mj~6dyG%$_`F5>{^ zJgmleI<$HPTck2KFZeDlc)tq+wdDa-e~tkN^p`>*%@j+2G6K@+FOkl2geXw?581?z^`0+_`~37yBpt)U_vd#d4A zR7pWgsSPWnNNc#3u#7F4C-YTLc4~s9PS&u7h+GZVKQxUNe_Dma;#<=C2bK)=r{^NI z{*qGiwTVx?)e&QjH2~P1X)`0l63)(p>8HhO=UUy)kHYieq6Wi$3j{aqe z;c1;MM454S)Wx`Bi6YKXJw7PG3F2)`D0S4{@mFmup&oFORc8CZPv0n*N@SCQ%d+yOP7~3jv zWQL0NA>ou1tpXi87PK%GW7`hQwfFDhvJ#r4X9KGxzco<;JSHKm|6p@FGc8D5EJLZe zQcAc3JuJAP{+I_O)?Z>UwLH49cP&UHymPTsU^?1_RKyP(fY}qKnWC|SVkieXFotU1 zVv{oNJ&@EmfE?T6kVpsDASL}EKCOG3_cwOD2okVgR2iQFGa^^<2f}8`DUJpr@h$h_ z5*yB-Lx5Hjjb#y>W}=J0xgK<8ft#CqZLivRh)_miIY)(0ii0qK(MlqEd0{=k(v!4F zOz2<|LhaR}@kLpKL3D?z!vQH4%qT7dl8bNAC+Z99W2sXY8woVxTd09E>e;h|$b8=3 zY_E|Pi?4XC6*Aoy-L&AN_|a#*P{&iQ<~^ z79-WbX>`xJ40rYkwi$}dN(`pVf}tC>ow5xRW(dFkHXd}shw^N;%nE4oZr@xv@qs-^ z@PG71bm$A&$CmuWx>smm-Ua*}ET6 zop93)Zph(xJkyHD4;YtKB-xZ*h_p4Mn^6u(Yjn@t-_pEGf6@&l<`2C=*T8QETiryG}2z6HwykiUgK62BnO+& zih|@Kj|!6oE9Jc5%v6Io8py=A7z62$AWP#IYiOc=2`r*Jkw!)lsZDVK3L3w0IEcA9 zs7Xx9!jMdqgPC%Em$^tyllEFHIe z`Sjl%paT;9j&n9~WUHz|Eb7|KSl>7zak0MeM^>}+N!h+w{&*iM5j*FHd$MN6U`GS} H3;*{&2V?n@ literal 0 HcmV?d00001 diff --git a/demo/assets/simplyCountdown.js b/demo/assets/simplyCountdown.js deleted file mode 100644 index 331ff57..0000000 --- a/demo/assets/simplyCountdown.js +++ /dev/null @@ -1,319 +0,0 @@ -/* global Symbol */ - -/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/ -(function (exports) { - 'use strict'; - - /** - * Function that merge user parameters with defaults one. - * @param output - * @returns {*|{}} - */ - let extend = function (output) { - let obj; - let out = output || {}; - - for (let i = 1; i < arguments.length; i += 1) { - obj = arguments[i]; - const keys = Object.keys(obj); - - if (keys.length) { - for (let i2 = 0; i2 < keys.length; i2 += 1) { - let key = keys[i2]; - - if (Object.prototype.hasOwnProperty.call(obj, key)) { - if (typeof obj[key] === 'object') { - extend(out[key], obj[key]); - } else { - out[key] = obj[key]; - } - } - } - } - } - - return out; - }; - - let isIterableElement = (val) => { - return val !== null && Symbol.iterator in Object(val); - }; - - /** - * Function that create a countdown section - * @param countdown - * @param parameters - * @param typeClass - * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}} - */ - let createCountdownElt = (countdown, parameters, typeClass) => { - let sectionTag = document.createElement('div'); - let amountTag = document.createElement('span'); - let wordTag = document.createElement('span'); - let innerSectionTag = document.createElement('div'); - - innerSectionTag.appendChild(amountTag); - innerSectionTag.appendChild(wordTag); - sectionTag.appendChild(innerSectionTag); - - sectionTag.classList.add(parameters.sectionClass); - sectionTag.classList.add(typeClass); - amountTag.classList.add(parameters.amountClass); - wordTag.classList.add(parameters.wordClass); - - countdown.appendChild(sectionTag); - - return { - full: sectionTag, - amount: amountTag, - word: wordTag - }; - }; - - /** - * Function that create full countdown DOM elements calling createCountdownElt - * @param parameters - * @param countdown - * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}} - */ - let createElements = (parameters, countdown) => { - let spanTag; - - if (!parameters.inline) { - return { - days: createCountdownElt(countdown, parameters, 'simply-days-section'), - hours: createCountdownElt(countdown, parameters, 'simply-hours-section'), - minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'), - seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section') - }; - } - - spanTag = document.createElement('span'); - spanTag.classList.add(parameters.inlineClass); - return spanTag; - }; - - /** - * simplyCountdown, create and display the coundtown. - * @param elt - * @param args (parameters) - */ - let simplyCountdown = (elt, args) => { - const eltProto = Object.getPrototypeOf(elt); - let parameters = extend({ - year: 2015, - month: 6, - day: 28, - hours: 0, - minutes: 0, - seconds: 0, - words: { - days: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'day'}, - hours: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'hour'}, - minutes: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'minute'}, - seconds: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'second'} - }, - plural: true, - inline: false, - inlineSeparator: ', ', - enableUtc: false, - onEnd: () => { - }, - refresh: 1000, - inlineClass: 'simply-countdown-inline', - sectionClass: 'simply-section', - amountClass: 'simply-amount', - wordClass: 'simply-word', - zeroPad: false, - removeZeroUnits: false, - countUp: false - }, args); - let interval; - let targetDate; - let now; - let secondsLeft; - let days; - let hours; - let minutes; - let seconds; - let cd; - - // console.log(typeof elt); - // - if (eltProto === String.prototype) { - cd = document.querySelectorAll(elt); - } else { - cd = elt; - } - - if (parameters.enableUtc) { - // Use UTC for target date - targetDate = new Date(Date.UTC( - parameters.year, - parameters.month - 1, - parameters.day, - parameters.hours, - parameters.minutes, - parameters.seconds - )); - } else { - // Use local time for target date - targetDate = new Date( - parameters.year, - parameters.month - 1, - parameters.day, - parameters.hours, - parameters.minutes, - parameters.seconds - ); - } - - let runCountdown = (theCountdown) => { - let countdown = theCountdown; - let fullCountDown = createElements(parameters, countdown); - let refresh; - - refresh = function () { - let dayWord; - let hourWord; - let minuteWord; - let secondWord; - - let updateDisplayDate = () => { - days = parseInt(secondsLeft / 86400, 10); - secondsLeft %= 86400; - - hours = parseInt(secondsLeft / 3600, 10); - secondsLeft %= 3600; - - minutes = parseInt(secondsLeft / 60, 10); - seconds = parseInt(secondsLeft % 60, 10); - }; - - if (parameters.enableUtc) { - // Calculate "now" in UTC - now = new Date(); - now = new Date(Date.UTC( - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate(), - now.getUTCHours(), - now.getUTCMinutes(), - now.getUTCSeconds() - )); - } else { - // Calculate "now" in local time - now = new Date(); - } - - secondsLeft = Math.floor((targetDate - now.getTime()) / 1000); - - if (secondsLeft > 0) { - updateDisplayDate(); - } else if (parameters.countUp) { - secondsLeft = (now.getTime() - targetDate) / 1000; - updateDisplayDate(); - } else { - days = 0; - hours = 0; - minutes = 0; - seconds = 0; - window.clearInterval(interval); - parameters.onEnd(); - } - - let getWord = (obj, n) => { - return obj.hasOwnProperty('lambda') - ? obj.lambda(obj.root, n) - : obj.root - }; - let words = parameters.words; - dayWord = getWord(words.days, days); - hourWord = getWord(words.hours, hours); - minuteWord = getWord(words.minutes, minutes); - secondWord = getWord(words.seconds, seconds); - - /* display an inline countdown into a span tag */ - if (parameters.inline) { - let displayStr = ''; - - if (!(parameters.removeZeroUnits && days === 0)) { - displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { - displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { - displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`; - } - - // Seconds should always be displayed - displayStr += `${seconds} ${secondWord}`; - - countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any - } else { - if (!(parameters.removeZeroUnits && days === 0)) { - fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days; - fullCountDown.days.word.textContent = dayWord; - fullCountDown.days.full.style.display = ''; - } else { - fullCountDown.days.full.style.display = 'none'; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { - fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours; - fullCountDown.hours.word.textContent = hourWord; - fullCountDown.hours.full.style.display = ''; - } else { - fullCountDown.hours.full.style.display = 'none'; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { - fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes; - fullCountDown.minutes.word.textContent = minuteWord; - fullCountDown.minutes.full.style.display = ''; - } else { - fullCountDown.minutes.full.style.display = 'none'; - } - - // Seconds should always be displayed - fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds; - fullCountDown.seconds.word.textContent = secondWord; - fullCountDown.seconds.full.style.display = ''; - } - }; - - // Refresh immediately to prevent a Flash of Unstyled Content - refresh(); - interval = window.setInterval(refresh, parameters.refresh); - }; - - if (!isIterableElement(cd)) { - runCountdown(cd); - } else { - Array.prototype.forEach.call(cd, (cdElt) => { - runCountdown(cdElt); - }); - } - }; - - // Export for modern module systems - if (typeof module !== 'undefined' && module.exports) { - module.exports = simplyCountdown; - } else { - window.simplyCountdown = simplyCountdown; - } -}(window)); - -export default simplyCountdown; diff --git a/demo/css/demo-only/prism.css b/demo/css/demo-only/prism.css deleted file mode 100644 index 4412600..0000000 --- a/demo/css/demo-only/prism.css +++ /dev/null @@ -1,135 +0,0 @@ -/** - * prism.js default theme for JavaScript, CSS and HTML - * Based on dabblet (http://dabblet.com) - * @author Lea Verou - */ - -code[class*="language-"], -pre[class*="language-"] { - color: black; - text-shadow: 0 1px white; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - direction: ltr; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*="language-"]::selection, pre[class*="language-"] ::selection, -code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #f5f2f0; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #999; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: hsla(0, 0%, 100%, .5); -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; -} - -.token.function { - color: #DD4A68; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} diff --git a/demo/js/demo.js b/demo/js/demo.js deleted file mode 100644 index 0922b06..0000000 --- a/demo/js/demo.js +++ /dev/null @@ -1,78 +0,0 @@ -import simplyCountdown from '../assets/simplyCountdown.js'; - -document.addEventListener('DOMContentLoaded', function() { - /** - * WARNING: I set this coundtown to be running until the end of times. - * So when you'll init the plugin, follow how it's done in plugin documentation. - */ - let d = new Date(); - d.setMonth(d.getMonth() + 1); - - // default example - simplyCountdown('.simply-countdown-one', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - enableUtc: true - }); - - // losange example - simplyCountdown('#simply-countdown-losange', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - enableUtc: false - }); - - // example with removeZeroUnits - simplyCountdown('.simply-countdown-two', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate() - 30, - removeZeroUnits: true - }); - - // inline example - simplyCountdown('.simply-countdown-inline', { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - inline: true - }); - - // Header inline Countdown - let dateInTwoMinutes = new Date(); - dateInTwoMinutes.setSeconds(dateInTwoMinutes.getSeconds() + 30); - simplyCountdown('.sc-inline-header__cd', { - year: dateInTwoMinutes.getFullYear(), - month: dateInTwoMinutes.getMonth() + 1, - day: dateInTwoMinutes.getDate(), - hours: dateInTwoMinutes.getHours(), - minutes: dateInTwoMinutes.getMinutes(), - seconds: dateInTwoMinutes.getSeconds(), - removeZeroUnits: true, - inline: true, - inlineSeparator: ' - ', - onEnd: () => { - let afterHeaderCdAlert = document.querySelector('.show-after-header-cd'); - afterHeaderCdAlert.classList.add('active'); - document.querySelector('.sc-inline-header').classList.add('hide'); - - window.setInterval(() => { - afterHeaderCdAlert.classList.remove('active'); - }, 20000); - } - }); - - // Count Up Example - var countUpDate = new Date(); - simplyCountdown('.simply-countdown-countup', { - year: countUpDate.getFullYear(), - month: countUpDate.getMonth() + 1, - day: countUpDate.getDate(), - hours: countUpDate.getHours(), - minutes: countUpDate.getMinutes(), - seconds: countUpDate.getSeconds(), - countUp: true - }); -}); diff --git a/demo/main.js b/demo/main.js deleted file mode 100644 index 528f5a4..0000000 --- a/demo/main.js +++ /dev/null @@ -1,15 +0,0 @@ -// Import UnoCSS -import 'uno.css' -import '@unocss/reset/tailwind.css' - -// Import styles -import './css/simplyCountdown.theme.default.css' -import './css/simplyCountdown.theme.dark.css' -import './css/simplyCountdown.theme.cyberpunk.css' -import './css/simplyCountdown.theme.losange.css' - -// Import the library -import simplyCountdown from './assets/simplyCountdown.js' - -// Make it available globally for the demo -window.simplyCountdown = simplyCountdown diff --git a/dist/simplyCountdown.es.js b/dist/simplyCountdown.es.js index d8b8c38..e69de29 100644 --- a/dist/simplyCountdown.es.js +++ b/dist/simplyCountdown.es.js @@ -1,116 +0,0 @@ -/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/ -(function(O) { - let $ = function(n) { - let s, i = n || {}; - for (let e = 1; e < arguments.length; e += 1) { - s = arguments[e]; - const d = Object.keys(s); - if (d.length) - for (let r = 0; r < d.length; r += 1) { - let t = d[r]; - Object.prototype.hasOwnProperty.call(s, t) && (typeof s[t] == "object" ? $(i[t], s[t]) : i[t] = s[t]); - } - } - return i; - }, P = (n) => n !== null && Symbol.iterator in Object(n), C = (n, s, i) => { - let e = document.createElement("div"), d = document.createElement("span"), r = document.createElement("span"), t = document.createElement("div"); - return t.appendChild(d), t.appendChild(r), e.appendChild(t), e.classList.add(s.sectionClass), e.classList.add(i), d.classList.add(s.amountClass), r.classList.add(s.wordClass), n.appendChild(e), { - full: e, - amount: d, - word: r - }; - }, I = (n, s) => { - let i; - return n.inline ? (i = document.createElement("span"), i.classList.add(n.inlineClass), i) : { - days: C(s, n, "simply-days-section"), - hours: C(s, n, "simply-hours-section"), - minutes: C(s, n, "simply-minutes-section"), - seconds: C(s, n, "simply-seconds-section") - }; - }, D = (n, s) => { - const i = Object.getPrototypeOf(n); - let e = $({ - year: 2015, - month: 6, - day: 28, - hours: 0, - minutes: 0, - seconds: 0, - words: { - days: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "day" }, - hours: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "hour" }, - minutes: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "minute" }, - seconds: { lambda: (l, m) => m > 1 ? l + "s" : l, root: "second" } - }, - plural: !0, - inline: !1, - inlineSeparator: ", ", - enableUtc: !1, - onEnd: () => { - }, - refresh: 1e3, - inlineClass: "simply-countdown-inline", - sectionClass: "simply-section", - amountClass: "simply-amount", - wordClass: "simply-word", - zeroPad: !1, - removeZeroUnits: !1, - countUp: !1 - }, s), d, r, t, y, a, u, p, f, h; - i === String.prototype ? h = document.querySelectorAll(n) : h = n, e.enableUtc ? r = new Date(Date.UTC( - e.year, - e.month - 1, - e.day, - e.hours, - e.minutes, - e.seconds - )) : r = new Date( - e.year, - e.month - 1, - e.day, - e.hours, - e.minutes, - e.seconds - ); - let v = (l) => { - let m = l, o = I(e, m), U; - U = function() { - let T, b, S, x, E = () => { - a = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, p = parseInt(y / 60, 10), f = parseInt(y % 60, 10); - }; - e.enableUtc ? (t = /* @__PURE__ */ new Date(), t = new Date(Date.UTC( - t.getUTCFullYear(), - t.getUTCMonth(), - t.getUTCDate(), - t.getUTCHours(), - t.getUTCMinutes(), - t.getUTCSeconds() - ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((r - t.getTime()) / 1e3), y > 0 ? E() : e.countUp ? (y = (t.getTime() - r) / 1e3, E()) : (a = 0, u = 0, p = 0, f = 0, window.clearInterval(d), e.onEnd()); - let w = (c, L) => c.hasOwnProperty("lambda") ? c.lambda(c.root, L) : c.root, g = e.words; - if (T = w(g.days, a), b = w(g.hours, u), S = w(g.minutes, p), x = w(g.seconds, f), e.inline) { - let c = ""; - e.removeZeroUnits && a === 0 || (c += `${a} ${T}${e.inlineSeparator}`), e.removeZeroUnits && a === 0 && u === 0 || (c += `${u} ${b}${e.inlineSeparator}`), e.removeZeroUnits && a === 0 && u === 0 && p === 0 || (c += `${p} ${S}${e.inlineSeparator}`), c += `${f} ${x}`, m.innerHTML = c.replace(/, $/, ""); - } else - e.removeZeroUnits && a === 0 ? o.days.full.style.display = "none" : (o.days.amount.textContent = (e.zeroPad && a.toString().length < 2 ? "0" : "") + a, o.days.word.textContent = T, o.days.full.style.display = ""), e.removeZeroUnits && a === 0 && u === 0 ? o.hours.full.style.display = "none" : (o.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, o.hours.word.textContent = b, o.hours.full.style.display = ""), e.removeZeroUnits && a === 0 && u === 0 && p === 0 ? o.minutes.full.style.display = "none" : (o.minutes.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, o.minutes.word.textContent = S, o.minutes.full.style.display = ""), o.seconds.amount.textContent = (e.zeroPad && f.toString().length < 2 ? "0" : "") + f, o.seconds.word.textContent = x, o.seconds.full.style.display = ""; - }, U(), d = window.setInterval(U, e.refresh); - }; - P(h) ? Array.prototype.forEach.call(h, (l) => { - v(l); - }) : v(h); - }; - typeof module < "u" && module.exports ? module.exports = D : window.simplyCountdown = D; -})(); -const Z = simplyCountdown; -export { - Z as default -}; -//# sourceMappingURL=simplyCountdown.es.js.map diff --git a/dist/simplyCountdown.es.js.map b/dist/simplyCountdown.es.js.map index fb824eb..e69de29 100644 --- a/dist/simplyCountdown.es.js.map +++ b/dist/simplyCountdown.es.js.map @@ -1 +0,0 @@ -{"version":3,"file":"simplyCountdown.es.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for modern module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n}(window));\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt","simplyCountdown$1"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.iife.js b/dist/simplyCountdown.iife.js index a46682a..e69de29 100644 --- a/dist/simplyCountdown.iife.js +++ b/dist/simplyCountdown.iife.js @@ -1,11 +0,0 @@ -var simplyCountdown=function(){"use strict";/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/return function(Z){let v=function(n){let s,i=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,s,i)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(i),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},I=(n,s)=>{let i;return n.inline?(i=document.createElement("span"),i.classList.add(n.inlineClass),i):{days:C(s,n,"simply-days-section"),hours:C(s,n,"simply-hours-section"),minutes:C(s,n,"simply-minutes-section"),seconds:C(s,n,"simply-seconds-section")}},x=(n,s)=>{const i=Object.getPrototypeOf(n);let e=v({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,m)=>m>1?l+"s":l,root:"day"},hours:{lambda:(l,m)=>m>1?l+"s":l,root:"hour"},minutes:{lambda:(l,m)=>m>1?l+"s":l,root:"minute"},seconds:{lambda:(l,m)=>m>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,a,u,p,f,h;i===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let D=l=>{let m=l,o=I(e,m),U;U=function(){let T,b,S,$,E=()=>{a=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),f=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?E():e.countUp?(y=(t.getTime()-r)/1e3,E()):(a=0,u=0,p=0,f=0,window.clearInterval(d),e.onEnd());let w=(c,L)=>c.hasOwnProperty("lambda")?c.lambda(c.root,L):c.root,g=e.words;if(T=w(g.days,a),b=w(g.hours,u),S=w(g.minutes,p),$=w(g.seconds,f),e.inline){let c="";e.removeZeroUnits&&a===0||(c+=`${a} ${T}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0||(c+=`${u} ${b}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0&&p===0||(c+=`${p} ${S}${e.inlineSeparator}`),c+=`${f} ${$}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&a===0?o.days.full.style.display="none":(o.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,o.days.word.textContent=T,o.days.full.style.display=""),e.removeZeroUnits&&a===0&&u===0?o.hours.full.style.display="none":(o.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,o.hours.word.textContent=b,o.hours.full.style.display=""),e.removeZeroUnits&&a===0&&u===0&&p===0?o.minutes.full.style.display="none":(o.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,o.minutes.word.textContent=S,o.minutes.full.style.display=""),o.seconds.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,o.seconds.word.textContent=$,o.seconds.full.style.display=""},U(),d=window.setInterval(U,e.refresh)};P(h)?Array.prototype.forEach.call(h,l=>{D(l)}):D(h)};typeof module<"u"&&module.exports?module.exports=x:window.simplyCountdown=x}(),simplyCountdown}(); -//# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/dist/simplyCountdown.iife.js.map b/dist/simplyCountdown.iife.js.map index dc57775..e69de29 100644 --- a/dist/simplyCountdown.iife.js.map +++ b/dist/simplyCountdown.iife.js.map @@ -1 +0,0 @@ -{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for modern module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n}(window));\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.umd.js b/dist/simplyCountdown.umd.js index 2073666..e69de29 100644 --- a/dist/simplyCountdown.umd.js +++ b/dist/simplyCountdown.umd.js @@ -1,11 +0,0 @@ -(function(C,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(C=typeof globalThis<"u"?globalThis:C||self,C.simplyCountdown=w())})(this,function(){"use strict";/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/return function(w){let v=function(n){let s,a=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),g=(n,s,a)=>{let e=document.createElement("div"),d=document.createElement("span"),i=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(i),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(a),d.classList.add(s.amountClass),i.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:i}},O=(n,s)=>{let a;return n.inline?(a=document.createElement("span"),a.classList.add(n.inlineClass),a):{days:g(s,n,"simply-days-section"),hours:g(s,n,"simply-hours-section"),minutes:g(s,n,"simply-minutes-section"),seconds:g(s,n,"simply-seconds-section")}},E=(n,s)=>{const a=Object.getPrototypeOf(n);let e=v({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,m)=>m>1?o+"s":o,root:"day"},hours:{lambda:(o,m)=>m>1?o+"s":o,root:"hour"},minutes:{lambda:(o,m)=>m>1?o+"s":o,root:"minute"},seconds:{lambda:(o,m)=>m>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,i,t,y,r,u,p,f,h;a===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?i=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):i=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=o=>{let m=o,l=O(e,m),b;b=function(){let x,S,$,D,I=()=>{r=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),f=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((i-t.getTime())/1e3),y>0?I():e.countUp?(y=(t.getTime()-i)/1e3,I()):(r=0,u=0,p=0,f=0,window.clearInterval(d),e.onEnd());let U=(c,Z)=>c.hasOwnProperty("lambda")?c.lambda(c.root,Z):c.root,T=e.words;if(x=U(T.days,r),S=U(T.hours,u),$=U(T.minutes,p),D=U(T.seconds,f),e.inline){let c="";e.removeZeroUnits&&r===0||(c+=`${r} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0||(c+=`${u} ${S}${e.inlineSeparator}`),e.removeZeroUnits&&r===0&&u===0&&p===0||(c+=`${p} ${$}${e.inlineSeparator}`),c+=`${f} ${D}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&r===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&r.toString().length<2?"0":"")+r,l.days.word.textContent=x,l.days.full.style.display=""),e.removeZeroUnits&&r===0&&u===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,l.hours.word.textContent=S,l.hours.full.style.display=""),e.removeZeroUnits&&r===0&&u===0&&p===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,l.minutes.word.textContent=$,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,l.seconds.word.textContent=D,l.seconds.full.style.display=""},b(),d=window.setInterval(b,e.refresh)};L(h)?Array.prototype.forEach.call(h,o=>{P(o)}):P(h)};typeof module<"u"&&module.exports?module.exports=E:window.simplyCountdown=E}(),simplyCountdown}); -//# sourceMappingURL=simplyCountdown.umd.js.map diff --git a/dist/simplyCountdown.umd.js.map b/dist/simplyCountdown.umd.js.map index 28a3456..e69de29 100644 --- a/dist/simplyCountdown.umd.js.map +++ b/dist/simplyCountdown.umd.js.map @@ -1 +0,0 @@ -{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n(function (exports) {\n 'use strict';\n\n /**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n let extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n };\n\n let isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n };\n\n /**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\n let createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n };\n\n /**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\n let createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n return spanTag;\n };\n\n /**\n * simplyCountdown, create and display the coundtown.\n * @param elt\n * @param args (parameters)\n */\n let simplyCountdown = (elt, args) => {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n };\n\n // Export for modern module systems\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = simplyCountdown;\n } else {\n window.simplyCountdown = simplyCountdown;\n }\n}(window));\n\nexport default simplyCountdown;\n"],"names":["exports","extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/dist/themes/cyber.min.css b/dist/themes/cyber.min.css new file mode 100644 index 0000000..e69de29 diff --git a/dist/themes/dark.min.css b/dist/themes/dark.min.css new file mode 100644 index 0000000..e69de29 diff --git a/dist/themes/default.min.css b/dist/themes/default.min.css new file mode 100644 index 0000000..e69de29 diff --git a/dist/themes/losange.min.css b/dist/themes/losange.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/assets/main.css b/docs/assets/main.css deleted file mode 100644 index 63ede3b..0000000 --- a/docs/assets/main.css +++ /dev/null @@ -1 +0,0 @@ -.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;gap:.35rem;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;gap:.25rem}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}.i-lucide-clock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-github{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-heart{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-package{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='m3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.i-lucide-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em}.container{margin-left:auto;margin-right:auto;max-width:72rem;padding-left:1rem;padding-right:1rem}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.inline{display:inline}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-6>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1.5rem * var(--un-space-y-reverse))}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-800{--un-bg-opacity:1;background-color:rgb(31 41 55 / var(--un-bg-opacity))}.bg-gray-900{--un-bg-opacity:1;background-color:rgb(17 24 39 / var(--un-bg-opacity))}.bg-indigo-500{--un-bg-opacity:1;background-color:rgb(99 102 241 / var(--un-bg-opacity))}.bg-slate-900{--un-bg-opacity:1;background-color:rgb(15 23 42 / var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.hover\:bg-indigo-400:hover{--un-bg-opacity:1;background-color:rgb(129 140 248 / var(--un-bg-opacity))}.hover\:bg-indigo-50:hover{--un-bg-opacity:1;background-color:rgb(238 242 255 / var(--un-bg-opacity))}.from-indigo-600{--un-gradient-from-position:0%;--un-gradient-from:rgb(79 70 229 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(79 70 229 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-violet-600{--un-gradient-to-position:100%;--un-gradient-to:rgb(124 58 237 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-br{--un-gradient-shape:to bottom right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.p-0{padding:0}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-indigo-100{--un-text-opacity:1;color:rgb(224 231 255 / var(--un-text-opacity))}.text-indigo-400{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-indigo-600{--un-text-opacity:1;color:rgb(79 70 229 / var(--un-text-opacity))}.text-red-500{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.text-slate-100{--un-text-opacity:1;color:rgb(241 245 249 / var(--un-text-opacity))}.text-slate-300{--un-text-opacity:1;color:rgb(203 213 225 / var(--un-text-opacity))}.color-white,.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow-400{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.hover\:text-indigo-300:hover{--un-text-opacity:1;color:rgb(165 180 252 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none} diff --git a/docs/assets/main.js b/docs/assets/main.js deleted file mode 100644 index f2ed1d5..0000000 --- a/docs/assets/main.js +++ /dev/null @@ -1,19 +0,0 @@ -var z=(p,i)=>()=>(i||p((i={exports:{}}).exports,i),i.exports);var W=z((Y,M)=>{(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))C(f);new MutationObserver(f=>{for(const g of f)if(g.type==="childList")for(const n of g.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&C(n)}).observe(document,{childList:!0,subtree:!0});function S(f){const g={};return f.integrity&&(g.integrity=f.integrity),f.referrerPolicy&&(g.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?g.credentials="include":f.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function C(f){if(f.ep)return;f.ep=!0;const g=S(f);fetch(f.href,g)}})();/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/(function(p){let i=function(n){let o,d=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,o,d)=>{let e=document.createElement("div"),u=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(u),t.appendChild(r),e.appendChild(t),e.classList.add(o.sectionClass),e.classList.add(d),u.classList.add(o.amountClass),r.classList.add(o.wordClass),n.appendChild(e),{full:e,amount:u,word:r}},f=(n,o)=>{let d;return n.inline?(d=document.createElement("span"),d.classList.add(n.inlineClass),d):{days:C(o,n,"simply-days-section"),hours:C(o,n,"simply-hours-section"),minutes:C(o,n,"simply-minutes-section"),seconds:C(o,n,"simply-seconds-section")}},g=(n,o)=>{const d=Object.getPrototypeOf(n);let e=i({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(s,m)=>m>1?s+"s":s,root:"day"},hours:{lambda:(s,m)=>m>1?s+"s":s,root:"hour"},minutes:{lambda:(s,m)=>m>1?s+"s":s,root:"minute"},seconds:{lambda:(s,m)=>m>1?s+"s":s,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},o),u,r,t,h,a,c,w,U,D;d===String.prototype?D=document.querySelectorAll(n):D=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let O=s=>{let m=s,l=f(e,m),v;v=function(){let E,$,x,L,I=()=>{a=parseInt(h/86400,10),h%=86400,c=parseInt(h/3600,10),h%=3600,w=parseInt(h/60,10),U=parseInt(h%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,h=Math.floor((r-t.getTime())/1e3),h>0?I():e.countUp?(h=(t.getTime()-r)/1e3,I()):(a=0,c=0,w=0,U=0,window.clearInterval(u),e.onEnd());let b=(y,Z)=>y.hasOwnProperty("lambda")?y.lambda(y.root,Z):y.root,T=e.words;if(E=b(T.days,a),$=b(T.hours,c),x=b(T.minutes,w),L=b(T.seconds,U),e.inline){let y="";e.removeZeroUnits&&a===0||(y+=`${a} ${E}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0||(y+=`${c} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0&&w===0||(y+=`${w} ${x}${e.inlineSeparator}`),y+=`${U} ${L}`,m.innerHTML=y.replace(/, $/,"")}else e.removeZeroUnits&&a===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,l.days.word.textContent=E,l.days.full.style.display=""),e.removeZeroUnits&&a===0&&c===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&c.toString().length<2?"0":"")+c,l.hours.word.textContent=$,l.hours.full.style.display=""),e.removeZeroUnits&&a===0&&c===0&&w===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&w.toString().length<2?"0":"")+w,l.minutes.word.textContent=x,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&U.toString().length<2?"0":"")+U,l.seconds.word.textContent=L,l.seconds.full.style.display=""},v(),u=window.setInterval(v,e.refresh)};S(D)?Array.prototype.forEach.call(D,s=>{O(s)}):O(D)};typeof M<"u"&&M.exports?M.exports=g:window.simplyCountdown=g})();simplyCountdown;/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/(function(p){let i=function(n){let o,d=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,o,d)=>{let e=document.createElement("div"),u=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(u),t.appendChild(r),e.appendChild(t),e.classList.add(o.sectionClass),e.classList.add(d),u.classList.add(o.amountClass),r.classList.add(o.wordClass),n.appendChild(e),{full:e,amount:u,word:r}},f=(n,o)=>{let d;return n.inline?(d=document.createElement("span"),d.classList.add(n.inlineClass),d):{days:C(o,n,"simply-days-section"),hours:C(o,n,"simply-hours-section"),minutes:C(o,n,"simply-minutes-section"),seconds:C(o,n,"simply-seconds-section")}},g=(n,o)=>{const d=Object.getPrototypeOf(n);let e=i({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(s,m)=>m>1?s+"s":s,root:"day"},hours:{lambda:(s,m)=>m>1?s+"s":s,root:"hour"},minutes:{lambda:(s,m)=>m>1?s+"s":s,root:"minute"},seconds:{lambda:(s,m)=>m>1?s+"s":s,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},o),u,r,t,h,a,c,w,U,D;d===String.prototype?D=document.querySelectorAll(n):D=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let O=s=>{let m=s,l=f(e,m),v;v=function(){let E,$,x,L,I=()=>{a=parseInt(h/86400,10),h%=86400,c=parseInt(h/3600,10),h%=3600,w=parseInt(h/60,10),U=parseInt(h%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,h=Math.floor((r-t.getTime())/1e3),h>0?I():e.countUp?(h=(t.getTime()-r)/1e3,I()):(a=0,c=0,w=0,U=0,window.clearInterval(u),e.onEnd());let b=(y,Z)=>y.hasOwnProperty("lambda")?y.lambda(y.root,Z):y.root,T=e.words;if(E=b(T.days,a),$=b(T.hours,c),x=b(T.minutes,w),L=b(T.seconds,U),e.inline){let y="";e.removeZeroUnits&&a===0||(y+=`${a} ${E}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0||(y+=`${c} ${$}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&c===0&&w===0||(y+=`${w} ${x}${e.inlineSeparator}`),y+=`${U} ${L}`,m.innerHTML=y.replace(/, $/,"")}else e.removeZeroUnits&&a===0?l.days.full.style.display="none":(l.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,l.days.word.textContent=E,l.days.full.style.display=""),e.removeZeroUnits&&a===0&&c===0?l.hours.full.style.display="none":(l.hours.amount.textContent=(e.zeroPad&&c.toString().length<2?"0":"")+c,l.hours.word.textContent=$,l.hours.full.style.display=""),e.removeZeroUnits&&a===0&&c===0&&w===0?l.minutes.full.style.display="none":(l.minutes.amount.textContent=(e.zeroPad&&w.toString().length<2?"0":"")+w,l.minutes.word.textContent=x,l.minutes.full.style.display=""),l.seconds.amount.textContent=(e.zeroPad&&U.toString().length<2?"0":"")+U,l.seconds.word.textContent=L,l.seconds.full.style.display=""},v(),u=window.setInterval(v,e.refresh)};S(D)?Array.prototype.forEach.call(D,s=>{O(s)}):O(D)};typeof M<"u"&&M.exports?M.exports=g:window.simplyCountdown=g})();const P=simplyCountdown;window.simplyCountdown=P;document.addEventListener("DOMContentLoaded",function(){let p=new Date;p.setMonth(p.getMonth()+1),P(".simply-countdown-one",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate(),enableUtc:!0}),P("#simply-countdown-losange",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate(),enableUtc:!1}),P(".simply-countdown-two",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate()-30,removeZeroUnits:!0}),P(".simply-countdown-inline",{year:p.getFullYear(),month:p.getMonth()+1,day:p.getDate(),inline:!0});let i=new Date;i.setSeconds(i.getSeconds()+30),P(".sc-inline-header__cd",{year:i.getFullYear(),month:i.getMonth()+1,day:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),removeZeroUnits:!0,inline:!0,inlineSeparator:" - ",onEnd:()=>{let C=document.querySelector(".show-after-header-cd");C.classList.add("active"),document.querySelector(".sc-inline-header").classList.add("hide"),window.setInterval(()=>{C.classList.remove("active")},2e4)}});var S=new Date;P(".simply-countdown-countup",{year:S.getFullYear(),month:S.getMonth()+1,day:S.getDate(),hours:S.getHours(),minutes:S.getMinutes(),seconds:S.getSeconds(),countUp:!0})})});export default W(); diff --git a/docs/assets/simplyCountdown.iife.js b/docs/assets/simplyCountdown.iife.js deleted file mode 100644 index a46682a..0000000 --- a/docs/assets/simplyCountdown.iife.js +++ /dev/null @@ -1,11 +0,0 @@ -var simplyCountdown=function(){"use strict";/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/return function(Z){let v=function(n){let s,i=n||{};for(let e=1;en!==null&&Symbol.iterator in Object(n),C=(n,s,i)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(s.sectionClass),e.classList.add(i),d.classList.add(s.amountClass),r.classList.add(s.wordClass),n.appendChild(e),{full:e,amount:d,word:r}},I=(n,s)=>{let i;return n.inline?(i=document.createElement("span"),i.classList.add(n.inlineClass),i):{days:C(s,n,"simply-days-section"),hours:C(s,n,"simply-hours-section"),minutes:C(s,n,"simply-minutes-section"),seconds:C(s,n,"simply-seconds-section")}},x=(n,s)=>{const i=Object.getPrototypeOf(n);let e=v({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,m)=>m>1?l+"s":l,root:"day"},hours:{lambda:(l,m)=>m>1?l+"s":l,root:"hour"},minutes:{lambda:(l,m)=>m>1?l+"s":l,root:"minute"},seconds:{lambda:(l,m)=>m>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},s),d,r,t,y,a,u,p,f,h;i===String.prototype?h=document.querySelectorAll(n):h=n,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let D=l=>{let m=l,o=I(e,m),U;U=function(){let T,b,S,$,E=()=>{a=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,p=parseInt(y/60,10),f=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((r-t.getTime())/1e3),y>0?E():e.countUp?(y=(t.getTime()-r)/1e3,E()):(a=0,u=0,p=0,f=0,window.clearInterval(d),e.onEnd());let w=(c,L)=>c.hasOwnProperty("lambda")?c.lambda(c.root,L):c.root,g=e.words;if(T=w(g.days,a),b=w(g.hours,u),S=w(g.minutes,p),$=w(g.seconds,f),e.inline){let c="";e.removeZeroUnits&&a===0||(c+=`${a} ${T}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0||(c+=`${u} ${b}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0&&p===0||(c+=`${p} ${S}${e.inlineSeparator}`),c+=`${f} ${$}`,m.innerHTML=c.replace(/, $/,"")}else e.removeZeroUnits&&a===0?o.days.full.style.display="none":(o.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,o.days.word.textContent=T,o.days.full.style.display=""),e.removeZeroUnits&&a===0&&u===0?o.hours.full.style.display="none":(o.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,o.hours.word.textContent=b,o.hours.full.style.display=""),e.removeZeroUnits&&a===0&&u===0&&p===0?o.minutes.full.style.display="none":(o.minutes.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,o.minutes.word.textContent=S,o.minutes.full.style.display=""),o.seconds.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,o.seconds.word.textContent=$,o.seconds.full.style.display=""},U(),d=window.setInterval(U,e.refresh)};P(h)?Array.prototype.forEach.call(h,l=>{D(l)}):D(h)};typeof module<"u"&&module.exports?module.exports=x:window.simplyCountdown=x}(),simplyCountdown}(); -//# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/docs/dist/assets/main.min.css b/docs/dist/assets/main.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/dist/assets/main.min.js b/docs/dist/assets/main.min.js new file mode 100644 index 0000000..e69de29 diff --git a/docs/dist/favicon.ico b/docs/dist/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/docs/dist/index.html b/docs/dist/index.html new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/assets/js/examples.js b/docs/src/assets/js/examples.js new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/assets/js/highlight.js b/docs/src/assets/js/highlight.js new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/assets/styles/highlight.css b/docs/src/assets/styles/highlight.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/assets/styles/main.css b/docs/src/assets/styles/main.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/index.html b/docs/src/index.html similarity index 66% rename from docs/index.html rename to docs/src/index.html index 345666a..1cccb89 100644 --- a/docs/index.html +++ b/docs/src/index.html @@ -6,21 +6,19 @@ simplyCountdown.js | A Tiny and dead simple Javascript Countdown Library + + - - - - - - - - - + + + + + - +

simplyCountdown.js

@@ -28,12 +26,12 @@

simplyCountdown.js

@@ -43,31 +41,31 @@

simplyCountdown.js

-

- +

+ Installation

-
+ NPM

-
$ npm install simplycountdown
+
npm install simplycountdown

-
+ Yarn

-
$ yarn add simplycountdown
+
yarn add simplycountdown

- + Examples

@@ -103,12 +101,11 @@

Losange Theme

- + Usage

-
-                        
+                    

     simplyCountdown('[CSS-SELECTOR]', {
         year: 2025, // required
         month: 6, // required
@@ -134,29 +131,40 @@ 

zeroPad: false, countUp: false }); - -

+
-
-
-

- Made with

by - Vincent Loy -

-

- Like simplyCountdown? - - Give it a star on Github!

- -

+ - + + - + \ No newline at end of file diff --git a/docs/src/main.js b/docs/src/main.js new file mode 100644 index 0000000..e677abe --- /dev/null +++ b/docs/src/main.js @@ -0,0 +1,59 @@ +// Import styles +import './style.css' + +// Import highlight.js +import hljs from 'highlight.js/lib/core' +import javascript from 'highlight.js/lib/languages/javascript' +import 'highlight.js/styles/github-dark.css' + +// Import our countdown library and themes +import '../../src/themes/default.css' +import '../../src/themes/dark.css' +import '../../src/themes/cyber.css' +import '../../src/themes/losange.css' +import { simplyCountdown } from '../../src/core/simplyCountdown.js' + +// Configure highlight.js +hljs.registerLanguage('javascript', javascript) +hljs.highlightAll() + +// Configuration des exemples +const nextYear = new Date().getFullYear() + 1 + +// Example 1: Default Theme +simplyCountdown('.simply-countdown-one', { + year: nextYear, + month: 6, + day: 28, +}) + +// Example 2: Dark Theme without Zero Units +simplyCountdown('.simply-countdown-two', { + year: nextYear, + month: 6, + day: 28, + zeroPad: false, +}) + +// Example 3: Inline +simplyCountdown('.simply-countdown-inline', { + year: nextYear, + month: 6, + day: 28, + inline: true, +}) + +// Example 4: Count Up with Cyberpunk Theme +simplyCountdown('.simply-countdown-countup', { + year: 2023, + month: 1, + day: 1, + countUp: true, +}) + +// Example 5: Losange Theme +simplyCountdown('#simply-countdown-losange', { + year: nextYear, + month: 6, + day: 28, +}) \ No newline at end of file diff --git a/docs/src/style.css b/docs/src/style.css new file mode 100644 index 0000000..f57da3b --- /dev/null +++ b/docs/src/style.css @@ -0,0 +1,9 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer components { + .btn { + @apply px-4 py-2 rounded inline-block bg-primary text-white cursor-pointer hover:bg-primary-dark disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50; + } +} diff --git a/demo/index.html b/index.html similarity index 86% rename from demo/index.html rename to index.html index 62fb35b..29f1eb4 100644 --- a/demo/index.html +++ b/index.html @@ -9,19 +9,9 @@ - - - - - - - - - - - - + +
@@ -46,7 +36,7 @@

simplyCountdown.js

-

+

Installation

@@ -56,14 +46,14 @@

NPM

-
$ npm install simplycountdown
+
npm install simplycountdown

Yarn

-
$ yarn add simplycountdown
+
yarn add simplycountdown
@@ -170,7 +160,6 @@

- - + diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 70d1f31..0000000 --- a/package-lock.json +++ /dev/null @@ -1,5839 +0,0 @@ -{ - "name": "simplycountdown", - "version": "3.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "simplycountdown", - "version": "3.0.0", - "license": "MIT", - "devDependencies": { - "@iconify-json/lucide": "^1.2.20", - "@unocss/preset-attributify": "^0.58.0", - "@unocss/preset-icons": "^0.65.2", - "@unocss/preset-typography": "^0.58.9", - "@unocss/preset-wind": "^0.58.9", - "@unocss/reset": "^0.65.2", - "fs-extra": "^11.2.0", - "terser": "^5.24.0", - "unocss": "^0.65.2", - "vite": "^6.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@antfu/install-pkg": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", - "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "package-manager-detector": "^0.2.0", - "tinyexec": "^0.3.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.26.3" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@iconify-json/lucide": { - "version": "1.2.20", - "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.20.tgz", - "integrity": "sha512-m/8rqukvQfsE+MYTwNXCxP/K2iucTCGSQfS0XZhYpkZKGRdiEOdAAnd8Vv+E78xKK94Jza2eTc5ihxbw6+i7EQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@iconify/types": "*" - } - }, - "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, - "license": "MIT" - }, - "node_modules/@iconify/utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.2.1.tgz", - "integrity": "sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^0.4.1", - "@antfu/utils": "^0.7.10", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.13.0", - "kolorist": "^1.8.0", - "local-pkg": "^0.5.1", - "mlly": "^1.7.3" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", - "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", - "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", - "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", - "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", - "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", - "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", - "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", - "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", - "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", - "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", - "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", - "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", - "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", - "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", - "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, - "node_modules/@unocss/astro": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.65.2.tgz", - "integrity": "sha512-lpGoleJToxaYeN5LTGrNbvbXATNWswgoQwlljIJ9kWOjx4NbGC71pXRvDQSb9yRFDTCr5S2hMtupna4ulrHisA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/reset": "0.65.2", - "@unocss/vite": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/@unocss/astro/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/cli": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.65.2.tgz", - "integrity": "sha512-N2SeSeGNNuWUQAtsOC02Uqhm1wCtyoRRmh8ylzA/NttbXJlqg5P03vxGfzmaRA+VJhNLwjFqhYE6Yuu4nqCwlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@rollup/pluginutils": "^5.1.4", - "@unocss/config": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/preset-uno": "0.65.2", - "cac": "^6.7.14", - "chokidar": "^3.6.0", - "colorette": "^2.0.20", - "consola": "^3.2.3", - "magic-string": "^0.30.17", - "pathe": "^1.1.2", - "perfect-debounce": "^1.0.0", - "tinyglobby": "^0.2.10" - }, - "bin": { - "unocss": "bin/unocss.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/cli/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/cli/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@unocss/cli/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@unocss/config": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.65.2.tgz", - "integrity": "sha512-HDQVoWwrkZ6qRCXus11bUM12eNoErZ7r4lPY5EQqtrwxAcul+l5StvYk0qXr3IC8Ct42RDjKGeM03o7VBpwafQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "unconfig": "~0.6.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/config/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/core": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.9.tgz", - "integrity": "sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/extractor-arbitrary-variants": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.9.tgz", - "integrity": "sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.58.9" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/inspector": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.65.2.tgz", - "integrity": "sha512-90kBrMiQqHpGzPhT9ot7bDAFs+G9RxWROVxrT/JwDqNe+OmcLh5uETO84NU0ScurniEJ8umGBLqmsPGLmHML2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/rule-utils": "0.65.2", - "gzip-size": "^6.0.0", - "sirv": "^3.0.0", - "vue-flow-layout": "^0.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/inspector/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/inspector/node_modules/@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/postcss": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.65.2.tgz", - "integrity": "sha512-vhBWsXnuWUP7qybnucle+gja1YBjL2NRfzCwSaOoRc7C5y201mqfC55AFqjGdxEAcqeeXVtx98Y1oh0FSa5GzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/config": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/rule-utils": "0.65.2", - "css-tree": "^3.1.0", - "postcss": "^8.4.49", - "tinyglobby": "^0.2.10" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/@unocss/postcss/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/postcss/node_modules/@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-attributify": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.9.tgz", - "integrity": "sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.58.9" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-icons": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.65.2.tgz", - "integrity": "sha512-NruqU6PlRzyJT0qJQL3yZ/7KrolIWRfXQf82ZfAktPTHYgvaSS4+KtlStsoYSXLSGjPydMlXuYlj8Pum5rTTjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@iconify/utils": "^2.2.1", - "@unocss/core": "0.65.2", - "ofetch": "^1.4.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-icons/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-mini": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.9.tgz", - "integrity": "sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.58.9", - "@unocss/extractor-arbitrary-variants": "0.58.9", - "@unocss/rule-utils": "0.58.9" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-tagify": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.65.2.tgz", - "integrity": "sha512-YFhne3eNfZUvKT/MJ7SgjK/FXLradgZCKc5XXsMXA4YTAhNAvQIUZCNmlBzaqDevwbyF6UlXxGHfHUA8CdpSWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-tagify/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-typography": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.9.tgz", - "integrity": "sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.58.9", - "@unocss/preset-mini": "0.58.9" - } - }, - "node_modules/@unocss/preset-uno": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.65.2.tgz", - "integrity": "sha512-8HA21mlXwnkXHhtSKYbBYJTmtJN0ncUPSJKiavNGkJUB4cUUbEeFRx2aNIfhOjKYIcH/MNzRc2YYsAAM2s6vgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/preset-wind": "0.65.2", - "@unocss/rule-utils": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-uno/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-uno/node_modules/@unocss/extractor-arbitrary-variants": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", - "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-uno/node_modules/@unocss/preset-mini": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", - "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/extractor-arbitrary-variants": "0.65.2", - "@unocss/rule-utils": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-uno/node_modules/@unocss/preset-wind": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", - "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/rule-utils": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-uno/node_modules/@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-web-fonts": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.65.2.tgz", - "integrity": "sha512-Pl0sKjhrb6FuDID3PMwGflZXwSVW1G1vZEwCd0yEwYH92421VEfK5D073cUtZ1l6irqIA3aux9uMWA9iKtQj7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "ofetch": "^1.4.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-web-fonts/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-wind": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.9.tgz", - "integrity": "sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.58.9", - "@unocss/preset-mini": "0.58.9", - "@unocss/rule-utils": "0.58.9" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/reset": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.65.2.tgz", - "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/rule-utils": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.9.tgz", - "integrity": "sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "^0.58.9", - "magic-string": "^0.30.8" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-attributify-jsx": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.65.2.tgz", - "integrity": "sha512-Kan2EPHc65t/iHdjqJvtRgc+lUnq2uSDknsTrOk+w1N/ZmjcbVf2E6VXbxBCqmHowJVipeHrxeVX1POyBm0bTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-attributify-jsx/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-compile-class": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.65.2.tgz", - "integrity": "sha512-z615DntK0bN0v3QicEGVmzt57yXXB20GhpOBTsShq/nTnTP0v+Av1JTbGQBSg8lzmW0z7QdLhCvSAQs8OKMmRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-compile-class/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-directives": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.65.2.tgz", - "integrity": "sha512-CwdjBoqWbX5FkJrt6Mpy6nBjppuQV2zvIma5W2rdd5XLsYeR0mhdbbQfgvRF94pFIR86ExfOKu/EI6bGuTcaHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/rule-utils": "0.65.2", - "css-tree": "^3.1.0" - } - }, - "node_modules/@unocss/transformer-directives/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-directives/node_modules/@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-variant-group": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.65.2.tgz", - "integrity": "sha512-Sh/WKN7lys2TUVnA3Nu7Yn3rLqy0OqfWSf6PbY1RKAD+N7cRlabu3vJF0gIMwV+rmVQnHs/k9BWjNPlB56Kl/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-variant-group/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/vite": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.65.2.tgz", - "integrity": "sha512-MC2PqDB2tbYky7s1XTBoOAdtvUIwwl65qL1UbHTLYiWO9Q704IZUYvrdtpgieR+8IPu2dG2vUyIe3dbD4zPf9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@rollup/pluginutils": "^5.1.4", - "@unocss/config": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/inspector": "0.65.2", - "chokidar": "^3.6.0", - "magic-string": "^0.30.17", - "tinyglobby": "^0.2.10" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" - } - }, - "node_modules/@unocss/vite/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/vite/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@unocss/vite/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "vue": "3.5.13" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bundle-require": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", - "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "load-tsconfig": "^0.2.3" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "esbuild": ">=0.18" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/consola": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.0.tgz", - "integrity": "sha512-kxltocVQCwQNFvw40dlVRYeAkAvtYjMFZYNlOcsF5wExPpGwPxMwgx4IfDJvBRPtBpnQwItd5WkTaR0ZwT/TmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/destr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", - "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true, - "license": "MIT" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/importx": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/importx/-/importx-0.5.1.tgz", - "integrity": "sha512-YrRaigAec1sC2CdIJjf/hCH1Wp9Ii8Cq5ROw4k5nJ19FVl2FcJUHZ5gGIb1vs8+JNYIyOJpc2fcufS2330bxDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-require": "^5.0.0", - "debug": "^4.4.0", - "esbuild": "^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", - "jiti": "^2.4.1", - "pathe": "^1.1.2", - "tsx": "^4.19.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "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, - "license": "MIT" - }, - "node_modules/load-tsconfig": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", - "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mlly": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", - "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^1.1.2", - "pkg-types": "^1.2.1", - "ufo": "^1.5.4" - } - }, - "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/node-fetch-native": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", - "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ofetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", - "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", - "dev": true, - "license": "MIT", - "dependencies": { - "destr": "^2.0.3", - "node-fetch-native": "^1.6.4", - "ufo": "^1.5.4" - } - }, - "node_modules/package-manager-detector": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", - "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-types": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", - "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.2", - "pathe": "^1.1.2" - } - }, - "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/sass": { - "version": "1.83.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", - "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/sirv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", - "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tinyexec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", - "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unconfig": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.6.0.tgz", - "integrity": "sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/utils": "^0.7.10", - "defu": "^6.1.4", - "importx": "^0.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unocss": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.65.2.tgz", - "integrity": "sha512-PEN8Yltr/n6xdNcI9iqIK4Dp/fpQ1bPa4aR2TwFg2lV6aRA2PNzarviqL62oOqXYSyQ4sqW3s/oaWD3JGOgJ1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/astro": "0.65.2", - "@unocss/cli": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/postcss": "0.65.2", - "@unocss/preset-attributify": "0.65.2", - "@unocss/preset-icons": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/preset-tagify": "0.65.2", - "@unocss/preset-typography": "0.65.2", - "@unocss/preset-uno": "0.65.2", - "@unocss/preset-web-fonts": "0.65.2", - "@unocss/preset-wind": "0.65.2", - "@unocss/transformer-attributify-jsx": "0.65.2", - "@unocss/transformer-compile-class": "0.65.2", - "@unocss/transformer-directives": "0.65.2", - "@unocss/transformer-variant-group": "0.65.2", - "@unocss/vite": "0.65.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@unocss/webpack": "0.65.2", - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" - }, - "peerDependenciesMeta": { - "@unocss/webpack": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/unocss/node_modules/@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unocss/node_modules/@unocss/extractor-arbitrary-variants": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", - "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unocss/node_modules/@unocss/preset-attributify": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.65.2.tgz", - "integrity": "sha512-Aj67qbRoBPYutJasi7EKUaxKwJwEvhA0SVYjXwZG3kjTTBkp1rJvNI0wGXbdz9FkesymiC1KgzBF2UCsFsZ0dQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unocss/node_modules/@unocss/preset-mini": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", - "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/extractor-arbitrary-variants": "0.65.2", - "@unocss/rule-utils": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unocss/node_modules/@unocss/preset-typography": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.65.2.tgz", - "integrity": "sha512-k/uOu2ASnBQtotMBsx9pOmCgS+pyn7/4mCiifoeTTLnhMK8F6dcGLbVQkOnUD2hsboKXJ1oHgd+1qX0QVr61ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2" - } - }, - "node_modules/unocss/node_modules/@unocss/preset-wind": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", - "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/rule-utils": "0.65.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unocss/node_modules/@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/vite": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", - "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "0.24.0", - "postcss": "^8.4.49", - "rollup": "^4.23.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-flow-layout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/vue-flow-layout/-/vue-flow-layout-0.1.1.tgz", - "integrity": "sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vue": "^3.4.37" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@antfu/install-pkg": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", - "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", - "dev": true, - "requires": { - "package-manager-detector": "^0.2.0", - "tinyexec": "^0.3.0" - } - }, - "@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true - }, - "@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "peer": true - }, - "@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.26.3" - } - }, - "@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - } - }, - "@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "dev": true, - "optional": true - }, - "@iconify-json/lucide": { - "version": "1.2.20", - "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.20.tgz", - "integrity": "sha512-m/8rqukvQfsE+MYTwNXCxP/K2iucTCGSQfS0XZhYpkZKGRdiEOdAAnd8Vv+E78xKK94Jza2eTc5ihxbw6+i7EQ==", - "dev": true, - "requires": { - "@iconify/types": "*" - } - }, - "@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 - }, - "@iconify/utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.2.1.tgz", - "integrity": "sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==", - "dev": true, - "requires": { - "@antfu/install-pkg": "^0.4.1", - "@antfu/utils": "^0.7.10", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.13.0", - "kolorist": "^1.8.0", - "local-pkg": "^0.5.1", - "mlly": "^1.7.3" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0", - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - } - }, - "@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", - "dev": true, - "optional": true, - "peer": true - }, - "@polka/url": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "dev": true - }, - "@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "dependencies": { - "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true - } - } - }, - "@rollup/rollup-android-arm-eabi": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", - "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-android-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", - "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", - "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", - "dev": true, - "optional": true - }, - "@rollup/rollup-freebsd-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", - "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-freebsd-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", - "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", - "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm-musleabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", - "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", - "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", - "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", - "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", - "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", - "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-s390x-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", - "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", - "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", - "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", - "dev": true, - "optional": true - }, - "@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, - "@unocss/astro": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.65.2.tgz", - "integrity": "sha512-lpGoleJToxaYeN5LTGrNbvbXATNWswgoQwlljIJ9kWOjx4NbGC71pXRvDQSb9yRFDTCr5S2hMtupna4ulrHisA==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/reset": "0.65.2", - "@unocss/vite": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/cli": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.65.2.tgz", - "integrity": "sha512-N2SeSeGNNuWUQAtsOC02Uqhm1wCtyoRRmh8ylzA/NttbXJlqg5P03vxGfzmaRA+VJhNLwjFqhYE6Yuu4nqCwlg==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.3.0", - "@rollup/pluginutils": "^5.1.4", - "@unocss/config": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/preset-uno": "0.65.2", - "cac": "^6.7.14", - "chokidar": "^3.6.0", - "colorette": "^2.0.20", - "consola": "^3.2.3", - "magic-string": "^0.30.17", - "pathe": "^1.1.2", - "perfect-debounce": "^1.0.0", - "tinyglobby": "^0.2.10" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - } - } - }, - "@unocss/config": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.65.2.tgz", - "integrity": "sha512-HDQVoWwrkZ6qRCXus11bUM12eNoErZ7r4lPY5EQqtrwxAcul+l5StvYk0qXr3IC8Ct42RDjKGeM03o7VBpwafQ==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "unconfig": "~0.6.0" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/core": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.9.tgz", - "integrity": "sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==", - "dev": true - }, - "@unocss/extractor-arbitrary-variants": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.9.tgz", - "integrity": "sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==", - "dev": true, - "requires": { - "@unocss/core": "0.58.9" - } - }, - "@unocss/inspector": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.65.2.tgz", - "integrity": "sha512-90kBrMiQqHpGzPhT9ot7bDAFs+G9RxWROVxrT/JwDqNe+OmcLh5uETO84NU0ScurniEJ8umGBLqmsPGLmHML2g==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/rule-utils": "0.65.2", - "gzip-size": "^6.0.0", - "sirv": "^3.0.0", - "vue-flow-layout": "^0.1.1" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "requires": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - } - } - } - }, - "@unocss/postcss": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.65.2.tgz", - "integrity": "sha512-vhBWsXnuWUP7qybnucle+gja1YBjL2NRfzCwSaOoRc7C5y201mqfC55AFqjGdxEAcqeeXVtx98Y1oh0FSa5GzA==", - "dev": true, - "requires": { - "@unocss/config": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/rule-utils": "0.65.2", - "css-tree": "^3.1.0", - "postcss": "^8.4.49", - "tinyglobby": "^0.2.10" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "requires": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - } - } - } - }, - "@unocss/preset-attributify": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.9.tgz", - "integrity": "sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==", - "dev": true, - "requires": { - "@unocss/core": "0.58.9" - } - }, - "@unocss/preset-icons": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.65.2.tgz", - "integrity": "sha512-NruqU6PlRzyJT0qJQL3yZ/7KrolIWRfXQf82ZfAktPTHYgvaSS4+KtlStsoYSXLSGjPydMlXuYlj8Pum5rTTjw==", - "dev": true, - "requires": { - "@iconify/utils": "^2.2.1", - "@unocss/core": "0.65.2", - "ofetch": "^1.4.1" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/preset-mini": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.9.tgz", - "integrity": "sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==", - "dev": true, - "requires": { - "@unocss/core": "0.58.9", - "@unocss/extractor-arbitrary-variants": "0.58.9", - "@unocss/rule-utils": "0.58.9" - } - }, - "@unocss/preset-tagify": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.65.2.tgz", - "integrity": "sha512-YFhne3eNfZUvKT/MJ7SgjK/FXLradgZCKc5XXsMXA4YTAhNAvQIUZCNmlBzaqDevwbyF6UlXxGHfHUA8CdpSWg==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/preset-typography": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.9.tgz", - "integrity": "sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==", - "dev": true, - "requires": { - "@unocss/core": "0.58.9", - "@unocss/preset-mini": "0.58.9" - } - }, - "@unocss/preset-uno": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.65.2.tgz", - "integrity": "sha512-8HA21mlXwnkXHhtSKYbBYJTmtJN0ncUPSJKiavNGkJUB4cUUbEeFRx2aNIfhOjKYIcH/MNzRc2YYsAAM2s6vgw==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/preset-wind": "0.65.2", - "@unocss/rule-utils": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "@unocss/extractor-arbitrary-variants": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", - "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - } - }, - "@unocss/preset-mini": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", - "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/extractor-arbitrary-variants": "0.65.2", - "@unocss/rule-utils": "0.65.2" - } - }, - "@unocss/preset-wind": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", - "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/rule-utils": "0.65.2" - } - }, - "@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "requires": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - } - } - } - }, - "@unocss/preset-web-fonts": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.65.2.tgz", - "integrity": "sha512-Pl0sKjhrb6FuDID3PMwGflZXwSVW1G1vZEwCd0yEwYH92421VEfK5D073cUtZ1l6irqIA3aux9uMWA9iKtQj7A==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "ofetch": "^1.4.1" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/preset-wind": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.9.tgz", - "integrity": "sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==", - "dev": true, - "requires": { - "@unocss/core": "0.58.9", - "@unocss/preset-mini": "0.58.9", - "@unocss/rule-utils": "0.58.9" - } - }, - "@unocss/reset": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.65.2.tgz", - "integrity": "sha512-9UmwqYjfdxyi6j1pMfuulipLCsdH2RlF+IOG53unYxulP4C8bvwMnj8Wk+AjMiG5mIOClYyVTGk3NMRPM73/eg==", - "dev": true - }, - "@unocss/rule-utils": { - "version": "0.58.9", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.9.tgz", - "integrity": "sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==", - "dev": true, - "requires": { - "@unocss/core": "^0.58.9", - "magic-string": "^0.30.8" - } - }, - "@unocss/transformer-attributify-jsx": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.65.2.tgz", - "integrity": "sha512-Kan2EPHc65t/iHdjqJvtRgc+lUnq2uSDknsTrOk+w1N/ZmjcbVf2E6VXbxBCqmHowJVipeHrxeVX1POyBm0bTQ==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/transformer-compile-class": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.65.2.tgz", - "integrity": "sha512-z615DntK0bN0v3QicEGVmzt57yXXB20GhpOBTsShq/nTnTP0v+Av1JTbGQBSg8lzmW0z7QdLhCvSAQs8OKMmRQ==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/transformer-directives": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.65.2.tgz", - "integrity": "sha512-CwdjBoqWbX5FkJrt6Mpy6nBjppuQV2zvIma5W2rdd5XLsYeR0mhdbbQfgvRF94pFIR86ExfOKu/EI6bGuTcaHA==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/rule-utils": "0.65.2", - "css-tree": "^3.1.0" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "requires": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - } - } - } - }, - "@unocss/transformer-variant-group": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.65.2.tgz", - "integrity": "sha512-Sh/WKN7lys2TUVnA3Nu7Yn3rLqy0OqfWSf6PbY1RKAD+N7cRlabu3vJF0gIMwV+rmVQnHs/k9BWjNPlB56Kl/A==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - } - } - }, - "@unocss/vite": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.65.2.tgz", - "integrity": "sha512-MC2PqDB2tbYky7s1XTBoOAdtvUIwwl65qL1UbHTLYiWO9Q704IZUYvrdtpgieR+8IPu2dG2vUyIe3dbD4zPf9g==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.3.0", - "@rollup/pluginutils": "^5.1.4", - "@unocss/config": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/inspector": "0.65.2", - "chokidar": "^3.6.0", - "magic-string": "^0.30.17", - "tinyglobby": "^0.2.10" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - } - } - }, - "@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.48", - "source-map-js": "^1.2.0" - } - }, - "@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", - "dev": true, - "peer": true, - "requires": { - "@vue/shared": "3.5.13" - } - }, - "@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", - "dev": true, - "peer": true, - "requires": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", - "dev": true, - "peer": true, - "requires": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", - "csstype": "^3.1.3" - } - }, - "@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "dev": true, - "peer": true - }, - "acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bundle-require": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", - "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", - "dev": true, - "requires": { - "load-tsconfig": "^0.2.3" - } - }, - "cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true - }, - "chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "readdirp": "^4.0.1" - } - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true - }, - "consola": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.0.tgz", - "integrity": "sha512-kxltocVQCwQNFvw40dlVRYeAkAvtYjMFZYNlOcsF5wExPpGwPxMwgx4IfDJvBRPtBpnQwItd5WkTaR0ZwT/TmQ==", - "dev": true - }, - "css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "requires": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - } - }, - "csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "peer": true - }, - "debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, - "defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "dev": true - }, - "destr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", - "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", - "dev": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "optional": true, - "peer": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "peer": true - }, - "esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" - } - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "dev": true, - "requires": { - "resolve-pkg-maps": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } - }, - "immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "dev": true, - "optional": true, - "peer": true - }, - "importx": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/importx/-/importx-0.5.1.tgz", - "integrity": "sha512-YrRaigAec1sC2CdIJjf/hCH1Wp9Ii8Cq5ROw4k5nJ19FVl2FcJUHZ5gGIb1vs8+JNYIyOJpc2fcufS2330bxDw==", - "dev": true, - "requires": { - "bundle-require": "^5.0.0", - "debug": "^4.4.0", - "esbuild": "^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", - "jiti": "^2.4.1", - "pathe": "^1.1.2", - "tsx": "^4.19.2" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "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 - }, - "load-tsconfig": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", - "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", - "dev": true - }, - "local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "requires": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - } - }, - "magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mlly": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", - "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", - "dev": true, - "requires": { - "acorn": "^8.14.0", - "pathe": "^1.1.2", - "pkg-types": "^1.2.1", - "ufo": "^1.5.4" - } - }, - "mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true - }, - "node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node-fetch-native": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", - "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "ofetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", - "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", - "dev": true, - "requires": { - "destr": "^2.0.3", - "node-fetch-native": "^1.6.4", - "ufo": "^1.5.4" - } - }, - "package-manager-detector": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz", - "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==", - "dev": true - }, - "pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true - }, - "perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true - }, - "picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-types": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", - "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", - "dev": true, - "requires": { - "confbox": "^0.1.8", - "mlly": "^1.7.2", - "pathe": "^1.1.2" - } - }, - "postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "dev": true, - "requires": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - }, - "readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "dev": true, - "optional": true, - "peer": true - }, - "resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true - }, - "rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", - "dev": true, - "requires": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", - "@types/estree": "1.0.6", - "fsevents": "~2.3.2" - } - }, - "sass": { - "version": "1.83.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", - "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@parcel/watcher": "^2.4.1", - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sirv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", - "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "tinyexec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", - "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", - "dev": true - }, - "tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", - "dev": true, - "requires": { - "fdir": "^6.4.2", - "picomatch": "^4.0.2" - }, - "dependencies": { - "fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", - "dev": true, - "requires": {} - }, - "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true - } - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true - }, - "tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", - "dev": true, - "requires": { - "esbuild": "~0.23.0", - "fsevents": "~2.3.3", - "get-tsconfig": "^4.7.5" - }, - "dependencies": { - "@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "dev": true, - "optional": true - }, - "esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - } - } - }, - "ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "dev": true - }, - "unconfig": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.6.0.tgz", - "integrity": "sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==", - "dev": true, - "requires": { - "@antfu/utils": "^0.7.10", - "defu": "^6.1.4", - "importx": "^0.5.0" - } - }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true - }, - "unocss": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.65.2.tgz", - "integrity": "sha512-PEN8Yltr/n6xdNcI9iqIK4Dp/fpQ1bPa4aR2TwFg2lV6aRA2PNzarviqL62oOqXYSyQ4sqW3s/oaWD3JGOgJ1A==", - "dev": true, - "requires": { - "@unocss/astro": "0.65.2", - "@unocss/cli": "0.65.2", - "@unocss/core": "0.65.2", - "@unocss/postcss": "0.65.2", - "@unocss/preset-attributify": "0.65.2", - "@unocss/preset-icons": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/preset-tagify": "0.65.2", - "@unocss/preset-typography": "0.65.2", - "@unocss/preset-uno": "0.65.2", - "@unocss/preset-web-fonts": "0.65.2", - "@unocss/preset-wind": "0.65.2", - "@unocss/transformer-attributify-jsx": "0.65.2", - "@unocss/transformer-compile-class": "0.65.2", - "@unocss/transformer-directives": "0.65.2", - "@unocss/transformer-variant-group": "0.65.2", - "@unocss/vite": "0.65.2" - }, - "dependencies": { - "@unocss/core": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.65.2.tgz", - "integrity": "sha512-37zj1w/6TENsUMzRRmlH5LqUcLGTTjGHrUeZ5KZyeDk+osB/rHSCw0VqqqvL6a7cOHgaW88JgfgKDt5ijRZyFA==", - "dev": true - }, - "@unocss/extractor-arbitrary-variants": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.65.2.tgz", - "integrity": "sha512-G+Fq7i2mTyFv+RdkbahGJFwUR9FbsGCHi+Wt8Eb7cbELWi/R4mUftfW9/q6NaIRKvmLywjWbEQ31qTJIQEO+PQ==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - } - }, - "@unocss/preset-attributify": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.65.2.tgz", - "integrity": "sha512-Aj67qbRoBPYutJasi7EKUaxKwJwEvhA0SVYjXwZG3kjTTBkp1rJvNI0wGXbdz9FkesymiC1KgzBF2UCsFsZ0dQ==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2" - } - }, - "@unocss/preset-mini": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.65.2.tgz", - "integrity": "sha512-zDDyFuLylmer91qeQ6qbMCP5+/zIeuZA0epLIriCfW3pR7FXzfJRu4R1ynpQjqryjUs/gwS0OWtvr4ufuwkryg==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/extractor-arbitrary-variants": "0.65.2", - "@unocss/rule-utils": "0.65.2" - } - }, - "@unocss/preset-typography": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.65.2.tgz", - "integrity": "sha512-k/uOu2ASnBQtotMBsx9pOmCgS+pyn7/4mCiifoeTTLnhMK8F6dcGLbVQkOnUD2hsboKXJ1oHgd+1qX0QVr61ww==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2" - } - }, - "@unocss/preset-wind": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.65.2.tgz", - "integrity": "sha512-qNBJ6pnh9EYbTztmeJ+uZOB3TPx/JnQVHPGBBRD/v2AT11YR0/umdSKefIHbvXKuw/5/+JAwbFx/jSYu1naG6w==", - "dev": true, - "requires": { - "@unocss/core": "0.65.2", - "@unocss/preset-mini": "0.65.2", - "@unocss/rule-utils": "0.65.2" - } - }, - "@unocss/rule-utils": { - "version": "0.65.2", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.65.2.tgz", - "integrity": "sha512-Rw+B52F53gli5wHRR4dXjFrliH6Q8XaNeg55L2uVmg81lEeQCdxPOe0/KjPIEPQPJHOhCpFS3dCHwNROc+UggQ==", - "dev": true, - "requires": { - "@unocss/core": "^0.65.2", - "magic-string": "^0.30.17" - } - } - } - }, - "vite": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", - "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", - "dev": true, - "requires": { - "esbuild": "0.24.0", - "fsevents": "~2.3.3", - "postcss": "^8.4.49", - "rollup": "^4.23.0" - } - }, - "vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "dev": true, - "peer": true, - "requires": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" - } - }, - "vue-flow-layout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/vue-flow-layout/-/vue-flow-layout-0.1.1.tgz", - "integrity": "sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==", - "dev": true, - "requires": {} - } - } -} diff --git a/package.json b/package.json index 4b8094f..af9b79c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simplycountdown", - "description": "A dead simple countdown javascript library", + "description": "A simple yet powerful countdown plugin, w/ no deps", "version": "3.0.0", "type": "module", "homepage": "http://vincentloy.github.io/simplyCountdown.js", @@ -30,7 +30,7 @@ "browserslist": [ "defaults" ], - "main": "./dist/simplyCountdown.umd.js", + "main": "dist/simplyCountdown.es.js", "module": "./dist/simplyCountdown.es.js", "exports": { ".": { @@ -47,23 +47,26 @@ "dist/simplyCountdown.iife.js.map" ], "scripts": { - "dev": "vite --config vite.config.js", - "build": "npm run build:lib && npm run build:docs", + "dev": "vite serve docs/src --port 3000 --open", "build:lib": "vite build", - "build:docs": "BUILD_TYPE=docs vite build", - "serve": "node scripts/serve.js", - "clean": "rm -rf dist docs" + "build:docs": "vite build --mode docs", + "build": "npm run build:lib && npm run build:docs", + "preview": "vite preview docs/dist" }, "devDependencies": { - "@iconify-json/lucide": "^1.2.20", - "@unocss/preset-attributify": "^0.58.0", - "@unocss/preset-icons": "^0.65.2", - "@unocss/preset-typography": "^0.58.9", - "@unocss/preset-wind": "^0.58.9", - "@unocss/reset": "^0.65.2", + "@iconify-json/lucide": "^1.1.144", + "@iconify/tailwind": "^0.1.4", + "@tailwindcss/typography": "^0.5.10", + "@vitejs/plugin-vue": "^5.0.0", + "autoprefixer": "^10.4.16", + "concurrently": "^8.2.2", "fs-extra": "^11.2.0", + "highlight.js": "^11.11.0", + "postcss": "^8.4.32", + "rimraf": "^6.0.1", + "tailwindcss": "^3.4.0", "terser": "^5.24.0", - "unocss": "^0.65.2", - "vite": "^6.0.0" + "typescript": "^5.3.3", + "vite": "^5.0.0" } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/project-structure.md b/project-structure.md new file mode 100644 index 0000000..ee3d834 --- /dev/null +++ b/project-structure.md @@ -0,0 +1,72 @@ +# Structure du Projet simplyCountdown + +📦 simplyCountdown + ┣ 📂 src # Code source du plugin + ┃ ┣ 📂 core # Logique principale + ┃ ┃ ┗ 📜 simplyCountdown.js # Fichier principal du plugin + ┃ ┣ 📂 themes # Thèmes CSS source + ┃ ┃ ┣ 📜 default.css + ┃ ┃ ┣ 📜 dark.css + ┃ ┃ ┣ 📜 cyber.css + ┃ ┃ ┗ 📜 losange.css + ┃ ┗ 📂 types # Types TypeScript + ┃ ┗ 📜 index.d.ts + ┃ + ┣ 📂 docs # Documentation et environnement de dev + ┃ ┣ 📂 src # Sources de la documentation + ┃ ┃ ┣ 📂 assets + ┃ ┃ ┃ ┣ 📂 styles # Styles de la doc + ┃ ┃ ┃ ┃ ┣ 📜 main.css # Styles principaux + ┃ ┃ ┃ ┃ ┗ 📜 highlight.css # Styles pour la coloration syntaxique + ┃ ┃ ┃ ┣ 📂 js # Scripts de la doc + ┃ ┃ ┃ ┃ ┣ 📜 examples.js # Configuration des exemples + ┃ ┃ ┃ ┃ ┗ 📜 highlight.js # Configuration highlight.js + ┃ ┃ ┃ ┗ 📂 images # Images de la doc + ┃ ┃ ┣ 📜 index.html # Page principale + ┃ ┃ ┗ 📜 main.js # Point d'entrée + ┃ ┃ + ┃ ┗ 📂 dist # Documentation buildée (site statique) + ┃ ┣ 📂 assets + ┃ ┃ ┣ 📜 main.min.js # JS bundlé et minifié + ┃ ┃ ┣ 📜 main.min.css # CSS bundlé et minifié + ┃ ┃ ┗ 📂 images # Images optimisées + ┃ ┣ 📜 index.html # HTML optimisé + ┃ ┗ 📜 favicon.ico + ┃ + ┣ 📂 dist # Distribution du plugin + ┃ ┣ 📂 themes # Thèmes CSS buildés + ┃ ┃ ┣ 📜 default.min.css + ┃ ┃ ┣ 📜 dark.min.css + ┃ ┃ ┣ 📜 cyber.min.css + ┃ ┃ ┗ 📜 losange.min.css + ┃ ┣ 📜 simplyCountdown.es.js # Version ES Module + ┃ ┣ 📜 simplyCountdown.es.js.map # Source map ES + ┃ ┣ 📜 simplyCountdown.umd.js # Version UMD + ┃ ┣ 📜 simplyCountdown.umd.js.map # Source map UMD + ┃ ┣ 📜 simplyCountdown.iife.js # Version IIFE + ┃ ┗ 📜 simplyCountdown.iife.js.map# Source map IIFE + ┃ + ┣ 📜 .gitignore + ┣ 📜 package.json # Configuration npm + ┣ 📜 package-lock.json + ┣ 📜 vite.config.js # Config Vite principale + ┣ 📜 uno.config.js # Config UnoCSS + ┣ 📜 tsconfig.json # Config TypeScript + ┣ 📜 LICENSE # License MIT + ┗ 📜 README.md # Documentation principale + +## Structure des builds + +### Build de la librairie (/dist) +- Formats disponibles : ES Module, UMD, et IIFE +- Source maps pour chaque format +- Thèmes CSS minifiés séparément +- Pas de dépendances externes + +### Build de la documentation (/docs/dist) +- Site statique optimisé +- Assets minifiés et bundlés +- Intégration de la dernière version de la librairie +- Exemples interactifs +- Support mobile et responsive +- Optimisation des performances (images, CSS, JS) diff --git a/scripts/serve.js b/scripts/serve.js deleted file mode 100644 index e89e110..0000000 --- a/scripts/serve.js +++ /dev/null @@ -1,51 +0,0 @@ -import http from 'http'; -import { fileURLToPath } from 'url'; -import { dirname, resolve } from 'path'; -import fs from 'fs'; -import { spawn } from 'child_process'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); -const docsDir = resolve(__dirname, '..', 'docs'); -const PORT = 8000; - -const server = http.createServer((req, res) => { - const filePath = resolve(docsDir, req.url === '/' ? 'index.html' : req.url.slice(1)); - - fs.readFile(filePath, (err, data) => { - if (err) { - res.writeHead(404); - res.end('File not found'); - return; - } - - const ext = filePath.split('.').pop(); - const contentTypes = { - 'html': 'text/html', - 'css': 'text/css', - 'js': 'application/javascript', - 'png': 'image/png', - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'gif': 'image/gif', - 'svg': 'image/svg+xml' - }; - - res.writeHead(200, { 'Content-Type': contentTypes[ext] || 'text/plain' }); - res.end(data); - }); -}); - -server.listen(PORT, () => { - console.log(`Server running at http://localhost:${PORT}`); - // Open browser - spawn('xdg-open', [`http://localhost:${PORT}`], { - stdio: 'inherit' - }); -}); - -// Handle graceful shutdown -process.on('SIGINT', () => { - console.log('\nShutting down server...'); - server.close(); - process.exit(0); -}); diff --git a/src/core/simplyCountdown.js b/src/core/simplyCountdown.js new file mode 100644 index 0000000..5d603ca --- /dev/null +++ b/src/core/simplyCountdown.js @@ -0,0 +1,324 @@ +/* global Symbol */ + +/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/ + +/** + * Function that merge user parameters with defaults one. + * @param output + * @returns {*|{}} + */ + +let extend = function (output) { + let obj; + let out = output || {}; + + for (let i = 1; i < arguments.length; i += 1) { + obj = arguments[i]; + const keys = Object.keys(obj); + + if (keys.length) { + for (let i2 = 0; i2 < keys.length; i2 += 1) { + let key = keys[i2]; + + if (Object.prototype.hasOwnProperty.call(obj, key)) { + if (typeof obj[key] === 'object') { + extend(out[key], obj[key]); + } else { + out[key] = obj[key]; + } + } + } + } + } + + return out; +}; + +let isIterableElement = (val) => { + return val !== null && Symbol.iterator in Object(val); +}; + +/** + * Function that create a countdown section + * @param countdown + * @param parameters + * @param typeClass + * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}} + */ +let createCountdownElt = (countdown, parameters, typeClass) => { + let sectionTag = document.createElement('div'); + let amountTag = document.createElement('span'); + let wordTag = document.createElement('span'); + let innerSectionTag = document.createElement('div'); + + innerSectionTag.appendChild(amountTag); + innerSectionTag.appendChild(wordTag); + sectionTag.appendChild(innerSectionTag); + + sectionTag.classList.add(parameters.sectionClass); + sectionTag.classList.add(typeClass); + amountTag.classList.add(parameters.amountClass); + wordTag.classList.add(parameters.wordClass); + + countdown.appendChild(sectionTag); + + return { + full: sectionTag, + amount: amountTag, + word: wordTag + }; +}; + +/** + * Function that create full countdown DOM elements calling createCountdownElt + * @param parameters + * @param countdown + * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}} + */ +let createElements = (parameters, countdown) => { + let spanTag; + + if (!parameters.inline) { + return { + days: createCountdownElt(countdown, parameters, 'simply-days-section'), + hours: createCountdownElt(countdown, parameters, 'simply-hours-section'), + minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'), + seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section') + }; + } + + spanTag = document.createElement('span'); + spanTag.classList.add(parameters.inlineClass); + countdown.appendChild(spanTag); + + return { + days: spanTag, + hours: spanTag, + minutes: spanTag, + seconds: spanTag + }; +}; + +/** + * simplyCountdown, create and display the countdown. + * @param elt + * @param args (parameters) + */ +export const simplyCountdown = function (elt, args) { + const eltProto = Object.getPrototypeOf(elt); + let parameters = extend({ + year: 2015, + month: 6, + day: 28, + hours: 0, + minutes: 0, + seconds: 0, + words: { + days: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'day'}, + hours: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'hour'}, + minutes: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'minute'}, + seconds: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'second'} + }, + plural: true, + inline: false, + inlineSeparator: ', ', + enableUtc: false, + onEnd: () => { + }, + refresh: 1000, + inlineClass: 'simply-countdown-inline', + sectionClass: 'simply-section', + amountClass: 'simply-amount', + wordClass: 'simply-word', + zeroPad: false, + removeZeroUnits: false, + countUp: false + }, args); + let interval; + let targetDate; + let now; + let secondsLeft; + let days; + let hours; + let minutes; + let seconds; + let cd; + + // console.log(typeof elt); + // + if (eltProto === String.prototype) { + cd = document.querySelectorAll(elt); + } else { + cd = elt; + } + + if (parameters.enableUtc) { + // Use UTC for target date + targetDate = new Date(Date.UTC( + parameters.year, + parameters.month - 1, + parameters.day, + parameters.hours, + parameters.minutes, + parameters.seconds + )); + } else { + // Use local time for target date + targetDate = new Date( + parameters.year, + parameters.month - 1, + parameters.day, + parameters.hours, + parameters.minutes, + parameters.seconds + ); + } + + let runCountdown = (theCountdown) => { + let countdown = theCountdown; + let fullCountDown = createElements(parameters, countdown); + let refresh; + + refresh = function () { + let dayWord; + let hourWord; + let minuteWord; + let secondWord; + + let updateDisplayDate = () => { + days = parseInt(secondsLeft / 86400, 10); + secondsLeft %= 86400; + + hours = parseInt(secondsLeft / 3600, 10); + secondsLeft %= 3600; + + minutes = parseInt(secondsLeft / 60, 10); + seconds = parseInt(secondsLeft % 60, 10); + }; + + if (parameters.enableUtc) { + // Calculate "now" in UTC + now = new Date(); + now = new Date(Date.UTC( + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate(), + now.getUTCHours(), + now.getUTCMinutes(), + now.getUTCSeconds() + )); + } else { + // Calculate "now" in local time + now = new Date(); + } + + secondsLeft = Math.floor((targetDate - now.getTime()) / 1000); + + if (secondsLeft > 0) { + updateDisplayDate(); + } else if (parameters.countUp) { + secondsLeft = (now.getTime() - targetDate) / 1000; + updateDisplayDate(); + } else { + days = 0; + hours = 0; + minutes = 0; + seconds = 0; + window.clearInterval(interval); + parameters.onEnd(); + } + + let getWord = (obj, n) => { + return obj.hasOwnProperty('lambda') + ? obj.lambda(obj.root, n) + : obj.root + }; + let words = parameters.words; + dayWord = getWord(words.days, days); + hourWord = getWord(words.hours, hours); + minuteWord = getWord(words.minutes, minutes); + secondWord = getWord(words.seconds, seconds); + + /* display an inline countdown into a span tag */ + if (parameters.inline) { + let displayStr = ''; + + if (!(parameters.removeZeroUnits && days === 0)) { + displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { + displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { + displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`; + } + + // Seconds should always be displayed + displayStr += `${seconds} ${secondWord}`; + + countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any + } else { + if (!(parameters.removeZeroUnits && days === 0)) { + fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days; + fullCountDown.days.word.textContent = dayWord; + fullCountDown.days.full.style.display = ''; + } else { + fullCountDown.days.full.style.display = 'none'; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { + fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours; + fullCountDown.hours.word.textContent = hourWord; + fullCountDown.hours.full.style.display = ''; + } else { + fullCountDown.hours.full.style.display = 'none'; + } + + if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { + fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes; + fullCountDown.minutes.word.textContent = minuteWord; + fullCountDown.minutes.full.style.display = ''; + } else { + fullCountDown.minutes.full.style.display = 'none'; + } + + // Seconds should always be displayed + fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds; + fullCountDown.seconds.word.textContent = secondWord; + fullCountDown.seconds.full.style.display = ''; + } + }; + + // Refresh immediately to prevent a Flash of Unstyled Content + refresh(); + interval = window.setInterval(refresh, parameters.refresh); + }; + + if (!isIterableElement(cd)) { + runCountdown(cd); + } else { + Array.prototype.forEach.call(cd, (cdElt) => { + runCountdown(cdElt); + }); + } +}; + +// Export for CommonJS and AMD +if (typeof module !== 'undefined' && module.exports) { + module.exports = { simplyCountdown }; +} else if (typeof define === 'function' && define.amd) { + define([], function() { + return { simplyCountdown }; + }); +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..a47381d --- /dev/null +++ b/src/main.js @@ -0,0 +1,5 @@ +// Import UnoCSS +import 'uno.css' + +// Import your countdown +import './core/simplyCountdown.js' diff --git a/src/simplyCountdown.js b/src/simplyCountdown.js deleted file mode 100644 index 7445a22..0000000 --- a/src/simplyCountdown.js +++ /dev/null @@ -1,320 +0,0 @@ -/* global Symbol */ - -/*! -* Project : simply-countdown -* Date : 06/12/2024 -* License : MIT -* Version : 2.0.1 -* Author : Vincent Loy -* Contributors : -* - Justin Beasley -* - Nathan Smith -*/ -(function (exports) { - 'use strict'; - - /** - * Function that merge user parameters with defaults one. - * @param output - * @returns {*|{}} - */ - - let extend = function (output) { - let obj; - let out = output || {}; - - for (let i = 1; i < arguments.length; i += 1) { - obj = arguments[i]; - const keys = Object.keys(obj); - - if (keys.length) { - for (let i2 = 0; i2 < keys.length; i2 += 1) { - let key = keys[i2]; - - if (Object.prototype.hasOwnProperty.call(obj, key)) { - if (typeof obj[key] === 'object') { - extend(out[key], obj[key]); - } else { - out[key] = obj[key]; - } - } - } - } - } - - return out; - }; - - let isIterableElement = (val) => { - return val !== null && Symbol.iterator in Object(val); - }; - - /** - * Function that create a countdown section - * @param countdown - * @param parameters - * @param typeClass - * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}} - */ - let createCountdownElt = (countdown, parameters, typeClass) => { - let sectionTag = document.createElement('div'); - let amountTag = document.createElement('span'); - let wordTag = document.createElement('span'); - let innerSectionTag = document.createElement('div'); - - innerSectionTag.appendChild(amountTag); - innerSectionTag.appendChild(wordTag); - sectionTag.appendChild(innerSectionTag); - - sectionTag.classList.add(parameters.sectionClass); - sectionTag.classList.add(typeClass); - amountTag.classList.add(parameters.amountClass); - wordTag.classList.add(parameters.wordClass); - - countdown.appendChild(sectionTag); - - return { - full: sectionTag, - amount: amountTag, - word: wordTag - }; - }; - - /** - * Function that create full countdown DOM elements calling createCountdownElt - * @param parameters - * @param countdown - * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}} - */ - let createElements = (parameters, countdown) => { - let spanTag; - - if (!parameters.inline) { - return { - days: createCountdownElt(countdown, parameters, 'simply-days-section'), - hours: createCountdownElt(countdown, parameters, 'simply-hours-section'), - minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'), - seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section') - }; - } - - spanTag = document.createElement('span'); - spanTag.classList.add(parameters.inlineClass); - return spanTag; - }; - - /** - * simplyCountdown, create and display the coundtown. - * @param elt - * @param args (parameters) - */ - let simplyCountdown = (elt, args) => { - const eltProto = Object.getPrototypeOf(elt); - let parameters = extend({ - year: 2015, - month: 6, - day: 28, - hours: 0, - minutes: 0, - seconds: 0, - words: { - days: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'day'}, - hours: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'hour'}, - minutes: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'minute'}, - seconds: {lambda: (root, n) => {return n > 1 ? root + "s" : root }, root: 'second'} - }, - plural: true, - inline: false, - inlineSeparator: ', ', - enableUtc: false, - onEnd: () => { - }, - refresh: 1000, - inlineClass: 'simply-countdown-inline', - sectionClass: 'simply-section', - amountClass: 'simply-amount', - wordClass: 'simply-word', - zeroPad: false, - removeZeroUnits: false, - countUp: false - }, args); - let interval; - let targetDate; - let now; - let secondsLeft; - let days; - let hours; - let minutes; - let seconds; - let cd; - - // console.log(typeof elt); - // - if (eltProto === String.prototype) { - cd = document.querySelectorAll(elt); - } else { - cd = elt; - } - - if (parameters.enableUtc) { - // Use UTC for target date - targetDate = new Date(Date.UTC( - parameters.year, - parameters.month - 1, - parameters.day, - parameters.hours, - parameters.minutes, - parameters.seconds - )); - } else { - // Use local time for target date - targetDate = new Date( - parameters.year, - parameters.month - 1, - parameters.day, - parameters.hours, - parameters.minutes, - parameters.seconds - ); - } - - let runCountdown = (theCountdown) => { - let countdown = theCountdown; - let fullCountDown = createElements(parameters, countdown); - let refresh; - - refresh = function () { - let dayWord; - let hourWord; - let minuteWord; - let secondWord; - - let updateDisplayDate = () => { - days = parseInt(secondsLeft / 86400, 10); - secondsLeft %= 86400; - - hours = parseInt(secondsLeft / 3600, 10); - secondsLeft %= 3600; - - minutes = parseInt(secondsLeft / 60, 10); - seconds = parseInt(secondsLeft % 60, 10); - }; - - if (parameters.enableUtc) { - // Calculate "now" in UTC - now = new Date(); - now = new Date(Date.UTC( - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate(), - now.getUTCHours(), - now.getUTCMinutes(), - now.getUTCSeconds() - )); - } else { - // Calculate "now" in local time - now = new Date(); - } - - secondsLeft = Math.floor((targetDate - now.getTime()) / 1000); - - if (secondsLeft > 0) { - updateDisplayDate(); - } else if (parameters.countUp) { - secondsLeft = (now.getTime() - targetDate) / 1000; - updateDisplayDate(); - } else { - days = 0; - hours = 0; - minutes = 0; - seconds = 0; - window.clearInterval(interval); - parameters.onEnd(); - } - - let getWord = (obj, n) => { - return obj.hasOwnProperty('lambda') - ? obj.lambda(obj.root, n) - : obj.root - }; - let words = parameters.words; - dayWord = getWord(words.days, days); - hourWord = getWord(words.hours, hours); - minuteWord = getWord(words.minutes, minutes); - secondWord = getWord(words.seconds, seconds); - - /* display an inline countdown into a span tag */ - if (parameters.inline) { - let displayStr = ''; - - if (!(parameters.removeZeroUnits && days === 0)) { - displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { - displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { - displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`; - } - - // Seconds should always be displayed - displayStr += `${seconds} ${secondWord}`; - - countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any - } else { - if (!(parameters.removeZeroUnits && days === 0)) { - fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days; - fullCountDown.days.word.textContent = dayWord; - fullCountDown.days.full.style.display = ''; - } else { - fullCountDown.days.full.style.display = 'none'; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) { - fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours; - fullCountDown.hours.word.textContent = hourWord; - fullCountDown.hours.full.style.display = ''; - } else { - fullCountDown.hours.full.style.display = 'none'; - } - - if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) { - fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes; - fullCountDown.minutes.word.textContent = minuteWord; - fullCountDown.minutes.full.style.display = ''; - } else { - fullCountDown.minutes.full.style.display = 'none'; - } - - // Seconds should always be displayed - fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds; - fullCountDown.seconds.word.textContent = secondWord; - fullCountDown.seconds.full.style.display = ''; - } - }; - - // Refresh immediately to prevent a Flash of Unstyled Content - refresh(); - interval = window.setInterval(refresh, parameters.refresh); - }; - - if (!isIterableElement(cd)) { - runCountdown(cd); - } else { - Array.prototype.forEach.call(cd, (cdElt) => { - runCountdown(cdElt); - }); - } - }; - - // Export for modern module systems - if (typeof module !== 'undefined' && module.exports) { - module.exports = simplyCountdown; - } else { - window.simplyCountdown = simplyCountdown; - } -}(window)); - -export default simplyCountdown; diff --git a/demo/css/simplyCountdown.theme.custom.css b/src/themes/custom_example.css similarity index 100% rename from demo/css/simplyCountdown.theme.custom.css rename to src/themes/custom_example.css diff --git a/demo/css/simplyCountdown.theme.cyberpunk.css b/src/themes/cyber.css similarity index 100% rename from demo/css/simplyCountdown.theme.cyberpunk.css rename to src/themes/cyber.css diff --git a/demo/css/simplyCountdown.theme.dark.css b/src/themes/dark.css similarity index 100% rename from demo/css/simplyCountdown.theme.dark.css rename to src/themes/dark.css diff --git a/demo/css/simplyCountdown.theme.default.css b/src/themes/default.css similarity index 100% rename from demo/css/simplyCountdown.theme.default.css rename to src/themes/default.css diff --git a/demo/css/simplyCountdown.theme.losange.css b/src/themes/losange.css similarity index 100% rename from demo/css/simplyCountdown.theme.losange.css rename to src/themes/losange.css diff --git a/src/types/index.d.ts b/src/types/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..b404c53 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,25 @@ +import { addDynamicIconSelectors } from '@iconify/tailwind' + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./docs/src/**/*.{html,js}", + ], + theme: { + extend: { + colors: { + primary: { + DEFAULT: '#4f46e5', + dark: '#4338ca', + }, + }, + fontFamily: { + sans: ['Inter', 'sans-serif'], + }, + }, + }, + plugins: [ + require('@tailwindcss/typography'), + addDynamicIconSelectors(), + ], +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..356d781 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "docs/src"] +} \ No newline at end of file diff --git a/uno.config.js b/uno.config.js deleted file mode 100644 index 439b132..0000000 --- a/uno.config.js +++ /dev/null @@ -1,84 +0,0 @@ -import { defineConfig } from 'unocss' -import { presetWind } from '@unocss/preset-wind' -import { presetAttributify } from '@unocss/preset-attributify' -import { presetTypography } from '@unocss/preset-typography' -import { presetIcons } from '@unocss/preset-icons' -import { presetUno } from '@unocss/preset-uno' - -export default defineConfig({ - presets: [ - presetUno({ dark: 'class' }), - presetWind(), - presetAttributify(), - presetTypography(), - presetIcons({ - scale: 1.2, - warn: true, - }), - ], - preflights: [ - { - getCSS: () => ` - *, - *::before, - *::after { - box-sizing: border-box; - margin: 0; - padding: 0; - } - - body { - line-height: 1.5; - -webkit-font-smoothing: antialiased; - } - - img, - picture, - video, - canvas, - svg { - display: block; - max-width: 100%; - } - - input, - button, - textarea, - select { - font: inherit; - } - - p, - h1, - h2, - h3, - h4, - h5, - h6 { - overflow-wrap: break-word; - } - ` - } - ], - theme: { - colors: { - 'main': '#3F72AF', - 'main-dark': '#112D4E', - 'main-light': '#6995ca', - 'secondary': '#F9F7F7', - 'secondary-dark': '#DBE2EF', - 'dark': '#112D4E', - 'light': '#DBE2EF', - 'lighter': '#F9F7F7' - }, - fontFamily: { - 'montserrat': ['Montserrat', 'sans-serif'], - 'wix': ['Wix Madefor Text', 'sans-serif'], - }, - }, - shortcuts: { - 'btn': 'px-4 py-2 rounded-lg bg-main text-white hover:bg-main-dark transition-colors', - 'section-title': 'text-3xl font-bold text-main-dark mb-6', - 'container': 'max-w-6xl mx-auto px-4', - } -}) diff --git a/vite.config.js b/vite.config.js index 8862a16..9948964 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,147 +1,51 @@ -import { defineConfig } from 'vite'; -import path from 'path'; -import UnoCSS from 'unocss/vite'; -import { presetWind, presetIcons, presetTypography } from 'unocss'; -import fs from 'fs-extra'; +import { defineConfig } from 'vite' +import { resolve } from 'path' // Configuration pour le build de la librairie -const libConfig = { +const libraryConfig = defineConfig({ build: { lib: { - entry: path.resolve(__dirname, 'src/simplyCountdown.js'), + entry: resolve(__dirname, 'src/core/simplyCountdown.js'), name: 'simplyCountdown', - fileName: (format) => `simplyCountdown.${format}.js`, - formats: ['es', 'umd', 'iife'] + formats: ['es', 'umd', 'iife'], + fileName: (format) => `simplyCountdown.${format}.js` }, - outDir: 'dist', - emptyOutDir: true, - sourcemap: true - }, - plugins: [ - UnoCSS({ - mode: 'global', - presets: [ - presetWind(), - presetIcons({ - cdn: 'https://esm.sh/' - }), - presetTypography() - ], - shortcuts: { - 'btn': 'py-2 px-4 font-semibold rounded-lg shadow-md', - 'btn-primary': 'text-white bg-indigo-500 hover:bg-indigo-700' + rollupOptions: { + output: { + assetFileNames: (assetInfo) => { + if (assetInfo.name === 'style.css') { + return 'themes/[name][extname]' + } + return '[name][extname]' + } } - }) - ], - server: { - port: 3000, - open: '/demo/index.html', - watch: { - include: ['src/**', 'demo/**'], - usePolling: true - }, - hmr: { - overlay: true - } - }, - resolve: { - alias: { - '@': path.resolve(__dirname, './src'), - '@demo': path.resolve(__dirname, './demo'), - 'simplyCountdown': path.resolve(__dirname, './src/simplyCountdown.js') } - }, - optimizeDeps: { - include: ['src/simplyCountdown.js'] } -}; +}) -// Configuration pour le build de la documentation -const docsConfig = { - root: '.', - base: '', +// Configuration pour la documentation +const docsConfig = defineConfig({ + root: 'docs/src', build: { - outDir: 'docs', + outDir: '../dist', emptyOutDir: true, rollupOptions: { input: { - main: path.resolve(__dirname, 'demo/index.html') + main: resolve(__dirname, 'docs/src/index.html') }, output: { - dir: 'docs', - entryFileNames: 'assets/[name].js', - chunkFileNames: 'assets/[name].js', - assetFileNames: 'assets/[name].[ext]' + entryFileNames: 'assets/[name].min.js', + chunkFileNames: 'assets/[name].min.js', + assetFileNames: 'assets/[name].min.[ext]' } } - }, - plugins: [ - UnoCSS({ - mode: 'global', - presets: [ - presetWind(), - presetIcons({ - cdn: 'https://esm.sh/' - }), - presetTypography() - ], - shortcuts: { - 'btn': 'py-2 px-4 font-semibold rounded-lg shadow-md', - 'btn-primary': 'text-white bg-indigo-500 hover:bg-indigo-700' - } - }), - { - name: 'pre-build', - buildStart: async () => { - // Créer le dossier assets s'il n'existe pas - await fs.ensureDir(path.resolve(__dirname, 'demo/assets')); - - // Copier simplyCountdown.js dans les assets de la démo - await fs.copy( - path.resolve(__dirname, 'src/simplyCountdown.js'), - path.resolve(__dirname, 'demo/assets/simplyCountdown.js') - ); - } - }, - { - name: 'post-build', - closeBundle: async () => { - // Copier le fichier IIFE - await fs.copy( - path.resolve(__dirname, 'dist/simplyCountdown.iife.js'), - path.resolve(__dirname, 'docs/assets/simplyCountdown.iife.js') - ); - - // Déplacer index.html à la racine de docs - const indexPath = path.resolve(__dirname, 'docs/demo/index.html'); - if (await fs.pathExists(indexPath)) { - const content = await fs.readFile(indexPath, 'utf-8'); - // Ajuster les chemins relatifs et ajouter le script IIFE - const updatedContent = content - .replace(/src="\.?\/?/g, 'src="') - .replace(/href="\.?\/?/g, 'href="') - .replace(/assets\/assets\//g, 'assets/') - .replace( - '', - '\n ' - ); - - await fs.writeFile(path.resolve(__dirname, 'docs/index.html'), updatedContent); - await fs.remove(path.resolve(__dirname, 'docs/demo')); - } - } - } - ], - resolve: { - alias: { - '@': path.resolve(__dirname, './src'), - '@demo': path.resolve(__dirname, './demo'), - 'simplyCountdown': path.resolve(__dirname, './src/simplyCountdown.js') - } - }, - optimizeDeps: { - include: ['src/simplyCountdown.js'] } -}; +}) -export default defineConfig(process.env.BUILD_TYPE === 'docs' ? docsConfig : libConfig); +// Export la configuration en fonction du mode +export default ({ mode }) => { + if (mode === 'docs') { + return docsConfig + } + return libraryConfig +} From ba2b55d44d2b50d72dd49faddcc9d8912ae75865 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Mon, 23 Dec 2024 21:32:52 +0100 Subject: [PATCH 08/75] build the doc testings --- bun.lockb | Bin 87734 -> 88158 bytes dist/simplyCountdown.es.js | 120 +++++++++++++++++ dist/simplyCountdown.es.js.map | 0 dist/simplyCountdown.iife.js | 10 ++ dist/simplyCountdown.iife.js.map | 0 dist/simplyCountdown.umd.js | 10 ++ dist/simplyCountdown.umd.js.map | 0 dist/themes/cyber.min.css | 0 dist/themes/dark.min.css | 0 dist/themes/default.min.css | 0 dist/themes/losange.min.css | 0 docs/dist/assets/main.min.css | 10 ++ docs/dist/assets/main.min.js | 12 ++ docs/dist/favicon.ico | 0 docs/dist/index.html | 222 +++++++++++++++++++++++++++++++ docs/src/assets/styles/main.css | 31 +++++ docs/src/index.html | 93 ++++++++++--- docs/src/main.js | 42 ++++++ package.json | 3 +- src/themes/custom_example.css | 29 ---- 20 files changed, 534 insertions(+), 48 deletions(-) delete mode 100644 dist/simplyCountdown.es.js.map delete mode 100644 dist/simplyCountdown.iife.js.map delete mode 100644 dist/simplyCountdown.umd.js.map delete mode 100644 dist/themes/cyber.min.css delete mode 100644 dist/themes/dark.min.css delete mode 100644 dist/themes/default.min.css delete mode 100644 dist/themes/losange.min.css delete mode 100644 docs/dist/favicon.ico delete mode 100644 src/themes/custom_example.css diff --git a/bun.lockb b/bun.lockb index 3fd9789b5a72fdbc02fe81df09e3239a6ea70385..0de5d77a20eaf1171918b12dbe5769bf50a4bf95 100755 GIT binary patch delta 12835 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 diff --git a/dist/simplyCountdown.es.js b/dist/simplyCountdown.es.js index e69de29..dab91c5 100644 --- a/dist/simplyCountdown.es.js +++ b/dist/simplyCountdown.es.js @@ -0,0 +1,120 @@ +/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/ +let E = function(s) { + let n, l = s || {}; + for (let e = 1; e < arguments.length; e += 1) { + n = arguments[e]; + const d = Object.keys(n); + if (d.length) + for (let a = 0; a < d.length; a += 1) { + let t = d[a]; + Object.prototype.hasOwnProperty.call(n, t) && (typeof n[t] == "object" ? E(l[t], n[t]) : l[t] = n[t]); + } + } + return l; +}, I = (s) => s !== null && Symbol.iterator in Object(s), w = (s, n, l) => { + let e = document.createElement("div"), d = document.createElement("span"), a = document.createElement("span"), t = document.createElement("div"); + return t.appendChild(d), t.appendChild(a), e.appendChild(t), e.classList.add(n.sectionClass), e.classList.add(l), d.classList.add(n.amountClass), a.classList.add(n.wordClass), s.appendChild(e), { + full: e, + amount: d, + word: a + }; +}, L = (s, n) => { + let l; + return s.inline ? (l = document.createElement("span"), l.classList.add(s.inlineClass), n.appendChild(l), { + days: l, + hours: l, + minutes: l, + seconds: l + }) : { + days: w(n, s, "simply-days-section"), + hours: w(n, s, "simply-hours-section"), + minutes: w(n, s, "simply-minutes-section"), + seconds: w(n, s, "simply-seconds-section") + }; +}; +const v = function(s, n) { + const l = Object.getPrototypeOf(s); + let e = E({ + year: 2015, + month: 6, + day: 28, + hours: 0, + minutes: 0, + seconds: 0, + words: { + days: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "day" }, + hours: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "hour" }, + minutes: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "minute" }, + seconds: { lambda: (o, c) => c > 1 ? o + "s" : o, root: "second" } + }, + plural: !0, + inline: !1, + inlineSeparator: ", ", + enableUtc: !1, + onEnd: () => { + }, + refresh: 1e3, + inlineClass: "simply-countdown-inline", + sectionClass: "simply-section", + amountClass: "simply-amount", + wordClass: "simply-word", + zeroPad: !1, + removeZeroUnits: !1, + countUp: !1 + }, n), d, a, t, y, i, u, f, p, h; + l === String.prototype ? h = document.querySelectorAll(s) : h = s, e.enableUtc ? a = new Date(Date.UTC( + e.year, + e.month - 1, + e.day, + e.hours, + e.minutes, + e.seconds + )) : a = new Date( + e.year, + e.month - 1, + e.day, + e.hours, + e.minutes, + e.seconds + ); + let D = (o) => { + let c = o, r = L(e, c), U; + U = function() { + let T, b, S, x, $ = () => { + i = parseInt(y / 86400, 10), y %= 86400, u = parseInt(y / 3600, 10), y %= 3600, f = parseInt(y / 60, 10), p = parseInt(y % 60, 10); + }; + e.enableUtc ? (t = /* @__PURE__ */ new Date(), t = new Date(Date.UTC( + t.getUTCFullYear(), + t.getUTCMonth(), + t.getUTCDate(), + t.getUTCHours(), + t.getUTCMinutes(), + t.getUTCSeconds() + ))) : t = /* @__PURE__ */ new Date(), y = Math.floor((a - t.getTime()) / 1e3), y > 0 ? $() : e.countUp ? (y = (t.getTime() - a) / 1e3, $()) : (i = 0, u = 0, f = 0, p = 0, window.clearInterval(d), e.onEnd()); + let C = (m, P) => m.hasOwnProperty("lambda") ? m.lambda(m.root, P) : m.root, g = e.words; + if (T = C(g.days, i), b = C(g.hours, u), S = C(g.minutes, f), x = C(g.seconds, p), e.inline) { + let m = ""; + e.removeZeroUnits && i === 0 || (m += `${i} ${T}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 || (m += `${u} ${b}${e.inlineSeparator}`), e.removeZeroUnits && i === 0 && u === 0 && f === 0 || (m += `${f} ${S}${e.inlineSeparator}`), m += `${p} ${x}`, c.innerHTML = m.replace(/, $/, ""); + } else + e.removeZeroUnits && i === 0 ? r.days.full.style.display = "none" : (r.days.amount.textContent = (e.zeroPad && i.toString().length < 2 ? "0" : "") + i, r.days.word.textContent = T, r.days.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 ? r.hours.full.style.display = "none" : (r.hours.amount.textContent = (e.zeroPad && u.toString().length < 2 ? "0" : "") + u, r.hours.word.textContent = b, r.hours.full.style.display = ""), e.removeZeroUnits && i === 0 && u === 0 && f === 0 ? r.minutes.full.style.display = "none" : (r.minutes.amount.textContent = (e.zeroPad && f.toString().length < 2 ? "0" : "") + f, r.minutes.word.textContent = S, r.minutes.full.style.display = ""), r.seconds.amount.textContent = (e.zeroPad && p.toString().length < 2 ? "0" : "") + p, r.seconds.word.textContent = x, r.seconds.full.style.display = ""; + }, U(), d = window.setInterval(U, e.refresh); + }; + I(h) ? Array.prototype.forEach.call(h, (o) => { + D(o); + }) : D(h); +}; +typeof module < "u" && module.exports ? module.exports = { simplyCountdown: v } : typeof define == "function" && define.amd && define([], function() { + return { simplyCountdown: v }; +}); +export { + v as simplyCountdown +}; diff --git a/dist/simplyCountdown.es.js.map b/dist/simplyCountdown.es.js.map deleted file mode 100644 index e69de29..0000000 diff --git a/dist/simplyCountdown.iife.js b/dist/simplyCountdown.iife.js index e69de29..ff92811 100644 --- a/dist/simplyCountdown.iife.js +++ b/dist/simplyCountdown.iife.js @@ -0,0 +1,10 @@ +var simplyCountdown=function(U){"use strict";/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/let E=function(s){let n,l=s||{};for(let e=1;es!==null&&Symbol.iterator in Object(s),C=(s,n,l)=>{let e=document.createElement("div"),d=document.createElement("span"),a=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(a),e.appendChild(t),e.classList.add(n.sectionClass),e.classList.add(l),d.classList.add(n.amountClass),a.classList.add(n.wordClass),s.appendChild(e),{full:e,amount:d,word:a}},I=(s,n)=>{let l;return s.inline?(l=document.createElement("span"),l.classList.add(s.inlineClass),n.appendChild(l),{days:l,hours:l,minutes:l,seconds:l}):{days:C(n,s,"simply-days-section"),hours:C(n,s,"simply-hours-section"),minutes:C(n,s,"simply-minutes-section"),seconds:C(n,s,"simply-seconds-section")}};const T=function(s,n){const l=Object.getPrototypeOf(s);let e=E({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},n),d,a,t,y,i,u,f,p,h;l===String.prototype?h=document.querySelectorAll(s):h=s,e.enableUtc?a=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):a=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=o=>{let c=o,r=I(e,c),b;b=function(){let S,v,D,$,x=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,f=parseInt(y/60,10),p=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((a-t.getTime())/1e3),y>0?x():e.countUp?(y=(t.getTime()-a)/1e3,x()):(i=0,u=0,f=0,p=0,window.clearInterval(d),e.onEnd());let g=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,w=e.words;if(S=g(w.days,i),v=g(w.hours,u),D=g(w.minutes,f),$=g(w.seconds,p),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${S}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&f===0||(m+=`${f} ${D}${e.inlineSeparator}`),m+=`${p} ${$}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?r.days.full.style.display="none":(r.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,r.days.word.textContent=S,r.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?r.hours.full.style.display="none":(r.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,r.hours.word.textContent=v,r.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&f===0?r.minutes.full.style.display="none":(r.minutes.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,r.minutes.word.textContent=D,r.minutes.full.style.display=""),r.seconds.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,r.seconds.word.textContent=$,r.seconds.full.style.display=""},b(),d=window.setInterval(b,e.refresh)};O(h)?Array.prototype.forEach.call(h,o=>{P(o)}):P(h)};return typeof module<"u"&&module.exports?module.exports={simplyCountdown:T}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:T}}),U.simplyCountdown=T,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"}),U}({}); diff --git a/dist/simplyCountdown.iife.js.map b/dist/simplyCountdown.iife.js.map deleted file mode 100644 index e69de29..0000000 diff --git a/dist/simplyCountdown.umd.js b/dist/simplyCountdown.umd.js index e69de29..ed95c24 100644 --- a/dist/simplyCountdown.umd.js +++ b/dist/simplyCountdown.umd.js @@ -0,0 +1,10 @@ +(function(p,h){typeof exports=="object"&&typeof module<"u"?h(exports):typeof define=="function"&&define.amd?define(["exports"],h):(p=typeof globalThis<"u"?globalThis:p||self,h(p.simplyCountdown={}))})(this,function(p){"use strict";/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/let h=function(s){let n,o=s||{};for(let e=1;es!==null&&Symbol.iterator in Object(s),w=(s,n,o)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(n.sectionClass),e.classList.add(o),d.classList.add(n.amountClass),r.classList.add(n.wordClass),s.appendChild(e),{full:e,amount:d,word:r}},I=(s,n)=>{let o;return s.inline?(o=document.createElement("span"),o.classList.add(s.inlineClass),n.appendChild(o),{days:o,hours:o,minutes:o,seconds:o}):{days:w(n,s,"simply-days-section"),hours:w(n,s,"simply-hours-section"),minutes:w(n,s,"simply-minutes-section"),seconds:w(n,s,"simply-seconds-section")}};const b=function(s,n){const o=Object.getPrototypeOf(s);let e=h({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,c)=>c>1?l+"s":l,root:"day"},hours:{lambda:(l,c)=>c>1?l+"s":l,root:"hour"},minutes:{lambda:(l,c)=>c>1?l+"s":l,root:"minute"},seconds:{lambda:(l,c)=>c>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},n),d,r,t,f,a,u,y,C,g;o===String.prototype?g=document.querySelectorAll(s):g=s,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let E=l=>{let c=l,i=I(e,c),S;S=function(){let x,v,D,$,P=()=>{a=parseInt(f/86400,10),f%=86400,u=parseInt(f/3600,10),f%=3600,y=parseInt(f/60,10),C=parseInt(f%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,f=Math.floor((r-t.getTime())/1e3),f>0?P():e.countUp?(f=(t.getTime()-r)/1e3,P()):(a=0,u=0,y=0,C=0,window.clearInterval(d),e.onEnd());let U=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,T=e.words;if(x=U(T.days,a),v=U(T.hours,u),D=U(T.minutes,y),$=U(T.seconds,C),e.inline){let m="";e.removeZeroUnits&&a===0||(m+=`${a} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0&&y===0||(m+=`${y} ${D}${e.inlineSeparator}`),m+=`${C} ${$}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&a===0?i.days.full.style.display="none":(i.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,i.days.word.textContent=x,i.days.full.style.display=""),e.removeZeroUnits&&a===0&&u===0?i.hours.full.style.display="none":(i.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,i.hours.word.textContent=v,i.hours.full.style.display=""),e.removeZeroUnits&&a===0&&u===0&&y===0?i.minutes.full.style.display="none":(i.minutes.amount.textContent=(e.zeroPad&&y.toString().length<2?"0":"")+y,i.minutes.word.textContent=D,i.minutes.full.style.display=""),i.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,i.seconds.word.textContent=$,i.seconds.full.style.display=""},S(),d=window.setInterval(S,e.refresh)};O(g)?Array.prototype.forEach.call(g,l=>{E(l)}):E(g)};typeof module<"u"&&module.exports?module.exports={simplyCountdown:b}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:b}}),p.simplyCountdown=b,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}); diff --git a/dist/simplyCountdown.umd.js.map b/dist/simplyCountdown.umd.js.map deleted file mode 100644 index e69de29..0000000 diff --git a/dist/themes/cyber.min.css b/dist/themes/cyber.min.css deleted file mode 100644 index e69de29..0000000 diff --git a/dist/themes/dark.min.css b/dist/themes/dark.min.css deleted file mode 100644 index e69de29..0000000 diff --git a/dist/themes/default.min.css b/dist/themes/default.min.css deleted file mode 100644 index e69de29..0000000 diff --git a/dist/themes/losange.min.css b/dist/themes/losange.min.css deleted file mode 100644 index e69de29..0000000 diff --git a/docs/dist/assets/main.min.css b/docs/dist/assets/main.min.css index e69de29..51404c8 100644 --- a/docs/dist/assets/main.min.css +++ b/docs/dist/assets/main.min.css @@ -0,0 +1,10 @@ +.package-manager-btn{display:flex;align-items:center;gap:.375rem;border-radius:.5rem;background-color:#33415580;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.package-manager-btn:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.package-manager-btn.active{background-color:#6366f133;--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.package-manager-btn.active:hover{background-color:#6366f14d;--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.package-manager-content{display:none}.package-manager-content.active{display:block}.relative:hover .copy-button{opacity:1}pre{overflow-x:auto}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.icon-\[lucide--braces\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1m8 0h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1'/%3E%3C/svg%3E")}.icon-\[lucide--check\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E")}.icon-\[lucide--clock\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--code\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E")}.icon-\[lucide--copy\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--download\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E")}.icon-\[lucide--github\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--heart\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.icon-\[lucide--star\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E")}.icon-\[lucide--terminal\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m4 17l6-6l-6-6m8 14h8'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-bun\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23fbf0df' d='M29 17c0 5.65-5.82 10.23-13 10.23S3 22.61 3 17c0-3.5 2.24-6.6 5.66-8.44S14.21 4.81 16 4.81s3.32 1.54 7.34 3.71C26.76 10.36 29 13.46 29 17'/%3E%3Cpath fill='none' stroke='%23000' d='M16 27.65c7.32 0 13.46-4.65 13.46-10.65c0-3.72-2.37-7-5.89-8.85c-1.39-.75-2.46-1.41-3.37-2l-1.13-.69A6.14 6.14 0 0 0 16 4.35a6.9 6.9 0 0 0-3.3 1.23c-.42.24-.86.51-1.32.8c-.87.54-1.83 1.13-3 1.73C4.91 10 2.54 13.24 2.54 17c0 6 6.14 10.65 13.46 10.65Z'/%3E%3Cellipse cx='21.65' cy='18.62' fill='%23febbd0' rx='2.17' ry='1.28'/%3E%3Cellipse cx='10.41' cy='18.62' fill='%23febbd0' rx='2.17' ry='1.28'/%3E%3Cpath fill-rule='evenodd' d='M11.43 18.11a2 2 0 1 0-2-2.05a2.05 2.05 0 0 0 2 2.05m9.2 0a2 2 0 1 0-2-2.05a2 2 0 0 0 2 2.05'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M10.79 16.19a.77.77 0 1 0-.76-.77a.76.76 0 0 0 .76.77m9.2 0a.77.77 0 1 0 0-1.53a.77.77 0 0 0 0 1.53'/%3E%3Cpath fill='%23b71422' stroke='%23000' stroke-width='.75' d='M18.62 19.67a3.3 3.3 0 0 1-1.09 1.75a2.48 2.48 0 0 1-1.5.69a2.53 2.53 0 0 1-1.5-.69a3.28 3.28 0 0 1-1.08-1.75a.26.26 0 0 1 .29-.3h4.58a.27.27 0 0 1 .3.3Z'/%3E%3Cpath fill='%23ccbea7' fill-rule='evenodd' d='M14.93 5.75a6.1 6.1 0 0 1-2.09 4.62c-.1.09 0 .27.11.22c1.25-.49 2.94-1.94 2.23-4.88c-.03-.15-.25-.11-.25.04m.85 0a6 6 0 0 1 .57 5c0 .13.12.24.21.13c.83-1 1.54-3.11-.59-5.31c-.1-.11-.27.04-.19.17Zm1-.06a6.1 6.1 0 0 1 2.53 4.38c0 .14.21.17.24 0c.34-1.3.15-3.51-2.66-4.66c-.12-.02-.21.18-.09.27ZM9.94 9.55a6.27 6.27 0 0 0 3.89-3.33c.07-.13.28-.08.25.07c-.64 3-2.79 3.59-4.13 3.51c-.14-.01-.14-.21-.01-.25'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-npm\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23cb3837' d='M2 10.555h28v9.335H16v1.556H9.778v-1.557H2Zm1.556 7.779h3.111v-4.668h1.555v4.667h1.556v-6.222H3.556Zm7.778-6.223v7.779h3.111v-1.556h3.111v-6.223Zm3.111 1.556H16v3.112h-1.556Zm4.667-1.556v6.223h3.111v-4.668h1.556v4.667h1.556v-4.667h1.556v4.667h1.556v-6.222Z'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-pnpm\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23f9ad00' d='M30 10.75h-8.749V2H30Zm-9.626 0h-8.75V2h8.75Zm-9.625 0H2V2h8.749ZM30 20.375h-8.749v-8.75H30Z'/%3E%3Cpath fill='%23fff' d='M20.374 20.375h-8.75v-8.75h8.75Zm0 9.625h-8.75v-8.75h8.75ZM30 30h-8.749v-8.75H30Zm-19.251 0H2v-8.75h8.749Z'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-yarn\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%232188b6' d='M28.208 24.409a10.5 10.5 0 0 0-3.959 1.822a23.7 23.7 0 0 1-5.835 2.642a1.63 1.63 0 0 1-.983.55a62 62 0 0 1-6.447.577c-1.163.009-1.876-.3-2.074-.776a1.573 1.573 0 0 1 .866-2.074a4 4 0 0 1-.514-.379c-.171-.171-.352-.514-.406-.388c-.225.55-.343 1.894-.947 2.5c-.83.839-2.4.559-3.328.072c-1.019-.541.072-1.813.072-1.813a.73.73 0 0 1-.992-.343a4.85 4.85 0 0 1-.667-2.949a5.37 5.37 0 0 1 1.749-2.895a9.3 9.3 0 0 1 .658-4.4a10.45 10.45 0 0 1 3.165-3.661S6.628 10.747 7.35 8.817c.469-1.262.658-1.253.812-1.308a3.6 3.6 0 0 0 1.452-.857a5.27 5.27 0 0 1 4.41-1.7S15.2 1.4 16.277 2.09a18.4 18.4 0 0 1 1.533 2.886s1.281-.748 1.425-.469a11.33 11.33 0 0 1 .523 6.132a14 14 0 0 1-2.6 5.411c-.135.225 1.551.938 2.615 3.887c.983 2.7.108 4.96.262 5.212c.027.045.036.063.036.063s1.127.09 3.391-1.308a8.5 8.5 0 0 1 4.277-1.604a1.081 1.081 0 0 1 .469 2.11Z'/%3E%3C/svg%3E")}.btn{display:inline-block;cursor:pointer;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1));padding:.5rem 1rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.btn:disabled{cursor:default;--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1));opacity:.5}.absolute{position:absolute}.relative{position:relative}.right-3{right:.75rem}.top-3{top:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-b{border-bottom-width:1px}.border-indigo-400\/30{border-color:#818cf84d}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1))}.bg-indigo-500\/10{background-color:#6366f11a}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/50{background-color:#1e293b80}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-indigo-600{--tw-gradient-from: #4f46e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(79 70 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-violet-600{--tw-gradient-to: #7c3aed var(--tw-gradient-to-position)}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.font-sans{font-family:Inter,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-indigo-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity, 1))}.text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:bg-indigo-400:hover{--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-500\/20:hover{background-color:#6366f133}.hover\:text-indigo-200:hover{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.hover\:text-slate-300:hover{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.group[data-copied] .group-data-\[copied\]\:block{display:block}.group[data-copied] .group-data-\[copied\]\:hidden{display:none}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub Dark + Description: Dark theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-dark + Current colors taken from GitHub's CSS +*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;line-height:1.2}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}} diff --git a/docs/dist/assets/main.min.js b/docs/dist/assets/main.min.js index e69de29..f098ba0 100644 --- a/docs/dist/assets/main.min.js +++ b/docs/dist/assets/main.min.js @@ -0,0 +1,12 @@ +var st=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var _n=st((Sn,ce)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const g of l)if(g.type==="childList")for(const r of g.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(l){const g={};return l.integrity&&(g.integrity=l.integrity),l.referrerPolicy&&(g.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?g.credentials="include":l.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function i(l){if(l.ep)return;l.ep=!0;const g=n(l);fetch(l.href,g)}})();function at(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Ue(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&Ue(n)}),e}class Ae{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Pe(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function K(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const l in i)n[l]=i[l]}),n}const ct="",ve=e=>!!e.scope,lt=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,l)=>`${i}${"_".repeat(l+1)}`)].join(" ")}return`${t}${e}`};class dt{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Pe(t)}openNode(t){if(!ve(t))return;const n=lt(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){ve(t)&&(this.buffer+=ct)}value(){return this.buffer}span(t){this.buffer+=``}}const Re=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class _e{constructor(){this.rootNode=Re(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Re({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{_e._collapse(n)}))}}class ut extends _e{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new dt(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function te(e){return e?typeof e=="string"?e:e.source:null}function ze(e){return Y("(?=",e,")")}function gt(e){return Y("(?:",e,")*")}function ft(e){return Y("(?:",e,")?")}function Y(...e){return e.map(n=>te(n)).join("")}function pt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function we(...e){return"("+(pt(e).capture?"":"?:")+e.map(i=>te(i)).join("|")+")"}function $e(e){return new RegExp(e.toString()+"|").exec("").length-1}function ht(e,t){const n=e&&e.exec(t);return n&&n.index===0}const bt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Se(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const l=n;let g=te(i),r="";for(;g.length>0;){const s=bt.exec(g);if(!s){r+=g;break}r+=g.substring(0,s.index),g=g.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?r+="\\"+String(Number(s[1])+l):(r+=s[0],s[0]==="("&&n++)}return r}).map(i=>`(${i})`).join(t)}const mt=/\b\B/,He="[a-zA-Z]\\w*",xe="[a-zA-Z_]\\w*",Ge="\\b\\d+(\\.\\d+)?",Fe="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ze="\\b(0b[01]+)",Et="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",yt=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=Y(t,/.*\b/,e.binary,/\b.*/)),K({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},ne={begin:"\\\\[\\s\\S]",relevance:0},_t={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ne]},wt={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ne]},St={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},de=function(e,t,n={}){const i=K({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const l=we("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:Y(/[ ]+/,"(",l,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},xt=de("//","$"),kt=de("/\\*","\\*/"),Nt=de("#","$"),Ot={scope:"number",begin:Ge,relevance:0},Tt={scope:"number",begin:Fe,relevance:0},Mt={scope:"number",begin:Ze,relevance:0},At={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ne,{begin:/\[/,end:/\]/,relevance:0,contains:[ne]}]},vt={scope:"title",begin:He,relevance:0},Rt={scope:"title",begin:xe,relevance:0},Ct={begin:"\\.\\s*"+xe,relevance:0},It=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var se=Object.freeze({__proto__:null,APOS_STRING_MODE:_t,BACKSLASH_ESCAPE:ne,BINARY_NUMBER_MODE:Mt,BINARY_NUMBER_RE:Ze,COMMENT:de,C_BLOCK_COMMENT_MODE:kt,C_LINE_COMMENT_MODE:xt,C_NUMBER_MODE:Tt,C_NUMBER_RE:Fe,END_SAME_AS_BEGIN:It,HASH_COMMENT_MODE:Nt,IDENT_RE:He,MATCH_NOTHING_RE:mt,METHOD_GUARD:Ct,NUMBER_MODE:Ot,NUMBER_RE:Ge,PHRASAL_WORDS_MODE:St,QUOTE_STRING_MODE:wt,REGEXP_MODE:At,RE_STARTERS_RE:Et,SHEBANG:yt,TITLE_MODE:vt,UNDERSCORE_IDENT_RE:xe,UNDERSCORE_TITLE_MODE:Rt});function Lt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Dt(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Bt(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Lt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Ut(e,t){Array.isArray(e.illegal)&&(e.illegal=we(...e.illegal))}function Pt(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function zt(e,t){e.relevance===void 0&&(e.relevance=1)}const $t=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=Y(n.beforeMatch,ze(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Ht=["of","and","for","in","not","or","if","then","parent","list","value"],Gt="keyword";function Ke(e,t,n=Gt){const i=Object.create(null);return typeof e=="string"?l(n,e.split(" ")):Array.isArray(e)?l(n,e):Object.keys(e).forEach(function(g){Object.assign(i,Ke(e[g],t,g))}),i;function l(g,r){t&&(r=r.map(s=>s.toLowerCase())),r.forEach(function(s){const c=s.split("|");i[c[0]]=[g,Ft(c[0],c[1])]})}}function Ft(e,t){return t?Number(t):Zt(e)?0:1}function Zt(e){return Ht.includes(e.toLowerCase())}const Ce={},X=e=>{console.error(e)},Ie=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Q=(e,t)=>{Ce[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ce[`${e}/${t}`]=!0)},le=new Error;function je(e,t,{key:n}){let i=0;const l=e[n],g={},r={};for(let s=1;s<=t.length;s++)r[s+i]=l[s],g[s+i]=!0,i+=$e(t[s-1]);e[n]=r,e[n]._emit=g,e[n]._multi=!0}function Kt(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw X("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),le;if(typeof e.beginScope!="object"||e.beginScope===null)throw X("beginScope must be object"),le;je(e,e.begin,{key:"beginScope"}),e.begin=Se(e.begin,{joinWith:""})}}function jt(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw X("skip, excludeEnd, returnEnd not compatible with endScope: {}"),le;if(typeof e.endScope!="object"||e.endScope===null)throw X("endScope must be object"),le;je(e,e.end,{key:"endScope"}),e.end=Se(e.end,{joinWith:""})}}function Wt(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Xt(e){Wt(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Kt(e),jt(e)}function qt(e){function t(r,s){return new RegExp(te(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,s]),this.matchAt+=$e(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(c=>c[1]);this.matcherRe=t(Se(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const c=this.matcherRe.exec(s);if(!c)return null;const b=c.findIndex((O,N)=>N>0&&O!==void 0),m=this.matchIndexes[b];return c.splice(0,b),Object.assign(c,m)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const c=new n;return this.rules.slice(s).forEach(([b,m])=>c.addRule(b,m)),c.compile(),this.multiRegexes[s]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,c){this.rules.push([s,c]),c.type==="begin"&&this.count++}exec(s){const c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let b=c.exec(s);if(this.resumingScanAtSamePosition()&&!(b&&b.index===this.lastIndex)){const m=this.getMatcher(0);m.lastIndex=this.lastIndex+1,b=m.exec(s)}return b&&(this.regexIndex+=b.position+1,this.regexIndex===this.count&&this.considerAll()),b}}function l(r){const s=new i;return r.contains.forEach(c=>s.addRule(c.begin,{rule:c,type:"begin"})),r.terminatorEnd&&s.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&s.addRule(r.illegal,{type:"illegal"}),s}function g(r,s){const c=r;if(r.isCompiled)return c;[Dt,Pt,Xt,$t].forEach(m=>m(r,s)),e.compilerExtensions.forEach(m=>m(r,s)),r.__beforeBegin=null,[Bt,Ut,zt].forEach(m=>m(r,s)),r.isCompiled=!0;let b=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),b=r.keywords.$pattern,delete r.keywords.$pattern),b=b||/\w+/,r.keywords&&(r.keywords=Ke(r.keywords,e.case_insensitive)),c.keywordPatternRe=t(b,!0),s&&(r.begin||(r.begin=/\B|\b/),c.beginRe=t(c.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(c.endRe=t(c.end)),c.terminatorEnd=te(c.end)||"",r.endsWithParent&&s.terminatorEnd&&(c.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(c.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(m){return Yt(m==="self"?r:m)})),r.contains.forEach(function(m){g(m,c)}),r.starts&&g(r.starts,s),c.matcher=l(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=K(e.classNameAliases||{}),g(e)}function We(e){return e?e.endsWithParent||We(e.starts):!1}function Yt(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return K(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:We(e)?K(e,{starts:e.starts?K(e.starts):null}):Object.isFrozen(e)?K(e):e}var Vt="11.11.0";class Jt extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const ye=Pe,Le=K,De=Symbol("nomatch"),Qt=7,Xe=function(e){const t=Object.create(null),n=Object.create(null),i=[];let l=!0;const g="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:ut};function c(o){return s.noHighlightRe.test(o)}function b(o){let u=o.className+" ";u+=o.parentNode?o.parentNode.className:"";const f=s.languageDetectRe.exec(u);if(f){const E=M(f[1]);return E||(Ie(g.replace("{}",f[1])),Ie("Falling back to no-highlight mode for this block.",o)),E?f[1]:"no-highlight"}return u.split(/\s+/).find(E=>c(E)||M(E))}function m(o,u,f){let E="",w="";typeof u=="object"?(E=o,f=u.ignoreIllegals,w=u.language):(Q("10.7.0","highlight(lang, code, ...args) has been deprecated."),Q("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),w=o,E=u),f===void 0&&(f=!0);const A={code:E,language:w};J("before:highlight",A);const L=A.result?A.result:O(A.language,A.code,f);return L.code=A.code,J("after:highlight",L),L}function O(o,u,f,E){const w=Object.create(null);function A(a,d){return a.keywords[d]}function L(){if(!p.keywords){T.addText(_);return}let a=0;p.keywordPatternRe.lastIndex=0;let d=p.keywordPatternRe.exec(_),h="";for(;d;){h+=_.substring(a,d.index);const y=H.case_insensitive?d[0].toLowerCase():d[0],v=A(p,y);if(v){const[G,rt]=v;if(T.addText(h),h="",w[y]=(w[y]||0)+1,w[y]<=Qt&&(oe+=rt),G.startsWith("_"))h+=d[0];else{const ot=H.classNameAliases[G]||G;$(d[0],ot)}}else h+=d[0];a=p.keywordPatternRe.lastIndex,d=p.keywordPatternRe.exec(_)}h+=_.substring(a),T.addText(h)}function j(){if(_==="")return;let a=null;if(typeof p.subLanguage=="string"){if(!t[p.subLanguage]){T.addText(_);return}a=O(p.subLanguage,_,!0,Me[p.subLanguage]),Me[p.subLanguage]=a._top}else a=D(_,p.subLanguage.length?p.subLanguage:null);p.relevance>0&&(oe+=a.relevance),T.__addSublanguage(a._emitter,a.language)}function I(){p.subLanguage!=null?j():L(),_=""}function $(a,d){a!==""&&(T.startScope(d),T.addText(a),T.endScope())}function ke(a,d){let h=1;const y=d.length-1;for(;h<=y;){if(!a._emit[h]){h++;continue}const v=H.classNameAliases[a[h]]||a[h],G=d[h];v?$(G,v):(_=G,L(),_=""),h++}}function Ne(a,d){return a.scope&&typeof a.scope=="string"&&T.openNode(H.classNameAliases[a.scope]||a.scope),a.beginScope&&(a.beginScope._wrap?($(_,H.classNameAliases[a.beginScope._wrap]||a.beginScope._wrap),_=""):a.beginScope._multi&&(ke(a.beginScope,d),_="")),p=Object.create(a,{parent:{value:p}}),p}function Oe(a,d,h){let y=ht(a.endRe,h);if(y){if(a["on:end"]){const v=new Ae(a);a["on:end"](d,v),v.isMatchIgnored&&(y=!1)}if(y){for(;a.endsParent&&a.parent;)a=a.parent;return a}}if(a.endsWithParent)return Oe(a.parent,d,h)}function Qe(a){return p.matcher.regexIndex===0?(_+=a[0],1):(Ee=!0,0)}function et(a){const d=a[0],h=a.rule,y=new Ae(h),v=[h.__beforeBegin,h["on:begin"]];for(const G of v)if(G&&(G(a,y),y.isMatchIgnored))return Qe(d);return h.skip?_+=d:(h.excludeBegin&&(_+=d),I(),!h.returnBegin&&!h.excludeBegin&&(_=d)),Ne(h,a),h.returnBegin?0:d.length}function tt(a){const d=a[0],h=u.substring(a.index),y=Oe(p,a,h);if(!y)return De;const v=p;p.endScope&&p.endScope._wrap?(I(),$(d,p.endScope._wrap)):p.endScope&&p.endScope._multi?(I(),ke(p.endScope,a)):v.skip?_+=d:(v.returnEnd||v.excludeEnd||(_+=d),I(),v.excludeEnd&&(_=d));do p.scope&&T.closeNode(),!p.skip&&!p.subLanguage&&(oe+=p.relevance),p=p.parent;while(p!==y.parent);return y.starts&&Ne(y.starts,a),v.returnEnd?0:d.length}function nt(){const a=[];for(let d=p;d!==H;d=d.parent)d.scope&&a.unshift(d.scope);a.forEach(d=>T.openNode(d))}let re={};function Te(a,d){const h=d&&d[0];if(_+=a,h==null)return I(),0;if(re.type==="begin"&&d.type==="end"&&re.index===d.index&&h===""){if(_+=u.slice(d.index,d.index+1),!l){const y=new Error(`0 width match regex (${o})`);throw y.languageName=o,y.badRule=re.rule,y}return 1}if(re=d,d.type==="begin")return et(d);if(d.type==="illegal"&&!f){const y=new Error('Illegal lexeme "'+h+'" for mode "'+(p.scope||"")+'"');throw y.mode=p,y}else if(d.type==="end"){const y=tt(d);if(y!==De)return y}if(d.type==="illegal"&&h==="")return _+=` +`,1;if(me>1e5&&me>d.index*3)throw new Error("potential infinite loop, way more iterations than matches");return _+=h,h.length}const H=M(o);if(!H)throw X(g.replace("{}",o)),new Error('Unknown language: "'+o+'"');const it=qt(H);let be="",p=E||it;const Me={},T=new s.__emitter(s);nt();let _="",oe=0,W=0,me=0,Ee=!1;try{if(H.__emitTokens)H.__emitTokens(u,T);else{for(p.matcher.considerAll();;){me++,Ee?Ee=!1:p.matcher.considerAll(),p.matcher.lastIndex=W;const a=p.matcher.exec(u);if(!a)break;const d=u.substring(W,a.index),h=Te(d,a);W=a.index+h}Te(u.substring(W))}return T.finalize(),be=T.toHTML(),{language:o,value:be,relevance:oe,illegal:!1,_emitter:T,_top:p}}catch(a){if(a.message&&a.message.includes("Illegal"))return{language:o,value:ye(u),illegal:!0,relevance:0,_illegalBy:{message:a.message,index:W,context:u.slice(W-100,W+100),mode:a.mode,resultSoFar:be},_emitter:T};if(l)return{language:o,value:ye(u),illegal:!1,relevance:0,errorRaised:a,_emitter:T,_top:p};throw a}}function N(o){const u={value:ye(o),illegal:!1,relevance:0,_top:r,_emitter:new s.__emitter(s)};return u._emitter.addText(o),u}function D(o,u){u=u||s.languages||Object.keys(t);const f=N(o),E=u.filter(M).filter(V).map(I=>O(I,o,!1));E.unshift(f);const w=E.sort((I,$)=>{if(I.relevance!==$.relevance)return $.relevance-I.relevance;if(I.language&&$.language){if(M(I.language).supersetOf===$.language)return 1;if(M($.language).supersetOf===I.language)return-1}return 0}),[A,L]=w,j=A;return j.secondBest=L,j}function S(o,u,f){const E=u&&n[u]||f;o.classList.add("hljs"),o.classList.add(`language-${E}`)}function k(o){let u=null;const f=b(o);if(c(f))return;if(J("before:highlightElement",{el:o,language:f}),o.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",o);return}if(o.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(o)),s.throwUnescapedHTML))throw new Jt("One of your code blocks includes unescaped HTML.",o.innerHTML);u=o;const E=u.textContent,w=f?m(E,{language:f,ignoreIllegals:!0}):D(E);o.innerHTML=w.value,o.dataset.highlighted="yes",S(o,f,w.language),o.result={language:w.language,re:w.relevance,relevance:w.relevance},w.secondBest&&(o.secondBest={language:w.secondBest.language,relevance:w.secondBest.relevance}),J("after:highlightElement",{el:o,result:w,text:E})}function x(o){s=Le(s,o)}const F=()=>{C(),Q("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function B(){C(),Q("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let U=!1;function C(){function o(){C()}if(document.readyState==="loading"){U||window.addEventListener("DOMContentLoaded",o,!1),U=!0;return}document.querySelectorAll(s.cssSelector).forEach(k)}function P(o,u){let f=null;try{f=u(e)}catch(E){if(X("Language definition for '{}' could not be registered.".replace("{}",o)),l)X(E);else throw E;f=r}f.name||(f.name=o),t[o]=f,f.rawDefinition=u.bind(null,e),f.aliases&&R(f.aliases,{languageName:o})}function z(o){delete t[o];for(const u of Object.keys(n))n[u]===o&&delete n[u]}function Z(){return Object.keys(t)}function M(o){return o=(o||"").toLowerCase(),t[o]||t[n[o]]}function R(o,{languageName:u}){typeof o=="string"&&(o=[o]),o.forEach(f=>{n[f.toLowerCase()]=u})}function V(o){const u=M(o);return u&&!u.disableAutodetect}function ge(o){o["before:highlightBlock"]&&!o["before:highlightElement"]&&(o["before:highlightElement"]=u=>{o["before:highlightBlock"](Object.assign({block:u.el},u))}),o["after:highlightBlock"]&&!o["after:highlightElement"]&&(o["after:highlightElement"]=u=>{o["after:highlightBlock"](Object.assign({block:u.el},u))})}function fe(o){ge(o),i.push(o)}function pe(o){const u=i.indexOf(o);u!==-1&&i.splice(u,1)}function J(o,u){const f=o;i.forEach(function(E){E[f]&&E[f](u)})}function he(o){return Q("10.7.0","highlightBlock will be removed entirely in v12.0"),Q("10.7.0","Please use highlightElement now."),k(o)}Object.assign(e,{highlight:m,highlightAuto:D,highlightAll:C,highlightElement:k,highlightBlock:he,configure:x,initHighlighting:F,initHighlightingOnLoad:B,registerLanguage:P,unregisterLanguage:z,listLanguages:Z,getLanguage:M,registerAliases:R,autoDetection:V,inherit:Le,addPlugin:fe,removePlugin:pe}),e.debugMode=function(){l=!1},e.safeMode=function(){l=!0},e.versionString=Vt,e.regex={concat:Y,lookahead:ze,either:we,optional:ft,anyNumberOfTimes:gt};for(const o in se)typeof se[o]=="object"&&Ue(se[o]);return Object.assign(e,se),e},ee=Xe({});ee.newInstance=()=>Xe({});var en=ee;ee.HighlightJS=ee;ee.default=ee;const ie=at(en),Be="[A-Za-z$_][0-9A-Za-z$_]*",tn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],nn=["true","false","null","undefined","NaN","Infinity"],qe=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Ye=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ve=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],rn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],on=[].concat(Ve,qe,Ye);function sn(e){const t=e.regex,n=(f,{after:E})=>{const w="",end:""},g=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(f,E)=>{const w=f[0].length+f.index,A=f.input[w];if(A==="<"||A===","){E.ignoreMatch();return}A===">"&&(n(f,{after:w})||E.ignoreMatch());let L;const j=f.input.substring(w);if(L=j.match(/^\s*=/)){E.ignoreMatch();return}if((L=j.match(/^\s+extends\s+/))&&L.index===0){E.ignoreMatch();return}}},s={$pattern:Be,keyword:tn,literal:nn,built_in:on,"variable.language":rn},c="[0-9](_?[0-9])*",b=`\\.(${c})`,m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",O={className:"number",variants:[{begin:`(\\b(${m})((${b})|\\.)?|(${b}))[eE][+-]?(${c})\\b`},{begin:`\\b(${m})\\b((${b})\\b|\\.)?|(${b})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},D={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},S={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"css"}},k={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,N]},B={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},U=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,D,S,k,x,{match:/\$\d+/},O];N.contains=U.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(U)});const C=[].concat(B,N.contains),P=C.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(C)}]),z={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:P},Z={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,t.concat(i,"(",t.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},M={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...qe,...Ye]}},R={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},V={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[z],illegal:/%/},ge={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function fe(f){return t.concat("(?!",f.join("|"),")")}const pe={match:t.concat(/\b/,fe([...Ve,"super","import"].map(f=>`${f}\\s*\\(`)),i,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},J={begin:t.concat(/\./,t.lookahead(t.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},he={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},z]},o="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",u={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(o)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[z]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:P,CLASS_REFERENCE:M},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),R,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,D,S,k,x,B,{match:/\$\d+/},O,M,{scope:"attr",match:i+t.lookahead(":"),relevance:0},u,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[B,e.REGEXP_MODE,{className:"function",begin:o,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:P}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:g},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},V,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[z,e.inherit(e.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},J,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[z]},pe,ge,Z,he,{match:/\$[(.]/}]}}const an=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),cn=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ln=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],dn=[...cn,...ln],un=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),gn=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),fn=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),pn=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function hn(e){const t=e.regex,n=an(e),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l="and or not only",g=/@-?\w[\w]*(-\w+)*/,r="[a-zA-Z-][a-zA-Z0-9_-]*",s=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,i,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+r,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+gn.join("|")+")"},{begin:":(:)?("+fn.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+pn.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...s,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...s,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:g},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:l,attribute:un.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...s,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+dn.join("|")+")\\b"}]}}function bn(e){const t={variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]},l={begin:/\{/,end:/\}/,contains:i.contains},g={className:"string",begin:"'\\\\?.",end:"'",illegal:"."};return{name:"Elm",keywords:["let","in","if","then","else","case","of","where","module","import","exposing","type","alias","as","infix","infixl","infixr","port","effect","command","subscription"],contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,i,l,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},g,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}function mn(e){const t=e.regex,n={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const l={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},g=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),r={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,l]};l.contains.push(s);const c={match:/\\"/},b={className:"string",begin:/'/,end:/'/},m={match:/\\'/},O={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},N=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],D=e.SHEBANG({binary:`(${N.join("|")})`,relevance:10}),S={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},k=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],x=["true","false"],F={match:/(\/[a-z._-]+)+/},B=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],U=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],C=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],P=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:k,literal:x,built_in:[...B,...U,"set","shopt",...C,...P]},contains:[D,e.SHEBANG(),S,O,g,r,F,s,c,b,m,n]}}/*! +* Project : simply-countdown +* Date : 06/12/2024 +* License : MIT +* Version : 2.0.1 +* Author : Vincent Loy +* Contributors : +* - Justin Beasley +* - Nathan Smith +*/let Je=function(e){let t,n=e||{};for(let i=1;ie!==null&&Symbol.iterator in Object(e),ae=(e,t,n)=>{let i=document.createElement("div"),l=document.createElement("span"),g=document.createElement("span"),r=document.createElement("div");return r.appendChild(l),r.appendChild(g),i.appendChild(r),i.classList.add(t.sectionClass),i.classList.add(n),l.classList.add(t.amountClass),g.classList.add(t.wordClass),e.appendChild(i),{full:i,amount:l,word:g}},yn=(e,t)=>{let n;return e.inline?(n=document.createElement("span"),n.classList.add(e.inlineClass),t.appendChild(n),{days:n,hours:n,minutes:n,seconds:n}):{days:ae(t,e,"simply-days-section"),hours:ae(t,e,"simply-hours-section"),minutes:ae(t,e,"simply-minutes-section"),seconds:ae(t,e,"simply-seconds-section")}};const q=function(e,t){const n=Object.getPrototypeOf(e);let i=Je({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(S,k)=>k>1?S+"s":S,root:"day"},hours:{lambda:(S,k)=>k>1?S+"s":S,root:"hour"},minutes:{lambda:(S,k)=>k>1?S+"s":S,root:"minute"},seconds:{lambda:(S,k)=>k>1?S+"s":S,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},t),l,g,r,s,c,b,m,O,N;n===String.prototype?N=document.querySelectorAll(e):N=e,i.enableUtc?g=new Date(Date.UTC(i.year,i.month-1,i.day,i.hours,i.minutes,i.seconds)):g=new Date(i.year,i.month-1,i.day,i.hours,i.minutes,i.seconds);let D=S=>{let k=S,x=yn(i,k),F;F=function(){let B,U,C,P,z=()=>{c=parseInt(s/86400,10),s%=86400,b=parseInt(s/3600,10),s%=3600,m=parseInt(s/60,10),O=parseInt(s%60,10)};i.enableUtc?(r=new Date,r=new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds()))):r=new Date,s=Math.floor((g-r.getTime())/1e3),s>0?z():i.countUp?(s=(r.getTime()-g)/1e3,z()):(c=0,b=0,m=0,O=0,window.clearInterval(l),i.onEnd());let Z=(R,V)=>R.hasOwnProperty("lambda")?R.lambda(R.root,V):R.root,M=i.words;if(B=Z(M.days,c),U=Z(M.hours,b),C=Z(M.minutes,m),P=Z(M.seconds,O),i.inline){let R="";i.removeZeroUnits&&c===0||(R+=`${c} ${B}${i.inlineSeparator}`),i.removeZeroUnits&&c===0&&b===0||(R+=`${b} ${U}${i.inlineSeparator}`),i.removeZeroUnits&&c===0&&b===0&&m===0||(R+=`${m} ${C}${i.inlineSeparator}`),R+=`${O} ${P}`,k.innerHTML=R.replace(/, $/,"")}else i.removeZeroUnits&&c===0?x.days.full.style.display="none":(x.days.amount.textContent=(i.zeroPad&&c.toString().length<2?"0":"")+c,x.days.word.textContent=B,x.days.full.style.display=""),i.removeZeroUnits&&c===0&&b===0?x.hours.full.style.display="none":(x.hours.amount.textContent=(i.zeroPad&&b.toString().length<2?"0":"")+b,x.hours.word.textContent=U,x.hours.full.style.display=""),i.removeZeroUnits&&c===0&&b===0&&m===0?x.minutes.full.style.display="none":(x.minutes.amount.textContent=(i.zeroPad&&m.toString().length<2?"0":"")+m,x.minutes.word.textContent=C,x.minutes.full.style.display=""),x.seconds.amount.textContent=(i.zeroPad&&O.toString().length<2?"0":"")+O,x.seconds.word.textContent=P,x.seconds.full.style.display=""},F(),l=window.setInterval(F,i.refresh)};En(N)?Array.prototype.forEach.call(N,S=>{D(S)}):D(N)};typeof ce<"u"&&ce.exports?ce.exports={simplyCountdown:q}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:q}});ie.registerLanguage("javascript",sn);ie.registerLanguage("elm",bn);ie.registerLanguage("css",hn);ie.registerLanguage("bash",mn);ie.highlightAll();document.querySelectorAll(".package-manager-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.manager;document.querySelectorAll(".package-manager-btn").forEach(n=>{n.classList.toggle("active",n===e)}),document.querySelectorAll(".package-manager-content").forEach(n=>{n.classList.toggle("active",n.dataset.manager===t)})})});document.querySelectorAll(".copy-button").forEach(e=>{e.addEventListener("click",async()=>{const n=e.closest(".relative").querySelector("pre.active code").textContent;try{await navigator.clipboard.writeText(n),e.dataset.copied=!0,setTimeout(()=>{delete e.dataset.copied},2e3)}catch(i){console.error("Failed to copy:",i)}})});const ue=new Date().getFullYear()+1;q(".simply-countdown-one",{year:ue,month:6,day:28});q(".simply-countdown-two",{year:ue,month:6,day:28,zeroPad:!1});q(".simply-countdown-inline",{year:ue,month:6,day:28,inline:!0});q(".simply-countdown-countup",{year:2023,month:1,day:1,countUp:!0});q("#simply-countdown-losange",{year:ue,month:6,day:28})});export default _n(); diff --git a/docs/dist/favicon.ico b/docs/dist/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/docs/dist/index.html b/docs/dist/index.html index e69de29..c794d4a 100644 --- a/docs/dist/index.html +++ b/docs/dist/index.html @@ -0,0 +1,222 @@ + + + + + + simplyCountdown.js | A Tiny and dead simple Javascript Countdown Library + + + + + + + + + + + + + + + +
+
+

simplyCountdown.js

+

A dead simple and lightweight countdown library

+ +
+
+ +
+
+
+

+ + Installation +

+
+
+
+ + + + +
+ +
+
npm install simplycountdown
+
yarn add simplycountdown
+
pnpm install simplycountdown
+
bun install simplycountdown
+ + +
+
+
+
+ +
+

+ + Examples +

+ +
+
+

Default Theme

+
+
+ +
+

Without Zero Units - Dark Theme

+
+
+ +
+

Inline

+
+
+ +
+

Count Up - Cyberpunk Theme

+
+
+
+ +
+
+

Losange Theme

+
+
+
+
+ +
+

+ + Usage +

+
+

+    simplyCountdown('[CSS-SELECTOR]', {
+        year: 2025, // required
+        month: 6, // required
+        day: 28, // required
+        hours: 0, // Default is 0 [0-23] integer
+        minutes: 0, // Default is 0 [0-59] integer
+        seconds: 0, // Default is 0 [0-59] integer
+        words: { //words displayed into the countdown
+            days: { singular: 'day', plural: 'days' },
+            hours: { singular: 'hour', plural: 'hours' },
+            minutes: { singular: 'minute', plural: 'minutes' },
+            seconds: { singular: 'second', plural: 'seconds' }
+        },
+        plural: true, //use plurals
+        inline: false, //set to true to display inline
+        inlineClass: 'simply-countdown-inline', //inline css span class
+        enableUtc: false, //Use UTC or not - default : false
+        onEnd: function() { return; }, //Callback on countdown end
+        refresh: 1000, //default refresh every 1s
+        sectionClass: 'simply-section', //section css class
+        amountClass: 'simply-amount', //amount css class
+        wordClass: 'simply-word', //word css class
+        zeroPad: false,
+        countUp: false
+    });
+                    
+
+
+ +
+

+ + Customize +

+
+

+    .simply-countdown {
+        /* The countdown */
+    }
+    .simply-countdown > .simply-section {
+        /* coutndown blocks */
+    }
+    
+    .simply-countdown > .simply-section > div {
+        /* countdown block inner div */
+    }
+    
+    .simply-countdown > .simply-section .simply-amount,
+    .simply-countdown > .simply-section .simply-word {
+        /* amounts and words */
+    }
+    
+    .simply-countdown > .simply-section .simply-amount {
+        /* amounts */
+    }
+    
+    .simply-countdown > .simply-section .simply-word {
+        /* words */
+    }
+                        
+                    
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/docs/src/assets/styles/main.css b/docs/src/assets/styles/main.css index e69de29..920c892 100644 --- a/docs/src/assets/styles/main.css +++ b/docs/src/assets/styles/main.css @@ -0,0 +1,31 @@ +/* Package manager buttons */ +.package-manager-btn { + @apply px-3 py-1.5 rounded-lg text-sm font-medium + flex items-center gap-1.5 + bg-slate-700/50 text-slate-400 + hover:bg-slate-700 hover:text-slate-300 + transition-colors duration-200; +} + +.package-manager-btn.active { + @apply bg-indigo-500/20 text-indigo-400 + hover:bg-indigo-500/30 hover:text-indigo-300; +} + +/* Package manager content */ +.package-manager-content { + @apply hidden; +} + +.package-manager-content.active { + @apply block; +} + +/* Copy button */ +.relative:hover .copy-button { + @apply opacity-100; +} + +pre { + @apply overflow-x-auto; +} \ No newline at end of file diff --git a/docs/src/index.html b/docs/src/index.html index 1cccb89..b592502 100644 --- a/docs/src/index.html +++ b/docs/src/index.html @@ -41,24 +41,46 @@

simplyCountdown.js

-

- - Installation -

-
-
-

- - NPM -

-
npm install simplycountdown
-
-
-

- - Yarn -

-
yarn add simplycountdown
+
+
+

+ + Installation +

+
+
+
+ + + + +
+ +
+
npm install simplycountdown
+
yarn add simplycountdown
+
pnpm install simplycountdown
+
bun install simplycountdown
+ + +
+
+
@@ -134,6 +156,41 @@

+ +
+

+ + Customize +

+
+

+    .simply-countdown {
+        /* The countdown */
+    }
+    .simply-countdown > .simply-section {
+        /* coutndown blocks */
+    }
+    
+    .simply-countdown > .simply-section > div {
+        /* countdown block inner div */
+    }
+    
+    .simply-countdown > .simply-section .simply-amount,
+    .simply-countdown > .simply-section .simply-word {
+        /* amounts and words */
+    }
+    
+    .simply-countdown > .simply-section .simply-amount {
+        /* amounts */
+    }
+    
+    .simply-countdown > .simply-section .simply-word {
+        /* words */
+    }
+                        
+                    
+
+
diff --git a/docs/src/main.js b/docs/src/main.js index e677abe..bac1e08 100644 --- a/docs/src/main.js +++ b/docs/src/main.js @@ -4,6 +4,9 @@ import './style.css' // Import highlight.js import hljs from 'highlight.js/lib/core' import javascript from 'highlight.js/lib/languages/javascript' +import css from 'highlight.js/lib/languages/css' +import elm from 'highlight.js/lib/languages/elm' +import bash from 'highlight.js/lib/languages/bash' import 'highlight.js/styles/github-dark.css' // Import our countdown library and themes @@ -15,8 +18,47 @@ import { simplyCountdown } from '../../src/core/simplyCountdown.js' // Configure highlight.js hljs.registerLanguage('javascript', javascript) +hljs.registerLanguage('elm', elm) +hljs.registerLanguage('css', css) +hljs.registerLanguage('bash', bash) hljs.highlightAll() +// Package manager switcher +document.querySelectorAll('.package-manager-btn').forEach(button => { + button.addEventListener('click', () => { + const manager = button.dataset.manager + + // Update buttons + document.querySelectorAll('.package-manager-btn').forEach(btn => { + btn.classList.toggle('active', btn === button) + }) + + // Update content + document.querySelectorAll('.package-manager-content').forEach(content => { + content.classList.toggle('active', content.dataset.manager === manager) + }) + }) +}) + +// Copy button functionality +document.querySelectorAll('.copy-button').forEach(button => { + button.addEventListener('click', async () => { + const pre = button.closest('.relative').querySelector('pre.active code') + const text = pre.textContent + + try { + await navigator.clipboard.writeText(text) + button.dataset.copied = true + + setTimeout(() => { + delete button.dataset.copied + }, 2000) + } catch (err) { + console.error('Failed to copy:', err) + } + }) +}) + // Configuration des exemples const nextYear = new Date().getFullYear() + 1 diff --git a/package.json b/package.json index af9b79c..9baa5ec 100644 --- a/package.json +++ b/package.json @@ -51,10 +51,11 @@ "build:lib": "vite build", "build:docs": "vite build --mode docs", "build": "npm run build:lib && npm run build:docs", - "preview": "vite preview docs/dist" + "preview": "vite preview --outDir docs/dist" }, "devDependencies": { "@iconify-json/lucide": "^1.1.144", + "@iconify-json/vscode-icons": "^1.1.33", "@iconify/tailwind": "^0.1.4", "@tailwindcss/typography": "^0.5.10", "@vitejs/plugin-vue": "^5.0.0", diff --git a/src/themes/custom_example.css b/src/themes/custom_example.css deleted file mode 100644 index 38452a9..0000000 --- a/src/themes/custom_example.css +++ /dev/null @@ -1,29 +0,0 @@ -/** -* Project : simply-countdown -* File : simplyCountdown.theme.custom -* Author : Your Name -*/ - -.simply-countdown { - /* The countdown */ -} -.simply-countdown > .simply-section { - /* coutndown blocks */ -} - -.simply-countdown > .simply-section > div { - /* countdown block inner div */ -} - -.simply-countdown > .simply-section .simply-amount, -.simply-countdown > .simply-section .simply-word { - /* amounts and words */ -} - -.simply-countdown > .simply-section .simply-amount { - /* amounts */ -} - -.simply-countdown > .simply-section .simply-word { - /* words */ -} From ab17ce9aea5e53e552cdbd7b17ff22059a9fcbd2 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Tue, 24 Dec 2024 08:39:40 +0100 Subject: [PATCH 09/75] update LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/LICENSE b/LICENSE index e69de29..f4350ce 100644 --- a/LICENSE +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present Vincent Loy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file From 98c1c1a39ea592a807d55f809af858cfc6b24f26 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Tue, 24 Dec 2024 10:39:43 +0100 Subject: [PATCH 10/75] improve the doc again --- docs/src/assets/styles/main.css | 2 +- docs/src/index.html | 190 ++++++++++++++++++-------------- docs/src/main.js | 29 +++-- docs/src/style.css | 14 ++- src/themes/circle.css | 81 ++++++++++++++ src/themes/losange.css | 2 +- tailwind.config.js | 2 +- 7 files changed, 226 insertions(+), 94 deletions(-) create mode 100644 src/themes/circle.css diff --git a/docs/src/assets/styles/main.css b/docs/src/assets/styles/main.css index 920c892..bdd3efe 100644 --- a/docs/src/assets/styles/main.css +++ b/docs/src/assets/styles/main.css @@ -1,6 +1,6 @@ /* Package manager buttons */ .package-manager-btn { - @apply px-3 py-1.5 rounded-lg text-sm font-medium + @apply px-3 py-1.5 rounded-lg text-xs lg:text-sm font-medium flex items-center gap-1.5 bg-slate-700/50 text-slate-400 hover:bg-slate-700 hover:text-slate-300 diff --git a/docs/src/index.html b/docs/src/index.html index b592502..7a3d547 100644 --- a/docs/src/index.html +++ b/docs/src/index.html @@ -20,20 +20,28 @@
-
-

simplyCountdown.js

-

A dead simple and lightweight countdown library

-
- - - View on GitHub - - - - Download - +
+

+ simplyCountdown.js +

+

A dead simple and lightweight countdown library

+
@@ -47,38 +55,36 @@

Installation

-
-
-
- - - - -
+
+
+ + + + +
+ +
+
npm install simplycountdown
+
yarn add simplycountdown
+
pnpm install simplycountdown
+
bun install simplycountdown
-
-
npm install simplycountdown
-
yarn add simplycountdown
-
pnpm install simplycountdown
-
bun install simplycountdown
- - -
+
@@ -92,33 +98,40 @@

-
-

Default Theme

+
+

Default Theme

-
-

Without Zero Units - Dark Theme

+
+

Without Zero Units - Dark Theme

-
-

Inline

+
+

Inline

-
-

Count Up - Cyberpunk Theme

+
+

Count Up - Cyberpunk Theme

-
-
+
+

Circle Theme

+
+
+
-

Losange Theme

+

Losange Theme

+ +
+ +
@@ -126,33 +139,48 @@

Usage

-
+

+ Javascript - common usage +

+

+    import { simplyCountdown } from 'simplyCountdown'; // Not necessary if you use iife version
+
+    // This is an example with default parameters
     simplyCountdown('[CSS-SELECTOR]', {
-        year: 2025, // required
-        month: 6, // required
-        day: 28, // required
-        hours: 0, // Default is 0 [0-23] integer
-        minutes: 0, // Default is 0 [0-59] integer
-        seconds: 0, // Default is 0 [0-59] integer
-        words: { //words displayed into the countdown
-            days: { singular: 'day', plural: 'days' },
-            hours: { singular: 'hour', plural: 'hours' },
-            minutes: { singular: 'minute', plural: 'minutes' },
-            seconds: { singular: 'second', plural: 'seconds' }
+        year: 2015, // Target year (required)
+        month: 6, // Target month [1-12] (required)
+        day: 28, // Target day [1-31] (required)
+        hours: 0, // Target hour [0-23], default: 0
+        minutes: 0, // Target minute [0-59], default: 0
+        seconds: 0, // Target second [0-59], default: 0
+        words: { // Custom labels, with lambda for plurals
+            days: { root: 'day', lambda: (root, n) => n > 1 ? root + 's' : root },
+            hours: { root: 'hour', lambda: (root, n) => n > 1 ? root + 's' : root },
+            minutes: { root: 'minute', lambda: (root, n) => n > 1 ? root + 's' : root },
+            seconds: { root: 'second', lambda: (root, n) => n > 1 ? root + 's' : root }
         },
-        plural: true, //use plurals
-        inline: false, //set to true to display inline
-        inlineClass: 'simply-countdown-inline', //inline css span class
-        enableUtc: false, //Use UTC or not - default : false
-        onEnd: function() { return; }, //Callback on countdown end
-        refresh: 1000, //default refresh every 1s
-        sectionClass: 'simply-section', //section css class
-        amountClass: 'simply-amount', //amount css class
-        wordClass: 'simply-word', //word css class
-        zeroPad: false,
-        countUp: false
-    });
+        plural: true, // Use plurals for labels
+        inline: false, // Inline format: e.g., "24 days, 4 hours, 2 minutes"
+        inlineSeparator: ', ', // Separator for inline format, default: ", "
+        inlineClass: 'simply-countdown-inline', // CSS class for inline countdown
+        enableUtc: false, // Use UTC time if true
+        onEnd: function () {}, // Callback when countdown ends
+        refresh: 1000, // Refresh interval in ms, default: 1000
+        sectionClass: 'simply-section', // CSS class for each countdown section
+        amountClass: 'simply-amount', // CSS class for numeric values
+        wordClass: 'simply-word', // CSS class for unit labels
+        zeroPad: false, // Pad numbers with leading zero
+        removeZeroUnits: false, // Remove units with zero value
+        countUp: false // Count up after reaching zero
+    });    
+
+    // Also, you can init with already existing Javascript Object.
+    let myElement = document.querySelector('.my-countdown');
+    simplyCountdown(myElement, { /* options */ });
+
+    let multipleElements = document.querySelectorAll('.my-countdown');
+    simplyCountdown(multipleElements, { /* options */ });
                     
@@ -162,7 +190,7 @@

Customize

-
+

     .simply-countdown {
         /* The countdown */
diff --git a/docs/src/main.js b/docs/src/main.js
index bac1e08..9bef2a5 100644
--- a/docs/src/main.js
+++ b/docs/src/main.js
@@ -6,21 +6,20 @@ import hljs from 'highlight.js/lib/core'
 import javascript from 'highlight.js/lib/languages/javascript'
 import css from 'highlight.js/lib/languages/css'
 import elm from 'highlight.js/lib/languages/elm'
-import bash from 'highlight.js/lib/languages/bash'
-import 'highlight.js/styles/github-dark.css'
+import 'highlight.js/styles/atom-one-dark.css'
 
 // Import our countdown library and themes
 import '../../src/themes/default.css'
 import '../../src/themes/dark.css'
 import '../../src/themes/cyber.css'
 import '../../src/themes/losange.css'
+import '../../src/themes/circle.css'
 import { simplyCountdown } from '../../src/core/simplyCountdown.js'
 
 // Configure highlight.js
 hljs.registerLanguage('javascript', javascript)
-hljs.registerLanguage('elm', elm)
 hljs.registerLanguage('css', css)
-hljs.registerLanguage('bash', bash)
+hljs.registerLanguage('elm', elm)
 hljs.highlightAll()
 
 // Package manager switcher
@@ -60,19 +59,22 @@ document.querySelectorAll('.copy-button').forEach(button => {
 })
 
 // Configuration des exemples
-const nextYear = new Date().getFullYear() + 1
+const now = new Date();
+const nextYear = now.getFullYear() + 1
+const nextMonth = now.getMonth() + 1
 
 // Example 1: Default Theme
 simplyCountdown('.simply-countdown-one', {
-    year: nextYear,
-    month: 6,
+    year: now.getFullYear(),
+    month: nextMonth,
     day: 28,
+    zeroPad: true,
 })
 
 // Example 2: Dark Theme without Zero Units
 simplyCountdown('.simply-countdown-two', {
-    year: nextYear,
-    month: 6,
+    year: now.getFullYear(),
+    month: nextMonth,
     day: 28,
     zeroPad: false,
 })
@@ -91,6 +93,7 @@ simplyCountdown('.simply-countdown-countup', {
     month: 1,
     day: 1,
     countUp: true,
+    removeZeroUnits: true,
 })
 
 // Example 5: Losange Theme
@@ -98,4 +101,12 @@ simplyCountdown('#simply-countdown-losange', {
     year: nextYear,
     month: 6,
     day: 28,
+})
+
+// Example 6: Circle Theme
+simplyCountdown('.simply-countdown-circle-demo', {
+    year: now.getFullYear(),
+    month: nextMonth,
+    day: 28,
+    zeroPad: true,
 })
\ No newline at end of file
diff --git a/docs/src/style.css b/docs/src/style.css
index f57da3b..75bea6d 100644
--- a/docs/src/style.css
+++ b/docs/src/style.css
@@ -4,6 +4,18 @@
 
 @layer components {
   .btn {
-    @apply px-4 py-2 rounded inline-block bg-primary text-white cursor-pointer hover:bg-primary-dark disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50;
+    @apply inline-flex items-center gap-2 px-6 py-3 rounded-lg font-semibold transition-colors;
+  }
+
+  .btn-light {
+    @apply bg-white text-indigo-600 hover:bg-indigo-50 hover:bg-opacity-95;
+  }
+
+  .btn-indigo {
+    @apply bg-indigo-500 text-white hover:bg-indigo-400;
+  }
+
+  .sc-doc-block {
+    @apply bg-gray-800 p-6 rounded-xl shadow-sm;
   }
 }
diff --git a/src/themes/circle.css b/src/themes/circle.css
new file mode 100644
index 0000000..40e7163
--- /dev/null
+++ b/src/themes/circle.css
@@ -0,0 +1,81 @@
+.simply-countdown-circle {
+    --sc-circle-primary: #6366f1;
+    --sc-circle-secondary: #818cf8;
+    --sc-circle-bg: #1e1b4b;
+    --sc-circle-text: #fff;
+    
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+    gap: 2rem;
+    font-family: "Inter", sans-serif;
+}
+
+.simply-countdown-circle > .simply-section {
+    position: relative;
+    width: 100px;
+    height: 100px;
+    padding: 1rem;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-direction: column;
+    border-radius: 50%;
+    background: linear-gradient(
+        45deg,
+        var(--sc-circle-primary),
+        var(--sc-circle-secondary)
+    );
+    box-shadow: 0 0 25px -5px var(--sc-circle-primary);
+    animation: pulse-circle 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
+}
+
+.simply-countdown-circle > .simply-section::before {
+    content: "";
+    position: absolute;
+    inset: 6px;
+    border-radius: 50%;
+    background: var(--sc-circle-bg);
+    z-index: 0;
+}
+
+.simply-countdown-circle > .simply-section > div {
+    position: relative;
+    z-index: 1;
+    color: var(--sc-circle-text);
+    text-align: center;
+}
+
+.simply-countdown-circle .simply-amount {
+    display: block;
+    font-size: 1.75rem;
+    font-weight: 700;
+    line-height: 1;
+    margin-bottom: 0.25rem;
+    background: linear-gradient(
+        to right,
+        var(--sc-circle-primary),
+        var(--sc-circle-secondary)
+    );
+    -webkit-background-clip: text;
+    background-clip: text;
+    -webkit-text-fill-color: transparent;
+}
+
+.simply-countdown-circle .simply-word {
+    font-size: 0.75rem;
+    text-transform: uppercase;
+    letter-spacing: 0.05em;
+    opacity: 0.8;
+}
+
+@keyframes pulse-circle {
+    0%, 100% {
+        transform: scale(1);
+        opacity: 1;
+    }
+    50% {
+        transform: scale(0.98);
+        opacity: 0.9;
+    }
+}
diff --git a/src/themes/losange.css b/src/themes/losange.css
index e3ab6fe..6eceada 100644
--- a/src/themes/losange.css
+++ b/src/themes/losange.css
@@ -9,7 +9,7 @@
     display: flex;
     flex-wrap: wrap;
     justify-content: center;
-    gap: 4rem;
+    gap: 3rem;
     font-family: "Inter", sans-serif;
 }
 
diff --git a/tailwind.config.js b/tailwind.config.js
index b404c53..c5c49de 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -3,7 +3,7 @@ import { addDynamicIconSelectors } from '@iconify/tailwind'
 /** @type {import('tailwindcss').Config} */
 export default {
   content: [
-    "./docs/src/**/*.{html,js}",
+    "./docs/src/**/*.{html,js,css}",
   ],
   theme: {
     extend: {

From d290e88e9af39a09a9eb6e3f12e6242f56b78ce8 Mon Sep 17 00:00:00 2001
From: Vincent Loy 
Date: Tue, 24 Dec 2024 10:53:19 +0100
Subject: [PATCH 11/75] add glowing effect on the doc

---
 docs/src/assets/styles/main.css | 27 ++++++++++++++++++++++
 docs/src/index.html             |  2 +-
 docs/src/main.js                | 40 +++++++++++++++++++++++++++++++++
 3 files changed, 68 insertions(+), 1 deletion(-)

diff --git a/docs/src/assets/styles/main.css b/docs/src/assets/styles/main.css
index bdd3efe..d5097ec 100644
--- a/docs/src/assets/styles/main.css
+++ b/docs/src/assets/styles/main.css
@@ -28,4 +28,31 @@
 
 pre {
     @apply overflow-x-auto;
+}
+
+/* Glow effect */
+.sc-doc-block {
+    @apply relative;
+}
+
+.sc-doc-block-glow {
+    position: fixed;
+    width: 600px;
+    height: 600px;
+    background: radial-gradient(
+        circle at center,
+        rgba(99, 102, 241, 0.06),
+        transparent 40%
+    );
+    border-radius: 50%;
+    pointer-events: none;
+    z-index: 0;
+    opacity: 0;
+    transform: translate(-50%, -50%);
+    will-change: left, top, opacity;
+    transition: opacity 0.2s ease-out;
+}
+
+.sc-doc-block:hover .sc-doc-block-glow {
+    opacity: 1;
 }
\ No newline at end of file
diff --git a/docs/src/index.html b/docs/src/index.html
index 7a3d547..457a9d6 100644
--- a/docs/src/index.html
+++ b/docs/src/index.html
@@ -123,7 +123,7 @@ 

Circle Theme

-
+

Losange Theme

diff --git a/docs/src/main.js b/docs/src/main.js index 9bef2a5..a5885e3 100644 --- a/docs/src/main.js +++ b/docs/src/main.js @@ -58,6 +58,46 @@ document.querySelectorAll('.copy-button').forEach(button => { }) }) +// Glow effect +const glow = document.createElement('div'); +glow.className = 'sc-doc-block-glow'; +document.body.appendChild(glow); + +let currentBlock = null; +let rafId = null; +let mouseX = 0; +let mouseY = 0; + +function updateGlowPosition() { + if (currentBlock) { + glow.style.left = `${mouseX}px`; + glow.style.top = `${mouseY}px`; + glow.style.opacity = '1'; + rafId = requestAnimationFrame(updateGlowPosition); + } +} + +document.querySelectorAll('.sc-doc-block').forEach(block => { + block.addEventListener('mousemove', e => { + mouseX = e.clientX; + mouseY = e.clientY; + + if (!currentBlock) { + currentBlock = block; + rafId = requestAnimationFrame(updateGlowPosition); + } + }); + + block.addEventListener('mouseleave', () => { + currentBlock = null; + if (rafId) { + cancelAnimationFrame(rafId); + rafId = null; + } + glow.style.opacity = '0'; + }); +}); + // Configuration des exemples const now = new Date(); const nextYear = now.getFullYear() + 1 From 5ba0d03f26a148877f68228f32a14514829d218f Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Tue, 24 Dec 2024 12:17:13 +0100 Subject: [PATCH 12/75] Improve build process to generate map files and build themes --- bun.lockb | Bin 88158 -> 88537 bytes dist/simplyCountdown.es.js | 1 + dist/simplyCountdown.es.js.map | 1 + dist/simplyCountdown.iife.js | 1 + dist/simplyCountdown.iife.js.map | 1 + dist/simplyCountdown.umd.js | 1 + dist/simplyCountdown.umd.js.map | 1 + dist/themes/circle.css | 81 +++++++++++ dist/themes/circle.min.css | 1 + dist/themes/cyber.css | 173 ++++++++++++++++++++++ dist/themes/cyber.min.css | 1 + dist/themes/dark.css | 87 +++++++++++ dist/themes/dark.min.css | 1 + dist/themes/default.css | 87 +++++++++++ dist/themes/default.min.css | 1 + dist/themes/losange.css | 83 +++++++++++ dist/themes/losange.min.css | 1 + docs/dist/assets/main.min.css | 11 +- docs/dist/assets/main.min.js | 9 +- docs/dist/assets/main.min.js.map | 1 + docs/dist/index.html | 242 ++++++++++++++++++++----------- docs/src/index.html | 40 +++++ docs/src/main.js | 2 + package.json | 13 +- scripts/build-themes.js | 51 +++++++ vite.config.js | 2 + 26 files changed, 787 insertions(+), 106 deletions(-) create mode 100644 dist/simplyCountdown.es.js.map create mode 100644 dist/simplyCountdown.iife.js.map create mode 100644 dist/simplyCountdown.umd.js.map create mode 100644 dist/themes/circle.css create mode 100644 dist/themes/circle.min.css create mode 100644 dist/themes/cyber.css create mode 100644 dist/themes/cyber.min.css create mode 100644 dist/themes/dark.css create mode 100644 dist/themes/dark.min.css create mode 100644 dist/themes/default.css create mode 100644 dist/themes/default.min.css create mode 100644 dist/themes/losange.css create mode 100644 dist/themes/losange.min.css create mode 100644 docs/dist/assets/main.min.js.map create mode 100644 scripts/build-themes.js diff --git a/bun.lockb b/bun.lockb index 0de5d77a20eaf1171918b12dbe5769bf50a4bf95..a7d7ce4b69c4e126f4d3327cf96c7f580d381ebb 100755 GIT binary patch delta 13228 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 delta 13097 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\n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n\n/**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n\nlet extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n};\n\nlet isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n};\n\n/**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\nlet createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n};\n\n/**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\nlet createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n countdown.appendChild(spanTag);\n\n return {\n days: spanTag,\n hours: spanTag,\n minutes: spanTag,\n seconds: spanTag\n };\n};\n\n/**\n * simplyCountdown, create and display the countdown.\n * @param elt\n * @param args (parameters)\n */\nexport const simplyCountdown = function (elt, args) {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n};\n\n// Export for CommonJS and AMD\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = { simplyCountdown };\n} else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return { simplyCountdown };\n });\n}\n"],"names":["extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.iife.js b/dist/simplyCountdown.iife.js index ff92811..0505b10 100644 --- a/dist/simplyCountdown.iife.js +++ b/dist/simplyCountdown.iife.js @@ -8,3 +8,4 @@ var simplyCountdown=function(U){"use strict";/*! * - Justin Beasley * - Nathan Smith */let E=function(s){let n,l=s||{};for(let e=1;es!==null&&Symbol.iterator in Object(s),C=(s,n,l)=>{let e=document.createElement("div"),d=document.createElement("span"),a=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(a),e.appendChild(t),e.classList.add(n.sectionClass),e.classList.add(l),d.classList.add(n.amountClass),a.classList.add(n.wordClass),s.appendChild(e),{full:e,amount:d,word:a}},I=(s,n)=>{let l;return s.inline?(l=document.createElement("span"),l.classList.add(s.inlineClass),n.appendChild(l),{days:l,hours:l,minutes:l,seconds:l}):{days:C(n,s,"simply-days-section"),hours:C(n,s,"simply-hours-section"),minutes:C(n,s,"simply-minutes-section"),seconds:C(n,s,"simply-seconds-section")}};const T=function(s,n){const l=Object.getPrototypeOf(s);let e=E({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(o,c)=>c>1?o+"s":o,root:"day"},hours:{lambda:(o,c)=>c>1?o+"s":o,root:"hour"},minutes:{lambda:(o,c)=>c>1?o+"s":o,root:"minute"},seconds:{lambda:(o,c)=>c>1?o+"s":o,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},n),d,a,t,y,i,u,f,p,h;l===String.prototype?h=document.querySelectorAll(s):h=s,e.enableUtc?a=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):a=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let P=o=>{let c=o,r=I(e,c),b;b=function(){let S,v,D,$,x=()=>{i=parseInt(y/86400,10),y%=86400,u=parseInt(y/3600,10),y%=3600,f=parseInt(y/60,10),p=parseInt(y%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,y=Math.floor((a-t.getTime())/1e3),y>0?x():e.countUp?(y=(t.getTime()-a)/1e3,x()):(i=0,u=0,f=0,p=0,window.clearInterval(d),e.onEnd());let g=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,w=e.words;if(S=g(w.days,i),v=g(w.hours,u),D=g(w.minutes,f),$=g(w.seconds,p),e.inline){let m="";e.removeZeroUnits&&i===0||(m+=`${i} ${S}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&i===0&&u===0&&f===0||(m+=`${f} ${D}${e.inlineSeparator}`),m+=`${p} ${$}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&i===0?r.days.full.style.display="none":(r.days.amount.textContent=(e.zeroPad&&i.toString().length<2?"0":"")+i,r.days.word.textContent=S,r.days.full.style.display=""),e.removeZeroUnits&&i===0&&u===0?r.hours.full.style.display="none":(r.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,r.hours.word.textContent=v,r.hours.full.style.display=""),e.removeZeroUnits&&i===0&&u===0&&f===0?r.minutes.full.style.display="none":(r.minutes.amount.textContent=(e.zeroPad&&f.toString().length<2?"0":"")+f,r.minutes.word.textContent=D,r.minutes.full.style.display=""),r.seconds.amount.textContent=(e.zeroPad&&p.toString().length<2?"0":"")+p,r.seconds.word.textContent=$,r.seconds.full.style.display=""},b(),d=window.setInterval(b,e.refresh)};O(h)?Array.prototype.forEach.call(h,o=>{P(o)}):P(h)};return typeof module<"u"&&module.exports?module.exports={simplyCountdown:T}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:T}}),U.simplyCountdown=T,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"}),U}({}); +//# sourceMappingURL=simplyCountdown.iife.js.map diff --git a/dist/simplyCountdown.iife.js.map b/dist/simplyCountdown.iife.js.map new file mode 100644 index 0000000..a5db12d --- /dev/null +++ b/dist/simplyCountdown.iife.js.map @@ -0,0 +1 @@ +{"version":3,"file":"simplyCountdown.iife.js","sources":["../src/core/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n\n/**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n\nlet extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n};\n\nlet isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n};\n\n/**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\nlet createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n};\n\n/**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\nlet createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n countdown.appendChild(spanTag);\n\n return {\n days: spanTag,\n hours: spanTag,\n minutes: spanTag,\n seconds: spanTag\n };\n};\n\n/**\n * simplyCountdown, create and display the countdown.\n * @param elt\n * @param args (parameters)\n */\nexport const simplyCountdown = function (elt, args) {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n};\n\n// Export for CommonJS and AMD\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = { simplyCountdown };\n} else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return { simplyCountdown };\n });\n}\n"],"names":["extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/dist/simplyCountdown.umd.js b/dist/simplyCountdown.umd.js index ed95c24..d43856c 100644 --- a/dist/simplyCountdown.umd.js +++ b/dist/simplyCountdown.umd.js @@ -8,3 +8,4 @@ * - Justin Beasley * - Nathan Smith */let h=function(s){let n,o=s||{};for(let e=1;es!==null&&Symbol.iterator in Object(s),w=(s,n,o)=>{let e=document.createElement("div"),d=document.createElement("span"),r=document.createElement("span"),t=document.createElement("div");return t.appendChild(d),t.appendChild(r),e.appendChild(t),e.classList.add(n.sectionClass),e.classList.add(o),d.classList.add(n.amountClass),r.classList.add(n.wordClass),s.appendChild(e),{full:e,amount:d,word:r}},I=(s,n)=>{let o;return s.inline?(o=document.createElement("span"),o.classList.add(s.inlineClass),n.appendChild(o),{days:o,hours:o,minutes:o,seconds:o}):{days:w(n,s,"simply-days-section"),hours:w(n,s,"simply-hours-section"),minutes:w(n,s,"simply-minutes-section"),seconds:w(n,s,"simply-seconds-section")}};const b=function(s,n){const o=Object.getPrototypeOf(s);let e=h({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(l,c)=>c>1?l+"s":l,root:"day"},hours:{lambda:(l,c)=>c>1?l+"s":l,root:"hour"},minutes:{lambda:(l,c)=>c>1?l+"s":l,root:"minute"},seconds:{lambda:(l,c)=>c>1?l+"s":l,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},n),d,r,t,f,a,u,y,C,g;o===String.prototype?g=document.querySelectorAll(s):g=s,e.enableUtc?r=new Date(Date.UTC(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds)):r=new Date(e.year,e.month-1,e.day,e.hours,e.minutes,e.seconds);let E=l=>{let c=l,i=I(e,c),S;S=function(){let x,v,D,$,P=()=>{a=parseInt(f/86400,10),f%=86400,u=parseInt(f/3600,10),f%=3600,y=parseInt(f/60,10),C=parseInt(f%60,10)};e.enableUtc?(t=new Date,t=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()))):t=new Date,f=Math.floor((r-t.getTime())/1e3),f>0?P():e.countUp?(f=(t.getTime()-r)/1e3,P()):(a=0,u=0,y=0,C=0,window.clearInterval(d),e.onEnd());let U=(m,L)=>m.hasOwnProperty("lambda")?m.lambda(m.root,L):m.root,T=e.words;if(x=U(T.days,a),v=U(T.hours,u),D=U(T.minutes,y),$=U(T.seconds,C),e.inline){let m="";e.removeZeroUnits&&a===0||(m+=`${a} ${x}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0||(m+=`${u} ${v}${e.inlineSeparator}`),e.removeZeroUnits&&a===0&&u===0&&y===0||(m+=`${y} ${D}${e.inlineSeparator}`),m+=`${C} ${$}`,c.innerHTML=m.replace(/, $/,"")}else e.removeZeroUnits&&a===0?i.days.full.style.display="none":(i.days.amount.textContent=(e.zeroPad&&a.toString().length<2?"0":"")+a,i.days.word.textContent=x,i.days.full.style.display=""),e.removeZeroUnits&&a===0&&u===0?i.hours.full.style.display="none":(i.hours.amount.textContent=(e.zeroPad&&u.toString().length<2?"0":"")+u,i.hours.word.textContent=v,i.hours.full.style.display=""),e.removeZeroUnits&&a===0&&u===0&&y===0?i.minutes.full.style.display="none":(i.minutes.amount.textContent=(e.zeroPad&&y.toString().length<2?"0":"")+y,i.minutes.word.textContent=D,i.minutes.full.style.display=""),i.seconds.amount.textContent=(e.zeroPad&&C.toString().length<2?"0":"")+C,i.seconds.word.textContent=$,i.seconds.full.style.display=""},S(),d=window.setInterval(S,e.refresh)};O(g)?Array.prototype.forEach.call(g,l=>{E(l)}):E(g)};typeof module<"u"&&module.exports?module.exports={simplyCountdown:b}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:b}}),p.simplyCountdown=b,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}); +//# sourceMappingURL=simplyCountdown.umd.js.map diff --git a/dist/simplyCountdown.umd.js.map b/dist/simplyCountdown.umd.js.map new file mode 100644 index 0000000..dfd7e76 --- /dev/null +++ b/dist/simplyCountdown.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/core/simplyCountdown.js"],"sourcesContent":["/* global Symbol */\n\n/*!\n* Project : simply-countdown\n* Date : 06/12/2024\n* License : MIT\n* Version : 2.0.1\n* Author : Vincent Loy \n* Contributors :\n* - Justin Beasley \n* - Nathan Smith \n*/\n\n/**\n * Function that merge user parameters with defaults one.\n * @param output\n * @returns {*|{}}\n */\n\nlet extend = function (output) {\n let obj;\n let out = output || {};\n\n for (let i = 1; i < arguments.length; i += 1) {\n obj = arguments[i];\n const keys = Object.keys(obj);\n\n if (keys.length) {\n for (let i2 = 0; i2 < keys.length; i2 += 1) {\n let key = keys[i2];\n\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object') {\n extend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n }\n\n return out;\n};\n\nlet isIterableElement = (val) => {\n return val !== null && Symbol.iterator in Object(val);\n};\n\n/**\n * Function that create a countdown section\n * @param countdown\n * @param parameters\n * @param typeClass\n * @returns {{full: (*|Element), amount: (*|Element), word: (*|Element)}}\n */\nlet createCountdownElt = (countdown, parameters, typeClass) => {\n let sectionTag = document.createElement('div');\n let amountTag = document.createElement('span');\n let wordTag = document.createElement('span');\n let innerSectionTag = document.createElement('div');\n\n innerSectionTag.appendChild(amountTag);\n innerSectionTag.appendChild(wordTag);\n sectionTag.appendChild(innerSectionTag);\n\n sectionTag.classList.add(parameters.sectionClass);\n sectionTag.classList.add(typeClass);\n amountTag.classList.add(parameters.amountClass);\n wordTag.classList.add(parameters.wordClass);\n\n countdown.appendChild(sectionTag);\n\n return {\n full: sectionTag,\n amount: amountTag,\n word: wordTag\n };\n};\n\n/**\n * Function that create full countdown DOM elements calling createCountdownElt\n * @param parameters\n * @param countdown\n * @returns {{days:(*|Element), hours:(*|Element), minutes:(*|Element), seconds:(*|Element)}}\n */\nlet createElements = (parameters, countdown) => {\n let spanTag;\n\n if (!parameters.inline) {\n return {\n days: createCountdownElt(countdown, parameters, 'simply-days-section'),\n hours: createCountdownElt(countdown, parameters, 'simply-hours-section'),\n minutes: createCountdownElt(countdown, parameters, 'simply-minutes-section'),\n seconds: createCountdownElt(countdown, parameters, 'simply-seconds-section')\n };\n }\n\n spanTag = document.createElement('span');\n spanTag.classList.add(parameters.inlineClass);\n countdown.appendChild(spanTag);\n\n return {\n days: spanTag,\n hours: spanTag,\n minutes: spanTag,\n seconds: spanTag\n };\n};\n\n/**\n * simplyCountdown, create and display the countdown.\n * @param elt\n * @param args (parameters)\n */\nexport const simplyCountdown = function (elt, args) {\n const eltProto = Object.getPrototypeOf(elt);\n let parameters = extend({\n year: 2015,\n month: 6,\n day: 28,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'day'},\n hours: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'hour'},\n minutes: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'minute'},\n seconds: {lambda: (root, n) => {return n > 1 ? root + \"s\" : root }, root: 'second'}\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {\n },\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n removeZeroUnits: false,\n countUp: false\n }, args);\n let interval;\n let targetDate;\n let now;\n let secondsLeft;\n let days;\n let hours;\n let minutes;\n let seconds;\n let cd;\n\n // console.log(typeof elt);\n //\n if (eltProto === String.prototype) {\n cd = document.querySelectorAll(elt);\n } else {\n cd = elt;\n }\n\n if (parameters.enableUtc) {\n // Use UTC for target date\n targetDate = new Date(Date.UTC(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n ));\n } else {\n // Use local time for target date\n targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n }\n\n let runCountdown = (theCountdown) => {\n let countdown = theCountdown;\n let fullCountDown = createElements(parameters, countdown);\n let refresh;\n\n refresh = function () {\n let dayWord;\n let hourWord;\n let minuteWord;\n let secondWord;\n\n let updateDisplayDate = () => {\n days = parseInt(secondsLeft / 86400, 10);\n secondsLeft %= 86400;\n\n hours = parseInt(secondsLeft / 3600, 10);\n secondsLeft %= 3600;\n\n minutes = parseInt(secondsLeft / 60, 10);\n seconds = parseInt(secondsLeft % 60, 10);\n };\n\n if (parameters.enableUtc) {\n // Calculate \"now\" in UTC\n now = new Date();\n now = new Date(Date.UTC(\n now.getUTCFullYear(),\n now.getUTCMonth(),\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds()\n ));\n } else {\n // Calculate \"now\" in local time\n now = new Date();\n }\n\n secondsLeft = Math.floor((targetDate - now.getTime()) / 1000);\n\n if (secondsLeft > 0) {\n updateDisplayDate();\n } else if (parameters.countUp) {\n secondsLeft = (now.getTime() - targetDate) / 1000;\n updateDisplayDate();\n } else {\n days = 0;\n hours = 0;\n minutes = 0;\n seconds = 0;\n window.clearInterval(interval);\n parameters.onEnd();\n }\n\n let getWord = (obj, n) => {\n return obj.hasOwnProperty('lambda')\n ? obj.lambda(obj.root, n)\n : obj.root\n };\n let words = parameters.words;\n dayWord = getWord(words.days, days);\n hourWord = getWord(words.hours, hours);\n minuteWord = getWord(words.minutes, minutes);\n secondWord = getWord(words.seconds, seconds);\n\n /* display an inline countdown into a span tag */\n if (parameters.inline) {\n let displayStr = '';\n\n if (!(parameters.removeZeroUnits && days === 0)) {\n displayStr += `${days} ${dayWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n displayStr += `${hours} ${hourWord}${parameters.inlineSeparator}`;\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n displayStr += `${minutes} ${minuteWord}${parameters.inlineSeparator}`;\n }\n\n // Seconds should always be displayed\n displayStr += `${seconds} ${secondWord}`;\n\n countdown.innerHTML = displayStr.replace(/, $/, ''); // Remove trailing comma if any\n } else {\n if (!(parameters.removeZeroUnits && days === 0)) {\n fullCountDown.days.amount.textContent = (parameters.zeroPad && days.toString().length < 2 ? '0' : '') + days;\n fullCountDown.days.word.textContent = dayWord;\n fullCountDown.days.full.style.display = '';\n } else {\n fullCountDown.days.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0)) {\n fullCountDown.hours.amount.textContent = (parameters.zeroPad && hours.toString().length < 2 ? '0' : '') + hours;\n fullCountDown.hours.word.textContent = hourWord;\n fullCountDown.hours.full.style.display = '';\n } else {\n fullCountDown.hours.full.style.display = 'none';\n }\n\n if (!(parameters.removeZeroUnits && days === 0 && hours === 0 && minutes === 0)) {\n fullCountDown.minutes.amount.textContent = (parameters.zeroPad && minutes.toString().length < 2 ? '0' : '') + minutes;\n fullCountDown.minutes.word.textContent = minuteWord;\n fullCountDown.minutes.full.style.display = '';\n } else {\n fullCountDown.minutes.full.style.display = 'none';\n }\n\n // Seconds should always be displayed\n fullCountDown.seconds.amount.textContent = (parameters.zeroPad && seconds.toString().length < 2 ? '0' : '') + seconds;\n fullCountDown.seconds.word.textContent = secondWord;\n fullCountDown.seconds.full.style.display = '';\n }\n };\n\n // Refresh immediately to prevent a Flash of Unstyled Content\n refresh();\n interval = window.setInterval(refresh, parameters.refresh);\n };\n\n if (!isIterableElement(cd)) {\n runCountdown(cd);\n } else {\n Array.prototype.forEach.call(cd, (cdElt) => {\n runCountdown(cdElt);\n });\n }\n};\n\n// Export for CommonJS and AMD\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = { simplyCountdown };\n} else if (typeof define === 'function' && define.amd) {\n define([], function() {\n return { simplyCountdown };\n });\n}\n"],"names":["extend","output","obj","out","i","keys","i2","key","isIterableElement","val","createCountdownElt","countdown","parameters","typeClass","sectionTag","amountTag","wordTag","innerSectionTag","createElements","spanTag","simplyCountdown","elt","args","eltProto","root","n","interval","targetDate","now","secondsLeft","days","hours","minutes","seconds","cd","runCountdown","theCountdown","fullCountDown","refresh","dayWord","hourWord","minuteWord","secondWord","updateDisplayDate","getWord","words","displayStr","cdElt"],"mappings":"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"} \ No newline at end of file diff --git a/dist/themes/circle.css b/dist/themes/circle.css new file mode 100644 index 0000000..40e7163 --- /dev/null +++ b/dist/themes/circle.css @@ -0,0 +1,81 @@ +.simply-countdown-circle { + --sc-circle-primary: #6366f1; + --sc-circle-secondary: #818cf8; + --sc-circle-bg: #1e1b4b; + --sc-circle-text: #fff; + + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 2rem; + font-family: "Inter", sans-serif; +} + +.simply-countdown-circle > .simply-section { + position: relative; + width: 100px; + height: 100px; + padding: 1rem; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + border-radius: 50%; + background: linear-gradient( + 45deg, + var(--sc-circle-primary), + var(--sc-circle-secondary) + ); + box-shadow: 0 0 25px -5px var(--sc-circle-primary); + animation: pulse-circle 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} + +.simply-countdown-circle > .simply-section::before { + content: ""; + position: absolute; + inset: 6px; + border-radius: 50%; + background: var(--sc-circle-bg); + z-index: 0; +} + +.simply-countdown-circle > .simply-section > div { + position: relative; + z-index: 1; + color: var(--sc-circle-text); + text-align: center; +} + +.simply-countdown-circle .simply-amount { + display: block; + font-size: 1.75rem; + font-weight: 700; + line-height: 1; + margin-bottom: 0.25rem; + background: linear-gradient( + to right, + var(--sc-circle-primary), + var(--sc-circle-secondary) + ); + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; +} + +.simply-countdown-circle .simply-word { + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.05em; + opacity: 0.8; +} + +@keyframes pulse-circle { + 0%, 100% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(0.98); + opacity: 0.9; + } +} diff --git a/dist/themes/circle.min.css b/dist/themes/circle.min.css new file mode 100644 index 0000000..5e01f36 --- /dev/null +++ b/dist/themes/circle.min.css @@ -0,0 +1 @@ +.simply-countdown-circle{--sc-circle-primary:#6366f1;--sc-circle-secondary:#818cf8;--sc-circle-bg:#1e1b4b;--sc-circle-text:#fff;display:flex;flex-wrap:wrap;justify-content:center;gap:2rem;font-family:Inter,sans-serif}.simply-countdown-circle>.simply-section{position:relative;width:100px;height:100px;padding:1rem;display:flex;align-items:center;justify-content:center;flex-direction:column;border-radius:50%;background:linear-gradient(45deg,var(--sc-circle-primary),var(--sc-circle-secondary));box-shadow:0 0 25px -5px var(--sc-circle-primary);animation:2s cubic-bezier(.4,0,.6,1) infinite pulse-circle}.simply-countdown-circle>.simply-section::before{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--sc-circle-bg);z-index:0}.simply-countdown-circle>.simply-section>div{position:relative;z-index:1;color:var(--sc-circle-text);text-align:center}.simply-countdown-circle .simply-amount{display:block;font-size:1.75rem;font-weight:700;line-height:1;margin-bottom:.25rem;background:linear-gradient(to right,var(--sc-circle-primary),var(--sc-circle-secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.simply-countdown-circle .simply-word{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;opacity:.8}@keyframes pulse-circle{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.98);opacity:.9}} \ No newline at end of file diff --git a/dist/themes/cyber.css b/dist/themes/cyber.css new file mode 100644 index 0000000..71cf2fb --- /dev/null +++ b/dist/themes/cyber.css @@ -0,0 +1,173 @@ +/** +* Project : simply-countdown +* File : simplyCountdown.theme.cyberpunk +* Author : Vincent Loy +* Theme : Modern Cyberpunk +*/ + +.simply-countdown-cyber { + overflow: visible; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.75rem; + font-family: "Inter", system-ui, -apple-system, sans-serif; + perspective: 1000px; +} + +.simply-countdown-cyber > .simply-section { + width: 70px; + height: 70px; + padding: 1.5rem; + position: relative; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(135deg, + rgba(23, 25, 35, 0.9), + rgba(15, 17, 25, 0.95)); + border-radius: 0.5rem; + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + backdrop-filter: blur(12px); + transform-style: preserve-3d; +} + +.simply-countdown-cyber > .simply-section::before { + content: ''; + position: absolute; + inset: -1px; + background: linear-gradient(135deg, + rgba(120, 240, 255, 0.2), + rgba(255, 90, 220, 0.2)); + border-radius: 0.5rem; + z-index: -1; + opacity: 0; + transition: opacity 0.3s ease; +} + +.simply-countdown-cyber > .simply-section::after { + content: ''; + position: absolute; + inset: -2px; + background: linear-gradient(135deg, + #78f0ff, + #ff5adc); + border-radius: 0.5rem; + z-index: -2; + opacity: 0.15; + filter: blur(4px); + animation: pulse 4s ease-in-out infinite; +} + +.simply-countdown-cyber > .simply-section .glass-overlay { + position: absolute; + inset: 0; + background: linear-gradient(135deg, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.05)); + border-radius: 0.5rem; +} + +.simply-countdown-cyber > .simply-section:hover { + transform: translateY(-4px) translateZ(10px) rotateX(5deg); + box-shadow: + 0 20px 40px -10px rgba(0, 0, 0, 0.5), + 0 0 20px rgba(120, 240, 255, 0.2), + 0 0 0 1px rgba(120, 240, 255, 0.1); +} + +.simply-countdown-cyber > .simply-section:hover::before { + opacity: 1; +} + +.simply-countdown-cyber > .simply-section > div { + display: flex; + flex-direction: column; + gap: 0.4rem; + align-items: center; + transform-style: preserve-3d; +} + +.simply-countdown-cyber > .simply-section .simply-amount { + font-size: 1.75rem; + font-weight: 700; + background: linear-gradient(to bottom right, + #78f0ff, + #ff5adc); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-shadow: + 0 0 20px rgba(120, 240, 255, 0.3), + 0 0 40px rgba(120, 240, 255, 0.2); + letter-spacing: -0.02em; + transform: translateZ(10px); +} + +.simply-countdown-cyber > .simply-section .simply-word { + font-size: 0.6rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.2em; + color: rgba(255, 255, 255, 0.7); + transform: translateZ(5px); + position: relative; +} + +.simply-countdown-cyber > .simply-section .simply-word::after { + content: ''; + position: absolute; + left: -10%; + bottom: -4px; + width: 120%; + height: 1px; + background: linear-gradient(to right, + rgba(120, 240, 255, 0), + rgba(120, 240, 255, 0.5), + rgba(255, 90, 220, 0.5), + rgba(255, 90, 220, 0)); +} + +@media (min-width: 640px) { + .simply-countdown-cyber > .simply-section { + width: 80px; + height: 80px; + padding: 1.75rem; + } + + .simply-countdown-cyber > .simply-section .simply-amount { + font-size: 2rem; + } + + .simply-countdown-cyber > .simply-section .simply-word { + font-size: 0.75rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown-cyber > .simply-section { + width: 100px; + height: 100px; + padding: 2rem; + } + + .simply-countdown-cyber > .simply-section .simply-amount { + font-size: 2.5rem; + } + + .simply-countdown-cyber > .simply-section .simply-word { + font-size: 0.8rem; + } +} + +/* Add subtle animation for extra futuristic feel */ +@keyframes pulse { + 0%, 100% { + opacity: 0.15; + transform: scale(1); + } + 50% { + opacity: 0.25; + transform: scale(1.05); + } +} diff --git a/dist/themes/cyber.min.css b/dist/themes/cyber.min.css new file mode 100644 index 0000000..be59b84 --- /dev/null +++ b/dist/themes/cyber.min.css @@ -0,0 +1 @@ +.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(23,25,35,.9),rgba(15,17,25,.95));border-radius:.5rem;transition:.4s cubic-bezier(.175, .885, .32, 1.275);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section::before{content:'';position:absolute;inset:-1px;background:linear-gradient(135deg,rgba(120,240,255,.2),rgba(255,90,220,.2));border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s}.simply-countdown-cyber>.simply-section::after{content:'';position:absolute;inset:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:4s ease-in-out infinite pulse}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.1),rgba(255,255,255,.05));border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px rgba(0,0,0,.5),0 0 20px rgba(120,240,255,.2),0 0 0 1px rgba(120,240,255,.1)}.simply-countdown-cyber>.simply-section:hover::before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:rgba(255,255,255,.7);transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word::after{content:'';position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,rgba(120,240,255,0),rgba(120,240,255,.5),rgba(255,90,220,.5),rgba(255,90,220,0))}@media (min-width:640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width:1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,100%{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}} \ No newline at end of file diff --git a/dist/themes/dark.css b/dist/themes/dark.css new file mode 100644 index 0000000..0d4dcb6 --- /dev/null +++ b/dist/themes/dark.css @@ -0,0 +1,87 @@ +/** +* Project : simply-countdown +* File : simplyCountdown.theme.dark +* Author : Vincent Loy +* Theme : Dark Modern +*/ + +.simply-countdown-dark { + overflow: hidden; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.25rem; + font-family: "Inter", system-ui, -apple-system, sans-serif; +} + +.simply-countdown-dark > .simply-section { + width: 65px; + height: 65px; + padding: 1.5rem; + display: flex; + align-items: center; + justify-content: center; + background: rgba(15, 23, 42, 0.75); + border: 1px solid rgba(51, 65, 85, 0.6); + border-radius: 1rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.2), + 0 2px 4px -1px rgba(0, 0, 0, 0.1), + 0 0 0 1px rgba(255, 255, 255, 0.05); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + backdrop-filter: blur(10px); +} + +.simply-countdown-dark > .simply-section > div { + display: flex; + flex-direction: column; + line-height: 1; + align-items: center; +} + +.simply-countdown-dark > .simply-section .simply-amount { + font-size: 1.5rem; + font-weight: 700; + color: #f1f5f9; + line-height: 1.2; + letter-spacing: -0.025em; +} + +.simply-countdown-dark > .simply-section .simply-word { + font-size: 0.6rem; + font-weight: 500; + color: #94a3b8; + text-transform: uppercase; + letter-spacing: 0.1em; +} + +@media (min-width: 640px) { + .simply-countdown-dark > .simply-section { + width: 75px; + height: 75px; + padding: 1.75rem; + } + + .simply-countdown-dark > .simply-section .simply-amount { + font-size: 1.75rem; + } + + .simply-countdown-dark > .simply-section .simply-word { + font-size: 0.75rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown-dark > .simply-section { + width: 90px; + height: 90px; + padding: 2rem; + } + + .simply-countdown-dark > .simply-section .simply-amount { + font-size: 2rem; + } + + .simply-countdown-dark > .simply-section .simply-word { + font-size: 0.8rem; + } +} diff --git a/dist/themes/dark.min.css b/dist/themes/dark.min.css new file mode 100644 index 0000000..1495b0c --- /dev/null +++ b/dist/themes/dark.min.css @@ -0,0 +1 @@ +.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.75);border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.2),0 2px 4px -1px rgba(0,0,0,.1),0 0 0 1px rgba(255,255,255,.05);transition:.3s cubic-bezier(.4, 0, .2, 1);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width:640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width:1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}} \ No newline at end of file diff --git a/dist/themes/default.css b/dist/themes/default.css new file mode 100644 index 0000000..ffd9929 --- /dev/null +++ b/dist/themes/default.css @@ -0,0 +1,87 @@ +/** +* Project : simply-countdown +* File : simplyCountdown.theme.default +* Author : Vincent Loy +* Theme : Light Modern +*/ + +.simply-countdown { + overflow: hidden; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.25rem; + font-family: "Inter", system-ui, -apple-system, sans-serif; +} + +.simply-countdown > .simply-section { + width: 65px; + height: 65px; + padding: 1.5rem; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255, 255, 255, 0.9); + border: 1px solid rgba(226, 232, 240, 0.8); + border-radius: 1rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), + 0 2px 4px -1px rgba(0, 0, 0, 0.03), + 0 0 0 1px rgba(0, 0, 0, 0.02); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + backdrop-filter: blur(10px); +} + +.simply-countdown > .simply-section > div { + display: flex; + flex-direction: column; + line-height: 1; + align-items: center; +} + +.simply-countdown > .simply-section .simply-amount { + font-size: 1.5rem; + font-weight: 700; + color: #1e293b; + line-height: 1.2; + letter-spacing: -0.025em; +} + +.simply-countdown > .simply-section .simply-word { + font-size: 0.6rem; + font-weight: 500; + color: #64748b; + text-transform: uppercase; + letter-spacing: 0.1em; +} + +@media (min-width: 640px) { + .simply-countdown > .simply-section { + width: 75px; + height: 75px; + padding: 1.75rem; + } + + .simply-countdown > .simply-section .simply-amount { + font-size: 1.75rem; + } + + .simply-countdown > .simply-section .simply-word { + font-size: 0.75rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown > .simply-section { + width: 90px; + height: 90px; + padding: 2rem; + } + + .simply-countdown > .simply-section .simply-amount { + font-size: 2rem; + } + + .simply-countdown > .simply-section .simply-word { + font-size: 0.8rem; + } +} diff --git a/dist/themes/default.min.css b/dist/themes/default.min.css new file mode 100644 index 0000000..a1d7f18 --- /dev/null +++ b/dist/themes/default.min.css @@ -0,0 +1 @@ +.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.9);border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.05),0 2px 4px -1px rgba(0,0,0,.03),0 0 0 1px rgba(0,0,0,.02);transition:.3s cubic-bezier(.4, 0, .2, 1);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width:640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width:1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}} \ No newline at end of file diff --git a/dist/themes/losange.css b/dist/themes/losange.css new file mode 100644 index 0000000..6eceada --- /dev/null +++ b/dist/themes/losange.css @@ -0,0 +1,83 @@ +/** +* Project : simply-countdown +* File : simplyCountdown.theme.losange +* Author : Vincent Loy +*/ + +.simply-countdown-losange { + overflow: visible; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 3rem; + font-family: "Inter", sans-serif; +} + +.simply-countdown-losange > .simply-section { + width: 70px; + height: 70px; + display: flex; + justify-content: center; + align-items: center; + transform: rotate(-45deg); + background: linear-gradient(135deg, #4f46e5, #7c3aed); + border-radius: 0.5rem; + transition: all 0.2s ease-in-out; +} + +.simply-countdown-losange > .simply-section > div { + transform: rotate(45deg); + display: flex; + flex-direction: column; + line-height: 1.2; +} + +.simply-countdown-losange > .simply-section .simply-amount, +.simply-countdown-losange > .simply-section .simply-word { + display: block; + text-align: center; +} + +.simply-countdown-losange > .simply-section .simply-amount { + font-size: 1.25rem; + font-weight: 700; + color: #fff; +} + +.simply-countdown-losange > .simply-section .simply-word { + font-size: 0.65rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.9); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +@media (min-width: 640px) { + .simply-countdown-losange > .simply-section { + width: 80px; + height: 80px; + } + + .simply-countdown-losange > .simply-section .simply-amount { + font-size: 1.5rem; + } + + .simply-countdown-losange > .simply-section .simply-word { + font-size: 0.7rem; + } +} + +@media (min-width: 1024px) { + .simply-countdown-losange > .simply-section { + width: 90px; + height: 90px; + } + + .simply-countdown-losange > .simply-section .simply-amount { + font-size: 1.75rem; + } + + .simply-countdown-losange > .simply-section .simply-word { + font-size: 0.75rem; + } +} diff --git a/dist/themes/losange.min.css b/dist/themes/losange.min.css new file mode 100644 index 0000000..4ddbfdd --- /dev/null +++ b/dist/themes/losange.min.css @@ -0,0 +1 @@ +.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:3rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:.2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;line-height:1.2}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:rgba(255,255,255,.9);text-transform:uppercase;letter-spacing:.05em}@media (min-width:640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width:1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}} \ No newline at end of file diff --git a/docs/dist/assets/main.min.css b/docs/dist/assets/main.min.css index 51404c8..a32d563 100644 --- a/docs/dist/assets/main.min.css +++ b/docs/dist/assets/main.min.css @@ -1,10 +1 @@ -.package-manager-btn{display:flex;align-items:center;gap:.375rem;border-radius:.5rem;background-color:#33415580;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.package-manager-btn:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.package-manager-btn.active{background-color:#6366f133;--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.package-manager-btn.active:hover{background-color:#6366f14d;--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.package-manager-content{display:none}.package-manager-content.active{display:block}.relative:hover .copy-button{opacity:1}pre{overflow-x:auto}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.icon-\[lucide--braces\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1m8 0h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1'/%3E%3C/svg%3E")}.icon-\[lucide--check\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E")}.icon-\[lucide--clock\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--code\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E")}.icon-\[lucide--copy\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--download\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E")}.icon-\[lucide--github\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--heart\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.icon-\[lucide--star\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E")}.icon-\[lucide--terminal\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m4 17l6-6l-6-6m8 14h8'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-bun\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23fbf0df' d='M29 17c0 5.65-5.82 10.23-13 10.23S3 22.61 3 17c0-3.5 2.24-6.6 5.66-8.44S14.21 4.81 16 4.81s3.32 1.54 7.34 3.71C26.76 10.36 29 13.46 29 17'/%3E%3Cpath fill='none' stroke='%23000' d='M16 27.65c7.32 0 13.46-4.65 13.46-10.65c0-3.72-2.37-7-5.89-8.85c-1.39-.75-2.46-1.41-3.37-2l-1.13-.69A6.14 6.14 0 0 0 16 4.35a6.9 6.9 0 0 0-3.3 1.23c-.42.24-.86.51-1.32.8c-.87.54-1.83 1.13-3 1.73C4.91 10 2.54 13.24 2.54 17c0 6 6.14 10.65 13.46 10.65Z'/%3E%3Cellipse cx='21.65' cy='18.62' fill='%23febbd0' rx='2.17' ry='1.28'/%3E%3Cellipse cx='10.41' cy='18.62' fill='%23febbd0' rx='2.17' ry='1.28'/%3E%3Cpath fill-rule='evenodd' d='M11.43 18.11a2 2 0 1 0-2-2.05a2.05 2.05 0 0 0 2 2.05m9.2 0a2 2 0 1 0-2-2.05a2 2 0 0 0 2 2.05'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M10.79 16.19a.77.77 0 1 0-.76-.77a.76.76 0 0 0 .76.77m9.2 0a.77.77 0 1 0 0-1.53a.77.77 0 0 0 0 1.53'/%3E%3Cpath fill='%23b71422' stroke='%23000' stroke-width='.75' d='M18.62 19.67a3.3 3.3 0 0 1-1.09 1.75a2.48 2.48 0 0 1-1.5.69a2.53 2.53 0 0 1-1.5-.69a3.28 3.28 0 0 1-1.08-1.75a.26.26 0 0 1 .29-.3h4.58a.27.27 0 0 1 .3.3Z'/%3E%3Cpath fill='%23ccbea7' fill-rule='evenodd' d='M14.93 5.75a6.1 6.1 0 0 1-2.09 4.62c-.1.09 0 .27.11.22c1.25-.49 2.94-1.94 2.23-4.88c-.03-.15-.25-.11-.25.04m.85 0a6 6 0 0 1 .57 5c0 .13.12.24.21.13c.83-1 1.54-3.11-.59-5.31c-.1-.11-.27.04-.19.17Zm1-.06a6.1 6.1 0 0 1 2.53 4.38c0 .14.21.17.24 0c.34-1.3.15-3.51-2.66-4.66c-.12-.02-.21.18-.09.27ZM9.94 9.55a6.27 6.27 0 0 0 3.89-3.33c.07-.13.28-.08.25.07c-.64 3-2.79 3.59-4.13 3.51c-.14-.01-.14-.21-.01-.25'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-npm\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23cb3837' d='M2 10.555h28v9.335H16v1.556H9.778v-1.557H2Zm1.556 7.779h3.111v-4.668h1.555v4.667h1.556v-6.222H3.556Zm7.778-6.223v7.779h3.111v-1.556h3.111v-6.223Zm3.111 1.556H16v3.112h-1.556Zm4.667-1.556v6.223h3.111v-4.668h1.556v4.667h1.556v-4.667h1.556v4.667h1.556v-6.222Z'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-pnpm\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23f9ad00' d='M30 10.75h-8.749V2H30Zm-9.626 0h-8.75V2h8.75Zm-9.625 0H2V2h8.749ZM30 20.375h-8.749v-8.75H30Z'/%3E%3Cpath fill='%23fff' d='M20.374 20.375h-8.75v-8.75h8.75Zm0 9.625h-8.75v-8.75h8.75ZM30 30h-8.749v-8.75H30Zm-19.251 0H2v-8.75h8.749Z'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-yarn\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%232188b6' d='M28.208 24.409a10.5 10.5 0 0 0-3.959 1.822a23.7 23.7 0 0 1-5.835 2.642a1.63 1.63 0 0 1-.983.55a62 62 0 0 1-6.447.577c-1.163.009-1.876-.3-2.074-.776a1.573 1.573 0 0 1 .866-2.074a4 4 0 0 1-.514-.379c-.171-.171-.352-.514-.406-.388c-.225.55-.343 1.894-.947 2.5c-.83.839-2.4.559-3.328.072c-1.019-.541.072-1.813.072-1.813a.73.73 0 0 1-.992-.343a4.85 4.85 0 0 1-.667-2.949a5.37 5.37 0 0 1 1.749-2.895a9.3 9.3 0 0 1 .658-4.4a10.45 10.45 0 0 1 3.165-3.661S6.628 10.747 7.35 8.817c.469-1.262.658-1.253.812-1.308a3.6 3.6 0 0 0 1.452-.857a5.27 5.27 0 0 1 4.41-1.7S15.2 1.4 16.277 2.09a18.4 18.4 0 0 1 1.533 2.886s1.281-.748 1.425-.469a11.33 11.33 0 0 1 .523 6.132a14 14 0 0 1-2.6 5.411c-.135.225 1.551.938 2.615 3.887c.983 2.7.108 4.96.262 5.212c.027.045.036.063.036.063s1.127.09 3.391-1.308a8.5 8.5 0 0 1 4.277-1.604a1.081 1.081 0 0 1 .469 2.11Z'/%3E%3C/svg%3E")}.btn{display:inline-block;cursor:pointer;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1));padding:.5rem 1rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.btn:disabled{cursor:default;--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1));opacity:.5}.absolute{position:absolute}.relative{position:relative}.right-3{right:.75rem}.top-3{top:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-b{border-bottom-width:1px}.border-indigo-400\/30{border-color:#818cf84d}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1))}.bg-indigo-500\/10{background-color:#6366f11a}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/50{background-color:#1e293b80}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-indigo-600{--tw-gradient-from: #4f46e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(79 70 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-violet-600{--tw-gradient-to: #7c3aed var(--tw-gradient-to-position)}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-20{padding-bottom:5rem}.text-center{text-align:center}.font-sans{font-family:Inter,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-indigo-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity, 1))}.text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:bg-indigo-400:hover{--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-500\/20:hover{background-color:#6366f133}.hover\:text-indigo-200:hover{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.hover\:text-slate-300:hover{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.group[data-copied] .group-data-\[copied\]\:block{display:block}.group[data-copied] .group-data-\[copied\]\:hidden{display:none}@media (min-width: 768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! - Theme: GitHub Dark - Description: Dark theme as seen on github.com - Author: github.com - Maintainer: @Hirse - Updated: 2021-05-15 - - Outdated base version: https://github.com/primer/github-syntax-dark - Current colors taken from GitHub's CSS -*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:4rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;line-height:1.2}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}} +.package-manager-btn{display:flex;align-items:center;gap:.375rem;border-radius:.5rem;background-color:#33415580;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.package-manager-btn:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}@media (min-width: 1024px){.package-manager-btn{font-size:.875rem;line-height:1.25rem}}.package-manager-btn.active{background-color:#6366f133;--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.package-manager-btn.active:hover{background-color:#6366f14d;--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.package-manager-content{display:none}.package-manager-content.active{display:block}.relative:hover .copy-button{opacity:1}pre{overflow-x:auto}.sc-doc-block{position:relative}.sc-doc-block:hover .copy-button{opacity:1}.sc-doc-block-glow{position:fixed;width:600px;height:600px;background:radial-gradient(circle at center,rgba(99,102,241,.06),transparent 40%);border-radius:50%;pointer-events:none;z-index:0;opacity:0;transform:translate(-50%,-50%);will-change:left,top,opacity;transition:opacity .2s ease-out}.sc-doc-block:hover .sc-doc-block-glow{opacity:1}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.icon-\[lucide--braces\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2a2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1m8 0h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1'/%3E%3C/svg%3E")}.icon-\[lucide--check\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E")}.icon-\[lucide--clock\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--code\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 18l6-6l-6-6M8 6l-6 6l6 6'/%3E%3C/svg%3E")}.icon-\[lucide--copy\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--crown\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294zM5 21h14'/%3E%3C/svg%3E")}.icon-\[lucide--download\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5l5-5m-5 5V3'/%3E%3C/svg%3E")}.icon-\[lucide--github\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4'/%3E%3Cpath d='M9 18c-4.51 2-5-2-7-2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--heart\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2c-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.icon-\[lucide--palette\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='13.5' cy='6.5' r='.5' fill='black'/%3E%3Ccircle cx='17.5' cy='10.5' r='.5' fill='black'/%3E%3Ccircle cx='8.5' cy='7.5' r='.5' fill='black'/%3E%3Ccircle cx='6.5' cy='12.5' r='.5' fill='black'/%3E%3Cpath d='M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688c0-.437-.18-.835-.437-1.125c-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2'/%3E%3C/g%3E%3C/svg%3E")}.icon-\[lucide--star\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z'/%3E%3C/svg%3E")}.icon-\[lucide--terminal\]{display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m4 17l6-6l-6-6m8 14h8'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-bun\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23fbf0df' d='M29 17c0 5.65-5.82 10.23-13 10.23S3 22.61 3 17c0-3.5 2.24-6.6 5.66-8.44S14.21 4.81 16 4.81s3.32 1.54 7.34 3.71C26.76 10.36 29 13.46 29 17'/%3E%3Cpath fill='none' stroke='%23000' d='M16 27.65c7.32 0 13.46-4.65 13.46-10.65c0-3.72-2.37-7-5.89-8.85c-1.39-.75-2.46-1.41-3.37-2l-1.13-.69A6.14 6.14 0 0 0 16 4.35a6.9 6.9 0 0 0-3.3 1.23c-.42.24-.86.51-1.32.8c-.87.54-1.83 1.13-3 1.73C4.91 10 2.54 13.24 2.54 17c0 6 6.14 10.65 13.46 10.65Z'/%3E%3Cellipse cx='21.65' cy='18.62' fill='%23febbd0' rx='2.17' ry='1.28'/%3E%3Cellipse cx='10.41' cy='18.62' fill='%23febbd0' rx='2.17' ry='1.28'/%3E%3Cpath fill-rule='evenodd' d='M11.43 18.11a2 2 0 1 0-2-2.05a2.05 2.05 0 0 0 2 2.05m9.2 0a2 2 0 1 0-2-2.05a2 2 0 0 0 2 2.05'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M10.79 16.19a.77.77 0 1 0-.76-.77a.76.76 0 0 0 .76.77m9.2 0a.77.77 0 1 0 0-1.53a.77.77 0 0 0 0 1.53'/%3E%3Cpath fill='%23b71422' stroke='%23000' stroke-width='.75' d='M18.62 19.67a3.3 3.3 0 0 1-1.09 1.75a2.48 2.48 0 0 1-1.5.69a2.53 2.53 0 0 1-1.5-.69a3.28 3.28 0 0 1-1.08-1.75a.26.26 0 0 1 .29-.3h4.58a.27.27 0 0 1 .3.3Z'/%3E%3Cpath fill='%23ccbea7' fill-rule='evenodd' d='M14.93 5.75a6.1 6.1 0 0 1-2.09 4.62c-.1.09 0 .27.11.22c1.25-.49 2.94-1.94 2.23-4.88c-.03-.15-.25-.11-.25.04m.85 0a6 6 0 0 1 .57 5c0 .13.12.24.21.13c.83-1 1.54-3.11-.59-5.31c-.1-.11-.27.04-.19.17Zm1-.06a6.1 6.1 0 0 1 2.53 4.38c0 .14.21.17.24 0c.34-1.3.15-3.51-2.66-4.66c-.12-.02-.21.18-.09.27ZM9.94 9.55a6.27 6.27 0 0 0 3.89-3.33c.07-.13.28-.08.25.07c-.64 3-2.79 3.59-4.13 3.51c-.14-.01-.14-.21-.01-.25'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-npm\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23cb3837' d='M2 10.555h28v9.335H16v1.556H9.778v-1.557H2Zm1.556 7.779h3.111v-4.668h1.555v4.667h1.556v-6.222H3.556Zm7.778-6.223v7.779h3.111v-1.556h3.111v-6.223Zm3.111 1.556H16v3.112h-1.556Zm4.667-1.556v6.223h3.111v-4.668h1.556v4.667h1.556v-4.667h1.556v4.667h1.556v-6.222Z'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-pnpm\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%23f9ad00' d='M30 10.75h-8.749V2H30Zm-9.626 0h-8.75V2h8.75Zm-9.625 0H2V2h8.749ZM30 20.375h-8.749v-8.75H30Z'/%3E%3Cpath fill='%23fff' d='M20.374 20.375h-8.75v-8.75h8.75Zm0 9.625h-8.75v-8.75h8.75ZM30 30h-8.749v-8.75H30Zm-19.251 0H2v-8.75h8.749Z'/%3E%3C/svg%3E")}.icon-\[vscode-icons--file-type-yarn\]{display:inline-block;width:1em;height:1em;background-repeat:no-repeat;background-size:100% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='%232188b6' d='M28.208 24.409a10.5 10.5 0 0 0-3.959 1.822a23.7 23.7 0 0 1-5.835 2.642a1.63 1.63 0 0 1-.983.55a62 62 0 0 1-6.447.577c-1.163.009-1.876-.3-2.074-.776a1.573 1.573 0 0 1 .866-2.074a4 4 0 0 1-.514-.379c-.171-.171-.352-.514-.406-.388c-.225.55-.343 1.894-.947 2.5c-.83.839-2.4.559-3.328.072c-1.019-.541.072-1.813.072-1.813a.73.73 0 0 1-.992-.343a4.85 4.85 0 0 1-.667-2.949a5.37 5.37 0 0 1 1.749-2.895a9.3 9.3 0 0 1 .658-4.4a10.45 10.45 0 0 1 3.165-3.661S6.628 10.747 7.35 8.817c.469-1.262.658-1.253.812-1.308a3.6 3.6 0 0 0 1.452-.857a5.27 5.27 0 0 1 4.41-1.7S15.2 1.4 16.277 2.09a18.4 18.4 0 0 1 1.533 2.886s1.281-.748 1.425-.469a11.33 11.33 0 0 1 .523 6.132a14 14 0 0 1-2.6 5.411c-.135.225 1.551.938 2.615 3.887c.983 2.7.108 4.96.262 5.212c.027.045.036.063.036.063s1.127.09 3.391-1.308a8.5 8.5 0 0 1 4.277-1.604a1.081 1.081 0 0 1 .469 2.11Z'/%3E%3C/svg%3E")}.btn{display:inline-flex;align-items:center;gap:.5rem;border-radius:.5rem;padding:.75rem 1.5rem;font-weight:600;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-light{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.btn-light:hover{background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1));--tw-bg-opacity: .95}.btn-indigo{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-indigo:hover{--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity, 1))}.sc-doc-block{border-radius:.75rem;--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.right-3{right:.75rem}.top-3{top:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-12{margin-bottom:3rem}.mb-20{margin-bottom:5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-full{width:100%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-indigo-400\/30{border-color:#818cf84d}.border-indigo-500\/20{border-color:#6366f133}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity, 1))}.bg-indigo-500\/10{background-color:#6366f11a}.bg-indigo-500\/20{background-color:#6366f133}.bg-indigo-950\/50{background-color:#1e1b4b80}.bg-slate-700\/50{background-color:#33415580}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/50{background-color:#1e293b80}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-indigo-600{--tw-gradient-from: #4f46e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(79 70 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-violet-600{--tw-gradient-to: #7c3aed var(--tw-gradient-to-position)}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-center{text-align:center}.font-sans{font-family:Inter,sans-serif}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-indigo-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity, 1))}.text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-indigo-950\/10{--tw-shadow-color: rgb(30 27 75 / .1);--tw-shadow: var(--tw-shadow-colored)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-500\/20:hover{background-color:#6366f133}.hover\:bg-indigo-500\/30:hover{background-color:#6366f14d}.hover\:bg-slate-700:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.hover\:text-indigo-200:hover{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.hover\:text-slate-300:hover{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.group[data-copied] .group-data-\[copied\]\:block{display:block}.group[data-copied] .group-data-\[copied\]\:hidden{display:none}@media (min-width: 640px){.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:text-left{text-align:left}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.lg\:h-5{height:1.25rem}.lg\:w-5{width:1.25rem}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-sm{font-size:.875rem;line-height:1.25rem}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#98c379}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-title.class_,.hljs-class .hljs-title{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.simply-countdown{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:1px solid rgba(226,232,240,.8);border-radius:1rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008,0 0 0 1px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#1e293b;line-height:1.2;letter-spacing:-.025em}.simply-countdown>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#64748b;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown>.simply-section .simply-amount{font-size:2rem}.simply-countdown>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-dark{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:Inter,system-ui,-apple-system,sans-serif}.simply-countdown-dark>.simply-section{width:65px;height:65px;padding:1.5rem;display:flex;align-items:center;justify-content:center;background:#0f172abf;border:1px solid rgba(51,65,85,.6);border-radius:1rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a,0 0 0 1px #ffffff0d;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.simply-countdown-dark>.simply-section>div{display:flex;flex-direction:column;line-height:1;align-items:center}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.5rem;font-weight:700;color:#f1f5f9;line-height:1.2;letter-spacing:-.025em}.simply-countdown-dark>.simply-section .simply-word{font-size:.6rem;font-weight:500;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em}@media (min-width: 640px){.simply-countdown-dark>.simply-section{width:75px;height:75px;padding:1.75rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-dark>.simply-section{width:90px;height:90px;padding:2rem}.simply-countdown-dark>.simply-section .simply-amount{font-size:2rem}.simply-countdown-dark>.simply-section .simply-word{font-size:.8rem}}.simply-countdown-cyber{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:1.75rem;font-family:Inter,system-ui,-apple-system,sans-serif;perspective:1000px}.simply-countdown-cyber>.simply-section{width:70px;height:70px;padding:1.5rem;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#171923e6,#0f1119f2);border-radius:.5rem;transition:all .4s cubic-bezier(.175,.885,.32,1.275);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform-style:preserve-3d}.simply-countdown-cyber>.simply-section:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:linear-gradient(135deg,#78f0ff33,#ff5adc33);border-radius:.5rem;z-index:-1;opacity:0;transition:opacity .3s ease}.simply-countdown-cyber>.simply-section:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:linear-gradient(135deg,#78f0ff,#ff5adc);border-radius:.5rem;z-index:-2;opacity:.15;filter:blur(4px);animation:pulse 4s ease-in-out infinite}.simply-countdown-cyber>.simply-section .glass-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:.5rem}.simply-countdown-cyber>.simply-section:hover{transform:translateY(-4px) translateZ(10px) rotateX(5deg);box-shadow:0 20px 40px -10px #00000080,0 0 20px #78f0ff33,0 0 0 1px #78f0ff1a}.simply-countdown-cyber>.simply-section:hover:before{opacity:1}.simply-countdown-cyber>.simply-section>div{display:flex;flex-direction:column;gap:.4rem;align-items:center;transform-style:preserve-3d}.simply-countdown-cyber>.simply-section .simply-amount{font-size:1.75rem;font-weight:700;background:linear-gradient(to bottom right,#78f0ff,#ff5adc);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(120,240,255,.3),0 0 40px rgba(120,240,255,.2);letter-spacing:-.02em;transform:translateZ(10px)}.simply-countdown-cyber>.simply-section .simply-word{font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:#ffffffb3;transform:translateZ(5px);position:relative}.simply-countdown-cyber>.simply-section .simply-word:after{content:"";position:absolute;left:-10%;bottom:-4px;width:120%;height:1px;background:linear-gradient(to right,#78f0ff00,#78f0ff80,#ff5adc80,#ff5adc00)}@media (min-width: 640px){.simply-countdown-cyber>.simply-section{width:80px;height:80px;padding:1.75rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.75rem}}@media (min-width: 1024px){.simply-countdown-cyber>.simply-section{width:100px;height:100px;padding:2rem}.simply-countdown-cyber>.simply-section .simply-amount{font-size:2.5rem}.simply-countdown-cyber>.simply-section .simply-word{font-size:.8rem}}@keyframes pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.simply-countdown-losange{overflow:visible;display:flex;flex-wrap:wrap;justify-content:center;gap:3rem;font-family:Inter,sans-serif}.simply-countdown-losange>.simply-section{width:70px;height:70px;display:flex;justify-content:center;align-items:center;transform:rotate(-45deg);background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:.5rem;transition:all .2s ease-in-out}.simply-countdown-losange>.simply-section>div{transform:rotate(45deg);display:flex;flex-direction:column;line-height:1.2}.simply-countdown-losange>.simply-section .simply-amount,.simply-countdown-losange>.simply-section .simply-word{display:block;text-align:center}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.25rem;font-weight:700;color:#fff}.simply-countdown-losange>.simply-section .simply-word{font-size:.65rem;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.05em}@media (min-width: 640px){.simply-countdown-losange>.simply-section{width:80px;height:80px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.5rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.7rem}}@media (min-width: 1024px){.simply-countdown-losange>.simply-section{width:90px;height:90px}.simply-countdown-losange>.simply-section .simply-amount{font-size:1.75rem}.simply-countdown-losange>.simply-section .simply-word{font-size:.75rem}}.simply-countdown-circle{--sc-circle-primary: #6366f1;--sc-circle-secondary: #818cf8;--sc-circle-bg: #1e1b4b;--sc-circle-text: #fff;display:flex;flex-wrap:wrap;justify-content:center;gap:2rem;font-family:Inter,sans-serif}.simply-countdown-circle>.simply-section{position:relative;width:100px;height:100px;padding:1rem;display:flex;align-items:center;justify-content:center;flex-direction:column;border-radius:50%;background:linear-gradient(45deg,var(--sc-circle-primary),var(--sc-circle-secondary));box-shadow:0 0 25px -5px var(--sc-circle-primary);animation:pulse-circle 2s cubic-bezier(.4,0,.6,1) infinite}.simply-countdown-circle>.simply-section:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:50%;background:var(--sc-circle-bg);z-index:0}.simply-countdown-circle>.simply-section>div{position:relative;z-index:1;color:var(--sc-circle-text);text-align:center}.simply-countdown-circle .simply-amount{display:block;font-size:1.75rem;font-weight:700;line-height:1;margin-bottom:.25rem;background:linear-gradient(to right,var(--sc-circle-primary),var(--sc-circle-secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.simply-countdown-circle .simply-word{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;opacity:.8}@keyframes pulse-circle{0%,to{transform:scale(1);opacity:1}50%{transform:scale(.98);opacity:.9}} diff --git a/docs/dist/assets/main.min.js b/docs/dist/assets/main.min.js index f098ba0..61011d4 100644 --- a/docs/dist/assets/main.min.js +++ b/docs/dist/assets/main.min.js @@ -1,6 +1,6 @@ -var st=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var _n=st((Sn,ce)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const g of l)if(g.type==="childList")for(const r of g.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(l){const g={};return l.integrity&&(g.integrity=l.integrity),l.referrerPolicy&&(g.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?g.credentials="include":l.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function i(l){if(l.ep)return;l.ep=!0;const g=n(l);fetch(l.href,g)}})();function at(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Ue(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&Ue(n)}),e}class Ae{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Pe(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function K(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const l in i)n[l]=i[l]}),n}const ct="",ve=e=>!!e.scope,lt=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,l)=>`${i}${"_".repeat(l+1)}`)].join(" ")}return`${t}${e}`};class dt{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Pe(t)}openNode(t){if(!ve(t))return;const n=lt(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){ve(t)&&(this.buffer+=ct)}value(){return this.buffer}span(t){this.buffer+=``}}const Re=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class _e{constructor(){this.rootNode=Re(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Re({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{_e._collapse(n)}))}}class ut extends _e{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new dt(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function te(e){return e?typeof e=="string"?e:e.source:null}function ze(e){return Y("(?=",e,")")}function gt(e){return Y("(?:",e,")*")}function ft(e){return Y("(?:",e,")?")}function Y(...e){return e.map(n=>te(n)).join("")}function pt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function we(...e){return"("+(pt(e).capture?"":"?:")+e.map(i=>te(i)).join("|")+")"}function $e(e){return new RegExp(e.toString()+"|").exec("").length-1}function ht(e,t){const n=e&&e.exec(t);return n&&n.index===0}const bt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Se(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const l=n;let g=te(i),r="";for(;g.length>0;){const s=bt.exec(g);if(!s){r+=g;break}r+=g.substring(0,s.index),g=g.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?r+="\\"+String(Number(s[1])+l):(r+=s[0],s[0]==="("&&n++)}return r}).map(i=>`(${i})`).join(t)}const mt=/\b\B/,He="[a-zA-Z]\\w*",xe="[a-zA-Z_]\\w*",Ge="\\b\\d+(\\.\\d+)?",Fe="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ze="\\b(0b[01]+)",Et="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",yt=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=Y(t,/.*\b/,e.binary,/\b.*/)),K({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},ne={begin:"\\\\[\\s\\S]",relevance:0},_t={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ne]},wt={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ne]},St={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},de=function(e,t,n={}){const i=K({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const l=we("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:Y(/[ ]+/,"(",l,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},xt=de("//","$"),kt=de("/\\*","\\*/"),Nt=de("#","$"),Ot={scope:"number",begin:Ge,relevance:0},Tt={scope:"number",begin:Fe,relevance:0},Mt={scope:"number",begin:Ze,relevance:0},At={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ne,{begin:/\[/,end:/\]/,relevance:0,contains:[ne]}]},vt={scope:"title",begin:He,relevance:0},Rt={scope:"title",begin:xe,relevance:0},Ct={begin:"\\.\\s*"+xe,relevance:0},It=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var se=Object.freeze({__proto__:null,APOS_STRING_MODE:_t,BACKSLASH_ESCAPE:ne,BINARY_NUMBER_MODE:Mt,BINARY_NUMBER_RE:Ze,COMMENT:de,C_BLOCK_COMMENT_MODE:kt,C_LINE_COMMENT_MODE:xt,C_NUMBER_MODE:Tt,C_NUMBER_RE:Fe,END_SAME_AS_BEGIN:It,HASH_COMMENT_MODE:Nt,IDENT_RE:He,MATCH_NOTHING_RE:mt,METHOD_GUARD:Ct,NUMBER_MODE:Ot,NUMBER_RE:Ge,PHRASAL_WORDS_MODE:St,QUOTE_STRING_MODE:wt,REGEXP_MODE:At,RE_STARTERS_RE:Et,SHEBANG:yt,TITLE_MODE:vt,UNDERSCORE_IDENT_RE:xe,UNDERSCORE_TITLE_MODE:Rt});function Lt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Dt(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Bt(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Lt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Ut(e,t){Array.isArray(e.illegal)&&(e.illegal=we(...e.illegal))}function Pt(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function zt(e,t){e.relevance===void 0&&(e.relevance=1)}const $t=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=Y(n.beforeMatch,ze(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Ht=["of","and","for","in","not","or","if","then","parent","list","value"],Gt="keyword";function Ke(e,t,n=Gt){const i=Object.create(null);return typeof e=="string"?l(n,e.split(" ")):Array.isArray(e)?l(n,e):Object.keys(e).forEach(function(g){Object.assign(i,Ke(e[g],t,g))}),i;function l(g,r){t&&(r=r.map(s=>s.toLowerCase())),r.forEach(function(s){const c=s.split("|");i[c[0]]=[g,Ft(c[0],c[1])]})}}function Ft(e,t){return t?Number(t):Zt(e)?0:1}function Zt(e){return Ht.includes(e.toLowerCase())}const Ce={},X=e=>{console.error(e)},Ie=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Q=(e,t)=>{Ce[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ce[`${e}/${t}`]=!0)},le=new Error;function je(e,t,{key:n}){let i=0;const l=e[n],g={},r={};for(let s=1;s<=t.length;s++)r[s+i]=l[s],g[s+i]=!0,i+=$e(t[s-1]);e[n]=r,e[n]._emit=g,e[n]._multi=!0}function Kt(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw X("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),le;if(typeof e.beginScope!="object"||e.beginScope===null)throw X("beginScope must be object"),le;je(e,e.begin,{key:"beginScope"}),e.begin=Se(e.begin,{joinWith:""})}}function jt(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw X("skip, excludeEnd, returnEnd not compatible with endScope: {}"),le;if(typeof e.endScope!="object"||e.endScope===null)throw X("endScope must be object"),le;je(e,e.end,{key:"endScope"}),e.end=Se(e.end,{joinWith:""})}}function Wt(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Xt(e){Wt(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Kt(e),jt(e)}function qt(e){function t(r,s){return new RegExp(te(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,s]),this.matchAt+=$e(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(c=>c[1]);this.matcherRe=t(Se(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const c=this.matcherRe.exec(s);if(!c)return null;const b=c.findIndex((O,N)=>N>0&&O!==void 0),m=this.matchIndexes[b];return c.splice(0,b),Object.assign(c,m)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const c=new n;return this.rules.slice(s).forEach(([b,m])=>c.addRule(b,m)),c.compile(),this.multiRegexes[s]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,c){this.rules.push([s,c]),c.type==="begin"&&this.count++}exec(s){const c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let b=c.exec(s);if(this.resumingScanAtSamePosition()&&!(b&&b.index===this.lastIndex)){const m=this.getMatcher(0);m.lastIndex=this.lastIndex+1,b=m.exec(s)}return b&&(this.regexIndex+=b.position+1,this.regexIndex===this.count&&this.considerAll()),b}}function l(r){const s=new i;return r.contains.forEach(c=>s.addRule(c.begin,{rule:c,type:"begin"})),r.terminatorEnd&&s.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&s.addRule(r.illegal,{type:"illegal"}),s}function g(r,s){const c=r;if(r.isCompiled)return c;[Dt,Pt,Xt,$t].forEach(m=>m(r,s)),e.compilerExtensions.forEach(m=>m(r,s)),r.__beforeBegin=null,[Bt,Ut,zt].forEach(m=>m(r,s)),r.isCompiled=!0;let b=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),b=r.keywords.$pattern,delete r.keywords.$pattern),b=b||/\w+/,r.keywords&&(r.keywords=Ke(r.keywords,e.case_insensitive)),c.keywordPatternRe=t(b,!0),s&&(r.begin||(r.begin=/\B|\b/),c.beginRe=t(c.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(c.endRe=t(c.end)),c.terminatorEnd=te(c.end)||"",r.endsWithParent&&s.terminatorEnd&&(c.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(c.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(m){return Yt(m==="self"?r:m)})),r.contains.forEach(function(m){g(m,c)}),r.starts&&g(r.starts,s),c.matcher=l(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=K(e.classNameAliases||{}),g(e)}function We(e){return e?e.endsWithParent||We(e.starts):!1}function Yt(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return K(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:We(e)?K(e,{starts:e.starts?K(e.starts):null}):Object.isFrozen(e)?K(e):e}var Vt="11.11.0";class Jt extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const ye=Pe,Le=K,De=Symbol("nomatch"),Qt=7,Xe=function(e){const t=Object.create(null),n=Object.create(null),i=[];let l=!0;const g="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:ut};function c(o){return s.noHighlightRe.test(o)}function b(o){let u=o.className+" ";u+=o.parentNode?o.parentNode.className:"";const f=s.languageDetectRe.exec(u);if(f){const E=M(f[1]);return E||(Ie(g.replace("{}",f[1])),Ie("Falling back to no-highlight mode for this block.",o)),E?f[1]:"no-highlight"}return u.split(/\s+/).find(E=>c(E)||M(E))}function m(o,u,f){let E="",w="";typeof u=="object"?(E=o,f=u.ignoreIllegals,w=u.language):(Q("10.7.0","highlight(lang, code, ...args) has been deprecated."),Q("10.7.0",`Please use highlight(code, options) instead. -https://github.com/highlightjs/highlight.js/issues/2277`),w=o,E=u),f===void 0&&(f=!0);const A={code:E,language:w};J("before:highlight",A);const L=A.result?A.result:O(A.language,A.code,f);return L.code=A.code,J("after:highlight",L),L}function O(o,u,f,E){const w=Object.create(null);function A(a,d){return a.keywords[d]}function L(){if(!p.keywords){T.addText(_);return}let a=0;p.keywordPatternRe.lastIndex=0;let d=p.keywordPatternRe.exec(_),h="";for(;d;){h+=_.substring(a,d.index);const y=H.case_insensitive?d[0].toLowerCase():d[0],v=A(p,y);if(v){const[G,rt]=v;if(T.addText(h),h="",w[y]=(w[y]||0)+1,w[y]<=Qt&&(oe+=rt),G.startsWith("_"))h+=d[0];else{const ot=H.classNameAliases[G]||G;$(d[0],ot)}}else h+=d[0];a=p.keywordPatternRe.lastIndex,d=p.keywordPatternRe.exec(_)}h+=_.substring(a),T.addText(h)}function j(){if(_==="")return;let a=null;if(typeof p.subLanguage=="string"){if(!t[p.subLanguage]){T.addText(_);return}a=O(p.subLanguage,_,!0,Me[p.subLanguage]),Me[p.subLanguage]=a._top}else a=D(_,p.subLanguage.length?p.subLanguage:null);p.relevance>0&&(oe+=a.relevance),T.__addSublanguage(a._emitter,a.language)}function I(){p.subLanguage!=null?j():L(),_=""}function $(a,d){a!==""&&(T.startScope(d),T.addText(a),T.endScope())}function ke(a,d){let h=1;const y=d.length-1;for(;h<=y;){if(!a._emit[h]){h++;continue}const v=H.classNameAliases[a[h]]||a[h],G=d[h];v?$(G,v):(_=G,L(),_=""),h++}}function Ne(a,d){return a.scope&&typeof a.scope=="string"&&T.openNode(H.classNameAliases[a.scope]||a.scope),a.beginScope&&(a.beginScope._wrap?($(_,H.classNameAliases[a.beginScope._wrap]||a.beginScope._wrap),_=""):a.beginScope._multi&&(ke(a.beginScope,d),_="")),p=Object.create(a,{parent:{value:p}}),p}function Oe(a,d,h){let y=ht(a.endRe,h);if(y){if(a["on:end"]){const v=new Ae(a);a["on:end"](d,v),v.isMatchIgnored&&(y=!1)}if(y){for(;a.endsParent&&a.parent;)a=a.parent;return a}}if(a.endsWithParent)return Oe(a.parent,d,h)}function Qe(a){return p.matcher.regexIndex===0?(_+=a[0],1):(Ee=!0,0)}function et(a){const d=a[0],h=a.rule,y=new Ae(h),v=[h.__beforeBegin,h["on:begin"]];for(const G of v)if(G&&(G(a,y),y.isMatchIgnored))return Qe(d);return h.skip?_+=d:(h.excludeBegin&&(_+=d),I(),!h.returnBegin&&!h.excludeBegin&&(_=d)),Ne(h,a),h.returnBegin?0:d.length}function tt(a){const d=a[0],h=u.substring(a.index),y=Oe(p,a,h);if(!y)return De;const v=p;p.endScope&&p.endScope._wrap?(I(),$(d,p.endScope._wrap)):p.endScope&&p.endScope._multi?(I(),ke(p.endScope,a)):v.skip?_+=d:(v.returnEnd||v.excludeEnd||(_+=d),I(),v.excludeEnd&&(_=d));do p.scope&&T.closeNode(),!p.skip&&!p.subLanguage&&(oe+=p.relevance),p=p.parent;while(p!==y.parent);return y.starts&&Ne(y.starts,a),v.returnEnd?0:d.length}function nt(){const a=[];for(let d=p;d!==H;d=d.parent)d.scope&&a.unshift(d.scope);a.forEach(d=>T.openNode(d))}let re={};function Te(a,d){const h=d&&d[0];if(_+=a,h==null)return I(),0;if(re.type==="begin"&&d.type==="end"&&re.index===d.index&&h===""){if(_+=u.slice(d.index,d.index+1),!l){const y=new Error(`0 width match regex (${o})`);throw y.languageName=o,y.badRule=re.rule,y}return 1}if(re=d,d.type==="begin")return et(d);if(d.type==="illegal"&&!f){const y=new Error('Illegal lexeme "'+h+'" for mode "'+(p.scope||"")+'"');throw y.mode=p,y}else if(d.type==="end"){const y=tt(d);if(y!==De)return y}if(d.type==="illegal"&&h==="")return _+=` -`,1;if(me>1e5&&me>d.index*3)throw new Error("potential infinite loop, way more iterations than matches");return _+=h,h.length}const H=M(o);if(!H)throw X(g.replace("{}",o)),new Error('Unknown language: "'+o+'"');const it=qt(H);let be="",p=E||it;const Me={},T=new s.__emitter(s);nt();let _="",oe=0,W=0,me=0,Ee=!1;try{if(H.__emitTokens)H.__emitTokens(u,T);else{for(p.matcher.considerAll();;){me++,Ee?Ee=!1:p.matcher.considerAll(),p.matcher.lastIndex=W;const a=p.matcher.exec(u);if(!a)break;const d=u.substring(W,a.index),h=Te(d,a);W=a.index+h}Te(u.substring(W))}return T.finalize(),be=T.toHTML(),{language:o,value:be,relevance:oe,illegal:!1,_emitter:T,_top:p}}catch(a){if(a.message&&a.message.includes("Illegal"))return{language:o,value:ye(u),illegal:!0,relevance:0,_illegalBy:{message:a.message,index:W,context:u.slice(W-100,W+100),mode:a.mode,resultSoFar:be},_emitter:T};if(l)return{language:o,value:ye(u),illegal:!1,relevance:0,errorRaised:a,_emitter:T,_top:p};throw a}}function N(o){const u={value:ye(o),illegal:!1,relevance:0,_top:r,_emitter:new s.__emitter(s)};return u._emitter.addText(o),u}function D(o,u){u=u||s.languages||Object.keys(t);const f=N(o),E=u.filter(M).filter(V).map(I=>O(I,o,!1));E.unshift(f);const w=E.sort((I,$)=>{if(I.relevance!==$.relevance)return $.relevance-I.relevance;if(I.language&&$.language){if(M(I.language).supersetOf===$.language)return 1;if(M($.language).supersetOf===I.language)return-1}return 0}),[A,L]=w,j=A;return j.secondBest=L,j}function S(o,u,f){const E=u&&n[u]||f;o.classList.add("hljs"),o.classList.add(`language-${E}`)}function k(o){let u=null;const f=b(o);if(c(f))return;if(J("before:highlightElement",{el:o,language:f}),o.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",o);return}if(o.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(o)),s.throwUnescapedHTML))throw new Jt("One of your code blocks includes unescaped HTML.",o.innerHTML);u=o;const E=u.textContent,w=f?m(E,{language:f,ignoreIllegals:!0}):D(E);o.innerHTML=w.value,o.dataset.highlighted="yes",S(o,f,w.language),o.result={language:w.language,re:w.relevance,relevance:w.relevance},w.secondBest&&(o.secondBest={language:w.secondBest.language,relevance:w.secondBest.relevance}),J("after:highlightElement",{el:o,result:w,text:E})}function x(o){s=Le(s,o)}const F=()=>{C(),Q("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function B(){C(),Q("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let U=!1;function C(){function o(){C()}if(document.readyState==="loading"){U||window.addEventListener("DOMContentLoaded",o,!1),U=!0;return}document.querySelectorAll(s.cssSelector).forEach(k)}function P(o,u){let f=null;try{f=u(e)}catch(E){if(X("Language definition for '{}' could not be registered.".replace("{}",o)),l)X(E);else throw E;f=r}f.name||(f.name=o),t[o]=f,f.rawDefinition=u.bind(null,e),f.aliases&&R(f.aliases,{languageName:o})}function z(o){delete t[o];for(const u of Object.keys(n))n[u]===o&&delete n[u]}function Z(){return Object.keys(t)}function M(o){return o=(o||"").toLowerCase(),t[o]||t[n[o]]}function R(o,{languageName:u}){typeof o=="string"&&(o=[o]),o.forEach(f=>{n[f.toLowerCase()]=u})}function V(o){const u=M(o);return u&&!u.disableAutodetect}function ge(o){o["before:highlightBlock"]&&!o["before:highlightElement"]&&(o["before:highlightElement"]=u=>{o["before:highlightBlock"](Object.assign({block:u.el},u))}),o["after:highlightBlock"]&&!o["after:highlightElement"]&&(o["after:highlightElement"]=u=>{o["after:highlightBlock"](Object.assign({block:u.el},u))})}function fe(o){ge(o),i.push(o)}function pe(o){const u=i.indexOf(o);u!==-1&&i.splice(u,1)}function J(o,u){const f=o;i.forEach(function(E){E[f]&&E[f](u)})}function he(o){return Q("10.7.0","highlightBlock will be removed entirely in v12.0"),Q("10.7.0","Please use highlightElement now."),k(o)}Object.assign(e,{highlight:m,highlightAuto:D,highlightAll:C,highlightElement:k,highlightBlock:he,configure:x,initHighlighting:F,initHighlightingOnLoad:B,registerLanguage:P,unregisterLanguage:z,listLanguages:Z,getLanguage:M,registerAliases:R,autoDetection:V,inherit:Le,addPlugin:fe,removePlugin:pe}),e.debugMode=function(){l=!1},e.safeMode=function(){l=!0},e.versionString=Vt,e.regex={concat:Y,lookahead:ze,either:we,optional:ft,anyNumberOfTimes:gt};for(const o in se)typeof se[o]=="object"&&Ue(se[o]);return Object.assign(e,se),e},ee=Xe({});ee.newInstance=()=>Xe({});var en=ee;ee.HighlightJS=ee;ee.default=ee;const ie=at(en),Be="[A-Za-z$_][0-9A-Za-z$_]*",tn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],nn=["true","false","null","undefined","NaN","Infinity"],qe=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Ye=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ve=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],rn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],on=[].concat(Ve,qe,Ye);function sn(e){const t=e.regex,n=(f,{after:E})=>{const w="",end:""},g=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(f,E)=>{const w=f[0].length+f.index,A=f.input[w];if(A==="<"||A===","){E.ignoreMatch();return}A===">"&&(n(f,{after:w})||E.ignoreMatch());let L;const j=f.input.substring(w);if(L=j.match(/^\s*=/)){E.ignoreMatch();return}if((L=j.match(/^\s+extends\s+/))&&L.index===0){E.ignoreMatch();return}}},s={$pattern:Be,keyword:tn,literal:nn,built_in:on,"variable.language":rn},c="[0-9](_?[0-9])*",b=`\\.(${c})`,m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",O={className:"number",variants:[{begin:`(\\b(${m})((${b})|\\.)?|(${b}))[eE][+-]?(${c})\\b`},{begin:`\\b(${m})\\b((${b})\\b|\\.)?|(${b})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},D={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},S={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"css"}},k={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,N]},B={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},U=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,D,S,k,x,{match:/\$\d+/},O];N.contains=U.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(U)});const C=[].concat(B,N.contains),P=C.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(C)}]),z={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:P},Z={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,t.concat(i,"(",t.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},M={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...qe,...Ye]}},R={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},V={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[z],illegal:/%/},ge={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function fe(f){return t.concat("(?!",f.join("|"),")")}const pe={match:t.concat(/\b/,fe([...Ve,"super","import"].map(f=>`${f}\\s*\\(`)),i,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},J={begin:t.concat(/\./,t.lookahead(t.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},he={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},z]},o="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",u={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(o)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[z]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:P,CLASS_REFERENCE:M},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),R,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,D,S,k,x,B,{match:/\$\d+/},O,M,{scope:"attr",match:i+t.lookahead(":"),relevance:0},u,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[B,e.REGEXP_MODE,{className:"function",begin:o,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:P}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:g},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},V,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[z,e.inherit(e.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},J,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[z]},pe,ge,Z,he,{match:/\$[(.]/}]}}const an=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),cn=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ln=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],dn=[...cn,...ln],un=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),gn=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),fn=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),pn=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function hn(e){const t=e.regex,n=an(e),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l="and or not only",g=/@-?\w[\w]*(-\w+)*/,r="[a-zA-Z-][a-zA-Z0-9_-]*",s=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,i,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+r,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+gn.join("|")+")"},{begin:":(:)?("+fn.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+pn.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...s,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...s,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:g},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:l,attribute:un.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...s,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+dn.join("|")+")\\b"}]}}function bn(e){const t={variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]},l={begin:/\{/,end:/\}/,contains:i.contains},g={className:"string",begin:"'\\\\?.",end:"'",illegal:"."};return{name:"Elm",keywords:["let","in","if","then","else","case","of","where","module","import","exposing","type","alias","as","infix","infixl","infixr","port","effect","command","subscription"],contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,i,l,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},g,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}function mn(e){const t=e.regex,n={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const l={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},g=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),r={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,l]};l.contains.push(s);const c={match:/\\"/},b={className:"string",begin:/'/,end:/'/},m={match:/\\'/},O={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},N=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],D=e.SHEBANG({binary:`(${N.join("|")})`,relevance:10}),S={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},k=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],x=["true","false"],F={match:/(\/[a-z._-]+)+/},B=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],U=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],C=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],P=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:k,literal:x,built_in:[...B,...U,"set","shopt",...C,...P]},contains:[D,e.SHEBANG(),S,O,g,r,F,s,c,b,m,n]}}/*! +var pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var kn=pt((An,ge)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const u of l)if(u.type==="childList")for(const r of u.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(l){const u={};return l.integrity&&(u.integrity=l.integrity),l.referrerPolicy&&(u.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?u.credentials="include":l.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function i(l){if(l.ep)return;l.ep=!0;const u=n(l);fetch(l.href,u)}})();function ht(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function He(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&He(n)}),e}class Ie{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Ge(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Z(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const l in i)n[l]=i[l]}),n}const bt="",Le=e=>!!e.scope,mt=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,l)=>`${i}${"_".repeat(l+1)}`)].join(" ")}return`${t}${e}`};class Et{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ge(t)}openNode(t){if(!Le(t))return;const n=mt(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Le(t)&&(this.buffer+=bt)}value(){return this.buffer}span(t){this.buffer+=``}}const De=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class Se{constructor(){this.rootNode=De(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=De({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{Se._collapse(n)}))}}class yt extends Se{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new Et(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function ie(e){return e?typeof e=="string"?e:e.source:null}function Fe(e){return Y("(?=",e,")")}function _t(e){return Y("(?:",e,")*")}function wt(e){return Y("(?:",e,")?")}function Y(...e){return e.map(n=>ie(n)).join("")}function xt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ne(...e){return"("+(xt(e).capture?"":"?:")+e.map(i=>ie(i)).join("|")+")"}function Ze(e){return new RegExp(e.toString()+"|").exec("").length-1}function St(e,t){const n=e&&e.exec(t);return n&&n.index===0}const Nt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Me(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const l=n;let u=ie(i),r="";for(;u.length>0;){const s=Nt.exec(u);if(!s){r+=u;break}r+=u.substring(0,s.index),u=u.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?r+="\\"+String(Number(s[1])+l):(r+=s[0],s[0]==="("&&n++)}return r}).map(i=>`(${i})`).join(t)}const Mt=/\b\B/,je="[a-zA-Z]\\w*",ve="[a-zA-Z_]\\w*",We="\\b\\d+(\\.\\d+)?",Ke="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Xe="\\b(0b[01]+)",vt="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Ot=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=Y(t,/.*\b/,e.binary,/\b.*/)),Z({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},re={begin:"\\\\[\\s\\S]",relevance:0},kt={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[re]},Tt={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[re]},At={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},pe=function(e,t,n={}){const i=Z({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const l=Ne("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:Y(/[ ]+/,"(",l,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},Rt=pe("//","$"),Ct=pe("/\\*","\\*/"),It=pe("#","$"),Lt={scope:"number",begin:We,relevance:0},Dt={scope:"number",begin:Ke,relevance:0},Bt={scope:"number",begin:Xe,relevance:0},Pt={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[re,{begin:/\[/,end:/\]/,relevance:0,contains:[re]}]},Ut={scope:"title",begin:je,relevance:0},zt={scope:"title",begin:ve,relevance:0},$t={begin:"\\.\\s*"+ve,relevance:0},Ht=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var le=Object.freeze({__proto__:null,APOS_STRING_MODE:kt,BACKSLASH_ESCAPE:re,BINARY_NUMBER_MODE:Bt,BINARY_NUMBER_RE:Xe,COMMENT:pe,C_BLOCK_COMMENT_MODE:Ct,C_LINE_COMMENT_MODE:Rt,C_NUMBER_MODE:Dt,C_NUMBER_RE:Ke,END_SAME_AS_BEGIN:Ht,HASH_COMMENT_MODE:It,IDENT_RE:je,MATCH_NOTHING_RE:Mt,METHOD_GUARD:$t,NUMBER_MODE:Lt,NUMBER_RE:We,PHRASAL_WORDS_MODE:At,QUOTE_STRING_MODE:Tt,REGEXP_MODE:Pt,RE_STARTERS_RE:vt,SHEBANG:Ot,TITLE_MODE:Ut,UNDERSCORE_IDENT_RE:ve,UNDERSCORE_TITLE_MODE:zt});function Gt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Ft(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Zt(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Gt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function jt(e,t){Array.isArray(e.illegal)&&(e.illegal=Ne(...e.illegal))}function Wt(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Kt(e,t){e.relevance===void 0&&(e.relevance=1)}const Xt=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=Y(n.beforeMatch,Fe(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Yt=["of","and","for","in","not","or","if","then","parent","list","value"],qt="keyword";function Ye(e,t,n=qt){const i=Object.create(null);return typeof e=="string"?l(n,e.split(" ")):Array.isArray(e)?l(n,e):Object.keys(e).forEach(function(u){Object.assign(i,Ye(e[u],t,u))}),i;function l(u,r){t&&(r=r.map(s=>s.toLowerCase())),r.forEach(function(s){const c=s.split("|");i[c[0]]=[u,Vt(c[0],c[1])]})}}function Vt(e,t){return t?Number(t):Jt(e)?0:1}function Jt(e){return Yt.includes(e.toLowerCase())}const Be={},X=e=>{console.error(e)},Pe=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Q=(e,t)=>{Be[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Be[`${e}/${t}`]=!0)},fe=new Error;function qe(e,t,{key:n}){let i=0;const l=e[n],u={},r={};for(let s=1;s<=t.length;s++)r[s+i]=l[s],u[s+i]=!0,i+=Ze(t[s-1]);e[n]=r,e[n]._emit=u,e[n]._multi=!0}function Qt(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw X("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),fe;if(typeof e.beginScope!="object"||e.beginScope===null)throw X("beginScope must be object"),fe;qe(e,e.begin,{key:"beginScope"}),e.begin=Me(e.begin,{joinWith:""})}}function en(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw X("skip, excludeEnd, returnEnd not compatible with endScope: {}"),fe;if(typeof e.endScope!="object"||e.endScope===null)throw X("endScope must be object"),fe;qe(e,e.end,{key:"endScope"}),e.end=Me(e.end,{joinWith:""})}}function tn(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function nn(e){tn(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Qt(e),en(e)}function rn(e){function t(r,s){return new RegExp(ie(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,s]),this.matchAt+=Ze(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(c=>c[1]);this.matcherRe=t(Me(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const c=this.matcherRe.exec(s);if(!c)return null;const b=c.findIndex((A,v)=>v>0&&A!==void 0),E=this.matchIndexes[b];return c.splice(0,b),Object.assign(c,E)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const c=new n;return this.rules.slice(s).forEach(([b,E])=>c.addRule(b,E)),c.compile(),this.multiRegexes[s]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,c){this.rules.push([s,c]),c.type==="begin"&&this.count++}exec(s){const c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let b=c.exec(s);if(this.resumingScanAtSamePosition()&&!(b&&b.index===this.lastIndex)){const E=this.getMatcher(0);E.lastIndex=this.lastIndex+1,b=E.exec(s)}return b&&(this.regexIndex+=b.position+1,this.regexIndex===this.count&&this.considerAll()),b}}function l(r){const s=new i;return r.contains.forEach(c=>s.addRule(c.begin,{rule:c,type:"begin"})),r.terminatorEnd&&s.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&s.addRule(r.illegal,{type:"illegal"}),s}function u(r,s){const c=r;if(r.isCompiled)return c;[Ft,Wt,nn,Xt].forEach(E=>E(r,s)),e.compilerExtensions.forEach(E=>E(r,s)),r.__beforeBegin=null,[Zt,jt,Kt].forEach(E=>E(r,s)),r.isCompiled=!0;let b=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),b=r.keywords.$pattern,delete r.keywords.$pattern),b=b||/\w+/,r.keywords&&(r.keywords=Ye(r.keywords,e.case_insensitive)),c.keywordPatternRe=t(b,!0),s&&(r.begin||(r.begin=/\B|\b/),c.beginRe=t(c.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(c.endRe=t(c.end)),c.terminatorEnd=ie(c.end)||"",r.endsWithParent&&s.terminatorEnd&&(c.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(c.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(E){return on(E==="self"?r:E)})),r.contains.forEach(function(E){u(E,c)}),r.starts&&u(r.starts,s),c.matcher=l(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=Z(e.classNameAliases||{}),u(e)}function Ve(e){return e?e.endsWithParent||Ve(e.starts):!1}function on(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return Z(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Ve(e)?Z(e,{starts:e.starts?Z(e.starts):null}):Object.isFrozen(e)?Z(e):e}var sn="11.11.0";class an extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const xe=Ge,Ue=Z,ze=Symbol("nomatch"),cn=7,Je=function(e){const t=Object.create(null),n=Object.create(null),i=[];let l=!0;const u="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:yt};function c(o){return s.noHighlightRe.test(o)}function b(o){let g=o.className+" ";g+=o.parentNode?o.parentNode.className:"";const f=s.languageDetectRe.exec(g);if(f){const m=O(f[1]);return m||(Pe(u.replace("{}",f[1])),Pe("Falling back to no-highlight mode for this block.",o)),m?f[1]:"no-highlight"}return g.split(/\s+/).find(m=>c(m)||O(m))}function E(o,g,f){let m="",w="";typeof g=="object"?(m=o,f=g.ignoreIllegals,w=g.language):(Q("10.7.0","highlight(lang, code, ...args) has been deprecated."),Q("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),w=o,m=g),f===void 0&&(f=!0);const k={code:m,language:w};J("before:highlight",k);const I=k.result?k.result:A(k.language,k.code,f);return I.code=k.code,J("after:highlight",I),I}function A(o,g,f,m){const w=Object.create(null);function k(a,d){return a.keywords[d]}function I(){if(!p.keywords){M.addText(_);return}let a=0;p.keywordPatternRe.lastIndex=0;let d=p.keywordPatternRe.exec(_),h="";for(;d;){h+=_.substring(a,d.index);const y=P.case_insensitive?d[0].toLowerCase():d[0],T=k(p,y);if(T){const[G,gt]=T;if(M.addText(h),h="",w[y]=(w[y]||0)+1,w[y]<=cn&&(ce+=gt),G.startsWith("_"))h+=d[0];else{const ft=P.classNameAliases[G]||G;B(d[0],ft)}}else h+=d[0];a=p.keywordPatternRe.lastIndex,d=p.keywordPatternRe.exec(_)}h+=_.substring(a),M.addText(h)}function W(){if(_==="")return;let a=null;if(typeof p.subLanguage=="string"){if(!t[p.subLanguage]){M.addText(_);return}a=A(p.subLanguage,_,!0,Ce[p.subLanguage]),Ce[p.subLanguage]=a._top}else a=U(_,p.subLanguage.length?p.subLanguage:null);p.relevance>0&&(ce+=a.relevance),M.__addSublanguage(a._emitter,a.language)}function C(){p.subLanguage!=null?W():I(),_=""}function B(a,d){a!==""&&(M.startScope(d),M.addText(a),M.endScope())}function ke(a,d){let h=1;const y=d.length-1;for(;h<=y;){if(!a._emit[h]){h++;continue}const T=P.classNameAliases[a[h]]||a[h],G=d[h];T?B(G,T):(_=G,I(),_=""),h++}}function Te(a,d){return a.scope&&typeof a.scope=="string"&&M.openNode(P.classNameAliases[a.scope]||a.scope),a.beginScope&&(a.beginScope._wrap?(B(_,P.classNameAliases[a.beginScope._wrap]||a.beginScope._wrap),_=""):a.beginScope._multi&&(ke(a.beginScope,d),_="")),p=Object.create(a,{parent:{value:p}}),p}function Ae(a,d,h){let y=St(a.endRe,h);if(y){if(a["on:end"]){const T=new Ie(a);a["on:end"](d,T),T.isMatchIgnored&&(y=!1)}if(y){for(;a.endsParent&&a.parent;)a=a.parent;return a}}if(a.endsWithParent)return Ae(a.parent,d,h)}function at(a){return p.matcher.regexIndex===0?(_+=a[0],1):(we=!0,0)}function ct(a){const d=a[0],h=a.rule,y=new Ie(h),T=[h.__beforeBegin,h["on:begin"]];for(const G of T)if(G&&(G(a,y),y.isMatchIgnored))return at(d);return h.skip?_+=d:(h.excludeBegin&&(_+=d),C(),!h.returnBegin&&!h.excludeBegin&&(_=d)),Te(h,a),h.returnBegin?0:d.length}function lt(a){const d=a[0],h=g.substring(a.index),y=Ae(p,a,h);if(!y)return ze;const T=p;p.endScope&&p.endScope._wrap?(C(),B(d,p.endScope._wrap)):p.endScope&&p.endScope._multi?(C(),ke(p.endScope,a)):T.skip?_+=d:(T.returnEnd||T.excludeEnd||(_+=d),C(),T.excludeEnd&&(_=d));do p.scope&&M.closeNode(),!p.skip&&!p.subLanguage&&(ce+=p.relevance),p=p.parent;while(p!==y.parent);return y.starts&&Te(y.starts,a),T.returnEnd?0:d.length}function dt(){const a=[];for(let d=p;d!==P;d=d.parent)d.scope&&a.unshift(d.scope);a.forEach(d=>M.openNode(d))}let ae={};function Re(a,d){const h=d&&d[0];if(_+=a,h==null)return C(),0;if(ae.type==="begin"&&d.type==="end"&&ae.index===d.index&&h===""){if(_+=g.slice(d.index,d.index+1),!l){const y=new Error(`0 width match regex (${o})`);throw y.languageName=o,y.badRule=ae.rule,y}return 1}if(ae=d,d.type==="begin")return ct(d);if(d.type==="illegal"&&!f){const y=new Error('Illegal lexeme "'+h+'" for mode "'+(p.scope||"")+'"');throw y.mode=p,y}else if(d.type==="end"){const y=lt(d);if(y!==ze)return y}if(d.type==="illegal"&&h==="")return _+=` +`,1;if(_e>1e5&&_e>d.index*3)throw new Error("potential infinite loop, way more iterations than matches");return _+=h,h.length}const P=O(o);if(!P)throw X(u.replace("{}",o)),new Error('Unknown language: "'+o+'"');const ut=rn(P);let ye="",p=m||ut;const Ce={},M=new s.__emitter(s);dt();let _="",ce=0,K=0,_e=0,we=!1;try{if(P.__emitTokens)P.__emitTokens(g,M);else{for(p.matcher.considerAll();;){_e++,we?we=!1:p.matcher.considerAll(),p.matcher.lastIndex=K;const a=p.matcher.exec(g);if(!a)break;const d=g.substring(K,a.index),h=Re(d,a);K=a.index+h}Re(g.substring(K))}return M.finalize(),ye=M.toHTML(),{language:o,value:ye,relevance:ce,illegal:!1,_emitter:M,_top:p}}catch(a){if(a.message&&a.message.includes("Illegal"))return{language:o,value:xe(g),illegal:!0,relevance:0,_illegalBy:{message:a.message,index:K,context:g.slice(K-100,K+100),mode:a.mode,resultSoFar:ye},_emitter:M};if(l)return{language:o,value:xe(g),illegal:!1,relevance:0,errorRaised:a,_emitter:M,_top:p};throw a}}function v(o){const g={value:xe(o),illegal:!1,relevance:0,_top:r,_emitter:new s.__emitter(s)};return g._emitter.addText(o),g}function U(o,g){g=g||s.languages||Object.keys(t);const f=v(o),m=g.filter(O).filter(V).map(C=>A(C,o,!1));m.unshift(f);const w=m.sort((C,B)=>{if(C.relevance!==B.relevance)return B.relevance-C.relevance;if(C.language&&B.language){if(O(C.language).supersetOf===B.language)return 1;if(O(B.language).supersetOf===C.language)return-1}return 0}),[k,I]=w,W=k;return W.secondBest=I,W}function x(o,g,f){const m=g&&n[g]||f;o.classList.add("hljs"),o.classList.add(`language-${m}`)}function N(o){let g=null;const f=b(o);if(c(f))return;if(J("before:highlightElement",{el:o,language:f}),o.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",o);return}if(o.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(o)),s.throwUnescapedHTML))throw new an("One of your code blocks includes unescaped HTML.",o.innerHTML);g=o;const m=g.textContent,w=f?E(m,{language:f,ignoreIllegals:!0}):U(m);o.innerHTML=w.value,o.dataset.highlighted="yes",x(o,f,w.language),o.result={language:w.language,re:w.relevance,relevance:w.relevance},w.secondBest&&(o.secondBest={language:w.secondBest.language,relevance:w.secondBest.relevance}),J("after:highlightElement",{el:o,result:w,text:m})}function S(o){s=Ue(s,o)}const q=()=>{L(),Q("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function z(){L(),Q("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let $=!1;function L(){function o(){L()}if(document.readyState==="loading"){$||window.addEventListener("DOMContentLoaded",o,!1),$=!0;return}document.querySelectorAll(s.cssSelector).forEach(N)}function H(o,g){let f=null;try{f=g(e)}catch(m){if(X("Language definition for '{}' could not be registered.".replace("{}",o)),l)X(m);else throw m;f=r}f.name||(f.name=o),t[o]=f,f.rawDefinition=g.bind(null,e),f.aliases&&R(f.aliases,{languageName:o})}function D(o){delete t[o];for(const g of Object.keys(n))n[g]===o&&delete n[g]}function F(){return Object.keys(t)}function O(o){return o=(o||"").toLowerCase(),t[o]||t[n[o]]}function R(o,{languageName:g}){typeof o=="string"&&(o=[o]),o.forEach(f=>{n[f.toLowerCase()]=g})}function V(o){const g=O(o);return g&&!g.disableAutodetect}function he(o){o["before:highlightBlock"]&&!o["before:highlightElement"]&&(o["before:highlightElement"]=g=>{o["before:highlightBlock"](Object.assign({block:g.el},g))}),o["after:highlightBlock"]&&!o["after:highlightElement"]&&(o["after:highlightElement"]=g=>{o["after:highlightBlock"](Object.assign({block:g.el},g))})}function be(o){he(o),i.push(o)}function me(o){const g=i.indexOf(o);g!==-1&&i.splice(g,1)}function J(o,g){const f=o;i.forEach(function(m){m[f]&&m[f](g)})}function Ee(o){return Q("10.7.0","highlightBlock will be removed entirely in v12.0"),Q("10.7.0","Please use highlightElement now."),N(o)}Object.assign(e,{highlight:E,highlightAuto:U,highlightAll:L,highlightElement:N,highlightBlock:Ee,configure:S,initHighlighting:q,initHighlightingOnLoad:z,registerLanguage:H,unregisterLanguage:D,listLanguages:F,getLanguage:O,registerAliases:R,autoDetection:V,inherit:Ue,addPlugin:be,removePlugin:me}),e.debugMode=function(){l=!1},e.safeMode=function(){l=!0},e.versionString=sn,e.regex={concat:Y,lookahead:Fe,either:Ne,optional:wt,anyNumberOfTimes:_t};for(const o in le)typeof le[o]=="object"&&He(le[o]);return Object.assign(e,le),e},te=Je({});te.newInstance=()=>Je({});var ln=te;te.HighlightJS=te;te.default=te;const oe=ht(ln),$e="[A-Za-z$_][0-9A-Za-z$_]*",dn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],un=["true","false","null","undefined","NaN","Infinity"],Qe=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],et=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],tt=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],gn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],fn=[].concat(tt,Qe,et);function pn(e){const t=e.regex,n=(f,{after:m})=>{const w="",end:""},u=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(f,m)=>{const w=f[0].length+f.index,k=f.input[w];if(k==="<"||k===","){m.ignoreMatch();return}k===">"&&(n(f,{after:w})||m.ignoreMatch());let I;const W=f.input.substring(w);if(I=W.match(/^\s*=/)){m.ignoreMatch();return}if((I=W.match(/^\s+extends\s+/))&&I.index===0){m.ignoreMatch();return}}},s={$pattern:$e,keyword:dn,literal:un,built_in:fn,"variable.language":gn},c="[0-9](_?[0-9])*",b=`\\.(${c})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",A={className:"number",variants:[{begin:`(\\b(${E})((${b})|\\.)?|(${b}))[eE][+-]?(${c})\\b`},{begin:`\\b(${E})\\b((${b})\\b|\\.)?|(${b})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},v={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},U={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,v],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,v],subLanguage:"css"}},N={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,v],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,v]},z={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},$=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,U,x,N,S,{match:/\$\d+/},A];v.contains=$.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat($)});const L=[].concat(z,v.contains),H=L.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(L)}]),D={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:H},F={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,t.concat(i,"(",t.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},O={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Qe,...et]}},R={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},V={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[D],illegal:/%/},he={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function be(f){return t.concat("(?!",f.join("|"),")")}const me={match:t.concat(/\b/,be([...tt,"super","import"].map(f=>`${f}\\s*\\(`)),i,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},J={begin:t.concat(/\./,t.lookahead(t.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ee={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},D]},o="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(o)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[D]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:H,CLASS_REFERENCE:O},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),R,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,U,x,N,S,z,{match:/\$\d+/},A,O,{scope:"attr",match:i+t.lookahead(":"),relevance:0},g,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[z,e.REGEXP_MODE,{className:"function",begin:o,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:H}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:u},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},V,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[D,e.inherit(e.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},J,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[D]},me,he,F,Ee,{match:/\$[(.]/}]}}const hn=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),bn=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],mn=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],En=[...bn,...mn],yn=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),_n=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),wn=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),xn=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Sn(e){const t=e.regex,n=hn(e),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l="and or not only",u=/@-?\w[\w]*(-\w+)*/,r="[a-zA-Z-][a-zA-Z0-9_-]*",s=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,i,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+r,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+_n.join("|")+")"},{begin:":(:)?("+wn.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+xn.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...s,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...s,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:u},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:l,attribute:yn.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...s,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+En.join("|")+")\\b"}]}}function Nn(e){const t={variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]},l={begin:/\{/,end:/\}/,contains:i.contains},u={className:"string",begin:"'\\\\?.",end:"'",illegal:"."};return{name:"Elm",keywords:["let","in","if","then","else","case","of","where","module","import","exposing","type","alias","as","infix","infixl","infixr","port","effect","command","subscription"],contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,i,l,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},u,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}function Mn(e){const t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),i=/[\p{L}0-9._:-]+/u,l={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},u={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(u,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:"string"}),c=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),b={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[u,c,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[u,r,c,s]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},l,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[b],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[b],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:b}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}/*! * Project : simply-countdown * Date : 06/12/2024 * License : MIT @@ -9,4 +9,5 @@ https://github.com/highlightjs/highlight.js/issues/2277`),w=o,E=u),f===void 0&&( * Contributors : * - Justin Beasley * - Nathan Smith -*/let Je=function(e){let t,n=e||{};for(let i=1;ie!==null&&Symbol.iterator in Object(e),ae=(e,t,n)=>{let i=document.createElement("div"),l=document.createElement("span"),g=document.createElement("span"),r=document.createElement("div");return r.appendChild(l),r.appendChild(g),i.appendChild(r),i.classList.add(t.sectionClass),i.classList.add(n),l.classList.add(t.amountClass),g.classList.add(t.wordClass),e.appendChild(i),{full:i,amount:l,word:g}},yn=(e,t)=>{let n;return e.inline?(n=document.createElement("span"),n.classList.add(e.inlineClass),t.appendChild(n),{days:n,hours:n,minutes:n,seconds:n}):{days:ae(t,e,"simply-days-section"),hours:ae(t,e,"simply-hours-section"),minutes:ae(t,e,"simply-minutes-section"),seconds:ae(t,e,"simply-seconds-section")}};const q=function(e,t){const n=Object.getPrototypeOf(e);let i=Je({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(S,k)=>k>1?S+"s":S,root:"day"},hours:{lambda:(S,k)=>k>1?S+"s":S,root:"hour"},minutes:{lambda:(S,k)=>k>1?S+"s":S,root:"minute"},seconds:{lambda:(S,k)=>k>1?S+"s":S,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},t),l,g,r,s,c,b,m,O,N;n===String.prototype?N=document.querySelectorAll(e):N=e,i.enableUtc?g=new Date(Date.UTC(i.year,i.month-1,i.day,i.hours,i.minutes,i.seconds)):g=new Date(i.year,i.month-1,i.day,i.hours,i.minutes,i.seconds);let D=S=>{let k=S,x=yn(i,k),F;F=function(){let B,U,C,P,z=()=>{c=parseInt(s/86400,10),s%=86400,b=parseInt(s/3600,10),s%=3600,m=parseInt(s/60,10),O=parseInt(s%60,10)};i.enableUtc?(r=new Date,r=new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds()))):r=new Date,s=Math.floor((g-r.getTime())/1e3),s>0?z():i.countUp?(s=(r.getTime()-g)/1e3,z()):(c=0,b=0,m=0,O=0,window.clearInterval(l),i.onEnd());let Z=(R,V)=>R.hasOwnProperty("lambda")?R.lambda(R.root,V):R.root,M=i.words;if(B=Z(M.days,c),U=Z(M.hours,b),C=Z(M.minutes,m),P=Z(M.seconds,O),i.inline){let R="";i.removeZeroUnits&&c===0||(R+=`${c} ${B}${i.inlineSeparator}`),i.removeZeroUnits&&c===0&&b===0||(R+=`${b} ${U}${i.inlineSeparator}`),i.removeZeroUnits&&c===0&&b===0&&m===0||(R+=`${m} ${C}${i.inlineSeparator}`),R+=`${O} ${P}`,k.innerHTML=R.replace(/, $/,"")}else i.removeZeroUnits&&c===0?x.days.full.style.display="none":(x.days.amount.textContent=(i.zeroPad&&c.toString().length<2?"0":"")+c,x.days.word.textContent=B,x.days.full.style.display=""),i.removeZeroUnits&&c===0&&b===0?x.hours.full.style.display="none":(x.hours.amount.textContent=(i.zeroPad&&b.toString().length<2?"0":"")+b,x.hours.word.textContent=U,x.hours.full.style.display=""),i.removeZeroUnits&&c===0&&b===0&&m===0?x.minutes.full.style.display="none":(x.minutes.amount.textContent=(i.zeroPad&&m.toString().length<2?"0":"")+m,x.minutes.word.textContent=C,x.minutes.full.style.display=""),x.seconds.amount.textContent=(i.zeroPad&&O.toString().length<2?"0":"")+O,x.seconds.word.textContent=P,x.seconds.full.style.display=""},F(),l=window.setInterval(F,i.refresh)};En(N)?Array.prototype.forEach.call(N,S=>{D(S)}):D(N)};typeof ce<"u"&&ce.exports?ce.exports={simplyCountdown:q}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:q}});ie.registerLanguage("javascript",sn);ie.registerLanguage("elm",bn);ie.registerLanguage("css",hn);ie.registerLanguage("bash",mn);ie.highlightAll();document.querySelectorAll(".package-manager-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.manager;document.querySelectorAll(".package-manager-btn").forEach(n=>{n.classList.toggle("active",n===e)}),document.querySelectorAll(".package-manager-content").forEach(n=>{n.classList.toggle("active",n.dataset.manager===t)})})});document.querySelectorAll(".copy-button").forEach(e=>{e.addEventListener("click",async()=>{const n=e.closest(".relative").querySelector("pre.active code").textContent;try{await navigator.clipboard.writeText(n),e.dataset.copied=!0,setTimeout(()=>{delete e.dataset.copied},2e3)}catch(i){console.error("Failed to copy:",i)}})});const ue=new Date().getFullYear()+1;q(".simply-countdown-one",{year:ue,month:6,day:28});q(".simply-countdown-two",{year:ue,month:6,day:28,zeroPad:!1});q(".simply-countdown-inline",{year:ue,month:6,day:28,inline:!0});q(".simply-countdown-countup",{year:2023,month:1,day:1,countUp:!0});q("#simply-countdown-losange",{year:ue,month:6,day:28})});export default _n(); +*/let nt=function(e){let t,n=e||{};for(let i=1;ie!==null&&Symbol.iterator in Object(e),de=(e,t,n)=>{let i=document.createElement("div"),l=document.createElement("span"),u=document.createElement("span"),r=document.createElement("div");return r.appendChild(l),r.appendChild(u),i.appendChild(r),i.classList.add(t.sectionClass),i.classList.add(n),l.classList.add(t.amountClass),u.classList.add(t.wordClass),e.appendChild(i),{full:i,amount:l,word:u}},On=(e,t)=>{let n;return e.inline?(n=document.createElement("span"),n.classList.add(e.inlineClass),t.appendChild(n),{days:n,hours:n,minutes:n,seconds:n}):{days:de(t,e,"simply-days-section"),hours:de(t,e,"simply-hours-section"),minutes:de(t,e,"simply-minutes-section"),seconds:de(t,e,"simply-seconds-section")}};const j=function(e,t){const n=Object.getPrototypeOf(e);let i=nt({year:2015,month:6,day:28,hours:0,minutes:0,seconds:0,words:{days:{lambda:(x,N)=>N>1?x+"s":x,root:"day"},hours:{lambda:(x,N)=>N>1?x+"s":x,root:"hour"},minutes:{lambda:(x,N)=>N>1?x+"s":x,root:"minute"},seconds:{lambda:(x,N)=>N>1?x+"s":x,root:"second"}},plural:!0,inline:!1,inlineSeparator:", ",enableUtc:!1,onEnd:()=>{},refresh:1e3,inlineClass:"simply-countdown-inline",sectionClass:"simply-section",amountClass:"simply-amount",wordClass:"simply-word",zeroPad:!1,removeZeroUnits:!1,countUp:!1},t),l,u,r,s,c,b,E,A,v;n===String.prototype?v=document.querySelectorAll(e):v=e,i.enableUtc?u=new Date(Date.UTC(i.year,i.month-1,i.day,i.hours,i.minutes,i.seconds)):u=new Date(i.year,i.month-1,i.day,i.hours,i.minutes,i.seconds);let U=x=>{let N=x,S=On(i,N),q;q=function(){let z,$,L,H,D=()=>{c=parseInt(s/86400,10),s%=86400,b=parseInt(s/3600,10),s%=3600,E=parseInt(s/60,10),A=parseInt(s%60,10)};i.enableUtc?(r=new Date,r=new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds()))):r=new Date,s=Math.floor((u-r.getTime())/1e3),s>0?D():i.countUp?(s=(r.getTime()-u)/1e3,D()):(c=0,b=0,E=0,A=0,window.clearInterval(l),i.onEnd());let F=(R,V)=>R.hasOwnProperty("lambda")?R.lambda(R.root,V):R.root,O=i.words;if(z=F(O.days,c),$=F(O.hours,b),L=F(O.minutes,E),H=F(O.seconds,A),i.inline){let R="";i.removeZeroUnits&&c===0||(R+=`${c} ${z}${i.inlineSeparator}`),i.removeZeroUnits&&c===0&&b===0||(R+=`${b} ${$}${i.inlineSeparator}`),i.removeZeroUnits&&c===0&&b===0&&E===0||(R+=`${E} ${L}${i.inlineSeparator}`),R+=`${A} ${H}`,N.innerHTML=R.replace(/, $/,"")}else i.removeZeroUnits&&c===0?S.days.full.style.display="none":(S.days.amount.textContent=(i.zeroPad&&c.toString().length<2?"0":"")+c,S.days.word.textContent=z,S.days.full.style.display=""),i.removeZeroUnits&&c===0&&b===0?S.hours.full.style.display="none":(S.hours.amount.textContent=(i.zeroPad&&b.toString().length<2?"0":"")+b,S.hours.word.textContent=$,S.hours.full.style.display=""),i.removeZeroUnits&&c===0&&b===0&&E===0?S.minutes.full.style.display="none":(S.minutes.amount.textContent=(i.zeroPad&&E.toString().length<2?"0":"")+E,S.minutes.word.textContent=L,S.minutes.full.style.display=""),S.seconds.amount.textContent=(i.zeroPad&&A.toString().length<2?"0":"")+A,S.seconds.word.textContent=H,S.seconds.full.style.display=""},q(),l=window.setInterval(q,i.refresh)};vn(v)?Array.prototype.forEach.call(v,x=>{U(x)}):U(v)};typeof ge<"u"&&ge.exports?ge.exports={simplyCountdown:j}:typeof define=="function"&&define.amd&&define([],function(){return{simplyCountdown:j}});oe.registerLanguage("javascript",pn);oe.registerLanguage("css",Sn);oe.registerLanguage("elm",Nn);oe.registerLanguage("html",Mn);oe.highlightAll();document.querySelectorAll(".package-manager-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.manager;document.querySelectorAll(".package-manager-btn").forEach(n=>{n.classList.toggle("active",n===e)}),document.querySelectorAll(".package-manager-content").forEach(n=>{n.classList.toggle("active",n.dataset.manager===t)})})});document.querySelectorAll(".copy-button").forEach(e=>{e.addEventListener("click",async()=>{const n=e.closest(".relative").querySelector("pre.active code").textContent;try{await navigator.clipboard.writeText(n),e.dataset.copied=!0,setTimeout(()=>{delete e.dataset.copied},2e3)}catch(i){console.error("Failed to copy:",i)}})});const ee=document.createElement("div");ee.className="sc-doc-block-glow";document.body.appendChild(ee);let ue=null,ne=null,it=0,rt=0;function ot(){ue&&(ee.style.left=`${it}px`,ee.style.top=`${rt}px`,ee.style.opacity="1",ne=requestAnimationFrame(ot))}document.querySelectorAll(".sc-doc-block").forEach(e=>{e.addEventListener("mousemove",t=>{it=t.clientX,rt=t.clientY,ue||(ue=e,ne=requestAnimationFrame(ot))}),e.addEventListener("mouseleave",()=>{ue=null,ne&&(cancelAnimationFrame(ne),ne=null),ee.style.opacity="0"})});const se=new Date,st=se.getFullYear()+1,Oe=se.getMonth()+1;j(".simply-countdown-one",{year:se.getFullYear(),month:Oe,day:28,zeroPad:!0});j(".simply-countdown-two",{year:se.getFullYear(),month:Oe,day:28,zeroPad:!1});j(".simply-countdown-inline",{year:st,month:6,day:28,inline:!0});j(".simply-countdown-countup",{year:2023,month:1,day:1,countUp:!0,removeZeroUnits:!0});j("#simply-countdown-losange",{year:st,month:6,day:28});j(".simply-countdown-circle-demo",{year:se.getFullYear(),month:Oe,day:28,zeroPad:!0})});export default kn(); +//# sourceMappingURL=main.min.js.map diff --git a/docs/dist/assets/main.min.js.map b/docs/dist/assets/main.min.js.map new file mode 100644 index 0000000..b5a0c74 --- /dev/null +++ b/docs/dist/assets/main.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.min.js","sources":["../../../node_modules/highlight.js/lib/core.js","../../../node_modules/highlight.js/es/languages/javascript.js","../../../node_modules/highlight.js/es/languages/css.js","../../../node_modules/highlight.js/es/languages/elm.js","../../../node_modules/highlight.js/es/languages/xml.js","../../../src/core/simplyCountdown.js","../../src/main.js"],"sourcesContent":["/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '';\n\n/**\n * Determines if a node needs to be wrapped in \n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += ``;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record | Array} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record */\n const emit = {};\n /** @type Record */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.0\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record} */\n const languages = Object.create(null);\n /** @type {Record} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \" {\n const tag = \"',\n end: ''\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // ``\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // (key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: CSS\nCategory: common, css, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/\n\n\n/** @type LanguageFn */\nfunction css(hljs) {\n const regex = hljs.regex;\n const modes = MODES(hljs);\n const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n\n return {\n name: 'CSS',\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: { keyframePosition: \"from to\" },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\" },\n contains: [\n modes.BLOCK_COMMENT,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.' + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n variants: [\n { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' },\n { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n // attribute values\n {\n begin: /:/,\n end: /[;}{]/,\n contains: [\n modes.BLOCK_COMMENT,\n modes.HEXCOLOR,\n modes.IMPORTANT,\n modes.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0, // from keywords\n keywords: { built_in: \"url data-uri\" },\n contains: [\n ...STRINGS,\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n },\n {\n begin: regex.lookahead(/@/),\n end: '[{;]',\n relevance: 0,\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n modes.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b'\n }\n ]\n };\n}\n\nexport { css as default };\n","/*\nLanguage: Elm\nAuthor: Janis Voigtlaender \nWebsite: https://elm-lang.org\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction elm(hljs) {\n const COMMENT = { variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n /\\{-/,\n /-\\}/,\n { contains: [ 'self' ] }\n )\n ] };\n\n const CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)',\n illegal: '\"',\n contains: [\n {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'\n },\n COMMENT\n ]\n };\n\n const RECORD = {\n begin: /\\{/,\n end: /\\}/,\n contains: LIST.contains\n };\n\n const CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.',\n end: '\\'',\n illegal: '.'\n };\n\n const KEYWORDS = [\n \"let\",\n \"in\",\n \"if\",\n \"then\",\n \"else\",\n \"case\",\n \"of\",\n \"where\",\n \"module\",\n \"import\",\n \"exposing\",\n \"type\",\n \"alias\",\n \"as\",\n \"infix\",\n \"infixl\",\n \"infixr\",\n \"port\",\n \"effect\",\n \"command\",\n \"subscription\"\n ];\n\n return {\n name: 'Elm',\n keywords: KEYWORDS,\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module',\n end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import',\n end: '$',\n keywords: 'import as exposing',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type',\n end: '$',\n keywords: 'type alias',\n contains: [\n CONSTRUCTOR,\n LIST,\n RECORD,\n COMMENT\n ]\n },\n {\n beginKeywords: 'infix infixl infixr',\n end: '$',\n contains: [\n hljs.C_NUMBER_MODE,\n COMMENT\n ]\n },\n {\n begin: 'port',\n end: '$',\n keywords: 'port',\n contains: [ COMMENT ]\n },\n\n // Literals and names.\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, { begin: '^[_a-z][\\\\w\\']*' }),\n COMMENT,\n\n { // No markup, relevance booster\n begin: '->|<-' }\n ],\n illegal: /;/\n };\n}\n\nexport { elm as default };\n","/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /`]+/ }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: 'meta',\n begin: //,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: //,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n //,\n { relevance: 10 }\n ),\n {\n begin: //,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/,\n }\n ]\n\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n ')/,\n end: />/,\n keywords: { name: 'style' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the + + +

SimplyCountdown.js - ${type} Test

+
+ +
+ ${content} + +`; +}; + +// Test ES Module natif +const esTest = commonHtml('ES Module', ` + +`); + +// Test UMD Global +const umdGlobalTest = commonHtml('UMD (Global)', ` + + +`); + +// Test UMD avec AMD (RequireJS) +const umdAmdTest = commonHtml('UMD (AMD/RequireJS)', ` + + +`); + +// Test CommonJS (Node.js) +const commonJsTest = commonHtml('CommonJS (Node.js-like)', ` + + + +`); + +// Test Dynamic Loading +const dynamicLoadingTest = commonHtml('Dynamic Loading', ` + +`); + +// Générer tous les fichiers de test +const tests = { + 'index.es.html': esTest, + 'index.umd-global.html': umdGlobalTest, + 'index.umd-amd.html': umdAmdTest, + 'index.umd-commonjs.html': commonJsTest, + 'index.umd-dynamic.html': dynamicLoadingTest +}; + +// Créer le dossier dist_tests s'il n'existe pas +const testDir = path.join(__dirname, '..', 'dist_tests'); +if (!fs.existsSync(testDir)) { + fs.mkdirSync(testDir); +} + +// Générer tous les fichiers +Object.entries(tests).forEach(([filename, content]) => { + fs.writeFileSync( + path.join(testDir, filename), + content + ); +}); diff --git a/scripts/server.test.js b/scripts/server.test.js new file mode 100644 index 0000000..505c989 --- /dev/null +++ b/scripts/server.test.js @@ -0,0 +1,35 @@ +import { createServer } from 'http'; +import handler from 'serve-handler'; +import { spawn } from 'child_process'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const PORT = 5173; + +const server = createServer((request, response) => { + return handler(request, response, { + public: path.join(__dirname, '..'), + cleanUrls: false + }); +}); + +server.listen(PORT, () => { + console.log(`Server running at http://localhost:${PORT}/dist_tests/index.es.html`); + + const openCommand = process.platform === 'win32' ? 'start' : + process.platform === 'darwin' ? 'open' : 'xdg-open'; + + spawn(openCommand, [`http://localhost:${PORT}/dist_tests/index.es.html`], { + stdio: 'ignore', + detached: true + }).unref(); +}); + +// Handle CTRL+C to stop server +process.on('SIGINT', () => { + server.close(); + process.exit(); +}); diff --git a/src/core/simplyCountdown.ts b/src/core/simplyCountdown.ts index fffe147..a8109cc 100644 --- a/src/core/simplyCountdown.ts +++ b/src/core/simplyCountdown.ts @@ -222,7 +222,7 @@ const createCountdownInstance = (targetElement: HTMLElement, parameters: Countdo } }; -export const simplyCountdown = ( +export default ( element: CountdownSelector, args: Partial = defaultParams ): void => { @@ -236,15 +236,4 @@ export const simplyCountdown = ( } else { createCountdownInstance(element, parameters); } -}; - -// UMD export -declare global { - interface Window { - simplyCountdown: typeof simplyCountdown; - } -} - -if (typeof window !== 'undefined') { - window.simplyCountdown = simplyCountdown; -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/core/simplyCountdown.umd.ts b/src/core/simplyCountdown.umd.ts new file mode 100644 index 0000000..bebc0c3 --- /dev/null +++ b/src/core/simplyCountdown.umd.ts @@ -0,0 +1,18 @@ +import simplyCountdownCore from './simplyCountdown'; + +// @ts-ignore +if (typeof define === 'function' && define.amd) { + // AMD + define(function() { + return simplyCountdownCore; + }); +} else if (typeof module === 'object' && module.exports) { + // Node + module.exports = simplyCountdownCore; +} else { + // Browser + (window as any).simplyCountdown = simplyCountdownCore; +} + +// Export pour Vite/Rollup +export default simplyCountdownCore; diff --git a/test/node-test.mjs b/test/node-test.mjs new file mode 100644 index 0000000..6ca0230 --- /dev/null +++ b/test/node-test.mjs @@ -0,0 +1,72 @@ +// CommonJS test for SimplyCountdown + +// Mock DOM elements since we're in Node.js +class MockElement { + constructor() { + this.className = ''; + this.children = []; + this.style = {}; + } + + appendChild(child) { + this.children.push(child); + return child; + } +} + +// Mock window and document +global.window = { + addEventListener: () => {} +}; + +global.document = { + createElement: (tag) => new MockElement(), + querySelector: (selector) => new MockElement() +}; + +// Test the countdown +console.log('Testing SimplyCountdown in Node.js environment...'); + +import('../dist/simplyCountdown.umd.js').then(module => { + const simplyCountdown = module.default; + + try { + // Initialize countdown + simplyCountdown('#mycountdown', { + year: 2025, + month: 12, + day: 25, + onEnd: () => { + console.log('Countdown ended!'); + } + }); + + console.log('✅ Countdown initialized successfully'); + + // Test that simplyCountdown is a function + if (typeof simplyCountdown !== 'function') { + throw new Error('simplyCountdown is not a function'); + } + console.log('✅ simplyCountdown is a function'); + + // Test with invalid parameters + try { + simplyCountdown('#mycountdown', { + year: 'invalid', + month: 13, + day: 32 + }); + console.log('❌ Should have thrown error for invalid parameters'); + } catch (e) { + console.log('✅ Correctly handles invalid parameters'); + } + + console.log('All tests completed successfully!'); + } catch (error) { + console.error('❌ Test failed:', error); + process.exit(1); + } +}).catch(error => { + console.error('❌ Failed to load module:', error); + process.exit(1); +}); diff --git a/vite.config.ts b/vite.config.ts index 3960013..033f9c7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,21 +1,52 @@ import { defineConfig } from 'vite'; import { resolve } from 'path'; -// Configuration pour le build de la librairie -const libraryConfig = defineConfig({ +// Configuration commune +const commonConfig = { + sourcemap: true, + minify: 'terser', + terserOptions: { + compress: { + drop_console: true + } + } +}; + +// Configuration pour le build ES +const esConfig = defineConfig({ build: { + outDir: 'dist', + emptyOutDir: true, + ...commonConfig, lib: { entry: resolve(__dirname, 'src/core/simplyCountdown.ts'), - name: 'simplyCountdown', - formats: ['es', 'umd', 'iife'], - fileName: (format) => `simplyCountdown.${format}.js` + formats: ['es'], + fileName: () => 'simplyCountdown.js' }, - sourcemap: true, - minify: 'terser', - terserOptions: { - compress: { - drop_console: true + rollupOptions: { + output: { + assetFileNames: (assetInfo) => { + if (assetInfo.name === 'style.css') { + return 'themes/[name][extname]'; + } + return '[name][extname]'; + } } + } + } +}); + +// Configuration pour le build UMD +const umdConfig = defineConfig({ + build: { + outDir: 'dist', + emptyOutDir: false, + ...commonConfig, + lib: { + entry: resolve(__dirname, 'src/core/simplyCountdown.umd.ts'), + name: 'simplyCountdown', + formats: ['umd'], + fileName: () => 'simplyCountdown.umd.js' }, rollupOptions: { output: { @@ -24,6 +55,11 @@ const libraryConfig = defineConfig({ return 'themes/[name][extname]'; } return '[name][extname]'; + }, + format: 'umd', + name: 'simplyCountdown', + amd: { + id: 'simplyCountdown' } } } @@ -55,5 +91,8 @@ export default ({ mode }: { mode?: string }) => { if (mode === 'docs') { return docsConfig; } - return libraryConfig; + if (mode === 'umd') { + return umdConfig; + } + return esConfig; }; From 7122e3196eeef7a905c5e68317f4422a5deac727 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Thu, 26 Dec 2024 13:34:59 +0100 Subject: [PATCH 21/75] typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a17b01f..e832fbe 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ npm install simplycountdown # or yarn add simplycountdown # or -bun add simplycountdown +bun install simplycountdown ``` ## Basic Usage @@ -228,7 +228,7 @@ simplyCountdown(document.querySelectorAll('.countdown')); ## Development Commands ### Main Commands -- `npm run dev`: Start development server for the documentation site (port 3000) +- `npm run dev`: Start development server for the documentation site & Core library (port 3000) - `npm run build`: Build everything (library, themes, and documentation) - `npm run preview`: Preview the documentation site From fbce03f4945fc3767092d413ef63e4ec56bf1b5f Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Thu, 26 Dec 2024 13:36:09 +0100 Subject: [PATCH 22/75] typo again :party: --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e832fbe..4902d44 100644 --- a/README.md +++ b/README.md @@ -264,4 +264,4 @@ The library supports all modern browsers (Chrome, Firefox, Safari, Edge) and IE1 ## License -MIT © 2014-present - Vincent Loy +MIT © 2015-present - Vincent Loy From 376395d3df95d03488be646121b2e2d9a991d539 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Thu, 26 Dec 2024 15:54:23 +0100 Subject: [PATCH 23/75] cleanup package.json and fix some typo --- README.md | 2 +- bun.lockb | Bin 122622 -> 85240 bytes package.json | 10 ++--- src/core/simplyCountdown.umd.ts | 2 +- test/node-test.mjs | 72 -------------------------------- 5 files changed, 5 insertions(+), 81 deletions(-) delete mode 100644 test/node-test.mjs diff --git a/README.md b/README.md index 4902d44..e879535 100644 --- a/README.md +++ b/README.md @@ -264,4 +264,4 @@ The library supports all modern browsers (Chrome, Firefox, Safari, Edge) and IE1 ## License -MIT © 2015-present - Vincent Loy +MIT © 2015-present - Vincent Loy-Serre diff --git a/bun.lockb b/bun.lockb index 6661d87854a1c786da07b82831e95b3539e9f67c..8a6f587a3c9838ce173e35ed4d6d9d211458d81e 100755 GIT binary patch delta 16253 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 delta 38594 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 diff --git a/package.json b/package.json index a1e0b96..31b1267 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,11 @@ "defaults" ], "main": "dist/simplyCountdown.umd.js", - "module": "./dist/simplyCountdown.es.js", + "module": "./dist/simplyCountdown.js", "types": "./dist/types/simplyCountdown.d.ts", "exports": { ".": { - "import": "./dist/simplyCountdown.es.js", + "import": "./dist/simplyCountdown.js", "require": "./dist/simplyCountdown.umd.js", "types": "./dist/types/simplyCountdown.d.ts" } @@ -60,21 +60,17 @@ "@iconify-json/vscode-icons": "^1.1.33", "@iconify/tailwind": "^0.1.4", "@tailwindcss/typography": "^0.5.10", - "@types/jsdom": "^21.1.6", "@vitejs/plugin-vue": "^5.0.0", "autoprefixer": "^10.4.16", "clean-css": "^5.3.3", "fs-extra": "^11.2.0", "highlight.js": "^11.11.0", - "jsdom": "^23.0.1", "postcss": "^8.4.32", "rimraf": "^6.0.1", "serve-handler": "^6.1.6", "tailwindcss": "^3.4.0", "terser": "^5.26.0", "typescript": "^5.3.3", - "vite": "^5.0.0", - "vitest": "^1.1.0", - "vue": "^3.4.0" + "vite": "^5.0.0" } } diff --git a/src/core/simplyCountdown.umd.ts b/src/core/simplyCountdown.umd.ts index bebc0c3..060c636 100644 --- a/src/core/simplyCountdown.umd.ts +++ b/src/core/simplyCountdown.umd.ts @@ -14,5 +14,5 @@ if (typeof define === 'function' && define.amd) { (window as any).simplyCountdown = simplyCountdownCore; } -// Export pour Vite/Rollup +// Export for Vite/Rollup export default simplyCountdownCore; diff --git a/test/node-test.mjs b/test/node-test.mjs deleted file mode 100644 index 6ca0230..0000000 --- a/test/node-test.mjs +++ /dev/null @@ -1,72 +0,0 @@ -// CommonJS test for SimplyCountdown - -// Mock DOM elements since we're in Node.js -class MockElement { - constructor() { - this.className = ''; - this.children = []; - this.style = {}; - } - - appendChild(child) { - this.children.push(child); - return child; - } -} - -// Mock window and document -global.window = { - addEventListener: () => {} -}; - -global.document = { - createElement: (tag) => new MockElement(), - querySelector: (selector) => new MockElement() -}; - -// Test the countdown -console.log('Testing SimplyCountdown in Node.js environment...'); - -import('../dist/simplyCountdown.umd.js').then(module => { - const simplyCountdown = module.default; - - try { - // Initialize countdown - simplyCountdown('#mycountdown', { - year: 2025, - month: 12, - day: 25, - onEnd: () => { - console.log('Countdown ended!'); - } - }); - - console.log('✅ Countdown initialized successfully'); - - // Test that simplyCountdown is a function - if (typeof simplyCountdown !== 'function') { - throw new Error('simplyCountdown is not a function'); - } - console.log('✅ simplyCountdown is a function'); - - // Test with invalid parameters - try { - simplyCountdown('#mycountdown', { - year: 'invalid', - month: 13, - day: 32 - }); - console.log('❌ Should have thrown error for invalid parameters'); - } catch (e) { - console.log('✅ Correctly handles invalid parameters'); - } - - console.log('All tests completed successfully!'); - } catch (error) { - console.error('❌ Test failed:', error); - process.exit(1); - } -}).catch(error => { - console.error('❌ Failed to load module:', error); - process.exit(1); -}); From 4539fff11894d5566320ec82d207c38fa8248ed9 Mon Sep 17 00:00:00 2001 From: Vincent Loy Date: Thu, 26 Dec 2024 16:11:14 +0100 Subject: [PATCH 24/75] remove unused package --- bun.lockb | Bin 85240 -> 77529 bytes package.json | 1 - 2 files changed, 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 8a6f587a3c9838ce173e35ed4d6d9d211458d81e..5842ba28b5d98653740c2674ae7c1da73ecebbd0 100755 GIT binary patch delta 11075 zcmeHNd0bW1+TQEPLAJ)A03( z63&*IT^lSa=TFTc%`EAfHylb!{SXw#98&N;?;gO$`}^I#@7{k}`s`=D?|Rp}=DpTo zubYL|k`o^D?9DHJ@bb;Ao2CW45`1g^m*=wmPOm!I?d}gvcJEE9|D1D??VJB(v%Ce+cuP|LEN~t07}pqg=5R^M$Q?Q%Gi$i?h=(LKguVkf5FBl=zrj_t zbp1JS0Mfq#`-68H{IB-2ZQ6l3OEYPeY*@@&V4&RBPTZ_N0PdtqqqUxpT%KPgBU;=XEdu>~AL6Cgq{!i146XMJn^GAieVmnb=Y8gkd?Z+zhE3 zYQuvuHZ#XHJ|kDkei{Y{O;B658$T*zOy-EEBp*Xoz+B-r$X5?MGRr-b?a!gvT#*v6 zACSKW{lX3w8{7*0=L`8cl52(KeGU^&J&E4t_GD*{$sFs-&D{e%%L~JG>vFIU<1ZRl>ZiFZvILzmv=mytE%OJMgvZ6>x#M;L(}mGudHgZYyoD16%8MsfOe3V7AN7 z$QhXtCrPIMH0*e&R>$ZKIc&(4kgYs6GpM;WOiAYYKpHm6{g=$)uAEZ1;P$s8mo+Ta zj#PH?S5$z9t2ADBb`;E3pBcOZ%sxK?v$yQb?2J~!he|)6Po7k4{pIX4t;|`*Yk<9t z$ZeJJ> z6*eltvp*@ms#rRZ)iLkdX6k_I*wX6Qnd(?8FVk)UVqNvBRL2Cmv@0#G*WN>m za6RWBmZF&zSH}V{&M7n)_0%G4w$zMSF4dvnz+`Ia)x zm>=FuE-f|=vB$O8q3T#`biJ;739-RiYI$|6J6?mjZZ%?$X{r3~)?<$$mageOsE&DK zUF*6Lh^5hq!1f-944_b@y@$Uf^=EsLL5fWkZ&A8UwOsM1MYd$|D3w69nUoOKay@_s zh9rx4DhyG@lT?D|I#NPa5lQKIuA;(FRlbhN)D!ci7P&&4atG`IEJ<|A*J)i2sVfck zO|)DLqDA*7Tka}!^!{Y=7%5?@{8q3ewSlb%McAC;J1PuQMJ$!zIhmAjRlG;(;i`NQ zyFn+-YNfA}(~&ZplnB*wH-rX8B+LCnG17Vk!kx%e5`j$6B|}%6UCZsUFLZ@up;J*# zc`hV&SWA^_o|NL3zy9Rsfj-Cn#vg^{W_M?IBZkh4EyN-!f$m%E8Ca+Jp2R+)u#>Q4 zWl6ZGu!$<~g6hIOn<3#XYYb6^ zk>*Je&7E>wG~O(Fx#+%pDru?8o1u$=&O#CJRR)P$hweaI9oVF*yF;D;sSDD4wYGi@ zi7mAn%l<7*FWikOkRH^$aH$I*@r2SR&6kk4wwfdYDZRBSKh{d`57YtE@D(b7?(fj) z{fx;ahuZaA+OS$i+v#XjvUrzDVpRDglJuo;st(hiW5}g zP=y~U@v7VvvmQ0!{%Glx$3xP4$Aw($A?XX{RG3q~4vBjJOA3A5%b~A&OgZ%2E0C%! ztp{166D<>ED~6Q4TeYR(fYec!nmfgKDr}=#ZpYKnHpz021haeD-5f*GS5z^i>ZXW# zRN_=cUs4`W<>}}^eXVh4Y^Or#{G56dByB46hJ<<>gE$2ePcnVYy$=cfl3!O_QQt%2 zj@9275oir|Po(jh9%M*$G@k{KjAekdVn{sM>e5O`4X~HvKj%XS4nve{uB}V)Iu$0W z@^{c73+lk#7z{`3%SxwwoMJeow^!veQ1D=(1!z?ZDrv8ZOj43mv7XYCRBHl8=wVvw zn<&4G82hTlrHM~TNmhk7r6;SFAxSi_GhV()w5W5k{0JImOl+IevL=~=Q<5ze$uuw} zS+--&@Sx!J-P9>R3yIsU^@3%iO2J){EuI}{V3&4z*tz(u%|`|P)u9FETEP9f_^aFy zX&6E+`~lAUqYnP<`~k?>6Q^q}V5|G@uu(qmwg0jL9Gp*I`I%oUjmaA1bNKxrBx>~K23 zL1Xgn-Y}2NXK1>gGF#6Cm}eR3%xwRnAv1IFF9TfdR{*wO2ykF#eIW}7_cGfp;+k`0 zF{dIhbB1LA>z4x@m|6cC3kbi*Y`0po`YE%&H30J)M*17vbKIgg4aL38`gH)$h2CF)(!6+us*T9&dj0b71BQ{J-r0 z+8jUu2>^%xH0N=F0YFbK9pOLBdH+^{JU9Mtb^!E0ZwWlc|CJpe90gA`DliSqlW{u0 zLE}GnfIoKteOmmv1Ms3S-`4l=AKL+n2KLYGL<5%eqM(J|^!AcoVi(<7l1BR=4PM$y z?4dW8rqPoH-sHWkm-vLzm!(m&SG{Q)r2Ql>cU#w@T6O92>;37_^7{h9uo3z2j|^zd z&poc9%getN;#5)b$_>I=>W@FTYWDMdJY@5;guCd%>-`1(RMc^Gfh>pVf0J!cbZT{L zi)c*s)-D(8i{4v1S%_6dt^W3gC17%h{`XBT$NZwenTh5tZ%^>-oq-f=X88}}Czl_} zQ&}5e{$X`kR;GP)uD)-EQN%lU=?R}03V+w5=+OF!P3nx=hujET_tVv*9rCK~>OoWC z!QEe%1%#~t%UqL_0EcY=>-fc*4siG%fOY)#9t3dM4zP~LFcaXg17IB=J+c6VJZUGM zTmYXNP8;!EU^e7)lN;a+y8$kg4{4JDPWuF4yE?!#0PDDUtm8(^0XXm(jLYB?z+8aC z0YGqdy%Cwu8idaPE(GJOouJvt7XUltBLo3#e+XcmAFu#moq513<VeI0pO!I0BRaM}e;a-sK(z zcu)ocj{#^Mxle@VjX-=PFbd$o_zS=Tz-NM9KyRQAP#@qXaZ~x|;u*Svw=y#G+;Wg z5?BG`y^6;&U@@>6_yi~f76GGy)4)MsJMbnj252BIEql1LrjPFsZG-;8r()hF2!LoU(C3?!E`Uit~p{dt9tNM)IN7r4F0< ztv`2W_o@$8H-5&#>G+2>7d$RR;Qff1AKAb8X8Y20aogH@h!}Q}fPtp>N)>D`2TB!N ziADdCz4OfcwGA3}yHR6RPIpU{1nr|eY7*0F(c>FDeJwTV=4bua-kdVJ!Yk^_nv_WD zb560D*8sfgCAZip7JOEd-h-x|Q^a6e3@hUnLH@^5MYksBEFEgBrqdValmzqEL3I6Q z4l(=tl{M++y@a8GcVyo%|LZj=J1MkGv6=T6_Fc~pduG)Ds!2absbz|#supFH1=-AN z5Z(<_&MkXq;wLp`(X_lwN$B9Ae>u;3;Coy1UuAel;mkbfL^4 z;wYkA5xpp}T(OxK47T_O)*n2#@Hr0=Z;xxs1C~$jawWmMkZ>e!%iTFw(nL+Vac3dl z_q*cQmUj-^sYy9Z+u+%};}H6EKXK-nukvfsedsdEZ%K8}D>n0n#MzEfUO#kB*9uL+ zc?DlVj={>j;qmg+kn|}Ne`r=?)s%cMIBe#{i6cI3$J7t#)dLec&K?(o36F1J7ZjU$ z!D8Co50~8z3K*kJcutnq)BFpH@`qm^Q@2imS&ZFbk4unp=-Ug5 zm`SZF8ivM8=5>oxRR`Z`7VrJ4<}QwhgDsTb^b;@H$yL!uB-6VU4x9ODJyu;6_0042 zg5kx%rD3z6N>~k|UKcU+ihjN-&)&WG(f>_70IPU=j2*9aH{~JSya6yPXY{tgJUXIRchIs+K_ZDZTylsuRDP+C&AeMumO5;uMG2N*6CH3Fc?{Fw1vCQY$LPqR6&r7&bif`p9&@L0MVT#1gKuJ(k~3 zC6shU!3RN6sffii4)HZK`$`|1dHtkAz_+iq+wS!&a-i~D{paZFl`it$F#TfAN$Pl2 z5eunbrD7`&*H6D`sfYUvzOw(6R*IHq63xA;^fND`tbMA=?O0*M%Ee?rEn+0|`blM$ zSUu^p8tEt9n?Ft-_3@(%R$D{}G!3y#JJWkVD7K-Hd>{=^-}Uh_-xXGi z=mSjvG-Ij7HN`duk~gH-I+x3%yZU=r#8c4tLvxrOzosPoO3BzLxSgG0R|j^XjZQ`G zkQ;46o!aOmQT^CJlb48Gaa`X4xoR`dpPNP+dNd( z^VWG-Vb|gIjikFsH}Bm%zdqxO=(hd1l_=fr#EF0$*BxRLjl^>ZExxV@p16T@;5vUS zu63giW@73M2R^T_tn&BNhWT?^eq*Y5h$3z(_<59gQ?Z$sV>}*>d-$N|-}b=0(Fhm0 zVHHR-Z#o2CoUk=7z-({1_-NvQpq^S);_Nu5rP5_sWl+?uJ|X7yn1lEAIXv*gi_I+p zuL<5nrOFt3=~j@)#kZ=g=&R zn8JS0FK(Luqr=t?#n!{<4}bBaM>3But3YLp`OnSs_tf4^dQ@9s+N*S2Je|uedQtTav zzItiOo!|uXLe7rhD9V)_e2^MS3i4GIaa=T?e6sX&A~guD~r*aF?P&GoH;41N=Yy;_BdW1_VmuB zEATdXAE#?zDSvD5!xDs1)qoctl9JC z{w(Xo*B|y1U*iWuQ)npvda%CYLfoqUc8l|EBu&_sYBMU2>~6In%R>ZN46f^S0sav7 zU62ai^bo2AC-71nfW(Rd#VW!g&IIXivw|u|r>yn8>i@j>GX?1|YxgzwMy}Pd0h3py ztqWJahs=F2wc!AtyZ-UtT!icgc~9HN`>PY%{o|%lY)5;+`&Kb~LqAUukhEcb4>7XV FKLJs_JtzPG delta 16290 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 tG7;G-V Date: Thu, 26 Dec 2024 16:18:14 +0100 Subject: [PATCH 25/75] remove unused files from previous tests --- dist/simplyCountdown.umd.js.map | 2 +- docs/dist/assets/main.min.js | 2 +- docs/dist/assets/main.min.js.map | 2 +- package.json | 1 + src/core/utils.ts | 65 -------------------------------- src/main.js | 5 --- 6 files changed, 4 insertions(+), 73 deletions(-) delete mode 100644 src/core/utils.ts delete mode 100644 src/main.js diff --git a/dist/simplyCountdown.umd.js.map b/dist/simplyCountdown.umd.js.map index 2954b5c..516729c 100644 --- a/dist/simplyCountdown.umd.js.map +++ b/dist/simplyCountdown.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/core/dom.ts","../src/core/simplyCountdown.ts","../src/core/simplyCountdown.umd.ts"],"sourcesContent":["/**\n * Creates a countdown section element\n */\nexport const createCountdownSection = (\n sectionClass: string,\n amount: number,\n word: string\n): HTMLElement => {\n const section = document.createElement('div');\n section.className = `simply-section ${sectionClass}`;\n\n const wrap = document.createElement('div');\n const amount_elem = document.createElement('span');\n const word_elem = document.createElement('span');\n\n amount_elem.className = 'simply-amount';\n word_elem.className = 'simply-word';\n\n amount_elem.textContent = String(amount);\n word_elem.textContent = word;\n\n wrap.appendChild(amount_elem);\n wrap.appendChild(word_elem);\n section.appendChild(wrap);\n\n return section;\n};\n\n/**\n * Retrieves a countdown section element from a container\n */\nexport const getCountdownSection = (\n sectionClass: string,\n container: HTMLElement\n): HTMLElement | null => {\n return container.querySelector(`.simply-section.${sectionClass}`);\n};\n\n/**\n * Updates a countdown section element\n */\nexport const updateCountdownSection = (\n section: HTMLElement,\n amount: number | string,\n word: string\n): void => {\n const amountElement = section.querySelector('.simply-amount');\n const wordElement = section.querySelector('.simply-word');\n\n if (amountElement) {\n amountElement.textContent = String(amount);\n }\n if (wordElement) {\n wordElement.textContent = word;\n }\n};\n\n/**\n * Creates all countdown elements\n */\nexport const createCountdown = (\n container: HTMLElement\n): {\n days: HTMLElement;\n hours: HTMLElement;\n minutes: HTMLElement;\n seconds: HTMLElement;\n} => {\n const days = createCountdownSection('simply-days-section', 0, 'day');\n const hours = createCountdownSection('simply-hours-section', 0, 'hour');\n const minutes = createCountdownSection('simply-minutes-section', 0, 'minute');\n const seconds = createCountdownSection('simply-seconds-section', 0, 'second');\n\n container.appendChild(days);\n container.appendChild(hours);\n container.appendChild(minutes);\n container.appendChild(seconds);\n\n return {\n days,\n hours,\n minutes,\n seconds\n };\n};\n","/*!\n * Project : simplyCountdown\n * Date : 2024-12-24\n * License : MIT\n * Version : 3.0.0\n * Author : Vincent Loy-Serre \n * Contributors :\n * - Justin Beasley \n * - Nathan Smith \n */\n\nimport type { CountdownParameters, CountdownSelector } from '../types';\nimport { createCountdown, updateCountdownSection } from './dom';\n\nconst defaultParams: CountdownParameters = {\n year: 2024,\n month: 12,\n day: 25,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'day' },\n hours: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'hour' },\n minutes: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'minute' },\n seconds: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'second' }\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {},\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n countUp: false,\n removeZeroUnits: false\n};\n\nconst isNodeList = (element: CountdownSelector): element is NodeListOf => {\n return element instanceof NodeList;\n};\n\ninterface TimeUnit {\n value: number;\n word: keyof CountdownParameters['words'];\n element?: HTMLElement;\n}\n\n/**\n * Formats a time unit with optional zero padding and pluralization\n * @param unit - The time unit object containing value and word properties\n * @param params - The countdown parameters containing formatting options and word definitions\n * @returns A formatted string containing the value and pluralized word for the time unit\n * @example\n * // With zeroPad: true\n * formatTimeUnit({value: 5, word: 'days'}, params) // returns \"05 days\"\n * // With zeroPad: false\n * formatTimeUnit({value: 5, word: 'days'}, params) // returns \"5 days\"\n */\nfunction formatTimeUnit(unit: TimeUnit, params: CountdownParameters): string {\n const value = params.zeroPad ? String(unit.value).padStart(2, '0') : unit.value;\n return `${value} ${params.words[unit.word].lambda(params.words[unit.word].root, unit.value)}`;\n}\n\n/**\n * Determines whether a time unit should be displayed based on its value and the values of previous units\n * @param unit - The current time unit to evaluate\n * @param previousUnits - Array of time units that come before the current unit\n * @param params - Configuration parameters for the countdown\n * @returns True if the unit should be displayed, false otherwise\n * \n * If removeZeroUnits is false in params, always returns true.\n * Otherwise, returns true if either:\n * - The current unit value is not zero\n * - Any previous unit has a non-zero value\n */\nfunction shouldDisplay(unit: TimeUnit, previousUnits: TimeUnit[], params: CountdownParameters): boolean {\n if (!params.removeZeroUnits) return true;\n return unit.value !== 0 || previousUnits.some(u => u.value !== 0);\n}\n\n/**\n * Displays the countdown timer inline within the specified HTML element.\n * \n * @param timeUnits - Array of time units containing values and labels for display\n * @param params - Configuration parameters for the countdown display\n * @param element - The HTML element where the countdown will be rendered\n * \n * @remarks\n * The function filters and formats time units based on display rules, then joins them with\n * the specified separator from params.inlineSeparator before setting the element's innerHTML.\n */\nfunction displayInline(timeUnits: TimeUnit[], params: CountdownParameters, element: HTMLElement): void {\n const displayStr = timeUnits\n .filter((unit, index) => shouldDisplay(unit, timeUnits.slice(0, index), params))\n .map(unit => formatTimeUnit(unit as { value: number; word: keyof typeof params.words }, params))\n .join(params.inlineSeparator);\n\n element.innerHTML = displayStr;\n}\n\n/**\n * Updates the display of time units in the countdown based on their values and display conditions\n * @param timeUnits - Array of TimeUnit objects containing the time values and their corresponding words\n * @param params - Configuration parameters for the countdown display\n * @param countdown - DOM elements representing the countdown display sections\n * @returns void\n *\n * @remarks\n * This function iterates through each time unit and determines whether it should be shown based on:\n * - If it's the seconds unit (always shown)\n * - If it meets display criteria based on previous units\n * \n * For units that should be shown, it:\n * - Updates the display value (with optional zero padding)\n * - Updates the word label using the configured lambda function\n * - Shows the unit's DOM element\n * \n * For units that shouldn't be shown, it hides their DOM elements\n */\nfunction displayBlocks(timeUnits: TimeUnit[], params: CountdownParameters, countdown: any): void {\n timeUnits.forEach((unit, index) => {\n const shouldShow = unit.word === 'seconds' || shouldDisplay(unit, timeUnits.slice(0, index), params);\n \n if (shouldShow) {\n updateCountdownSection(\n countdown[unit.word],\n params.zeroPad ? String(unit.value).padStart(2, '0') : unit.value,\n params.words[unit.word].lambda(params.words[unit.word].root, unit.value)\n );\n countdown[unit.word].style.display = '';\n } else {\n countdown[unit.word].style.display = 'none';\n }\n });\n}\n\nconst createCountdownInstance = (targetElement: HTMLElement, parameters: CountdownParameters) => {\n const targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n\n // Create span element for inline mode\n let inlineElement: HTMLElement | null = null;\n if (parameters.inline) {\n inlineElement = document.createElement('span');\n inlineElement.className = parameters.inlineClass;\n targetElement.appendChild(inlineElement);\n }\n\n const countdown = parameters.inline ? null : createCountdown(targetElement);\n\n const refresh = () => {\n const currentDate = parameters.enableUtc ? new Date(new Date().toUTCString()) : new Date();\n let diff = parameters.countUp\n ? currentDate.getTime() - targetDate.getTime()\n : targetDate.getTime() - currentDate.getTime();\n\n if (diff <= 0 && !parameters.countUp) {\n diff = 0;\n if (parameters.onEnd) {\n parameters.onEnd();\n }\n }\n\n const days = Math.floor(diff / (1000 * 60 * 60 * 24));\n diff -= days * 1000 * 60 * 60 * 24;\n\n const hours = Math.floor(diff / (1000 * 60 * 60));\n diff -= hours * 1000 * 60 * 60;\n\n const minutes = Math.floor(diff / (1000 * 60));\n diff -= minutes * 1000 * 60;\n\n const seconds = Math.floor(diff / 1000);\n\n if (parameters.inline && inlineElement) {\n const timeUnits: TimeUnit[] = [\n { value: days, word: 'days' as keyof CountdownParameters['words'] },\n { value: hours, word: 'hours' as keyof CountdownParameters['words'] },\n { value: minutes, word: 'minutes' as keyof CountdownParameters['words'] },\n { value: seconds, word: 'seconds' as keyof CountdownParameters['words'] }\n ];\n displayInline(timeUnits, parameters, inlineElement);\n } else if (countdown) {\n const timeUnits: TimeUnit[] = [\n { value: days, word: 'days' as keyof CountdownParameters['words'] },\n { value: hours, word: 'hours' as keyof CountdownParameters['words'] },\n { value: minutes, word: 'minutes' as keyof CountdownParameters['words'] },\n { value: seconds, word: 'seconds' as keyof CountdownParameters['words'] }\n ];\n displayBlocks(timeUnits, parameters, countdown);\n }\n };\n\n const interval = setInterval(refresh, parameters.refresh);\n refresh();\n\n // Cleanup on element removal\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node === targetElement) {\n clearInterval(interval);\n observer.disconnect();\n }\n });\n });\n });\n\n if (targetElement.parentNode) {\n observer.observe(targetElement.parentNode, { childList: true });\n }\n};\n\nexport default (\n element: CountdownSelector,\n args: Partial = defaultParams\n): void => {\n const parameters: CountdownParameters = { ...defaultParams, ...args };\n\n if (typeof element === 'string') {\n const elements = document.querySelectorAll(element);\n elements.forEach((el) => createCountdownInstance(el, parameters));\n } else if (isNodeList(element)) {\n element.forEach((el) => createCountdownInstance(el, parameters));\n } else {\n createCountdownInstance(element, parameters);\n }\n};","import simplyCountdownCore from './simplyCountdown';\n\n// @ts-ignore\nif (typeof define === 'function' && define.amd) {\n // AMD\n define(function() {\n return simplyCountdownCore;\n });\n} else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = simplyCountdownCore;\n} else {\n // Browser\n (window as any).simplyCountdown = simplyCountdownCore;\n}\n\n// Export pour Vite/Rollup\nexport default simplyCountdownCore;\n"],"names":["createCountdownSection","sectionClass","amount","word","section","document","createElement","className","wrap","amount_elem","word_elem","textContent","String","appendChild","defaultParams","year","month","day","hours","minutes","seconds","words","days","lambda","root","n","plural","inline","inlineSeparator","enableUtc","onEnd","refresh","inlineClass","amountClass","wordClass","zeroPad","countUp","removeZeroUnits","shouldDisplay","unit","previousUnits","params","value","some","u","displayInline","timeUnits","element","displayStr","filter","index","slice","map","padStart","formatTimeUnit","join","innerHTML","displayBlocks","countdown","forEach","amountElement","querySelector","wordElement","updateCountdownSection","style","display","createCountdownInstance","targetElement","parameters","targetDate","Date","inlineElement","container","createCountdown","currentDate","toUTCString","diff","getTime","Math","floor","interval","setInterval","observer","MutationObserver","mutations","mutation","removedNodes","node","clearInterval","disconnect","parentNode","observe","childList","simplyCountdownCore","args","querySelectorAll","el","NodeList","isNodeList","define","amd","module","exports","window","simplyCountdown"],"mappings":"kQAGO,MAAMA,EAAyB,CAClCC,EACAC,EACAC,KAEM,MAAAC,EAAUC,SAASC,cAAc,OAC/BF,EAAAG,UAAY,kBAAkBN,IAEhC,MAAAO,EAAOH,SAASC,cAAc,OAC9BG,EAAcJ,SAASC,cAAc,QACrCI,EAAYL,SAASC,cAAc,QAYlC,OAVPG,EAAYF,UAAY,gBACxBG,EAAUH,UAAY,cAEVE,EAAAE,YAAcC,OAAOV,GACjCQ,EAAUC,YAAcR,EAExBK,EAAKK,YAAYJ,GACjBD,EAAKK,YAAYH,GACjBN,EAAQS,YAAYL,GAEbJ,CAAA,ECXLU,EAAqC,CACvCC,KAAM,KACNC,MAAO,GACPC,IAAK,GACLC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,MAAO,CACHC,KAAM,CAAEC,OAAQ,CAACC,EAAMC,IAAMA,EAAI,EAAID,EAAO,IAAMA,EAAMA,KAAM,OAC9DN,MAAO,CAAEK,OAAQ,CAACC,EAAMC,IAAMA,EAAI,EAAID,EAAO,IAAMA,EAAMA,KAAM,QAC/DL,QAAS,CAAEI,OAAQ,CAACC,EAAMC,IAAMA,EAAI,EAAID,EAAO,IAAMA,EAAMA,KAAM,UACjEJ,QAAS,CAAEG,OAAQ,CAACC,EAAMC,IAAMA,EAAI,EAAID,EAAO,IAAMA,EAAMA,KAAM,WAErEE,QAAQ,EACRC,QAAQ,EACRC,gBAAiB,KACjBC,WAAW,EACXC,MAAO,OACPC,QAAS,IACTC,YAAa,0BACb/B,aAAc,iBACdgC,YAAa,gBACbC,UAAW,cACXC,SAAS,EACTC,SAAS,EACTC,iBAAiB,GAyCZ,SAAAC,EAAcC,EAAgBC,EAA2BC,GAC1D,OAACA,EAAOJ,kBACU,IAAfE,EAAKG,OAAeF,EAAcG,MAAUC,GAAY,IAAZA,EAAEF,QACzD,CAaS,SAAAG,EAAcC,EAAuBL,EAA6BM,GACjE,MAAAC,EAAaF,EACdG,QAAO,CAACV,EAAMW,IAAUZ,EAAcC,EAAMO,EAAUK,MAAM,EAAGD,GAAQT,KACvEW,KAAYb,GApCZ,SAAeA,EAAgBE,GAEpC,MAAO,GADOA,EAAON,QAAUvB,OAAO2B,EAAKG,OAAOW,SAAS,EAAG,KAAOd,EAAKG,SACvDD,EAAOpB,MAAMkB,EAAKpC,MAAMoB,OAAOkB,EAAOpB,MAAMkB,EAAKpC,MAAMqB,KAAMe,EAAKG,QACzF,CAiCqBY,CAAef,EAA4DE,KACvFc,KAAKd,EAAOb,iBAEjBmB,EAAQS,UAAYR,CACxB,CAqBS,SAAAS,EAAcX,EAAuBL,EAA6BiB,GAC7DZ,EAAAa,SAAQ,CAACpB,EAAMW,KACY,YAAdX,EAAKpC,MAAsBmC,EAAcC,EAAMO,EAAUK,MAAM,EAAGD,GAAQT,IDrF/D,EAClCrC,EACAF,EACAC,KAEM,MAAAyD,EAAgBxD,EAAQyD,cAAc,kBACtCC,EAAc1D,EAAQyD,cAAc,gBAEtCD,IACcA,EAAAjD,YAAcC,OAAOV,IAEnC4D,IACAA,EAAYnD,YAAcR,EAAA,EC4EtB4D,CACIL,EAAUnB,EAAKpC,MACfsC,EAAON,QAAUvB,OAAO2B,EAAKG,OAAOW,SAAS,EAAG,KAAOd,EAAKG,MAC5DD,EAAOpB,MAAMkB,EAAKpC,MAAMoB,OAAOkB,EAAOpB,MAAMkB,EAAKpC,MAAMqB,KAAMe,EAAKG,QAEtEgB,EAAUnB,EAAKpC,MAAM6D,MAAMC,QAAU,IAErCP,EAAUnB,EAAKpC,MAAM6D,MAAMC,QAAU,MAAA,GAGjD,CAEM,MAAAC,EAA0B,CAACC,EAA4BC,KACzD,MAAMC,EAAa,IAAIC,KACnBF,EAAWrD,KACXqD,EAAWpD,MAAQ,EACnBoD,EAAWnD,IACXmD,EAAWlD,MACXkD,EAAWjD,QACXiD,EAAWhD,SAIf,IAAImD,EAAoC,KACpCH,EAAWzC,SACK4C,EAAAlE,SAASC,cAAc,QACvCiE,EAAchE,UAAY6D,EAAWpC,YACrCmC,EAActD,YAAY0D,IAG9B,MAAMb,EAAYU,EAAWzC,OAAS,KDnGX,CAC3B6C,IAOA,MAAMlD,EAAOtB,EAAuB,sBAAuB,EAAG,OACxDkB,EAAQlB,EAAuB,uBAAwB,EAAG,QAC1DmB,EAAUnB,EAAuB,yBAA0B,EAAG,UAC9DoB,EAAUpB,EAAuB,yBAA0B,EAAG,UAO7D,OALPwE,EAAU3D,YAAYS,GACtBkD,EAAU3D,YAAYK,GACtBsD,EAAU3D,YAAYM,GACtBqD,EAAU3D,YAAYO,GAEf,CACHE,OACAJ,QACAC,UACAC,UACJ,EC4E6CqD,CAAgBN,GAEvDpC,EAAU,KACZ,MAAM2C,EAAcN,EAAWvC,UAAY,IAAIyC,MAAK,IAAIA,MAAOK,eAAiB,IAAIL,KACpF,IAAIM,EAAOR,EAAWhC,QAChBsC,EAAYG,UAAYR,EAAWQ,UACnCR,EAAWQ,UAAYH,EAAYG,UAErCD,GAAQ,IAAMR,EAAWhC,UAClBwC,EAAA,EACHR,EAAWtC,OACXsC,EAAWtC,SAInB,MAAMR,EAAOwD,KAAKC,MAAMH,SAChBA,GAAO,IAAPtD,EAAc,GAAK,GAAK,GAEhC,MAAMJ,EAAQ4D,KAAKC,MAAMH,EAAQ,MACzBA,GAAQ,IAAR1D,EAAe,GAAK,GAE5B,MAAMC,EAAU2D,KAAKC,MAAMH,EAAA,KAC3BA,GAAkB,IAAVzD,EAAiB,GAEzB,MAAMC,EAAU0D,KAAKC,MAAMH,EAAO,KAE9B,GAAAR,EAAWzC,QAAU4C,EAAe,CAOtB1B,EANgB,CAC1B,CAAEH,MAAOpB,EAAMnB,KAAM,QACrB,CAAEuC,MAAOxB,EAAOf,KAAM,SACtB,CAAEuC,MAAOvB,EAAShB,KAAM,WACxB,CAAEuC,MAAOtB,EAASjB,KAAM,YAEHiE,EAAYG,WAC9Bb,EAAW,CAOJD,EANgB,CAC1B,CAAEf,MAAOpB,EAAMnB,KAAM,QACrB,CAAEuC,MAAOxB,EAAOf,KAAM,SACtB,CAAEuC,MAAOvB,EAAShB,KAAM,WACxB,CAAEuC,MAAOtB,EAASjB,KAAM,YAEHiE,EAAYV,EAAS,GAIhDsB,EAAWC,YAAYlD,EAASqC,EAAWrC,SACzCA,IAGR,MAAMmD,EAAW,IAAIC,kBAAkBC,IACzBA,EAAAzB,SAAS0B,IACNA,EAAAC,aAAa3B,SAAS4B,IACvBA,IAASpB,IACTqB,cAAcR,GACdE,EAASO,aAAW,GAE3B,GACJ,IAGDtB,EAAcuB,YACdR,EAASS,QAAQxB,EAAcuB,WAAY,CAAEE,WAAW,GAAM,EAItEC,EAAe,CACX9C,EACA+C,EAAqChF,KAErC,MAAMsD,EAAkC,IAAKtD,KAAkBgF,GAE3D,GAAmB,iBAAZ/C,EAAsB,CACZ1C,SAAS0F,iBAA8BhD,GAC/CY,SAASqC,GAAO9B,EAAwB8B,EAAI5B,IAAW,KA9LrD,CAACrB,GACTA,aAAmBkD,SA8LfC,CAAWnD,GAClBA,EAAQY,SAASqC,GAAO9B,EAAwB8B,EAAI5B,KAEpDF,EAAwBnB,EAASqB,EAAU,QCzO7B,mBAAX+B,QAAyBA,OAAOC,IAEvCD,QAAO,WACI,OAAAN,CAAA,IAEc,iBAAXQ,QAAuBA,OAAOC,QAE5CD,OAAOC,QAAUT,EAGhBU,OAAeC,gBAAkBX"} \ No newline at end of file +{"version":3,"file":"simplyCountdown.umd.js","sources":["../src/core/dom.ts","../src/core/simplyCountdown.ts","../src/core/simplyCountdown.umd.ts"],"sourcesContent":["/**\n * Creates a countdown section element\n */\nexport const createCountdownSection = (\n sectionClass: string,\n amount: number,\n word: string\n): HTMLElement => {\n const section = document.createElement('div');\n section.className = `simply-section ${sectionClass}`;\n\n const wrap = document.createElement('div');\n const amount_elem = document.createElement('span');\n const word_elem = document.createElement('span');\n\n amount_elem.className = 'simply-amount';\n word_elem.className = 'simply-word';\n\n amount_elem.textContent = String(amount);\n word_elem.textContent = word;\n\n wrap.appendChild(amount_elem);\n wrap.appendChild(word_elem);\n section.appendChild(wrap);\n\n return section;\n};\n\n/**\n * Retrieves a countdown section element from a container\n */\nexport const getCountdownSection = (\n sectionClass: string,\n container: HTMLElement\n): HTMLElement | null => {\n return container.querySelector(`.simply-section.${sectionClass}`);\n};\n\n/**\n * Updates a countdown section element\n */\nexport const updateCountdownSection = (\n section: HTMLElement,\n amount: number | string,\n word: string\n): void => {\n const amountElement = section.querySelector('.simply-amount');\n const wordElement = section.querySelector('.simply-word');\n\n if (amountElement) {\n amountElement.textContent = String(amount);\n }\n if (wordElement) {\n wordElement.textContent = word;\n }\n};\n\n/**\n * Creates all countdown elements\n */\nexport const createCountdown = (\n container: HTMLElement\n): {\n days: HTMLElement;\n hours: HTMLElement;\n minutes: HTMLElement;\n seconds: HTMLElement;\n} => {\n const days = createCountdownSection('simply-days-section', 0, 'day');\n const hours = createCountdownSection('simply-hours-section', 0, 'hour');\n const minutes = createCountdownSection('simply-minutes-section', 0, 'minute');\n const seconds = createCountdownSection('simply-seconds-section', 0, 'second');\n\n container.appendChild(days);\n container.appendChild(hours);\n container.appendChild(minutes);\n container.appendChild(seconds);\n\n return {\n days,\n hours,\n minutes,\n seconds\n };\n};\n","/*!\n * Project : simplyCountdown\n * Date : 2024-12-24\n * License : MIT\n * Version : 3.0.0\n * Author : Vincent Loy-Serre \n * Contributors :\n * - Justin Beasley \n * - Nathan Smith \n */\n\nimport type { CountdownParameters, CountdownSelector } from '../types';\nimport { createCountdown, updateCountdownSection } from './dom';\n\nconst defaultParams: CountdownParameters = {\n year: 2024,\n month: 12,\n day: 25,\n hours: 0,\n minutes: 0,\n seconds: 0,\n words: {\n days: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'day' },\n hours: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'hour' },\n minutes: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'minute' },\n seconds: { lambda: (root, n) => n > 1 ? root + 's' : root, root: 'second' }\n },\n plural: true,\n inline: false,\n inlineSeparator: ', ',\n enableUtc: false,\n onEnd: () => {},\n refresh: 1000,\n inlineClass: 'simply-countdown-inline',\n sectionClass: 'simply-section',\n amountClass: 'simply-amount',\n wordClass: 'simply-word',\n zeroPad: false,\n countUp: false,\n removeZeroUnits: false\n};\n\nconst isNodeList = (element: CountdownSelector): element is NodeListOf => {\n return element instanceof NodeList;\n};\n\ninterface TimeUnit {\n value: number;\n word: keyof CountdownParameters['words'];\n element?: HTMLElement;\n}\n\n/**\n * Formats a time unit with optional zero padding and pluralization\n * @param unit - The time unit object containing value and word properties\n * @param params - The countdown parameters containing formatting options and word definitions\n * @returns A formatted string containing the value and pluralized word for the time unit\n * @example\n * // With zeroPad: true\n * formatTimeUnit({value: 5, word: 'days'}, params) // returns \"05 days\"\n * // With zeroPad: false\n * formatTimeUnit({value: 5, word: 'days'}, params) // returns \"5 days\"\n */\nfunction formatTimeUnit(unit: TimeUnit, params: CountdownParameters): string {\n const value = params.zeroPad ? String(unit.value).padStart(2, '0') : unit.value;\n return `${value} ${params.words[unit.word].lambda(params.words[unit.word].root, unit.value)}`;\n}\n\n/**\n * Determines whether a time unit should be displayed based on its value and the values of previous units\n * @param unit - The current time unit to evaluate\n * @param previousUnits - Array of time units that come before the current unit\n * @param params - Configuration parameters for the countdown\n * @returns True if the unit should be displayed, false otherwise\n * \n * If removeZeroUnits is false in params, always returns true.\n * Otherwise, returns true if either:\n * - The current unit value is not zero\n * - Any previous unit has a non-zero value\n */\nfunction shouldDisplay(unit: TimeUnit, previousUnits: TimeUnit[], params: CountdownParameters): boolean {\n if (!params.removeZeroUnits) return true;\n return unit.value !== 0 || previousUnits.some(u => u.value !== 0);\n}\n\n/**\n * Displays the countdown timer inline within the specified HTML element.\n * \n * @param timeUnits - Array of time units containing values and labels for display\n * @param params - Configuration parameters for the countdown display\n * @param element - The HTML element where the countdown will be rendered\n * \n * @remarks\n * The function filters and formats time units based on display rules, then joins them with\n * the specified separator from params.inlineSeparator before setting the element's innerHTML.\n */\nfunction displayInline(timeUnits: TimeUnit[], params: CountdownParameters, element: HTMLElement): void {\n const displayStr = timeUnits\n .filter((unit, index) => shouldDisplay(unit, timeUnits.slice(0, index), params))\n .map(unit => formatTimeUnit(unit as { value: number; word: keyof typeof params.words }, params))\n .join(params.inlineSeparator);\n\n element.innerHTML = displayStr;\n}\n\n/**\n * Updates the display of time units in the countdown based on their values and display conditions\n * @param timeUnits - Array of TimeUnit objects containing the time values and their corresponding words\n * @param params - Configuration parameters for the countdown display\n * @param countdown - DOM elements representing the countdown display sections\n * @returns void\n *\n * @remarks\n * This function iterates through each time unit and determines whether it should be shown based on:\n * - If it's the seconds unit (always shown)\n * - If it meets display criteria based on previous units\n * \n * For units that should be shown, it:\n * - Updates the display value (with optional zero padding)\n * - Updates the word label using the configured lambda function\n * - Shows the unit's DOM element\n * \n * For units that shouldn't be shown, it hides their DOM elements\n */\nfunction displayBlocks(timeUnits: TimeUnit[], params: CountdownParameters, countdown: any): void {\n timeUnits.forEach((unit, index) => {\n const shouldShow = unit.word === 'seconds' || shouldDisplay(unit, timeUnits.slice(0, index), params);\n \n if (shouldShow) {\n updateCountdownSection(\n countdown[unit.word],\n params.zeroPad ? String(unit.value).padStart(2, '0') : unit.value,\n params.words[unit.word].lambda(params.words[unit.word].root, unit.value)\n );\n countdown[unit.word].style.display = '';\n } else {\n countdown[unit.word].style.display = 'none';\n }\n });\n}\n\nconst createCountdownInstance = (targetElement: HTMLElement, parameters: CountdownParameters) => {\n const targetDate = new Date(\n parameters.year,\n parameters.month - 1,\n parameters.day,\n parameters.hours,\n parameters.minutes,\n parameters.seconds\n );\n\n // Create span element for inline mode\n let inlineElement: HTMLElement | null = null;\n if (parameters.inline) {\n inlineElement = document.createElement('span');\n inlineElement.className = parameters.inlineClass;\n targetElement.appendChild(inlineElement);\n }\n\n const countdown = parameters.inline ? null : createCountdown(targetElement);\n\n const refresh = () => {\n const currentDate = parameters.enableUtc ? new Date(new Date().toUTCString()) : new Date();\n let diff = parameters.countUp\n ? currentDate.getTime() - targetDate.getTime()\n : targetDate.getTime() - currentDate.getTime();\n\n if (diff <= 0 && !parameters.countUp) {\n diff = 0;\n if (parameters.onEnd) {\n parameters.onEnd();\n }\n }\n\n const days = Math.floor(diff / (1000 * 60 * 60 * 24));\n diff -= days * 1000 * 60 * 60 * 24;\n\n const hours = Math.floor(diff / (1000 * 60 * 60));\n diff -= hours * 1000 * 60 * 60;\n\n const minutes = Math.floor(diff / (1000 * 60));\n diff -= minutes * 1000 * 60;\n\n const seconds = Math.floor(diff / 1000);\n\n if (parameters.inline && inlineElement) {\n const timeUnits: TimeUnit[] = [\n { value: days, word: 'days' as keyof CountdownParameters['words'] },\n { value: hours, word: 'hours' as keyof CountdownParameters['words'] },\n { value: minutes, word: 'minutes' as keyof CountdownParameters['words'] },\n { value: seconds, word: 'seconds' as keyof CountdownParameters['words'] }\n ];\n displayInline(timeUnits, parameters, inlineElement);\n } else if (countdown) {\n const timeUnits: TimeUnit[] = [\n { value: days, word: 'days' as keyof CountdownParameters['words'] },\n { value: hours, word: 'hours' as keyof CountdownParameters['words'] },\n { value: minutes, word: 'minutes' as keyof CountdownParameters['words'] },\n { value: seconds, word: 'seconds' as keyof CountdownParameters['words'] }\n ];\n displayBlocks(timeUnits, parameters, countdown);\n }\n };\n\n const interval = setInterval(refresh, parameters.refresh);\n refresh();\n\n // Cleanup on element removal\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node === targetElement) {\n clearInterval(interval);\n observer.disconnect();\n }\n });\n });\n });\n\n if (targetElement.parentNode) {\n observer.observe(targetElement.parentNode, { childList: true });\n }\n};\n\nexport default (\n element: CountdownSelector,\n args: Partial = defaultParams\n): void => {\n const parameters: CountdownParameters = { ...defaultParams, ...args };\n\n if (typeof element === 'string') {\n const elements = document.querySelectorAll(element);\n elements.forEach((el) => createCountdownInstance(el, parameters));\n } else if (isNodeList(element)) {\n element.forEach((el) => createCountdownInstance(el, parameters));\n } else {\n createCountdownInstance(element, parameters);\n }\n};","import simplyCountdownCore from './simplyCountdown';\n\n// @ts-ignore\nif (typeof define === 'function' && define.amd) {\n // AMD\n define(function() {\n return simplyCountdownCore;\n });\n} else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = simplyCountdownCore;\n} else {\n // Browser\n (window as any).simplyCountdown = simplyCountdownCore;\n}\n\n// Export for Vite/Rollup\nexport default simplyCountdownCore;\n"],"names":["createCountdownSection","sectionClass","amount","word","section","document","createElement","className","wrap","amount_elem","word_elem","textContent","String","appendChild","defaultParams","year","month","day","hours","minutes","seconds","words","days","lambda","root","n","plural","inline","inlineSeparator","enableUtc","onEnd","refresh","inlineClass","amountClass","wordClass","zeroPad","countUp","removeZeroUnits","shouldDisplay","unit","previousUnits","params","value","some","u","displayInline","timeUnits","element","displayStr","filter","index","slice","map","padStart","formatTimeUnit","join","innerHTML","displayBlocks","countdown","forEach","amountElement","querySelector","wordElement","updateCountdownSection","style","display","createCountdownInstance","targetElement","parameters","targetDate","Date","inlineElement","container","createCountdown","currentDate","toUTCString","diff","getTime","Math","floor","interval","setInterval","observer","MutationObserver","mutations","mutation","removedNodes","node","clearInterval","disconnect","parentNode","observe","childList","simplyCountdownCore","args","querySelectorAll","el","NodeList","isNodeList","define","amd","module","exports","window","simplyCountdown"],"mappings":"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"} \ No newline at end of file diff --git a/docs/dist/assets/main.min.js b/docs/dist/assets/main.min.js index 49cd66d..72c7810 100644 --- a/docs/dist/assets/main.min.js +++ b/docs/dist/assets/main.min.js @@ -1,4 +1,4 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(a){if(a.ep)return;a.ep=!0;const l=n(a);fetch(a.href,l)}})();function Et(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function je(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&je(n)}),e}class De{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Ke(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function L(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const a in i)n[a]=i[a]}),n}const yt="
",Be=e=>!!e.scope,_t=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,a)=>`${i}${"_".repeat(a+1)}`)].join(" ")}return`${t}${e}`};class wt{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ke(t)}openNode(t){if(!Be(t))return;const n=_t(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Be(t)&&(this.buffer+=yt)}value(){return this.buffer}span(t){this.buffer+=``}}const Pe=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class Se{constructor(){this.rootNode=Pe(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Pe({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{Se._collapse(n)}))}}class vt extends Se{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new wt(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Q(e){return e?typeof e=="string"?e:e.source:null}function Ze(e){return $("(?=",e,")")}function xt(e){return $("(?:",e,")*")}function St(e){return $("(?:",e,")?")}function $(...e){return e.map(n=>Q(n)).join("")}function Nt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ne(...e){return"("+(Nt(e).capture?"":"?:")+e.map(i=>Q(i)).join("|")+")"}function We(e){return new RegExp(e.toString()+"|").exec("").length-1}function kt(e,t){const n=e&&e.exec(t);return n&&n.index===0}const Mt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ke(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const a=n;let l=Q(i),r="";for(;l.length>0;){const s=Mt.exec(l);if(!s){r+=l;break}r+=l.substring(0,s.index),l=l.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?r+="\\"+String(Number(s[1])+a):(r+=s[0],s[0]==="("&&n++)}return r}).map(i=>`(${i})`).join(t)}const Ot=/\b\B/,Xe="[a-zA-Z]\\w*",Me="[a-zA-Z_]\\w*",qe="\\b\\d+(\\.\\d+)?",Ye="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ve="\\b(0b[01]+)",Tt="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",At=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=$(t,/.*\b/,e.binary,/\b.*/)),L({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},ee={begin:"\\\\[\\s\\S]",relevance:0},Rt={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ee]},Ct={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ee]},It={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},fe=function(e,t,n={}){const i=L({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=Ne("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:$(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},Lt=fe("//","$"),Dt=fe("/\\*","\\*/"),Bt=fe("#","$"),Pt={scope:"number",begin:qe,relevance:0},Ut={scope:"number",begin:Ye,relevance:0},zt={scope:"number",begin:Ve,relevance:0},$t={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ee,{begin:/\[/,end:/\]/,relevance:0,contains:[ee]}]},Ht={scope:"title",begin:Xe,relevance:0},Gt={scope:"title",begin:Me,relevance:0},Ft={begin:"\\.\\s*"+Me,relevance:0},jt=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var ce=Object.freeze({__proto__:null,APOS_STRING_MODE:Rt,BACKSLASH_ESCAPE:ee,BINARY_NUMBER_MODE:zt,BINARY_NUMBER_RE:Ve,COMMENT:fe,C_BLOCK_COMMENT_MODE:Dt,C_LINE_COMMENT_MODE:Lt,C_NUMBER_MODE:Ut,C_NUMBER_RE:Ye,END_SAME_AS_BEGIN:jt,HASH_COMMENT_MODE:Bt,IDENT_RE:Xe,MATCH_NOTHING_RE:Ot,METHOD_GUARD:Ft,NUMBER_MODE:Pt,NUMBER_RE:qe,PHRASAL_WORDS_MODE:It,QUOTE_STRING_MODE:Ct,REGEXP_MODE:$t,RE_STARTERS_RE:Tt,SHEBANG:At,TITLE_MODE:Ht,UNDERSCORE_IDENT_RE:Me,UNDERSCORE_TITLE_MODE:Gt});function Kt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Zt(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Wt(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Kt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Xt(e,t){Array.isArray(e.illegal)&&(e.illegal=Ne(...e.illegal))}function qt(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Yt(e,t){e.relevance===void 0&&(e.relevance=1)}const Vt=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=$(n.beforeMatch,Ze(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Jt=["of","and","for","in","not","or","if","then","parent","list","value"],Qt="keyword";function Je(e,t,n=Qt){const i=Object.create(null);return typeof e=="string"?a(n,e.split(" ")):Array.isArray(e)?a(n,e):Object.keys(e).forEach(function(l){Object.assign(i,Je(e[l],t,l))}),i;function a(l,r){t&&(r=r.map(s=>s.toLowerCase())),r.forEach(function(s){const d=s.split("|");i[d[0]]=[l,en(d[0],d[1])]})}}function en(e,t){return t?Number(t):tn(e)?0:1}function tn(e){return Jt.includes(e.toLowerCase())}const Ue={},z=e=>{console.error(e)},ze=(e,...t)=>{console.log(`WARN: ${e}`,...t)},K=(e,t)=>{Ue[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ue[`${e}/${t}`]=!0)},ge=new Error;function Qe(e,t,{key:n}){let i=0;const a=e[n],l={},r={};for(let s=1;s<=t.length;s++)r[s+i]=a[s],l[s+i]=!0,i+=We(t[s-1]);e[n]=r,e[n]._emit=l,e[n]._multi=!0}function nn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw z("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ge;if(typeof e.beginScope!="object"||e.beginScope===null)throw z("beginScope must be object"),ge;Qe(e,e.begin,{key:"beginScope"}),e.begin=ke(e.begin,{joinWith:""})}}function on(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw z("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ge;if(typeof e.endScope!="object"||e.endScope===null)throw z("endScope must be object"),ge;Qe(e,e.end,{key:"endScope"}),e.end=ke(e.end,{joinWith:""})}}function rn(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function sn(e){rn(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),nn(e),on(e)}function an(e){function t(r,s){return new RegExp(Q(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,d){d.position=this.position++,this.matchIndexes[this.matchAt]=d,this.regexes.push([d,s]),this.matchAt+=We(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(d=>d[1]);this.matcherRe=t(ke(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const d=this.matcherRe.exec(s);if(!d)return null;const h=d.findIndex((M,N)=>N>0&&M!==void 0),E=this.matchIndexes[h];return d.splice(0,h),Object.assign(d,E)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const d=new n;return this.rules.slice(s).forEach(([h,E])=>d.addRule(h,E)),d.compile(),this.multiRegexes[s]=d,d}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,d){this.rules.push([s,d]),d.type==="begin"&&this.count++}exec(s){const d=this.getMatcher(this.regexIndex);d.lastIndex=this.lastIndex;let h=d.exec(s);if(this.resumingScanAtSamePosition()&&!(h&&h.index===this.lastIndex)){const E=this.getMatcher(0);E.lastIndex=this.lastIndex+1,h=E.exec(s)}return h&&(this.regexIndex+=h.position+1,this.regexIndex===this.count&&this.considerAll()),h}}function a(r){const s=new i;return r.contains.forEach(d=>s.addRule(d.begin,{rule:d,type:"begin"})),r.terminatorEnd&&s.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&s.addRule(r.illegal,{type:"illegal"}),s}function l(r,s){const d=r;if(r.isCompiled)return d;[Zt,qt,sn,Vt].forEach(E=>E(r,s)),e.compilerExtensions.forEach(E=>E(r,s)),r.__beforeBegin=null,[Wt,Xt,Yt].forEach(E=>E(r,s)),r.isCompiled=!0;let h=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),h=r.keywords.$pattern,delete r.keywords.$pattern),h=h||/\w+/,r.keywords&&(r.keywords=Je(r.keywords,e.case_insensitive)),d.keywordPatternRe=t(h,!0),s&&(r.begin||(r.begin=/\B|\b/),d.beginRe=t(d.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(d.endRe=t(d.end)),d.terminatorEnd=Q(d.end)||"",r.endsWithParent&&s.terminatorEnd&&(d.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(d.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(E){return cn(E==="self"?r:E)})),r.contains.forEach(function(E){l(E,d)}),r.starts&&l(r.starts,s),d.matcher=a(d),d}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=L(e.classNameAliases||{}),l(e)}function et(e){return e?e.endsWithParent||et(e.starts):!1}function cn(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return L(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:et(e)?L(e,{starts:e.starts?L(e.starts):null}):Object.isFrozen(e)?L(e):e}var ln="11.11.0";class dn extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const ve=Ke,$e=L,He=Symbol("nomatch"),un=7,tt=function(e){const t=Object.create(null),n=Object.create(null),i=[];let a=!0;const l="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:vt};function d(o){return s.noHighlightRe.test(o)}function h(o){let g=o.className+" ";g+=o.parentNode?o.parentNode.className:"";const f=s.languageDetectRe.exec(g);if(f){const m=T(f[1]);return m||(ze(l.replace("{}",f[1])),ze("Falling back to no-highlight mode for this block.",o)),m?f[1]:"no-highlight"}return g.split(/\s+/).find(m=>d(m)||T(m))}function E(o,g,f){let m="",w="";typeof g=="object"?(m=o,f=g.ignoreIllegals,w=g.language):(K("10.7.0","highlight(lang, code, ...args) has been deprecated."),K("10.7.0",`Please use highlight(code, options) instead. +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(a){if(a.ep)return;a.ep=!0;const l=n(a);fetch(a.href,l)}})();function Et(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function je(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&je(n)}),e}class De{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Ke(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function L(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const a in i)n[a]=i[a]}),n}const yt="",Be=e=>!!e.scope,_t=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,a)=>`${i}${"_".repeat(a+1)}`)].join(" ")}return`${t}${e}`};class wt{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ke(t)}openNode(t){if(!Be(t))return;const n=_t(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Be(t)&&(this.buffer+=yt)}value(){return this.buffer}span(t){this.buffer+=``}}const Pe=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class Se{constructor(){this.rootNode=Pe(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Pe({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{Se._collapse(n)}))}}class vt extends Se{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new wt(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Q(e){return e?typeof e=="string"?e:e.source:null}function Ze(e){return $("(?=",e,")")}function xt(e){return $("(?:",e,")*")}function St(e){return $("(?:",e,")?")}function $(...e){return e.map(n=>Q(n)).join("")}function Nt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ne(...e){return"("+(Nt(e).capture?"":"?:")+e.map(i=>Q(i)).join("|")+")"}function We(e){return new RegExp(e.toString()+"|").exec("").length-1}function kt(e,t){const n=e&&e.exec(t);return n&&n.index===0}const Mt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ke(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const a=n;let l=Q(i),r="";for(;l.length>0;){const s=Mt.exec(l);if(!s){r+=l;break}r+=l.substring(0,s.index),l=l.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?r+="\\"+String(Number(s[1])+a):(r+=s[0],s[0]==="("&&n++)}return r}).map(i=>`(${i})`).join(t)}const Ot=/\b\B/,Xe="[a-zA-Z]\\w*",Me="[a-zA-Z_]\\w*",qe="\\b\\d+(\\.\\d+)?",Ye="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ve="\\b(0b[01]+)",Tt="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",At=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=$(t,/.*\b/,e.binary,/\b.*/)),L({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},ee={begin:"\\\\[\\s\\S]",relevance:0},Rt={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ee]},Ct={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ee]},It={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},fe=function(e,t,n={}){const i=L({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=Ne("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:$(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},Lt=fe("//","$"),Dt=fe("/\\*","\\*/"),Bt=fe("#","$"),Pt={scope:"number",begin:qe,relevance:0},Ut={scope:"number",begin:Ye,relevance:0},zt={scope:"number",begin:Ve,relevance:0},$t={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ee,{begin:/\[/,end:/\]/,relevance:0,contains:[ee]}]},Ht={scope:"title",begin:Xe,relevance:0},Gt={scope:"title",begin:Me,relevance:0},Ft={begin:"\\.\\s*"+Me,relevance:0},jt=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var ce=Object.freeze({__proto__:null,APOS_STRING_MODE:Rt,BACKSLASH_ESCAPE:ee,BINARY_NUMBER_MODE:zt,BINARY_NUMBER_RE:Ve,COMMENT:fe,C_BLOCK_COMMENT_MODE:Dt,C_LINE_COMMENT_MODE:Lt,C_NUMBER_MODE:Ut,C_NUMBER_RE:Ye,END_SAME_AS_BEGIN:jt,HASH_COMMENT_MODE:Bt,IDENT_RE:Xe,MATCH_NOTHING_RE:Ot,METHOD_GUARD:Ft,NUMBER_MODE:Pt,NUMBER_RE:qe,PHRASAL_WORDS_MODE:It,QUOTE_STRING_MODE:Ct,REGEXP_MODE:$t,RE_STARTERS_RE:Tt,SHEBANG:At,TITLE_MODE:Ht,UNDERSCORE_IDENT_RE:Me,UNDERSCORE_TITLE_MODE:Gt});function Kt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Zt(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Wt(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Kt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Xt(e,t){Array.isArray(e.illegal)&&(e.illegal=Ne(...e.illegal))}function qt(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Yt(e,t){e.relevance===void 0&&(e.relevance=1)}const Vt=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=$(n.beforeMatch,Ze(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Jt=["of","and","for","in","not","or","if","then","parent","list","value"],Qt="keyword";function Je(e,t,n=Qt){const i=Object.create(null);return typeof e=="string"?a(n,e.split(" ")):Array.isArray(e)?a(n,e):Object.keys(e).forEach(function(l){Object.assign(i,Je(e[l],t,l))}),i;function a(l,r){t&&(r=r.map(s=>s.toLowerCase())),r.forEach(function(s){const d=s.split("|");i[d[0]]=[l,en(d[0],d[1])]})}}function en(e,t){return t?Number(t):tn(e)?0:1}function tn(e){return Jt.includes(e.toLowerCase())}const Ue={},z=e=>{console.error(e)},ze=(e,...t)=>{console.log(`WARN: ${e}`,...t)},K=(e,t)=>{Ue[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ue[`${e}/${t}`]=!0)},ge=new Error;function Qe(e,t,{key:n}){let i=0;const a=e[n],l={},r={};for(let s=1;s<=t.length;s++)r[s+i]=a[s],l[s+i]=!0,i+=We(t[s-1]);e[n]=r,e[n]._emit=l,e[n]._multi=!0}function nn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw z("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ge;if(typeof e.beginScope!="object"||e.beginScope===null)throw z("beginScope must be object"),ge;Qe(e,e.begin,{key:"beginScope"}),e.begin=ke(e.begin,{joinWith:""})}}function on(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw z("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ge;if(typeof e.endScope!="object"||e.endScope===null)throw z("endScope must be object"),ge;Qe(e,e.end,{key:"endScope"}),e.end=ke(e.end,{joinWith:""})}}function rn(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function sn(e){rn(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),nn(e),on(e)}function an(e){function t(r,s){return new RegExp(Q(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,d){d.position=this.position++,this.matchIndexes[this.matchAt]=d,this.regexes.push([d,s]),this.matchAt+=We(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(d=>d[1]);this.matcherRe=t(ke(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const d=this.matcherRe.exec(s);if(!d)return null;const h=d.findIndex((M,N)=>N>0&&M!==void 0),E=this.matchIndexes[h];return d.splice(0,h),Object.assign(d,E)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const d=new n;return this.rules.slice(s).forEach(([h,E])=>d.addRule(h,E)),d.compile(),this.multiRegexes[s]=d,d}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,d){this.rules.push([s,d]),d.type==="begin"&&this.count++}exec(s){const d=this.getMatcher(this.regexIndex);d.lastIndex=this.lastIndex;let h=d.exec(s);if(this.resumingScanAtSamePosition()&&!(h&&h.index===this.lastIndex)){const E=this.getMatcher(0);E.lastIndex=this.lastIndex+1,h=E.exec(s)}return h&&(this.regexIndex+=h.position+1,this.regexIndex===this.count&&this.considerAll()),h}}function a(r){const s=new i;return r.contains.forEach(d=>s.addRule(d.begin,{rule:d,type:"begin"})),r.terminatorEnd&&s.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&s.addRule(r.illegal,{type:"illegal"}),s}function l(r,s){const d=r;if(r.isCompiled)return d;[Zt,qt,sn,Vt].forEach(E=>E(r,s)),e.compilerExtensions.forEach(E=>E(r,s)),r.__beforeBegin=null,[Wt,Xt,Yt].forEach(E=>E(r,s)),r.isCompiled=!0;let h=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),h=r.keywords.$pattern,delete r.keywords.$pattern),h=h||/\w+/,r.keywords&&(r.keywords=Je(r.keywords,e.case_insensitive)),d.keywordPatternRe=t(h,!0),s&&(r.begin||(r.begin=/\B|\b/),d.beginRe=t(d.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(d.endRe=t(d.end)),d.terminatorEnd=Q(d.end)||"",r.endsWithParent&&s.terminatorEnd&&(d.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(d.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(E){return cn(E==="self"?r:E)})),r.contains.forEach(function(E){l(E,d)}),r.starts&&l(r.starts,s),d.matcher=a(d),d}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=L(e.classNameAliases||{}),l(e)}function et(e){return e?e.endsWithParent||et(e.starts):!1}function cn(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return L(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:et(e)?L(e,{starts:e.starts?L(e.starts):null}):Object.isFrozen(e)?L(e):e}var ln="11.11.1";class dn extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const ve=Ke,$e=L,He=Symbol("nomatch"),un=7,tt=function(e){const t=Object.create(null),n=Object.create(null),i=[];let a=!0;const l="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:vt};function d(o){return s.noHighlightRe.test(o)}function h(o){let g=o.className+" ";g+=o.parentNode?o.parentNode.className:"";const f=s.languageDetectRe.exec(g);if(f){const m=T(f[1]);return m||(ze(l.replace("{}",f[1])),ze("Falling back to no-highlight mode for this block.",o)),m?f[1]:"no-highlight"}return g.split(/\s+/).find(m=>d(m)||T(m))}function E(o,g,f){let m="",w="";typeof g=="object"?(m=o,f=g.ignoreIllegals,w=g.language):(K("10.7.0","highlight(lang, code, ...args) has been deprecated."),K("10.7.0",`Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277`),w=o,m=g),f===void 0&&(f=!0);const x={code:m,language:w};j("before:highlight",x);const O=x.result?x.result:M(x.language,x.code,f);return O.code=x.code,j("after:highlight",O),O}function M(o,g,f,m){const w=Object.create(null);function x(c,u){return c.keywords[u]}function O(){if(!p.keywords){v.addText(_);return}let c=0;p.keywordPatternRe.lastIndex=0;let u=p.keywordPatternRe.exec(_),b="";for(;u;){b+=_.substring(c,u.index);const y=R.case_insensitive?u[0].toLowerCase():u[0],S=x(p,y);if(S){const[I,bt]=S;if(v.addText(b),b="",w[y]=(w[y]||0)+1,w[y]<=un&&(ae+=bt),I.startsWith("_"))b+=u[0];else{const mt=R.classNameAliases[I]||I;A(u[0],mt)}}else b+=u[0];c=p.keywordPatternRe.lastIndex,u=p.keywordPatternRe.exec(_)}b+=_.substring(c),v.addText(b)}function P(){if(_==="")return;let c=null;if(typeof p.subLanguage=="string"){if(!t[p.subLanguage]){v.addText(_);return}c=M(p.subLanguage,_,!0,Le[p.subLanguage]),Le[p.subLanguage]=c._top}else c=C(_,p.subLanguage.length?p.subLanguage:null);p.relevance>0&&(ae+=c.relevance),v.__addSublanguage(c._emitter,c.language)}function k(){p.subLanguage!=null?P():O(),_=""}function A(c,u){c!==""&&(v.startScope(u),v.addText(c),v.endScope())}function Ae(c,u){let b=1;const y=u.length-1;for(;b<=y;){if(!c._emit[b]){b++;continue}const S=R.classNameAliases[c[b]]||c[b],I=u[b];S?A(I,S):(_=I,O(),_=""),b++}}function Re(c,u){return c.scope&&typeof c.scope=="string"&&v.openNode(R.classNameAliases[c.scope]||c.scope),c.beginScope&&(c.beginScope._wrap?(A(_,R.classNameAliases[c.beginScope._wrap]||c.beginScope._wrap),_=""):c.beginScope._multi&&(Ae(c.beginScope,u),_="")),p=Object.create(c,{parent:{value:p}}),p}function Ce(c,u,b){let y=kt(c.endRe,b);if(y){if(c["on:end"]){const S=new De(c);c["on:end"](u,S),S.isMatchIgnored&&(y=!1)}if(y){for(;c.endsParent&&c.parent;)c=c.parent;return c}}if(c.endsWithParent)return Ce(c.parent,u,b)}function ut(c){return p.matcher.regexIndex===0?(_+=c[0],1):(we=!0,0)}function gt(c){const u=c[0],b=c.rule,y=new De(b),S=[b.__beforeBegin,b["on:begin"]];for(const I of S)if(I&&(I(c,y),y.isMatchIgnored))return ut(u);return b.skip?_+=u:(b.excludeBegin&&(_+=u),k(),!b.returnBegin&&!b.excludeBegin&&(_=u)),Re(b,c),b.returnBegin?0:u.length}function ft(c){const u=c[0],b=g.substring(c.index),y=Ce(p,c,b);if(!y)return He;const S=p;p.endScope&&p.endScope._wrap?(k(),A(u,p.endScope._wrap)):p.endScope&&p.endScope._multi?(k(),Ae(p.endScope,c)):S.skip?_+=u:(S.returnEnd||S.excludeEnd||(_+=u),k(),S.excludeEnd&&(_=u));do p.scope&&v.closeNode(),!p.skip&&!p.subLanguage&&(ae+=p.relevance),p=p.parent;while(p!==y.parent);return y.starts&&Re(y.starts,c),S.returnEnd?0:u.length}function pt(){const c=[];for(let u=p;u!==R;u=u.parent)u.scope&&c.unshift(u.scope);c.forEach(u=>v.openNode(u))}let se={};function Ie(c,u){const b=u&&u[0];if(_+=c,b==null)return k(),0;if(se.type==="begin"&&u.type==="end"&&se.index===u.index&&b===""){if(_+=g.slice(u.index,u.index+1),!a){const y=new Error(`0 width match regex (${o})`);throw y.languageName=o,y.badRule=se.rule,y}return 1}if(se=u,u.type==="begin")return gt(u);if(u.type==="illegal"&&!f){const y=new Error('Illegal lexeme "'+b+'" for mode "'+(p.scope||"")+'"');throw y.mode=p,y}else if(u.type==="end"){const y=ft(u);if(y!==He)return y}if(u.type==="illegal"&&b==="")return _+=` `,1;if(_e>1e5&&_e>u.index*3)throw new Error("potential infinite loop, way more iterations than matches");return _+=b,b.length}const R=T(o);if(!R)throw z(l.replace("{}",o)),new Error('Unknown language: "'+o+'"');const ht=an(R);let ye="",p=m||ht;const Le={},v=new s.__emitter(s);pt();let _="",ae=0,U=0,_e=0,we=!1;try{if(R.__emitTokens)R.__emitTokens(g,v);else{for(p.matcher.considerAll();;){_e++,we?we=!1:p.matcher.considerAll(),p.matcher.lastIndex=U;const c=p.matcher.exec(g);if(!c)break;const u=g.substring(U,c.index),b=Ie(u,c);U=c.index+b}Ie(g.substring(U))}return v.finalize(),ye=v.toHTML(),{language:o,value:ye,relevance:ae,illegal:!1,_emitter:v,_top:p}}catch(c){if(c.message&&c.message.includes("Illegal"))return{language:o,value:ve(g),illegal:!0,relevance:0,_illegalBy:{message:c.message,index:U,context:g.slice(U-100,U+100),mode:c.mode,resultSoFar:ye},_emitter:v};if(a)return{language:o,value:ve(g),illegal:!1,relevance:0,errorRaised:c,_emitter:v,_top:p};throw c}}function N(o){const g={value:ve(o),illegal:!1,relevance:0,_top:r,_emitter:new s.__emitter(s)};return g._emitter.addText(o),g}function C(o,g){g=g||s.languages||Object.keys(t);const f=N(o),m=g.filter(T).filter(re).map(k=>M(k,o,!1));m.unshift(f);const w=m.sort((k,A)=>{if(k.relevance!==A.relevance)return A.relevance-k.relevance;if(k.language&&A.language){if(T(k.language).supersetOf===A.language)return 1;if(T(A.language).supersetOf===k.language)return-1}return 0}),[x,O]=w,P=x;return P.secondBest=O,P}function G(o,g,f){const m=g&&n[g]||f;o.classList.add("hljs"),o.classList.add(`language-${m}`)}function F(o){let g=null;const f=h(o);if(d(f))return;if(j("before:highlightElement",{el:o,language:f}),o.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",o);return}if(o.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(o)),s.throwUnescapedHTML))throw new dn("One of your code blocks includes unescaped HTML.",o.innerHTML);g=o;const m=g.textContent,w=f?E(m,{language:f,ignoreIllegals:!0}):C(m);o.innerHTML=w.value,o.dataset.highlighted="yes",G(o,f,w.language),o.result={language:w.language,re:w.relevance,relevance:w.relevance},w.secondBest&&(o.secondBest={language:w.secondBest.language,relevance:w.secondBest.relevance}),j("after:highlightElement",{el:o,result:w,text:m})}function ie(o){s=$e(s,o)}const Te=()=>{D(),K("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function X(){D(),K("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let q=!1;function D(){function o(){D()}if(document.readyState==="loading"){q||window.addEventListener("DOMContentLoaded",o,!1),q=!0;return}document.querySelectorAll(s.cssSelector).forEach(F)}function Y(o,g){let f=null;try{f=g(e)}catch(m){if(z("Language definition for '{}' could not be registered.".replace("{}",o)),a)z(m);else throw m;f=r}f.name||(f.name=o),t[o]=f,f.rawDefinition=g.bind(null,e),f.aliases&&oe(f.aliases,{languageName:o})}function B(o){delete t[o];for(const g of Object.keys(n))n[g]===o&&delete n[g]}function pe(){return Object.keys(t)}function T(o){return o=(o||"").toLowerCase(),t[o]||t[n[o]]}function oe(o,{languageName:g}){typeof o=="string"&&(o=[o]),o.forEach(f=>{n[f.toLowerCase()]=g})}function re(o){const g=T(o);return g&&!g.disableAutodetect}function he(o){o["before:highlightBlock"]&&!o["before:highlightElement"]&&(o["before:highlightElement"]=g=>{o["before:highlightBlock"](Object.assign({block:g.el},g))}),o["after:highlightBlock"]&&!o["after:highlightElement"]&&(o["after:highlightElement"]=g=>{o["after:highlightBlock"](Object.assign({block:g.el},g))})}function be(o){he(o),i.push(o)}function me(o){const g=i.indexOf(o);g!==-1&&i.splice(g,1)}function j(o,g){const f=o;i.forEach(function(m){m[f]&&m[f](g)})}function Ee(o){return K("10.7.0","highlightBlock will be removed entirely in v12.0"),K("10.7.0","Please use highlightElement now."),F(o)}Object.assign(e,{highlight:E,highlightAuto:C,highlightAll:D,highlightElement:F,highlightBlock:Ee,configure:ie,initHighlighting:Te,initHighlightingOnLoad:X,registerLanguage:Y,unregisterLanguage:B,listLanguages:pe,getLanguage:T,registerAliases:oe,autoDetection:re,inherit:$e,addPlugin:be,removePlugin:me}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=ln,e.regex={concat:$,lookahead:Ze,either:Ne,optional:St,anyNumberOfTimes:xt};for(const o in ce)typeof ce[o]=="object"&&je(ce[o]);return Object.assign(e,ce),e},W=tt({});W.newInstance=()=>tt({});var gn=W;W.HighlightJS=W;W.default=W;const te=Et(gn),Ge="[A-Za-z$_][0-9A-Za-z$_]*",fn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],pn=["true","false","null","undefined","NaN","Infinity"],nt=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],it=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],ot=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],hn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],bn=[].concat(ot,nt,it);function mn(e){const t=e.regex,n=(f,{after:m})=>{const w="",end:""},l=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(f,m)=>{const w=f[0].length+f.index,x=f.input[w];if(x==="<"||x===","){m.ignoreMatch();return}x===">"&&(n(f,{after:w})||m.ignoreMatch());let O;const P=f.input.substring(w);if(O=P.match(/^\s*=/)){m.ignoreMatch();return}if((O=P.match(/^\s+extends\s+/))&&O.index===0){m.ignoreMatch();return}}},s={$pattern:Ge,keyword:fn,literal:pn,built_in:bn,"variable.language":hn},d="[0-9](_?[0-9])*",h=`\\.(${d})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",M={className:"number",variants:[{begin:`(\\b(${E})((${h})|\\.)?|(${h}))[eE][+-]?(${d})\\b`},{begin:`\\b(${E})\\b((${h})\\b|\\.)?|(${h})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},C={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},G={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"css"}},F={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},ie={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,N]},X={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},q=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,C,G,F,ie,{match:/\$\d+/},M];N.contains=q.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(q)});const D=[].concat(X,N.contains),Y=D.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(D)}]),B={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:Y},pe={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,t.concat(i,"(",t.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...nt,...it]}},oe={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},re={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[B],illegal:/%/},he={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function be(f){return t.concat("(?!",f.join("|"),")")}const me={match:t.concat(/\b/,be([...ot,"super","import"].map(f=>`${f}\\s*\\(`)),i,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},j={begin:t.concat(/\./,t.lookahead(t.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ee={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},B]},o="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(o)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[B]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:Y,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),oe,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,C,G,F,ie,X,{match:/\$\d+/},M,T,{scope:"attr",match:i+t.lookahead(":"),relevance:0},g,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[X,e.REGEXP_MODE,{className:"function",begin:o,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:Y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a.begin,end:a.end},{match:l},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},re,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[B,e.inherit(e.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},j,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[B]},me,he,pe,Ee,{match:/\$[(.]/}]}}const En=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),yn=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],_n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],wn=[...yn,..._n],vn=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),xn=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Sn=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Nn=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function kn(e){const t=e.regex,n=En(e),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},a="and or not only",l=/@-?\w[\w]*(-\w+)*/,r="[a-zA-Z-][a-zA-Z0-9_-]*",s=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,i,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+r,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+xn.join("|")+")"},{begin:":(:)?("+Sn.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Nn.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...s,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...s,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:l},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:a,attribute:vn.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...s,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+wn.join("|")+")\\b"}]}}function Mn(e){const t={variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},i={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},t]},a={begin:/\{/,end:/\}/,contains:i.contains},l={className:"string",begin:"'\\\\?.",end:"'",illegal:"."};return{name:"Elm",keywords:["let","in","if","then","else","case","of","where","module","import","exposing","type","alias","as","infix","infixl","infixr","port","effect","command","subscription"],contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[i,t],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,i,a,t]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,t]},{begin:"port",end:"$",keywords:"port",contains:[t]},l,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,n,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),t,{begin:"->|<-"}],illegal:/;/}}function On(e){const t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),i=/[\p{L}0-9._:-]+/u,a={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},l={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(l,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:"string"}),d=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),h={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[l,d,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[l,r,d,s]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[d]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[h],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[h],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:h}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}const le=(e,t,n)=>{const i=document.createElement("div");i.className=`simply-section ${e}`;const a=document.createElement("div"),l=document.createElement("span"),r=document.createElement("span");return l.className="simply-amount",r.className="simply-word",l.textContent=String(t),r.textContent=n,a.appendChild(l),a.appendChild(r),i.appendChild(a),i},Tn=(e,t,n)=>{const i=e.querySelector(".simply-amount"),a=e.querySelector(".simply-word");i&&(i.textContent=String(t)),a&&(a.textContent=n)},An=e=>{const t=le("simply-days-section",0,"day"),n=le("simply-hours-section",0,"hour"),i=le("simply-minutes-section",0,"minute"),a=le("simply-seconds-section",0,"second");return e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(a),{days:t,hours:n,minutes:i,seconds:a}};/*! * Project : simplyCountdown diff --git a/docs/dist/assets/main.min.js.map b/docs/dist/assets/main.min.js.map index 16cfb2e..1f23dab 100644 --- a/docs/dist/assets/main.min.js.map +++ b/docs/dist/assets/main.min.js.map @@ -1 +1 @@ -{"version":3,"file":"main.min.js","sources":["../../../node_modules/highlight.js/lib/core.js","../../../node_modules/highlight.js/es/languages/javascript.js","../../../node_modules/highlight.js/es/languages/css.js","../../../node_modules/highlight.js/es/languages/elm.js","../../../node_modules/highlight.js/es/languages/xml.js","../../../src/core/dom.ts","../../../src/core/simplyCountdown.ts","../../src/main.js"],"sourcesContent":["/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '';\n\n/**\n * Determines if a node needs to be wrapped in \n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += ``;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record | Array} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record */\n const emit = {};\n /** @type Record */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.0\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record} */\n const languages = Object.create(null);\n /** @type {Record} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \" {\n const tag = \"',\n end: ''\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // ``\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // (key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: CSS\nCategory: common, css, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/\n\n\n/** @type LanguageFn */\nfunction css(hljs) {\n const regex = hljs.regex;\n const modes = MODES(hljs);\n const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n\n return {\n name: 'CSS',\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: { keyframePosition: \"from to\" },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\" },\n contains: [\n modes.BLOCK_COMMENT,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.' + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n variants: [\n { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' },\n { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n // attribute values\n {\n begin: /:/,\n end: /[;}{]/,\n contains: [\n modes.BLOCK_COMMENT,\n modes.HEXCOLOR,\n modes.IMPORTANT,\n modes.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0, // from keywords\n keywords: { built_in: \"url data-uri\" },\n contains: [\n ...STRINGS,\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n },\n {\n begin: regex.lookahead(/@/),\n end: '[{;]',\n relevance: 0,\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n modes.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b'\n }\n ]\n };\n}\n\nexport { css as default };\n","/*\nLanguage: Elm\nAuthor: Janis Voigtlaender \nWebsite: https://elm-lang.org\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction elm(hljs) {\n const COMMENT = { variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n /\\{-/,\n /-\\}/,\n { contains: [ 'self' ] }\n )\n ] };\n\n const CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)',\n illegal: '\"',\n contains: [\n {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'\n },\n COMMENT\n ]\n };\n\n const RECORD = {\n begin: /\\{/,\n end: /\\}/,\n contains: LIST.contains\n };\n\n const CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.',\n end: '\\'',\n illegal: '.'\n };\n\n const KEYWORDS = [\n \"let\",\n \"in\",\n \"if\",\n \"then\",\n \"else\",\n \"case\",\n \"of\",\n \"where\",\n \"module\",\n \"import\",\n \"exposing\",\n \"type\",\n \"alias\",\n \"as\",\n \"infix\",\n \"infixl\",\n \"infixr\",\n \"port\",\n \"effect\",\n \"command\",\n \"subscription\"\n ];\n\n return {\n name: 'Elm',\n keywords: KEYWORDS,\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module',\n end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import',\n end: '$',\n keywords: 'import as exposing',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type',\n end: '$',\n keywords: 'type alias',\n contains: [\n CONSTRUCTOR,\n LIST,\n RECORD,\n COMMENT\n ]\n },\n {\n beginKeywords: 'infix infixl infixr',\n end: '$',\n contains: [\n hljs.C_NUMBER_MODE,\n COMMENT\n ]\n },\n {\n begin: 'port',\n end: '$',\n keywords: 'port',\n contains: [ COMMENT ]\n },\n\n // Literals and names.\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, { begin: '^[_a-z][\\\\w\\']*' }),\n COMMENT,\n\n { // No markup, relevance booster\n begin: '->|<-' }\n ],\n illegal: /;/\n };\n}\n\nexport { elm as default };\n","/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /`]+/ }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: 'meta',\n begin: //,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: //,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n //,\n { relevance: 10 }\n ),\n {\n begin: //,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/,\n }\n ]\n\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n ')/,\n end: />/,\n keywords: { name: 'style' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the