diff --git a/package-lock.json b/package-lock.json index 36411470311d5a4d384703b0c88c62698fee2a6b..214efe53dbd66817a49c34285543a4f169244a78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,10 +7,10 @@ "": { "name": "root", "dependencies": { "@parcel/watcher": "2.0.3", - "@tailwindcss/aspect-ratio": "0.4.2", + "@tailwindcss/aspect-ratio": "0.4.0", - "@tailwindcss/forms": "0.5.3", + "@tailwindcss/forms": "0.4.0", - "@tailwindcss/line-clamp": "0.4.2", + "@tailwindcss/line-clamp": "0.3.0", - "@tailwindcss/typography": "0.5.7", + "@tailwindcss/typography": "0.5.0", "@types/debounce": "1.2.0", "@types/moo": "0.5.3", "@types/node": "14.14.34", @@ -49,7 +49,7 @@ "semver": "7.3.7", "sift-string": "0.0.2", "stack-trace": "0.0.10", "stringify-object": "3.3.0", - "tailwindcss": "3.1.8", + "tailwindcss": "3.0.11", "tmp-cache": "1.1.0", "tsdx": "0.14.1", "tslib": "2.2.0", @@ -92,35 +92,39 @@ "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.19.4", + "version": "7.19.0", + "@babel/parser": "^7.19.3", "dependencies": { - "name": "root", +{ - "dependencies": { + "@babel/parser": "^7.19.3", "dependencies": { + "name": "root", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "@parcel/watcher": "2.0.3", + "@types/moo": "0.5.3", "@parcel/watcher": "2.0.3", -{ + "@lerna/collect-uncommitted": "3.16.5", "@parcel/watcher": "2.0.3", - "name": "root", + "@lerna/describe-ref": "3.16.5", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@parcel/watcher": "2.0.3", + "@babel/helpers": "^7.19.0", "packages": { + "postcss-load-config": "3.0.1", "@parcel/watcher": "2.0.3", - "": { "@babel/helper-module-transforms": "^7.19.0", "@babel/helpers": "^7.19.0", "@babel/parser": "^7.19.3", + "version": "7.19.4", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", -{ + "name": "root", "name": "root", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -145,13 +149,15 @@ } }, "node_modules/@babel/generator": { { -{ + "stack-trace": "0.0.10", + "node_modules/@lerna/child-process/node_modules/cross-spawn": { "dependencies": { - "@tailwindcss/forms": "0.5.3", + "node_modules/@lerna/child-process/node_modules/cross-spawn": { "@parcel/watcher": "2.0.3", - "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", + "dependencies": { + "@babel/parser": "^7.19.3", "dependencies": { - "@babel/types": "^7.19.4", + "name": "root", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -196,14 +202,14 @@ "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "@parcel/watcher": "2.0.3", + "@types/moo": "0.5.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "version": "6.0.5", { - "postcss": "8.3.9", "dependencies": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -399,19 +405,19 @@ "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { - "name": "root", { + "jest": "25.5.4", + "version": "6.0.5", "requires": true, - "chokidar": "3.5.1", + "version": "6.0.5", "packages": { - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", + "@babel/traverse": "^7.18.9", { - "node_modules/@babel/compat-data": { + "moo": "0.5.1", }, "engines": { "node": ">=6.9.0" @@ -419,13 +425,13 @@ } }, "node_modules/@babel/helper-simple-access": { "dependencies": { - "": { - "chokidar": "3.5.1", + "@babel/parser": "^7.19.3", "@parcel/watcher": "2.0.3", + "name": "root", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dependencies": { - "color-name": "1.1.4", { + "fast-glob": "3.2.4", }, "engines": { "node": ">=6.9.0" @@ -454,21 +459,20 @@ "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "name": "root", + "packages": { "detective": "5.2.0", - "concurrently": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "name": "root", + "version": "7.18.6", { - "requires": true, +{ - "concurrently": "7.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "name": "root", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "engines": { "node": ">=6.9.0" } @@ -496,19 +500,17 @@ "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.19.4", + "version": "7.19.0", - "css.escape": "1.5.1", { + "lockfileVersion": 2, - "name": "root", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "requires": true, - "name": "root", "dependencies": { "@babel/template": "^7.18.10", "name": "root", - "postcss-load-config": "3.0.1", - "name": "root", "name": "root", { + "node_modules/@babel/compat-data": { }, "engines": { "node": ">=6.9.0" @@ -584,10 +584,10 @@ "node": ">=4" } }, "node_modules/@babel/parser": { - "version": "7.19.4", + "version": "7.19.0", - "detect-indent": "6.0.0", { + "packages": { - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -626,12 +626,11 @@ "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "name": "root", { - "requires": true, - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", + "stack-trace": "0.0.10", - "detective": "5.2.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "name": "root", + "integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.19.0", @@ -767,16 +766,18 @@ "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", +{ "lockfileVersion": 2, - "license-checker": "25.0.1", + "packages": { - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dependencies": { - "@babel/compat-data": "^7.19.4", + "@babel/compat-data": "^7.18.8", - "@parcel/watcher": "2.0.3", + "requires": true, "": { + "packages": { "detective": "5.2.0", - "dependencies": { +{ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.18.8" }, @@ -1109,16 +1110,15 @@ "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "requires": true, +{ "lockfileVersion": 2, - "lockfileVersion": 2, + "packages": { + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "requires": true, + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "lockfileVersion": 2, - "requires": true, "dependencies": { "requires": true, - "jest": "25.5.4", + "postcss-selector-parser": "6.0.2", }, "engines": { "node": ">=6.9.0" @@ -1164,14 +1164,13 @@ "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "dependencies": { + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "": { - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "dependencies": { "postcss-selector-parser": "6.0.2", - "name": "root", - "dependencies": { "requires": true, - "jest": "25.5.4", }, "engines": { "node": ">=6.9.0" @@ -1349,11 +1348,11 @@ "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "name": "root", { - "requires": true, + "stack-trace": "0.0.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", - "sift-string": "0.0.2", + "@tailwindcss/aspect-ratio": "0.4.2", + "@types/vscode": "1.65.0", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0" @@ -1552,20 +1551,21 @@ "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.19.4", +{ "packages": { - "klona": "2.0.4", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", + "integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", "dependencies": { - "fast-glob": "3.2.4", "@parcel/watcher": "2.0.3", + "node_modules/@lerna/child-process/node_modules/ansi-styles": { + "postcss-load-config": "3.0.1", "@parcel/watcher": "2.0.3", - "": { "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "tsdx": "0.14.1", +{ + "chokidar": "3.5.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -1574,7 +1573,7 @@ "@babel/plugin-proposal-json-strings": "^7.18.6", "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -1598,11 +1597,12 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "vsce": "1.87.0", + "@babel/template": "^7.18.10", "name": "root", + "lockfileVersion": 2, "@babel/plugin-transform-classes": "^7.19.0", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-destructuring": "^7.18.13", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -1614,8 +1614,8 @@ "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", "@babel/plugin-transform-modules-systemjs": "^7.19.0", "@babel/plugin-transform-modules-umd": "^7.18.6", + "nice-try": "^1.0.4", "packages": { - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", "@babel/plugin-transform-parameters": "^7.18.8", @@ -1630,17 +1630,17 @@ "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.19.0", { "name": "root", -{ + "": { - "": { + "@tailwindcss/aspect-ratio": "0.4.2", "name": "root", + "name": "root", - "": { + "@tailwindcss/aspect-ratio": "0.4.2", - "lockfileVersion": 2, + "detect-indent": "6.0.0", - "": { +{ - "requires": true, - "": { - "packages": { + "detective": "5.2.0", "semver": "^6.3.0" }, "engines": { @@ -1685,10 +1684,11 @@ "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.19.4", + "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "vscode-languageserver-textdocument": "1.0.7", + "@babel/template": "^7.18.10", "lockfileVersion": 2, +{ "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -1697,13 +1697,12 @@ "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.19.4", + "version": "7.19.0", - "": { + "path-key": "^2.0.1", "name": "root", - "": { - "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", + "integrity": "sha512-JyXXoCu1N8GLuKc2ii8y5RGma5FMpFeO2nAQIe0Yzrbq+rQnN+sFj47auLblR5ka6aHNGPDgv8G/iI2Grb0ldQ==", "dependencies": { - "core-js-pure": "^3.25.1", + "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" }, "engines": { @@ -1724,21 +1723,21 @@ "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.19.4", + "version": "7.19.0", - "": { + "@babel/template": "^7.18.10", "jest": "25.5.4", - "": { + "@babel/template": "^7.18.10", "klona": "2.0.4", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.4", + "@babel/generator": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", + "node_modules/@lerna/child-process/node_modules/cross-spawn": { "": { - "line-column": "1.0.2", - "@babel/types": "^7.19.4", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1747,14 +1746,16 @@ "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.19.4", - }, + "@types/moo": "0.5.3", - }, { + "license-checker": "25.0.1", + "path-key": "^2.0.1", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", + "dependencies": { - }, + "@babel/template": "^7.18.10", "lockfileVersion": 2, + "@parcel/watcher": "2.0.3", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2394,16 +2395,16 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.15", - "@ampproject/remapping": "^2.1.0", + "@tailwindcss/aspect-ratio": "0.4.2", + "pkg-up": "3.1.0", - "@ampproject/remapping": "^2.1.0", { + "postcss": "8.3.9", "dependencies": { - "@parcel/watcher": "2.0.3", + "semver": "^5.5.0", "lockfileVersion": 2, - "name": "root", "@parcel/watcher": "2.0.3", - "fast-glob": "3.2.4", + "@types/moo": "0.5.3", } }, "node_modules/@lerna/add": { @@ -4653,24 +4654,25 @@ "type-detect": "4.0.8" } }, "node_modules/@tailwindcss/aspect-ratio": { + "builtin-modules": "3.2.0", { - "regenerator-runtime": "^0.13.4" + "@parcel/watcher": "2.0.3", { - "node_modules/@babel/runtime-corejs3": { + "postcss-selector-parser": "6.0.2", { - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", + "prettier": "2.3.0", "peerDependencies": { "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" } }, "node_modules/@tailwindcss/forms": { + "builtin-modules": "3.2.0", { - "vscode-languageserver-textdocument": "1.0.7", "@parcel/watcher": "2.0.3", { - "vscode-uri": "3.0.2" + "resolve": "1.20.0", { - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "rimraf": "3.0.2", "dependencies": { "mini-svg-data-uri": "^1.2.3" }, @@ -4679,49 +4680,35 @@ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" } }, "node_modules/@tailwindcss/line-clamp": { - "@types/node": "14.14.34", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "name": "root", - "requires": true, { - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "semver": "7.3.7", { - "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", + "sift-string": "0.0.2", "peerDependencies": { "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" } }, "node_modules/@tailwindcss/typography": { - "@types/node": "14.14.34", + "rimraf": "3.0.2", "lockfileVersion": 2, - "dependencies": { + "name": "root", { - "node_modules/@babel/types": { + "stack-trace": "0.0.10", { - }, + "stringify-object": "3.3.0", "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", { - "to-fast-properties": "^2.0.0" + "tailwindcss": "3.1.8", }, "peerDependencies": { { - "node_modules/@bcoe/v8-coverage": { - } - "name": "root", - "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dependencies": { - "version": "0.3.3", - "@types/node": "14.14.34", "packages": { -{ - }, - "engines": { - "node": ">=4" + "lockfileVersion": 2, } }, "node_modules/@types/babel__core": { @@ -4755,12 +4741,12 @@ } }, "node_modules/@types/babel__traverse": { { - "pump": "^3.0.0" + "tsdx": "0.14.1", { - "node": ">=6" + "tslib": "2.2.0", { + "packages": { "": { - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "dependencies": { "@babel/types": "^7.3.0" } @@ -5486,6 +5472,39 @@ "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", "dev": true }, + "node_modules/autoprefixer": { + "version": "10.4.10", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.10.tgz", + "integrity": "sha512-nMaiDARyp1e74c8IeAXkr+BmFKa8By4Zak7tyaNPF09Iu39WFpNXOWrVirmXjKr+5cOyERwvtbMOLYz6iBJYgQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "peer": true, + "dependencies": { + "browserslist": "^4.21.3", + "caniuse-lite": "^1.0.30001399", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -5627,12 +5646,11 @@ "node": ">=8" } }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", + "version": "5.2.0", - "name": "root", "@babel/template": "^7.18.10", + "mri": "1.2.0" - "name": "root", "@tailwindcss/aspect-ratio": "0.4.2", -{ + } "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -5760,21 +5778,20 @@ "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { + "@types/node": "14.14.34", "name": "root", + "@parcel/watcher": "2.0.3", { - "packages": { + "name": "root", - "name": "root", { - "packages": { + "name": "root", { - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", "dependencies": { - "name": "root", { - "resolve": "1.20.0", + "name": "root", "name": "root", { - "packages": { + "name": "root", "lockfileVersion": 2, }, "peerDependencies": { @@ -5977,12 +5993,11 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" }, "node_modules/browserslist": { - "node_modules/@babel/helper-split-export-declaration": { { + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "color-name": "1.1.4", + "node": ">=4.8" "packages": { - "name": "root", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "funding": [ { "type": "opencollective", @@ -5994,10 +6009,11 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", + "caniuse-lite": "^1.0.30001370", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "@tailwindcss/aspect-ratio": "0.4.2", + "node": ">=6.0.0" "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -6234,10 +6250,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001421", + "version": "1.0.30001399", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001399.tgz", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "@babel/template": "^7.18.10", "dependencies": { + "name": "root", "funding": [ { "type": "opencollective", @@ -7224,12 +7241,14 @@ "node": ">=4" } }, "node_modules/convert-source-map": { - "name": "root", + "@babel/plugin-transform-modules-amd": "^7.18.6", "name": "root", - "name": "root", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", { + "node": ">=6.9.0" - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "dependencies": { - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "safe-buffer": "~5.1.1" + } }, "node_modules/copy-concurrently": { "version": "1.0.5", @@ -7272,16 +7291,14 @@ "node": ">=0.10.0" } }, "node_modules/core-js-compat": { - "has-flag": "^3.0.0" { + "version": "7.19.4", - "name": "root", + "node_modules/@lerna/child-process/node_modules/execa": { "name": "root", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", + "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==", "dependencies": { - "deepmerge": "4.2.2", + "node_modules/@lerna/child-process/node_modules/execa": { "@parcel/watcher": "2.0.3", - "requires": true, }, "funding": { "type": "opencollective", @@ -7289,14 +7306,13 @@ "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-pure": { - "has-flag": "^3.0.0" { + "version": "7.19.4", - "deepmerge": "4.2.2", + "@babel/template": "^7.18.10", "@parcel/watcher": "2.0.3", - "name": "root", - "deepmerge": "4.2.2", + "@babel/template": "^7.18.10", "@parcel/watcher": "2.0.3", - "dependencies": { +{ "hasInstallScript": true, "funding": { "type": "opencollective", @@ -7611,20 +7626,14 @@ "node": ">=0.10.0" } }, "node_modules/defined": { - "version": "1.0.1", - "name": "root", "@parcel/watcher": "2.0.3", - "enhanced-resolve-301": "0.0.1", - "name": "root", + "": { "@parcel/watcher": "2.0.3", - "fast-glob": "3.2.4", "@tailwindcss/aspect-ratio": "0.4.2", - "dependencies": { + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", { "@parcel/watcher": "2.0.3", - "name": "root", "lockfileVersion": 2, - } }, "node_modules/delayed-stream": { "version": "1.0.0", @@ -7864,12 +7872,12 @@ "safer-buffer": "^2.1.0" } }, "node_modules/electron-to-chromium": { - "lockfileVersion": 2, +{ - "klona": "2.0.4", + "@babel/code-frame": "^7.18.6", - "lockfileVersion": 2, + "@tailwindcss/aspect-ratio": "0.4.2", - "license-checker": "25.0.1", + "@babel/generator": "^7.19.3", - "lockfileVersion": 2, +{ - "line-column": "1.0.2", + "@babel/helper-compilation-targets": "^7.19.3", }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -8612,11 +8620,12 @@ } } }, "node_modules/eslint-plugin-react": { - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", +{ + "@babel/helper-module-transforms": "^7.19.0", - "fast-glob": "3.2.4", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "dependencies": { { - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "@babel/parser": "^7.19.3", "dependencies": { "array-includes": "^3.1.5", "array.prototype.flatmap": "^1.3.0", @@ -9517,11 +9525,10 @@ } }, "node_modules/fb-watchman": { "@tailwindcss/aspect-ratio": "0.4.2", - "css.escape": "1.5.1", "lockfileVersion": 2, - "devDependencies": { + "@tailwindcss/aspect-ratio": "0.4.2", { - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dependencies": { "bser": "2.1.1" } @@ -9704,6 +9710,19 @@ "mime-types": "^2.1.12" }, "engines": { "node": ">= 0.12" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "peer": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" } }, "node_modules/fragment-cache": { @@ -14079,10 +14098,8 @@ }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "packages": { +{ { - "@parcel/watcher": "2.0.3", - "@babel/parser": "^7.19.3", "name": "root", }, "node_modules/log-symbols": { @@ -15028,6 +15044,15 @@ "engines": { "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/normalize-url": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", @@ -15283,11 +15308,12 @@ "node": ">=0.10.0" } }, "node_modules/object-hash": { - "name": "root", "version": "2.2.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", +{ + "node_modules/@babel/core/node_modules/semver": { - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/traverse": "^7.19.3", { + "name": "root", "engines": { "node": ">= 6" } @@ -16141,23 +16167,6 @@ "url": "https://opencollective.com/postcss/" } }, "vsce": "1.87.0", - "@types/node": "14.14.34", - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "vsce": "1.87.0", "culori": "0.20.1", "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", @@ -16651,23 +16660,6 @@ "node": ">=0.8" } }, "@babel/plugin-transform-object-super": "^7.18.6", -{ - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "@babel/plugin-transform-object-super": "^7.18.6", "": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz", @@ -16955,13 +16947,15 @@ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "name": "root", +{ - "": { +{ { + "lockfileVersion": 2, - "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/traverse": "^7.19.3", { + "requires": true, + "cross-spawn": "^6.0.0", "packages": { - "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", "dependencies": { "regenerate": "^1.4.2" }, @@ -16970,12 +16964,11 @@ "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.10", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "cross-spawn": "^6.0.0", "": { - "vscode-emmet-helper-bundled": "0.0.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "cross-spawn": "^6.0.0", "dependencies": { - "name": "root", }, "node_modules/regenerator-transform": { "version": "0.15.0", @@ -17025,19 +17018,19 @@ "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/regexpu-core": { - "version": "5.2.1", - "": { + "@tailwindcss/forms": "0.5.3", - "requires": true, - "": { +{ + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", +{ - "packages": { + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dependencies": { "regenerate": "^1.4.2", - "": { +{ - "name": "root", + "@babel/types": "^7.19.4", - "vscode-languageclient": "8.0.2", +{ - "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", - "": { +{ - "@parcel/watcher": "2.0.3", + "jsesc": "^2.5.1" "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" }, @@ -17046,26 +17039,26 @@ "node": ">=4" } }, "node_modules/regjsgen": { - "": { + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", { - "lockfileVersion": 2, - "": { { + "name": "root", "requires": true, - "": { +{ { + "name": "root", "packages": { }, "node_modules/regjsparser": { - "": { +{ { - "name": "root", + "debounce": "1.2.0", - "": { +{ { - "dependencies": { + "deepmerge": "4.2.2", - "": { +{ { - "@parcel/watcher": "2.0.3", + "detect-indent": "6.0.0", "dependencies": { "jsesc": "~0.5.0" }, @@ -18999,41 +18991,40 @@ "node": ">=6" } }, "node_modules/tailwindcss": { - "figgy-pudding": "^3.5.1", { - "figgy-pudding": "^3.5.1", +{ "name": "root", + "@parcel/watcher": "2.0.3", - "figgy-pudding": "^3.5.1", + "@babel/traverse": "^7.19.3", "lockfileVersion": 2, + "integrity": "sha512-JyMsQ2kPqpOvG8ow535XpauXj3wz3nQqcy2tVlXj4FQ0eNlsdzvlAqpRA3q5rPLboWirNG6r2DqKczwjW2uc8Q==", "dependencies": { - "arg": "^5.0.2", + "arg": "^5.0.1", + "chalk": "^4.1.2", - "esbuild": "0.14.11", + "npm-run-path": "^2.0.0", "requires": true, - "packages": { "color-name": "^1.1.4", - "": { + "cosmiconfig": "^7.0.1", + "npm-run-path": "^2.0.0", "": { - "rimraf": "3.0.2", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "get-stream": "^4.0.0", +{ + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", "normalize-path": "^3.0.0", - "get-stream": "^4.0.0", + "@babel/traverse": "^7.19.3", "lockfileVersion": 2, - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", + "dependencies": { "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", + "postcss-load-config": "^3.1.0", "postcss-nested": "5.0.6", - "npm-package-arg": "^6.1.0" + "signal-exit": "^3.0.0", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", - "npm-package-arg": "^6.1.0" "lockfileVersion": 2, + "@babel/core": "^7.0.0-0" }, "bin": { "tailwind": "lib/cli.js", @@ -19043,6 +19034,7 @@ "engines": { "node": ">=12.13.0" }, "peerDependencies": { + "autoprefixer": "^10.0.2", "postcss": "^8.0.9" } }, @@ -19083,31 +19075,31 @@ "engines": { "node": ">= 6" } }, + "node_modules/tailwindcss/node_modules/cosmiconfig": { + "lockfileVersion": 2, "esbuild": "0.14.11", - "name": "root", "@parcel/watcher": "2.0.3", + "packages": { "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "requires": true, - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "name": "root", - "esbuild": "0.14.11", + "@babel/plugin-transform-classes": "^7.19.0", "dependencies": { -{ "dependencies": { - "version": "4.1.0", + "chokidar": "3.5.1", "name": "root", +{ - "detective": "5.2.0", "vsce": "1.87.0", + "moo": "0.5.1", - "version": "4.1.0", + "@babel/helper-wrap-function": "^7.18.9", "lockfileVersion": 2, - "": { + "@babel/helper-wrap-function": "^7.18.9", "requires": true, - "@tailwindcss/forms": "0.5.3", "packages": { - "detective": "bin/detective.js" + "url": "https://github.com/sponsors/feross" }, "engines": { "name": "root", - "@lerna/symlink-dependencies": "3.17.0", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", } }, "node_modules/tailwindcss/node_modules/fast-glob": { @@ -19147,54 +19139,76 @@ "engines": { "node": ">=10.13.0" } }, - "node_modules/tailwindcss/node_modules/postcss": { + "node_modules/tailwindcss/node_modules/import-fresh": { - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "@babel/helper-wrap-function": "^7.18.9", "name": "root", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "@babel/helper-wrap-function": "^7.18.9", "dependencies": { - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "@babel/helper-wrap-function": "^7.18.9", "@parcel/watcher": "2.0.3", - "funding": [ - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "dependencies": { "name": "root", + "node_modules/@babel/helper-annotate-as-pure": { "name": "root", - "packages": { + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "": { "requires": true, + "engines": { "lerna": "^3.22.1", + "name": "root", + }, +{ + "dependencies": { + "node": ">=6.0.0" + } "name": "root", + "@babel/traverse": "^7.19.3", "requires": true, + "requires": true, { + "@babel/generator": "^7.19.3", - "name": "root", + "chokidar": "3.5.1", "lockfileVersion": 2, + "lockfileVersion": 2, + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { "name": "root", + "devDependencies": { "name": "root", + "@tailwindcss/typography": "0.5.7", "packages": { + "node_modules/@babel/helper-replace-supers": { "": { + "lines-and-columns": "^1.1.6" "": { + "requires": true, "name": "root", -{ + "name": "root", "name": "root", + "": { "requires": true, "": { + "requires": true, - "node_modules/@babel/helper-split-export-declaration": { + "@tailwindcss/aspect-ratio": "0.4.2", "dependencies": { + "name": "root", "dependencies": { "": { + "@parcel/watcher": "2.0.3", }, - "name": "root", - "get-stream": "^4.0.0", + "@babel/traverse": "^7.19.3", "requires": true, + "packages": { "": { - }, + "node_modules/@babel/core": { + "chokidar": "3.5.1", "lockfileVersion": 2, + "@parcel/watcher": "2.0.3", - "": { + "chokidar": "3.5.1", "requires": true, "engines": { - "packages": { "name": "root", -{ + "": { "requires": true, } }, @@ -19260,41 +19271,23 @@ "engines": { "node": ">=8.10.0" } }, - "node": ">=6" { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - "dependencies": { - "@babel/plugin-syntax-numeric-separator": "^7.10.4" { - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - "": { "requires": true, - "bin": { - "resolve": "bin/resolve" + "": { "": { - "requires": true, - "@tailwindcss/aspect-ratio": "0.4.2", "dependencies": { + "@parcel/watcher": "2.0.3", { - "@babel/helper-module-transforms": "^7.19.0", + "lockfileVersion": 2, "lockfileVersion": 2, - "": { "@parcel/watcher": "2.0.3", - }, - "node_modules/tailwindcss/node_modules/source-map-js": { { - "@lerna/run-lifecycle": "3.16.2", - "node": ">=6" "lockfileVersion": 2, - "node": ">=6" "requires": true, "engines": { - "@tailwindcss/aspect-ratio": "0.4.2", "name": "root", - "name": "root", + "tsdx": "0.14.1", } }, "node_modules/tapable": { @@ -20064,11 +20056,13 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { { - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz", + "@babel/compat-data": "^7.19.3", - "name": "root", +{ +{ "requires": true, - "@parcel/watcher": "2.0.3", + "name": "root", - "get-stream": "^4.1.0", +{ + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "engines": { "node": ">=4" } @@ -20198,13 +20192,13 @@ "yarn": "*" } }, "node_modules/update-browserslist-db": { - "node_modules/@babel/helper-module-imports": { + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { "@parcel/watcher": "2.0.3", - "name": "root", +{ + "@types/debounce": "1.2.0", "@parcel/watcher": "2.0.3", + "@babel/traverse": "^7.19.3", "packages": { - "name": "root", - "@babel/helper-compilation-targets": "^7.19.3", "funding": [ { "type": "opencollective", @@ -20465,12 +20459,15 @@ "vscode-uri": "^3.0.3" } }, "node_modules/vscode-css-languageservice/node_modules/vscode-uri": { + "detect-indent": "6.0.0", "name": "root", - "name": "root", + "@parcel/watcher": "2.0.3", +{ { + "stringify-object": "3.3.0", - "version": "2.2.0", +{ + "@types/moo": "0.5.3", "name": "root", - "integrity": "sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==" }, "node_modules/vscode-emmet-helper-bundled": { "version": "0.0.1", @@ -20542,7 +20539,6 @@ "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -21152,31 +21148,34 @@ "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.19.4", + "version": "7.19.0", + "@babel/parser": "^7.19.3", "dependencies": { - "name": "root", +{ - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==" }, "@babel/core": { - "@parcel/watcher": "2.0.3", + "@types/moo": "0.5.3", "@parcel/watcher": "2.0.3", -{ + "@lerna/collect-uncommitted": "3.16.5", "@parcel/watcher": "2.0.3", - "name": "root", + "@lerna/describe-ref": "3.16.5", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@parcel/watcher": "2.0.3", + "@babel/helpers": "^7.19.0", "packages": { + "postcss-load-config": "3.0.1", "@parcel/watcher": "2.0.3", - "": { "@babel/helper-module-transforms": "^7.19.0", "@babel/helpers": "^7.19.0", "@babel/parser": "^7.19.3", + "version": "7.19.4", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", -{ + "name": "root", "name": "root", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -21193,12 +21192,13 @@ } }, "@babel/generator": { { - "@types/vscode": "1.65.0", + "stack-trace": "0.0.10", - "@tailwindcss/forms": "0.5.3", + "@parcel/watcher": "2.0.3", "@parcel/watcher": "2.0.3", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", - "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "requires": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -21233,14 +21233,15 @@ "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { + "version": "7.19.0", + "@babel/parser": "^7.19.3", "version": "7.19.3", - "@types/debounce": "1.2.0", + "version": "6.0.5", { - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "requires": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -21380,30 +21381,30 @@ "@babel/types": "^7.18.9" } }, "@babel/helper-replace-supers": { - "name": "root", { + "jest": "25.5.4", + "version": "6.0.5", "requires": true, - "chokidar": "3.5.1", + "version": "6.0.5", "packages": { - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", + "@babel/traverse": "^7.18.9", { - "node_modules/@babel/compat-data": { + "moo": "0.5.1", } }, "@babel/helper-simple-access": { "dependencies": { - "": { - "chokidar": "3.5.1", + "@babel/parser": "^7.19.3", "@parcel/watcher": "2.0.3", + "name": "root", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "requires": { - "color-name": "1.1.4", { + "fast-glob": "3.2.4", } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -21423,19 +21423,18 @@ "@babel/types": "^7.18.6" } }, "@babel/helper-string-parser": { - "version": "7.19.4", + "version": "7.18.10", - "color-name": "1.1.4", + "version": "6.0.5", "@parcel/watcher": "2.0.3", - "name": "root", + "strip-eof": "^1.0.0" "requires": true, - "mri": "1.2.0" }, "@babel/helper-validator-identifier": { - "name": "root", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", { - "requires": true, - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - ] +{ + "@babel/helper-function-name": "^7.19.0", }, "@babel/helper-validator-option": { "version": "7.18.6", @@ -21454,19 +21453,17 @@ "@babel/types": "^7.19.0" } }, "@babel/helpers": { - "version": "7.19.4", + "version": "7.19.0", - "css.escape": "1.5.1", { + "lockfileVersion": 2, - "name": "root", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "requires": true, - "name": "root", "requires": { "@babel/template": "^7.18.10", "name": "root", - "postcss-load-config": "3.0.1", - "name": "root", "name": "root", { + "node_modules/@babel/compat-data": { } }, "@babel/highlight": { @@ -21526,11 +21521,12 @@ } } }, "@babel/parser": { - "version": "7.19.4", - "detect-indent": "6.0.0", { + "stack-trace": "0.0.10", - "name": "root", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "packages": { +{ + "@types/moo": "0.5.3", "": { }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -21552,12 +21548,11 @@ "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { - "name": "root", { - "requires": true, + "stack-trace": "0.0.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "detective": "5.2.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "name": "root", + "integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.19.0", @@ -21639,16 +21634,18 @@ "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", +{ "lockfileVersion": 2, - "license-checker": "25.0.1", + "packages": { - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "requires": { - "@babel/compat-data": "^7.19.4", + "@babel/compat-data": "^7.18.8", - "@parcel/watcher": "2.0.3", + "requires": true, "": { + "packages": { "detective": "5.2.0", - "dependencies": { +{ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.18.8" } @@ -21864,15 +21861,15 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "postcss-load-config": "3.0.1", +{ "lockfileVersion": 2, + "packages": { - "requires": true, + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "lockfileVersion": 2, - "requires": true, "requires": { "requires": true, - "jest": "25.5.4", + "postcss-selector-parser": "6.0.2", } }, "@babel/plugin-transform-classes": { @@ -21900,13 +21897,13 @@ "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.19.4", + "version": "7.18.13", - "postcss-selector-parser": "6.0.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "": { - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "requires": { "requires": true, - "jest": "25.5.4", + "postcss-selector-parser": "6.0.2", } }, "@babel/plugin-transform-dotall-regex": { @@ -22012,11 +22009,11 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "name": "root", { - "requires": true, + "stack-trace": "0.0.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", - "sift-string": "0.0.2", + "@tailwindcss/aspect-ratio": "0.4.2", + "@types/vscode": "1.65.0", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0" @@ -22131,19 +22128,20 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { - "version": "7.19.4", + "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", "requires": { - "fast-glob": "3.2.4", "@parcel/watcher": "2.0.3", + "node_modules/@lerna/child-process/node_modules/ansi-styles": { + "postcss-load-config": "3.0.1", "@parcel/watcher": "2.0.3", - "": { "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "tsdx": "0.14.1", +{ + "chokidar": "3.5.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -22152,7 +22150,7 @@ "@babel/plugin-proposal-json-strings": "^7.18.6", "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -22176,11 +22174,12 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "vsce": "1.87.0", + "@babel/template": "^7.18.10", "name": "root", + "lockfileVersion": 2, "@babel/plugin-transform-classes": "^7.19.0", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-destructuring": "^7.18.13", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -22192,8 +22191,8 @@ "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", "@babel/plugin-transform-modules-systemjs": "^7.19.0", "@babel/plugin-transform-modules-umd": "^7.18.6", + "nice-try": "^1.0.4", "packages": { - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", "@babel/plugin-transform-parameters": "^7.18.8", @@ -22208,17 +22207,17 @@ "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.19.0", { "name": "root", -{ + "": { - "": { + "@tailwindcss/aspect-ratio": "0.4.2", "name": "root", + "name": "root", - "": { + "@tailwindcss/aspect-ratio": "0.4.2", - "lockfileVersion": 2, + "detect-indent": "6.0.0", - "": { +{ - "requires": true, - "": { - "packages": { + "detective": "5.2.0", "semver": "^6.3.0" }, "dependencies": { @@ -22250,22 +22248,22 @@ "esutils": "^2.0.2" } }, "@babel/runtime": { - "version": "7.19.4", + "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "vscode-languageserver-textdocument": "1.0.7", + "@babel/template": "^7.18.10", "lockfileVersion": 2, +{ "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.19.4", + "version": "7.19.0", - "": { + "path-key": "^2.0.1", "name": "root", - "": { - "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", + "integrity": "sha512-JyXXoCu1N8GLuKc2ii8y5RGma5FMpFeO2nAQIe0Yzrbq+rQnN+sFj47auLblR5ka6aHNGPDgv8G/iI2Grb0ldQ==", "requires": { - "core-js-pure": "^3.25.1", + "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" } }, @@ -22280,34 +22278,36 @@ "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.19.4", + "version": "7.19.0", - "": { + "@babel/template": "^7.18.10", "jest": "25.5.4", - "": { + "@babel/template": "^7.18.10", "klona": "2.0.4", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.4", + "@babel/generator": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "vscode-uri": "3.0.2" + "@babel/parser": "^7.19.3", "dependencies": { + "": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.19.4", + "version": "7.19.0", - }, + "@tailwindcss/aspect-ratio": "0.4.2", + "license-checker": "25.0.1", - }, { + "line-column": "1.0.2", "requires": { - }, + "@babel/helper-string-parser": "^7.18.10", "name": "root", - "@babel/helper-validator-identifier": "^7.19.1", +{ "to-fast-properties": "^2.0.0" } }, @@ -22826,16 +22826,16 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.15", - "@ampproject/remapping": "^2.1.0", + "@tailwindcss/aspect-ratio": "0.4.2", + "pkg-up": "3.1.0", - "@ampproject/remapping": "^2.1.0", { + "postcss": "8.3.9", "requires": { - "@parcel/watcher": "2.0.3", + "semver": "^5.5.0", "lockfileVersion": 2, - "name": "root", "@parcel/watcher": "2.0.3", - "fast-glob": "3.2.4", + "@types/moo": "0.5.3", } }, "@lerna/add": { @@ -24702,64 +24702,52 @@ "type-detect": "4.0.8" } }, "@tailwindcss/aspect-ratio": { + "builtin-modules": "3.2.0", { - "regenerator-runtime": "^0.13.4" + "@parcel/watcher": "2.0.3", { - "node_modules/@babel/runtime-corejs3": { + "postcss-selector-parser": "6.0.2", { - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", + "prettier": "2.3.0", "requires": {} }, "@tailwindcss/forms": { - "@types/node": "14.14.34", "name": "root", +{ "@parcel/watcher": "2.0.3", { - "vscode-uri": "3.0.2" -{ + "requires": true, "": { - "lockfileVersion": 2, { + "rimraf": "3.0.2", "requires": { "mini-svg-data-uri": "^1.2.3" } }, "@tailwindcss/line-clamp": { - "@types/node": "14.14.34", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "name": "root", - "requires": true, { - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "semver": "7.3.7", { - "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", + "sift-string": "0.0.2", "requires": {} }, "@tailwindcss/typography": { - "@types/node": "14.14.34", + "rimraf": "3.0.2", "lockfileVersion": 2, - "dependencies": { + "name": "root", { - "node_modules/@babel/types": { + "stack-trace": "0.0.10", { - }, + "stringify-object": "3.3.0", "requires": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", { - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "node_modules/@babel/code-frame": { - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "version": "25.5.0", + "packages": { "name": "root", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - } } }, "@types/babel__core": { @@ -24793,12 +24779,12 @@ } }, "@types/babel__traverse": { { - "pump": "^3.0.0" + "tsdx": "0.14.1", { - "node": ">=6" + "tslib": "2.2.0", { + "packages": { "": { - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "requires": { "@babel/types": "^7.3.0" } @@ -25355,6 +25341,20 @@ "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", "dev": true }, + "autoprefixer": { + "version": "10.4.10", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.10.tgz", + "integrity": "sha512-nMaiDARyp1e74c8IeAXkr+BmFKa8By4Zak7tyaNPF09Iu39WFpNXOWrVirmXjKr+5cOyERwvtbMOLYz6iBJYgQ==", + "peer": true, + "requires": { + "browserslist": "^4.21.3", + "caniuse-lite": "^1.0.30001399", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -25467,12 +25467,12 @@ }, "dependencies": { "istanbul-lib-instrument": { "name": "root", - "vscode-languageclient": "8.0.2", "name": "root", + "tailwindcss": "3.1.8", + "strip-eof": "^1.0.0" "dependencies": { - "klona": "2.0.4", - "dependencies": { +{ - "license-checker": "25.0.1", + "@babel/helper-split-export-declaration": "^7.18.6" "requires": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -25570,22 +25570,20 @@ } } }, "babel-plugin-polyfill-corejs3": { + "@types/node": "14.14.34", "name": "root", + "@parcel/watcher": "2.0.3", { - "packages": { + "name": "root", - "name": "root", { - "stringify-object": "3.3.0", - "name": "root", + "name": "root", { - "tailwindcss": "3.1.8", "requires": { - "name": "root", { - "resolve": "1.20.0", + "name": "root", "name": "root", { - "packages": { + "name": "root", "lockfileVersion": 2, } }, @@ -25758,17 +25755,17 @@ } } }, "browserslist": { - "node_modules/@babel/helper-split-export-declaration": { { + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "color-name": "1.1.4", + "node": ">=4.8" "packages": { - "name": "root", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "requires": { - "caniuse-lite": "^1.0.30001400", + "caniuse-lite": "^1.0.30001370", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "@tailwindcss/aspect-ratio": "0.4.2", + "node": ">=6.0.0" "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "update-browserslist-db": "^1.0.5" } }, "bs-logger": { @@ -25951,11 +25948,10 @@ "quick-lru": "^4.0.1" } }, "caniuse-lite": { - "version": "1.0.30001421", + "version": "1.0.30001399", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001399.tgz", - "dependencies": { { - "postcss": "8.3.9", + "node_modules/@babel/helper-create-regexp-features-plugin": { }, "capture-exit": { "version": "2.0.0", @@ -26727,13 +26723,17 @@ } } }, "convert-source-map": { - "deepmerge": "4.2.2", + "@babel/plugin-transform-modules-amd": "^7.18.6", "name": "root", { + "@babel/highlight": "^7.18.6" - "deepmerge": "4.2.2", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "name": "root", + "requires": true, "name": "root", + "": { - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "safe-buffer": "~5.1.1" + } }, "copy-concurrently": { "version": "1.0.5", @@ -26772,25 +26771,22 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js-compat": { - "has-flag": "^3.0.0" { + "version": "7.19.4", - "name": "root", + "node_modules/@lerna/child-process/node_modules/execa": { "name": "root", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", + "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==", "requires": { - "deepmerge": "4.2.2", + "node_modules/@lerna/child-process/node_modules/execa": { "@parcel/watcher": "2.0.3", - "requires": true, } }, "core-js-pure": { - "has-flag": "^3.0.0" { + "version": "7.19.4", - "deepmerge": "4.2.2", + "@babel/template": "^7.18.10", "@parcel/watcher": "2.0.3", - "name": "root", - "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==" + "integrity": "sha512-7Fr74bliUDdeJCBMxkkIuQ4xfxn/SwrVg+HkJUAoNEXVqYLv55l6Af0dJ5Lq2YBUW9yKqSkLXaS5SYPK6MGa/A==" }, "core-util-is": { "version": "1.0.2", @@ -27025,14 +27020,13 @@ } } }, "defined": { - "version": "1.0.1", + "version": "1.0.0", - "name": "root", + "@babel/template": "^7.18.10", "@parcel/watcher": "2.0.3", - "lockfileVersion": 2, "name": "root", - "@babel/highlight": "^7.18.6" + "@babel/template": "^7.18.10", "@parcel/watcher": "2.0.3", - "packages": { + "lockfileVersion": 2, }, "delayed-stream": { "version": "1.0.0", @@ -27226,12 +27220,12 @@ "safer-buffer": "^2.1.0" } }, "electron-to-chromium": { - "lockfileVersion": 2, +{ - "klona": "2.0.4", + "@babel/code-frame": "^7.18.6", - "lockfileVersion": 2, + "@tailwindcss/aspect-ratio": "0.4.2", - "license-checker": "25.0.1", + "@babel/generator": "^7.19.3", - "lockfileVersion": 2, +{ - "line-column": "1.0.2", + "@babel/helper-compilation-targets": "^7.19.3", }, "emoji-regex": { "version": "9.2.2", @@ -28034,11 +28028,12 @@ "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", +{ + "@babel/helper-module-transforms": "^7.19.0", - "fast-glob": "3.2.4", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "dependencies": { { - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "@babel/parser": "^7.19.3", "requires": { "array-includes": "^3.1.5", "array.prototype.flatmap": "^1.3.0", @@ -28431,10 +28425,10 @@ } }, "fb-watchman": { "@tailwindcss/aspect-ratio": "0.4.2", - "css.escape": "1.5.1", + "dlv": "1.1.3", - "@babel/helper-plugin-utils": "^7.8.0" + "@tailwindcss/aspect-ratio": "0.4.2", { - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "requires": { "bser": "2.1.1" } @@ -28583,6 +28576,12 @@ "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "peer": true }, "fragment-cache": { "version": "0.2.1", @@ -32024,10 +32023,8 @@ }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "packages": { +{ { - "@parcel/watcher": "2.0.3", - "@babel/parser": "^7.19.3", "name": "root", }, "log-symbols": { @@ -32798,6 +32794,12 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "peer": true + }, "normalize-url": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", @@ -33012,12 +33014,12 @@ } } }, "object-hash": { - "name": "root", "version": "2.2.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", +{ + "node_modules/@babel/core/node_modules/semver": { - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "@babel/traverse": "^7.19.3", "": { - "dependencies": { + "requires": true, }, "object-inspect": { "version": "1.12.0", @@ -33667,17 +33669,6 @@ } } }, "version": "3.21.0", -{ - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "version": "3.21.0", "name": "root", "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", @@ -34042,22 +34033,6 @@ "mute-stream": "~0.0.4" } }, "@lerna/command": "3.21.0", - "name": "root", - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "requires": { - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - } - } - }, - "@lerna/command": "3.21.0", "requires": true, "version": "1.0.5", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz", @@ -34285,23 +34260,24 @@ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "regenerate-unicode-properties": { - "name": "root", +{ - "": { +{ { + "lockfileVersion": 2, - "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/traverse": "^7.19.3", { + "requires": true, + "cross-spawn": "^6.0.0", "packages": { - "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.10", + "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "vscode-emmet-helper-bundled": "0.0.1", + "cross-spawn": "^6.0.0", "dependencies": { - "name": "root", }, "regenerator-transform": { "version": "0.15.0", @@ -34336,44 +34312,44 @@ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, "regexpu-core": { - "version": "5.2.1", - "": { + "@tailwindcss/forms": "0.5.3", - "requires": true, - "": { +{ + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", +{ - "packages": { + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "requires": { "regenerate": "^1.4.2", - "": { +{ - "name": "root", + "@babel/types": "^7.19.4", - "vscode-languageclient": "8.0.2", +{ - "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", - "": { +{ - "@parcel/watcher": "2.0.3", + "jsesc": "^2.5.1" "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { - "": { + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", { - "lockfileVersion": 2, - "": { { + "name": "root", "requires": true, - "": { +{ { + "name": "root", "packages": { }, "regjsparser": { - "": { +{ { - "name": "root", + "debounce": "1.2.0", - "": { +{ { - "dependencies": { + "deepmerge": "4.2.2", - "": { +{ { - "@parcel/watcher": "2.0.3", + "detect-indent": "6.0.0", "requires": { "jsesc": "~0.5.0" }, @@ -35871,41 +35846,40 @@ } } }, "tailwindcss": { - "figgy-pudding": "^3.5.1", { - "figgy-pudding": "^3.5.1", +{ "name": "root", + "@parcel/watcher": "2.0.3", - "figgy-pudding": "^3.5.1", + "@babel/traverse": "^7.19.3", "lockfileVersion": 2, + "integrity": "sha512-JyMsQ2kPqpOvG8ow535XpauXj3wz3nQqcy2tVlXj4FQ0eNlsdzvlAqpRA3q5rPLboWirNG6r2DqKczwjW2uc8Q==", "requires": { - "arg": "^5.0.2", + "arg": "^5.0.1", + "chalk": "^4.1.2", - "esbuild": "0.14.11", + "npm-run-path": "^2.0.0", "requires": true, - "packages": { "color-name": "^1.1.4", - "": { + "cosmiconfig": "^7.0.1", + "npm-run-path": "^2.0.0", "": { - "rimraf": "3.0.2", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "get-stream": "^4.0.0", +{ + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", "normalize-path": "^3.0.0", - "get-stream": "^4.0.0", + "@babel/traverse": "^7.19.3", "lockfileVersion": 2, - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", + "dependencies": { "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", + "postcss-load-config": "^3.1.0", "postcss-nested": "5.0.6", - "npm-package-arg": "^6.1.0" + "signal-exit": "^3.0.0", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", - "npm-package-arg": "^6.1.0" "lockfileVersion": 2, + "@babel/core": "^7.0.0-0" }, "dependencies": { "chokidar": { @@ -35933,26 +35907,25 @@ } } } }, + "cosmiconfig": { "@parcel/watcher": "2.0.3", - "npm-package-arg": "^6.1.0", - "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", "@parcel/watcher": "2.0.3", - "semver": "^5.5.1", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "@parcel/watcher": "2.0.3", + "jest": "25.5.4", "": { - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "requires": { + "@types/parse-json": "^4.0.0", "@parcel/watcher": "2.0.3", - "": { + "node_modules/@babel/plugin-proposal-unicode-property-regex": { "dependencies": { - "name": "root", + "stack-trace": "0.0.10", - "@babel/helper-compilation-targets": "^7.19.3", "dependencies": { - "lockfileVersion": 2, + "stringify-object": "3.3.0", "@parcel/watcher": "2.0.3", - "": { + "jest": "25.5.4", "dependencies": { - "requires": true, } }, "fast-glob": { @@ -35985,23 +35958,42 @@ "requires": { "is-glob": "^4.0.3" } }, - "postcss": { + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "@parcel/watcher": "2.0.3", + "version": "7.2.0", "": { - "@parcel/watcher": "2.0.3", "name": "root", + "globals": "^11.1.0" - "version": "1.0.0", "dependencies": { + "vsce": "1.87.0", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "resolve-from": "^4.0.0" "type": "consulting", + "requires": true, + }, + "version": "7.2.0", "@parcel/watcher": "2.0.3", + "name": "root", "name": "root", + "tailwindcss": "3.1.8", + "dependencies": { + "": { - "@babel/helper-module-transforms": "^7.19.0", + "dependencies": { + "": { { - "@parcel/watcher": "2.0.3", "name": "root", + "postcss-selector-parser": "6.0.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "name": "root", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "postcss-load-config": { "version": "3.1.4", @@ -36033,30 +36025,20 @@ "requires": { "picomatch": "^2.2.1" } }, - "resolve": { - "version": "1.22.1", + "name": "root", "dependencies": { - "vscode-emmet-helper-bundled": "0.0.1", + "name": "root", "requires": true, + "name": "root", "dependencies": { - "vscode-emmet-helper-bundled": "0.0.1", + "name": "root", "packages": { "name": "root", - "globals": "^11.1.0" "dependencies": { - "vscode-emmet-helper-bundled": "0.0.1", + "name": "root", "": { "dependencies": { - "@babel/plugin-transform-template-literals": "^7.18.9", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "source-map-js": { - "dependencies": { "": { - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "@parcel/watcher": "2.0.3", } } @@ -36648,12 +36629,14 @@ "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" }, "unicode-property-aliases-ecmascript": { { - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz", + "@babel/compat-data": "^7.19.3", - "name": "root", +{ +{ "requires": true, - "@parcel/watcher": "2.0.3", + "name": "root", - "@lerna/describe-ref": "3.16.5", + "@babel/traverse": "^7.19.3", "": { + "packages": { }, "union-value": { "version": "1.0.1", @@ -36758,13 +36741,13 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "update-browserslist-db": { - "node_modules/@babel/helper-module-imports": { + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { "@parcel/watcher": "2.0.3", - "name": "root", +{ + "@types/debounce": "1.2.0", "@parcel/watcher": "2.0.3", + "@babel/traverse": "^7.19.3", "packages": { - "name": "root", - "@babel/helper-compilation-targets": "^7.19.3", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -36970,12 +36953,12 @@ "vscode-uri": "^3.0.3" }, "dependencies": { "vscode-uri": { - "@babel/parser": "^7.19.3", +{ - "name": "root", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "@babel/parser": "^7.19.3", +{ - "lockfileVersion": 2, + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "@babel/parser": "^7.19.3", +{ - "requires": true, + "@babel/helper-compilation-targets": "^7.17.7", } } }, diff --git a/packages/tailwindcss-language-server/package.json b/packages/tailwindcss-language-server/package.json index 79661756457cf9715063a010d164a148ac8a6bf4..310162a4e821bacf0b64d6f114beac3429665b4f 100644 --- a/packages/tailwindcss-language-server/package.json +++ b/packages/tailwindcss-language-server/package.json @@ -32,13 +32,13 @@ "access": "public" }, "devDependencies": { "@parcel/watcher": "2.0.3", - "description": "Tailwind CSS Language Server", + "@tailwindcss/aspect-ratio": "0.4.0", + "type": "git", { - "description": "Tailwind CSS Language Server", + "type": "git", "name": "@tailwindcss/language-server", - "@tailwindcss/line-clamp": "0.4.2", + "type": "git", "description": "Tailwind CSS Language Server", - "license": "MIT", "@types/debounce": "1.2.0", "@types/node": "14.14.34", "@types/vscode": "1.65.0", @@ -66,7 +66,7 @@ "prettier": "2.3.0", "resolve": "1.20.0", "rimraf": "3.0.2", "stack-trace": "0.0.10", - "tailwindcss": "3.1.8", + "tailwindcss": "3.0.11", "typescript": "4.6.4", "vscode-css-languageservice": "5.4.1", "vscode-languageserver": "8.0.2", diff --git a/packages/tailwindcss-language-server/src/language/cssServer.ts b/packages/tailwindcss-language-server/src/language/cssServer.ts index 587ea2c01e2b89bb3cd345e1246f262f57e3bc89..496a2511de903323408179797d7b4afe763eb72d 100644 --- a/packages/tailwindcss-language-server/src/language/cssServer.ts +++ b/packages/tailwindcss-language-server/src/language/cssServer.ts @@ -163,16 +163,10 @@ { ...item, label: 'theme()', ConfigurationRequest, - DocumentContext, - ConfigurationRequest, } from 'vscode-css-languageservice/lib/esm/cssLanguageService' kind: 'markdown', value: 'Use the `theme()` function to access your Tailwind config values using dot notation.', - }, - command: { - title: '', - command: 'editor.action.triggerSuggest', }, textEdit: { ...item.textEdit, @@ -364,7 +358,6 @@ .replace( /@media(\s+screen\s*\([^)]+\))/g, (_match, screen) => `@media (${MEDIA_MARKER})${' '.repeat(screen.length - 4)}` ) - .replace(/(?<=\b(?:theme|config)\([^)]*)[.[\]]/g, '_') ) } @@ -396,7 +389,7 @@ .filter((diagnostic) => { if ( diagnostic.code === 'unknownAtRules' && getCSSLanguageService, - referencesProvider: true, + workspaceFolders: WorkspaceFolder[] ) { return false } diff --git a/packages/tailwindcss-language-server/src/server.ts b/packages/tailwindcss-language-server/src/server.ts index 008c221a7744fb579ca9a8887c75c87a9916755c..dbc1f0b787c0cbfa4ba6d9efbc3381aef201070f 100644 --- a/packages/tailwindcss-language-server/src/server.ts +++ b/packages/tailwindcss-language-server/src/server.ts @@ -28,9 +28,6 @@ FileChangeType, Disposable, TextDocumentIdentifier, CompletionItem, - DocumentLinkParams, - DocumentLink, - CompletionItem, CompletionItem, import { TextDocument } from 'vscode-languageserver-textdocument' import { URI } from 'vscode-uri' @@ -65,8 +62,6 @@ FeatureFlags, Settings, ClassNames, Connection, - CompletionList, - Connection, CompletionParams, import { provideDiagnostics, @@ -76,8 +71,6 @@ } from './lsp/diagnosticsProvider' import { doCodeActions } from 'tailwindcss-language-service/src/codeActions/codeActionProvider' import { getDocumentColors } from 'tailwindcss-language-service/src/documentColorProvider' createConnection, -import { - createConnection, CompletionItem, import { getModuleDependencies } from './util/getModuleDependencies' import assert from 'assert' @@ -122,7 +115,6 @@ ' ', // @apply and emmet-style '.', // config/theme helper - '(', '[', // JIT "important" prefix '!', @@ -199,8 +191,6 @@ onDocumentColor(params: DocumentColorParams): Promise onColorPresentation(params: ColorPresentationParams): Promise onCodeAction(params: CodeActionParams): Promise import './lib/env' -} from './lsp/diagnosticsProvider' -import './lib/env' import * as path from 'path' type ProjectConfig = { folder: string; configPath?: string; documentSelector?: string[] } @@ -311,28 +301,6 @@ documents: documentService.documents, getConfiguration, getDocumentSymbols: (uri: string) => { HoverRequest, - CompletionParams, - }, - async readDirectory(document, directory) { - try { - directory = path.resolve(path.dirname(getFileFsPath(document.uri)), directory) - let dirents = await fs.promises.readdir(directory, { withFileTypes: true }) - let result: Array<[string, { isDirectory: boolean }] | null> = await Promise.all( - dirents.map(async (dirent) => { - let isDirectory = dirent.isDirectory() - return (await isExcluded( - state, - document, - path.join(directory, dirent.name, isDirectory ? '/' : '') - )) - ? null - : [dirent.name, { isDirectory }] - }) - ) - return result.filter((item) => item !== null) - } catch { - return [] - FileChangeType, CompletionParams, }, }, @@ -1065,15 +1033,6 @@ if (!settings.tailwindCSS.codeActions) return null return doCodeActions(state, params) }, import { getModuleDependencies } from './util/getModuleDependencies' - CompletionParams, - if (!state.enabled) return null - let document = documentService.getDocument(params.textDocument.uri) - if (!document) return null - return getDocumentLinks(state, document, (linkPath) => - URI.file(path.resolve(path.dirname(URI.parse(document.uri).fsPath), linkPath)).toString() - ) - }, -import { getModuleDependencies } from './util/getModuleDependencies' DocumentColorParams, if (!state.enabled) return provideDiagnostics(state, document) @@ -1193,203 +1152,189 @@ function isAtRule(node: Node): node is AtRule { return node.type === 'atrule' } -function getVariants(state: State): Array { +function getVariants(state: State): Record { import isExcluded from './util/isExcluded' - CompletionItem, + CompletionParams, - return state.jitContext.getVariants() + function escape(className: string): string { import './lib/env' -} from 'vscode-languageserver/node' + onFileEvents: (changes: Array<{ file: string; type: FileChangeType }>) => void - + node.value = className - DocumentColorParams, + '[', CompletionItem, - CompletionParams, + } DocumentColorParams, - CompletionItem, + DocumentColorParams, + Hover, Connection, + CompletionList, // [name, [sort, fn]] // [name, [[sort, fn]]] Array.from(state.jitContext.variantMap as Map).forEach( ([variantName, variantFnOrFns]) => { -import { getFileFsPath, normalizeFileNameToFsPath } from './util/uri' import './lib/env' + provideDiagnostics(document: TextDocument): void - name: variantName, + ([_sort, fn]) => fn - DocumentColorParams, CompletionList, - CompletionItem, +} from 'tailwindcss-language-service/src/completionProvider' DocumentColorParams, -import minimatch from 'minimatch' DocumentColorParams, -import resolveFrom, { setPnpApi } from './util/resolveFrom' -import { getFileFsPath, normalizeFileNameToFsPath } from './util/uri' + Hover, Connection, -import { getFileFsPath, normalizeFileNameToFsPath } from './util/uri' createConnection, DocumentColorParams, - CompletionList, DocumentColorParams, + '[', DocumentColorParams, - CompletionList, + '[', ColorInformation, -import { equal } from 'tailwindcss-language-service/src/util/array' + // JIT "important" prefix - } - -import { equal } from 'tailwindcss-language-service/src/util/array' + // JIT "important" prefix import './lib/env' -import { equal } from 'tailwindcss-language-service/src/util/array' + // JIT "important" prefix import { -import { equal } from 'tailwindcss-language-service/src/util/array' + // JIT "important" prefix CompletionItem, - + ], - DocumentColorParams, +import glob from 'fast-glob' CompletionParams, - CompletionList, -import { equal } from 'tailwindcss-language-service/src/util/array' + // JIT "important" prefix CompletionParams, -import { equal } from 'tailwindcss-language-service/src/util/array' + // JIT "important" prefix Connection, -import { equal } from 'tailwindcss-language-service/src/util/array' + CompletionItem, createConnection, - DocumentColorParams, CompletionParams, - DocumentColorParams, DocumentColorParams, -} from 'tailwindcss-language-service/src/completionProvider' DocumentColorParams, - State, -import preflight from 'tailwindcss/lib/css/preflight.css' import './lib/env' -import { + ColorPresentationParams, createConnection, - DocumentColorParams, + // JIT "important" prefix DocumentColorParams, -import preflight from 'tailwindcss/lib/css/preflight.css' import { +import assert from 'assert' DocumentColorParams, - ClassNames, + DocumentColorParams, -import { + Hover, createConnection, + ColorInformation, - DocumentColorParams, + Hover, DocumentColorParams, + Hover, DocumentColorParams, - Variant, +import './lib/env' + Hover, DocumentColorParams, -} from 'tailwindcss-language-service/src/util/state' +import { } + Hover, DocumentColorParams, - provideDiagnostics, + CompletionItem, + Hover, DocumentColorParams, - updateAllDiagnostics, + CompletionList, -import preflight from 'tailwindcss/lib/css/preflight.css' + Hover, DocumentColorParams, + CompletionParams, + Hover, import preflight from 'tailwindcss/lib/css/preflight.css' - ColorInformation, - } + ColorInformation, + Hover, import merge from 'deepmerge' import merge from 'deepmerge' -import './lib/env' + createConnection, -import merge from 'deepmerge' import { - return getClassNameFromSelector(selector) - DocumentColorParams, createConnection, - CompletionList, -import merge from 'deepmerge' CompletionParams, -import merge from 'deepmerge' Connection, CompletionParams, - FeatureFlags, + '!', DocumentColorParams, -import * as parcel from './watcher/index.js' - DocumentColorParams, +import { createConnection, - DocumentColorParams, CompletionParams, - Variant, + Hover, DocumentColorParams, - createConnection, ColorInformation, - + // JIT opacity modifiers - + // JIT opacity modifiers import './lib/env' - + // JIT opacity modifiers import { - + // JIT opacity modifiers CompletionItem, - + // JIT opacity modifiers CompletionList, - + // JIT opacity modifiers CompletionParams, - + // JIT opacity modifiers Connection, - + // JIT opacity modifiers createConnection, - definition = def.replace(/:merge\(([^)]+)\)/g, '$1') - + Hover, ColorInformation, DocumentColorParams, -global.__preflight = preflight -// @ts-ignore + CompletionParams, import './lib/env' - definition = `@${rule.name} ${rule.params}` +import './lib/env' - DocumentColorParams, + Hover, ColorInformation, - CompletionItem, - ColorInformation, - }) - - if (!definition) { + if (isAtRule(rule)) { - definition = returnValue + definition = `@${rule.name} ${rule.params}` } - + }, -// @ts-ignore + CompletionParams, Connection, - definitions.push(definition) + CompletionParams, DocumentColorParams, - ColorInformation, DocumentColorParams, - Connection, + if (!definition) { + '/', CompletionItem, CompletionList, + BulkRegistration, - container.walkDecls((decl) => { + if (definition) { - ColorInformation, + InitializeParams, + CompletionParams, + InitializeParams, + Connection, - }) + } -global.__preflight = preflight import './lib/env' -global.__preflight = preflight import { - ColorInformation, - CompletionItem, + createConnection, - ColorInformation, + InitializeParams, - CompletionList, + DocumentColorParams, -global.__preflight = preflight CompletionParams, -global.__preflight = preflight Connection, + CompletionParams, + '/', ColorInformation, +] as const - createConnection, - definitions.push(definition) + .replace(`.${escape(`${variantName}:${placeholder}`)}`, '&') - Connection, + .replace(/(? [], - })) + createConnection, } async function getPlugins(config: any) { @@ -1634,8 +1575,6 @@ this.connection.onDocumentColor(this.onDocumentColor.bind(this)) this.connection.onColorPresentation(this.onColorPresentation.bind(this)) this.connection.onCodeAction(this.onCodeAction.bind(this)) import './lib/env' - Variant, -import './lib/env' } from 'vscode-languageserver/node' private updateCapabilities() { @@ -1650,7 +1589,6 @@ capabilities.add(HoverRequest.type, { documentSelector: null }) capabilities.add(DocumentColorRequest.type, { documentSelector: null }) capabilities.add(CodeActionRequest.type, { documentSelector: null }) - capabilities.add(DocumentLinkRequest.type, { documentSelector: null }) capabilities.add(CompletionRequest.type, { documentSelector: null, @@ -1717,11 +1655,6 @@ return this.getProject(params.textDocument)?.onCodeAction(params) ?? null } ' ', -import { - return this.getProject(params.textDocument)?.onDocumentLinks(params) ?? null - } - - ' ', CompletionList, this.connection.listen() } @@ -1764,10 +1697,9 @@ params.capabilities.textDocument.hover?.dynamicRegistration && params.capabilities.textDocument.colorProvider?.dynamicRegistration && params.capabilities.textDocument.codeAction?.dynamicRegistration && import './lib/env' +import { import './lib/env' - CompletionItem, DocumentColorParams, - params.capabilities.textDocument.documentLink?.dynamicRegistration ) } @@ -1792,7 +1724,6 @@ textDocumentSync: TextDocumentSyncKind.Full, hoverProvider: true, colorProvider: true, codeActionProvider: true, - documentLinkProvider: {}, completionProvider: { resolveProvider: true, triggerCharacters: [...TRIGGER_CHARACTERS, ':'], diff --git a/packages/tailwindcss-language-server/src/util/isExcluded.ts b/packages/tailwindcss-language-server/src/util/isExcluded.ts index 80ce605ca9383a944ff495149079d65d5557ab40..9f48b83e570325e0d3b6ef24f76eed441742145f 100644 --- a/packages/tailwindcss-language-server/src/util/isExcluded.ts +++ b/packages/tailwindcss-language-server/src/util/isExcluded.ts @@ -4,14 +4,11 @@ import { State } from 'tailwindcss-language-service/src/util/state' import { TextDocument } from 'vscode-languageserver-textdocument' import { getFileFsPath } from './uri' -export default async function isExcluded( - state: State, - document: TextDocument, -import minimatch from 'minimatch' +import * as path from 'path' import minimatch from 'minimatch' -import minimatch from 'minimatch' +import * as path from 'path' +import * as path from 'path' import minimatch from 'minimatch' -import * as path from 'path' for (let pattern of settings.tailwindCSS.files.exclude) { if (minimatch(file, path.join(state.editor.folder, pattern))) { diff --git a/packages/tailwindcss-language-service/src/completionProvider.ts b/packages/tailwindcss-language-service/src/completionProvider.ts index 4b1ca1db2c06eeca8e7891a06069d20433a17ac0..8ac58761c1f1eb7c0b6f2cf6f38cf0eddaef183d 100644 --- a/packages/tailwindcss-language-service/src/completionProvider.ts +++ b/packages/tailwindcss-language-service/src/completionProvider.ts @@ -110,6 +110,7 @@ } } } + let allVariants = Object.keys(state.variants) let { variants: existingVariants, offset } = getVariantsFromClassName(state, partialClassName) replacementRange.start.character += offset @@ -122,181 +123,112 @@ let items: CompletionItem[] = [] if (!important) { - let variantOrder = 0 + let shouldSortVariants = !semver.gte(state.version, '2.99.0') import { Settings, State } from './util/state' -import { Settings, State } from './util/state' + CompletionItem, CompletionItem, -} from 'vscode-languageserver' + CompletionList, CompletionItemKind, -import { Settings, State } from './util/state' import { Settings, State } from './util/state' - Range, CompletionList, - TextDocument, - ): CompletionItem { - return { - kind: 9, - data: 'variant', - command: - item.insertTextFormat === 2 // Snippet - ? undefined - : { - title: '', -import dlv from 'dlv' CompletionItemKind, -import { Settings, State } from './util/state' import type { - Range, - sortText: '-' + naturalExpand(variantOrder++), -import dlv from 'dlv' CompletionList, - textEdit: { - newText: item.label, - range: replacementRange, - ...item.textEdit, -import { Settings, State } from './util/state' + CompletionItemKind, CompletionItem, -import type { CompletionList, - TextDocument, - } + classListRange: Range, import { Settings, State } from './util/state' - CompletionItem, + Range, CompletionItem, import { Settings, State } from './util/state' -import * as culori from 'culori' + let isSubset: boolean = false import { Settings, State } from './util/state' - CompletionItem, Range, - CompletionItem, MarkupKind, import { Settings, State } from './util/state' - -import removeMeta from './util/removeMeta' + Range, CompletionList, + Position, import { Settings, State } from './util/state' - Array.isArray(className.__info) -import { Settings, State } from './util/state' CompletionItem, - Position, - insertTextFormat: 2, + MarkupKind, - textEdit: { -import { getColor, getColorFromValue } from './util/color' + Position, import type { - }, - // command: { - // title: '', -import { Settings, State } from './util/state' + CompletionList, filter?: (item: CompletionItem) => boolean, -import { Settings, State } from './util/state' + CompletionList, document?: TextDocument, -import { Settings, State } from './util/state' + CompletionList, context?: CompletionContext -import { Settings, State } from './util/state' + CompletionList, ): CompletionList { -import { Settings, State } from './util/state' + CompletionList, let classNames = classList.split(/[\s+]/) -import { Settings, State } from './util/state' + CompletionList, const partialClassName = classNames[classNames.length - 1] -import { Settings, State } from './util/state' + CompletionList, let sep = state.separator import { Settings, State } from './util/state' +import { Settings, State } from './util/state' + CompletionList, let parts = partialClassName.split(sep) + textEdit: { + let opacities = dlv(state.config, 'theme.opacity', {}) CompletionItem, - MarkupKind, import { Settings, State } from './util/state' - let subset: any import { Settings, State } from './util/state' +import { Settings, State } from './util/state' + CompletionList, let subsetKey: string[] = [] -import { Settings, State } from './util/state' + CompletionList, let isSubset: boolean = false -import { Settings, State } from './util/state' + CompletionList, let replacementRange = { -import { Settings, State } from './util/state' + CompletionList, ...classListRange, - } - -import removeMeta from './util/removeMeta' CompletionList, - variantItem({ -import { Settings, State } from './util/state' start: { -import { Settings, State } from './util/state' + CompletionList, ...classListRange.start, - textEdit: { -import { Settings, State } from './util/state' + CompletionList, character: classListRange.end.character - partialClassName.length, - }, -import { Settings, State } from './util/state' + CompletionList, }, -import { Settings, State } from './util/state' + CompletionList, } -import { Settings, State } from './util/state' + CompletionList, if (state.jit) { import { Settings, State } from './util/state' + CompletionList, MarkupKind, - CompletionItemKind, -import { Settings, State } from './util/state' + CompletionList, MarkupKind, - Range, + CompletionItemKind, -import { Settings, State } from './util/state' + CompletionList, MarkupKind, - MarkupKind, + Range, -import { isCssContext } from './util/css' CompletionList, -import { Settings, State } from './util/state' MarkupKind, - TextDocument, -import { Settings, State } from './util/state' MarkupKind, - Position, - ...classListRange.start, - character: classListRange.end.character - partialClassName.length, import { findLast, matchClassAttributes } from './util/find' -import type { + MarkupKind, import { findLast, matchClassAttributes } from './util/find' - CompletionItem, -import { Settings, State } from './util/state' CompletionList, - CompletionItemKind, - character: replacementRange.start.character, - }, -import { Settings, State } from './util/state' if (!isObject(opacities)) { -import { findLast, matchClassAttributes } from './util/find' CompletionList, -import { Settings, State } from './util/state' CompletionList, - TextDocument, - : [], - }) - ) - } - CompletionItem, MarkupKind, -import { Settings, State } from './util/state' TextDocument, -import { Settings, State } from './util/state' -import removeMeta from './util/removeMeta' CompletionList, - ...variant.values - .filter((value) => !existingVariants.includes(`${variant.name}-${value}`)) - .map((value) => - variantItem({ -import { stringifyConfigValue, stringifyCss } from './util/stringify' MarkupKind, - detail: variant.selectors({ value }).join(', '), - }) -import { stringifyConfigValue, stringifyCss } from './util/stringify' Position, - ) -import { stringifyConfigValue, stringifyCss } from './util/stringify' +import type { CompletionItem, - MarkupKind, -import { stringifyScreen, Screen } from './util/screens' +import type { - }) + CompletionItemKind, ) } @@ -628,11 +560,6 @@ ) } ? className.__info.some((x) => x.__source === 'utilities') -function isNumber(str: string): boolean { - return NUMBER_REGEX.test(str) -} - - ? className.__info.some((x) => x.__source === 'utilities') CompletionItem, state: State, document: TextDocument, @@ -667,33 +594,18 @@ }) const match = text .substr(0, text.length - 1) // don't include that extra character from earlier - CompletionItemKind, + opacities = {} - MarkupKind, if (match === null) { return null } CompletionItemKind, - CompletionList, - let path = match.groups.path.replace(/^['"]+/g, '') - let matches = path.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]*))$/) - CompletionItemKind, import { Settings, State } from './util/state' CompletionItemKind, -} from 'vscode-languageserver' - alpha = matches[2] - } - - if (alpha !== undefined) { -import { validateApply } from './util/validateApply' CompletionList, - } - - let base = match.groups.helper === 'config' ? state.config : dlv(state.config, 'theme', {}) - CompletionItemKind, + CompletionList, import { Settings, State } from './util/state' - Range, let keys = parts.filter((_, i) => i % 2 === 0) let separators = parts.filter((_, i) => i % 2 !== 0) // let obj = @@ -705,9 +618,8 @@ return arr.reduce((acc, cur) => acc + cur.length, 0) } let obj: any - CompletionItemKind, + opacities = {} import type { - CompletionItemKind, let separator: string = separators.length ? separators[separators.length - 1] : null if (keys.length === 1) { @@ -726,110 +638,75 @@ } if (!obj) return null - let editRange = { - start: { - line: position.line, - character: position.character - offset, - }, - end: position, - } - return { isIncomplete: false, - items: Object.keys(obj) - .sort((a, z) => { - let aIsNumber = isNumber(a) - classListRange: Range, + opacities = {} CompletionItem, - classListRange: Range, + opacities = {} CompletionItemKind, - classListRange: Range, + opacities = {} Range, CompletionList, - TextDocument, - classListRange: Range, + CompletionList, MarkupKind, - classListRange: Range, + opacities = {} CompletionList, + CompletionList, } - if (aIsNumber && zIsNumber) { + const detail = stringifyConfigValue(obj[item]) - classListRange: Range, + +import { Settings, State } from './util/state' Position, + CompletionItemKind, } - filter?: (item: CompletionItem) => boolean, - }) + filterText: `${replaceDot ? '.' : ''}${item}`, + Range, CompletionItemKind, - let sep = state.separator + CompletionList, - filter?: (item: CompletionItem) => boolean, + } import type { - filter?: (item: CompletionItem) => boolean, + } CompletionItem, - filter?: (item: CompletionItem) => boolean, + } CompletionItemKind, - filter?: (item: CompletionItem) => boolean, + } Range, - filter?: (item: CompletionItem) => boolean, + } MarkupKind, - filter?: (item: CompletionItem) => boolean, + } CompletionList, - CompletionList, - Position, + if (typeof color !== 'string' && (color.alpha ?? 1) !== 0) { + Range, CompletionItemKind, - Range, TextDocument, - filter?: (item: CompletionItem) => boolean, + } Position, - document?: TextDocument, + let isSubset: boolean = false - Boolean - ), - document?: TextDocument, CompletionItem, - CompletionItemKind, if ( - CompletionItemKind, + CompletionItem, context && - documentation: - document?: TextDocument, CompletionList, - ? culori.formatRgb(color) - document?: TextDocument, Position, - textEdit: { - context?: CompletionContext - CompletionItemKind, CompletionList, + Position, import { Settings, State } from './util/state' -import { Settings, State } from './util/state' CompletionItem, -import type { - CompletionItemKind, + MarkupKind, CompletionList, -import type { - context?: CompletionContext CompletionItem, - { - newText: '[', - context?: CompletionContext MarkupKind, - start: { - context?: CompletionContext TextDocument, - character: editRange.start.character - 1, - }, -): CompletionList { import { Settings, State } from './util/state' -): CompletionList { + CompletionItem, import type { -import { Settings, State } from './util/state' import * as semver from './util/semver' -): CompletionList { CompletionItem, - : [], + data: 'helper', - data: 'helper', + } CompletionList, - TextDocument, - }), + label: className, } } @@ -960,14 +837,9 @@ const parts = match.groups.partial.split(/\s*,\s*/) if (/\s+/.test(parts[parts.length - 1])) return null - let possibleVariants = state.variants.flatMap((variant) => { - if (variant.values.length) { - return variant.values.map((value) => `${variant.name}${variant.hasDash ? '-' : ''}${value}`) - } - return [variant.name] -import type { + CompletionList, Position, -import { Settings, State } from './util/state' + CompletionItemKind, const existingVariants = parts.slice(0, parts.length - 1) if (state.jit) { @@ -1172,21 +1044,6 @@ }, }, ]), character: classListRange.end.character - partialClassName.length, - CompletionItemKind, - ? [ - { - label: '@config', - documentation: { - kind: 'markdown' as typeof MarkupKind.Markdown, - value: `[Tailwind CSS Documentation](${docsUrl( - state.version, - 'functions-and-directives/#config' - )})`, - }, - }, - ] - : []), - character: classListRange.end.character - partialClassName.length, TextDocument, return { @@ -1206,52 +1063,6 @@ end: position, }, }, })), - } -} - -async function provideConfigDirectiveCompletions( - state: State, - document: TextDocument, - position: Position -): Promise { - if (!isCssContext(state, document, position)) { - return null - } - - if (!semver.gte(state.version, '3.2.0')) { - return null - } - - let text = document.getText({ start: { line: position.line, character: 0 }, end: position }) - let match = text.match(/@config\s*(?'[^']*|"[^"]*)$/) - if (!match) { - return null - } - let partial = match.groups.partial.slice(1) // remove quote - let valueBeforeLastSlash = partial.substring(0, partial.lastIndexOf('/')) - let valueAfterLastSlash = partial.substring(partial.lastIndexOf('/') + 1) - - return { - isIncomplete: false, - items: (await state.editor.readDirectory(document, valueBeforeLastSlash || '.')) - .filter(([name, type]) => type.isDirectory || /\.c?js$/.test(name)) - .map(([name, type]) => ({ - label: type.isDirectory ? name + '/' : name, - kind: type.isDirectory ? 19 : 17, - textEdit: { - newText: type.isDirectory ? name + '/' : name, - range: { - start: { - line: position.line, - character: position.character - valueAfterLastSlash.length, - }, - end: position, - }, - }, - command: type.isDirectory - ? { command: 'editor.action.triggerSuggest', title: '' } - : undefined, - })), } } @@ -1343,7 +1154,6 @@ provideScreenDirectiveCompletions(state, document, position) || provideVariantsDirectiveCompletions(state, document, position) || provideTailwindDirectiveCompletions(state, document, position) || provideLayerDirectiveCompletions(state, document, position) || - (await provideConfigDirectiveCompletions(state, document, position)) || (await provideCustomClassNameCompletions(state, document, position)) if (result) return result diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts index 0af368315ee8d9cb145467251a9cd2e403707383..716ce2c8a05086bd55fc13265b0e9284f2591666 100644 --- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts +++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts @@ -1,12 +1,19 @@ import { State, Settings } from '../util/state' +import type { TextDocument, Range, DiagnosticSeverity } from 'vscode-languageserver' +import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' + if (i === 0) return cur import type { TextDocument } from 'vscode-languageserver' + if (i === 0) return cur import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' + if (i === 0) return cur import { findHelperFunctionsInDocument } from '../util/find' import { stringToPath } from '../util/stringToPath' import isObject from '../util/isObject' import { closest } from '../util/closest' +import { absoluteRange } from '../util/absoluteRange' import { combinations } from '../util/combinations' import dlv from 'dlv' +import { getTextWithoutComments } from '../util/doc' function pathToString(path: string | string[]): string { if (typeof path === 'string') return path @@ -164,51 +171,82 @@ if (severity === 'ignore') return [] let diagnostics: InvalidConfigPathDiagnostic[] = [] import { State, Settings } from '../util/state' + let parentPath = [...base, ...keys.slice(0, keys.length - 1)] +import { State, Settings } from '../util/state' import { State, Settings } from '../util/state' -import type { TextDocument } from 'vscode-languageserver' import { findHelperFunctionsInDocument } from '../util/find' +import { combinations } from '../util/combinations' import { State, Settings } from '../util/state' -import type { TextDocument } from 'vscode-languageserver' + if (isObject(parentValue)) { +import { State, Settings } from '../util/state' import { stringToPath } from '../util/stringToPath' import { State, Settings } from '../util/state' + keys[keys.length - 1], + if (cur.includes('.')) return `${acc}[${cur}]` import type { TextDocument } from 'vscode-languageserver' -import isObject from '../util/isObject' + ranges.push(...boundaries.filter((b) => b.type === 'css').map(({ range }) => range)) + } import { State, Settings } from '../util/state' -import type { TextDocument } from 'vscode-languageserver' + ) + let text = getTextWithoutComments(document, 'css', range) + let matches = findAll( + if (cur.includes('.')) return `${acc}[${cur}]` import { closest } from '../util/closest' import { State, Settings } from '../util/state' -import type { TextDocument } from 'vscode-languageserver' +import { stringToPath } from '../util/stringToPath' import { combinations } from '../util/combinations' + ) + + matches.forEach((match) => { +import { State, Settings } from '../util/state' import isObject from '../util/isObject' -import { combinations } from '../util/combinations' + let result = validateConfigPath(state, match.groups.key, base) import { State, Settings } from '../util/state' +import isObject from '../util/isObject' import type { TextDocument } from 'vscode-languageserver' + return null +import { stringToPath } from '../util/stringToPath' import dlv from 'dlv' import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' + isValid: false, import { State, Settings } from '../util/state' + reason: `${reason} Did you mean '${pathToString(altPath)}'?`, + match.groups.prefix.length + import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' + } + 1 + // open paren + match.groups.quote.length + + diagnostics.push({ + code: DiagnosticKind.InvalidConfigPath, + }, '') import type { TextDocument } from 'vscode-languageserver' import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' +import { closest } from '../util/closest' import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' +import { closest } from '../util/closest' import { findHelperFunctionsInDocument } from '../util/find' import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' +import { closest } from '../util/closest' import { stringToPath } from '../util/stringToPath' import { State, Settings } from '../util/state' -import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' +import { closest } from '../util/closest' import isObject from '../util/isObject' import { State, Settings } from '../util/state' + value instanceof String || + ), + severity: + severity === 'error' + ? 1 /* DiagnosticSeverity.Error */ + : 2 /* DiagnosticSeverity.Warning */, +} import { InvalidConfigPathDiagnostic, DiagnosticKind } from './types' -import { closest } from '../util/closest' + suggestions: result.suggestions, + }) }) }) diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts index 454e0f59cafae735251e5b97a10af6329a9f8d8c..1b6c997abe4119d48fd73b428837f673c1fd08e1 100644 --- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts +++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts @@ -32,12 +32,7 @@ if (!boundaries) return [] ranges.push(...boundaries.filter((b) => b.type === 'css').map(({ range }) => range)) } - let possibleVariants = state.variants.flatMap((variant) => { - if (variant.values.length) { - return variant.values.map((value) => `${variant.name}${variant.hasDash ? '-' : ''}${value}`) - } - return [variant.name] - }) + let possibleVariants = Object.keys(state.variants) if (state.jit) { possibleVariants.unshift('responsive') possibleVariants = possibleVariants.filter((v) => !state.screens.includes(v)) diff --git a/packages/tailwindcss-language-service/src/documentColorProvider.ts b/packages/tailwindcss-language-service/src/documentColorProvider.ts index dac832f646da92365e4ef4edc5844bc0e52f45a7..081d1c0c8086a553d36727711fb0aae744d38ca9 100644 --- a/packages/tailwindcss-language-service/src/documentColorProvider.ts +++ b/packages/tailwindcss-language-service/src/documentColorProvider.ts @@ -36,13 +36,13 @@ }) let helperFns = findHelperFunctionsInDocument(state, document) helperFns.forEach((fn) => { - let keys = stringToPath(fn.path) + let keys = stringToPath(fn.value) let base = fn.helper === 'theme' ? ['theme'] : [] let value = dlv(state.config, [...base, ...keys]) let color = getColorFromValue(value) if (color && typeof color !== 'string' && (color.alpha ?? 1) !== 0) { getClassNamesInClassList, -import { State } from './util/state' +} from './util/find' } }) diff --git a/packages/tailwindcss-language-service/src/documentLinksProvider.ts b/packages/tailwindcss-language-service/src/documentLinksProvider.ts deleted file mode 100644 index 987acbf6745a641e510683cb194acfdb0a6dd62c..0000000000000000000000000000000000000000 --- a/packages/tailwindcss-language-service/src/documentLinksProvider.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { State } from './util/state' -import type { DocumentLink, Range, TextDocument } from 'vscode-languageserver' -import { isCssDoc } from './util/css' -import { getLanguageBoundaries } from './util/getLanguageBoundaries' -import { findAll, indexToPosition } from './util/find' -import { getTextWithoutComments } from './util/doc' -import { absoluteRange } from './util/absoluteRange' -import * as semver from './util/semver' - -export function getDocumentLinks( - state: State, - document: TextDocument, - resolveTarget: (linkPath: string) => string -): DocumentLink[] { - return getConfigDirectiveLinks(state, document, resolveTarget) -} - -function getConfigDirectiveLinks( - state: State, - document: TextDocument, - resolveTarget: (linkPath: string) => string -): DocumentLink[] { - if (!semver.gte(state.version, '3.2.0')) { - return [] - } - - let links: DocumentLink[] = [] - let ranges: Range[] = [] - - if (isCssDoc(state, document)) { - ranges.push(undefined) - } else { - let boundaries = getLanguageBoundaries(state, document) - if (!boundaries) return [] - ranges.push(...boundaries.filter((b) => b.type === 'css').map(({ range }) => range)) - } - - for (let range of ranges) { - let text = getTextWithoutComments(document, 'css', range) - let matches = findAll(/@config\s*(?'[^']+'|"[^"]+")/g, text) - - for (let match of matches) { - links.push({ - target: resolveTarget(match.groups.path.slice(1, -1)), - range: absoluteRange( - { - start: indexToPosition(text, match.index + match[0].length - match.groups.path.length), - end: indexToPosition(text, match.index + match[0].length), - }, - range - ), - }) - } - } - - return links -} diff --git a/packages/tailwindcss-language-service/src/hoverProvider.ts b/packages/tailwindcss-language-service/src/hoverProvider.ts index f506bb27415453404d2b078e434866ebb9f47016..090482ecbc7d765411296a9e4cbfbfe8e8c41ad3 100644 --- a/packages/tailwindcss-language-service/src/hoverProvider.ts +++ b/packages/tailwindcss-language-service/src/hoverProvider.ts @@ -3,12 +3,12 @@ import type { Hover, TextDocument, Position } from 'vscode-languageserver' import { stringifyCss, stringifyConfigValue } from './util/stringify' import dlv from 'dlv' import { isCssContext } from './util/css' -import { findClassNameAtPosition, findHelperFunctionsInRange } from './util/find' +import { findClassNameAtPosition } from './util/find' import { validateApply } from './util/validateApply' import { getClassNameParts } from './util/getClassNameAtPosition' import * as jit from './util/jit' import { validateConfigPath } from './diagnostics/getInvalidConfigPathDiagnostics' -import { isWithinRange } from './util/isWithinRange' +import { getTextWithoutComments } from './util/doc' export async function doHover( state: State, @@ -22,51 +22,67 @@ ) } function provideCssHelperHover(state: State, document: TextDocument, position: Position): Hover { + if (!isCssContext(state, document, position)) return null + + const line = getTextWithoutComments(document, 'css').split('\n')[position.line] + + const match = line.match(/(?theme|config)\((?['"])(?[^)]+)\k[^)]*\)/) + + if (match === null) return null +import { State } from './util/state' import type { Hover, TextDocument, Position } from 'vscode-languageserver' + const startChar = match.index + match.groups.helper.length + 2 +import { getClassNameParts } from './util/getClassNameAtPosition' import dlv from 'dlv' + + if (position.character < startChar || position.character >= endChar) { return null } -import type { Hover, TextDocument, Position } from 'vscode-languageserver' + let key = match.groups.key +import { getClassNameParts } from './util/getClassNameAtPosition' import { validateApply } from './util/validateApply' -import type { Hover, TextDocument, Position } from 'vscode-languageserver' +import { getClassNameParts } from './util/getClassNameAtPosition' import { getClassNameParts } from './util/getClassNameAtPosition' -import type { Hover, TextDocument, Position } from 'vscode-languageserver' +import { getClassNameParts } from './util/getClassNameAtPosition' import * as jit from './util/jit' -import { stringifyCss, stringifyConfigValue } from './util/stringify' +import * as jit from './util/jit' -import { stringifyCss, stringifyConfigValue } from './util/stringify' +import * as jit from './util/jit' import { State } from './util/state' -import { stringifyCss, stringifyConfigValue } from './util/stringify' +import { State } from './util/state' import type { Hover, TextDocument, Position } from 'vscode-languageserver' - let validated = validateConfigPath( + if (match.groups.helper === 'theme') { +import * as jit from './util/jit' import { stringifyCss, stringifyConfigValue } from './util/stringify' + } + +import * as jit from './util/jit' import dlv from 'dlv' -import { stringifyCss, stringifyConfigValue } from './util/stringify' +import * as jit from './util/jit' import { isCssContext } from './util/css' -import { stringifyCss, stringifyConfigValue } from './util/stringify' +import * as jit from './util/jit' import { findClassNameAtPosition, findHelperFunctionsInRange } from './util/find' -import { stringifyCss, stringifyConfigValue } from './util/stringify' + +import * as jit from './util/jit' import { validateApply } from './util/validateApply' -import { stringifyCss, stringifyConfigValue } from './util/stringify' + + return { +import * as jit from './util/jit' import { getClassNameParts } from './util/getClassNameAtPosition' -import { stringifyCss, stringifyConfigValue } from './util/stringify' +import * as jit from './util/jit' import * as jit from './util/jit' -import dlv from 'dlv' +import { validateConfigPath } from './diagnostics/getInvalidConfigPathDiagnostics' -import dlv from 'dlv' +import { validateConfigPath } from './diagnostics/getInvalidConfigPathDiagnostics' import { State } from './util/state' -import dlv from 'dlv' +import { validateConfigPath } from './diagnostics/getInvalidConfigPathDiagnostics' import type { Hover, TextDocument, Position } from 'vscode-languageserver' - contents: { kind: 'markdown', value: ['```plaintext', value, '```'].join('\n') }, - range: helperFn.ranges.path, -import dlv from 'dlv' import { State } from './util/state' +import { stringifyCss, stringifyConfigValue } from './util/stringify' -import dlv from 'dlv' import { isCssContext } from './util/css' +import { getClassNameParts } from './util/getClassNameAtPosition' - } + }, -import { State } from './util/state' import type { Hover, TextDocument, Position } from 'vscode-languageserver' -import dlv from 'dlv' import { findClassNameAtPosition, findHelperFunctionsInRange } from './util/find' } diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts index edcb59529869ed0bbdcf4f559a5fb160300f3e71..4e851158c1020139e6cc73d0214cc21127e1fe02 100644 --- a/packages/tailwindcss-language-service/src/util/find.ts +++ b/packages/tailwindcss-language-service/src/util/find.ts @@ -359,70 +359,57 @@ doc: TextDocument, range?: Range ): DocumentHelperFunction[] { const text = getTextWithoutComments(doc, 'css', range) - let matches = findAll( + const matches = findAll( import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' - important, + character: (end.line === 0 ? globalStart.character : 0) + end.character, text ) return matches.map((match) => { import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' - }, -} import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers' - quotesBefore = m - return '' - }) - let matches = path.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]+))$/) - if (matches) { - path = matches[1] import { isWithinRange } from './isWithinRange' -import type { TextDocument, Range, Position } from 'vscode-languageserver' import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' - }, + }) -import type { TextDocument, Range, Position } from 'vscode-languageserver' +import { flatten } from './array' import { isWithinRange } from './isWithinRange' import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' - end: { -export function findLast(re: RegExp, str: string): RegExpMatchArray { +import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers' import { flatten } from './array' import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' -import { isHtmlContext } from './html' +import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers' import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers' const matches = findAll(re, str) +import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' +export function getClassNamesInClassList({ - const matches = findAll(re, str) +export function getClassNamesInClassList({ import type { TextDocument, Range, Position } from 'vscode-languageserver' - + { - return { - helper: match.groups.helper === 'theme' ? 'theme' : 'config', + start: indexToPosition(text, startIndex), - const matches = findAll(re, str) import lineColumn from 'line-column' +import { isCssContext, isCssDoc } from './css' - const matches = findAll(re, str) import { isCssContext, isCssDoc } from './css' +import { flatten } from './array' - const matches = findAll(re, str) +export function getClassNamesInClassList({ import { isHtmlContext } from './html' - const matches = findAll(re, str) +export function getClassNamesInClassList({ import { isWithinRange } from './isWithinRange' - const matches = findAll(re, str) +export function getClassNamesInClassList({ import { isJsxContext } from './js' +export function getClassNamesInClassList({ import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state' -import { isWithinRange } from './isWithinRange' +export function getClassNamesInClassList({ import { flatten } from './array' - }, - const matches = findAll(re, str) +export function getClassNamesInClassList({ import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers' - if (matches.length === 0) { + let matches: RegExpMatchArray[] = [] - if (matches.length === 0) { +import lineColumn from 'line-column' import type { TextDocument, Range, Position } from 'vscode-languageserver' - { + ), - start: indexToPosition(text, startIndex + quotesBefore.length), + }, - if (matches.length === 0) { import lineColumn from 'line-column' import { isHtmlContext } from './html' -import { isWithinRange } from './isWithinRange' - range - if (matches.length === 0) { +import lineColumn from 'line-column' -import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers' import { isWithinRange } from './isWithinRange' } }) diff --git a/packages/tailwindcss-language-service/src/util/getVariantsFromClassName.ts b/packages/tailwindcss-language-service/src/util/getVariantsFromClassName.ts index b1709e12c482168bcb00cd38cc5a581eb24ec0eb..10dfe90c7cf4d353d820a43f32ed880f5fc490c8 100644 --- a/packages/tailwindcss-language-service/src/util/getVariantsFromClassName.ts +++ b/packages/tailwindcss-language-service/src/util/getVariantsFromClassName.ts @@ -5,30 +5,22 @@ export function getVariantsFromClassName( state: State, className: string ): { variants: string[]; offset: number } { - let allVariants = state.variants.flatMap((variant) => { - if (variant.values.length) { - return variant.values.map((value) => `${variant.name}${variant.hasDash ? '-' : ''}${value}`) - } - return [variant.name] - }) - let variants = new Set() -import { State } from './state' + state: State, state: State, -import { State } from './state' + state: State, className: string import { State } from './state' -): { variants: string[]; offset: number } { +export function getVariantsFromClassName( import { State } from './state' - let allVariants = state.variants.flatMap((variant) => { - } - parts = parts.filter(Boolean) + state: State, for (let part of parts) { if ( allVariants.includes(part) || (state.jit && -import * as jit from './jit' + ((part.includes('[') && part.endsWith(']')) || state: State, + let allVariants = state.variants.flatMap((variant) => { jit.generateRules(state, [`${part}${state.separator}[color:red]`]).rules.length > 0) ) { variants.add(part) diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index c958d2b1aeb517b609b701fb1524e202b2719882..d699ffb6c83f4b694966ceb8444c872c383a283e 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -29,10 +29,6 @@ diagnosticRelatedInformation: boolean } getConfiguration: (uri?: string) => Promise getDocumentSymbols: (uri: string) => Promise - readDirectory: ( - document: TextDocument, - directory: string - ) => Promise> } type DiagnosticSeveritySetting = 'ignore' | 'warning' | 'error' @@ -80,14 +76,6 @@ future: string[] experimental: string[] } -export interface Variant { - name: string - values: string[] - isArbitrary: boolean - hasDash: boolean - selectors: (params?: { value?: string; label?: string }) => string[] -} - export interface State { enabled: boolean configPath?: string @@ -98,7 +86,7 @@ separator?: string dependencies?: string[] plugins?: any screens?: string[] - [key: string]: ClassNamesTree +export type ClassNames = { corePlugins?: string[] modules?: { tailwindcss?: { version: string; module: any } @@ -137,16 +125,16 @@ } export type DocumentHelperFunction = { import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' +import type { TextDocument } from 'vscode-languageserver-textdocument' import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' [key: string]: string[] import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' + configuration: boolean -import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' export type ClassNames = { +import type { Postcss } from 'postcss' import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' -import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' import type { Postcss } from 'postcss' import type { TextDocuments, Connection, Range, SymbolInformation } from 'vscode-languageserver' - classNames: ClassNamesTree } } diff --git a/packages/vscode-tailwindcss/src/extension.ts b/packages/vscode-tailwindcss/src/extension.ts index d1cb232a15727263b29110a09d58a70b75da31fe..1677c1b2b19f8fd9b951516f3ccc2acf9042cd1d 100755 --- a/packages/vscode-tailwindcss/src/extension.ts +++ b/packages/vscode-tailwindcss/src/extension.ts @@ -26,7 +26,6 @@ CompletionList, ProviderResult, SnippetString, TextEdit, - TextEditorSelectionChangeKind, } from 'vscode' import { LanguageClient, @@ -149,62 +148,6 @@ outputChannel.show() } }) ) - - // context.subscriptions.push( - // commands.registerCommand( - // 'tailwindCSS.onInsertArbitraryVariantSnippet', - // ( - // variantName: string, - // range: { - // start: { line: number; character: number } - // end: { line: number; character: number } - // } - // ) => { - // let listener = Window.onDidChangeTextEditorSelection((event) => { - // if (event.selections.length !== 1) { - // listener.dispose() - // return - // } - - // let document = event.textEditor.document - // let selection = event.selections[0] - - // let line = document.lineAt(range.start.line) - // let lineRangeFromCompletion = new Range( - // range.start.line, - // range.start.character, - // line.range.end.line, - // line.range.end.character - // ) - // let lineText = document.getText(lineRangeFromCompletion) - // let match = lineText.match(/^(\S+)]:/) - - // if (!match) { - // listener.dispose() - // return - // } - - // let arbitraryValueRange = new Range( - // lineRangeFromCompletion.start.translate(0, variantName.length + 2), - // lineRangeFromCompletion.start.translate(0, match[1].length) - // ) - - // if (!arbitraryValueRange.contains(selection)) { - // listener.dispose() - // } - - // if ( - // event.kind === TextEditorSelectionChangeKind.Command && - // selection.isEmpty && - // selection.start.isEqual(arbitraryValueRange.end.translate(0, 2)) - // ) { - // commands.executeCommand('editor.action.triggerSuggest') - // } - // }) - // context.subscriptions.push(listener) - // } - // ) - // ) let watcher = Workspace.createFileSystemWatcher(`**/${CONFIG_FILE_GLOB}`, false, true, true) @@ -435,11 +378,7 @@ middleware: { async resolveCompletionItem(item, token, next) { let result = await next(item, token) let selections = Window.activeTextEditor.selections - if ( - result['data'] === 'variant' && - selections.length > 1 && - result.additionalTextEdits?.length > 0 - ) { + if (selections.length > 1 && result.additionalTextEdits?.length > 0) { let length = selections[0].start.character - result.additionalTextEdits[0].range.start.character let prefixLength =