this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

initial

alice 359f0dfa

+1152
+36
.gitignore
··· 1 + # dependencies (bun install) 2 + node_modules 3 + 4 + # output 5 + out 6 + dist 7 + *.tgz 8 + 9 + # code coverage 10 + coverage 11 + *.lcov 12 + 13 + # logs 14 + logs 15 + _.log 16 + report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 17 + 18 + # dotenv environment variable files 19 + .env 20 + .env.development.local 21 + .env.test.local 22 + .env.production.local 23 + .env.local 24 + 25 + # caches 26 + .eslintcache 27 + .cache 28 + *.tsbuildinfo 29 + 30 + # IntelliJ based IDEs 31 + .idea 32 + 33 + # Finder (MacOS) folder config 34 + .DS_Store 35 + 36 + .parcel-cache
+15
README.md
··· 1 + # values 2 + 3 + To install dependencies: 4 + 5 + ```bash 6 + bun install 7 + ``` 8 + 9 + To run: 10 + 11 + ```bash 12 + bun run index.ts 13 + ``` 14 + 15 + This project was created using `bun init` in bun v1.2.8. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
+430
bun.lock
··· 1 + { 2 + "lockfileVersion": 1, 3 + "workspaces": { 4 + "": { 5 + "name": "values", 6 + "dependencies": { 7 + "parcel": "^2.14.4", 8 + }, 9 + "devDependencies": { 10 + "@types/bun": "latest", 11 + }, 12 + "peerDependencies": { 13 + "typescript": "^5", 14 + }, 15 + }, 16 + }, 17 + "packages": { 18 + "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], 19 + 20 + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], 21 + 22 + "@lezer/common": ["@lezer/common@1.2.3", "", {}, "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA=="], 23 + 24 + "@lezer/lr": ["@lezer/lr@1.4.2", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA=="], 25 + 26 + "@lmdb/lmdb-darwin-arm64": ["@lmdb/lmdb-darwin-arm64@2.8.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw=="], 27 + 28 + "@lmdb/lmdb-darwin-x64": ["@lmdb/lmdb-darwin-x64@2.8.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug=="], 29 + 30 + "@lmdb/lmdb-linux-arm": ["@lmdb/lmdb-linux-arm@2.8.5", "", { "os": "linux", "cpu": "arm" }, "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg=="], 31 + 32 + "@lmdb/lmdb-linux-arm64": ["@lmdb/lmdb-linux-arm64@2.8.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww=="], 33 + 34 + "@lmdb/lmdb-linux-x64": ["@lmdb/lmdb-linux-x64@2.8.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ=="], 35 + 36 + "@lmdb/lmdb-win32-x64": ["@lmdb/lmdb-win32-x64@2.8.5", "", { "os": "win32", "cpu": "x64" }, "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ=="], 37 + 38 + "@mischnic/json-sourcemap": ["@mischnic/json-sourcemap@0.1.1", "", { "dependencies": { "@lezer/common": "^1.0.0", "@lezer/lr": "^1.0.0", "json5": "^2.2.1" } }, "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w=="], 39 + 40 + "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="], 41 + 42 + "@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw=="], 43 + 44 + "@msgpackr-extract/msgpackr-extract-linux-arm": ["@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3", "", { "os": "linux", "cpu": "arm" }, "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw=="], 45 + 46 + "@msgpackr-extract/msgpackr-extract-linux-arm64": ["@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg=="], 47 + 48 + "@msgpackr-extract/msgpackr-extract-linux-x64": ["@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg=="], 49 + 50 + "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="], 51 + 52 + "@parcel/bundler-default": ["@parcel/bundler-default@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/graph": "3.4.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1" } }, "sha512-JVqi5Sb7wv2KCTJFAAjHbnl6KC61jKNVYw/GtZm5s/Wxqvxx2tcp93rmRoBFo9X3gSgkg8jp4HkNAUHTxnsPnQ=="], 53 + 54 + "@parcel/cache": ["@parcel/cache@2.14.4", "", { "dependencies": { "@parcel/fs": "2.14.4", "@parcel/logger": "2.14.4", "@parcel/utils": "2.14.4", "lmdb": "2.8.5" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-CTTMySgNSgcSwbNWL4gODU1h9hMjBRyiC8/gcKDFqzw0wC/T+ZwX7wc5zNc/S9aJRTmmgvndcYKoVlds7YV2sg=="], 55 + 56 + "@parcel/codeframe": ["@parcel/codeframe@2.14.4", "", { "dependencies": { "chalk": "^4.1.2" } }, "sha512-fRKkmFGnQIa/X+Kr8csTWjOwRRh2JfJfTpNS8JhbjBSWvOoKsDG9T2U5Ky8akIG7c9WDGwB3ngONauI1vtaInA=="], 57 + 58 + "@parcel/compressor-raw": ["@parcel/compressor-raw@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4" } }, "sha512-wYRdokznP1iI3n6M6leQ0nI65tCIWhZaD0vW3G3qodDFi+qsdpvZymCpNUkh6AYkFFr3Lur+r/+xkWDoqNoMWA=="], 59 + 60 + "@parcel/config-default": ["@parcel/config-default@2.14.4", "", { "dependencies": { "@parcel/bundler-default": "2.14.4", "@parcel/compressor-raw": "2.14.4", "@parcel/namer-default": "2.14.4", "@parcel/optimizer-css": "2.14.4", "@parcel/optimizer-htmlnano": "2.14.4", "@parcel/optimizer-image": "2.14.4", "@parcel/optimizer-svgo": "2.14.4", "@parcel/optimizer-swc": "2.14.4", "@parcel/packager-css": "2.14.4", "@parcel/packager-html": "2.14.4", "@parcel/packager-js": "2.14.4", "@parcel/packager-raw": "2.14.4", "@parcel/packager-svg": "2.14.4", "@parcel/packager-wasm": "2.14.4", "@parcel/reporter-dev-server": "2.14.4", "@parcel/resolver-default": "2.14.4", "@parcel/runtime-browser-hmr": "2.14.4", "@parcel/runtime-js": "2.14.4", "@parcel/runtime-rsc": "2.14.4", "@parcel/runtime-service-worker": "2.14.4", "@parcel/transformer-babel": "2.14.4", "@parcel/transformer-css": "2.14.4", "@parcel/transformer-html": "2.14.4", "@parcel/transformer-image": "2.14.4", "@parcel/transformer-js": "2.14.4", "@parcel/transformer-json": "2.14.4", "@parcel/transformer-node": "2.14.4", "@parcel/transformer-postcss": "2.14.4", "@parcel/transformer-posthtml": "2.14.4", "@parcel/transformer-raw": "2.14.4", "@parcel/transformer-react-refresh-wrap": "2.14.4", "@parcel/transformer-svg": "2.14.4" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-bHtr8yT2IZDv5w44/VKoNz07goidO99c6hsp9s0hjSVC1G6krdE+nriryPVfUFbw044LeQThSvA8EwTas72QZg=="], 61 + 62 + "@parcel/core": ["@parcel/core@2.14.4", "", { "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", "@parcel/cache": "2.14.4", "@parcel/diagnostic": "2.14.4", "@parcel/events": "2.14.4", "@parcel/feature-flags": "2.14.4", "@parcel/fs": "2.14.4", "@parcel/graph": "3.4.4", "@parcel/logger": "2.14.4", "@parcel/package-manager": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/profiler": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/types": "2.14.4", "@parcel/utils": "2.14.4", "@parcel/workers": "2.14.4", "base-x": "^3.0.8", "browserslist": "^4.6.6", "clone": "^2.1.1", "dotenv": "^16.4.5", "dotenv-expand": "^11.0.6", "json5": "^2.2.0", "msgpackr": "^1.9.9", "nullthrows": "^1.1.1", "semver": "^7.5.2" } }, "sha512-dtUMmPDXd7CRAWwMlOc6jh6yLRL4wMi/vNMNdX9J/fafCLFgFBmPqWBhQ9tlX015Q8DEcIRWYPumHIn5dzqEbg=="], 63 + 64 + "@parcel/diagnostic": ["@parcel/diagnostic@2.14.4", "", { "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", "nullthrows": "^1.1.1" } }, "sha512-+pElcMMlTnpEIm9MrrSEOh38ylKYYdTYMgv2iZQU7799yzD9sSac9dkGSbbKGDYWhALCuzWQOgdaGG9ExJZw6w=="], 65 + 66 + "@parcel/error-overlay": ["@parcel/error-overlay@2.14.4", "", {}, "sha512-GZ6Z1XO/VYqIFNwa3iAYWX7Pskwd+xw9tPw9kjF7tG8wdL9VipkcILJ4APj/G5CKw8XrXH/6NsC7HndNbR7EqA=="], 67 + 68 + "@parcel/events": ["@parcel/events@2.14.4", "", {}, "sha512-QzZr291JuENw7BsehKc3z29ukLMApPdjRFcOYXFuMWaHkpC7lzFK/KAY4Mi9HCa3aQe90zCcuxZg+bBsNF9XxQ=="], 69 + 70 + "@parcel/feature-flags": ["@parcel/feature-flags@2.14.4", "", {}, "sha512-T2HE+lOmlU6PZOUnuXn6UZPXV4higCPgF2c2YXhrzTlSFcLMiAXATyzrylbYY/i/WjiYAlqvmEcaBX5fSaW95g=="], 71 + 72 + "@parcel/fs": ["@parcel/fs@2.14.4", "", { "dependencies": { "@parcel/feature-flags": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/types-internal": "2.14.4", "@parcel/utils": "2.14.4", "@parcel/watcher": "^2.0.7", "@parcel/workers": "2.14.4" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-SQbuW6v1URv871FVj23HoC8+UUwpgkQ7iWmG7EITpp6AV42ojRr/jZ93hLjzkQQfYlRI64jUExn6AQAZDN3bqQ=="], 73 + 74 + "@parcel/graph": ["@parcel/graph@3.4.4", "", { "dependencies": { "@parcel/feature-flags": "2.14.4", "nullthrows": "^1.1.1" } }, "sha512-AIbJ8d8aCPcKAkqc45LENjAMIrp8nRGlmky5LyY5244qqnR1B+tsvU47XoGymM3OaXLdVjv8knJ4K0ci9/l/4w=="], 75 + 76 + "@parcel/logger": ["@parcel/logger@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/events": "2.14.4" } }, "sha512-uqSGeCqraWpbe8gqbb1k9ePrlzdKoOwkdQPcRIv8TTTWZfCt6Qcl08w8didO4iAOz4H5C4Ng82wbVO/ieaMoKg=="], 77 + 78 + "@parcel/markdown-ansi": ["@parcel/markdown-ansi@2.14.4", "", { "dependencies": { "chalk": "^4.1.2" } }, "sha512-B4787HHXHi0wcuYbV4qBibws/yaX4RXoNel5xWdwzn1ZFmeLAXluNjMO2Q6FmII/Lej9OIQEaTppl7/DxJGifg=="], 79 + 80 + "@parcel/namer-default": ["@parcel/namer-default@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "nullthrows": "^1.1.1" } }, "sha512-3FvZhkRgYlipj0NGRmw/rZ9ZiuM+a9ZcNW/MHRpytiNNBgcGCpR00XKhhvn0O5//MH13nLpiQXUf+J279CuN2A=="], 81 + 82 + "@parcel/node-resolver-core": ["@parcel/node-resolver-core@3.5.4", "", { "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", "@parcel/diagnostic": "2.14.4", "@parcel/fs": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1", "semver": "^7.5.2" } }, "sha512-KmmsVD8Ym+19DIbe0Y2SUbdcB+iUfgstR4dBpaogV36DlxV4d0uiia4GCpOO3kG9zlRYMVsfZEwy/NNZHELx3w=="], 83 + 84 + "@parcel/optimizer-css": ["@parcel/optimizer-css@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4", "browserslist": "^4.6.6", "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" } }, "sha512-5rwwnsP8pnTqis5fs2YyNUvke6YprWlU8Y9pD55hK1Y1MbYmvCqaIyQv9lcpHJQiqrwsZ2pl5B3Ph5buDSQehQ=="], 85 + 86 + "@parcel/optimizer-htmlnano": ["@parcel/optimizer-htmlnano@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "htmlnano": "^2.0.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5" } }, "sha512-hLVaN7ResQcgKRo9uDm7oddC4DwR7qoTFsYn4Ftj8qGbgqB2nRpCCK0R66PA/9U98LyTOlAl1J6TEvxWR+IlKw=="], 87 + 88 + "@parcel/optimizer-image": ["@parcel/optimizer-image@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/utils": "2.14.4", "@parcel/workers": "2.14.4" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-F5xw6ayFWOxu2XP5MI8g9khOCKNkVj4nGoXrBcgLoCKW4o07buCUKY4Sy04P3u7Leip6TOk7qpt3Q1179h6KTQ=="], 89 + 90 + "@parcel/optimizer-svgo": ["@parcel/optimizer-svgo@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4" } }, "sha512-bjZ2VHhzclBQ99SC2ZXsFKJ6zi0hXTPbGdaVblMu0iheeXcATdoNzey0eizaoSmLe9IyFJoN6gvnLdQqGfZLZg=="], 91 + 92 + "@parcel/optimizer-swc": ["@parcel/optimizer-swc@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4", "@swc/core": "^1.11.5", "nullthrows": "^1.1.1" } }, "sha512-7+p5ILEj2S02Rs6YzwF74g0kpAZzF9idDP9zjLVZWo9JYvoRvH0LW90bI7yKXWpKB8QOtwziqgWkcgItSIWBnA=="], 93 + 94 + "@parcel/package-manager": ["@parcel/package-manager@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/fs": "2.14.4", "@parcel/logger": "2.14.4", "@parcel/node-resolver-core": "3.5.4", "@parcel/types": "2.14.4", "@parcel/utils": "2.14.4", "@parcel/workers": "2.14.4", "@swc/core": "^1.11.5", "semver": "^7.5.2" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-chF2rBmLtLPZe0qtbqJtq6hNGCRu0+1wFs2j5sqxr1ZttvvhRpATu/7pD+gKTFmfL7iJkOpGTU485SYmyO1xjg=="], 95 + 96 + "@parcel/packager-css": ["@parcel/packager-css@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4", "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" } }, "sha512-AvJhE1AQ4OcuOUtKoifhE1Y8KgYitzKMvmgsgQlwySdrkk6dz+XGHfZ9goTzIUaz9xZzwbJH7h/pvaIP8jQ9yQ=="], 97 + 98 + "@parcel/packager-html": ["@parcel/packager-html@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/types": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1", "posthtml": "^0.16.5" } }, "sha512-rsYz3NDaKRCuQOAWGc3eYJ2GHesm62iRCQTMGlZ7Oplp748vu2c1Uee/mP43WlslvDxHtV7rzVNyo88MS6sc5w=="], 99 + 100 + "@parcel/packager-js": ["@parcel/packager-js@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/types": "2.14.4", "@parcel/utils": "2.14.4", "globals": "^13.2.0", "nullthrows": "^1.1.1" } }, "sha512-Fz98TzYFcd9xCj6jqMtyd7c3n65GRmuoG7u0S/2g4sJrR5Zen70n1zlBGX7mEoOvB5lKRijzoNqBtB+7bWqS5A=="], 101 + 102 + "@parcel/packager-raw": ["@parcel/packager-raw@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4" } }, "sha512-7yDcPGsSSz4WiCWj2KoC2pNBXNislulI1RXaWyBAMzQhevQ+9D2ga/ZPgpcNjcWr8Y1tRb3QITETkTmZVHmPXQ=="], 103 + 104 + "@parcel/packager-svg": ["@parcel/packager-svg@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/types": "2.14.4", "@parcel/utils": "2.14.4", "posthtml": "^0.16.4" } }, "sha512-ja5P9PXp+v/mh+UXUXdQ1O35yr2kRqdRlytYrzmAaeILuS1ko2n3ZJoeUYYprYOh/UmLmkgbXh/DyzrhEH7TZw=="], 105 + 106 + "@parcel/packager-wasm": ["@parcel/packager-wasm@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4" } }, "sha512-sgGCitPjl80Ku+xZIu3wCIAjOYXVEGJ00uXeexR8hgMx/PMhiHXLWUG8eLYAvxXx/CcLmHDOEBNrl6G3JxsP9g=="], 107 + 108 + "@parcel/plugin": ["@parcel/plugin@2.14.4", "", { "dependencies": { "@parcel/types": "2.14.4" } }, "sha512-EcehbthkBtQ9S2jWAzIiSlodbIMZ0bSsN3PC1q9jVaCM16ueObjZohKkzMjzR6Qot91qL0EJoMLzuNvtryvpHA=="], 109 + 110 + "@parcel/profiler": ["@parcel/profiler@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/events": "2.14.4", "@parcel/types-internal": "2.14.4", "chrome-trace-event": "^1.0.2" } }, "sha512-oZAdCDW3bYRpBOuL4coq4OQDN6HXADaSd4X8xJCeGsEsbVfJt0Qg5RgxdWC1L86mukyZMQ9ZrQUpC8aU9CAmFg=="], 111 + 112 + "@parcel/reporter-cli": ["@parcel/reporter-cli@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/types": "2.14.4", "@parcel/utils": "2.14.4", "chalk": "^4.1.2", "term-size": "^2.2.1" } }, "sha512-KgBXBiwGb9hqf3A6vw6eIqX1uYaMRjSqYXUUybGTOxonc+yB6J5q+skv1Wuty6IYuBfjNlV/zdvgggVZMl0ZxA=="], 113 + 114 + "@parcel/reporter-dev-server": ["@parcel/reporter-dev-server@2.14.4", "", { "dependencies": { "@parcel/codeframe": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4" } }, "sha512-Ezg24vHftV0El0tWcxnsGAxwSdNTMs9M+l9Nbm1k4rydx1lCoKBAhpa2Icv8vKZY8K075giww8TOkjk6zVkAmQ=="], 115 + 116 + "@parcel/reporter-tracer": ["@parcel/reporter-tracer@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "chrome-trace-event": "^1.0.3", "nullthrows": "^1.1.1" } }, "sha512-EN+rzdEnoMuC5qbYIcuP6v1vTb/dDPrrnIEtDFEsSyuBuDfQevtOech8oHzjGEBOlC8svm+OzW/wIj2L2rmF2A=="], 117 + 118 + "@parcel/resolver-default": ["@parcel/resolver-default@2.14.4", "", { "dependencies": { "@parcel/node-resolver-core": "3.5.4", "@parcel/plugin": "2.14.4" } }, "sha512-s4XKnfScF/cwqGyYG/sB4WpktIJ55dvpu64ZiglHkkPvY5wT4p7A61mTIp6ck0ZPYmeG/zfd+P0B3qPpNF5mUw=="], 119 + 120 + "@parcel/runtime-browser-hmr": ["@parcel/runtime-browser-hmr@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4" } }, "sha512-7o3XHOkuNy2jUH8xdKJSzIfatdAqvr/PHg9vQN0Cz4r80XCXDh1ovfz/x0Q9gpBv+LMBs+ufZ4tP+RfgJ/jKpQ=="], 121 + 122 + "@parcel/runtime-js": ["@parcel/runtime-js@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1" } }, "sha512-F9RvDELU/0fyV2/rHkjpPcLeKF/ZU3gnHIQnkh2Q5/41XhymyNAvMmYGPM6VpbOAnDlYeVjwfyJ41x8FOL6u4Q=="], 123 + 124 + "@parcel/runtime-rsc": ["@parcel/runtime-rsc@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1" } }, "sha512-FXoO1GWvC/yQOUYX+0rTUQVku91DSJnjegqJaiJSUOEGeJWF9mBmY/3QDkksvhwB25vJkLYsu/M5Fx83OA2u6w=="], 125 + 126 + "@parcel/runtime-service-worker": ["@parcel/runtime-service-worker@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1" } }, "sha512-6+vz2DYP9tK+GHRPwW/qfUNvGOHvFpsN/Thk+tSIZ+PHT1DTWfpf02eo7fzpImdZAzllSz3m1IXgrOH00LdOKA=="], 127 + 128 + "@parcel/rust": ["@parcel/rust@2.14.4", "", { "peerDependencies": { "napi-wasm": "^1.1.2" }, "optionalPeers": ["napi-wasm"] }, "sha512-Ti+ZVr8mMTgrSA7UHcFXxG98anD0C8dGzYfP1+DTgxkcU16nywTv5F/VsPqpV2qiDWrHbm06CEWQbOrowjzvVw=="], 129 + 130 + "@parcel/source-map": ["@parcel/source-map@2.1.1", "", { "dependencies": { "detect-libc": "^1.0.3" } }, "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew=="], 131 + 132 + "@parcel/transformer-babel": ["@parcel/transformer-babel@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4", "browserslist": "^4.6.6", "json5": "^2.2.0", "nullthrows": "^1.1.1", "semver": "^7.5.2" } }, "sha512-9yMnlFuKQYgXJY8OWpcR2vSigpMm5MCEJJl6r+g3KkXHFwK1Gket2sC4Wd5JbHv98SNzJ9rdD4Xrre/eXJu6pw=="], 133 + 134 + "@parcel/transformer-css": ["@parcel/transformer-css@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4", "browserslist": "^4.6.6", "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" } }, "sha512-sf0NuzPH4kSpL4VgV94xY5kPxoAndoNouUFPaHmN3hW6QiTHShRubfDsginSOHl5QhghSfr4qtP7t7HxCSDq6A=="], 135 + 136 + "@parcel/transformer-html": ["@parcel/transformer-html@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.12.1", "posthtml-render": "^3.0.0", "semver": "^7.5.2", "srcset": "4" } }, "sha512-h0iCfU2SN+gh5LTfZTRiXHavl3CdJ2i3F9jzVrRjdH8pfLqy5eOy1tQ8vyqMsshk+VdlZ1+vUiZ7uaKkkBq/fg=="], 137 + 138 + "@parcel/transformer-image": ["@parcel/transformer-image@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "@parcel/workers": "2.14.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-QVGAdQ16YxNo7PTzBazUabmrn4dss1EDeMrh0bFUeRTZdYaYu5z/+gnRc5R4oHcHK6oxnECi808TquMQcQxDEA=="], 139 + 140 + "@parcel/transformer-js": ["@parcel/transformer-js@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.14.4", "@parcel/workers": "2.14.4", "@swc/helpers": "^0.5.0", "browserslist": "^4.6.6", "nullthrows": "^1.1.1", "regenerator-runtime": "^0.14.1", "semver": "^7.5.2" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-fBC8NVM8xXxjGQY5r88Z46akSErFO5hRVA4kuRI0tkXorjov3Mu4hu6MLq974TEQluSvGXUYGT5Mq2iXZ75M7w=="], 141 + 142 + "@parcel/transformer-json": ["@parcel/transformer-json@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "json5": "^2.2.0" } }, "sha512-+28n3/qhc2q6Zoqhufk1YKU442a2JyyE0ILFsT17Of+lcNX+QtXYPOYcky7TNENnoUz9TpOAFev64P99UN7huA=="], 143 + 144 + "@parcel/transformer-node": ["@parcel/transformer-node@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4" } }, "sha512-K5k/GkGN4SwGdil8g10AcPPJn+hV0vzcv4l2qYoCqaxxIPCrpjmMnoA8a3kRgxvD8s54KciFYYjmU5Cj5NjvbA=="], 145 + 146 + "@parcel/transformer-postcss": ["@parcel/transformer-postcss@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/utils": "2.14.4", "clone": "^2.1.1", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", "semver": "^7.5.2" } }, "sha512-GxkXkcgG2XGt6ivoUF5yD1tmQPV+d71gUxyBGv1i1jg4x65R12Gc/npzWk9TCH2dShSdHOA90OJpNL4k0JlLtg=="], 147 + 148 + "@parcel/transformer-posthtml": ["@parcel/transformer-posthtml@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.12.1", "posthtml-render": "^3.0.0", "semver": "^7.5.2" } }, "sha512-V9dnsA5+t7uF/hWc9HwJcaKkmP8K2go6yAQOpxu+knyszfz3t2jw/k4L/VFjqCATf90agal/iRTPVkHvWDCzZw=="], 149 + 150 + "@parcel/transformer-raw": ["@parcel/transformer-raw@2.14.4", "", { "dependencies": { "@parcel/plugin": "2.14.4" } }, "sha512-GCuUWKAb9YHB/krmzBeQbtHKKZopT3c3AzoPTq/4woV4Ti1zUZ83oFyTX1tBKQ+MMB1BW+HrPkFld0iY4gp/Ng=="], 151 + 152 + "@parcel/transformer-react-refresh-wrap": ["@parcel/transformer-react-refresh-wrap@2.14.4", "", { "dependencies": { "@parcel/error-overlay": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/utils": "2.14.4", "react-refresh": ">=0.9 <=0.16" } }, "sha512-nb70CAvjDizAIQ1naZ39P/PxYWtPllWvvxrkpldNnk8AF74OcHodrsuHKwhyPZHMmnMdexFonsenf+VeN4l/aQ=="], 153 + 154 + "@parcel/transformer-svg": ["@parcel/transformer-svg@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/plugin": "2.14.4", "@parcel/rust": "2.14.4", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.12.1", "posthtml-render": "^3.0.0", "semver": "^7.5.2" } }, "sha512-iqnyvgGmwu4wNh+khEBkMEu1hAGZWnc7/xQnhiuQBAcoy5qGNEjyVUv6PbMLWWAVK/0PjqV4FaB2deXBYKeW0A=="], 155 + 156 + "@parcel/types": ["@parcel/types@2.14.4", "", { "dependencies": { "@parcel/types-internal": "2.14.4", "@parcel/workers": "2.14.4" } }, "sha512-NL4N9M6IPwBquAo1DKOPqy66nwJLXMX3KPalzAA7ktt3HYr5YNG5h3GeVXPOLNIVVMrSIiodYGPEeEBYy6kyYA=="], 157 + 158 + "@parcel/types-internal": ["@parcel/types-internal@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/feature-flags": "2.14.4", "@parcel/source-map": "^2.1.1", "utility-types": "^3.10.0" } }, "sha512-Y2JnljFG7KcxLrCiYNCqBfjDo12alhRVpNugm0jwz1EQ3OQNO3HYiB0f3djq6pv2clZ5ndpgkNgYsn6L7KR9Nw=="], 159 + 160 + "@parcel/utils": ["@parcel/utils@2.14.4", "", { "dependencies": { "@parcel/codeframe": "2.14.4", "@parcel/diagnostic": "2.14.4", "@parcel/logger": "2.14.4", "@parcel/markdown-ansi": "2.14.4", "@parcel/rust": "2.14.4", "@parcel/source-map": "^2.1.1", "chalk": "^4.1.2", "nullthrows": "^1.1.1" } }, "sha512-icK6QgKjis+UZLyaHJcsKXYOSKYeYr41m8ZB9j20/yEcvrMqj/LMVsNjLz3iWVhLwfgussG2ODxycCdu3M5cvQ=="], 161 + 162 + "@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="], 163 + 164 + "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.1", "", { "os": "android", "cpu": "arm64" }, "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA=="], 165 + 166 + "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw=="], 167 + 168 + "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg=="], 169 + 170 + "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ=="], 171 + 172 + "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.1", "", { "os": "linux", "cpu": "arm" }, "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA=="], 173 + 174 + "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.1", "", { "os": "linux", "cpu": "arm" }, "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q=="], 175 + 176 + "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w=="], 177 + 178 + "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg=="], 179 + 180 + "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A=="], 181 + 182 + "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg=="], 183 + 184 + "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw=="], 185 + 186 + "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ=="], 187 + 188 + "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], 189 + 190 + "@parcel/workers": ["@parcel/workers@2.14.4", "", { "dependencies": { "@parcel/diagnostic": "2.14.4", "@parcel/logger": "2.14.4", "@parcel/profiler": "2.14.4", "@parcel/types-internal": "2.14.4", "@parcel/utils": "2.14.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "@parcel/core": "^2.14.4" } }, "sha512-OAjW2dJOaRKy4UD5YwnUi7mY+gt/QbjagjrKh2fQDnrvuK8dpr5GrjEOLOe6QsxEE0vpe3jshhGMJTYqLni3kQ=="], 191 + 192 + "@swc/core": ["@swc/core@1.11.16", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.21" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.11.16", "@swc/core-darwin-x64": "1.11.16", "@swc/core-linux-arm-gnueabihf": "1.11.16", "@swc/core-linux-arm64-gnu": "1.11.16", "@swc/core-linux-arm64-musl": "1.11.16", "@swc/core-linux-x64-gnu": "1.11.16", "@swc/core-linux-x64-musl": "1.11.16", "@swc/core-win32-arm64-msvc": "1.11.16", "@swc/core-win32-ia32-msvc": "1.11.16", "@swc/core-win32-x64-msvc": "1.11.16" }, "peerDependencies": { "@swc/helpers": "*" }, "optionalPeers": ["@swc/helpers"] }, "sha512-wgjrJqVUss8Lxqilg0vkiE0tkEKU3mZkoybQM1Ehy+PKWwwB6lFAwKi20cAEFlSSWo8jFR8hRo19ZELAoLDowg=="], 193 + 194 + "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.11.16", "", { "os": "darwin", "cpu": "arm64" }, "sha512-l6uWMU+MUdfLHCl3dJgtVEdsUHPskoA4BSu0L1hh9SGBwPZ8xeOz8iLIqZM27lTuXxL4KsYH6GQR/OdQ/vhLtg=="], 195 + 196 + "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.11.16", "", { "os": "darwin", "cpu": "x64" }, "sha512-TH0IW8Ao1WZ4ARFHIh29dAQHYBEl4YnP74n++rjppmlCjY+8v3s5nXMA7IqxO3b5LVHyggWtU4+46DXTyMJM7g=="], 197 + 198 + "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.11.16", "", { "os": "linux", "cpu": "arm" }, "sha512-2IxD9t09oNZrbv37p4cJ9cTHMUAK6qNiShi9s2FJ9LcqSnZSN4iS4hvaaX6KZuG54d58vWnMU7yycjkdOTQcMg=="], 199 + 200 + "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.11.16", "", { "os": "linux", "cpu": "arm64" }, "sha512-AYkN23DOiPh1bf3XBf/xzZQDKSsgZTxlbyTyUIhprLJpAAAT0ZCGAUcS5mHqydk0nWQ13ABUymodvHoroutNzw=="], 201 + 202 + "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.11.16", "", { "os": "linux", "cpu": "arm64" }, "sha512-n/nWXDRCIhM51dDGELfBcTMNnCiFatE7LDvsbYxb7DJt1HGjaCNvHHCKURb/apJTh/YNtWfgFap9dbsTgw8yPA=="], 203 + 204 + "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.11.16", "", { "os": "linux", "cpu": "x64" }, "sha512-xr182YQrF47n7Awxj+/ruI21bYw+xO/B26KFVnb+i3ezF9NOhqoqTX+33RL1ZLA/uFTq8ksPZO/y+ZVS/odtQA=="], 205 + 206 + "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.11.16", "", { "os": "linux", "cpu": "x64" }, "sha512-k2JBfiwWfXCIKrBRjFO9/vEdLSYq0QLJ+iNSLdfrejZ/aENNkbEg8O7O2GKUSb30RBacn6k8HMfJrcPLFiEyCQ=="], 207 + 208 + "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.11.16", "", { "os": "win32", "cpu": "arm64" }, "sha512-taOb5U+abyEhQgex+hr6cI48BoqSvSdfmdirWcxprIEUBHCxa1dSriVwnJRAJOFI9T+5BEz88by6rgbB9MjbHA=="], 209 + 210 + "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.11.16", "", { "os": "win32", "cpu": "ia32" }, "sha512-b7yYggM9LBDiMY+XUt5kYWvs5sn0U3PXSOGvF3CbLufD/N/YQiDcYON2N3lrWHYL8aYnwbuZl45ojmQHSQPcdA=="], 211 + 212 + "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.11.16", "", { "os": "win32", "cpu": "x64" }, "sha512-/ibq/YDc3B5AROkpOKPGxVkSyCKOg+ml8k11RxrW7FAPy6a9y5y9KPcWIqV74Ahq4RuaMNslTQqHWAGSm0xJsQ=="], 213 + 214 + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], 215 + 216 + "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], 217 + 218 + "@swc/types": ["@swc/types@0.1.21", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ=="], 219 + 220 + "@types/bun": ["@types/bun@1.2.8", "", { "dependencies": { "bun-types": "1.2.7" } }, "sha512-t8L1RvJVUghW5V+M/fL3Thbxcs0HwNsXsnTEBEfEVqGteiJToOlZ/fyOEaR1kZsNqnu+3XA4RI/qmnX4w6+S+w=="], 221 + 222 + "@types/node": ["@types/node@22.14.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA=="], 223 + 224 + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], 225 + 226 + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], 227 + 228 + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], 229 + 230 + "base-x": ["base-x@3.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA=="], 231 + 232 + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], 233 + 234 + "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], 235 + 236 + "bun-types": ["bun-types@1.2.7", "", { "dependencies": { "@types/node": "*", "@types/ws": "*" } }, "sha512-P4hHhk7kjF99acXqKvltyuMQ2kf/rzIw3ylEDpCxDS9Xa0X0Yp/gJu/vDCucmWpiur5qJ0lwB2bWzOXa2GlHqA=="], 237 + 238 + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], 239 + 240 + "caniuse-lite": ["caniuse-lite@1.0.30001709", "", {}, "sha512-NgL3vUTnDrPCZ3zTahp4fsugQ4dc7EKTSzwQDPEel6DMoMnfH2jhry9n2Zm8onbSR+f/QtKHFOA+iAQu4kbtWA=="], 241 + 242 + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], 243 + 244 + "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], 245 + 246 + "clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="], 247 + 248 + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 249 + 250 + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], 251 + 252 + "commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], 253 + 254 + "cosmiconfig": ["cosmiconfig@9.0.0", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="], 255 + 256 + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], 257 + 258 + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], 259 + 260 + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], 261 + 262 + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], 263 + 264 + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], 265 + 266 + "dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], 267 + 268 + "dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], 269 + 270 + "electron-to-chromium": ["electron-to-chromium@1.5.130", "", {}, "sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA=="], 271 + 272 + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], 273 + 274 + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], 275 + 276 + "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], 277 + 278 + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], 279 + 280 + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], 281 + 282 + "get-port": ["get-port@4.2.0", "", {}, "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw=="], 283 + 284 + "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], 285 + 286 + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], 287 + 288 + "htmlnano": ["htmlnano@2.1.1", "", { "dependencies": { "cosmiconfig": "^9.0.0", "posthtml": "^0.16.5", "timsort": "^0.3.0" }, "peerDependencies": { "cssnano": "^7.0.0", "postcss": "^8.3.11", "purgecss": "^6.0.0", "relateurl": "^0.2.7", "srcset": "5.0.1", "svgo": "^3.0.2", "terser": "^5.10.0", "uncss": "^0.17.3" }, "optionalPeers": ["cssnano", "postcss", "purgecss", "relateurl", "srcset", "svgo", "terser", "uncss"] }, "sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw=="], 289 + 290 + "htmlparser2": ["htmlparser2@9.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "entities": "^4.5.0" } }, "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ=="], 291 + 292 + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], 293 + 294 + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], 295 + 296 + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], 297 + 298 + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], 299 + 300 + "is-json": ["is-json@2.0.1", "", {}, "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA=="], 301 + 302 + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], 303 + 304 + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], 305 + 306 + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], 307 + 308 + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], 309 + 310 + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], 311 + 312 + "lightningcss": ["lightningcss@1.29.3", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.3", "lightningcss-darwin-x64": "1.29.3", "lightningcss-freebsd-x64": "1.29.3", "lightningcss-linux-arm-gnueabihf": "1.29.3", "lightningcss-linux-arm64-gnu": "1.29.3", "lightningcss-linux-arm64-musl": "1.29.3", "lightningcss-linux-x64-gnu": "1.29.3", "lightningcss-linux-x64-musl": "1.29.3", "lightningcss-win32-arm64-msvc": "1.29.3", "lightningcss-win32-x64-msvc": "1.29.3" } }, "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ=="], 313 + 314 + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg=="], 315 + 316 + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ=="], 317 + 318 + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw=="], 319 + 320 + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.3", "", { "os": "linux", "cpu": "arm" }, "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg=="], 321 + 322 + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw=="], 323 + 324 + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A=="], 325 + 326 + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.3", "", { "os": "linux", "cpu": "x64" }, "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg=="], 327 + 328 + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ=="], 329 + 330 + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ=="], 331 + 332 + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.3", "", { "os": "win32", "cpu": "x64" }, "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ=="], 333 + 334 + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], 335 + 336 + "lmdb": ["lmdb@2.8.5", "", { "dependencies": { "msgpackr": "^1.9.5", "node-addon-api": "^6.1.0", "node-gyp-build-optional-packages": "5.1.1", "ordered-binary": "^1.4.1", "weak-lru-cache": "^1.2.2" }, "optionalDependencies": { "@lmdb/lmdb-darwin-arm64": "2.8.5", "@lmdb/lmdb-darwin-x64": "2.8.5", "@lmdb/lmdb-linux-arm": "2.8.5", "@lmdb/lmdb-linux-arm64": "2.8.5", "@lmdb/lmdb-linux-x64": "2.8.5", "@lmdb/lmdb-win32-x64": "2.8.5" }, "bin": { "download-lmdb-prebuilds": "bin/download-prebuilds.js" } }, "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ=="], 337 + 338 + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], 339 + 340 + "msgpackr": ["msgpackr@1.11.2", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g=="], 341 + 342 + "msgpackr-extract": ["msgpackr-extract@3.0.3", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA=="], 343 + 344 + "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], 345 + 346 + "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.1.1", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-test": "build-test.js", "node-gyp-build-optional-packages-optional": "optional.js" } }, "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw=="], 347 + 348 + "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], 349 + 350 + "nullthrows": ["nullthrows@1.1.1", "", {}, "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="], 351 + 352 + "ordered-binary": ["ordered-binary@1.5.3", "", {}, "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA=="], 353 + 354 + "parcel": ["parcel@2.14.4", "", { "dependencies": { "@parcel/config-default": "2.14.4", "@parcel/core": "2.14.4", "@parcel/diagnostic": "2.14.4", "@parcel/events": "2.14.4", "@parcel/feature-flags": "2.14.4", "@parcel/fs": "2.14.4", "@parcel/logger": "2.14.4", "@parcel/package-manager": "2.14.4", "@parcel/reporter-cli": "2.14.4", "@parcel/reporter-dev-server": "2.14.4", "@parcel/reporter-tracer": "2.14.4", "@parcel/utils": "2.14.4", "chalk": "^4.1.2", "commander": "^12.1.0", "get-port": "^4.2.0" }, "bin": { "parcel": "lib/bin.js" } }, "sha512-XmnIurC4CPdQm9OFJMbjgvto5Jz2szZ5/p6EY4pAljU/SLPhtBzJ3+J6OyljGFdbVxEXx4dp+7Cvf7eaDZsEEg=="], 355 + 356 + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 357 + 358 + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], 359 + 360 + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], 361 + 362 + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 363 + 364 + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], 365 + 366 + "posthtml": ["posthtml@0.16.6", "", { "dependencies": { "posthtml-parser": "^0.11.0", "posthtml-render": "^3.0.0" } }, "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ=="], 367 + 368 + "posthtml-parser": ["posthtml-parser@0.12.1", "", { "dependencies": { "htmlparser2": "^9.0.0" } }, "sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA=="], 369 + 370 + "posthtml-render": ["posthtml-render@3.0.0", "", { "dependencies": { "is-json": "^2.0.1" } }, "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA=="], 371 + 372 + "react-refresh": ["react-refresh@0.16.0", "", {}, "sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A=="], 373 + 374 + "regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], 375 + 376 + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], 377 + 378 + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], 379 + 380 + "semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], 381 + 382 + "srcset": ["srcset@4.0.0", "", {}, "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw=="], 383 + 384 + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], 385 + 386 + "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="], 387 + 388 + "timsort": ["timsort@0.3.0", "", {}, "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A=="], 389 + 390 + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 391 + 392 + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 393 + 394 + "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], 395 + 396 + "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="], 397 + 398 + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], 399 + 400 + "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], 401 + 402 + "utility-types": ["utility-types@3.11.0", "", {}, "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw=="], 403 + 404 + "weak-lru-cache": ["weak-lru-cache@1.2.2", "", {}, "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw=="], 405 + 406 + "lightningcss/detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], 407 + 408 + "lmdb/node-addon-api": ["node-addon-api@6.1.0", "", {}, "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="], 409 + 410 + "msgpackr-extract/node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="], 411 + 412 + "node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], 413 + 414 + "posthtml/posthtml-parser": ["posthtml-parser@0.11.0", "", { "dependencies": { "htmlparser2": "^7.1.1" } }, "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw=="], 415 + 416 + "msgpackr-extract/node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], 417 + 418 + "posthtml/posthtml-parser/htmlparser2": ["htmlparser2@7.2.0", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.2", "domutils": "^2.8.0", "entities": "^3.0.1" } }, "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog=="], 419 + 420 + "posthtml/posthtml-parser/htmlparser2/domhandler": ["domhandler@4.3.1", "", { "dependencies": { "domelementtype": "^2.2.0" } }, "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ=="], 421 + 422 + "posthtml/posthtml-parser/htmlparser2/domutils": ["domutils@2.8.0", "", { "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="], 423 + 424 + "posthtml/posthtml-parser/htmlparser2/entities": ["entities@3.0.1", "", {}, "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="], 425 + 426 + "posthtml/posthtml-parser/htmlparser2/domutils/dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="], 427 + 428 + "posthtml/posthtml-parser/htmlparser2/domutils/dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], 429 + } 430 + }
+79
index.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 + <title>Crafting Your Values</title> 7 + <link rel="stylesheet" href="styles.css" /> 8 + </head> 9 + <body> 10 + <div id="app"> 11 + <header> 12 + <h1>Crafting Your Values Exercise</h1> 13 + <div id="global-controls"> 14 + <button id="undoBtn" disabled>Undo</button> 15 + <button id="redoBtn" disabled>Redo</button> 16 + <button id="clearStorageBtn">Clear Storage</button> 17 + </div> 18 + </header> 19 + 20 + <!-- Part 1: Sorting --> 21 + <section id="part1" class="exercise-part"> 22 + <h2>Part 1: Initial Sorting</h2> 23 + <div class="columns"> 24 + <div class="column" data-column="unassigned"> 25 + <h3>Unassigned</h3> 26 + <div class="card-container" id="unassignedContainer"></div> 27 + </div> 28 + <div class="column" data-column="notImportant"> 29 + <h3>Not important to me</h3> 30 + <div class="card-container" id="notImportantContainer"></div> 31 + </div> 32 + <div class="column" data-column="important"> 33 + <h3>Important to me</h3> 34 + <div class="card-container" id="importantContainer"></div> 35 + </div> 36 + <div class="column" data-column="veryImportant"> 37 + <h3>Very important to me</h3> 38 + <div class="card-container" id="veryImportantContainer"></div> 39 + </div> 40 + </div> 41 + <button id="toPart2">Next</button> 42 + </section> 43 + 44 + <!-- Part 2: Narrowing Down --> 45 + <section id="part2" class="exercise-part" style="display: none;"> 46 + <h2>Part 2: Narrowing Down</h2> 47 + <div class="columns"> 48 + <div class="column" data-column="core"> 49 + <h3>F*CK YEAH (Core Values, max 5)</h3> 50 + <div class="card-container" id="coreContainer"></div> 51 + </div> 52 + <div class="column" data-column="additional"> 53 + <h3>Also Something I Want</h3> 54 + <div class="card-container" id="additionalContainer"></div> 55 + </div> 56 + </div> 57 + <button id="backToPart1">Back</button> 58 + <button id="toPart3">Next</button> 59 + </section> 60 + 61 + <!-- Part 3: Final Statements --> 62 + <section id="part3" class="exercise-part" style="display: none;"> 63 + <h2>Part 3: Final Statements</h2> 64 + <div id="finalStatements"></div> 65 + <button id="backToPart2">Back</button> 66 + <button id="finish">Finish</button> 67 + </section> 68 + 69 + <!-- Review/Export Page --> 70 + <section id="review" class="exercise-part" style="display: none;"> 71 + <h2>Review</h2> 72 + <div id="reviewContent"></div> 73 + <button id="restart">Restart</button> 74 + </section> 75 + </div> 76 + 77 + <script src="./index.ts"></script> 78 + </body> 79 + </html>
+487
index.ts
··· 1 + // Define interfaces for our value cards and overall app state. 2 + interface ValueCard { 3 + id: number; 4 + name: string; 5 + column: string; // Part1: "unassigned", "notImportant", "important", "veryImportant" 6 + // Part2: "core" or "additional" (for cards carried over from veryImportant) 7 + order: number; 8 + } 9 + 10 + interface AppState { 11 + currentPart: "part1" | "part2" | "part3" | "review"; 12 + cards: ValueCard[]; 13 + // In part 3, user can add final statements for each core value (by card id) 14 + finalStatements: { [cardId: number]: string }; 15 + } 16 + 17 + // A generic undo manager that stores state snapshots. 18 + class UndoManager<T> { 19 + private undoStack: T[] = []; 20 + private redoStack: T[] = []; 21 + private currentState: T; 22 + constructor(initialState: T) { 23 + this.currentState = this.deepCopy(initialState); 24 + } 25 + private deepCopy(state: T): T { 26 + return JSON.parse(JSON.stringify(state)); 27 + } 28 + execute(newState: T) { 29 + this.undoStack.push(this.deepCopy(this.currentState)); 30 + this.currentState = this.deepCopy(newState); 31 + this.redoStack = []; // clear redo on new action 32 + } 33 + undo(): T | null { 34 + if (!this.undoStack.length) return null; 35 + this.redoStack.push(this.deepCopy(this.currentState)); 36 + this.currentState = this.undoStack.pop()!; 37 + return this.deepCopy(this.currentState); 38 + } 39 + redo(): T | null { 40 + if (!this.redoStack.length) return null; 41 + this.undoStack.push(this.deepCopy(this.currentState)); 42 + this.currentState = this.redoStack.pop()!; 43 + return this.deepCopy(this.currentState); 44 + } 45 + getState(): T { 46 + return this.deepCopy(this.currentState); 47 + } 48 + canUndo(): boolean { 49 + return this.undoStack.length > 0; 50 + } 51 + canRedo(): boolean { 52 + return this.redoStack.length > 0; 53 + } 54 + } 55 + 56 + // Main application class 57 + class App { 58 + private state: AppState; 59 + private undoManager: UndoManager<AppState>; 60 + private storageKey: string = "valuesExerciseState"; 61 + 62 + constructor() { 63 + // Load state from localStorage or initialize default state. 64 + const saved = localStorage.getItem(this.storageKey); 65 + if (saved) { 66 + try { 67 + this.state = JSON.parse(saved) as AppState; 68 + } catch { 69 + this.state = this.defaultState(); 70 + } 71 + } else { 72 + this.state = this.defaultState(); 73 + } 74 + this.undoManager = new UndoManager<AppState>(this.state); 75 + this.bindEventListeners(); 76 + this.render(); 77 + this.updateUndoRedoButtons(); 78 + } 79 + 80 + // Default state with some sample value cards. 81 + // Replace the defaultState() function with the following code: 82 + 83 + private defaultState(): AppState { 84 + const values = [ 85 + "ACCEPTANCE", 86 + "ACCURACY", 87 + "ACHIEVEMENT", 88 + "ADVENTURE", 89 + "ATTRACTIVENESS", 90 + "AUTHORITY", 91 + "AUTONOMY", 92 + "BEAUTY", 93 + "CARING", 94 + "CHALLENGE", 95 + "CHANGE", 96 + "COMFORT", 97 + "COMMITMENT", 98 + "COMPASSION", 99 + "CONTRIBUTION", 100 + "COOPERATION", 101 + "COURTESY", 102 + "CREATIVITY", 103 + "DEPENDABILITY", 104 + "DUTY", 105 + "ECOLOGY", 106 + "EXCITEMENT", 107 + "FAITHFULNESS", 108 + "FAME", 109 + "FAMILY", 110 + "FITNESS", 111 + "FLEXIBILITY", 112 + "FORGIVENESS", 113 + "FRIENDSHIP", 114 + "FUN", 115 + "GENEROSITY", 116 + "GENUINENESS", 117 + "GOD'S WILL", 118 + "GROWTH", 119 + "HEALTH", 120 + "HELPFULNESS", 121 + "HONESTY", 122 + "HOPE", 123 + "HUMILITY", 124 + "HUMOR", 125 + "INDEPENDENCE", 126 + "INDUSTRY", 127 + "INNER PEACE", 128 + "INTIMACY", 129 + "JUSTICE", 130 + "KNOWLEDGE", 131 + "LEISURE", 132 + "LOVED", 133 + "LOVING", 134 + "MASTERY", 135 + "MINDFULNESS", 136 + "MODERATION", 137 + "MONOGAMY", 138 + "NONCONFORMITY", 139 + "NURTURANCE", 140 + "OPENNESS", 141 + "ORDER", 142 + "PASSION", 143 + "PLEASURE", 144 + "POPULARITY", 145 + "POWER", 146 + "PURPOSE", 147 + "RATIONALITY", 148 + "REALISM", 149 + "RESPONSIBILITY", 150 + "RISK", 151 + "ROMANCE", 152 + "SAFETY", 153 + "SELF-ACCEPTANCE", 154 + "SELF-CONTROL", 155 + "SELF-ESTEEM", 156 + "SELF-KNOWLEDGE", 157 + "SERVICE", 158 + "SEXUALITY", 159 + "SIMPLICITY", 160 + "SOLITUDE", 161 + "SPIRITUALITY", 162 + "STABILITY", 163 + "TOLERANCE", 164 + "TRADITION", 165 + "VIRTUE", 166 + "WEALTH", 167 + "WORLD PEACE", 168 + ]; 169 + const sampleCards: ValueCard[] = values.map((name, index) => ({ 170 + id: index + 1, 171 + name, 172 + column: "unassigned", 173 + order: index, 174 + })); 175 + return { 176 + currentPart: "part1", 177 + cards: sampleCards, 178 + finalStatements: {}, 179 + }; 180 + } 181 + 182 + // Save the state to localStorage. 183 + private saveState() { 184 + localStorage.setItem(this.storageKey, JSON.stringify(this.state)); 185 + } 186 + 187 + // Update state via the undoManager then re-render. 188 + private updateState(newState: AppState) { 189 + this.undoManager.execute(newState); 190 + this.state = this.undoManager.getState(); 191 + this.saveState(); 192 + this.render(); 193 + this.updateUndoRedoButtons(); 194 + } 195 + 196 + // Bind event listeners for UI interactions. 197 + private bindEventListeners() { 198 + // Navigation buttons 199 + document.getElementById("toPart2")?.addEventListener("click", () => { 200 + const newState = this.undoManager.getState(); 201 + newState.currentPart = "part2"; 202 + // In Part2, we carry over only the "veryImportant" cards. 203 + newState.cards = newState.cards 204 + .filter((c) => c.column === "veryImportant") 205 + .map((c, idx) => ({ ...c, column: "core", order: idx })); // default assign all to core initially 206 + this.updateState(newState); 207 + }); 208 + document.getElementById("backToPart1")?.addEventListener("click", () => { 209 + const newState = this.undoManager.getState(); 210 + newState.currentPart = "part1"; 211 + // Restore Part1: for simplicity, move cards back to "veryImportant" if they were in core/additional. 212 + newState.cards.forEach((c) => { 213 + if (c.column === "core" || c.column === "additional") { 214 + c.column = "veryImportant"; 215 + } 216 + }); 217 + this.updateState(newState); 218 + }); 219 + document.getElementById("toPart3")?.addEventListener("click", () => { 220 + const newState = this.undoManager.getState(); 221 + newState.currentPart = "part3"; 222 + this.updateState(newState); 223 + }); 224 + document.getElementById("backToPart2")?.addEventListener("click", () => { 225 + const newState = this.undoManager.getState(); 226 + newState.currentPart = "part2"; 227 + this.updateState(newState); 228 + }); 229 + document.getElementById("finish")?.addEventListener("click", () => { 230 + const newState = this.undoManager.getState(); 231 + newState.currentPart = "review"; 232 + this.updateState(newState); 233 + }); 234 + document.getElementById("restart")?.addEventListener("click", () => { 235 + const newState = this.defaultState(); 236 + this.updateState(newState); 237 + }); 238 + 239 + // Undo/Redo buttons 240 + document.getElementById("undoBtn")?.addEventListener("click", () => { 241 + const prev = this.undoManager.undo(); 242 + if (prev) { 243 + this.state = prev; 244 + this.saveState(); 245 + this.render(); 246 + this.updateUndoRedoButtons(); 247 + } 248 + }); 249 + document.getElementById("redoBtn")?.addEventListener("click", () => { 250 + const next = this.undoManager.redo(); 251 + if (next) { 252 + this.state = next; 253 + this.saveState(); 254 + this.render(); 255 + this.updateUndoRedoButtons(); 256 + } 257 + }); 258 + 259 + // Clear storage button 260 + document.getElementById("clearStorageBtn")?.addEventListener("click", () => { 261 + if (confirm("Are you sure you want to clear all saved data? This action cannot be undone.")) { 262 + localStorage.removeItem(this.storageKey); 263 + const newState = this.defaultState(); 264 + this.updateState(newState); 265 + } 266 + }); 267 + 268 + // Set up drag and drop for card movement in all card-container elements. 269 + const containers = document.querySelectorAll(".card-container"); 270 + containers.forEach((container) => { 271 + container.addEventListener("dragover", (e) => { 272 + e.preventDefault(); 273 + }); 274 + container.addEventListener("drop", (e) => { 275 + e.preventDefault(); 276 + const cardId = Number(e.dataTransfer?.getData("text/plain")); 277 + const targetColumn = ( 278 + container.parentElement as HTMLElement 279 + ).getAttribute("data-column"); 280 + if (targetColumn) { 281 + this.moveCard(cardId, targetColumn); 282 + } 283 + }); 284 + }); 285 + } 286 + 287 + // Moves a card (by id) to a new column. 288 + private moveCard(cardId: number, newColumn: string) { 289 + const newState = this.undoManager.getState(); 290 + const card = newState.cards.find((c) => c.id === cardId); 291 + if (card) { 292 + // If in Part2 and moving to core, enforce a maximum of 5 core cards. 293 + if (newState.currentPart === "part2" && newColumn === "core") { 294 + const coreCount = newState.cards.filter( 295 + (c) => c.column === "core" 296 + ).length; 297 + if (coreCount >= 5 && card.column !== "core") { 298 + alert("You can only have 5 core values!"); 299 + return; 300 + } 301 + } 302 + card.column = newColumn; 303 + // Optionally, update order if needed (here we simply set order to current timestamp). 304 + card.order = Date.now(); 305 + this.updateState(newState); 306 + } 307 + } 308 + 309 + // Render the UI based on the current state. 310 + private render() { 311 + // Hide all parts first. 312 + document.querySelectorAll(".exercise-part").forEach((section) => { 313 + (section as HTMLElement).style.display = "none"; 314 + }); 315 + // Show the current part. 316 + const partElem = document.getElementById(this.state.currentPart); 317 + if (partElem) { 318 + partElem.style.display = "block"; 319 + } 320 + // Render cards for the current part. 321 + if (this.state.currentPart === "part1") { 322 + // Clear containers 323 + [ 324 + "unassignedContainer", 325 + "notImportantContainer", 326 + "importantContainer", 327 + "veryImportantContainer", 328 + ].forEach((id) => { 329 + const container = document.getElementById(id); 330 + if (container) container.innerHTML = ""; 331 + }); 332 + // Render each card into its container. 333 + this.state.cards.forEach((card) => { 334 + const containerId = card.column + "Container"; 335 + const container = document.getElementById(containerId); 336 + if (container) { 337 + const cardElem = document.createElement("div"); 338 + cardElem.className = "card"; 339 + cardElem.draggable = true; 340 + cardElem.textContent = card.name; 341 + cardElem.dataset.cardId = card.id.toString(); 342 + cardElem.addEventListener("dragstart", (e) => { 343 + e.dataTransfer?.setData("text/plain", card.id.toString()); 344 + }); 345 + container.appendChild(cardElem); 346 + } 347 + }); 348 + } else if (this.state.currentPart === "part2") { 349 + // Clear containers for part2. 350 + ["coreContainer", "additionalContainer"].forEach((id) => { 351 + const container = document.getElementById(id); 352 + if (container) container.innerHTML = ""; 353 + }); 354 + this.state.cards.forEach((card) => { 355 + // In part2, only cards coming from part1's "veryImportant" are present. 356 + if (card.column === "core" || card.column === "additional") { 357 + const containerId = card.column + "Container"; 358 + const container = document.getElementById(containerId); 359 + if (container) { 360 + const cardElem = document.createElement("div"); 361 + cardElem.className = "card"; 362 + cardElem.draggable = true; 363 + cardElem.textContent = card.name; 364 + cardElem.dataset.cardId = card.id.toString(); 365 + cardElem.addEventListener("dragstart", (e) => { 366 + e.dataTransfer?.setData("text/plain", card.id.toString()); 367 + }); 368 + container.appendChild(cardElem); 369 + } 370 + } 371 + }); 372 + } else if (this.state.currentPart === "part3") { 373 + // Render text inputs for each core value. 374 + const finalStatements = document.getElementById("finalStatements"); 375 + if (finalStatements) { 376 + finalStatements.innerHTML = ""; 377 + const coreCards = this.state.cards.filter((c) => c.column === "core"); 378 + coreCards.forEach((card) => { 379 + const wrapper = document.createElement("div"); 380 + wrapper.className = "final-statement"; 381 + const label = document.createElement("label"); 382 + label.textContent = `I want ${card.name}: `; 383 + const input = document.createElement("input"); 384 + input.type = "text"; 385 + input.value = this.state.finalStatements[card.id] || ""; 386 + input.addEventListener("change", () => { 387 + const newState = this.undoManager.getState(); 388 + newState.finalStatements[card.id] = input.value; 389 + this.updateState(newState); 390 + }); 391 + wrapper.appendChild(label); 392 + wrapper.appendChild(input); 393 + finalStatements.appendChild(wrapper); 394 + }); 395 + } 396 + } else if (this.state.currentPart === "review") { 397 + const reviewContent = document.getElementById("reviewContent"); 398 + if (reviewContent) { 399 + reviewContent.innerHTML = ""; 400 + const title = document.createElement("h3"); 401 + title.textContent = "Your Core Values & Statements:"; 402 + reviewContent.appendChild(title); 403 + const list = document.createElement("ul"); 404 + const coreCards = this.state.cards.filter((c) => c.column === "core"); 405 + coreCards.forEach((card) => { 406 + const li = document.createElement("li"); 407 + const statement = this.state.finalStatements[card.id] || ""; 408 + li.textContent = `${card.name}: ${statement}`; 409 + list.appendChild(li); 410 + }); 411 + reviewContent.appendChild(list); 412 + } 413 + } 414 + } 415 + 416 + // Update the disabled state of the undo/redo buttons. 417 + private updateUndoRedoButtons() { 418 + const undoBtn = document.getElementById("undoBtn") as HTMLButtonElement; 419 + const redoBtn = document.getElementById("redoBtn") as HTMLButtonElement; 420 + if (undoBtn) undoBtn.disabled = !this.undoManager.canUndo(); 421 + if (redoBtn) redoBtn.disabled = !this.undoManager.canRedo(); 422 + } 423 + } 424 + 425 + // ---------------------- 426 + // Minimal Test Suite (TDD style) 427 + // ---------------------- 428 + function runTests() { 429 + let testCount = 0; 430 + let passedCount = 0; 431 + function assert(condition: boolean, message: string) { 432 + testCount++; 433 + if (!condition) { 434 + console.error("Test failed:", message); 435 + } else { 436 + passedCount++; 437 + } 438 + } 439 + 440 + // Test UndoManager 441 + const initialState = { value: 1 }; 442 + const um = new UndoManager(initialState); 443 + let state = um.getState(); 444 + assert(state.value === 1, "Initial state should be 1"); 445 + 446 + // Execute a change. 447 + um.execute({ value: 2 }); 448 + state = um.getState(); 449 + assert(state.value === 2, "State should update to 2"); 450 + 451 + // Undo should bring back 1. 452 + const undone = um.undo(); 453 + assert( 454 + undone !== null && undone.value === 1, 455 + "Undo should revert to state 1" 456 + ); 457 + 458 + // Redo should bring state to 2. 459 + const redone = um.redo(); 460 + assert( 461 + redone !== null && redone.value === 2, 462 + "Redo should set state back to 2" 463 + ); 464 + 465 + // Test endless undo/redo by executing multiple changes. 466 + um.execute({ value: 3 }); 467 + um.execute({ value: 4 }); 468 + assert(um.getState().value === 4, "State should now be 4"); 469 + um.undo(); 470 + assert(um.getState().value === 3, "Undo should revert to 3"); 471 + um.undo(); 472 + assert(um.getState().value === 2, "Undo should revert to 2"); 473 + um.redo(); 474 + assert(um.getState().value === 3, "Redo should bring state to 3"); 475 + 476 + console.log(`Tests passed: ${passedCount}/${testCount}`); 477 + } 478 + 479 + // Run tests if URL contains ?test=1 480 + if (window.location.search.includes("test=1")) { 481 + runTests(); 482 + } else { 483 + // Initialize the app normally. 484 + window.addEventListener("DOMContentLoaded", () => { 485 + new App(); 486 + }); 487 + }
+18
package.json
··· 1 + { 2 + "name": "values", 3 + "type": "module", 4 + "private": true, 5 + "devDependencies": { 6 + "@types/bun": "latest" 7 + }, 8 + "peerDependencies": { 9 + "typescript": "^5" 10 + }, 11 + "dependencies": { 12 + "parcel": "^2.14.4" 13 + }, 14 + "scripts": { 15 + "dev": "parcel ./index.html", 16 + "build": "parcel build ./index.html" 17 + } 18 + }
+59
styles.css
··· 1 + body { 2 + font-family: sans-serif; 3 + margin: 0; 4 + padding: 1em; 5 + background: #f5f5f5; 6 + } 7 + 8 + header { 9 + display: flex; 10 + justify-content: space-between; 11 + align-items: center; 12 + } 13 + 14 + #global-controls button { 15 + margin-right: 0.5em; 16 + } 17 + 18 + .exercise-part { 19 + margin-top: 1em; 20 + background: #fff; 21 + padding: 1em; 22 + border-radius: 4px; 23 + } 24 + 25 + .columns { 26 + display: flex; 27 + justify-content: space-around; 28 + flex-wrap: wrap; 29 + margin-bottom: 1em; 30 + } 31 + 32 + .column { 33 + flex: 1 1 200px; 34 + margin: 0.5em; 35 + padding: 0.5em; 36 + background: #eaeaea; 37 + border-radius: 4px; 38 + } 39 + 40 + .column h3 { 41 + text-align: center; 42 + } 43 + 44 + .card-container { 45 + min-height: 100px; 46 + padding: 0.5em; 47 + background: #fff; 48 + border: 1px dashed #ccc; 49 + border-radius: 4px; 50 + } 51 + 52 + .card { 53 + background: #d1e7dd; 54 + padding: 0.5em; 55 + margin: 0.5em 0; 56 + border-radius: 4px; 57 + cursor: grab; 58 + } 59 +
+28
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + // Environment setup & latest features 4 + "lib": ["ESNext", "DOM"], 5 + "target": "ESNext", 6 + "module": "ESNext", 7 + "moduleDetection": "force", 8 + "jsx": "react-jsx", 9 + "allowJs": true, 10 + 11 + // Bundler mode 12 + "moduleResolution": "bundler", 13 + "allowImportingTsExtensions": true, 14 + "verbatimModuleSyntax": true, 15 + "noEmit": true, 16 + 17 + // Best practices 18 + "strict": true, 19 + "skipLibCheck": true, 20 + "noFallthroughCasesInSwitch": true, 21 + "noUncheckedIndexedAccess": true, 22 + 23 + // Some stricter flags (disabled by default) 24 + "noUnusedLocals": false, 25 + "noUnusedParameters": false, 26 + "noPropertyAccessFromIndexSignature": false 27 + } 28 + }