From 01f0530bbb2224138af078571172af8bd469e6f6 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 10:35:09 +0530 Subject: [PATCH 01/12] refactor(examples): switch to node test runner --- package-lock.json | 12192 ++++++---------- package.json | 4 +- src/step-06-testing/package.json | 2 +- src/step-06-testing/test/login.test.js | 15 +- src/step-06-testing/test/users.test.js | 11 +- src/step-07-serialization/package.json | 2 +- src/step-07-serialization/test/login.test.js | 73 +- src/step-07-serialization/test/users.test.js | 11 +- src/step-08-authentication/package.json | 2 +- src/step-08-authentication/test/login.test.js | 23 +- src/step-08-authentication/test/users.test.js | 11 +- src/step-09-config/package.json | 2 +- src/step-09-config/test/login.test.js | 22 +- src/step-09-config/test/users.test.js | 11 +- src/step-10-decorators/package.json | 2 +- .../plugins/authenticate.js | 1 + .../test/authenticate.test.js | 41 +- src/step-10-decorators/test/index.test.js | 9 +- src/step-10-decorators/test/login.test.js | 22 +- src/step-10-decorators/test/users.test.js | 11 +- src/step-11-hooks/package.json | 2 +- .../test/unit/authenticate.test.js | 13 +- src/step-11-hooks/test/unit/index.test.js | 8 +- src/step-11-hooks/test/unit/login.test.js | 22 +- src/step-11-hooks/test/unit/user.test.js | 16 +- src/step-11-hooks/test/unit/users.test.js | 11 +- src/step-12-autoload/package.json | 2 +- .../test/integration/index.test.js | 63 +- .../test/unit/authenticate.test.js | 31 +- src/step-12-autoload/test/unit/index.test.js | 7 +- src/step-12-autoload/test/unit/login.test.js | 22 +- src/step-12-autoload/test/unit/user.test.js | 14 +- src/step-12-autoload/test/unit/users.test.js | 11 +- src/step-13-database/package.json | 2 +- .../test/integration/index.test.js | 19 +- .../test/unit/authenticate.test.js | 37 +- src/step-13-database/test/unit/index.test.js | 7 +- src/step-13-database/test/unit/login.test.js | 36 +- src/step-13-database/test/unit/user.test.js | 16 +- src/step-13-database/test/unit/users.test.js | 18 +- src/step-14-typescript/package.json | 2 +- .../test/authenticate.test.ts | 11 +- src/step-14-typescript/test/index.test.ts | 12 +- src/step-14-typescript/test/login.test.ts | 23 +- src/step-14-typescript/test/users.test.ts | 12 +- 45 files changed, 4577 insertions(+), 8307 deletions(-) diff --git a/package-lock.json b/package-lock.json index b95809cf..d587cff4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,6 @@ "@types/http-errors": "^2.0.2", "@types/node": "^20.8.6", "@types/sinon": "^17.0.1", - "@types/tap": "^15.0.8", "@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/parser": "^5.62.0", "c8": "^8.0.1", @@ -43,7 +42,6 @@ "postgrator-cli": "^7.0.0", "prettier": "^3.0.3", "sinon": "^17.0.1", - "tap": "^18.7.0", "ts-node-dev": "^2.0.0", "typescript": "^5.2.2" } @@ -76,40 +74,6 @@ "node": ">=0.10.0" } }, - "node_modules/@alcalzone/ansi-tokenize": { - "version": "0.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=14.13.1" - } - }, - "node_modules/@alcalzone/ansi-tokenize/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@alcalzone/ansi-tokenize/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "license": "Apache-2.0", @@ -635,11 +599,6 @@ "node": ">=6.9.0" } }, - "node_modules/@base2/pretty-print-object": { - "version": "1.0.1", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "dev": true, @@ -955,53 +914,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009": { - "version": "10.9.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node14": "*", - "@tsconfig/node16": "*", - "@tsconfig/node18": "*", - "@tsconfig/node20": "*", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=4.2" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/node_modules/diff": { - "version": "4.0.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "dev": true, @@ -1130,44 +1042,38 @@ "node": ">= 8" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@npmcli/fs": { - "version": "3.1.0", - "dev": true, - "license": "ISC", + "node_modules/@nuxt/kit": { + "version": "3.9.3", + "license": "MIT", + "optional": true, "dependencies": { - "semver": "^7.3.5" + "@nuxt/schema": "3.9.3", + "c12": "^1.6.1", + "consola": "^3.2.3", + "defu": "^6.1.4", + "globby": "^14.0.0", + "hash-sum": "^2.0.0", + "ignore": "^5.3.0", + "jiti": "^1.21.0", + "knitwork": "^1.0.0", + "mlly": "^1.5.0", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "scule": "^1.2.0", + "semver": "^7.5.4", + "ufo": "^1.3.2", + "unctx": "^2.3.1", + "unimport": "^3.7.1", + "untyped": "^1.4.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/@npmcli/fs/node_modules/lru-cache": { + "node_modules/@nuxt/kit/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -1175,10 +1081,10 @@ "node": ">=10" } }, - "node_modules/@npmcli/fs/node_modules/semver": { + "node_modules/@nuxt/kit/node_modules/semver": { "version": "7.5.4", - "dev": true, "license": "ISC", + "optional": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -1189,3564 +1095,2942 @@ "node": ">=10" } }, - "node_modules/@npmcli/fs/node_modules/yallist": { + "node_modules/@nuxt/kit/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/git": { - "version": "5.0.4", - "dev": true, "license": "ISC", + "optional": true + }, + "node_modules/@nuxt/schema": { + "version": "3.9.3", + "license": "MIT", + "optional": true, "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" + "@nuxt/ui-templates": "^1.3.1", + "consola": "^3.2.3", + "defu": "^6.1.4", + "hookable": "^5.5.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "scule": "^1.2.0", + "std-env": "^3.7.0", + "ufo": "^1.3.2", + "unimport": "^3.7.1", + "untyped": "^1.4.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "node_modules/@nuxt/ui-templates": { + "version": "1.3.1", + "license": "CC-BY-ND-4.0", + "optional": true }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "node_modules/@pdf-lib/standard-fonts": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "pako": "^1.0.6" } }, - "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/@pdf-lib/upng": { + "version": "1.0.1", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "pako": "^1.0.10" } }, - "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "MIT", + "optional": true, "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "dev": true, - "license": "ISC", + "node_modules/@polka/url": { + "version": "1.0.0-next.24", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@npmcli/git/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" + "node_modules/@sinclair/typebox": { + "version": "0.31.28", + "license": "MIT" }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "dev": true, - "license": "ISC", + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "license": "MIT", + "optional": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@npmcli/package-json": { - "version": "5.0.0", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "type-detect": "4.0.8" } }, - "node_modules/@npmcli/package-json/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "balanced-match": "^1.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/foreground-child": { - "version": "3.1.1", + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.3.10", + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, + "node_modules/@slidev/cli": { + "version": "0.43.15", + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.6", + "@hedgedoc/markdown-it-plugins": "^2.1.4", + "@iconify-json/carbon": "^1.1.21", + "@iconify-json/ph": "^1.1.6", + "@lillallol/outline-pdf": "^4.0.0", + "@mrdrogdrog/optional": "^1.2.1", + "@slidev/client": "0.43.15", + "@slidev/parser": "0.43.15", + "@slidev/types": "0.43.15", + "@unocss/extractor-mdc": "^0.57.3", + "@unocss/reset": "^0.57.3", + "@vitejs/plugin-vue": "^4.4.1", + "@vitejs/plugin-vue-jsx": "^3.0.2", + "@windicss/config": "^1.9.1", + "cli-progress": "^3.12.0", + "codemirror": "^5.65.5", + "connect": "^3.7.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "fs-extra": "^11.1.1", + "get-port-please": "^3.1.1", + "global-directory": "^4.0.1", + "htmlparser2": "^9.0.0", + "import-from": "^4.0.0", + "is-installed-globally": "^1.0.0", + "jiti": "^1.21.0", + "js-base64": "^3.7.5", + "katex": "^0.16.9", + "kolorist": "^1.8.0", + "localtunnel": "^2.0.2", + "markdown-it": "^13.0.2", + "markdown-it-footnote": "^3.0.3", + "markdown-it-link-attributes": "^4.0.1", + "markdown-it-mdc": "^0.1.4", + "monaco-editor": "^0.37.1", + "nanoid": "^5.0.3", + "open": "^9.1.0", + "pdf-lib": "^1.17.1", + "plantuml-encoder": "^1.4.0", + "postcss-nested": "^6.0.1", + "prismjs": "^1.29.0", + "prompts": "^2.4.2", + "public-ip": "^6.0.1", + "resolve": "^1.22.8", + "resolve-from": "^5.0.0", + "resolve-global": "^2.0.0", + "shiki": "npm:shikiji-compat@^0.6.12", + "unocss": "^0.57.3", + "unplugin-icons": "^0.17.3", + "unplugin-vue-components": "^0.25.2", + "unplugin-vue-markdown": "^0.25.0", + "uqr": "^0.1.2", + "vite": "^4.5.0", + "vite-plugin-inspect": "^0.7.42", + "vite-plugin-remote-assets": "^0.3.2", + "vite-plugin-static-copy": "^0.17.0", + "vite-plugin-vue-server-ref": "^0.3.4", + "vite-plugin-windicss": "^1.9.1", + "vitefu": "^0.2.5", + "vue": "^3.3.8", + "windicss": "^3.5.6", + "yargs": "^17.7.2" }, "bin": { - "glob": "dist/esm/bin.mjs" + "slidev": "bin/slidev.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/package-json/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "url": "https://github.com/sponsors/antfu" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "playwright-chromium": "^1.10.0" + }, + "peerDependenciesMeta": { + "playwright-chromium": { + "optional": true + } } }, - "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", + "node_modules/@slidev/client": { + "version": "0.43.15", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@antfu/utils": "^0.7.6", + "@slidev/parser": "0.43.15", + "@slidev/types": "0.43.15", + "@unhead/vue": "^1.8.3", + "@unocss/reset": "^0.57.3", + "@vueuse/core": "^10.5.0", + "@vueuse/math": "^10.5.0", + "@vueuse/motion": "^2.0.0", + "codemirror": "^5.65.5", + "defu": "^6.1.3", + "drauu": "^0.3.7", + "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", + "js-base64": "^3.7.5", + "js-yaml": "^4.1.0", + "katex": "^0.16.9", + "mermaid": "^10.6.1", + "monaco-editor": "^0.37.1", + "nanoid": "^5.0.3", + "prettier": "^3.0.3", + "recordrtc": "^5.6.2", + "resolve": "^1.22.8", + "unocss": "^0.57.3", + "vite-plugin-windicss": "^1.9.1", + "vue": "^3.3.8", + "vue-router": "^4.2.5", + "vue-starport": "^0.4.0", + "windicss": "^3.5.6" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@npmcli/package-json/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/@slidev/parser": { + "version": "0.43.15", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@slidev/types": "0.43.15", + "js-yaml": "^4.1.0" }, "engines": { - "node": ">=10" + "node": ">=18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@npmcli/package-json/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", + "node_modules/@slidev/types": { + "version": "0.43.15", + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@npmcli/package-json/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", - "dev": true, - "license": "ISC", + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "license": "MIT", "dependencies": { - "which": "^4.0.0" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14.16" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", + "node_modules/@tsconfig/node10": { + "version": "1.0.9", "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "license": "MIT" }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", + "node_modules/@tsconfig/node12": { + "version": "1.0.11", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/run-script": { - "version": "7.0.4", + "node_modules/@tsconfig/node18": { + "version": "18.2.2", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@types/d3-time": "*" } }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "license": "MIT" }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } + "node_modules/@types/d3-time": { + "version": "3.0.3", + "license": "MIT" }, - "node_modules/@nuxt/kit": { - "version": "3.9.3", + "node_modules/@types/debug": { + "version": "4.1.12", "license": "MIT", - "optional": true, "dependencies": { - "@nuxt/schema": "3.9.3", - "c12": "^1.6.1", - "consola": "^3.2.3", - "defu": "^6.1.4", - "globby": "^14.0.0", - "hash-sum": "^2.0.0", - "ignore": "^5.3.0", - "jiti": "^1.21.0", - "knitwork": "^1.0.0", - "mlly": "^1.5.0", - "pathe": "^1.1.2", - "pkg-types": "^1.0.3", - "scule": "^1.2.0", - "semver": "^7.5.4", - "ufo": "^1.3.2", - "unctx": "^2.3.1", - "unimport": "^3.7.1", - "untyped": "^1.4.0" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0" + "@types/ms": "*" } }, - "node_modules/@nuxt/kit/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/@types/estree": { + "version": "1.0.5", + "license": "MIT" }, - "node_modules/@nuxt/kit/node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "optional": true, + "node_modules/@types/hast": { + "version": "3.0.3", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@types/unist": "*" } }, - "node_modules/@nuxt/kit/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC", - "optional": true + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "license": "MIT" }, - "node_modules/@nuxt/schema": { - "version": "3.9.3", + "node_modules/@types/http-errors": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "13.0.7", "license": "MIT", - "optional": true, "dependencies": { - "@nuxt/ui-templates": "^1.3.1", - "consola": "^3.2.3", - "defu": "^6.1.4", - "hookable": "^5.5.3", - "pathe": "^1.1.2", - "pkg-types": "^1.0.3", - "scule": "^1.2.0", - "std-env": "^3.7.0", - "ufo": "^1.3.2", - "unimport": "^3.7.1", - "untyped": "^1.4.0" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0" + "@types/linkify-it": "*", + "@types/mdurl": "*" } }, - "node_modules/@nuxt/ui-templates": { - "version": "1.3.1", - "license": "CC-BY-ND-4.0", - "optional": true - }, - "node_modules/@pdf-lib/standard-fonts": { - "version": "1.0.0", + "node_modules/@types/mdast": { + "version": "3.0.15", "license": "MIT", "dependencies": { - "pako": "^1.0.6" + "@types/unist": "^2" } }, - "node_modules/@pdf-lib/upng": { - "version": "1.0.1", + "node_modules/@types/mdurl": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.11.10", + "devOptional": true, "license": "MIT", "dependencies": { - "pako": "^1.0.10" + "undici-types": "~5.26.4" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", + "node_modules/@types/semver": { + "version": "7.5.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sinon": { + "version": "17.0.3", "dev": true, "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" + "dependencies": { + "@types/sinonjs__fake-timers": "*" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.24", + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "dev": true, "license": "MIT" }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "rollup": { + "typescript": { "optional": true } } }, - "node_modules/@sigstore/bundle": { - "version": "2.1.1", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@sigstore/core": { - "version": "0.2.0", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", "dev": true, - "license": "Apache-2.0", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/@sigstore/sign": { - "version": "2.2.1", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", "dependencies": { - "@sigstore/bundle": "^2.1.1", - "@sigstore/core": "^0.2.0", - "@sigstore/protobuf-specs": "^0.2.1", - "make-fetch-happen": "^13.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@sigstore/tuf": { - "version": "2.3.0", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.2.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@sigstore/verify": { - "version": "0.1.0", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@sigstore/bundle": "^2.1.1", - "@sigstore/core": "^0.2.0", - "@sigstore/protobuf-specs": "^0.2.1" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.31.28", - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "license": "MIT", - "engines": { - "node": ">=14.16" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "1.0.0", + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", "dev": true, - "license": "(Unlicense OR Apache-2.0)" - }, - "node_modules/@slidev/cli": { - "version": "0.43.15", - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@antfu/utils": "^0.7.6", - "@hedgedoc/markdown-it-plugins": "^2.1.4", - "@iconify-json/carbon": "^1.1.21", - "@iconify-json/ph": "^1.1.6", - "@lillallol/outline-pdf": "^4.0.0", - "@mrdrogdrog/optional": "^1.2.1", - "@slidev/client": "0.43.15", - "@slidev/parser": "0.43.15", - "@slidev/types": "0.43.15", - "@unocss/extractor-mdc": "^0.57.3", - "@unocss/reset": "^0.57.3", - "@vitejs/plugin-vue": "^4.4.1", - "@vitejs/plugin-vue-jsx": "^3.0.2", - "@windicss/config": "^1.9.1", - "cli-progress": "^3.12.0", - "codemirror": "^5.65.5", - "connect": "^3.7.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "fs-extra": "^11.1.1", - "get-port-please": "^3.1.1", - "global-directory": "^4.0.1", - "htmlparser2": "^9.0.0", - "import-from": "^4.0.0", - "is-installed-globally": "^1.0.0", - "jiti": "^1.21.0", - "js-base64": "^3.7.5", - "katex": "^0.16.9", - "kolorist": "^1.8.0", - "localtunnel": "^2.0.2", - "markdown-it": "^13.0.2", - "markdown-it-footnote": "^3.0.3", - "markdown-it-link-attributes": "^4.0.1", - "markdown-it-mdc": "^0.1.4", - "monaco-editor": "^0.37.1", - "nanoid": "^5.0.3", - "open": "^9.1.0", - "pdf-lib": "^1.17.1", - "plantuml-encoder": "^1.4.0", - "postcss-nested": "^6.0.1", - "prismjs": "^1.29.0", - "prompts": "^2.4.2", - "public-ip": "^6.0.1", - "resolve": "^1.22.8", - "resolve-from": "^5.0.0", - "resolve-global": "^2.0.0", - "shiki": "npm:shikiji-compat@^0.6.12", - "unocss": "^0.57.3", - "unplugin-icons": "^0.17.3", - "unplugin-vue-components": "^0.25.2", - "unplugin-vue-markdown": "^0.25.0", - "uqr": "^0.1.2", - "vite": "^4.5.0", - "vite-plugin-inspect": "^0.7.42", - "vite-plugin-remote-assets": "^0.3.2", - "vite-plugin-static-copy": "^0.17.0", - "vite-plugin-vue-server-ref": "^0.3.4", - "vite-plugin-windicss": "^1.9.1", - "vitefu": "^0.2.5", - "vue": "^3.3.8", - "windicss": "^3.5.6", - "yargs": "^17.7.2" - }, - "bin": { - "slidev": "bin/slidev.mjs" + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "playwright-chromium": "^1.10.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "playwright-chromium": { + "typescript": { "optional": true } } }, - "node_modules/@slidev/client": { - "version": "0.43.15", + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "dev": true, "license": "MIT", "dependencies": { - "@antfu/utils": "^0.7.6", - "@slidev/parser": "0.43.15", - "@slidev/types": "0.43.15", - "@unhead/vue": "^1.8.3", - "@unocss/reset": "^0.57.3", - "@vueuse/core": "^10.5.0", - "@vueuse/math": "^10.5.0", - "@vueuse/motion": "^2.0.0", - "codemirror": "^5.65.5", - "defu": "^6.1.3", - "drauu": "^0.3.7", - "file-saver": "^2.0.5", - "fuse.js": "^7.0.0", - "js-base64": "^3.7.5", - "js-yaml": "^4.1.0", - "katex": "^0.16.9", - "mermaid": "^10.6.1", - "monaco-editor": "^0.37.1", - "nanoid": "^5.0.3", - "prettier": "^3.0.3", - "recordrtc": "^5.6.2", - "resolve": "^1.22.8", - "unocss": "^0.57.3", - "vite-plugin-windicss": "^1.9.1", - "vue": "^3.3.8", - "vue-router": "^4.2.5", - "vue-starport": "^0.4.0", - "windicss": "^3.5.6" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@slidev/parser": { - "version": "0.43.15", - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", "dependencies": { - "@slidev/types": "0.43.15", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">=18.0.0" + "yallist": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@slidev/types": { - "version": "0.43.15", - "license": "MIT", "engines": { - "node": ">=18.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node": ">=10" } }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", "dependencies": { - "defer-to-connect": "^2.0.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=14.16" + "node": ">=10" } }, - "node_modules/@tapjs/after": { - "version": "1.1.18", + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "is-actual-promise": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "node": ">=8" } }, - "node_modules/@tapjs/after-each": { - "version": "1.1.18", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "function-loop": "^4.0.0" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" - } + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/@tapjs/asserts": { - "version": "1.1.18", + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "@tapjs/stack": "1.2.7", - "is-actual-promise": "^1.0.0", - "tcompare": "6.4.5", - "trivial-deferred": "^2.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@tapjs/core": "1.5.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@tapjs/before": { - "version": "1.1.18", + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", "dev": true, - "license": "BlueOak-1.0.0", + "license": "BSD-2-Clause", "dependencies": { - "is-actual-promise": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "node": ">=8.0.0" } }, - "node_modules/@tapjs/before-each": { - "version": "1.1.18", + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "function-loop": "^4.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "node": ">=4.0" } }, - "node_modules/@tapjs/config": { - "version": "2.4.15", + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "@tapjs/core": "1.5.0", - "@tapjs/test": "1.4.0", - "chalk": "^5.2.0", - "jackspeak": "^2.3.6", - "polite-json": "^4.0.1", - "tap-yaml": "2.2.1", - "walk-up-path": "^3.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "@tapjs/core": "1.5.0", - "@tapjs/test": "1.4.0" + "engines": { + "node": ">=10" } }, - "node_modules/@tapjs/config/node_modules/chalk": { - "version": "5.3.0", + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@tapjs/core": { - "version": "1.5.0", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/@unhead/dom": { + "version": "1.8.10", + "license": "MIT", "dependencies": { - "@tapjs/processinfo": "^3.1.6", - "@tapjs/stack": "1.2.7", - "@tapjs/test": "1.4.0", - "async-hook-domain": "^4.0.1", - "diff": "^5.1.0", - "is-actual-promise": "^1.0.0", - "minipass": "^7.0.3", - "signal-exit": "4.1", - "tap-parser": "15.3.1", - "tap-yaml": "2.2.1", - "tcompare": "6.4.5", - "trivial-deferred": "^2.0.0" + "@unhead/schema": "1.8.10", + "@unhead/shared": "1.8.10" }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "funding": { + "url": "https://github.com/sponsors/harlan-zw" } }, - "node_modules/@tapjs/core/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" + "node_modules/@unhead/schema": { + "version": "1.8.10", + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3", + "zhead": "^2.2.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/harlan-zw" } }, - "node_modules/@tapjs/error-serdes": { - "version": "1.2.1", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unhead/shared": { + "version": "1.8.10", + "license": "MIT", "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "@unhead/schema": "1.8.10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/harlan-zw" } }, - "node_modules/@tapjs/filter": { - "version": "1.2.18", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "node_modules/@unhead/vue": { + "version": "1.8.10", + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.8.10", + "@unhead/shared": "1.8.10", + "hookable": "^5.5.3", + "unhead": "1.8.10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/harlan-zw" }, "peerDependencies": { - "@tapjs/core": "1.5.0" + "vue": ">=2.7 || >=3" } }, - "node_modules/@tapjs/fixture": { - "version": "1.2.18", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unocss/astro": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "mkdirp": "^3.0.0", - "rimraf": "^5.0.5" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "@unocss/core": "0.57.7", + "@unocss/reset": "0.57.7", + "@unocss/vite": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@tapjs/core": "1.5.0" + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } } }, - "node_modules/@tapjs/fixture/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, + "node_modules/@unocss/cli": { + "version": "0.57.7", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tapjs/fixture/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "@ampproject/remapping": "^2.2.1", + "@rollup/pluginutils": "^5.0.5", + "@unocss/config": "0.57.7", + "@unocss/core": "0.57.7", + "@unocss/preset-uno": "0.57.7", + "cac": "^6.7.14", + "chokidar": "^3.5.3", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0" + }, + "bin": { + "unocss": "bin/unocss.mjs" }, "engines": { "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/fixture/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", + "node_modules/@unocss/config": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@unocss/core": "0.57.7", + "unconfig": "^0.3.11" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/fixture/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, + "node_modules/@unocss/core": { + "version": "0.57.7", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/fixture/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", + "node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" + "@unocss/core": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/fixture/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, + "node_modules/@unocss/extractor-mdc": { + "version": "0.57.7", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/intercept": { - "version": "1.2.18", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unocss/inspector": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "@tapjs/after": "1.1.18", - "@tapjs/stack": "1.2.7" + "@unocss/core": "0.57.7", + "@unocss/rule-utils": "0.57.7", + "gzip-size": "^6.0.0", + "sirv": "^2.0.3" }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/mock": { - "version": "1.3.0", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unocss/postcss": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "@tapjs/after": "1.1.18", - "@tapjs/stack": "1.2.7", - "resolve-import": "^1.4.5", - "walk-up-path": "^3.0.1" + "@unocss/config": "0.57.7", + "@unocss/core": "0.57.7", + "@unocss/rule-utils": "0.57.7", + "css-tree": "^2.3.1", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.31" }, "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@tapjs/core": "1.5.0" + "postcss": "^8.4.21" } }, - "node_modules/@tapjs/node-serialize": { - "version": "1.3.0", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unocss/preset-attributify": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "@tapjs/error-serdes": "1.2.1", - "@tapjs/stack": "1.2.7", - "tap-parser": "15.3.1" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "@unocss/core": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/processinfo": { - "version": "3.1.6", - "dev": true, - "license": "ISC", + "node_modules/@unocss/preset-icons": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "pirates": "^4.0.5", - "process-on-spawn": "^1.0.0", - "signal-exit": "^4.0.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=16.17" - } - }, - "node_modules/@tapjs/processinfo/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" + "@iconify/utils": "^2.1.11", + "@unocss/core": "0.57.7", + "ofetch": "^1.3.3" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/processinfo/node_modules/uuid": { - "version": "8.3.2", - "dev": true, + "node_modules/@unocss/preset-mini": { + "version": "0.57.7", "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@tapjs/reporter": { - "version": "1.3.16", - "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/config": "2.4.15", - "@tapjs/stack": "1.2.7", - "chalk": "^5.2.0", - "ink": "^4.4.1", - "minipass": "^7.0.3", - "ms": "^2.1.3", - "patch-console": "^2.0.0", - "prismjs-terminal": "^1.2.3", - "react": "^18.2.0", - "string-length": "^6.0.0", - "tap-parser": "15.3.1", - "tap-yaml": "2.2.1", - "tcompare": "6.4.5" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "@unocss/core": "0.57.7", + "@unocss/extractor-arbitrary-variants": "0.57.7", + "@unocss/rule-utils": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/reporter/node_modules/chalk": { - "version": "5.3.0", - "dev": true, + "node_modules/@unocss/preset-tagify": { + "version": "0.57.7", "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "@unocss/core": "0.57.7" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/reporter/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" + "node_modules/@unocss/preset-typography": { + "version": "0.57.7", + "license": "MIT", + "dependencies": { + "@unocss/core": "0.57.7", + "@unocss/preset-mini": "0.57.7" + } }, - "node_modules/@tapjs/run": { - "version": "1.5.0", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unocss/preset-uno": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "@tapjs/after": "1.1.18", - "@tapjs/before": "1.1.18", - "@tapjs/config": "2.4.15", - "@tapjs/processinfo": "^3.1.6", - "@tapjs/reporter": "1.3.16", - "@tapjs/spawn": "1.1.18", - "@tapjs/stdin": "1.1.18", - "@tapjs/test": "1.4.0", - "c8": "^8.0.1", - "chalk": "^5.3.0", - "chokidar": "^3.5.3", - "foreground-child": "^3.1.1", - "glob": "^10.3.10", - "minipass": "^7.0.3", - "mkdirp": "^3.0.1", - "opener": "^1.5.2", - "pacote": "^17.0.3", - "resolve-import": "^1.4.5", - "rimraf": "^5.0.5", - "semver": "^7.5.4", - "signal-exit": "^4.1.0", - "tap-parser": "15.3.1", - "tap-yaml": "2.2.1", - "tcompare": "6.4.5", - "trivial-deferred": "^2.0.0", - "which": "^4.0.0" - }, - "bin": { - "tap-run": "dist/esm/index.js" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "@unocss/core": "0.57.7", + "@unocss/preset-mini": "0.57.7", + "@unocss/preset-wind": "0.57.7", + "@unocss/rule-utils": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, + "node_modules/@unocss/preset-web-fonts": { + "version": "0.57.7", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@unocss/core": "0.57.7", + "ofetch": "^1.3.3" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/chalk": { - "version": "5.3.0", - "dev": true, + "node_modules/@unocss/preset-wind": { + "version": "0.57.7", "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "@unocss/core": "0.57.7", + "@unocss/preset-mini": "0.57.7", + "@unocss/rule-utils": "0.57.7" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, + "node_modules/@unocss/reset": { + "version": "0.57.7", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", + "node_modules/@unocss/rule-utils": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@unocss/core": "^0.57.7", + "magic-string": "^0.30.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "node_modules/@unocss/scope": { + "version": "0.57.7", + "license": "MIT" }, - "node_modules/@tapjs/run/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", + "node_modules/@unocss/transformer-attributify-jsx": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "@unocss/core": "0.57.7" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", + "node_modules/@unocss/transformer-attributify-jsx-babel": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@babel/core": "^7.23.3", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", + "@unocss/core": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", + "node_modules/@unocss/transformer-compile-class": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" + "@unocss/core": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/@unocss/transformer-directives": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@unocss/core": "0.57.7", + "@unocss/rule-utils": "0.57.7", + "css-tree": "^2.3.1" } }, - "node_modules/@tapjs/run/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" + "node_modules/@unocss/transformer-variant-group": { + "version": "0.57.7", + "license": "MIT", + "dependencies": { + "@unocss/core": "0.57.7" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@tapjs/run/node_modules/which": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@tapjs/run/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@tapjs/snapshot": { - "version": "1.2.18", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@unocss/vite": { + "version": "0.57.7", + "license": "MIT", "dependencies": { - "is-actual-promise": "^1.0.0", - "tcompare": "6.4.5", - "trivial-deferred": "^2.0.0" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "@ampproject/remapping": "^2.2.1", + "@rollup/pluginutils": "^5.0.5", + "@unocss/config": "0.57.7", + "@unocss/core": "0.57.7", + "@unocss/inspector": "0.57.7", + "@unocss/scope": "0.57.7", + "@unocss/transformer-directives": "0.57.7", + "chokidar": "^3.5.3", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.5" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" - } - }, - "node_modules/@tapjs/spawn": { - "version": "1.1.18", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@tapjs/core": "1.5.0" - } - }, - "node_modules/@tapjs/stack": { - "version": "1.2.7", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" } }, - "node_modules/@tapjs/stdin": { - "version": "1.1.18", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "license": "MIT", "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "@tapjs/core": "1.5.0" + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" } }, - "node_modules/@tapjs/test": { - "version": "1.4.0", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "license": "MIT", "dependencies": { - "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.5", - "@tapjs/after": "1.1.18", - "@tapjs/after-each": "1.1.18", - "@tapjs/asserts": "1.1.18", - "@tapjs/before": "1.1.18", - "@tapjs/before-each": "1.1.18", - "@tapjs/filter": "1.2.18", - "@tapjs/fixture": "1.2.18", - "@tapjs/intercept": "1.2.18", - "@tapjs/mock": "1.3.0", - "@tapjs/node-serialize": "1.3.0", - "@tapjs/snapshot": "1.2.18", - "@tapjs/spawn": "1.1.18", - "@tapjs/stdin": "1.1.18", - "@tapjs/typescript": "1.4.0", - "@tapjs/worker": "1.1.18", - "glob": "^10.3.10", - "jackspeak": "^2.3.6", - "mkdirp": "^3.0.0", - "resolve-import": "^1.4.5", - "rimraf": "^5.0.5", - "sync-content": "^1.0.1", - "tap-parser": "15.3.1", - "tshy": "^1.2.2", - "typescript": "5.2" - }, - "bin": { - "generate-tap-test-class": "scripts/build.mjs" + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" }, "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "@tapjs/core": "1.5.0" + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" } }, - "node_modules/@tapjs/test/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.1", + "license": "MIT" }, - "node_modules/@tapjs/test/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.1", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "@vue/babel-helper-vue-transform-on": "1.2.1", + "@vue/babel-plugin-resolve-type": "1.2.1", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" }, - "engines": { - "node": ">=14" + "peerDependencies": { + "@babel/core": "^7.0.0-0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } } }, - "node_modules/@tapjs/test/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.1", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@babel/code-frame": "^7.23.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/parser": "^7.23.6", + "@vue/compiler-sfc": "^3.4.15" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@tapjs/test/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", + "node_modules/@vue/compiler-core": { + "version": "3.4.15", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.15", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" } }, - "node_modules/@tapjs/test/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", + "node_modules/@vue/compiler-dom": { + "version": "3.4.15", + "license": "MIT", "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tapjs/test/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@vue/compiler-core": "3.4.15", + "@vue/shared": "3.4.15" } }, - "node_modules/@tapjs/typescript": { - "version": "1.4.0", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@vue/compiler-sfc": { + "version": "3.4.15", + "license": "MIT", "dependencies": { - "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.5" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.15", + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.33", + "source-map-js": "^1.0.2" } }, - "node_modules/@tapjs/worker": { - "version": "1.1.18", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "peerDependencies": { - "@tapjs/core": "1.5.0" + "node_modules/@vue/compiler-ssr": { + "version": "3.4.15", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.4.15", + "@vue/shared": "3.4.15" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "14.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "16.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node18": { - "version": "18.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node20": { - "version": "20.1.2", - "dev": true, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", "license": "MIT" }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "dev": true, + "node_modules/@vue/reactivity": { + "version": "3.4.15", "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" + "dependencies": { + "@vue/shared": "3.4.15" } }, - "node_modules/@tufjs/models": { - "version": "2.0.0", - "dev": true, + "node_modules/@vue/runtime-core": { + "version": "3.4.15", "license": "MIT", "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@vue/reactivity": "3.4.15", + "@vue/shared": "3.4.15" } }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, + "node_modules/@vue/runtime-dom": { + "version": "3.4.15", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@vue/runtime-core": "3.4.15", + "@vue/shared": "3.4.15", + "csstype": "^3.1.3" } }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", + "node_modules/@vue/server-renderer": { + "version": "3.4.15", "license": "MIT", "dependencies": { - "@types/d3-time": "*" + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15" + }, + "peerDependencies": { + "vue": "3.4.15" } }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "license": "MIT" - }, - "node_modules/@types/d3-time": { - "version": "3.0.3", + "node_modules/@vue/shared": { + "version": "3.4.15", "license": "MIT" }, - "node_modules/@types/debug": { - "version": "4.1.12", + "node_modules/@vueuse/core": { + "version": "10.7.2", "license": "MIT", "dependencies": { - "@types/ms": "*" + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.7.2", + "@vueuse/shared": "10.7.2", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.3", + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@types/unist": "*" + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/linkify-it": { - "version": "3.0.5", - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "13.0.7", + "node_modules/@vueuse/math": { + "version": "10.7.2", "license": "MIT", "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "@vueuse/shared": "10.7.2", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@types/mdast": { - "version": "3.0.15", + "node_modules/@vueuse/math/node_modules/vue-demi": { + "version": "0.14.6", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@types/unist": "^2" + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, - "node_modules/@types/mdurl": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "0.7.34", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.11.10", - "devOptional": true, + "node_modules/@vueuse/metadata": { + "version": "10.7.2", "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@types/semver": { - "version": "7.5.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sinon": { - "version": "17.0.3", - "dev": true, + "node_modules/@vueuse/motion": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "@types/sinonjs__fake-timers": "*" + "@vueuse/core": "^10.1.2", + "@vueuse/shared": "^10.1.2", + "csstype": "^3.1.2", + "framesync": "^6.1.2", + "popmotion": "^11.0.5", + "style-value-types": "^5.1.2" + }, + "optionalDependencies": { + "@nuxt/kit": "^3.5.1" + }, + "peerDependencies": { + "vue": ">=3.0.0" } }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tap": { - "version": "15.0.11", - "dev": true, + "node_modules/@vueuse/shared": { + "version": "10.7.2", "license": "MIT", "dependencies": { - "@types/node": "*" + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@types/unist": { - "version": "2.0.10", - "license": "MIT" - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.20", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "dev": true, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" }, "peerDependenciesMeta": { - "typescript": { + "@vue/composition-api": { "optional": true } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", + "node_modules/@windicss/config": { + "version": "1.9.3", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "debug": "^4.3.4", + "jiti": "^1.18.2", + "windicss": "^3.5.6" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/@windicss/plugin-utils": { + "version": "1.9.3", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@antfu/utils": "^0.7.2", + "@windicss/config": "1.9.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "magic-string": "^0.30.0", + "micromatch": "^4.0.5", + "windicss": "^3.5.6" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/abort-controller": { + "version": "3.0.0", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "event-target-shim": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.5" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.11.3", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", + "node_modules/acorn-walk": { + "version": "8.3.2", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=0.4.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "dev": true, + "node_modules/aggregate-error": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "dev": true, + "node_modules/ajv": { + "version": "8.12.0", "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/ajv-formats": { + "version": "2.1.1", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "ajv": "^8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "ajv": "^8.0.0" }, "peerDependenciesMeta": { - "typescript": { + "ajv": { "optional": true } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.1.0", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", + "node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "dev": true, + "node_modules/anymatch": { + "version": "3.1.3", "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { - "version": "3.0.0", + "node_modules/archy": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", + "node_modules/array-union": { + "version": "2.1.0", "dev": true, "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/asn1.js": { + "version": "5.4.1", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", + "node_modules/astring": { + "version": "1.8.6", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "license": "MIT", + "bin": { + "astring": "bin/astring" } }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/authentication": { + "resolved": "src/step-08-authentication", + "link": true + }, + "node_modules/autoload": { + "resolved": "src/step-12-autoload", + "link": true + }, + "node_modules/avvio": { + "version": "8.2.1", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1" } }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", + "node_modules/axios": { + "version": "0.21.4", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/b4a": { + "version": "1.6.4", "dev": true, "license": "ISC" }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "dev": true, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "license": "ISC" + "node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" }, - "node_modules/@unhead/dom": { - "version": "1.8.10", + "node_modules/bplist-parser": { + "version": "0.2.0", "license": "MIT", "dependencies": { - "@unhead/schema": "1.8.10", - "@unhead/shared": "1.8.10" + "big-integer": "^1.6.44" }, - "funding": { - "url": "https://github.com/sponsors/harlan-zw" + "engines": { + "node": ">= 5.10.0" } }, - "node_modules/@unhead/schema": { - "version": "1.8.10", + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, "license": "MIT", "dependencies": { - "hookable": "^5.5.3", - "zhead": "^2.2.4" - }, - "funding": { - "url": "https://github.com/sponsors/harlan-zw" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@unhead/shared": { - "version": "1.8.10", + "node_modules/braces": { + "version": "3.0.2", "license": "MIT", "dependencies": { - "@unhead/schema": "1.8.10" + "fill-range": "^7.0.1" }, - "funding": { - "url": "https://github.com/sponsors/harlan-zw" + "engines": { + "node": ">=8" } }, - "node_modules/@unhead/vue": { - "version": "1.8.10", + "node_modules/browserslist": { + "version": "4.22.3", + "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" + } + ], "license": "MIT", "dependencies": { - "@unhead/schema": "1.8.10", - "@unhead/shared": "1.8.10", - "hookable": "^5.5.3", - "unhead": "1.8.10" + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, - "funding": { - "url": "https://github.com/sponsors/harlan-zw" + "bin": { + "browserslist": "cli.js" }, - "peerDependencies": { - "vue": ">=2.7 || >=3" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@unocss/astro": { - "version": "0.57.7", + "node_modules/buffer": { + "version": "6.0.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/reset": "0.57.7", - "@unocss/vite": "0.57.7" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@unocss/cli": { - "version": "0.57.7", + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-writer": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@rollup/pluginutils": "^5.0.5", - "@unocss/config": "0.57.7", - "@unocss/core": "0.57.7", - "@unocss/preset-uno": "0.57.7", - "cac": "^6.7.14", - "chokidar": "^3.5.3", - "colorette": "^2.0.20", - "consola": "^3.2.3", - "fast-glob": "^3.3.2", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "perfect-debounce": "^1.0.0" - }, - "bin": { - "unocss": "bin/unocss.mjs" - }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node": ">=4" } }, - "node_modules/@unocss/config": { - "version": "0.57.7", + "node_modules/bundle-name": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "@unocss/core": "0.57.7", - "unconfig": "^0.3.11" + "run-applescript": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/core": { - "version": "0.57.7", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@unocss/extractor-arbitrary-variants": { - "version": "0.57.7", + "node_modules/c12": { + "version": "1.6.1", "license": "MIT", + "optional": true, "dependencies": { - "@unocss/core": "0.57.7" + "chokidar": "^3.5.3", + "defu": "^6.1.3", + "dotenv": "^16.3.1", + "giget": "^1.2.1", + "jiti": "^1.21.0", + "mlly": "^1.4.2", + "ohash": "^1.1.3", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "rc9": "^2.1.1" + } + }, + "node_modules/c8": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@unocss/extractor-mdc": { - "version": "0.57.7", + "node_modules/cac": { + "version": "6.7.14", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=8" } }, - "node_modules/@unocss/inspector": { - "version": "0.57.7", + "node_modules/cacheable-lookup": { + "version": "7.0.0", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/rule-utils": "0.57.7", - "gzip-size": "^6.0.0", - "sirv": "^2.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=14.16" } }, - "node_modules/@unocss/postcss": { - "version": "0.57.7", + "node_modules/cacheable-request": { + "version": "10.2.14", "license": "MIT", "dependencies": { - "@unocss/config": "0.57.7", - "@unocss/core": "0.57.7", - "@unocss/rule-utils": "0.57.7", - "css-tree": "^2.3.1", - "fast-glob": "^3.3.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31" + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "postcss": "^8.4.21" + "node": ">=14.16" } }, - "node_modules/@unocss/preset-attributify": { - "version": "0.57.7", + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@unocss/preset-icons": { - "version": "0.57.7", + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "@iconify/utils": "^2.1.11", - "@unocss/core": "0.57.7", - "ofetch": "^1.3.3" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=6" } }, - "node_modules/@unocss/preset-mini": { - "version": "0.57.7", + "node_modules/camelcase": { + "version": "6.3.0", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/extractor-arbitrary-variants": "0.57.7", - "@unocss/rule-utils": "0.57.7" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@unocss/preset-tagify": { - "version": "0.57.7", + "node_modules/caniuse-lite": { + "version": "1.0.30001581", + "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" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7" - }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@unocss/preset-typography": { - "version": "0.57.7", + "node_modules/chalk": { + "version": "2.4.2", "license": "MIT", "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/preset-mini": "0.57.7" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@unocss/preset-uno": { - "version": "0.57.7", + "node_modules/chalk-template": { + "version": "0.4.0", + "dev": true, "license": "MIT", "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/preset-mini": "0.57.7", - "@unocss/preset-wind": "0.57.7", - "@unocss/rule-utils": "0.57.7" + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/@unocss/preset-web-fonts": { - "version": "0.57.7", + "node_modules/chalk-template/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "@unocss/core": "0.57.7", - "ofetch": "^1.3.3" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@unocss/preset-wind": { - "version": "0.57.7", + "node_modules/chalk-template/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/preset-mini": "0.57.7", - "@unocss/rule-utils": "0.57.7" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/reset": { - "version": "0.57.7", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@unocss/rule-utils": { - "version": "0.57.7", + "node_modules/chalk-template/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "@unocss/core": "^0.57.7", - "magic-string": "^0.30.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node": ">=7.0.0" } }, - "node_modules/@unocss/scope": { - "version": "0.57.7", + "node_modules/chalk-template/node_modules/color-name": { + "version": "1.1.4", + "dev": true, "license": "MIT" }, - "node_modules/@unocss/transformer-attributify-jsx": { - "version": "0.57.7", + "node_modules/chalk-template/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=8" } }, - "node_modules/@unocss/transformer-attributify-jsx-babel": { - "version": "0.57.7", + "node_modules/chalk-template/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.23.3", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/preset-typescript": "^7.23.3", - "@unocss/core": "0.57.7" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=8" } }, - "node_modules/@unocss/transformer-compile-class": { - "version": "0.57.7", + "node_modules/character-entities": { + "version": "2.0.2", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7" - }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@unocss/transformer-directives": { - "version": "0.57.7", + "node_modules/character-entities-html4": { + "version": "2.1.0", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7", - "@unocss/rule-utils": "0.57.7", - "css-tree": "^2.3.1" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@unocss/transformer-variant-group": { - "version": "0.57.7", + "node_modules/character-entities-legacy": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@unocss/core": "0.57.7" - }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@unocss/vite": { - "version": "0.57.7", + "node_modules/chokidar": { + "version": "3.5.3", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@rollup/pluginutils": "^5.0.5", - "@unocss/config": "0.57.7", - "@unocss/core": "0.57.7", - "@unocss/inspector": "0.57.7", - "@unocss/scope": "0.57.7", - "@unocss/transformer-directives": "0.57.7", - "chokidar": "^3.5.3", - "fast-glob": "^3.3.2", - "magic-string": "^0.30.5" + "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" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">= 8.10.0" }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.6.2", - "license": "MIT", + "node_modules/chownr": { + "version": "2.0.0", + "license": "ISC", + "optional": true, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", - "vue": "^3.2.25" + "node": ">=10" } }, - "node_modules/@vitejs/plugin-vue-jsx": { - "version": "3.1.0", + "node_modules/citty": { + "version": "0.1.5", "license": "MIT", + "optional": true, "dependencies": { - "@babel/core": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3", - "@vue/babel-plugin-jsx": "^1.1.5" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", - "vue": "^3.0.0" + "consola": "^3.2.3" } }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.2.1", - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.2.1", + "node_modules/clean-stack": { + "version": "4.2.0", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "@vue/babel-helper-vue-transform-on": "1.2.1", - "@vue/babel-plugin-resolve-type": "1.2.1", - "camelcase": "^6.3.0", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" + "escape-string-regexp": "5.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@vue/babel-plugin-resolve-type": { - "version": "1.2.1", + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/parser": "^7.23.6", - "@vue/compiler-sfc": "^3.4.15" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@vue/compiler-core": { - "version": "3.4.15", + "node_modules/cli-progress": { + "version": "3.12.0", "license": "MIT", "dependencies": { - "@babel/parser": "^7.23.6", - "@vue/shared": "3.4.15", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.15", - "license": "MIT", + "node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", "dependencies": { - "@vue/compiler-core": "3.4.15", - "@vue/shared": "3.4.15" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.15", + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "@babel/parser": "^7.23.6", - "@vue/compiler-core": "3.4.15", - "@vue/compiler-dom": "3.4.15", - "@vue/compiler-ssr": "3.4.15", - "@vue/shared": "3.4.15", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.33", - "source-map-js": "^1.0.2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.15", + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.4.15", - "@vue/shared": "3.4.15" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@vue/devtools-api": { - "version": "6.5.1", + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", "license": "MIT" }, - "node_modules/@vue/reactivity": { - "version": "3.4.15", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", "license": "MIT", "dependencies": { - "@vue/shared": "3.4.15" + "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/@vue/runtime-core": { - "version": "3.4.15", + "node_modules/codemirror": { + "version": "5.65.16", + "license": "MIT" + }, + "node_modules/codemirror-theme-vars": { + "version": "0.1.2", "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.4.15", - "@vue/shared": "3.4.15" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.15", + "node_modules/color-convert": { + "version": "1.9.3", "license": "MIT", "dependencies": { - "@vue/runtime-core": "3.4.15", - "@vue/shared": "3.4.15", - "csstype": "^3.1.3" + "color-name": "1.1.3" } }, - "node_modules/@vue/server-renderer": { - "version": "3.4.15", + "node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.4.15", - "@vue/shared": "3.4.15" + "delayed-stream": "~1.0.0" }, - "peerDependencies": { - "vue": "3.4.15" + "engines": { + "node": ">= 0.8" } }, - "node_modules/@vue/shared": { - "version": "3.4.15", - "license": "MIT" - }, - "node_modules/@vueuse/core": { - "version": "10.7.2", + "node_modules/comma-separated-tokens": { + "version": "2.0.3", "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.7.2", - "@vueuse/shared": "10.7.2", - "vue-demi": ">=0.14.6" - }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.6", - "hasInstallScript": true, + "node_modules/command-line-args": { + "version": "5.2.1", + "dev": true, "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "node": ">=4.0.0" } }, - "node_modules/@vueuse/math": { - "version": "10.7.2", + "node_modules/command-line-usage": { + "version": "7.0.1", + "dev": true, "license": "MIT", "dependencies": { - "@vueuse/shared": "10.7.2", - "vue-demi": ">=0.14.6" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=12.20.0" } }, - "node_modules/@vueuse/math/node_modules/vue-demi": { - "version": "0.14.6", - "hasInstallScript": true, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.2", + "dev": true, "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "node": ">=12.17" } }, - "node_modules/@vueuse/metadata": { - "version": "10.7.2", + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.1.1", + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=12.17" } }, - "node_modules/@vueuse/motion": { - "version": "2.0.0", + "node_modules/commander": { + "version": "8.3.0", "license": "MIT", - "dependencies": { - "@vueuse/core": "^10.1.2", - "@vueuse/shared": "^10.1.2", - "csstype": "^3.1.2", - "framesync": "^6.1.2", - "popmotion": "^11.0.5", - "style-value-types": "^5.1.2" - }, - "optionalDependencies": { - "@nuxt/kit": "^3.5.1" - }, - "peerDependencies": { - "vue": ">=3.0.0" + "engines": { + "node": ">= 12" } }, - "node_modules/@vueuse/shared": { - "version": "10.7.2", - "license": "MIT", - "dependencies": { - "vue-demi": ">=0.14.6" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.6", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } + "node_modules/config": { + "resolved": "src/step-09-config", + "link": true }, - "node_modules/@windicss/config": { - "version": "1.9.3", + "node_modules/connect": { + "version": "3.7.0", "license": "MIT", "dependencies": { - "debug": "^4.3.4", - "jiti": "^1.18.2", - "windicss": "^3.5.6" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/@windicss/plugin-utils": { - "version": "1.9.3", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", "license": "MIT", "dependencies": { - "@antfu/utils": "^0.7.2", - "@windicss/config": "1.9.3", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "magic-string": "^0.30.0", - "micromatch": "^4.0.5", - "windicss": "^3.5.6" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "ms": "2.0.0" } }, - "node_modules/abbrev": { + "node_modules/connect/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/abort-controller": { - "version": "3.0.0", + "node_modules/consola": { + "version": "3.2.3", "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, "engines": { - "node": ">=6.5" + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/abstract-logging": { - "version": "2.0.1", + "node_modules/constraints": { + "resolved": "src/step-05-constraints", + "link": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/acorn": { - "version": "8.11.3", + "node_modules/cookie": { + "version": "0.5.0", "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.6" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, + "node_modules/cose-base": { + "version": "1.0.3", "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "layout-base": "^1.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.2", + "node_modules/create-require": { + "version": "1.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, - "node_modules/agent-base": { - "version": "7.1.0", + "node_modules/cross-env": { + "version": "7.0.3", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">= 14" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/aggregate-error": { - "version": "4.0.1", + "node_modules/cross-spawn": { + "version": "7.0.3", "license": "MIT", "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/ajv": { - "version": "8.12.0", + "node_modules/css-tree": { + "version": "2.3.1", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", + "node_modules/cssesc": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "bin": { + "cssesc": "bin/cssesc" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">=4" } }, - "node_modules/ansi-escapes": { - "version": "6.2.0", - "dev": true, + "node_modules/csstype": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.28.1", "license": "MIT", "dependencies": { - "type-fest": "^3.0.0" + "heap": "^0.2.6", + "lodash": "^4.17.21" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "3.13.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/cytoscape-fcose": { + "version": "2.2.0", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.8.5", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/anymatch": { - "version": "3.1.3", + "node_modules/d3-array": { + "version": "3.2.4", "license": "ISC", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "internmap": "1 - 2" }, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/archy": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "license": "Python-2.0" - }, - "node_modules/array-back": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/d3-axis": { + "version": "3.0.0", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", + "node_modules/d3-brush": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "license": "MIT", + "node_modules/d3-chord": { + "version": "3.0.1", + "license": "ISC", "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/astring": { - "version": "1.8.6", - "dev": true, - "license": "MIT", - "bin": { - "astring": "bin/astring" + "node_modules/d3-color": { + "version": "3.1.0", + "license": "ISC", + "engines": { + "node": ">=12" } }, - "node_modules/async-hook-domain": { - "version": "4.0.1", - "dev": true, + "node_modules/d3-contour": { + "version": "4.0.2", "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, "engines": { - "node": ">=16" + "node": ">=12" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "license": "MIT", + "node_modules/d3-delaunay": { + "version": "6.0.4", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, "engines": { - "node": ">=8.0.0" + "node": ">=12" } }, - "node_modules/authentication": { - "resolved": "src/step-08-authentication", - "link": true - }, - "node_modules/auto-bind": { - "version": "5.0.1", - "dev": true, - "license": "MIT", + "node_modules/d3-dispatch": { + "version": "3.0.1", + "license": "ISC", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/autoload": { - "resolved": "src/step-12-autoload", - "link": true - }, - "node_modules/avvio": { - "version": "8.2.1", - "license": "MIT", + "node_modules/d3-drag": { + "version": "3.0.0", + "license": "ISC", "dependencies": { - "archy": "^1.0.0", - "debug": "^4.0.0", - "fastq": "^1.6.1" + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/axios": { - "version": "0.21.4", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "dev": true, - "license": "ISC" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/big-integer": { - "version": "1.6.52", - "license": "Unlicense", + "node_modules/d3-dsv": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, "engines": { - "node": ">=0.6" + "node": ">=12" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.44" - }, + "node_modules/d3-ease": { + "version": "3.0.1", + "license": "BSD-3-Clause", "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=12" } }, - "node_modules/braces": { - "version": "3.0.2", - "license": "MIT", + "node_modules/d3-fetch": { + "version": "3.0.1", + "license": "ISC", "dependencies": { - "fill-range": "^7.0.1" + "d3-dsv": "1 - 3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/browserslist": { - "version": "4.22.3", - "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" - } - ], - "license": "MIT", + "node_modules/d3-force": { + "version": "3.0.0", + "license": "ISC", "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "node": ">=12" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "license": "MIT", + "node_modules/d3-format": { + "version": "3.1.0", + "license": "ISC", "engines": { - "node": ">=4" - } - }, - "node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" + "node": ">=12" } }, - "node_modules/builtins/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, + "node_modules/d3-geo": { + "version": "3.1.0", "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "d3-array": "2.5.0 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/builtins/node_modules/semver": { - "version": "7.5.4", - "dev": true, + "node_modules/d3-hierarchy": { + "version": "3.1.2", "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/builtins/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/bundle-name": { - "version": "3.0.0", - "license": "MIT", + "node_modules/d3-interpolate": { + "version": "3.0.1", + "license": "ISC", "dependencies": { - "run-applescript": "^5.0.0" + "d3-color": "1 - 3" }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c12": { - "version": "1.6.1", - "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^3.5.3", - "defu": "^6.1.3", - "dotenv": "^16.3.1", - "giget": "^1.2.1", - "jiti": "^1.21.0", - "mlly": "^1.4.2", - "ohash": "^1.1.3", - "pathe": "^1.1.1", - "perfect-debounce": "^1.0.0", - "pkg-types": "^1.0.3", - "rc9": "^2.1.1" } }, - "node_modules/c8": { - "version": "8.0.1", - "dev": true, + "node_modules/d3-path": { + "version": "3.1.0", "license": "ISC", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1" - }, - "bin": { - "c8": "bin/c8.js" - }, "engines": { "node": ">=12" } }, - "node_modules/cac": { - "version": "6.7.14", - "license": "MIT", + "node_modules/d3-polygon": { + "version": "3.0.1", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/cacache": { - "version": "18.0.2", - "dev": true, + "node_modules/d3-quadtree": { + "version": "3.0.1", "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/d3-random": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "license": "BSD-3-Clause", "dependencies": { - "balanced-match": "^1.0.0" + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" } }, - "node_modules/cacache/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "dev": true, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.0", - "dev": true, + "node_modules/d3-selection": { + "version": "3.0.0", "license": "ISC", "engines": { - "node": "14 || >=16.14" + "node": ">=12" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, + "node_modules/d3-shape": { + "version": "3.2.0", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "d3-path": "^3.1.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=12" } }, - "node_modules/cacache/node_modules/signal-exit": { + "node_modules/d3-time-format": { "version": "4.1.0", - "dev": true, "license": "ISC", - "engines": { - "node": ">=14" + "dependencies": { + "d3-time": "1 - 3" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=12" } }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "license": "MIT", + "node_modules/d3-timer": { + "version": "3.0.1", + "license": "ISC", "engines": { - "node": ">=14.16" + "node": ">=12" } }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "license": "MIT", + "node_modules/d3-transition": { + "version": "3.0.1", + "license": "ISC", "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=10" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/d3-zoom": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/camelcase": { - "version": "6.3.0", + "node_modules/dagre-d3-es": { + "version": "7.0.10", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001581", - "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" - } - ], - "license": "CC-BY-4.0" + "node_modules/database": { + "resolved": "src/step-13-database", + "link": true }, - "node_modules/ccount": { - "version": "2.0.1", + "node_modules/dateformat": { + "version": "4.6.3", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": "*" } }, - "node_modules/chalk": { - "version": "2.4.2", + "node_modules/dayjs": { + "version": "1.11.10", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ms": "2.1.2" }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/chalk-template": { - "version": "0.4.0", - "dev": true, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" + "character-entities": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chalk-template/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/decompress-response": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk-template/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk-template/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "node_modules/decorators": { + "resolved": "src/step-10-decorators", + "link": true }, - "node_modules/chalk-template/node_modules/color-name": { - "version": "1.1.4", + "node_modules/deep-is": { + "version": "0.1.4", "dev": true, "license": "MIT" }, - "node_modules/chalk-template/node_modules/has-flag": { + "node_modules/default-browser": { "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk-template/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "license": "MIT", + "node": ">=14.16" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/character-entities-legacy": { + "node_modules/default-browser-id": { "version": "3.0.0", "license": "MIT", + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", "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" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/chownr": { - "version": "2.0.0", - "devOptional": true, - "license": "ISC", + "node_modules/default-browser/node_modules/get-stream": { + "version": "6.0.1", + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=14.18.0" } }, - "node_modules/citty": { - "version": "0.1.5", + "node_modules/defer-to-connect": { + "version": "2.0.1", "license": "MIT", - "optional": true, - "dependencies": { - "consola": "^3.2.3" + "engines": { + "node": ">=10" } }, - "node_modules/clean-stack": { - "version": "4.2.0", + "node_modules/define-lazy-prop": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, "engines": { "node": ">=12" }, @@ -4754,910 +4038,950 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/defu": { + "version": "6.1.4", + "license": "MIT" + }, + "node_modules/delaunator": { + "version": "5.0.1", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "dev": true, + "node_modules/delayed-stream": { + "version": "1.0.0", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/cli-cursor": { - "version": "4.0.0", - "dev": true, + "node_modules/depd": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "restore-cursor": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/cli-progress": { - "version": "3.12.0", + "node_modules/dequal": { + "version": "2.0.3", "license": "MIT", - "dependencies": { - "string-width": "^4.2.3" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "dev": true, + "node_modules/desm": { + "version": "1.3.1", + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dequal": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", + "node_modules/diff": { + "version": "5.1.0", + "license": "BSD-3-Clause", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=0.3.1" } }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/dir-glob": { + "version": "3.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "path-type": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "node_modules/dir-glob/node_modules/path-type": { "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "5.0.0", - "dev": true, + "node_modules/dns-packet": { + "version": "5.6.1", "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=6" } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "dev": true, + "node_modules/dns-socket": { + "version": "4.2.2", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "dns-packet": "^5.2.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.0.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/cliui": { - "version": "8.0.1", - "license": "ISC", + "node_modules/dom-serializer": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/domelementtype": { + "version": "2.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=8" + "node": ">= 4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/dompurify": { + "version": "3.0.8", + "license": "(MPL-2.0 OR Apache-2.0)" + }, + "node_modules/domutils": { + "version": "3.1.0", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/dotenv": { + "version": "16.4.1", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, - "node_modules/code-excerpt": { - "version": "4.0.0", - "dev": true, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/drauu": { + "version": "0.3.7", "license": "MIT", "dependencies": { - "convert-to-spaces": "^2.0.1" + "@drauu/core": "0.3.7" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/codemirror": { - "version": "5.65.16", + "node_modules/duplexer": { + "version": "0.1.2", "license": "MIT" }, - "node_modules/codemirror-theme-vars": { - "version": "0.1.2", + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" + "dependencies": { + "xtend": "^4.0.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "license": "Apache-2.0", "dependencies": { - "color-name": "1.1.3" + "safe-buffer": "^5.0.1" } }, - "node_modules/color-name": { - "version": "1.1.3", + "node_modules/ee-first": { + "version": "1.1.1", "license": "MIT" }, - "node_modules/colorette": { - "version": "2.0.20", + "node_modules/electron-to-chromium": { + "version": "1.4.650", + "license": "ISC" + }, + "node_modules/elkjs": { + "version": "0.9.1", + "license": "EPL-2.0" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", + "node_modules/encodeurl": { + "version": "1.0.2", "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, "engines": { "node": ">= 0.8" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", + "node_modules/end-of-stream": { + "version": "1.4.4", "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/command-line-args": { + "node_modules/env-schema": { "version": "5.2.1", - "dev": true, "license": "MIT", "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" + "ajv": "^8.0.0", + "dotenv": "^16.0.0", + "dotenv-expand": "^10.0.0" } }, - "node_modules/command-line-usage": { - "version": "7.0.1", - "dev": true, + "node_modules/error-stack-parser-es": { + "version": "0.1.1", "license": "MIT", - "dependencies": { - "array-back": "^6.2.2", - "chalk-template": "^0.4.0", - "table-layout": "^3.0.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.20.0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "6.2.2", - "dev": true, + "node_modules/esbuild": { + "version": "0.18.20", + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=12.17" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "7.1.1", - "dev": true, + "node_modules/escalade": { + "version": "3.1.1", "license": "MIT", "engines": { - "node": ">=12.17" + "node": ">=6" } }, - "node_modules/commander": { - "version": "8.3.0", + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", "license": "MIT", "engines": { - "node": ">= 12" + "node": ">=0.8.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/eslint": { + "version": "8.56.0", "dev": true, - "license": "MIT" - }, - "node_modules/config": { - "resolved": "src/step-09-config", - "link": true - }, - "node_modules/connect": { - "version": "3.7.0", "license": "MIT", "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", + "node_modules/eslint-plugin-sql": { + "version": "2.5.0", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ms": "2.0.0" + "astring": "^1.8.3", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "pg-formatter": "^2.0.2", + "sql-parse": "^0.1.5" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=8.1.0" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/consola": { - "version": "3.2.3", - "license": "MIT", + "node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": "^14.18.0 || >=16.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/constraints": { - "resolved": "src/step-05-constraints", - "link": true + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "license": "MIT" + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "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/convert-to-spaces": { - "version": "2.0.1", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cookie": { - "version": "0.5.0", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cose-base": { - "version": "1.0.3", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "layout-base": "^1.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/create-require": { - "version": "1.1.1", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/cross-env": { - "version": "7.0.3", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 8" + "node": ">=10.13.0" } }, - "node_modules/css-tree": { - "version": "2.3.1", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" + "type-fest": "^0.20.2" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssesc": { - "version": "3.0.0", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/csstype": { - "version": "3.1.3", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, "license": "MIT" }, - "node_modules/cytoscape": { - "version": "3.28.1", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "heap": "^0.2.6", - "lodash": "^4.17.21" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "cose-base": "^1.0.0" + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, - "peerDependencies": { - "cytoscape": "^3.2.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "license": "MIT", + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "layout-base": "^2.0.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/d3": { - "version": "7.8.5", - "license": "ISC", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/d3-axis": { - "version": "3.0.0", - "license": "ISC", + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/d3-brush": { - "version": "3.0.0", - "license": "ISC", + "node_modules/esquery": { + "version": "1.5.0", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=12" + "node": ">=0.10" } }, - "node_modules/d3-chord": { - "version": "3.0.1", - "license": "ISC", + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "d3-path": "1 - 3" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=12" + "node": ">=4.0" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "license": "ISC", + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=4.0" } }, - "node_modules/d3-contour": { - "version": "4.0.2", - "license": "ISC", - "dependencies": { - "d3-array": "^3.2.0" - }, + "node_modules/estree-walker": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "license": "ISC", - "dependencies": { - "delaunator": "5" - }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "license": "ISC", + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.8.x" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "license": "ISC", + "node_modules/execa": { + "version": "8.0.1", + "license": "MIT", + "optional": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", "license": "ISC", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, + "optional": true, "engines": { - "node": ">=12" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", + "node_modules/extend-shallow": { + "version": "2.0.1", "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } + "node_modules/fast-content-type-parse": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/d3-fetch": { + "node_modules/fast-copy": { "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } + "license": "MIT" }, - "node_modules/d3-force": { - "version": "3.0.0", - "license": "ISC", + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "license": "MIT", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=12" + "node": ">=8.6.0" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "license": "ISC", - "engines": { - "node": ">=12" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" }, - "node_modules/d3-geo": { - "version": "3.1.0", - "license": "ISC", + "node_modules/fast-json-stringify": { + "version": "5.10.0", + "license": "MIT", "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "license": "ISC", - "engines": { - "node": ">=12" + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "license": "ISC", + "node_modules/fast-jwt": { + "version": "3.3.3", + "license": "Apache-2.0", "dependencies": { - "d3-color": "1 - 3" + "@lukeed/ms": "^2.0.1", + "asn1.js": "^5.4.1", + "ecdsa-sig-formatter": "^1.0.11", + "mnemonist": "^0.39.5" }, "engines": { - "node": ">=12" + "node": ">=16 <22" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "license": "ISC", - "engines": { - "node": ">=12" - } + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" + "node_modules/fast-querystring": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "license": "ISC", + "node_modules/fast-redact": { + "version": "3.3.0", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "license": "MIT" }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "license": "BSD-3-Clause", - "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" - } + "node_modules/fast-uri": { + "version": "2.3.0", + "license": "MIT" }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "license": "BSD-3-Clause", + "node_modules/fastfall": { + "version": "1.5.1", + "license": "MIT", "dependencies": { - "internmap": "^1.0.0" + "reusify": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "license": "BSD-3-Clause" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "license": "BSD-3-Clause", + "node_modules/fastify": { + "version": "4.26.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", "dependencies": { - "d3-path": "1" + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.2.1", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^8.0.0", + "light-my-request": "^5.11.0", + "pino": "^8.17.0", + "process-warning": "^3.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" } }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "license": "ISC" + "node_modules/fastify-plugin": { + "version": "4.5.1", + "license": "MIT" }, - "node_modules/d3-scale": { - "version": "4.0.2", + "node_modules/fastify/node_modules/lru-cache": { + "version": "6.0.0", "license": "ISC", "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", + "node_modules/fastify/node_modules/semver": { + "version": "7.5.4", "license": "ISC", "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/d3-selection": { - "version": "3.0.0", - "license": "ISC", - "engines": { - "node": ">=12" - } + "node_modules/fastify/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" }, - "node_modules/d3-shape": { - "version": "3.2.0", + "node_modules/fastparallel": { + "version": "2.4.1", "license": "ISC", "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" + "reusify": "^1.0.4", + "xtend": "^4.0.2" } }, - "node_modules/d3-time": { - "version": "3.1.0", + "node_modules/fastq": { + "version": "1.17.0", "license": "ISC", "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" + "reusify": "^1.0.4" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", + "node_modules/fastseries": { + "version": "1.7.2", "license": "ISC", "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" + "reusify": "^1.0.0", + "xtend": "^4.0.0" } }, - "node_modules/d3-transition": { - "version": "3.0.1", - "license": "ISC", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "license": "ISC", + "node_modules/file-saver": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "license": "MIT", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/dagre-d3-es": { - "version": "7.0.10", + "node_modules/finalhandler": { + "version": "1.1.2", "license": "MIT", "dependencies": { - "d3": "^7.8.2", - "lodash-es": "^4.17.21" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/database": { - "resolved": "src/step-13-database", - "link": true - }, - "node_modules/dateformat": { - "version": "4.6.3", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/dayjs": { - "version": "1.11.10", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/debug": { - "version": "4.3.4", + "node_modules/find-my-way": { + "version": "8.1.0", "license": "MIT", "dependencies": { - "ms": "2.1.2" + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^2.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=14" } }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", + "node_modules/find-replace": { + "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { - "character-entities": "^2.0.0" + "array-back": "^3.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/decompress-response": { - "version": "6.0.0", + "node_modules/find-up": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" @@ -5666,1452 +4990,1355 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", + "node_modules/flat": { + "version": "5.0.2", + "license": "BSD-3-Clause", + "optional": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/decorators": { - "resolved": "src/step-10-decorators", - "link": true - }, - "node_modules/deep-is": { - "version": "0.1.4", + "node_modules/flatted": { + "version": "3.2.9", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/default-browser": { - "version": "4.0.0", + "node_modules/fluent-json-schema": { + "version": "4.2.1", "license": "MIT", "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, + "@fastify/deepmerge": "^1.1.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "license": "MIT", + "node_modules/foreground-child": { + "version": "2.0.0", + "dev": true, + "license": "ISC", "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/default-browser/node_modules/execa": { - "version": "7.2.0", + "node_modules/form-data": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 6" } }, - "node_modules/default-browser/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/form-data-encoder": { + "version": "2.1.4", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14.17" } }, - "node_modules/default-browser/node_modules/human-signals": { - "version": "4.3.1", - "license": "Apache-2.0", + "node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", "engines": { - "node": ">=14.18.0" + "node": ">= 0.6" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", + "node_modules/framesync": { + "version": "6.1.2", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "tslib": "2.4.0" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", + "node_modules/fs-extra": { + "version": "11.2.0", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14.14" } }, - "node_modules/defu": { - "version": "6.1.4", - "license": "MIT" + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/delaunator": { - "version": "5.0.1", - "license": "ISC", - "dependencies": { - "robust-predicates": "^3.0.2" + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "license": "MIT", + "node_modules/fuse.js": { + "version": "7.0.0", + "license": "Apache-2.0", "engines": { - "node": ">=0.4.0" + "node": ">=10" } }, - "node_modules/depd": { - "version": "2.0.0", + "node_modules/gensync": { + "version": "1.0.0-beta.2", "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" } }, - "node_modules/dequal": { - "version": "2.0.3", - "license": "MIT", + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", "engines": { - "node": ">=6" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/desm": { - "version": "1.3.1", - "license": "MIT" - }, - "node_modules/destr": { - "version": "2.0.2", + "node_modules/get-port-please": { + "version": "3.1.2", "license": "MIT" }, - "node_modules/devlop": { - "version": "1.1.0", + "node_modules/get-stream": { + "version": "8.0.1", "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" + "optional": true, + "engines": { + "node": ">=16" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "5.1.0", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, + "node_modules/giget": { + "version": "1.2.1", "license": "MIT", + "optional": true, "dependencies": { - "path-type": "^4.0.0" + "citty": "^0.1.5", + "consola": "^3.2.3", + "defu": "^6.1.3", + "node-fetch-native": "^1.6.1", + "nypm": "^0.3.3", + "ohash": "^1.1.3", + "pathe": "^1.1.1", + "tar": "^6.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "giget": "dist/cli.mjs" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", + "node_modules/glob": { + "version": "7.2.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "license": "MIT", + "license": "ISC", "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" + "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": ">=6" - } - }, - "node_modules/dns-socket": { - "version": "4.2.2", - "license": "MIT", - "dependencies": { - "dns-packet": "^5.2.4" + "node": "*" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", "dependencies": { - "esutils": "^2.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 6" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", + "node_modules/global-directory": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/domhandler": { - "version": "5.0.3", - "license": "BSD-2-Clause", + "node_modules/globby": { + "version": "14.0.0", + "license": "MIT", + "optional": true, "dependencies": { - "domelementtype": "^2.3.0" + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">= 4" + "node": ">=18" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dompurify": { - "version": "3.0.8", - "license": "(MPL-2.0 OR Apache-2.0)" - }, - "node_modules/domutils": { - "version": "3.1.0", - "license": "BSD-2-Clause", + "node_modules/got": { + "version": "12.6.1", + "license": "MIT", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dotenv": { - "version": "16.4.1", - "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/dotenv-expand": { - "version": "10.0.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/drauu": { - "version": "0.3.7", + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", "license": "MIT", - "dependencies": { - "@drauu/core": "0.3.7" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "license": "MIT" - }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.650", + "node_modules/graceful-fs": { + "version": "4.2.11", "license": "ISC" }, - "node_modules/elkjs": { - "version": "0.9.1", - "license": "EPL-2.0" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, "license": "MIT" }, - "node_modules/encodeurl": { - "version": "1.0.2", + "node_modules/gray-matter": { + "version": "4.0.3", "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.0" } }, - "node_modules/encoding": { - "version": "0.1.13", - "dev": true, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", "license": "MIT", - "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "sprintf-js": "~1.0.2" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", "license": "MIT", "dependencies": { - "once": "^1.4.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/entities": { - "version": "4.5.0", - "license": "BSD-2-Clause", + "node_modules/gzip-size": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, "engines": { - "node": ">=0.12" + "node": ">=10" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "dev": true, + "node_modules/has-flag": { + "version": "3.0.0", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/env-schema": { - "version": "5.2.1", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0", - "dotenv": "^16.0.0", - "dotenv-expand": "^10.0.0" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/error-stack-parser-es": { - "version": "0.1.1", + "node_modules/hash-sum": { + "version": "2.0.0", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } + "optional": true }, - "node_modules/esbuild": { - "version": "0.18.20", - "hasInstallScript": true, + "node_modules/hasown": { + "version": "2.0.0", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "node": ">= 0.4" } }, - "node_modules/escalade": { - "version": "3.1.1", + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/escape-html": { - "version": "1.0.3", + "node_modules/hast-util-from-parse5/node_modules/@types/unist": { + "version": "3.0.2", "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "dev": true, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eslint-plugin-sql": { - "version": "2.5.0", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/hast-util-raw": { + "version": "9.0.2", + "license": "MIT", "dependencies": { - "astring": "^1.8.3", - "debug": "^4.3.4", - "lodash": "^4.17.21", - "pg-formatter": "^2.0.2", - "sql-parse": "^0.1.5" - }, - "engines": { - "node": ">=12" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "peerDependencies": { - "eslint": ">=8.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/hast-util-raw/node_modules/@types/unist": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/hast-util-to-html": { + "version": "9.0.0", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "node_modules/hast-util-to-html/node_modules/@types/unist": { + "version": "3.0.2", + "license": "MIT" }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "dev": true, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", "license": "MIT", "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" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/hastscript": { + "version": "8.0.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "node_modules/heap": { + "version": "0.2.7", + "license": "MIT" }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, + "node_modules/hello-world": { + "resolved": "src/step-01-hello-world", + "link": true + }, + "node_modules/help-me": { + "version": "5.0.0", "license": "MIT" }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", + "node_modules/hey-listen": { + "version": "1.0.8", + "license": "MIT" + }, + "node_modules/hookable": { + "version": "5.5.3", + "license": "MIT" + }, + "node_modules/hooks": { + "resolved": "src/step-11-hooks", + "link": true + }, + "node_modules/html-entities": { + "version": "2.4.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", + "node_modules/html-void-elements": { + "version": "3.0.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "dev": true, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/http2-wrapper": { + "version": "2.2.1", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": ">=8" + "node": ">=10.19.0" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", + "node_modules/human-signals": { + "version": "5.0.0", + "license": "Apache-2.0", + "optional": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.17.0" } }, - "node_modules/espree": { - "version": "9.6.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.10.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.0", + "devOptional": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 4" } }, - "node_modules/esquery": { - "version": "1.5.0", + "node_modules/import-fresh": { + "version": "3.3.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esrecurse": { - "version": "4.3.0", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/import-from": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", + "node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8.19" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", + "node_modules/indent-string": { + "version": "5.0.0", "license": "MIT", "engines": { - "node": ">=6" - } + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/events": { - "version": "3.3.0", - "license": "MIT", + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "license": "ISC", "engines": { - "node": ">=0.8.x" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/events-to-array": { + "node_modules/internmap": { "version": "2.0.3", - "dev": true, "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/execa": { - "version": "8.0.1", + "node_modules/ip-regex": { + "version": "5.0.0", "license": "MIT", - "optional": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, "engines": { - "node": ">=16.17" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "license": "ISC", - "optional": true, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.10" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/is-binary-path": { + "version": "2.1.0", "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/fast-content-type-parse": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/fast-copy": { - "version": "3.0.1", - "license": "MIT" - }, - "node_modules/fast-decode-uri-component": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", + "node_modules/is-core-module": { + "version": "2.13.1", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "hasown": "^2.0.0" }, - "engines": { - "node": ">=8.6.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stringify": { - "version": "5.10.0", + "node_modules/is-docker": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@fastify/deepmerge": "^1.0.0", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "json-schema-ref-resolver": "^1.0.1", - "rfdc": "^1.2.0" - } - }, - "node_modules/fast-jwt": { - "version": "3.3.3", - "license": "Apache-2.0", - "dependencies": { - "@lukeed/ms": "^2.0.1", - "asn1.js": "^5.4.1", - "ecdsa-sig-formatter": "^1.0.11", - "mnemonist": "^0.39.5" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=16 <22" - } - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-querystring": { - "version": "1.1.2", - "license": "MIT", - "dependencies": { - "fast-decode-uri-component": "^1.0.1" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-redact": { - "version": "3.3.0", + "node_modules/is-extendable": { + "version": "0.1.1", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/fast-safe-stringify": { + "node_modules/is-extglob": { "version": "2.1.1", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "2.3.0", - "license": "MIT" - }, - "node_modules/fastfall": { - "version": "1.5.1", "license": "MIT", - "dependencies": { - "reusify": "^1.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/fastify": { - "version": "4.26.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@fastify/ajv-compiler": "^3.5.0", - "@fastify/error": "^3.4.0", - "@fastify/fast-json-stringify-compiler": "^4.3.0", - "abstract-logging": "^2.0.1", - "avvio": "^8.2.1", - "fast-content-type-parse": "^1.1.0", - "fast-json-stringify": "^5.8.0", - "find-my-way": "^8.0.0", - "light-my-request": "^5.11.0", - "pino": "^8.17.0", - "process-warning": "^3.0.0", - "proxy-addr": "^2.0.7", - "rfdc": "^1.3.0", - "secure-json-parse": "^2.7.0", - "semver": "^7.5.4", - "toad-cache": "^3.3.0" + "engines": { + "node": ">=8" } }, - "node_modules/fastify-plugin": { - "version": "4.5.1", - "license": "MIT" - }, - "node_modules/fastify/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/fastify/node_modules/semver": { - "version": "7.5.4", - "license": "ISC", + "node_modules/is-inside-container": { + "version": "1.0.0", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "is-docker": "^3.0.0" }, "bin": { - "semver": "bin/semver.js" + "is-inside-container": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fastify/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "node_modules/fastparallel": { - "version": "2.4.1", - "license": "ISC", + "node_modules/is-installed-globally": { + "version": "1.0.0", + "license": "MIT", "dependencies": { - "reusify": "^1.0.4", - "xtend": "^4.0.2" + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fastq": { - "version": "1.17.0", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fastseries": { - "version": "1.7.2", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, + "node_modules/is-installed-globally/node_modules/is-path-inside": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-saver": { - "version": "2.0.5", - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.0.1", + "node_modules/is-ip": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler": { - "version": "1.1.2", + "node_modules/is-number": { + "version": "7.0.0", "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">=0.12.0" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/find-my-way": { - "version": "8.1.0", + "node_modules/is-stream": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^2.0.0" - }, "engines": { - "node": ">=14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-replace": { - "version": "3.0.0", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "array-back": "^3.0.1" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/find-up": { - "version": "5.0.0", + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "dev": true, "license": "BSD-3-Clause", - "optional": true, - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/flat-cache": { - "version": "3.2.0", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" } }, - "node_modules/flatted": { - "version": "3.2.9", + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "license": "ISC" - }, - "node_modules/fluent-json-schema": { - "version": "4.2.1", "license": "MIT", - "dependencies": { - "@fastify/deepmerge": "^1.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">=4.0" + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/foreground-child": { - "version": "2.0.0", + "node_modules/istanbul-reports": { + "version": "3.1.6", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", + "node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">= 6" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/form-data-encoder": { - "version": "2.1.4", + "node_modules/jiti": { + "version": "1.21.0", "license": "MIT", - "engines": { - "node": ">= 14.17" + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/forwarded": { - "version": "0.2.0", + "node_modules/joycon": { + "version": "3.1.1", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/framesync": { - "version": "6.1.2", - "license": "MIT", - "dependencies": { - "tslib": "2.4.0" - } + "node_modules/js-base64": { + "version": "3.7.6", + "license": "BSD-3-Clause" }, - "node_modules/fromentries": { - "version": "1.3.2", - "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/js-tokens": { + "version": "4.0.0", "license": "MIT" }, - "node_modules/fs-extra": { - "version": "11.2.0", + "node_modules/js-yaml": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=14.14" + "node": ">=4" } }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "dev": true, - "license": "ISC", + "node_modules/json-buffer": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "license": "MIT", "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "fast-deep-equal": "^3.1.3" } }, - "node_modules/fs.realpath": { + "node_modules/json-schema-traverse": { "version": "1.0.0", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/function-bind": { - "version": "1.1.2", + "node_modules/json5": { + "version": "2.2.3", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/function-loop": { - "version": "4.0.0", + "node_modules/jsonc-parser": { + "version": "3.2.1", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/just-extend": { + "version": "6.2.0", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/fuse.js": { - "version": "7.0.0", - "license": "Apache-2.0", + "node_modules/katex": { + "version": "0.16.9", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/kleur": { + "version": "3.0.3", "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", + "node_modules/knitwork": { + "version": "1.0.0", + "license": "MIT", + "optional": true + }, + "node_modules/kolorist": { + "version": "1.8.0", + "license": "MIT" + }, + "node_modules/layout-base": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 0.8.0" } }, - "node_modules/get-port-please": { - "version": "3.1.2", + "node_modules/light-my-request": { + "version": "5.11.0", + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^0.5.0", + "process-warning": "^2.0.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/light-my-request/node_modules/process-warning": { + "version": "2.3.2", "license": "MIT" }, - "node_modules/get-stream": { - "version": "8.0.1", + "node_modules/lilconfig": { + "version": "2.1.0", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/giget": { - "version": "1.2.1", + "node_modules/linkify-it": { + "version": "4.0.1", "license": "MIT", - "optional": true, "dependencies": { - "citty": "^0.1.5", - "consola": "^3.2.3", - "defu": "^6.1.3", - "node-fetch-native": "^1.6.1", - "nypm": "^0.3.3", - "ohash": "^1.1.3", - "pathe": "^1.1.1", - "tar": "^6.2.0" - }, - "bin": { - "giget": "dist/cli.mjs" + "uc.micro": "^1.0.1" } }, - "node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", + "node_modules/local-pkg": { + "version": "0.5.0", + "license": "MIT", "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" + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", + "node_modules/localtunnel": { + "version": "2.0.2", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "bin": { + "lt": "bin/lt.js" }, "engines": { - "node": ">= 6" + "node": ">=8.3.0" } }, - "node_modules/global-directory": { - "version": "4.0.1", + "node_modules/localtunnel/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "ini": "4.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/globals": { - "version": "11.12.0", - "license": "MIT", - "engines": { - "node": ">=4" + "node_modules/localtunnel/node_modules/cliui": { + "version": "7.0.4", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/globby": { - "version": "14.0.0", + "node_modules/localtunnel/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", - "optional": true, "dependencies": { - "@sindresorhus/merge-streams": "^1.0.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/got": { - "version": "12.6.1", + "node_modules/localtunnel/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/localtunnel/node_modules/debug": { + "version": "4.3.2", "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=14.16" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "node_modules/got/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/localtunnel/node_modules/wrap-ansi": { + "version": "7.0.0", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" + "node_modules/localtunnel/node_modules/yargs": { + "version": "17.1.1", + "license": "MIT", + "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": ">=12" + } }, - "node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" + "node_modules/localtunnel/node_modules/yargs-parser": { + "version": "20.2.9", + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "node_modules/gray-matter": { - "version": "4.0.3", + "node_modules/locate-path": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.assignwith": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/logging": { + "resolved": "src/step-03-logging", + "link": true + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "license": "ISC", "dependencies": { - "sprintf-js": "~1.0.2" + "yallist": "^3.0.2" } }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", + "node_modules/magic-string": { + "version": "0.30.5", "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@jridgewell/sourcemap-codec": "^1.4.15" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=12" } }, - "node_modules/gzip-size": { - "version": "6.0.0", + "node_modules/make-dir": { + "version": "4.0.0", + "dev": true, "license": "MIT", "dependencies": { - "duplexer": "^0.1.2" + "semver": "^7.5.3" }, "engines": { "node": ">=10" @@ -7120,2729 +6347,885 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", + "node_modules/make-dir/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/hash-sum": { - "version": "2.0.0", - "license": "MIT", - "optional": true + "node_modules/make-dir/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/hasown": { - "version": "2.0.0", + "node_modules/make-dir/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/markdown-it": { + "version": "13.0.2", "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" }, - "engines": { - "node": ">= 0.4" + "bin": { + "markdown-it": "bin/markdown-it.js" } }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.1", + "node_modules/markdown-it-footnote": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/markdown-it-link-attributes": { + "version": "4.0.1", + "license": "MIT" + }, + "node_modules/markdown-it-mdc": { + "version": "0.1.4", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^8.0.0", - "property-information": "^6.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" + "js-yaml": "^4.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@types/markdown-it": "^13.0.1", + "markdown-it": "^13.0.1" } }, - "node_modules/hast-util-from-parse5/node_modules/@types/unist": { - "version": "3.0.2", - "license": "MIT" + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-raw": { - "version": "9.0.2", + "node_modules/mdast-util-to-hast": { + "version": "13.1.0", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", + "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-raw/node_modules/@types/unist": { - "version": "3.0.2", - "license": "MIT" - }, - "node_modules/hast-util-to-html": { - "version": "9.0.0", + "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { + "version": "4.0.3", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^9.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, - "node_modules/hast-util-to-html/node_modules/@types/unist": { - "version": "3.0.2", - "license": "MIT" - }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", + "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": { + "version": "2.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", + "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/hastscript": { - "version": "8.0.0", + "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" + "@types/mdast": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/heap": { - "version": "0.2.7", - "license": "MIT" - }, - "node_modules/hello-world": { - "resolved": "src/step-01-hello-world", - "link": true - }, - "node_modules/help-me": { - "version": "5.0.0", - "license": "MIT" + "node_modules/mdn-data": { + "version": "2.0.30", + "license": "CC0-1.0" }, - "node_modules/hey-listen": { - "version": "1.0.8", + "node_modules/mdurl": { + "version": "1.0.1", "license": "MIT" }, - "node_modules/hookable": { - "version": "5.5.3", + "node_modules/merge-stream": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/hooks": { - "resolved": "src/step-11-hooks", - "link": true - }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "node_modules/mermaid": { + "version": "10.7.0", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.9.0", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" } }, - "node_modules/html-entities": { - "version": "2.4.0", + "node_modules/micromark": { + "version": "3.2.0", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/mdevils" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "patreon", - "url": "https://patreon.com/mdevils" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.3.1", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" } }, - "node_modules/htmlparser2": { - "version": "9.1.0", + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", { - "type": "github", - "url": "https://github.com/sponsors/fb55" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "license": "BSD-2-Clause" - }, - "node_modules/http-errors": { - "version": "2.0.0", + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "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" + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.0", - "dev": true, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/http2-wrapper": { - "version": "2.2.1", + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.2", - "dev": true, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=16.17.0" + "node_modules/micromark-util-character": { + "version": "1.2.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.0", - "devOptional": true, "license": "MIT", - "engines": { - "node": ">= 4" + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/ignore-walk": { - "version": "6.0.4", - "dev": true, - "license": "ISC", + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-from": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=12.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "4.1.1", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ink": { - "version": "4.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/ansi-tokenize": "^0.1.3", - "ansi-escapes": "^6.0.0", - "auto-bind": "^5.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "cli-cursor": "^4.0.0", - "cli-truncate": "^3.1.0", - "code-excerpt": "^4.0.0", - "indent-string": "^5.0.0", - "is-ci": "^3.0.1", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lodash": "^4.17.21", - "patch-console": "^2.0.0", - "react-reconciler": "^0.29.0", - "scheduler": "^0.23.0", - "signal-exit": "^3.0.7", - "slice-ansi": "^6.0.0", - "stack-utils": "^2.0.6", - "string-width": "^5.1.2", - "type-fest": "^0.12.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0", - "ws": "^8.12.0", - "yoga-wasm-web": "~0.3.3" - }, - "engines": { - "node": ">=14.16" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "react": ">=18.0.0", - "react-devtools-core": "^4.19.1" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react-devtools-core": { - "optional": true - } - } - }, - "node_modules/ink/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ink/node_modules/chalk": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ink/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/ink/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ink/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/ip": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ip-regex": { - "version": "5.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-actual-promise": { - "version": "1.0.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "tshy": "^1.7.0" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-ci": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-installed-globally": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "global-directory": "^4.0.1", - "is-path-inside": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-installed-globally/node_modules/is-path-inside": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-ip": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "ip-regex": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-lower-case": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-upper-case": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "1.21.0", - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/joycon": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/js-base64": { - "version": "3.7.6", - "license": "BSD-3-Clause" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/json-schema-ref-resolver": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/just-extend": { - "version": "6.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/katex": { - "version": "0.16.9", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "license": "MIT", - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/khroma": { - "version": "2.1.0" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/knitwork": { - "version": "1.0.0", - "license": "MIT", - "optional": true - }, - "node_modules/kolorist": { - "version": "1.8.0", - "license": "MIT" - }, - "node_modules/layout-base": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/light-my-request": { - "version": "5.11.0", - "license": "BSD-3-Clause", - "dependencies": { - "cookie": "^0.5.0", - "process-warning": "^2.0.0", - "set-cookie-parser": "^2.4.1" - } - }, - "node_modules/light-my-request/node_modules/process-warning": { - "version": "2.3.2", - "license": "MIT" - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/linkify-it": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/local-pkg": { - "version": "0.5.0", - "license": "MIT", - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/localtunnel": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/localtunnel/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/localtunnel/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "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/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "license": "MIT", - "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": ">=12" - } - }, - "node_modules/localtunnel/node_modules/yargs-parser": { - "version": "20.2.9", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.assignwith": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/logging": { - "resolved": "src/step-03-logging", - "link": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/make-error": { - "version": "1.3.6", - "dev": true, - "license": "ISC" - }, - "node_modules/make-fetch-happen": { - "version": "13.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/markdown-it": { - "version": "13.0.2", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-footnote": { - "version": "3.0.3", - "license": "MIT" - }, - "node_modules/markdown-it-link-attributes": { - "version": "4.0.1", - "license": "MIT" - }, - "node_modules/markdown-it-mdc": { - "version": "0.1.4", - "license": "MIT", - "dependencies": { - "js-yaml": "^4.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@types/markdown-it": "^13.0.1", - "markdown-it": "^13.0.1" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "3.0.1", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.1.0", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": { - "version": "2.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "license": "CC0-1.0" - }, - "node_modules/mdurl": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/mermaid": { - "version": "10.7.0", - "license": "MIT", - "dependencies": { - "@braintree/sanitize-url": "^6.0.1", - "@types/d3-scale": "^4.0.3", - "@types/d3-scale-chromatic": "^3.0.0", - "cytoscape": "^3.23.0", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.1.0", - "d3": "^7.4.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.10", - "dayjs": "^1.11.7", - "dompurify": "^3.0.5", - "elkjs": "^0.9.0", - "khroma": "^2.0.0", - "lodash-es": "^4.17.21", - "mdast-util-from-markdown": "^1.3.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.3", - "ts-dedent": "^2.2.0", - "uuid": "^9.0.0", - "web-worker": "^1.2.0" - } - }, - "node_modules/micromark": { - "version": "3.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.5", - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mimic-response": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-fetch": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-flush/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/minizlib": { - "version": "2.1.2", - "devOptional": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "devOptional": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "devOptional": true, - "license": "ISC" - }, - "node_modules/mkdirp": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "dev": true, - "license": "MIT" - }, - "node_modules/mlly": { - "version": "1.5.0", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.0.3", - "ufo": "^1.3.2" - } - }, - "node_modules/mnemonist": { - "version": "0.39.7", - "license": "MIT", - "dependencies": { - "obliterator": "^2.0.1" - } - }, - "node_modules/monaco-editor": { - "version": "0.37.1", - "license": "MIT" - }, - "node_modules/mri": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "5.0.4", + "node_modules/micromark-util-encode": { + "version": "1.1.0", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/nise": { - "version": "5.1.7", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/text-encoding": "^0.7.2", - "just-extend": "^6.2.0", - "path-to-regexp": "^6.2.1" - } + "license": "MIT" }, - "node_modules/node-fetch-native": { - "version": "1.6.1", + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT" }, - "node_modules/node-gyp": { - "version": "10.0.1", - "dev": true, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/node-gyp/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/node-gyp/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "micromark-util-types": "^1.0.0" } }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "dev": true, - "license": "ISC", + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, - "node_modules/node-gyp/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/node-releases": { - "version": "2.0.14", + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT" }, - "node_modules/non-layered-tidy-tree-layout": { - "version": "2.0.2", + "node_modules/micromark-util-types": { + "version": "1.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT" }, - "node_modules/nopt": { - "version": "7.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "6.0.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8.6" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "mime-db": "1.52.0" }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/normalize-path": { - "version": "3.0.0", + "node_modules/mimic-fn": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-url": { - "version": "8.0.0", + "node_modules/mimic-response": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=14.16" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-bundled": { - "version": "3.0.0", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", "dev": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "*" } }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-install-checks/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/minipass": { + "version": "7.0.4", "dev": true, "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "license": "MIT", + "optional": true, "dependencies": { + "minipass": "^3.0.0", "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.5.4", - "dev": true, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", "license": "ISC", + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm-install-checks/node_modules/yallist": { + "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", + "node_modules/mkdirp-classic": { + "version": "0.5.3", "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" } }, - "node_modules/npm-package-arg": { - "version": "11.0.1", - "dev": true, - "license": "ISC", + "node_modules/mnemonist": { + "version": "0.39.7", + "license": "MIT", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, + "obliterator": "^2.0.1" + } + }, + "node_modules/monaco-editor": { + "version": "0.37.1", + "license": "MIT" + }, + "node_modules/mri": { + "version": "1.2.0", + "license": "MIT", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/mrmime": { + "version": "2.0.0", + "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "5.0.4", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "bin": { - "semver": "bin/semver.js" + "nanoid": "bin/nanoid.js" }, "engines": { - "node": ">=10" + "node": "^18 || >=20" } }, - "node_modules/npm-package-arg/node_modules/yallist": { - "version": "4.0.0", + "node_modules/natural-compare": { + "version": "1.4.0", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/npm-packlist": { - "version": "8.0.2", + "node_modules/natural-compare-lite": { + "version": "1.4.0", "dev": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^6.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/npm-pick-manifest": { - "version": "9.0.0", + "node_modules/nise": { + "version": "5.1.7", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/npm-pick-manifest/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/node-fetch-native": { + "version": "1.6.1", + "license": "MIT" }, - "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/node-releases": { + "version": "2.0.14", + "license": "MIT" + }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm-pick-manifest/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/npm-registry-fetch": { - "version": "16.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" - }, + "node_modules/normalize-url": { + "version": "8.0.0", + "license": "MIT", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm-run-path": { @@ -9956,14 +7339,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opener": { - "version": "1.5.2", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, "node_modules/openurl": { "version": "1.1.1", "license": "MIT" @@ -9995,68 +7370,26 @@ "version": "3.1.0", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, + "node_modules/p-locate": { + "version": "5.0.0", "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-tap": { @@ -10074,37 +7407,6 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/pacote": { - "version": "17.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/pako": { "version": "1.0.11", "license": "(MIT AND Zlib)" @@ -10137,14 +7439,6 @@ "node": ">= 0.8" } }, - "node_modules/patch-console": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/path-exists": { "version": "4.0.0", "license": "MIT", @@ -10479,14 +7773,6 @@ "version": "6.2.2", "license": "MIT" }, - "node_modules/pirates": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/pkg-types": { "version": "1.0.3", "license": "MIT", @@ -10504,17 +7790,6 @@ "resolved": "src/step-02-plugins", "link": true }, - "node_modules/polite-json": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/popmotion": { "version": "11.0.5", "license": "MIT", @@ -10711,41 +7986,6 @@ "node": ">=6" } }, - "node_modules/prismjs-terminal": { - "version": "1.2.3", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "chalk": "^5.2.0", - "prismjs": "^1.29.0", - "string-length": "^6.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/prismjs-terminal/node_modules/chalk": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/proc-log": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/process": { "version": "0.11.10", "license": "MIT", @@ -10753,38 +7993,10 @@ "node": ">= 0.6.0" } }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/process-warning": { "version": "3.0.0", "license": "MIT" }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prompts": { "version": "2.4.2", "license": "MIT", @@ -10815,239 +8027,86 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/public-ip": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "aggregate-error": "^4.0.1", - "dns-socket": "^4.2.2", - "got": "^12.1.0", - "is-ip": "^4.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rc9": { - "version": "2.1.1", - "license": "MIT", - "optional": true, - "dependencies": { - "defu": "^6.1.2", - "destr": "^2.0.0", - "flat": "^5.0.2" - } - }, - "node_modules/react": { - "version": "18.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-element-to-jsx-string": { - "version": "15.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@base2/pretty-print-object": "1.0.1", - "is-plain-object": "5.0.0", - "react-is": "18.1.0" - }, - "peerDependencies": { - "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", - "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" - } - }, - "node_modules/react-is": { - "version": "18.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/react-reconciler": { - "version": "0.29.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/read-package-json": { - "version": "7.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "node_modules/proxy-from-env": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", + "node_modules/public-ip": { + "version": "6.0.1", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "aggregate-error": "^4.0.1", + "dns-socket": "^4.2.2", + "got": "^12.1.0", + "is-ip": "^4.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, - "node_modules/read-package-json/node_modules/signal-exit": { - "version": "4.1.0", + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rc9": { + "version": "2.1.1", + "license": "MIT", + "optional": true, + "dependencies": { + "defu": "^6.1.2", + "destr": "^2.0.0", + "flat": "^5.0.2" } }, "node_modules/readable-stream": { @@ -11138,90 +8197,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve-import": { - "version": "1.4.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^10.3.3", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/resolve-import/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/resolve-import/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/resolve-import/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/resolve-import/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/resolve-import/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/responselike": { "version": "3.0.0", "license": "MIT", @@ -11235,43 +8210,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ret": { "version": "0.2.2", "license": "MIT", @@ -11279,14 +8217,6 @@ "node": ">=4" } }, - "node_modules/retry": { - "version": "0.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.0.4", "license": "MIT", @@ -11500,14 +8430,6 @@ "version": "2.1.2", "license": "MIT" }, - "node_modules/scheduler": { - "version": "0.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, "node_modules/scule": { "version": "1.2.0", "license": "MIT", @@ -11583,26 +8505,11 @@ "version": "3.0.7", "license": "ISC" }, - "node_modules/sigstore": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.1", - "@sigstore/core": "^0.2.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.2.1", - "@sigstore/tuf": "^2.3.0", - "@sigstore/verify": "^0.1.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/sinon": { "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0", "@sinonjs/fake-timers": "^11.2.2", @@ -11631,69 +8538,32 @@ "dependencies": { "has-flag": "^4.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sirv": { - "version": "2.0.4", - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/slash": { - "version": "5.1.0", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slice-ansi": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, + "node_modules/sirv": { + "version": "2.0.4", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">= 10" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "dev": true, + "node_modules/sisteransi": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/slash": { + "version": "5.1.0", "license": "MIT", + "optional": true, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11723,41 +8593,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/sonic-boom": { "version": "3.8.0", "license": "MIT", @@ -11797,34 +8632,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.4.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/split2": { "version": "4.2.0", "license": "ISC", @@ -11844,36 +8651,6 @@ "node": ">=0.10" } }, - "node_modules/ssri": { - "version": "10.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/start-here": { "resolved": "src/start-here", "link": true @@ -11925,45 +8702,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string-length": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/string-width": { "version": "4.2.3", "license": "MIT", @@ -12105,112 +8843,6 @@ "node_modules/svg-tags": { "version": "1.0.0" }, - "node_modules/sync-content": { - "version": "1.0.2", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^10.2.6", - "mkdirp": "^3.0.1", - "path-scurry": "^1.9.2", - "rimraf": "^5.0.1" - }, - "bin": { - "sync-content": "dist/mjs/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sync-content/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sync-content/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sync-content/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sync-content/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sync-content/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sync-content/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/table-layout": { "version": "3.0.2", "dev": true, @@ -12247,73 +8879,10 @@ "node": ">=12.17" } }, - "node_modules/tap": { - "version": "18.7.0", - "resolved": "https://registry.npmjs.org/tap/-/tap-18.7.0.tgz", - "integrity": "sha512-bL/0krlx8k3fY9mjI9CMfVoAGclZegl+vm5pEJpF/USxam5eNhp5wLk5UH0ST3gWEJkW0PDdFHTOStE+mYurrQ==", - "dev": true, - "dependencies": { - "@tapjs/after": "1.1.18", - "@tapjs/after-each": "1.1.18", - "@tapjs/asserts": "1.1.18", - "@tapjs/before": "1.1.18", - "@tapjs/before-each": "1.1.18", - "@tapjs/core": "1.5.0", - "@tapjs/filter": "1.2.18", - "@tapjs/fixture": "1.2.18", - "@tapjs/intercept": "1.2.18", - "@tapjs/mock": "1.3.0", - "@tapjs/node-serialize": "1.3.0", - "@tapjs/run": "1.5.0", - "@tapjs/snapshot": "1.2.18", - "@tapjs/spawn": "1.1.18", - "@tapjs/stdin": "1.1.18", - "@tapjs/test": "1.4.0", - "@tapjs/typescript": "1.4.0", - "@tapjs/worker": "1.1.18", - "resolve-import": "^1.4.5" - }, - "bin": { - "tap": "dist/esm/run.mjs" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tap-parser": { - "version": "15.3.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "events-to-array": "^2.0.3", - "tap-yaml": "2.2.1" - }, - "bin": { - "tap-parser": "bin/cmd.cjs" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - } - }, - "node_modules/tap-yaml": { - "version": "2.2.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "yaml": "^2.3.0", - "yaml-types": "^0.3.0" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - } - }, "node_modules/tar": { "version": "6.2.0", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -12348,8 +8917,8 @@ }, "node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -12359,8 +8928,8 @@ }, "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -12370,16 +8939,16 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "devOptional": true, "license": "ISC", + "optional": true, "engines": { "node": ">=8" } }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", - "devOptional": true, "license": "MIT", + "optional": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -12389,20 +8958,8 @@ }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "devOptional": true, - "license": "ISC" - }, - "node_modules/tcompare": { - "version": "6.4.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "diff": "^5.1.0", - "react-element-to-jsx-string": "^15.0.0" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - } + "license": "ISC", + "optional": true }, "node_modules/test-exclude": { "version": "6.0.0", @@ -12504,14 +9061,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/trivial-deferred": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 8" - } - }, "node_modules/ts-dedent": { "version": "2.2.0", "license": "MIT", @@ -12653,125 +9202,6 @@ "node": ">=0.10.0" } }, - "node_modules/tshy": { - "version": "1.11.0", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "chalk": "^5.3.0", - "chokidar": "^3.5.3", - "foreground-child": "^3.1.1", - "mkdirp": "^3.0.1", - "resolve-import": "^1.4.4", - "rimraf": "^5.0.1", - "sync-content": "^1.0.2", - "typescript": "5.2 || 5.3", - "walk-up-path": "^3.0.1" - }, - "bin": { - "tshy": "dist/esm/index.js" - }, - "engines": { - "node": "16 >=16.17 || 18 >=18.15.0 || >=20.6.1" - } - }, - "node_modules/tshy/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/tshy/node_modules/chalk": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tshy/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tshy/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tshy/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tshy/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tshy/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tslib": { "version": "2.4.0", "license": "0BSD" @@ -12795,19 +9225,6 @@ "dev": true, "license": "0BSD" }, - "node_modules/tuf-js": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "2.0.0", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/type-check": { "version": "0.4.0", "dev": true, @@ -12827,17 +9244,6 @@ "node": ">=4" } }, - "node_modules/type-fest": { - "version": "0.12.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typescript": { "version": "5.2.2", "devOptional": true, @@ -12970,28 +9376,6 @@ "@types/estree": "^1.0.0" } }, - "node_modules/unique-filename": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unique-slug": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/unist-util-is": { "version": "6.0.0", "license": "MIT", @@ -13384,26 +9768,6 @@ "node": ">=10.12.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/validation": { "resolved": "src/step-04-validation", "link": true @@ -13687,11 +10051,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/walk-up-path": { - "version": "3.0.1", - "dev": true, - "license": "ISC" - }, "node_modules/web-namespaces": { "version": "2.0.1", "license": "MIT", @@ -13728,66 +10087,6 @@ "node": ">= 8" } }, - "node_modules/widest-line": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/windicss": { "version": "3.5.6", "license": "MIT", @@ -13930,26 +10229,6 @@ "version": "1.0.2", "license": "ISC" }, - "node_modules/ws": { - "version": "8.16.0", - "dev": true, - "license": "MIT", - "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/xtend": { "version": "4.0.2", "license": "MIT", @@ -13976,18 +10255,6 @@ "node": ">= 14" } }, - "node_modules/yaml-types": { - "version": "0.3.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 16", - "npm": ">= 7" - }, - "peerDependencies": { - "yaml": "^2.3.0" - } - }, "node_modules/yargs": { "version": "17.7.2", "license": "MIT", @@ -14029,11 +10296,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoga-wasm-web": { - "version": "0.3.3", - "dev": true, - "license": "MIT" - }, "node_modules/zhead": { "version": "2.2.4", "license": "MIT", diff --git a/package.json b/package.json index 3c7f15f4..a9872fce 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "db:migrate": "postgrator", "db:down": "docker compose down", "lint": "eslint --ext .ts,.js ./src", - "test": "tap && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" }, "dependencies": { "@fastify/autoload": "^5.7.1", @@ -39,7 +39,6 @@ "@types/http-errors": "^2.0.2", "@types/node": "^20.8.6", "@types/sinon": "^17.0.1", - "@types/tap": "^15.0.8", "@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/parser": "^5.62.0", "c8": "^8.0.1", @@ -49,7 +48,6 @@ "postgrator-cli": "^7.0.0", "prettier": "^3.0.3", "sinon": "^17.0.1", - "tap": "^18.7.0", "ts-node-dev": "^2.0.0", "typescript": "^5.2.2" }, diff --git a/src/step-06-testing/package.json b/src/step-06-testing/package.json index 303bd2eb..20f6d777 100644 --- a/src/step-06-testing/package.json +++ b/src/step-06-testing/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-06-testing/test/login.test.js b/src/step-06-testing/test/login.test.js index 07419d7a..021eee31 100644 --- a/src/step-06-testing/test/login.test.js +++ b/src/step-06-testing/test/login.test.js @@ -1,11 +1,10 @@ -import t from 'tap' - -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../index.js' test('POST /login', async t => { - t.test('returns 400 with an invalid post payload', async t => { + await t.test('returns 400 with an invalid post payload', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -17,10 +16,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns the data with valid post payload', async t => { + await t.test('returns the data with valid post payload', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -32,8 +31,8 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.same(res.json(), { + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), { username: 'alice', password: 'alice', }) diff --git a/src/step-06-testing/test/users.test.js b/src/step-06-testing/test/users.test.js index ec2e3081..6438fa95 100644 --- a/src/step-06-testing/test/users.test.js +++ b/src/step-06-testing/test/users.test.js @@ -1,18 +1,17 @@ -import t from 'tap' - import buildServer from '../index.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer() const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-07-serialization/package.json b/src/step-07-serialization/package.json index d9c009ff..64b9efe7 100644 --- a/src/step-07-serialization/package.json +++ b/src/step-07-serialization/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-07-serialization/test/login.test.js b/src/step-07-serialization/test/login.test.js index 07419d7a..ed255744 100644 --- a/src/step-07-serialization/test/login.test.js +++ b/src/step-07-serialization/test/login.test.js @@ -1,41 +1,46 @@ -import t from 'tap' - -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../index.js' test('POST /login', async t => { - t.test('returns 400 with an invalid post payload', async t => { - const fastify = buildServer() - - const res = await fastify.inject({ - url: '/login', - method: 'POST', - body: { - name: 'alice', - passcode: 'alice', - }, - }) - - t.equal(res.statusCode, 400) - }) - - t.test('returns the data with valid post payload', async t => { - const fastify = buildServer() - - const res = await fastify.inject({ - url: '/login', - method: 'POST', - body: { + await t.test( + 'returns 400 with an invalid post payload', + async t => { + const fastify = buildServer() + + const res = await fastify.inject({ + url: '/login', + method: 'POST', + body: { + name: 'alice', + passcode: 'alice', + }, + }) + + assert.equal(res.statusCode, 400) + }, + ) + + await t.test( + 'returns the data with valid post payload', + async t => { + const fastify = buildServer() + + const res = await fastify.inject({ + url: '/login', + method: 'POST', + body: { + username: 'alice', + password: 'alice', + }, + }) + + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), { username: 'alice', password: 'alice', - }, - }) - - t.equal(res.statusCode, 200) - t.same(res.json(), { - username: 'alice', - password: 'alice', - }) - }) + }) + }, + ) }) diff --git a/src/step-07-serialization/test/users.test.js b/src/step-07-serialization/test/users.test.js index ec2e3081..6438fa95 100644 --- a/src/step-07-serialization/test/users.test.js +++ b/src/step-07-serialization/test/users.test.js @@ -1,18 +1,17 @@ -import t from 'tap' - import buildServer from '../index.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer() const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-08-authentication/package.json b/src/step-08-authentication/package.json index 0dde73c9..a1111e7f 100644 --- a/src/step-08-authentication/package.json +++ b/src/step-08-authentication/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-08-authentication/test/login.test.js b/src/step-08-authentication/test/login.test.js index 0e4b59b4..f6248e52 100644 --- a/src/step-08-authentication/test/login.test.js +++ b/src/step-08-authentication/test/login.test.js @@ -1,8 +1,9 @@ -import t from 'tap' + import fastify from 'fastify' import sinon from 'sinon' -const { test } = t +import {test} from "node:test" +import assert from "node:assert" function buildServer() { return fastify() @@ -11,7 +12,7 @@ function buildServer() { } test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -19,10 +20,10 @@ test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -33,10 +34,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -48,10 +49,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') @@ -65,7 +66,7 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') }) }) diff --git a/src/step-08-authentication/test/users.test.js b/src/step-08-authentication/test/users.test.js index ec2e3081..6438fa95 100644 --- a/src/step-08-authentication/test/users.test.js +++ b/src/step-08-authentication/test/users.test.js @@ -1,18 +1,17 @@ -import t from 'tap' - import buildServer from '../index.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer() const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-09-config/package.json b/src/step-09-config/package.json index 14337c1c..11495dd6 100644 --- a/src/step-09-config/package.json +++ b/src/step-09-config/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-09-config/test/login.test.js b/src/step-09-config/test/login.test.js index 0e4b59b4..7a545cb1 100644 --- a/src/step-09-config/test/login.test.js +++ b/src/step-09-config/test/login.test.js @@ -1,8 +1,8 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -19,10 +19,10 @@ test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -33,10 +33,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -48,10 +48,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') @@ -65,7 +65,7 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') }) }) diff --git a/src/step-09-config/test/users.test.js b/src/step-09-config/test/users.test.js index 2e12d55b..f1d94e95 100644 --- a/src/step-09-config/test/users.test.js +++ b/src/step-09-config/test/users.test.js @@ -1,19 +1,18 @@ -import t from 'tap' - import buildServer from '../index.js' import config from '../config.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer(config) const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-10-decorators/package.json b/src/step-10-decorators/package.json index b9303750..c7bd8c00 100644 --- a/src/step-10-decorators/package.json +++ b/src/step-10-decorators/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-10-decorators/plugins/authenticate.js b/src/step-10-decorators/plugins/authenticate.js index d8548017..a8b429e5 100644 --- a/src/step-10-decorators/plugins/authenticate.js +++ b/src/step-10-decorators/plugins/authenticate.js @@ -3,6 +3,7 @@ async function authenticate(fastify, opts) { secret: opts.JWT_SECRET, }) + fastify.decorate('authenticate', async (req, reply) => { try { await req.jwtVerify() diff --git a/src/step-10-decorators/test/authenticate.test.js b/src/step-10-decorators/test/authenticate.test.js index b0b92fde..b5af97c1 100644 --- a/src/step-10-decorators/test/authenticate.test.js +++ b/src/step-10-decorators/test/authenticate.test.js @@ -1,43 +1,46 @@ -import t from 'tap' import sinon from 'sinon' import errors from 'http-errors' import fastify from 'fastify' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer(opts) { return fastify().register( import('../plugins/authenticate.js'), - opts + opts, ) } -test('authenticate', async t => { - t.test('replies with error when authentication fails', async t => { - const fastify = await buildServer({ - JWT_SECRET: 'supersecret', - }) +await test('authenticate', async t => { + await t.test( + 'replies with error when authentication fails', + async t => { + const fastify = await buildServer({ + JWT_SECRET: 'supersecret', + }) - const error = errors.Unauthorized() - const req = { jwtVerify: sinon.stub().rejects(error) } - const reply = { send: sinon.stub() } + await fastify.ready() - await t.resolves(fastify.authenticate(req, reply)) - sinon.assert.calledWith(reply.send, error) - }) + const error = errors.Unauthorized() - t.test( + const req = { jwtVerify: sinon.stub().rejects(error) } + const reply = { send: sinon.stub() } + await assert.doesNotReject(fastify.authenticate(req, reply)) + sinon.assert.calledWith(reply.send, error) + }, + ) + + await t.test( 'resolves successfully when authentication succeeds', async t => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) - const req = { jwtVerify: sinon.stub().resolves() } const reply = { send: sinon.stub() } - - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) - } + }, ) }) diff --git a/src/step-10-decorators/test/index.test.js b/src/step-10-decorators/test/index.test.js index 027c0955..16eea78f 100644 --- a/src/step-10-decorators/test/index.test.js +++ b/src/step-10-decorators/test/index.test.js @@ -1,14 +1,13 @@ -import { test } from 'tap' +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../index.js' import config from '../config.js' test('Startup', async t => { - t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async t => { const fastify = buildServer(config) - await fastify.ready() - - t.ok(fastify.jwt) + assert.ok(fastify.jwt) }) }) diff --git a/src/step-10-decorators/test/login.test.js b/src/step-10-decorators/test/login.test.js index 0e4b59b4..7a545cb1 100644 --- a/src/step-10-decorators/test/login.test.js +++ b/src/step-10-decorators/test/login.test.js @@ -1,8 +1,8 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -19,10 +19,10 @@ test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -33,10 +33,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -48,10 +48,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') @@ -65,7 +65,7 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') }) }) diff --git a/src/step-10-decorators/test/users.test.js b/src/step-10-decorators/test/users.test.js index 2e12d55b..f1d94e95 100644 --- a/src/step-10-decorators/test/users.test.js +++ b/src/step-10-decorators/test/users.test.js @@ -1,19 +1,18 @@ -import t from 'tap' - import buildServer from '../index.js' import config from '../config.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer(config) const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-11-hooks/package.json b/src/step-11-hooks/package.json index f3844694..3ef08d96 100644 --- a/src/step-11-hooks/package.json +++ b/src/step-11-hooks/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-11-hooks/test/unit/authenticate.test.js b/src/step-11-hooks/test/unit/authenticate.test.js index bbe6269b..abd69b7d 100644 --- a/src/step-11-hooks/test/unit/authenticate.test.js +++ b/src/step-11-hooks/test/unit/authenticate.test.js @@ -1,9 +1,10 @@ -import t from 'tap' + import sinon from 'sinon' import errors from 'http-errors' import fastify from 'fastify' -const { test } = t +import {test} from "node:test" +import assert from "node:assert" function buildServer(opts) { return fastify().register( @@ -13,7 +14,7 @@ function buildServer(opts) { } test('authenticate', async t => { - t.test('replies with error when authentication fails', async t => { + await t.test('replies with error when authentication fails', async t => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -22,11 +23,11 @@ test('authenticate', async t => { const req = { jwtVerify: sinon.stub().rejects(error) } const reply = { send: sinon.stub() } - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.calledWith(reply.send, error) }) - t.test( + await t.test( 'resolves successfully when authentication succeeds', async t => { const fastify = await buildServer({ @@ -36,7 +37,7 @@ test('authenticate', async t => { const req = { jwtVerify: sinon.stub().resolves() } const reply = { send: sinon.stub() } - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) } ) diff --git a/src/step-11-hooks/test/unit/index.test.js b/src/step-11-hooks/test/unit/index.test.js index c974cc0a..8bc4f254 100644 --- a/src/step-11-hooks/test/unit/index.test.js +++ b/src/step-11-hooks/test/unit/index.test.js @@ -1,15 +1,15 @@ -import { test } from 'tap' +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../../index.js' import config from '../../config.js' test('Startup', async t => { - t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async t => { const fastify = buildServer(config) await fastify.ready() - t.ok(fastify.jwt) + assert.ok(fastify.jwt) }) }) - diff --git a/src/step-11-hooks/test/unit/login.test.js b/src/step-11-hooks/test/unit/login.test.js index 01a24c33..2b22eecd 100644 --- a/src/step-11-hooks/test/unit/login.test.js +++ b/src/step-11-hooks/test/unit/login.test.js @@ -1,8 +1,8 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -19,10 +19,10 @@ test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -33,10 +33,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -48,10 +48,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') @@ -65,7 +65,7 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') }) }) diff --git a/src/step-11-hooks/test/unit/user.test.js b/src/step-11-hooks/test/unit/user.test.js index 167b90f2..21403365 100644 --- a/src/step-11-hooks/test/unit/user.test.js +++ b/src/step-11-hooks/test/unit/user.test.js @@ -1,9 +1,9 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' import errors from 'http-errors' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -12,7 +12,7 @@ function buildServer() { } test('GET /user', async t => { - t.test('returns error when authentication fails', async t => { + await t.test('returns error when authentication fails', async t => { const fastify = buildServer() fastify.authenticate.rejects(errors.Unauthorized()) @@ -20,10 +20,10 @@ test('GET /user', async t => { const res = await fastify.inject('/user') sinon.assert.called(fastify.authenticate) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test( + await t.test( 'returns current user when authentication succeeds', async t => { const fastify = buildServer() @@ -34,8 +34,8 @@ test('GET /user', async t => { const res = await fastify.inject('/user') - t.equal(res.statusCode, 200) - t.same(res.json(), { username: 'alice' }) - } + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), { username: 'alice' }) + }, ) }) diff --git a/src/step-11-hooks/test/unit/users.test.js b/src/step-11-hooks/test/unit/users.test.js index 50ffe621..bb6b7f44 100644 --- a/src/step-11-hooks/test/unit/users.test.js +++ b/src/step-11-hooks/test/unit/users.test.js @@ -1,19 +1,18 @@ -import t from 'tap' - import buildServer from '../../index.js' import config from '../../config.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer(config) const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-12-autoload/package.json b/src/step-12-autoload/package.json index 23e41577..45984946 100644 --- a/src/step-12-autoload/package.json +++ b/src/step-12-autoload/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-12-autoload/test/integration/index.test.js b/src/step-12-autoload/test/integration/index.test.js index 0792f0fe..c228e61b 100644 --- a/src/step-12-autoload/test/integration/index.test.js +++ b/src/step-12-autoload/test/integration/index.test.js @@ -1,9 +1,8 @@ -import t from 'tap' - import buildServer from '../../index.js' import config from '../../config.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('server', async t => { let fastify @@ -12,32 +11,34 @@ test('server', async t => { fastify = buildServer(config) }) - t.teardown(() => fastify.close()) - - t.test('authenticates user and returns current user', async t => { - const loginRes = await fastify.inject({ - url: '/login', - method: 'POST', - body: { - username: 'alice', - password: 'alice', - }, - }) - - const { token } = await loginRes.json() - - t.equal(loginRes.statusCode, 200) - t.type(token, 'string') - - const userRes = await fastify.inject({ - url: '/user', - headers: { - authorization: `bearer ${token}`, - }, - }) - - t.equal(userRes.statusCode, 200) - - t.same(userRes.json(), { username: 'alice' }) - }) + t.afterEach(() => fastify && fastify.close()) + + await t.test( + 'authenticates user and returns current user', + async t => { + const loginRes = await fastify.inject({ + url: '/login', + method: 'POST', + body: { + username: 'alice', + password: 'alice', + }, + }) + + const { token } = await loginRes.json() + + assert.equal(loginRes.statusCode, 200) + assert.equal(typeof token, 'string') + + const userRes = await fastify.inject({ + url: '/user', + headers: { + authorization: `bearer ${token}`, + }, + }) + + assert.equal(userRes.statusCode, 200) + assert.deepEqual(userRes.json(), { username: 'alice' }) + }, + ) }) diff --git a/src/step-12-autoload/test/unit/authenticate.test.js b/src/step-12-autoload/test/unit/authenticate.test.js index 29fcad87..9f538098 100644 --- a/src/step-12-autoload/test/unit/authenticate.test.js +++ b/src/step-12-autoload/test/unit/authenticate.test.js @@ -1,9 +1,9 @@ -import t from 'tap' import sinon from 'sinon' import errors from 'http-errors' import fastify from 'fastify' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer(opts) { return fastify().register( @@ -13,20 +13,23 @@ function buildServer(opts) { } test('authenticate', async t => { - t.test('replies with error when authentication fails', async t => { - const fastify = await buildServer({ - JWT_SECRET: 'supersecret', - }) + await t.test( + 'replies with error when authentication fails', + async t => { + const fastify = await buildServer({ + JWT_SECRET: 'supersecret', + }) - const error = errors.Unauthorized() - const req = { jwtVerify: sinon.stub().rejects(error) } - const reply = { send: sinon.stub() } + const error = errors.Unauthorized() + const req = { jwtVerify: sinon.stub().rejects(error) } + const reply = { send: sinon.stub() } - await t.resolves(fastify.authenticate(req, reply)) - sinon.assert.calledWith(reply.send, error) - }) + await assert.doesNotReject(fastify.authenticate(req, reply)) + sinon.assert.calledWith(reply.send, error) + }, + ) - t.test( + await t.test( 'resolves successfully when authentication succeeds', async t => { const fastify = await buildServer({ @@ -36,7 +39,7 @@ test('authenticate', async t => { const req = { jwtVerify: sinon.stub().resolves() } const reply = { send: sinon.stub() } - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) }, ) diff --git a/src/step-12-autoload/test/unit/index.test.js b/src/step-12-autoload/test/unit/index.test.js index c974cc0a..d7aff90b 100644 --- a/src/step-12-autoload/test/unit/index.test.js +++ b/src/step-12-autoload/test/unit/index.test.js @@ -1,15 +1,16 @@ -import { test } from 'tap' +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../../index.js' import config from '../../config.js' test('Startup', async t => { - t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async t => { const fastify = buildServer(config) await fastify.ready() - t.ok(fastify.jwt) + assert.ok(fastify.jwt) }) }) diff --git a/src/step-12-autoload/test/unit/login.test.js b/src/step-12-autoload/test/unit/login.test.js index 01a24c33..2b22eecd 100644 --- a/src/step-12-autoload/test/unit/login.test.js +++ b/src/step-12-autoload/test/unit/login.test.js @@ -1,8 +1,8 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -19,10 +19,10 @@ test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -33,10 +33,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -48,10 +48,10 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') @@ -65,7 +65,7 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') }) }) diff --git a/src/step-12-autoload/test/unit/user.test.js b/src/step-12-autoload/test/unit/user.test.js index e7b7a63d..73d252d5 100644 --- a/src/step-12-autoload/test/unit/user.test.js +++ b/src/step-12-autoload/test/unit/user.test.js @@ -1,9 +1,9 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' import errors from 'http-errors' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -12,7 +12,7 @@ function buildServer() { } test('GET /', async t => { - t.test('returns error when authentication fails', async t => { + await t.test('returns error when authentication fails', async t => { const fastify = buildServer() fastify.authenticate.rejects(errors.Unauthorized()) @@ -20,10 +20,10 @@ test('GET /', async t => { const res = await fastify.inject('/') sinon.assert.called(fastify.authenticate) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test( + await t.test( 'returns current user when authentication succeeds', async t => { const fastify = buildServer() @@ -34,8 +34,8 @@ test('GET /', async t => { const res = await fastify.inject('/') - t.equal(res.statusCode, 200) - t.same(res.json(), { username: 'alice' }) + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), { username: 'alice' }) }, ) }) diff --git a/src/step-12-autoload/test/unit/users.test.js b/src/step-12-autoload/test/unit/users.test.js index 50ffe621..bb6b7f44 100644 --- a/src/step-12-autoload/test/unit/users.test.js +++ b/src/step-12-autoload/test/unit/users.test.js @@ -1,19 +1,18 @@ -import t from 'tap' - import buildServer from '../../index.js' import config from '../../config.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer(config) const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) diff --git a/src/step-13-database/package.json b/src/step-13-database/package.json index 359924d5..9e113db0 100644 --- a/src/step-13-database/package.json +++ b/src/step-13-database/package.json @@ -6,6 +6,6 @@ "version": "1.0.0", "scripts": { "start": "node server", - "test": "tap --allow-empty-coverage && c8 report --check-coverage --temp-directory .tap/coverage --100" + "test": "c8 --check-coverage --100 node --test" } } diff --git a/src/step-13-database/test/integration/index.test.js b/src/step-13-database/test/integration/index.test.js index 7dab6dfa..64c56473 100644 --- a/src/step-13-database/test/integration/index.test.js +++ b/src/step-13-database/test/integration/index.test.js @@ -1,9 +1,8 @@ -import t from 'tap' - import buildServer from '../../index.js' import config from '../../config.js' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' test('server', async t => { let fastify @@ -12,9 +11,9 @@ test('server', async t => { fastify = buildServer(config) }) - t.teardown(() => fastify.close()) + t.afterEach(() => fastify.close()) - t.test('authenticates users and lists users', async t => { + await t.test('authenticates users and lists users', async t => { const loginRes = await fastify.inject({ url: '/login', method: 'POST', @@ -26,8 +25,8 @@ test('server', async t => { const { token } = await loginRes.json() - t.equal(loginRes.statusCode, 200) - t.type(token, 'string') + assert.equal(loginRes.statusCode, 200) + assert.equal(typeof token, 'string') const usersRes = await fastify.inject({ url: '/users', @@ -36,13 +35,13 @@ test('server', async t => { }, }) - t.equal(usersRes.statusCode, 200) + assert.equal(usersRes.statusCode, 200) const users = await usersRes.json() - t.ok(Array.isArray(users)) + assert.ok(Array.isArray(users)) - t.same(users, [ + assert.deepEqual(users, [ { id: 1, username: 'alice' }, { id: 2, username: 'bob' }, ]) diff --git a/src/step-13-database/test/unit/authenticate.test.js b/src/step-13-database/test/unit/authenticate.test.js index 689b1f93..9fa8a9b7 100644 --- a/src/step-13-database/test/unit/authenticate.test.js +++ b/src/step-13-database/test/unit/authenticate.test.js @@ -1,33 +1,36 @@ -import t from 'tap' import sinon from 'sinon' import errors from 'http-errors' import fastify from 'fastify' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer(opts) { return fastify().register( import('../../plugins/authenticate.js'), - opts + opts, ) } test('authenticate', async t => { - t.test('replies with error when authentication fails', async t => { - const fastify = await buildServer({ - JWT_SECRET: 'supersecret', - }) + await t.test( + 'replies with error when authentication fails', + async t => { + const fastify = await buildServer({ + JWT_SECRET: 'supersecret', + }) - const error = errors.Unauthorized() - const req = { jwtVerify: sinon.stub().rejects(error) } - const reply = { send: sinon.stub() } + const error = errors.Unauthorized() + const req = { jwtVerify: sinon.stub().rejects(error) } + const reply = { send: sinon.stub() } - await t.resolves(fastify.authenticate(req, reply)) - sinon.assert.calledWith(reply.send, error) - await fastify.close() - }) + await assert.doesNotReject(fastify.authenticate(req, reply)) + sinon.assert.calledWith(reply.send, error) + await fastify.close() + }, + ) - t.test( + await t.test( 'resolves successfully when authentication succeeds', async t => { const fastify = await buildServer({ @@ -37,9 +40,9 @@ test('authenticate', async t => { const req = { jwtVerify: sinon.stub().resolves() } const reply = { send: sinon.stub() } - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) await fastify.close() - } + }, ) }) diff --git a/src/step-13-database/test/unit/index.test.js b/src/step-13-database/test/unit/index.test.js index 94c515d1..321a6011 100644 --- a/src/step-13-database/test/unit/index.test.js +++ b/src/step-13-database/test/unit/index.test.js @@ -1,15 +1,16 @@ -import { test } from 'tap' +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../../index.js' import config from '../../config.js' test('Startup', async t => { - t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async t => { const fastify = buildServer(config) await fastify.ready() - t.ok(fastify.jwt) + assert.ok(fastify.jwt) await fastify.close() }) }) diff --git a/src/step-13-database/test/unit/login.test.js b/src/step-13-database/test/unit/login.test.js index 69742015..009d25fd 100644 --- a/src/step-13-database/test/unit/login.test.js +++ b/src/step-13-database/test/unit/login.test.js @@ -1,8 +1,8 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -12,7 +12,7 @@ function buildServer() { } test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -20,11 +20,11 @@ test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) await fastify.close() }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -35,11 +35,11 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) await fastify.close() }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const fastify = buildServer() const res = await fastify.inject({ @@ -51,11 +51,11 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) await fastify.close() }) - t.test( + await t.test( 'returns 401 when user is not found in database', async t => { const fastify = buildServer() @@ -71,12 +71,12 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) await fastify.close() - } + }, ) - t.test('returns 500 when database errors', async t => { + await t.test('returns 500 when database errors', async t => { const fastify = buildServer() fastify.pg.query.rejects(new Error('boom')) @@ -90,11 +90,11 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 500) + assert.equal(res.statusCode, 500) await fastify.close() }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const fastify = buildServer() fastify.pg.query.resolves({ @@ -111,12 +111,12 @@ test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') await fastify.close() }) - t.test('stores the signed JWT', async () => { + await t.test('stores the signed JWT', async () => { const fastify = buildServer() fastify.pg.query.resolves({ @@ -135,7 +135,7 @@ test('POST /login', async t => { sinon.assert.called(fastify.jwt.sign) sinon.assert.calledWith(fastify.jwt.sign, { - username: 'alice' + username: 'alice', }) await fastify.close() }) diff --git a/src/step-13-database/test/unit/user.test.js b/src/step-13-database/test/unit/user.test.js index 5dfa3b34..c7fd6297 100644 --- a/src/step-13-database/test/unit/user.test.js +++ b/src/step-13-database/test/unit/user.test.js @@ -1,9 +1,9 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' import errors from 'http-errors' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -12,7 +12,7 @@ function buildServer() { } test('GET /', async t => { - t.test('returns error when authentication fails', async t => { + await t.test('returns error when authentication fails', async t => { const fastify = buildServer() fastify.authenticate.rejects(errors.Unauthorized()) @@ -20,11 +20,11 @@ test('GET /', async t => { const res = await fastify.inject('/') sinon.assert.called(fastify.authenticate) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) await fastify.close() }) - t.test( + await t.test( 'returns current user when authentication succeeds', async t => { const fastify = buildServer() @@ -35,9 +35,9 @@ test('GET /', async t => { const res = await fastify.inject('/') - t.equal(res.statusCode, 200) - t.same(res.json(), { username: 'alice' }) + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), { username: 'alice' }) await fastify.close() - } + }, ) }) diff --git a/src/step-13-database/test/unit/users.test.js b/src/step-13-database/test/unit/users.test.js index 7537b909..28f402aa 100644 --- a/src/step-13-database/test/unit/users.test.js +++ b/src/step-13-database/test/unit/users.test.js @@ -1,9 +1,9 @@ -import t from 'tap' import fastify from 'fastify' import sinon from 'sinon' import errors from 'http-errors' -const { test } = t +import { test } from 'node:test' +import assert from 'node:assert' function buildServer() { return fastify() @@ -13,7 +13,7 @@ function buildServer() { } test('GET /', async t => { - t.test('returns error when authentication fails', async t => { + await t.test('returns error when authentication fails', async t => { const fastify = buildServer() fastify.authenticate.rejects(errors.Unauthorized()) @@ -21,11 +21,11 @@ test('GET /', async t => { const res = await fastify.inject('/') sinon.assert.called(fastify.authenticate) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) await fastify.close() }) - t.test('returns error when database errors', async t => { + await t.test('returns error when database errors', async t => { const fastify = buildServer() fastify.authenticate.resolves() @@ -33,11 +33,11 @@ test('GET /', async t => { const res = await fastify.inject('/') - t.equal(res.statusCode, 500) + assert.equal(res.statusCode, 500) await fastify.close() }) - t.test('returns users loaded from the database', async t => { + await t.test('returns users loaded from the database', async t => { const fastify = buildServer() fastify.authenticate.resolves() @@ -47,8 +47,8 @@ test('GET /', async t => { const res = await fastify.inject('/') - t.equal(res.statusCode, 200) - t.same(res.json(), [{ id: 1, username: 'alice' }]) + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), [{ id: 1, username: 'alice' }]) await fastify.close() }) }) diff --git a/src/step-14-typescript/package.json b/src/step-14-typescript/package.json index 31a58c7a..1cf0cf6a 100644 --- a/src/step-14-typescript/package.json +++ b/src/step-14-typescript/package.json @@ -5,6 +5,6 @@ "version": "1.0.0", "scripts": { "start": "ts-node-dev --project ./tsconfig.json server.ts", - "test": "cross-env TS_NODE_FILES=1 tap --ts" + "test": "c8 --check-coverage --100 node --test -r ts-node/register" } } diff --git a/src/step-14-typescript/test/authenticate.test.ts b/src/step-14-typescript/test/authenticate.test.ts index 10197cee..9dc8cb8a 100644 --- a/src/step-14-typescript/test/authenticate.test.ts +++ b/src/step-14-typescript/test/authenticate.test.ts @@ -1,15 +1,14 @@ -import t from 'tap' - +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../index' import config from '../config' -t.test('Startup', async t => { - t.test('it registers the JWT plugin', async t => { +test('Startup', async t => { + await t.test('it registers the JWT plugin', async t => { const fastify = buildServer(config) await fastify.ready() - t.ok(fastify.jwt) + assert.ok(fastify.jwt) }) }) - diff --git a/src/step-14-typescript/test/index.test.ts b/src/step-14-typescript/test/index.test.ts index e1163b80..aff81151 100644 --- a/src/step-14-typescript/test/index.test.ts +++ b/src/step-14-typescript/test/index.test.ts @@ -1,4 +1,4 @@ -import t from 'tap' + import sinon, { SinonStub } from 'sinon' import errors from 'http-errors' import fastify, { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify' @@ -10,8 +10,8 @@ async function buildServer(opts: { JWT_SECRET: string }): Promise { - t.test('replies with error when authentication fails', async (t) => { +await t.test('authenticate', async (t) => { + await t.test('replies with error when authentication fails', async (t) => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -21,11 +21,11 @@ t.test('authenticate', async (t) => { const reply = {} reply.send = sinon.stub() - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.calledWith(reply.send, error) }) - t.test( + await t.test( 'resolves successfully when authentication succeeds', async t => { const fastify = await buildServer({ @@ -37,7 +37,7 @@ t.test('authenticate', async (t) => { const reply = {} reply.send = sinon.stub() - await t.resolves(fastify.authenticate(req, reply)) + await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) } ) diff --git a/src/step-14-typescript/test/login.test.ts b/src/step-14-typescript/test/login.test.ts index 270a59f2..2d01aced 100644 --- a/src/step-14-typescript/test/login.test.ts +++ b/src/step-14-typescript/test/login.test.ts @@ -1,7 +1,8 @@ -import t from 'tap' import fastify, { FastifyInstance } from 'fastify' import sinon from 'sinon' import loginRoute from '../routes/login' +import assert from 'node:assert' +import { test } from 'node:test' function buildServer(): FastifyInstance { return fastify() @@ -9,8 +10,8 @@ function buildServer(): FastifyInstance { .register(loginRoute) } -t.test('POST /login', async t => { - t.test('returns 400 with missing credentials', async t => { +test('POST /login', async t => { + await t.test('returns 400 with missing credentials', async t => { const app = buildServer() const res = await app.inject({ @@ -18,10 +19,10 @@ t.test('POST /login', async t => { method: 'POST', }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async t => { const app = buildServer() const res = await app.inject({ @@ -32,10 +33,10 @@ t.test('POST /login', async t => { }, }) - t.equal(res.statusCode, 400) + assert.equal(res.statusCode, 400) }) - t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async t => { const app = buildServer() const res = await app.inject({ @@ -47,10 +48,10 @@ t.test('POST /login', async t => { }, }) - t.equal(res.statusCode, 401) + assert.equal(res.statusCode, 401) }) - t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async t => { const app = buildServer() app.jwt.sign = sinon.stub().returns('jwt token') @@ -64,7 +65,7 @@ t.test('POST /login', async t => { }, }) - t.equal(res.statusCode, 200) - t.equal(res.json().token, 'jwt token') + assert.equal(res.statusCode, 200) + assert.equal(res.json().token, 'jwt token') }) }) diff --git a/src/step-14-typescript/test/users.test.ts b/src/step-14-typescript/test/users.test.ts index a16fa130..5397b74b 100644 --- a/src/step-14-typescript/test/users.test.ts +++ b/src/step-14-typescript/test/users.test.ts @@ -1,16 +1,16 @@ -import t from 'tap' +import { test } from 'node:test' +import assert from 'node:assert' import buildServer from '../index' import config from '../config' -t.test('GET /users', async t => { - t.test('returns users', async t => { +test('GET /users', async t => { + await t.test('returns users', async t => { const fastify = buildServer(config) const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) - - t.same(res.json(), [ + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) From 7e7a947fcef03357d85da4ed4e983ecf7ef52f2e Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 10:39:16 +0530 Subject: [PATCH 02/12] refactor(deck): update the testing example --- slides.md | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/slides.md b/slides.md index 492682ff..4612aa77 100644 --- a/slides.md +++ b/slides.md @@ -653,7 +653,7 @@ https://www.fastify.io/docs/latest/Guides/Testing/
- Write a unit test for the `index.js` module -- Use `node-tap` +- Use `node --test` - Use `fastify.inject` - Check that GETting the `/users` route: - Responds with status code 200 @@ -669,21 +669,20 @@ https://www.fastify.io/docs/latest/Guides/Testing/ ```js // test/index.test.js -import t from 'tap' - import buildServer from '../index.js' -const { test } = t +import {test} from "node:test" +import assert from "node:assert" test('GET /users', async t => { - t.test('returns users', async t => { + await t.test('returns users', async t => { const fastify = buildServer() const res = await fastify.inject('/users') - t.equal(res.statusCode, 200) + assert.equal(res.statusCode, 200) - t.same(res.json(), [ + assert.deepEqual(res.json(), [ { username: 'alice' }, { username: 'bob' }, ]) @@ -699,22 +698,21 @@ test('GET /users', async t => { ```bash ❯ npm run test -$ tap -test/index.test.js 1> [1612531547285] INFO (63699 on Softwares-MBP): Fastify is starting up! -test/index.test.js 1> [1612531547371] INFO (63699 on Softwares-MBP): incoming request -test/index.test.js 1> ... - PASS test/index.test.js 2 OK 123.827ms - -🌈 SUMMARY RESULTS 🌈 - -Suites: 1 passed, 1 of 1 completed -Asserts: 2 passed, of 2 -Time: 770.511ms -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 0 | 0 | 0 | 0 | | -----------|----------|----------|----------|----------|-------------------| +$ node --test +[10:30:06.058] INFO (1601): Fastify is starting up! +[10:30:06.098] INFO (1601): incoming request + ... + ✔ test/index.test.js (123.827ms) + +ℹ tests 3 +ℹ suites 0 +ℹ pass 3 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 346.373708 + ✨ Done in 2.70s. ``` From c0169c289ff75dfa1290a28e6d1b8f289ce6d070 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 10:49:44 +0530 Subject: [PATCH 03/12] ci: add a test node 21 runner --- .github/workflows/ci-n21.yml | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/ci-n21.yml diff --git a/.github/workflows/ci-n21.yml b/.github/workflows/ci-n21.yml new file mode 100644 index 00000000..a69d9226 --- /dev/null +++ b/.github/workflows/ci-n21.yml @@ -0,0 +1,39 @@ +name: ci +on: + push: + branches: + - master + pull_request: + branches: + - master +jobs: + build: + runs-on: ubuntu-latest + services: + postgres: + image: postgres:alpine + env: + POSTGRES_PASSWORD: postgres + ports: + - 5433:5432 + options: + --health-cmd pg_isready --health-interval 10s --health-timeout 5s + --health-retries 5 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 21 + - run: | + npm ci + npm run db:migrate + npm run lint + npm test + automerge: + needs: build + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write + steps: + - uses: fastify/github-action-merge-dependabot@v3 From 484ba3e7763712aadd908fb2afc27faca879514b Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 10:52:31 +0530 Subject: [PATCH 04/12] ci: do not automerge on node version test --- .github/workflows/ci-n21.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/ci-n21.yml b/.github/workflows/ci-n21.yml index a69d9226..a97059d3 100644 --- a/.github/workflows/ci-n21.yml +++ b/.github/workflows/ci-n21.yml @@ -29,11 +29,3 @@ jobs: npm run db:migrate npm run lint npm test - automerge: - needs: build - runs-on: ubuntu-latest - permissions: - pull-requests: write - contents: write - steps: - - uses: fastify/github-action-merge-dependabot@v3 From db4431fd306b172f9a9ed5f13cb187e190bd42c3 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 14:22:05 +0530 Subject: [PATCH 05/12] style(code): autofix and import order --- src/step-03-logging/routes/users.js | 2 +- src/step-04-validation/routes/login.js | 2 +- src/step-04-validation/routes/users.js | 2 +- src/step-05-constraints/routes/login.js | 2 +- src/step-05-constraints/routes/users.js | 2 +- src/step-05-constraints/routes/version.js | 2 +- src/step-06-testing/routes/login.js | 2 +- src/step-06-testing/routes/users.js | 2 +- src/step-06-testing/test/login.test.js | 60 ++++++++++--------- src/step-06-testing/test/users.test.js | 6 +- src/step-07-serialization/routes/login.js | 7 ++- src/step-07-serialization/routes/users.js | 4 +- src/step-07-serialization/test/login.test.js | 4 +- src/step-07-serialization/test/users.test.js | 6 +- src/step-08-authentication/routes/users.js | 4 +- src/step-08-authentication/test/login.test.js | 15 ++--- src/step-08-authentication/test/users.test.js | 8 +-- src/step-09-config/routes/users.js | 4 +- src/step-09-config/test/login.test.js | 14 ++--- src/step-09-config/test/users.test.js | 10 ++-- .../plugins/authenticate.js | 1 - src/step-10-decorators/routes/users.js | 4 +- .../test/authenticate.test.js | 14 +++-- src/step-10-decorators/test/index.test.js | 6 +- src/step-10-decorators/test/login.test.js | 14 ++--- src/step-10-decorators/test/users.test.js | 10 ++-- src/step-11-hooks/routes/user/index.js | 2 +- src/step-11-hooks/routes/users.js | 4 +- .../test/unit/authenticate.test.js | 40 +++++++------ src/step-11-hooks/test/unit/index.test.js | 6 +- src/step-11-hooks/test/unit/login.test.js | 14 ++--- src/step-11-hooks/test/unit/user.test.js | 27 +++++---- src/step-11-hooks/test/unit/users.test.js | 10 ++-- src/step-12-autoload/routes/user/index.js | 2 +- src/step-12-autoload/routes/users.js | 4 +- .../test/integration/index.test.js | 10 ++-- .../test/unit/authenticate.test.js | 14 ++--- src/step-12-autoload/test/unit/index.test.js | 7 +-- src/step-12-autoload/test/unit/login.test.js | 14 ++--- src/step-12-autoload/test/unit/user.test.js | 27 +++++---- src/step-12-autoload/test/unit/users.test.js | 10 ++-- src/step-13-database/routes/login.js | 2 +- src/step-13-database/routes/user/index.js | 2 +- src/step-13-database/routes/users/index.js | 8 +-- .../test/integration/index.test.js | 10 ++-- .../test/unit/authenticate.test.js | 14 ++--- src/step-13-database/test/unit/index.test.js | 3 +- src/step-13-database/test/unit/login.test.js | 18 +++--- src/step-13-database/test/unit/user.test.js | 29 +++++---- src/step-13-database/test/unit/users.test.js | 31 +++++----- src/step-14-typescript/@types/index.d.ts | 5 +- .../plugins/authenticate.ts | 4 +- src/step-14-typescript/routes/login.ts | 8 +-- src/step-14-typescript/routes/users.ts | 6 +- .../test/authenticate.test.ts | 7 ++- src/step-14-typescript/test/index.test.ts | 53 +++++++++------- src/step-14-typescript/test/login.test.ts | 13 ++-- src/step-14-typescript/test/users.test.ts | 7 ++- src/step-14-typescript/tsconfig.json | 2 +- 59 files changed, 330 insertions(+), 290 deletions(-) diff --git a/src/step-03-logging/routes/users.js b/src/step-03-logging/routes/users.js index 7f16c4b1..245e32e3 100644 --- a/src/step-03-logging/routes/users.js +++ b/src/step-03-logging/routes/users.js @@ -2,7 +2,7 @@ * @type {import('fastify').FastifyPluginAsync} * */ export default async function users(fastify) { - fastify.get('/users', async (req) => { + fastify.get('/users', async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] diff --git a/src/step-04-validation/routes/login.js b/src/step-04-validation/routes/login.js index db34cc91..c8dc2897 100644 --- a/src/step-04-validation/routes/login.js +++ b/src/step-04-validation/routes/login.js @@ -19,6 +19,6 @@ export default async function login(fastify) { async req => { const { username, password } = req.body return { username, password } - } + }, ) } diff --git a/src/step-04-validation/routes/users.js b/src/step-04-validation/routes/users.js index 7f16c4b1..245e32e3 100644 --- a/src/step-04-validation/routes/users.js +++ b/src/step-04-validation/routes/users.js @@ -2,7 +2,7 @@ * @type {import('fastify').FastifyPluginAsync} * */ export default async function users(fastify) { - fastify.get('/users', async (req) => { + fastify.get('/users', async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] diff --git a/src/step-05-constraints/routes/login.js b/src/step-05-constraints/routes/login.js index db34cc91..c8dc2897 100644 --- a/src/step-05-constraints/routes/login.js +++ b/src/step-05-constraints/routes/login.js @@ -19,6 +19,6 @@ export default async function login(fastify) { async req => { const { username, password } = req.body return { username, password } - } + }, ) } diff --git a/src/step-05-constraints/routes/users.js b/src/step-05-constraints/routes/users.js index 7f16c4b1..245e32e3 100644 --- a/src/step-05-constraints/routes/users.js +++ b/src/step-05-constraints/routes/users.js @@ -2,7 +2,7 @@ * @type {import('fastify').FastifyPluginAsync} * */ export default async function users(fastify) { - fastify.get('/users', async (req) => { + fastify.get('/users', async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] diff --git a/src/step-05-constraints/routes/version.js b/src/step-05-constraints/routes/version.js index 381042f1..264d063f 100644 --- a/src/step-05-constraints/routes/version.js +++ b/src/step-05-constraints/routes/version.js @@ -2,7 +2,7 @@ * @type {import('fastify').FastifyPluginAsync} * */ export default async function version(fastify) { - fastify.route({ + fastify.route({ method: 'GET', url: '/version', constraints: { version: '1.0.0' }, diff --git a/src/step-06-testing/routes/login.js b/src/step-06-testing/routes/login.js index db34cc91..c8dc2897 100644 --- a/src/step-06-testing/routes/login.js +++ b/src/step-06-testing/routes/login.js @@ -19,6 +19,6 @@ export default async function login(fastify) { async req => { const { username, password } = req.body return { username, password } - } + }, ) } diff --git a/src/step-06-testing/routes/users.js b/src/step-06-testing/routes/users.js index 4c38bf59..8b4ba67d 100644 --- a/src/step-06-testing/routes/users.js +++ b/src/step-06-testing/routes/users.js @@ -2,7 +2,7 @@ * @type {import('fastify').FastifyPluginAsync} * */ export default async function users(fastify) { - fastify.get('/users', async (req) => { + fastify.get('/users', async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] }) diff --git a/src/step-06-testing/test/login.test.js b/src/step-06-testing/test/login.test.js index 021eee31..90e9ac7c 100644 --- a/src/step-06-testing/test/login.test.js +++ b/src/step-06-testing/test/login.test.js @@ -4,37 +4,43 @@ import assert from 'node:assert' import buildServer from '../index.js' test('POST /login', async t => { - await t.test('returns 400 with an invalid post payload', async t => { - const fastify = buildServer() + await t.test( + 'returns 400 with an invalid post payload', + async () => { + const fastify = buildServer() - const res = await fastify.inject({ - url: '/login', - method: 'POST', - body: { - name: 'alice', - passcode: 'alice', - }, - }) + const res = await fastify.inject({ + url: '/login', + method: 'POST', + body: { + name: 'alice', + passcode: 'alice', + }, + }) - assert.equal(res.statusCode, 400) - }) + assert.equal(res.statusCode, 400) + }, + ) - await t.test('returns the data with valid post payload', async t => { - const fastify = buildServer() + await t.test( + 'returns the data with valid post payload', + async () => { + const fastify = buildServer() - const res = await fastify.inject({ - url: '/login', - method: 'POST', - body: { + const res = await fastify.inject({ + url: '/login', + method: 'POST', + body: { + username: 'alice', + password: 'alice', + }, + }) + + assert.equal(res.statusCode, 200) + assert.deepEqual(res.json(), { username: 'alice', password: 'alice', - }, - }) - - assert.equal(res.statusCode, 200) - assert.deepEqual(res.json(), { - username: 'alice', - password: 'alice', - }) - }) + }) + }, + ) }) diff --git a/src/step-06-testing/test/users.test.js b/src/step-06-testing/test/users.test.js index 6438fa95..60675b80 100644 --- a/src/step-06-testing/test/users.test.js +++ b/src/step-06-testing/test/users.test.js @@ -1,10 +1,10 @@ -import buildServer from '../index.js' - import { test } from 'node:test' import assert from 'node:assert' +import buildServer from '../index.js' + test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer() const res = await fastify.inject('/users') diff --git a/src/step-07-serialization/routes/login.js b/src/step-07-serialization/routes/login.js index ec53231d..a909673d 100644 --- a/src/step-07-serialization/routes/login.js +++ b/src/step-07-serialization/routes/login.js @@ -22,7 +22,8 @@ export default async function login(fastify) { * @type {import('fastify').RouteHandler<{ Body: { username: string; password: string } }>} * */ async req => { - const { username, password } = req.body - return { username, password } - }) + const { username, password } = req.body + return { username, password } + }, + ) } diff --git a/src/step-07-serialization/routes/users.js b/src/step-07-serialization/routes/users.js index af915531..5b7a4a0d 100644 --- a/src/step-07-serialization/routes/users.js +++ b/src/step-07-serialization/routes/users.js @@ -3,7 +3,7 @@ import S from 'fluent-json-schema' const schema = { response: { 200: S.array().items( - S.object().prop('username', S.string().required()) + S.object().prop('username', S.string().required()), ), }, } @@ -12,7 +12,7 @@ const schema = { * @type {import('fastify').FastifyPluginAsync} * */ export default async function users(fastify) { - fastify.get('/users', { schema }, async (req) => { + fastify.get('/users', { schema }, async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] diff --git a/src/step-07-serialization/test/login.test.js b/src/step-07-serialization/test/login.test.js index ed255744..90e9ac7c 100644 --- a/src/step-07-serialization/test/login.test.js +++ b/src/step-07-serialization/test/login.test.js @@ -6,7 +6,7 @@ import buildServer from '../index.js' test('POST /login', async t => { await t.test( 'returns 400 with an invalid post payload', - async t => { + async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -24,7 +24,7 @@ test('POST /login', async t => { await t.test( 'returns the data with valid post payload', - async t => { + async () => { const fastify = buildServer() const res = await fastify.inject({ diff --git a/src/step-07-serialization/test/users.test.js b/src/step-07-serialization/test/users.test.js index 6438fa95..60675b80 100644 --- a/src/step-07-serialization/test/users.test.js +++ b/src/step-07-serialization/test/users.test.js @@ -1,10 +1,10 @@ -import buildServer from '../index.js' - import { test } from 'node:test' import assert from 'node:assert' +import buildServer from '../index.js' + test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer() const res = await fastify.inject('/users') diff --git a/src/step-08-authentication/routes/users.js b/src/step-08-authentication/routes/users.js index b9b42ac4..1f3b884c 100644 --- a/src/step-08-authentication/routes/users.js +++ b/src/step-08-authentication/routes/users.js @@ -3,13 +3,13 @@ import S from 'fluent-json-schema' const schema = { response: { 200: S.array().items( - S.object().prop('username', S.string().required()) + S.object().prop('username', S.string().required()), ), }, } export default async function users(fastify) { - fastify.get('/users', { schema }, async (req) => { + fastify.get('/users', { schema }, async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] diff --git a/src/step-08-authentication/test/login.test.js b/src/step-08-authentication/test/login.test.js index f6248e52..03e128b9 100644 --- a/src/step-08-authentication/test/login.test.js +++ b/src/step-08-authentication/test/login.test.js @@ -1,9 +1,10 @@ - +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' import sinon from 'sinon' -import {test} from "node:test" -import assert from "node:assert" + function buildServer() { return fastify() @@ -12,7 +13,7 @@ function buildServer() { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -23,7 +24,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -37,7 +38,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -52,7 +53,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 401) }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') diff --git a/src/step-08-authentication/test/users.test.js b/src/step-08-authentication/test/users.test.js index 6438fa95..861a49a7 100644 --- a/src/step-08-authentication/test/users.test.js +++ b/src/step-08-authentication/test/users.test.js @@ -1,10 +1,10 @@ -import buildServer from '../index.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import buildServer from '../index.js' test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer() const res = await fastify.inject('/users') diff --git a/src/step-09-config/routes/users.js b/src/step-09-config/routes/users.js index 1ce0906b..160e189f 100644 --- a/src/step-09-config/routes/users.js +++ b/src/step-09-config/routes/users.js @@ -3,13 +3,13 @@ import S from 'fluent-json-schema' const schema = { response: { 200: S.array().items( - S.object().prop('username', S.string().required()) + S.object().prop('username', S.string().required()), ), }, } export default async function users(fastify) { - fastify.get('/users', { schema }, async (req) => { + fastify.get('/users', { schema }, async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] }) diff --git a/src/step-09-config/test/login.test.js b/src/step-09-config/test/login.test.js index 7a545cb1..97c02e2d 100644 --- a/src/step-09-config/test/login.test.js +++ b/src/step-09-config/test/login.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' import sinon from 'sinon' -import { test } from 'node:test' -import assert from 'node:assert' - function buildServer() { return fastify() .decorate('jwt', { sign: sinon.stub() }) @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -22,7 +22,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -36,7 +36,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -51,7 +51,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 401) }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') diff --git a/src/step-09-config/test/users.test.js b/src/step-09-config/test/users.test.js index f1d94e95..d1fdd229 100644 --- a/src/step-09-config/test/users.test.js +++ b/src/step-09-config/test/users.test.js @@ -1,11 +1,11 @@ -import buildServer from '../index.js' -import config from '../config.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import config from '../config.js' +import buildServer from '../index.js' test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer(config) const res = await fastify.inject('/users') diff --git a/src/step-10-decorators/plugins/authenticate.js b/src/step-10-decorators/plugins/authenticate.js index a8b429e5..d8548017 100644 --- a/src/step-10-decorators/plugins/authenticate.js +++ b/src/step-10-decorators/plugins/authenticate.js @@ -3,7 +3,6 @@ async function authenticate(fastify, opts) { secret: opts.JWT_SECRET, }) - fastify.decorate('authenticate', async (req, reply) => { try { await req.jwtVerify() diff --git a/src/step-10-decorators/routes/users.js b/src/step-10-decorators/routes/users.js index 1ce0906b..160e189f 100644 --- a/src/step-10-decorators/routes/users.js +++ b/src/step-10-decorators/routes/users.js @@ -3,13 +3,13 @@ import S from 'fluent-json-schema' const schema = { response: { 200: S.array().items( - S.object().prop('username', S.string().required()) + S.object().prop('username', S.string().required()), ), }, } export default async function users(fastify) { - fastify.get('/users', { schema }, async (req) => { + fastify.get('/users', { schema }, async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] }) diff --git a/src/step-10-decorators/test/authenticate.test.js b/src/step-10-decorators/test/authenticate.test.js index b5af97c1..5a96e47c 100644 --- a/src/step-10-decorators/test/authenticate.test.js +++ b/src/step-10-decorators/test/authenticate.test.js @@ -1,9 +1,11 @@ -import sinon from 'sinon' -import errors from 'http-errors' +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' +import errors from 'http-errors' +import sinon from 'sinon' + -import { test } from 'node:test' -import assert from 'node:assert' function buildServer(opts) { return fastify().register( @@ -15,7 +17,7 @@ function buildServer(opts) { await test('authenticate', async t => { await t.test( 'replies with error when authentication fails', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -33,7 +35,7 @@ await test('authenticate', async t => { await t.test( 'resolves successfully when authentication succeeds', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) diff --git a/src/step-10-decorators/test/index.test.js b/src/step-10-decorators/test/index.test.js index 16eea78f..646975eb 100644 --- a/src/step-10-decorators/test/index.test.js +++ b/src/step-10-decorators/test/index.test.js @@ -1,11 +1,11 @@ -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' -import buildServer from '../index.js' import config from '../config.js' +import buildServer from '../index.js' test('Startup', async t => { - await t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async () => { const fastify = buildServer(config) await fastify.ready() assert.ok(fastify.jwt) diff --git a/src/step-10-decorators/test/login.test.js b/src/step-10-decorators/test/login.test.js index 7a545cb1..97c02e2d 100644 --- a/src/step-10-decorators/test/login.test.js +++ b/src/step-10-decorators/test/login.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' import sinon from 'sinon' -import { test } from 'node:test' -import assert from 'node:assert' - function buildServer() { return fastify() .decorate('jwt', { sign: sinon.stub() }) @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -22,7 +22,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -36,7 +36,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -51,7 +51,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 401) }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') diff --git a/src/step-10-decorators/test/users.test.js b/src/step-10-decorators/test/users.test.js index f1d94e95..d1fdd229 100644 --- a/src/step-10-decorators/test/users.test.js +++ b/src/step-10-decorators/test/users.test.js @@ -1,11 +1,11 @@ -import buildServer from '../index.js' -import config from '../config.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import config from '../config.js' +import buildServer from '../index.js' test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer(config) const res = await fastify.inject('/users') diff --git a/src/step-11-hooks/routes/user/index.js b/src/step-11-hooks/routes/user/index.js index 8779ba9c..55a2e88d 100644 --- a/src/step-11-hooks/routes/user/index.js +++ b/src/step-11-hooks/routes/user/index.js @@ -13,6 +13,6 @@ export default async function user(fastify) { onRequest: [fastify.authenticate], schema, }, - async req => req.user + async req => req.user, ) } diff --git a/src/step-11-hooks/routes/users.js b/src/step-11-hooks/routes/users.js index b9b42ac4..1f3b884c 100644 --- a/src/step-11-hooks/routes/users.js +++ b/src/step-11-hooks/routes/users.js @@ -3,13 +3,13 @@ import S from 'fluent-json-schema' const schema = { response: { 200: S.array().items( - S.object().prop('username', S.string().required()) + S.object().prop('username', S.string().required()), ), }, } export default async function users(fastify) { - fastify.get('/users', { schema }, async (req) => { + fastify.get('/users', { schema }, async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] diff --git a/src/step-11-hooks/test/unit/authenticate.test.js b/src/step-11-hooks/test/unit/authenticate.test.js index abd69b7d..5dd7738b 100644 --- a/src/step-11-hooks/test/unit/authenticate.test.js +++ b/src/step-11-hooks/test/unit/authenticate.test.js @@ -1,35 +1,37 @@ - -import sinon from 'sinon' -import errors from 'http-errors' -import fastify from 'fastify' +import assert from 'node:assert' +import { test } from 'node:test' -import {test} from "node:test" -import assert from "node:assert" +import fastify from 'fastify' +import errors from 'http-errors' +import sinon from 'sinon' function buildServer(opts) { return fastify().register( import('../../plugins/authenticate.js'), - opts + opts, ) } test('authenticate', async t => { - await t.test('replies with error when authentication fails', async t => { - const fastify = await buildServer({ - JWT_SECRET: 'supersecret', - }) + await t.test( + 'replies with error when authentication fails', + async () => { + const fastify = await buildServer({ + JWT_SECRET: 'supersecret', + }) - const error = errors.Unauthorized() - const req = { jwtVerify: sinon.stub().rejects(error) } - const reply = { send: sinon.stub() } + const error = errors.Unauthorized() + const req = { jwtVerify: sinon.stub().rejects(error) } + const reply = { send: sinon.stub() } - await assert.doesNotReject(fastify.authenticate(req, reply)) - sinon.assert.calledWith(reply.send, error) - }) + await assert.doesNotReject(fastify.authenticate(req, reply)) + sinon.assert.calledWith(reply.send, error) + }, + ) await t.test( 'resolves successfully when authentication succeeds', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -39,6 +41,6 @@ test('authenticate', async t => { await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) - } + }, ) }) diff --git a/src/step-11-hooks/test/unit/index.test.js b/src/step-11-hooks/test/unit/index.test.js index 8bc4f254..fca371bf 100644 --- a/src/step-11-hooks/test/unit/index.test.js +++ b/src/step-11-hooks/test/unit/index.test.js @@ -1,11 +1,11 @@ -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' -import buildServer from '../../index.js' import config from '../../config.js' +import buildServer from '../../index.js' test('Startup', async t => { - await t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async () => { const fastify = buildServer(config) await fastify.ready() diff --git a/src/step-11-hooks/test/unit/login.test.js b/src/step-11-hooks/test/unit/login.test.js index 2b22eecd..e9b06222 100644 --- a/src/step-11-hooks/test/unit/login.test.js +++ b/src/step-11-hooks/test/unit/login.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' import sinon from 'sinon' -import { test } from 'node:test' -import assert from 'node:assert' - function buildServer() { return fastify() .decorate('jwt', { sign: sinon.stub() }) @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -22,7 +22,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -36,7 +36,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -51,7 +51,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 401) }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') diff --git a/src/step-11-hooks/test/unit/user.test.js b/src/step-11-hooks/test/unit/user.test.js index 21403365..179002a5 100644 --- a/src/step-11-hooks/test/unit/user.test.js +++ b/src/step-11-hooks/test/unit/user.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' -import sinon from 'sinon' import errors from 'http-errors' - -import { test } from 'node:test' -import assert from 'node:assert' +import sinon from 'sinon' function buildServer() { return fastify() @@ -12,20 +12,23 @@ function buildServer() { } test('GET /user', async t => { - await t.test('returns error when authentication fails', async t => { - const fastify = buildServer() + await t.test( + 'returns error when authentication fails', + async () => { + const fastify = buildServer() - fastify.authenticate.rejects(errors.Unauthorized()) + fastify.authenticate.rejects(errors.Unauthorized()) - const res = await fastify.inject('/user') + const res = await fastify.inject('/user') - sinon.assert.called(fastify.authenticate) - assert.equal(res.statusCode, 401) - }) + sinon.assert.called(fastify.authenticate) + assert.equal(res.statusCode, 401) + }, + ) await t.test( 'returns current user when authentication succeeds', - async t => { + async () => { const fastify = buildServer() fastify.authenticate.callsFake(async request => { diff --git a/src/step-11-hooks/test/unit/users.test.js b/src/step-11-hooks/test/unit/users.test.js index bb6b7f44..1b352c3f 100644 --- a/src/step-11-hooks/test/unit/users.test.js +++ b/src/step-11-hooks/test/unit/users.test.js @@ -1,11 +1,11 @@ -import buildServer from '../../index.js' -import config from '../../config.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import config from '../../config.js' +import buildServer from '../../index.js' test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer(config) const res = await fastify.inject('/users') diff --git a/src/step-12-autoload/routes/user/index.js b/src/step-12-autoload/routes/user/index.js index 9ba41ce9..dae7f454 100644 --- a/src/step-12-autoload/routes/user/index.js +++ b/src/step-12-autoload/routes/user/index.js @@ -13,6 +13,6 @@ export default async function user(fastify) { onRequest: [fastify.authenticate], schema, }, - async req => req.user + async req => req.user, ) } diff --git a/src/step-12-autoload/routes/users.js b/src/step-12-autoload/routes/users.js index 1ce0906b..160e189f 100644 --- a/src/step-12-autoload/routes/users.js +++ b/src/step-12-autoload/routes/users.js @@ -3,13 +3,13 @@ import S from 'fluent-json-schema' const schema = { response: { 200: S.array().items( - S.object().prop('username', S.string().required()) + S.object().prop('username', S.string().required()), ), }, } export default async function users(fastify) { - fastify.get('/users', { schema }, async (req) => { + fastify.get('/users', { schema }, async req => { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] }) diff --git a/src/step-12-autoload/test/integration/index.test.js b/src/step-12-autoload/test/integration/index.test.js index c228e61b..3ff845e1 100644 --- a/src/step-12-autoload/test/integration/index.test.js +++ b/src/step-12-autoload/test/integration/index.test.js @@ -1,8 +1,8 @@ -import buildServer from '../../index.js' -import config from '../../config.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import config from '../../config.js' +import buildServer from '../../index.js' test('server', async t => { let fastify @@ -15,7 +15,7 @@ test('server', async t => { await t.test( 'authenticates user and returns current user', - async t => { + async () => { const loginRes = await fastify.inject({ url: '/login', method: 'POST', diff --git a/src/step-12-autoload/test/unit/authenticate.test.js b/src/step-12-autoload/test/unit/authenticate.test.js index 9f538098..5dd7738b 100644 --- a/src/step-12-autoload/test/unit/authenticate.test.js +++ b/src/step-12-autoload/test/unit/authenticate.test.js @@ -1,9 +1,9 @@ -import sinon from 'sinon' -import errors from 'http-errors' -import fastify from 'fastify' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import fastify from 'fastify' +import errors from 'http-errors' +import sinon from 'sinon' function buildServer(opts) { return fastify().register( @@ -15,7 +15,7 @@ function buildServer(opts) { test('authenticate', async t => { await t.test( 'replies with error when authentication fails', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -31,7 +31,7 @@ test('authenticate', async t => { await t.test( 'resolves successfully when authentication succeeds', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) diff --git a/src/step-12-autoload/test/unit/index.test.js b/src/step-12-autoload/test/unit/index.test.js index d7aff90b..fca371bf 100644 --- a/src/step-12-autoload/test/unit/index.test.js +++ b/src/step-12-autoload/test/unit/index.test.js @@ -1,11 +1,11 @@ -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' -import buildServer from '../../index.js' import config from '../../config.js' +import buildServer from '../../index.js' test('Startup', async t => { - await t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async () => { const fastify = buildServer(config) await fastify.ready() @@ -13,4 +13,3 @@ test('Startup', async t => { assert.ok(fastify.jwt) }) }) - diff --git a/src/step-12-autoload/test/unit/login.test.js b/src/step-12-autoload/test/unit/login.test.js index 2b22eecd..e9b06222 100644 --- a/src/step-12-autoload/test/unit/login.test.js +++ b/src/step-12-autoload/test/unit/login.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' import sinon from 'sinon' -import { test } from 'node:test' -import assert from 'node:assert' - function buildServer() { return fastify() .decorate('jwt', { sign: sinon.stub() }) @@ -11,7 +11,7 @@ function buildServer() { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -22,7 +22,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -36,7 +36,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -51,7 +51,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 401) }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const fastify = buildServer() fastify.jwt.sign.returns('jwt token') diff --git a/src/step-12-autoload/test/unit/user.test.js b/src/step-12-autoload/test/unit/user.test.js index 73d252d5..6de6faab 100644 --- a/src/step-12-autoload/test/unit/user.test.js +++ b/src/step-12-autoload/test/unit/user.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' -import sinon from 'sinon' import errors from 'http-errors' - -import { test } from 'node:test' -import assert from 'node:assert' +import sinon from 'sinon' function buildServer() { return fastify() @@ -12,20 +12,23 @@ function buildServer() { } test('GET /', async t => { - await t.test('returns error when authentication fails', async t => { - const fastify = buildServer() + await t.test( + 'returns error when authentication fails', + async () => { + const fastify = buildServer() - fastify.authenticate.rejects(errors.Unauthorized()) + fastify.authenticate.rejects(errors.Unauthorized()) - const res = await fastify.inject('/') + const res = await fastify.inject('/') - sinon.assert.called(fastify.authenticate) - assert.equal(res.statusCode, 401) - }) + sinon.assert.called(fastify.authenticate) + assert.equal(res.statusCode, 401) + }, + ) await t.test( 'returns current user when authentication succeeds', - async t => { + async () => { const fastify = buildServer() fastify.authenticate.callsFake(async request => { diff --git a/src/step-12-autoload/test/unit/users.test.js b/src/step-12-autoload/test/unit/users.test.js index bb6b7f44..1b352c3f 100644 --- a/src/step-12-autoload/test/unit/users.test.js +++ b/src/step-12-autoload/test/unit/users.test.js @@ -1,11 +1,11 @@ -import buildServer from '../../index.js' -import config from '../../config.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import config from '../../config.js' +import buildServer from '../../index.js' test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer(config) const res = await fastify.inject('/users') diff --git a/src/step-13-database/routes/login.js b/src/step-13-database/routes/login.js index 5c2086c5..70e5192f 100644 --- a/src/step-13-database/routes/login.js +++ b/src/step-13-database/routes/login.js @@ -23,7 +23,7 @@ export default async function login(fastify) { const { rows: [user], } = await fastify.pg.query( - SQL`SELECT id, username FROM users WHERE username = ${username}` + SQL`SELECT id, username FROM users WHERE username = ${username}`, ) if (!user) { diff --git a/src/step-13-database/routes/user/index.js b/src/step-13-database/routes/user/index.js index 9ba41ce9..dae7f454 100644 --- a/src/step-13-database/routes/user/index.js +++ b/src/step-13-database/routes/user/index.js @@ -13,6 +13,6 @@ export default async function user(fastify) { onRequest: [fastify.authenticate], schema, }, - async req => req.user + async req => req.user, ) } diff --git a/src/step-13-database/routes/users/index.js b/src/step-13-database/routes/users/index.js index 36164abf..a14aa204 100644 --- a/src/step-13-database/routes/users/index.js +++ b/src/step-13-database/routes/users/index.js @@ -5,7 +5,7 @@ const schema = { 200: S.array().items( S.object() .prop('id', S.integer().required()) - .prop('username', S.string().required()) + .prop('username', S.string().required()), ), }, } @@ -14,14 +14,14 @@ export default async function users(fastify) { fastify.get( '/', { onRequest: [fastify.authenticate], schema }, - async (req) => { + async req => { req.log.info('Users route called') const { rows: users } = await fastify.pg.query( - 'SELECT id, username FROM users' + 'SELECT id, username FROM users', ) return users - } + }, ) } diff --git a/src/step-13-database/test/integration/index.test.js b/src/step-13-database/test/integration/index.test.js index 64c56473..2a5c9b25 100644 --- a/src/step-13-database/test/integration/index.test.js +++ b/src/step-13-database/test/integration/index.test.js @@ -1,8 +1,8 @@ -import buildServer from '../../index.js' -import config from '../../config.js' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import config from '../../config.js' +import buildServer from '../../index.js' test('server', async t => { let fastify @@ -13,7 +13,7 @@ test('server', async t => { t.afterEach(() => fastify.close()) - await t.test('authenticates users and lists users', async t => { + await t.test('authenticates users and lists users', async () => { const loginRes = await fastify.inject({ url: '/login', method: 'POST', diff --git a/src/step-13-database/test/unit/authenticate.test.js b/src/step-13-database/test/unit/authenticate.test.js index 9fa8a9b7..2335fb65 100644 --- a/src/step-13-database/test/unit/authenticate.test.js +++ b/src/step-13-database/test/unit/authenticate.test.js @@ -1,9 +1,9 @@ -import sinon from 'sinon' -import errors from 'http-errors' -import fastify from 'fastify' - -import { test } from 'node:test' import assert from 'node:assert' +import { test } from 'node:test' + +import fastify from 'fastify' +import errors from 'http-errors' +import sinon from 'sinon' function buildServer(opts) { return fastify().register( @@ -15,7 +15,7 @@ function buildServer(opts) { test('authenticate', async t => { await t.test( 'replies with error when authentication fails', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -32,7 +32,7 @@ test('authenticate', async t => { await t.test( 'resolves successfully when authentication succeeds', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) diff --git a/src/step-13-database/test/unit/index.test.js b/src/step-13-database/test/unit/index.test.js index 321a6011..63f92066 100644 --- a/src/step-13-database/test/unit/index.test.js +++ b/src/step-13-database/test/unit/index.test.js @@ -5,7 +5,7 @@ import buildServer from '../../index.js' import config from '../../config.js' test('Startup', async t => { - await t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async () => { const fastify = buildServer(config) await fastify.ready() @@ -14,4 +14,3 @@ test('Startup', async t => { await fastify.close() }) }) - diff --git a/src/step-13-database/test/unit/login.test.js b/src/step-13-database/test/unit/login.test.js index 009d25fd..c5b5094e 100644 --- a/src/step-13-database/test/unit/login.test.js +++ b/src/step-13-database/test/unit/login.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' import sinon from 'sinon' -import { test } from 'node:test' -import assert from 'node:assert' - function buildServer() { return fastify() .decorate('pg', { query: sinon.stub() }) @@ -12,7 +12,7 @@ function buildServer() { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -24,7 +24,7 @@ test('POST /login', async t => { await fastify.close() }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -39,7 +39,7 @@ test('POST /login', async t => { await fastify.close() }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const fastify = buildServer() const res = await fastify.inject({ @@ -57,7 +57,7 @@ test('POST /login', async t => { await t.test( 'returns 401 when user is not found in database', - async t => { + async () => { const fastify = buildServer() fastify.pg.query.resolves({ rows: [] }) @@ -76,7 +76,7 @@ test('POST /login', async t => { }, ) - await t.test('returns 500 when database errors', async t => { + await t.test('returns 500 when database errors', async () => { const fastify = buildServer() fastify.pg.query.rejects(new Error('boom')) @@ -94,7 +94,7 @@ test('POST /login', async t => { await fastify.close() }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const fastify = buildServer() fastify.pg.query.resolves({ diff --git a/src/step-13-database/test/unit/user.test.js b/src/step-13-database/test/unit/user.test.js index c7fd6297..c338fb09 100644 --- a/src/step-13-database/test/unit/user.test.js +++ b/src/step-13-database/test/unit/user.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' -import sinon from 'sinon' import errors from 'http-errors' - -import { test } from 'node:test' -import assert from 'node:assert' +import sinon from 'sinon' function buildServer() { return fastify() @@ -12,21 +12,24 @@ function buildServer() { } test('GET /', async t => { - await t.test('returns error when authentication fails', async t => { - const fastify = buildServer() + await t.test( + 'returns error when authentication fails', + async () => { + const fastify = buildServer() - fastify.authenticate.rejects(errors.Unauthorized()) + fastify.authenticate.rejects(errors.Unauthorized()) - const res = await fastify.inject('/') + const res = await fastify.inject('/') - sinon.assert.called(fastify.authenticate) - assert.equal(res.statusCode, 401) - await fastify.close() - }) + sinon.assert.called(fastify.authenticate) + assert.equal(res.statusCode, 401) + await fastify.close() + }, + ) await t.test( 'returns current user when authentication succeeds', - async t => { + async () => { const fastify = buildServer() fastify.authenticate.callsFake(async request => { diff --git a/src/step-13-database/test/unit/users.test.js b/src/step-13-database/test/unit/users.test.js index 28f402aa..ec662bd9 100644 --- a/src/step-13-database/test/unit/users.test.js +++ b/src/step-13-database/test/unit/users.test.js @@ -1,9 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify from 'fastify' -import sinon from 'sinon' import errors from 'http-errors' - -import { test } from 'node:test' -import assert from 'node:assert' +import sinon from 'sinon' function buildServer() { return fastify() @@ -13,19 +13,22 @@ function buildServer() { } test('GET /', async t => { - await t.test('returns error when authentication fails', async t => { - const fastify = buildServer() + await t.test( + 'returns error when authentication fails', + async () => { + const fastify = buildServer() - fastify.authenticate.rejects(errors.Unauthorized()) + fastify.authenticate.rejects(errors.Unauthorized()) - const res = await fastify.inject('/') + const res = await fastify.inject('/') - sinon.assert.called(fastify.authenticate) - assert.equal(res.statusCode, 401) - await fastify.close() - }) + sinon.assert.called(fastify.authenticate) + assert.equal(res.statusCode, 401) + await fastify.close() + }, + ) - await t.test('returns error when database errors', async t => { + await t.test('returns error when database errors', async () => { const fastify = buildServer() fastify.authenticate.resolves() @@ -37,7 +40,7 @@ test('GET /', async t => { await fastify.close() }) - await t.test('returns users loaded from the database', async t => { + await t.test('returns users loaded from the database', async () => { const fastify = buildServer() fastify.authenticate.resolves() diff --git a/src/step-14-typescript/@types/index.d.ts b/src/step-14-typescript/@types/index.d.ts index f40fcd87..08279b3f 100644 --- a/src/step-14-typescript/@types/index.d.ts +++ b/src/step-14-typescript/@types/index.d.ts @@ -2,6 +2,9 @@ import type { FastifyRequest, FastifyReply } from 'fastify' declare module 'fastify' { export interface FastifyInstance { - authenticate: (request: FastifyRequest, reply: FastifyReply) => Promise + authenticate: ( + request: FastifyRequest, + reply: FastifyReply, + ) => Promise } } diff --git a/src/step-14-typescript/plugins/authenticate.ts b/src/step-14-typescript/plugins/authenticate.ts index 57e91f4b..f1e6398a 100644 --- a/src/step-14-typescript/plugins/authenticate.ts +++ b/src/step-14-typescript/plugins/authenticate.ts @@ -9,7 +9,7 @@ import fp from 'fastify-plugin' async function authenticate( fastify: FastifyInstance, - opts: FastifyPluginOptions + opts: FastifyPluginOptions, ): Promise { fastify.register(fastifyJwt, { secret: opts.JWT_SECRET, @@ -23,7 +23,7 @@ async function authenticate( } catch (err) { reply.send(err) } - } + }, ) } diff --git a/src/step-14-typescript/routes/login.ts b/src/step-14-typescript/routes/login.ts index decedf4d..0a4e6386 100644 --- a/src/step-14-typescript/routes/login.ts +++ b/src/step-14-typescript/routes/login.ts @@ -6,7 +6,7 @@ const BodySchema = Type.Strict( Type.Object({ username: Type.String(), password: Type.String(), - }) + }), ) type BodySchema = Static @@ -14,7 +14,7 @@ type BodySchema = Static const ResponseSchema = Type.Strict( Type.Object({ token: Type.String(), - }) + }), ) type ResponseSchema = Static @@ -31,7 +31,7 @@ export default async function login(fastify: FastifyInstance) { '/login', { schema }, async ( - req: FastifyRequest<{ Body: BodySchema }> + req: FastifyRequest<{ Body: BodySchema }>, ): Promise => { const { username, password } = req.body @@ -40,6 +40,6 @@ export default async function login(fastify: FastifyInstance) { } return { token: fastify.jwt.sign({ username }) } - } + }, ) } diff --git a/src/step-14-typescript/routes/users.ts b/src/step-14-typescript/routes/users.ts index 8bc5b9e7..37be73c8 100644 --- a/src/step-14-typescript/routes/users.ts +++ b/src/step-14-typescript/routes/users.ts @@ -5,8 +5,8 @@ const ResponseSchema = Type.Strict( Type.Array( Type.Object({ username: Type.String(), - }) - ) + }), + ), ) type ResponseSchema = Static @@ -25,6 +25,6 @@ export default async function users(fastify: FastifyInstance) { req.log.info('Users route called') return [{ username: 'alice' }, { username: 'bob' }] - } + }, ) } diff --git a/src/step-14-typescript/test/authenticate.test.ts b/src/step-14-typescript/test/authenticate.test.ts index 9dc8cb8a..5bf6ba52 100644 --- a/src/step-14-typescript/test/authenticate.test.ts +++ b/src/step-14-typescript/test/authenticate.test.ts @@ -1,10 +1,11 @@ -import { test } from 'node:test' import assert from 'node:assert' -import buildServer from '../index' +import { test } from 'node:test' + import config from '../config' +import buildServer from '../index' test('Startup', async t => { - await t.test('it registers the JWT plugin', async t => { + await t.test('it registers the JWT plugin', async () => { const fastify = buildServer(config) await fastify.ready() diff --git a/src/step-14-typescript/test/index.test.ts b/src/step-14-typescript/test/index.test.ts index aff81151..b5f30525 100644 --- a/src/step-14-typescript/test/index.test.ts +++ b/src/step-14-typescript/test/index.test.ts @@ -1,33 +1,46 @@ - -import sinon, { SinonStub } from 'sinon' +import assert from 'node:assert' +import { test } from 'node:test' + import errors from 'http-errors' -import fastify, { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify' +import sinon, { SinonStub } from 'sinon' + +import fastify, { + FastifyInstance, + FastifyReply, + FastifyRequest, +} from 'fastify' + import pluginAuthenticate from '../plugins/authenticate' -async function buildServer(opts: { JWT_SECRET: string }): Promise { +async function buildServer(opts: { + JWT_SECRET: string +}): Promise { const app = fastify() await app.register(pluginAuthenticate, opts) return app } -await t.test('authenticate', async (t) => { - await t.test('replies with error when authentication fails', async (t) => { - const fastify = await buildServer({ - JWT_SECRET: 'supersecret', - }) - const error = new errors.Unauthorized() - const req = {} - req.jwtVerify = sinon.stub().rejects(error) - const reply = {} - reply.send = sinon.stub() - - await assert.doesNotReject(fastify.authenticate(req, reply)) - sinon.assert.calledWith(reply.send, error) - }) +test('authenticate', async t => { + await t.test( + 'replies with error when authentication fails', + async () => { + const fastify = await buildServer({ + JWT_SECRET: 'supersecret', + }) + const error = new errors.Unauthorized() + const req = {} + req.jwtVerify = sinon.stub().rejects(error) + const reply = {} + reply.send = sinon.stub() + + await assert.doesNotReject(fastify.authenticate(req, reply)) + sinon.assert.calledWith(reply.send, error) + }, + ) await t.test( 'resolves successfully when authentication succeeds', - async t => { + async () => { const fastify = await buildServer({ JWT_SECRET: 'supersecret', }) @@ -39,6 +52,6 @@ await t.test('authenticate', async (t) => { await assert.doesNotReject(fastify.authenticate(req, reply)) sinon.assert.notCalled(reply.send) - } + }, ) }) diff --git a/src/step-14-typescript/test/login.test.ts b/src/step-14-typescript/test/login.test.ts index 2d01aced..32530e57 100644 --- a/src/step-14-typescript/test/login.test.ts +++ b/src/step-14-typescript/test/login.test.ts @@ -1,8 +1,9 @@ +import assert from 'node:assert' +import { test } from 'node:test' + import fastify, { FastifyInstance } from 'fastify' import sinon from 'sinon' import loginRoute from '../routes/login' -import assert from 'node:assert' -import { test } from 'node:test' function buildServer(): FastifyInstance { return fastify() @@ -11,7 +12,7 @@ function buildServer(): FastifyInstance { } test('POST /login', async t => { - await t.test('returns 400 with missing credentials', async t => { + await t.test('returns 400 with missing credentials', async () => { const app = buildServer() const res = await app.inject({ @@ -22,7 +23,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 400 with partial credentials', async t => { + await t.test('returns 400 with partial credentials', async () => { const app = buildServer() const res = await app.inject({ @@ -36,7 +37,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 400) }) - await t.test('returns 401 with wrong credentials', async t => { + await t.test('returns 401 with wrong credentials', async () => { const app = buildServer() const res = await app.inject({ @@ -51,7 +52,7 @@ test('POST /login', async t => { assert.equal(res.statusCode, 401) }) - await t.test('obtains a token with right credentials', async t => { + await t.test('obtains a token with right credentials', async () => { const app = buildServer() app.jwt.sign = sinon.stub().returns('jwt token') diff --git a/src/step-14-typescript/test/users.test.ts b/src/step-14-typescript/test/users.test.ts index 5397b74b..b453b4db 100644 --- a/src/step-14-typescript/test/users.test.ts +++ b/src/step-14-typescript/test/users.test.ts @@ -1,10 +1,11 @@ -import { test } from 'node:test' import assert from 'node:assert' -import buildServer from '../index' +import { test } from 'node:test' + import config from '../config' +import buildServer from '../index' test('GET /users', async t => { - await t.test('returns users', async t => { + await t.test('returns users', async () => { const fastify = buildServer(config) const res = await fastify.inject('/users') diff --git a/src/step-14-typescript/tsconfig.json b/src/step-14-typescript/tsconfig.json index e9c0bafe..ae7db25e 100644 --- a/src/step-14-typescript/tsconfig.json +++ b/src/step-14-typescript/tsconfig.json @@ -1,3 +1,3 @@ { - "extends": "@tsconfig/node16/tsconfig.json" + "extends": "@tsconfig/node16/tsconfig.json", } From f3d7f0ea464cc0ffa270ccaae4cfa1dc4d812f74 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 14:33:28 +0530 Subject: [PATCH 06/12] refactor(tests): switch to assert/strict --- src/step-06-testing/test/login.test.js | 2 +- src/step-06-testing/test/users.test.js | 2 +- src/step-07-serialization/test/login.test.js | 2 +- src/step-07-serialization/test/users.test.js | 2 +- src/step-08-authentication/test/login.test.js | 2 +- src/step-08-authentication/test/users.test.js | 2 +- src/step-09-config/test/login.test.js | 2 +- src/step-09-config/test/users.test.js | 2 +- src/step-10-decorators/test/authenticate.test.js | 2 +- src/step-10-decorators/test/index.test.js | 2 +- src/step-10-decorators/test/login.test.js | 2 +- src/step-10-decorators/test/users.test.js | 2 +- src/step-11-hooks/test/unit/authenticate.test.js | 2 +- src/step-11-hooks/test/unit/index.test.js | 2 +- src/step-11-hooks/test/unit/login.test.js | 2 +- src/step-11-hooks/test/unit/user.test.js | 2 +- src/step-11-hooks/test/unit/users.test.js | 2 +- src/step-12-autoload/test/integration/index.test.js | 2 +- src/step-12-autoload/test/unit/authenticate.test.js | 2 +- src/step-12-autoload/test/unit/index.test.js | 2 +- src/step-12-autoload/test/unit/login.test.js | 2 +- src/step-12-autoload/test/unit/user.test.js | 2 +- src/step-12-autoload/test/unit/users.test.js | 2 +- src/step-13-database/test/integration/index.test.js | 2 +- src/step-13-database/test/unit/authenticate.test.js | 2 +- src/step-13-database/test/unit/index.test.js | 2 +- src/step-13-database/test/unit/login.test.js | 2 +- src/step-13-database/test/unit/user.test.js | 2 +- src/step-13-database/test/unit/users.test.js | 2 +- src/step-14-typescript/test/authenticate.test.ts | 2 +- src/step-14-typescript/test/index.test.ts | 2 +- src/step-14-typescript/test/login.test.ts | 2 +- src/step-14-typescript/test/users.test.ts | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/step-06-testing/test/login.test.js b/src/step-06-testing/test/login.test.js index 90e9ac7c..5d908e9d 100644 --- a/src/step-06-testing/test/login.test.js +++ b/src/step-06-testing/test/login.test.js @@ -1,5 +1,5 @@ import { test } from 'node:test' -import assert from 'node:assert' +import assert from 'node:assert/strict' import buildServer from '../index.js' diff --git a/src/step-06-testing/test/users.test.js b/src/step-06-testing/test/users.test.js index 60675b80..278669ea 100644 --- a/src/step-06-testing/test/users.test.js +++ b/src/step-06-testing/test/users.test.js @@ -1,5 +1,5 @@ import { test } from 'node:test' -import assert from 'node:assert' +import assert from 'node:assert/strict' import buildServer from '../index.js' diff --git a/src/step-07-serialization/test/login.test.js b/src/step-07-serialization/test/login.test.js index 90e9ac7c..5d908e9d 100644 --- a/src/step-07-serialization/test/login.test.js +++ b/src/step-07-serialization/test/login.test.js @@ -1,5 +1,5 @@ import { test } from 'node:test' -import assert from 'node:assert' +import assert from 'node:assert/strict' import buildServer from '../index.js' diff --git a/src/step-07-serialization/test/users.test.js b/src/step-07-serialization/test/users.test.js index 60675b80..278669ea 100644 --- a/src/step-07-serialization/test/users.test.js +++ b/src/step-07-serialization/test/users.test.js @@ -1,5 +1,5 @@ import { test } from 'node:test' -import assert from 'node:assert' +import assert from 'node:assert/strict' import buildServer from '../index.js' diff --git a/src/step-08-authentication/test/login.test.js b/src/step-08-authentication/test/login.test.js index 03e128b9..ee56aa43 100644 --- a/src/step-08-authentication/test/login.test.js +++ b/src/step-08-authentication/test/login.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-08-authentication/test/users.test.js b/src/step-08-authentication/test/users.test.js index 861a49a7..a218a896 100644 --- a/src/step-08-authentication/test/users.test.js +++ b/src/step-08-authentication/test/users.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import buildServer from '../index.js' diff --git a/src/step-09-config/test/login.test.js b/src/step-09-config/test/login.test.js index 97c02e2d..578affc8 100644 --- a/src/step-09-config/test/login.test.js +++ b/src/step-09-config/test/login.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-09-config/test/users.test.js b/src/step-09-config/test/users.test.js index d1fdd229..10cffea4 100644 --- a/src/step-09-config/test/users.test.js +++ b/src/step-09-config/test/users.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../config.js' diff --git a/src/step-10-decorators/test/authenticate.test.js b/src/step-10-decorators/test/authenticate.test.js index 5a96e47c..b602d2d3 100644 --- a/src/step-10-decorators/test/authenticate.test.js +++ b/src/step-10-decorators/test/authenticate.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-10-decorators/test/index.test.js b/src/step-10-decorators/test/index.test.js index 646975eb..685e6edc 100644 --- a/src/step-10-decorators/test/index.test.js +++ b/src/step-10-decorators/test/index.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../config.js' diff --git a/src/step-10-decorators/test/login.test.js b/src/step-10-decorators/test/login.test.js index 97c02e2d..578affc8 100644 --- a/src/step-10-decorators/test/login.test.js +++ b/src/step-10-decorators/test/login.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-10-decorators/test/users.test.js b/src/step-10-decorators/test/users.test.js index d1fdd229..10cffea4 100644 --- a/src/step-10-decorators/test/users.test.js +++ b/src/step-10-decorators/test/users.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../config.js' diff --git a/src/step-11-hooks/test/unit/authenticate.test.js b/src/step-11-hooks/test/unit/authenticate.test.js index 5dd7738b..c86d6052 100644 --- a/src/step-11-hooks/test/unit/authenticate.test.js +++ b/src/step-11-hooks/test/unit/authenticate.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-11-hooks/test/unit/index.test.js b/src/step-11-hooks/test/unit/index.test.js index fca371bf..bb3306a4 100644 --- a/src/step-11-hooks/test/unit/index.test.js +++ b/src/step-11-hooks/test/unit/index.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../../config.js' diff --git a/src/step-11-hooks/test/unit/login.test.js b/src/step-11-hooks/test/unit/login.test.js index e9b06222..2660b6ab 100644 --- a/src/step-11-hooks/test/unit/login.test.js +++ b/src/step-11-hooks/test/unit/login.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-11-hooks/test/unit/user.test.js b/src/step-11-hooks/test/unit/user.test.js index 179002a5..3948fa98 100644 --- a/src/step-11-hooks/test/unit/user.test.js +++ b/src/step-11-hooks/test/unit/user.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-11-hooks/test/unit/users.test.js b/src/step-11-hooks/test/unit/users.test.js index 1b352c3f..5660d3e2 100644 --- a/src/step-11-hooks/test/unit/users.test.js +++ b/src/step-11-hooks/test/unit/users.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../../config.js' diff --git a/src/step-12-autoload/test/integration/index.test.js b/src/step-12-autoload/test/integration/index.test.js index 3ff845e1..ff7ddd26 100644 --- a/src/step-12-autoload/test/integration/index.test.js +++ b/src/step-12-autoload/test/integration/index.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../../config.js' diff --git a/src/step-12-autoload/test/unit/authenticate.test.js b/src/step-12-autoload/test/unit/authenticate.test.js index 5dd7738b..c86d6052 100644 --- a/src/step-12-autoload/test/unit/authenticate.test.js +++ b/src/step-12-autoload/test/unit/authenticate.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-12-autoload/test/unit/index.test.js b/src/step-12-autoload/test/unit/index.test.js index fca371bf..bb3306a4 100644 --- a/src/step-12-autoload/test/unit/index.test.js +++ b/src/step-12-autoload/test/unit/index.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../../config.js' diff --git a/src/step-12-autoload/test/unit/login.test.js b/src/step-12-autoload/test/unit/login.test.js index e9b06222..2660b6ab 100644 --- a/src/step-12-autoload/test/unit/login.test.js +++ b/src/step-12-autoload/test/unit/login.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-12-autoload/test/unit/user.test.js b/src/step-12-autoload/test/unit/user.test.js index 6de6faab..f1366f50 100644 --- a/src/step-12-autoload/test/unit/user.test.js +++ b/src/step-12-autoload/test/unit/user.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-12-autoload/test/unit/users.test.js b/src/step-12-autoload/test/unit/users.test.js index 1b352c3f..5660d3e2 100644 --- a/src/step-12-autoload/test/unit/users.test.js +++ b/src/step-12-autoload/test/unit/users.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../../config.js' diff --git a/src/step-13-database/test/integration/index.test.js b/src/step-13-database/test/integration/index.test.js index 2a5c9b25..2c3bb8ea 100644 --- a/src/step-13-database/test/integration/index.test.js +++ b/src/step-13-database/test/integration/index.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../../config.js' diff --git a/src/step-13-database/test/unit/authenticate.test.js b/src/step-13-database/test/unit/authenticate.test.js index 2335fb65..ccad72f4 100644 --- a/src/step-13-database/test/unit/authenticate.test.js +++ b/src/step-13-database/test/unit/authenticate.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-13-database/test/unit/index.test.js b/src/step-13-database/test/unit/index.test.js index 63f92066..76e0192b 100644 --- a/src/step-13-database/test/unit/index.test.js +++ b/src/step-13-database/test/unit/index.test.js @@ -1,5 +1,5 @@ import { test } from 'node:test' -import assert from 'node:assert' +import assert from 'node:assert/strict' import buildServer from '../../index.js' import config from '../../config.js' diff --git a/src/step-13-database/test/unit/login.test.js b/src/step-13-database/test/unit/login.test.js index c5b5094e..049dec09 100644 --- a/src/step-13-database/test/unit/login.test.js +++ b/src/step-13-database/test/unit/login.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-13-database/test/unit/user.test.js b/src/step-13-database/test/unit/user.test.js index c338fb09..75511eb6 100644 --- a/src/step-13-database/test/unit/user.test.js +++ b/src/step-13-database/test/unit/user.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-13-database/test/unit/users.test.js b/src/step-13-database/test/unit/users.test.js index ec662bd9..ce9eff59 100644 --- a/src/step-13-database/test/unit/users.test.js +++ b/src/step-13-database/test/unit/users.test.js @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify from 'fastify' diff --git a/src/step-14-typescript/test/authenticate.test.ts b/src/step-14-typescript/test/authenticate.test.ts index 5bf6ba52..93359060 100644 --- a/src/step-14-typescript/test/authenticate.test.ts +++ b/src/step-14-typescript/test/authenticate.test.ts @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../config' diff --git a/src/step-14-typescript/test/index.test.ts b/src/step-14-typescript/test/index.test.ts index b5f30525..53d187e1 100644 --- a/src/step-14-typescript/test/index.test.ts +++ b/src/step-14-typescript/test/index.test.ts @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import errors from 'http-errors' diff --git a/src/step-14-typescript/test/login.test.ts b/src/step-14-typescript/test/login.test.ts index 32530e57..e42805f8 100644 --- a/src/step-14-typescript/test/login.test.ts +++ b/src/step-14-typescript/test/login.test.ts @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import fastify, { FastifyInstance } from 'fastify' diff --git a/src/step-14-typescript/test/users.test.ts b/src/step-14-typescript/test/users.test.ts index b453b4db..3c2941f9 100644 --- a/src/step-14-typescript/test/users.test.ts +++ b/src/step-14-typescript/test/users.test.ts @@ -1,4 +1,4 @@ -import assert from 'node:assert' +import assert from 'node:assert/strict' import { test } from 'node:test' import config from '../config' From 19b38a530c8d3f47669d783f7cb01ba212cae9ab Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 14:33:49 +0530 Subject: [PATCH 07/12] chore(step-14): remove resolution error for node:assert --- src/step-14-typescript/tsconfig.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/step-14-typescript/tsconfig.json b/src/step-14-typescript/tsconfig.json index ae7db25e..4c00aa39 100644 --- a/src/step-14-typescript/tsconfig.json +++ b/src/step-14-typescript/tsconfig.json @@ -1,3 +1,6 @@ { "extends": "@tsconfig/node16/tsconfig.json", + "compilerOptions": { + "esModuleInterop": true, + } } From b0b4d084a10b5cfd0d0d34514879ebd23db5929c Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 15:51:24 +0530 Subject: [PATCH 08/12] style(code): empty lines --- src/step-08-authentication/test/login.test.js | 2 -- src/step-10-decorators/test/authenticate.test.js | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/step-08-authentication/test/login.test.js b/src/step-08-authentication/test/login.test.js index ee56aa43..578affc8 100644 --- a/src/step-08-authentication/test/login.test.js +++ b/src/step-08-authentication/test/login.test.js @@ -4,8 +4,6 @@ import { test } from 'node:test' import fastify from 'fastify' import sinon from 'sinon' - - function buildServer() { return fastify() .decorate('jwt', { sign: sinon.stub() }) diff --git a/src/step-10-decorators/test/authenticate.test.js b/src/step-10-decorators/test/authenticate.test.js index b602d2d3..9a48ac2e 100644 --- a/src/step-10-decorators/test/authenticate.test.js +++ b/src/step-10-decorators/test/authenticate.test.js @@ -5,8 +5,6 @@ import fastify from 'fastify' import errors from 'http-errors' import sinon from 'sinon' - - function buildServer(opts) { return fastify().register( import('../plugins/authenticate.js'), From 6a59de72912a8e8378ddc15a2a141c6808c45153 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 16:08:21 +0530 Subject: [PATCH 09/12] ci(node): remove node --- .github/workflows/ci-n21.yml | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 .github/workflows/ci-n21.yml diff --git a/.github/workflows/ci-n21.yml b/.github/workflows/ci-n21.yml deleted file mode 100644 index a97059d3..00000000 --- a/.github/workflows/ci-n21.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: ci -on: - push: - branches: - - master - pull_request: - branches: - - master -jobs: - build: - runs-on: ubuntu-latest - services: - postgres: - image: postgres:alpine - env: - POSTGRES_PASSWORD: postgres - ports: - - 5433:5432 - options: - --health-cmd pg_isready --health-interval 10s --health-timeout 5s - --health-retries 5 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 21 - - run: | - npm ci - npm run db:migrate - npm run lint - npm test From ea69fc28b058d27aa3f8118e58211bd86ed597b9 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 17:53:59 +0530 Subject: [PATCH 10/12] docs: use `assert/strict` in the slide dec instead --- slides.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slides.md b/slides.md index 4612aa77..6f8780ba 100644 --- a/slides.md +++ b/slides.md @@ -672,7 +672,7 @@ https://www.fastify.io/docs/latest/Guides/Testing/ import buildServer from '../index.js' import {test} from "node:test" -import assert from "node:assert" +import assert from "node:assert/strict" test('GET /users', async t => { await t.test('returns users', async t => { From 1b228080408638dde3000942a309f14ba918ec29 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 18:49:08 +0530 Subject: [PATCH 11/12] fix(tests): pass glob for node to infer --- src/step-14-typescript/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/step-14-typescript/package.json b/src/step-14-typescript/package.json index 1cf0cf6a..6bec61f7 100644 --- a/src/step-14-typescript/package.json +++ b/src/step-14-typescript/package.json @@ -5,6 +5,6 @@ "version": "1.0.0", "scripts": { "start": "ts-node-dev --project ./tsconfig.json server.ts", - "test": "c8 --check-coverage --100 node --test -r ts-node/register" + "test": "npx c8 node --test -r ts-node/register ./test/*.test.ts" } } From 9b7bad9f17dab9a1546dd47fb3249b16cf70eb95 Mon Sep 17 00:00:00 2001 From: Reaper Gelera Date: Thu, 1 Feb 2024 18:49:28 +0530 Subject: [PATCH 12/12] fix(tests): disable typechecking for tests --- src/step-14-typescript/tsconfig.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/step-14-typescript/tsconfig.json b/src/step-14-typescript/tsconfig.json index 4c00aa39..543d7e86 100644 --- a/src/step-14-typescript/tsconfig.json +++ b/src/step-14-typescript/tsconfig.json @@ -1,5 +1,8 @@ { "extends": "@tsconfig/node16/tsconfig.json", + "ts-node": { + "transpileOnly": true + }, "compilerOptions": { "esModuleInterop": true, }