From b90be01f6df392b41807ac75ef53eb446af2da97 Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 13:26:15 -0300 Subject: [PATCH 01/11] Resolved all TypeScript errors and warnings; and cleaned up and updated packages a bit --- package-lock.json | 329 ++++++------------ package.json | 8 +- tsconfig.json | 41 +++ ui/package.json | 6 +- ui/public/site.webmanifest | 12 +- ui/src/AboutDialog.svelte | 1 + ui/src/AttachmentsList.svelte | 2 - ui/src/Avatar.svelte | 1 - ui/src/BoardEditor.svelte | 12 +- ui/src/ControllerBoard.svelte | 4 +- ui/src/ControllerCreate.svelte | 4 +- ui/src/GamezPane/GamezPane.svelte | 97 +----- .../PieceAttachmentsDialog.svelte} | 18 +- ui/src/GamezPane/TopBar.svelte | 6 +- ui/src/Home/EditGameTypeDialog.svelte | 7 +- ui/src/Home/Home.svelte | 2 - ui/src/Home/tooltip.ts | 3 +- ui/src/LayoutBar.svelte | 1 - ui/src/SvgIcon.svelte | 2 +- ui/src/boardList.ts | 4 +- ui/src/{index.js => index.ts} | 0 ui/src/util.ts | 2 +- ui/tsconfig.json | 26 -- ui/tsconfig.node.json | 9 - ui/types.d.ts | 4 + ui/vite.config.ts | 23 +- we_dev/config.ts | 68 ++-- 27 files changed, 250 insertions(+), 442 deletions(-) create mode 100644 tsconfig.json rename ui/src/{AttachmentsDialog.svelte => GamezPane/PieceAttachmentsDialog.svelte} (79%) rename ui/src/{index.js => index.ts} (100%) delete mode 100644 ui/tsconfig.json delete mode 100644 ui/tsconfig.node.json create mode 100644 ui/types.d.ts diff --git a/package-lock.json b/package-lock.json index 0e8238f..3b10469 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,19 +13,13 @@ "@holochain-playground/cli": "^0.2", "@holochain/hc-spin": "^0.300.1", "@lightningrodlabs/we-dev-cli": "^0.12.0-dev.6", - "@rollup/plugin-typescript": "^8.0.0", - "@tsconfig/svelte": "^2.0.0", "bestzip": "^2.2.0", "concurrently": "^6.2.1", "concurrently-repeat": "^0.0.1", "cross-env": "^7.0.3", "json-parse-better-errors": "^1.0.2", "new-port-cli": "^1.0.0", - "rimraf": "^3.0.2", - "svelte-check": "^2.0.0", - "svelte-preprocess": "^4.10.7", - "tslib": "^2.0.0", - "typescript": "^4.0.0" + "rimraf": "^3.0.2" }, "engines": { "npm": ">=7.0.0" @@ -2148,46 +2142,6 @@ "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "dev": true }, - "node_modules/@rollup/plugin-typescript": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz", - "integrity": "sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, "node_modules/@scena/dragscroll": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", @@ -2458,12 +2412,6 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, - "node_modules/@tsconfig/svelte": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-2.0.1.tgz", - "integrity": "sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A==", - "dev": true - }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -2502,12 +2450,6 @@ "@types/jquery": "*" } }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -2536,6 +2478,12 @@ "@types/node": "*" } }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, "node_modules/@types/node": { "version": "22.1.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", @@ -2575,16 +2523,6 @@ "@types/node": "*" } }, - "node_modules/@types/sass": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", - "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", - "deprecated": "This is a stub types definition. sass provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "sass": "*" - } - }, "node_modules/@types/sizzle": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", @@ -5996,15 +5934,6 @@ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -7982,12 +7911,6 @@ "node": ">=4" } }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -9700,23 +9623,8 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "devOptional": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true, + "peer": true }, "node_modules/importx": { "version": "0.4.3", @@ -12246,18 +12154,6 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-author": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-1.0.0.tgz", @@ -13494,15 +13390,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/resolve-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-glob/-/resolve-glob-1.0.0.tgz", @@ -13796,6 +13683,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, + "optional": true, "peer": true, "bin": { "rollup": "dist/bin/rollup" @@ -13939,7 +13827,8 @@ "version": "1.77.8", "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", - "devOptional": true, + "optional": true, + "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -14162,18 +14051,27 @@ } }, "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.1.tgz", + "integrity": "sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==", "dev": true, "dependencies": { - "buffer-crc32": "^0.2.5", + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^1.0.0", "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" + "sander": "^0.5.0" }, "bin": { - "sorcery": "bin/index.js" + "sorcery": "bin/sorcery" + } + }, + "node_modules/sorcery/node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "engines": { + "node": ">=8.0.0" } }, "node_modules/sort-keys": { @@ -14260,13 +14158,6 @@ "source-map": "^0.6.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, "node_modules/spawn-command": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", @@ -14653,102 +14544,53 @@ } }, "node_modules/svelte-check": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", - "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.8.5.tgz", + "integrity": "sha512-3OGGgr9+bJ/+1nbPgsvulkLC48xBsqsgtc8Wam281H4G9F5v3mYGa2bHRsPuwHC5brKl4AxJH95QF73kmfihGQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.9", + "@jridgewell/trace-mapping": "^0.3.17", "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", "picocolors": "^1.0.0", "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" + "svelte-preprocess": "^5.1.3", + "typescript": "^5.0.3" }, "bin": { "svelte-check": "bin/svelte-check" }, "peerDependencies": { - "svelte": "^3.24.0" + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" } }, - "node_modules/svelte-dnd-list": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/svelte-dnd-list/-/svelte-dnd-list-0.1.8.tgz", - "integrity": "sha512-81Nt/niux7kf59lql0lxTAH0z8xwAxHdHC9dZT7MbfE32T6hgeLsLZ7RIBNAihQ040Io1KghqqPXD+k2viiKeA==" - }, - "node_modules/svelte-hmr": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", - "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0" - } - }, - "node_modules/svelte-materialify": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/svelte-materialify/-/svelte-materialify-0.3.11.tgz", - "integrity": "sha512-MLtZtdSOHditOdJOYqlB8s7NxIFRbYKXJzij5s9gz5WVbJFVEqdX2TqOleg4wYeMOujtOCm+/x3RP5YGyzRxIQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "peerDependencies": { - "svelte": ">=3.29.4" - } - }, - "node_modules/svelte-moveable": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/svelte-moveable/-/svelte-moveable-0.45.0.tgz", - "integrity": "sha512-1zGk11Dhq2IJMS7c0Y0BK5Km4a1B0pzHHC3wKoecByHYcoyPI/lzabdC32YjyH1SyTN5HGmQUNFEB7WiADvJ7Q==", - "dependencies": { - "framework-utils": "^1.1.0", - "moveable": "~0.53.0" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0" - } - }, - "node_modules/svelte-multiselect": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/svelte-multiselect/-/svelte-multiselect-8.6.2.tgz", - "integrity": "sha512-lR7zc/B6yAi9oZxIZyuv8q2VTRDS9aT84HRjHiEcmWD7vbz64pfbmKJZgCUcH5oCtr0wN1NfYymXQvRMfolZkQ==", - "dependencies": { - "svelte": "^3.59.1" - } - }, - "node_modules/svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "node_modules/svelte-check/node_modules/svelte-preprocess": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.4.tgz", + "integrity": "sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.30.5", + "sorcery": "^0.11.0", "strip-indent": "^3.0.0" }, "engines": { - "node": ">= 9.11.2" + "node": ">= 16.0.0" }, "peerDependencies": { "@babel/core": "^7.10.2", "coffeescript": "^2.5.1", "less": "^3.11.3 || ^4.0.0", "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "pug": "^3.0.0", "sass": "^1.26.8", "stylus": "^0.55.0", - "sugarss": "^2.0.0", - "svelte": "^3.23.0", - "typescript": "^3.9.5 || ^4.0.0" + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { "@babel/core": { @@ -14760,9 +14602,6 @@ "less": { "optional": true }, - "node-sass": { - "optional": true - }, "postcss": { "optional": true }, @@ -14786,13 +14625,63 @@ } } }, - "node_modules/svelte-preprocess/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "node_modules/svelte-check/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/svelte-dnd-list": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/svelte-dnd-list/-/svelte-dnd-list-0.1.8.tgz", + "integrity": "sha512-81Nt/niux7kf59lql0lxTAH0z8xwAxHdHC9dZT7MbfE32T6hgeLsLZ7RIBNAihQ040Io1KghqqPXD+k2viiKeA==" + }, + "node_modules/svelte-hmr": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-materialify": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/svelte-materialify/-/svelte-materialify-0.3.11.tgz", + "integrity": "sha512-MLtZtdSOHditOdJOYqlB8s7NxIFRbYKXJzij5s9gz5WVbJFVEqdX2TqOleg4wYeMOujtOCm+/x3RP5YGyzRxIQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "peerDependencies": { + "svelte": ">=3.29.4" + } + }, + "node_modules/svelte-moveable": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/svelte-moveable/-/svelte-moveable-0.45.0.tgz", + "integrity": "sha512-1zGk11Dhq2IJMS7c0Y0BK5Km4a1B0pzHHC3wKoecByHYcoyPI/lzabdC32YjyH1SyTN5HGmQUNFEB7WiADvJ7Q==", "dependencies": { - "sourcemap-codec": "^1.4.8" + "framework-utils": "^1.1.0", + "moveable": "~0.53.0" + }, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0" + } + }, + "node_modules/svelte-multiselect": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/svelte-multiselect/-/svelte-multiselect-8.6.2.tgz", + "integrity": "sha512-lR7zc/B6yAi9oZxIZyuv8q2VTRDS9aT84HRjHiEcmWD7vbz64pfbmKJZgCUcH5oCtr0wN1NfYymXQvRMfolZkQ==", + "dependencies": { + "svelte": "^3.59.1" } }, "node_modules/tableize-object": { @@ -17344,7 +17233,7 @@ } }, "ui": { - "version": "0.5.4", + "version": "0.6.0", "dependencies": { "@holochain-open-dev/elements": "^0.400.0-dev.0", "@holochain-open-dev/profiles": "^0.400.0-dev.1", @@ -17374,11 +17263,11 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^2.0.2", - "@tsconfig/svelte": "^3.0.0", + "@types/lodash": "^4.17.7", "@unocss/vite": "^0.61.9", "bestzip": "^2.2.0", "svelte": "^3.55.1", - "svelte-check": "^2.10.3", + "svelte-check": "^3.8.5", "tslib": "^2.4.1", "typescript": "^4.9.3", "unocss": "^0.61.9", @@ -17386,12 +17275,6 @@ "update": "^0.7.4", "vite": "^4.0.4" } - }, - "ui/node_modules/@tsconfig/svelte": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", - "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", - "dev": true } } } diff --git a/package.json b/package.json index bb90d82..f203813 100644 --- a/package.json +++ b/package.json @@ -23,19 +23,13 @@ "@holochain-playground/cli": "^0.2", "@holochain/hc-spin": "^0.300.1", "@lightningrodlabs/we-dev-cli": "^0.12.0-dev.6", - "@rollup/plugin-typescript": "^8.0.0", - "@tsconfig/svelte": "^2.0.0", "bestzip": "^2.2.0", "concurrently": "^6.2.1", "concurrently-repeat": "^0.0.1", "cross-env": "^7.0.3", "json-parse-better-errors": "^1.0.2", "new-port-cli": "^1.0.0", - "rimraf": "^3.0.2", - "svelte-check": "^2.0.0", - "svelte-preprocess": "^4.10.7", - "tslib": "^2.0.0", - "typescript": "^4.0.0" + "rimraf": "^3.0.2" }, "engines": { "npm": ">=7.0.0" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5f013f5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true, + "importsNotUsedAsValues": "error", + "preserveValueImports": true, + "ignoreDeprecations": "5.0", + "types": ["./node_modules/unplugin-icons/types/svelte3.d.ts"], + "baseUrl": ".", + "sourceMap": true, + "strict": false, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "paths": { + "~/*": ["ui/src/*"] + } + }, + "include": [ + "./node_modules/unplugin-icons/types/svelte3.d.ts", + "./ui/package.json", + "./ui/types.d.ts", + "./ui/vite.config.ts", + "./ui/src/**/*.d.ts", + "./ui/src/**/*.ts", + "./ui/src/**/*.js", + "./ui/src/**/*.svelte" + ] +} diff --git a/ui/package.json b/ui/package.json index 555bf84..d283427 100644 --- a/ui/package.json +++ b/ui/package.json @@ -6,7 +6,7 @@ "start": "vite --clearScreen false --port $UI_PORT", "build": "vite build", "build-check": "npm run check && vite build", - "check": "svelte-check --tsconfig ./tsconfig.json", + "check": "svelte-check --tsconfig ../tsconfig.json --compiler-warnings a11y-click-events-have-key-events:ignore,a11y-mouse-events-have-key-events:ignore", "package": "rm -f dist.zip && npm run build && cd dist && bestzip ../dist.zip *" }, "dependencies": { @@ -38,11 +38,11 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^2.0.2", - "@tsconfig/svelte": "^3.0.0", + "@types/lodash": "^4.17.7", "@unocss/vite": "^0.61.9", "bestzip": "^2.2.0", "svelte": "^3.55.1", - "svelte-check": "^2.10.3", + "svelte-check": "^3.8.5", "tslib": "^2.4.1", "typescript": "^4.9.3", "unocss": "^0.61.9", diff --git a/ui/public/site.webmanifest b/ui/public/site.webmanifest index 45dc8a2..0b08af1 100644 --- a/ui/public/site.webmanifest +++ b/ui/public/site.webmanifest @@ -1 +1,11 @@ -{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file +{ + "name": "", + "short_name": "", + "icons": [ + { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/ui/src/AboutDialog.svelte b/ui/src/AboutDialog.svelte index eaf3f98..05ab9e3 100644 --- a/ui/src/AboutDialog.svelte +++ b/ui/src/AboutDialog.svelte @@ -17,6 +17,7 @@ +

Gamez is a demonstration Holochain app built by the Holochain Foundation.

diff --git a/ui/src/AttachmentsList.svelte b/ui/src/AttachmentsList.svelte index 705dc04..83065a2 100644 --- a/ui/src/AttachmentsList.svelte +++ b/ui/src/AttachmentsList.svelte @@ -75,8 +75,6 @@ flex-direction: row; flex-wrap: wrap; } - .attachment-item { - } .attachment-item-with-delete { background-color: rgba(0, 0, 0, 0.25); padding: 4px; diff --git a/ui/src/Avatar.svelte b/ui/src/Avatar.svelte index 859e342..6dd8fd9 100644 --- a/ui/src/Avatar.svelte +++ b/ui/src/Avatar.svelte @@ -5,7 +5,6 @@ import UserIcon from '~icons/fa6-solid/user'; import { getContext } from 'svelte'; import type { GamezStore } from './store'; - import SvgIcon from './SvgIcon.svelte'; import { tooltip as tooltipDirective } from './Home/tooltip'; const { getStore }: any = getContext('gzStore'); diff --git a/ui/src/BoardEditor.svelte b/ui/src/BoardEditor.svelte index 8785381..cd64613 100644 --- a/ui/src/BoardEditor.svelte +++ b/ui/src/BoardEditor.svelte @@ -11,7 +11,7 @@ import '@shoelace-style/shoelace/dist/components/checkbox/checkbox.js'; import SvgIcon from './SvgIcon.svelte'; import { cloneDeep } from "lodash"; - import { BoardType } from './boardList'; + import { BoardType } from './boardList'; // import type { GamezStore } from './store'; // const { getStore } :any = getContext('gzStore'); @@ -22,10 +22,12 @@ export let canDelete = false export let cancelEdit + const generateBlankBoardProps = (): BoardProps => ({bgUrl: "", pieces:{}, players:[], attachments:[], turn: 0, bgHeight: "", bgWidth: ""}) + let text = '' let minPlayers = "" let maxPlayers = "" - let props:BoardProps = {bgUrl: "", pieces:{}, players:[], attachments:[], turn: 0, bgHeight: "", bgWidth: ""} + let props: BoardProps = generateBlankBoardProps(); let pieceDefs: Array = [] let nameInput let turns = false @@ -58,7 +60,7 @@ minPlayers = state.min_players ? `${state.min_players}` : "" minPlayersInput.value = minPlayers pieceDefs = cloneDeep(state.pieceDefs) - props = state.props ? cloneDeep(state.props) : {bgUrl:""} + props = state.props ? cloneDeep(state.props) : generateBlankBoardProps(); turns = state.turns turnsInput.checked = turns playerPieces = state.playerPieces @@ -178,7 +180,7 @@ {#if pieceDefs[index].type===PieceType.Image} pieceDefs[index].images[0] = e.target.value}> - + {`${pieceDefs[index].name} {/if}
@@ -192,7 +194,7 @@
props.bgUrl = e.target.value} /> {#if props.bgUrl} - + Board {:else}
{/if} diff --git a/ui/src/ControllerBoard.svelte b/ui/src/ControllerBoard.svelte index 0be2790..5ff7674 100644 --- a/ui/src/ControllerBoard.svelte +++ b/ui/src/ControllerBoard.svelte @@ -5,13 +5,13 @@ import type { AppClient, EntryHash } from "@holochain/client"; import type { SynStore } from "@holochain-syn/store"; import type { ProfilesStore } from "@holochain-open-dev/profiles"; - import type { WeClient } from "@lightningrodlabs/we-applet"; + import type { WeaveClient } from "@lightningrodlabs/we-applet"; export let roleName = ""; export let client: AppClient; export let profilesStore: ProfilesStore; - export let weaveClient : WeClient + export let weaveClient : WeaveClient export let board : EntryHash let store: GamezStore = new GamezStore( diff --git a/ui/src/ControllerCreate.svelte b/ui/src/ControllerCreate.svelte index 2f2ce30..5ddeea2 100644 --- a/ui/src/ControllerCreate.svelte +++ b/ui/src/ControllerCreate.svelte @@ -4,7 +4,7 @@ import { encodeHashToBase64, type AppClient } from '@holochain/client'; import type { SynStore } from '@holochain-syn/store'; import type { ProfilesStore } from "@holochain-open-dev/profiles"; - import type { WeClient } from '@lightningrodlabs/we-applet'; + import type { WeaveClient } from '@lightningrodlabs/we-applet'; import { SynClient } from '@holochain-syn/core'; import { getMyDna } from './util'; import { Board } from './board'; @@ -14,7 +14,7 @@ export let roleName = "" export let client : AppClient - export let weaveClient : WeClient + export let weaveClient : WeaveClient export let profilesStore : ProfilesStore export let view diff --git a/ui/src/GamezPane/GamezPane.svelte b/ui/src/GamezPane/GamezPane.svelte index 5b8c534..22219ad 100644 --- a/ui/src/GamezPane/GamezPane.svelte +++ b/ui/src/GamezPane/GamezPane.svelte @@ -11,7 +11,7 @@ } from '../board'; import EditBoardDialog from '../Home/EditBoardDialog.svelte'; import Avatar from '../Avatar.svelte'; - import AttachmentsDialog from '../AttachmentsDialog.svelte'; + import PieceAttachmentDialog from './PieceAttachmentsDialog.svelte'; import { cloneDeep } from 'lodash'; import sanitize from 'sanitize-filename'; import SvgIcon from '../SvgIcon.svelte'; @@ -151,9 +151,9 @@ showEmbed = !showEmbed; }; - let attachmentsDialog: AttachmentsDialog; + let pieceAttachmentDialog: PieceAttachmentDialog; function editPieceAttachments(piece: Piece) { - if (isWeContext()) attachmentsDialog.open(piece); + if (isWeContext()) pieceAttachmentDialog.open(piece); } let walSpace: WalSpace; @@ -418,9 +418,10 @@ copyWALToClipboard()} on:export={() => exportBoard($state)} on:settings={() => editBoardDialog.open(cloneDeep($activeHash))} @@ -502,7 +503,8 @@ on:dragover={(ev) => handleDragOver(ev, 'board')} style={`${isPanning ? 'cursor: move;' : ''} background-position: ${panX}px ${panY}px;`} > - +
diff --git a/ui/src/AttachmentsDialog.svelte b/ui/src/GamezPane/PieceAttachmentsDialog.svelte similarity index 79% rename from ui/src/AttachmentsDialog.svelte rename to ui/src/GamezPane/PieceAttachmentsDialog.svelte index 32f2096..490bbc7 100644 --- a/ui/src/AttachmentsDialog.svelte +++ b/ui/src/GamezPane/PieceAttachmentsDialog.svelte @@ -1,13 +1,13 @@ diff --git a/ui/src/GamezPane/TopBar.svelte b/ui/src/GamezPane/TopBar.svelte index e1936ee..4b61183 100644 --- a/ui/src/GamezPane/TopBar.svelte +++ b/ui/src/GamezPane/TopBar.svelte @@ -12,7 +12,6 @@ // Local import { tooltip } from '../Home/tooltip'; - import SvgIcon from '../SvgIcon.svelte'; import AttachmentsList from '../AttachmentsList.svelte'; import Avatar from '../Avatar.svelte'; @@ -21,6 +20,7 @@ export let attachments: string[]; export let showAddToPocket: boolean; export let standAlone: boolean; + export let boardName: string; export let participants: [Uint8Array, SessionParticipant][] | null; export let myAgentPubKey: Uint8Array; @@ -28,6 +28,10 @@
{#if showAddToPocket}
+ {#if standAlone} +
{boardName}
+ {/if} + + + \ No newline at end of file + button { + border-radius: 3px; + margin-left: 5px; + } + .primary { + color: white; + background-color: lightskyblue; + } + .secondary { + color: black; + } + .danger { + color: red; + } + .sm { + font-size: 1em; + padding: 0.1em; + } + .lg { + font-size: 2em; + } + diff --git a/ui/src/ControllerBoard.svelte b/ui/src/ControllerBoard.svelte index 1f7ddbd..2205124 100644 --- a/ui/src/ControllerBoard.svelte +++ b/ui/src/ControllerBoard.svelte @@ -1,53 +1,46 @@
{#if store} - {#if $activeBoardHash !== undefined} - - {:else} -
- {/if} + {#if $activeBoardHash !== undefined} + + {:else} +
+ {/if} {:else}
{/if} @@ -59,7 +52,7 @@ .app { margin: 0; padding-bottom: 10px; - background-image: var(--bg-img, url("")); + background-image: var(--bg-img, url('')); background-size: cover; display: flex; flex-direction: column; diff --git a/ui/src/ControllerCreate.svelte b/ui/src/ControllerCreate.svelte index 119e888..b70b808 100644 --- a/ui/src/ControllerCreate.svelte +++ b/ui/src/ControllerCreate.svelte @@ -1,30 +1,25 @@ -
-
-
-
- -
- disabled = !e.target.value || !inputElement.value} +
+
+
+
+
+ (disabled = !e.target.value || !inputElement.value)} > - {#if $defsList.status == "complete"} - {#each $defsList.value as def} - - {def.board.name} - - {/each} - {:else} - loading - {/if} - - disabled = !e.target.value || !gameTypeElement.value} - placeholder="Game Name" - style="margin-top:5px;" + {#if $defsList.status == 'complete'} + {#each $defsList.value as def} + + {def.board.name} + + {/each} + {:else} + loading + {/if} + + (disabled = !e.target.value || !gameTypeElement.value)} + placeholder="Game Name" + style="margin-top:5px;" >
- { - view.cancel() - }}>Cancel - { + view.cancel(); + }}>Cancel + { - if ($defsList.status == "complete") { - try { - const defHashB64 = gameTypeElement.value - const defBoard = Array.from($defsList.value).find(def=>encodeHashToBase64(def.originalHash)==defHashB64) - const state = cloneDeep(defBoard.board); - state.name = inputElement.value - const board = await store.boardList.makeBoard(state); - const dnaHash = await getMyDna(roleName, client) - view.resolve({hrl:[dnaHash, board.hash]}) - } catch(e) { - console.log("ERR",e) - view.reject(e) + {disabled} + on:click={async () => { + if ($defsList.status == 'complete') { + try { + const defHashB64 = gameTypeElement.value; + const defBoard = Array.from($defsList.value).find( + (def) => encodeHashToBase64(def.originalHash) == defHashB64, + ); + const state = cloneDeep(defBoard.board); + state.name = inputElement.value; + const board = await store.boardList.makeBoard(state); + const dnaHash = await getMyDna(roleName, client); + view.resolve({ hrl: [dnaHash, board.hash] }); + } catch (e) { + console.log('ERR', e); + view.reject(e); + } + } else { + console.log('click before defs loaded'); } - } else { - console.log("click before defs loaded") - } - }}>Create + }}>Create
-
+
+ diff --git a/ui/src/GamezPane/PieceAttachmentsDialog.svelte b/ui/src/GamezPane/PieceAttachmentsDialog.svelte index 03617f7..6dc5e0c 100644 --- a/ui/src/GamezPane/PieceAttachmentsDialog.svelte +++ b/ui/src/GamezPane/PieceAttachmentsDialog.svelte @@ -1,88 +1,92 @@ {#if isWeContext()} - removeAttachment(e.detail)}/> + removeAttachment(e.detail)} /> -
- -
- +
+ +
{/if}
\ No newline at end of file + diff --git a/ui/src/GamezPane/WalAsset.svelte b/ui/src/GamezPane/WalAsset.svelte index 7bbfb47..c580c7e 100644 --- a/ui/src/GamezPane/WalAsset.svelte +++ b/ui/src/GamezPane/WalAsset.svelte @@ -1,18 +1,20 @@ + + - - - -
-
- - +
+
+
- import { getContext, onMount } from 'svelte'; - import { cloneDeep } from "lodash"; - import '@shoelace-style/shoelace/dist/components/dialog/dialog.js'; - import type SlDialog from '@shoelace-style/shoelace/dist/components/dialog/dialog'; - import '@shoelace-style/shoelace/dist/components/button/button.js'; - - import BoardEditor from '~/shared/BoardEditor.svelte'; - import type { BoardDefData, GamezStore } from '~/shared/store'; - import type { BoardProps, BoardState, PieceDef } from '~/shared/board'; - - let dialog: SlDialog - onMount(async () => { - - }) - let boardDef: BoardDefData - let board: BoardState - - export const open = async (def: BoardDefData )=> { - boardDef = def - board = cloneDeep(def.board) - boardEditor.edit(board) - dialog.show() - } + import { getContext, onMount } from 'svelte'; + import { cloneDeep } from 'lodash'; + import '@shoelace-style/shoelace/dist/components/dialog/dialog.js'; + import type SlDialog from '@shoelace-style/shoelace/dist/components/dialog/dialog'; + import '@shoelace-style/shoelace/dist/components/button/button.js'; - const { getStore } :any = getContext('gzStore'); + import BoardEditor from '~/shared/BoardEditor.svelte'; + import type { BoardDefData, GamezStore } from '~/shared/store'; + import type { BoardProps, BoardState, PieceDef } from '~/shared/board'; - const store:GamezStore = getStore(); + let dialog: SlDialog; + onMount(async () => {}); + let boardDef: BoardDefData; + let board: BoardState; - const updateBoard = async ( name: string, pieceDefs: PieceDef[], props: BoardProps, minPlayers:number, maxPlayers:number, turns: boolean, playerPieces: boolean) => { - const newBoard = { - status: board.status, - max_players: maxPlayers, - min_players: minPlayers, - turns, - playerPieces, - name, - pieceDefs, - props, - boundTo: board.boundTo, - creator: board.creator - }; + export const open = async (def: BoardDefData) => { + boardDef = def; + board = cloneDeep(def.board); + boardEditor.edit(board); + dialog.show(); + }; - await store.client.updateBoardDef(boardDef.originalHash, boardDef.record.actionHash, newBoard) + const { getStore }: any = getContext('gzStore'); - close() - } - // const archiveBoard = () => { - // store.boardList.archiveBoard(boardHash) - // close() - // } - const close = ()=>{ - dialog.hide() - } - let boardEditor + const store: GamezStore = getStore(); + + const updateBoard = async ( + name: string, + pieceDefs: PieceDef[], + props: BoardProps, + minPlayers: number, + maxPlayers: number, + turns: boolean, + playerPieces: boolean, + ) => { + const newBoard = { + status: board.status, + max_players: maxPlayers, + min_players: minPlayers, + turns, + playerPieces, + name, + pieceDefs, + props, + boundTo: board.boundTo, + creator: board.creator, + }; + + await store.client.updateBoardDef(boardDef.originalHash, boardDef.record.actionHash, newBoard); + + close(); + }; + // const archiveBoard = () => { + // store.boardList.archiveBoard(boardHash) + // close() + // } + const close = () => { + dialog.hide(); + }; + let boardEditor; -{ + + { if (event.detail.source === 'overlay') { - event.preventDefault(); -}}}> - + event.preventDefault(); + } + }} +> + diff --git a/ui/src/Home/NewBoardDialog.svelte b/ui/src/Home/NewBoardDialog.svelte index 9a5a99c..12bb6f4 100644 --- a/ui/src/Home/NewBoardDialog.svelte +++ b/ui/src/Home/NewBoardDialog.svelte @@ -1,36 +1,61 @@ -{ - if (event.detail.source === 'overlay') { - event.preventDefault(); - }}}> - dialog.hide()} /> + + { + if (event.detail.source === 'overlay') { + event.preventDefault(); + } + }} +> + dialog.hide()} /> diff --git a/ui/src/Home/StartGameDialog.svelte b/ui/src/Home/StartGameDialog.svelte index d8498f1..91e39a5 100644 --- a/ui/src/Home/StartGameDialog.svelte +++ b/ui/src/Home/StartGameDialog.svelte @@ -1,20 +1,20 @@ - + - -
-

Gamez is a demonstration Holochain app built by the Holochain Foundation.

-

Version: UI {__APP_VERSION__}; DNA {__DNA_VERSION__}

-

Developers: - Check out this hApp's source-code in our github repo. - This project's real-time syncronization is powered by Syn, - a library that makes it really easy to build this kind of real-time collaboration into Holochain apps. -

-

Copyright © 2023-2024 Holochain Foundation. This software is distributed under the MIT License

-

DNA Hash: {store.dnaHash ? encodeHashToBase64(store.dnaHash) : 'Loading...'}

-
+ +
+

Gamez is a demonstration Holochain app built by the Holochain Foundation.

+

Version: UI {__APP_VERSION__}; DNA {__DNA_VERSION__}

+

+ Developers: + Check out this hApp's source-code + in our github repo. This project's + real-time syncronization is powered by Syn, a + library that makes it really easy to build this kind of real-time collaboration into Holochain + apps. +

+

Copyright © 2023-2024 Holochain Foundation. This software is distributed under the MIT + License

+

DNA Hash: {store.dnaHash ? encodeHashToBase64(store.dnaHash) : 'Loading...'}

+
- \ No newline at end of file diff --git a/ui/src/Layout/ParticipantsDialog.svelte b/ui/src/Layout/ParticipantsDialog.svelte index cf45bd5..718a4d2 100644 --- a/ui/src/Layout/ParticipantsDialog.svelte +++ b/ui/src/Layout/ParticipantsDialog.svelte @@ -1,15 +1,15 @@ - +
- {#if $agents.status == "pending"} + {#if $agents.status == 'pending'} {:else} - {#each $agents.status == "complete" ? Array.from($agents.value) : [] as agentPubKey} + {#each $agents.status == 'complete' ? Array.from($agents.value) : [] as agentPubKey}
-
+
- {#if $agentBoards.status == "complete" && $agentBoards.value.get(agentPubKey).length} -
-
- -
- {#each $agentBoards.value.get(agentPubKey) as board} - - {/each} + {#if $agentBoards.status == 'complete' && $agentBoards.value.get(agentPubKey).length} +
+
+
- {/if} + {#each $agentBoards.value.get(agentPubKey) as board} + + {/each} +
+ {/if}
{/each} {/if} diff --git a/ui/src/Loader.svelte b/ui/src/Loader.svelte index 115ed41..61918d6 100644 --- a/ui/src/Loader.svelte +++ b/ui/src/Loader.svelte @@ -22,4 +22,4 @@ transform: rotate(360deg); } } - \ No newline at end of file + diff --git a/ui/src/app.css b/ui/src/app.css index a54a18f..3a47f73 100644 --- a/ui/src/app.css +++ b/ui/src/app.css @@ -1,39 +1,38 @@ @font-face { - font-family: "Poppins"; + font-family: 'Poppins'; src: url('/fonts/Poppins-Regular.ttf'); font-weight: regular; } @font-face { - font-family: "Poppins"; + font-family: 'Poppins'; src: url('/fonts/Poppins-SemiBold.ttf'); font-weight: bold; } @font-face { - font-family: "Poppins"; + font-family: 'Poppins'; src: url('/fonts/Poppins-Italic.ttf'); font-style: italic; } @font-face { - font-family: "Poppins"; + font-family: 'Poppins'; src: url('/fonts/Poppins-SemiBoldItalic.ttf'); font-style: italic; font-weight: bold; } - :root { - --mdc-theme-primary: #7B1FA2; - --mdc-theme-secondary: #FF5722; + --mdc-theme-primary: #7b1fa2; + --mdc-theme-secondary: #ff5722; --main-saturation: 25%; --main-hue: 130; - --primary-color: #536DFE; - --secondary-color: #FF9800; - --bg-color: #F5F5F5; - --light-text-color: #FFF; + --primary-color: #536dfe; + --secondary-color: #ff9800; + --bg-color: #f5f5f5; + --light-text-color: #fff; --dark-text-color: #333; - --border-color: #DDD; + --border-color: #ddd; } * { @@ -42,12 +41,13 @@ padding: 0; } -html, body { - font-family: "Poppins", sans-serif; - letter-spacing: -.008rem; +html, +body { + font-family: 'Poppins', sans-serif; + letter-spacing: -0.008rem; font-size: 14px; line-height: 1.5; - color: rgba(86, 94, 109, 1.0); + color: rgba(86, 94, 109, 1); padding: 0px; height: 100%; overflow: hidden; /* In general, it's a good idea to have the body take up the full viewport height and have a fixed layout with no scrollbar. Then, you can have a scrollable inner container like .pane-content to handle the overflow of the content. This approach helps keep the page structure clean and allows you to control the scrolling behavior more effectively. */ @@ -62,7 +62,8 @@ button { cursor: pointer; } -input, button { +input, +button { font-family: inherit; font-size: inherit; } diff --git a/ui/src/global.d.ts b/ui/src/global.d.ts index 3fa5b49..1fa8dc9 100644 --- a/ui/src/global.d.ts +++ b/ui/src/global.d.ts @@ -1,2 +1,2 @@ declare const __APP_VERSION__: string; -declare const __DNA_VERSION__: string; \ No newline at end of file +declare const __DNA_VERSION__: string; diff --git a/ui/src/icons/LogoIcon.svelte b/ui/src/icons/LogoIcon.svelte index e4dd8ca..d6d3d1d 100644 --- a/ui/src/icons/LogoIcon.svelte +++ b/ui/src/icons/LogoIcon.svelte @@ -1 +1 @@ -
BoardGamez
\ No newline at end of file +
BoardGamez
diff --git a/ui/src/main.ts b/ui/src/main.ts index a15cfce..344514f 100644 --- a/ui/src/main.ts +++ b/ui/src/main.ts @@ -1,7 +1,9 @@ -import "@unocss/reset/tailwind.css"; -import "virtual:uno.css"; -import "./app.css"; -import App from "./App.svelte"; +import '@unocss/reset/tailwind.css'; +import 'virtual:uno.css'; + +import './app.css'; +import App from './App.svelte'; + // import { setBasePath } from '@shoelace-style/shoelace/dist/utilities/base-path.js'; // setBasePath('/@shoelace-style/shoelace/dist'); diff --git a/ui/src/shared/Avatar.svelte b/ui/src/shared/Avatar.svelte index b305d70..b4a59ae 100644 --- a/ui/src/shared/Avatar.svelte +++ b/ui/src/shared/Avatar.svelte @@ -2,7 +2,7 @@ import { getContext } from 'svelte'; import UserIcon from '~icons/fa6-solid/user'; import '@shoelace-style/shoelace/dist/components/skeleton/skeleton.js'; - + import { encodeHashToBase64, type AgentPubKey } from '@holochain/client'; import '@holochain-open-dev/profiles/dist/elements/agent-avatar.js'; diff --git a/ui/src/shared/BoardEditor.svelte b/ui/src/shared/BoardEditor.svelte index d1329d5..19bc869 100644 --- a/ui/src/shared/BoardEditor.svelte +++ b/ui/src/shared/BoardEditor.svelte @@ -10,229 +10,362 @@ import '@shoelace-style/shoelace/dist/components/checkbox/checkbox.js'; import { PieceDef, type BoardProps, Board, type BoardState, PieceType } from './board'; - import SvgIcon from './SvgIcon.svelte'; - import { cloneDeep } from "lodash"; - import { BoardType } from './boardList'; + import SvgIcon from './SvgIcon.svelte'; + import { cloneDeep } from 'lodash'; + import { BoardType } from './boardList'; - // import type { GamezStore } from './store'; - // const { getStore } :any = getContext('gzStore'); - // const store:GamezStore = getStore(); + // import type { GamezStore } from './store'; + // const { getStore } :any = getContext('gzStore'); + // const store:GamezStore = getStore(); - export let handleSave - export let handleDelete = undefined - export let canDelete = false - export let cancelEdit + export let handleSave; + export let handleDelete = undefined; + export let canDelete = false; + export let cancelEdit; - const generateBlankBoardProps = (): BoardProps => ({bgUrl: "", pieces:{}, players:[], attachments:[], turn: 0, bgHeight: "", bgWidth: ""}) + const generateBlankBoardProps = (): BoardProps => ({ + bgUrl: '', + pieces: {}, + players: [], + attachments: [], + turn: 0, + bgHeight: '', + bgWidth: '', + }); - let text = '' - let minPlayers = "" - let maxPlayers = "" - let props: BoardProps = generateBlankBoardProps(); - let pieceDefs: Array = [] - let nameInput - let turns = false - let turnsInput - let playerPieces = false - let playerPiecesInput + let text = ''; + let minPlayers = ''; + let maxPlayers = ''; + let props: BoardProps = generateBlankBoardProps(); + let pieceDefs: Array = []; + let nameInput; + let turns = false; + let turnsInput; + let playerPieces = false; + let playerPiecesInput; - $: valid = text != "" && props.bgUrl !="" && parseInt(minPlayers) >= 1 && (parseInt(maxPlayers) - parseInt(minPlayers) >= 0) + $: valid = + text != '' && + props.bgUrl != '' && + parseInt(minPlayers) >= 1 && + parseInt(maxPlayers) - parseInt(minPlayers) >= 0; - export const reset = () => { - nameInput.value = "" - maxPlayersInput.value = "" - minPlayersInput.value = "" - text = '' - maxPlayers = "" - minPlayers = "" - props = {bgUrl: "", pieces:{}, players:[], attachments:[], turn: 0, bgHeight: "", bgWidth: ""} - pieceDefs = [] - turns = false - turnsInput.value = false - playerPieces = false - playerPiecesInput.value = false - } + export const reset = () => { + nameInput.value = ''; + maxPlayersInput.value = ''; + minPlayersInput.value = ''; + text = ''; + maxPlayers = ''; + minPlayers = ''; + props = { + bgUrl: '', + pieces: {}, + players: [], + attachments: [], + turn: 0, + bgHeight: '', + bgWidth: '', + }; + pieceDefs = []; + turns = false; + turnsInput.value = false; + playerPieces = false; + playerPiecesInput.value = false; + }; - export const edit = async (state: BoardState)=> { - text = state.name - nameInput.value = text - maxPlayers = state.max_players ? `${state.max_players}` : "" - maxPlayersInput.value = maxPlayers - minPlayers = state.min_players ? `${state.min_players}` : "" - minPlayersInput.value = minPlayers - pieceDefs = cloneDeep(state.pieceDefs) - props = state.props ? cloneDeep(state.props) : generateBlankBoardProps(); - turns = state.turns - turnsInput.checked = turns - playerPieces = state.playerPieces - playerPiecesInput.checked = playerPieces - } + export const edit = async (state: BoardState) => { + text = state.name; + nameInput.value = text; + maxPlayers = state.max_players ? `${state.max_players}` : ''; + maxPlayersInput.value = maxPlayers; + minPlayers = state.min_players ? `${state.min_players}` : ''; + minPlayersInput.value = minPlayers; + pieceDefs = cloneDeep(state.pieceDefs); + props = state.props ? cloneDeep(state.props) : generateBlankBoardProps(); + turns = state.turns; + turnsInput.checked = turns; + playerPieces = state.playerPieces; + playerPiecesInput.checked = playerPieces; + }; - const addPieceDef = () => { - pieceDefs.push(new PieceDef(PieceType.Emoji, "smiley", 30, 30, [`🙂`])) - pieceDefs = pieceDefs - } - const deletePieceDef = (index) => () => { - pieceDefs.splice(index, 1) - pieceDefs = pieceDefs - } - onMount( async () => { - }) - const parseIntPlayers = (val:string):number => { - let v = parseInt(val) - return isNaN(v) ? 0 : v - } - const handleKeydown = (e) => { - if (e.key === "Escape") { - cancelEdit() - } else if (e.key === "Enter" && e.ctrlKey) { - handleSave(text, pieceDefs, props, parseIntPlayers(minPlayers), parseIntPlayers(maxPlayers), turns, playerPieces) - } else if (e.key === 'Tab') { - // trap focus - const tabbable = Array.from(document.querySelectorAll('input')) + const addPieceDef = () => { + pieceDefs.push(new PieceDef(PieceType.Emoji, 'smiley', 30, 30, [`🙂`])); + pieceDefs = pieceDefs; + }; + const deletePieceDef = (index) => () => { + pieceDefs.splice(index, 1); + pieceDefs = pieceDefs; + }; + onMount(async () => {}); + const parseIntPlayers = (val: string): number => { + let v = parseInt(val); + return isNaN(v) ? 0 : v; + }; + const handleKeydown = (e) => { + if (e.key === 'Escape') { + cancelEdit(); + } else if (e.key === 'Enter' && e.ctrlKey) { + handleSave( + text, + pieceDefs, + props, + parseIntPlayers(minPlayers), + parseIntPlayers(maxPlayers), + turns, + playerPieces, + ); + } else if (e.key === 'Tab') { + // trap focus + const tabbable = Array.from(document.querySelectorAll('input')); - let index = tabbable.findIndex((elem)=>elem == document.activeElement) - - if (index === -1 && e.shiftKey) index = 0; + let index = tabbable.findIndex((elem) => elem == document.activeElement); - index += tabbable.length + (e.shiftKey ? -1 : 1); - index %= tabbable.length; + if (index === -1 && e.shiftKey) index = 0; - tabbable[index].focus(); - e.preventDefault(); - } - } - const onDropPieceDefs = ({ detail: { from, to } }: CustomEvent) => { - if (!to || from === to || from.dropZoneID !== "pieceDefs") { - return; - } + index += tabbable.length + (e.shiftKey ? -1 : 1); + index %= tabbable.length; - pieceDefs = reorder(pieceDefs, from.index, to.index); + tabbable[index].focus(); + e.preventDefault(); + } + }; + const onDropPieceDefs = ({ detail: { from, to } }: CustomEvent) => { + if (!to || from === to || from.dropZoneID !== 'pieceDefs') { + return; } - let showEmojiPicker :number|undefined = undefined - let emojiDialog, minPlayersInput, maxPlayersInput + + pieceDefs = reorder(pieceDefs, from.index, to.index); + }; + let showEmojiPicker: number | undefined = undefined; + let emojiDialog, minPlayersInput, maxPlayersInput; - -
-
- text= e.target.value}> -
-
- minPlayers= e.target.value}> - maxPlayers= e.target.value}> - {turns= e.target.checked}}>Enforce Turns -
-
- {playerPieces= e.target.checked}}>Players Are Pieces + +
+
+ (text = e.target.value)} + > +
+
+ (minPlayers = e.target.value)} + > + (maxPlayers = e.target.value)} + > + { + turns = e.target.checked; + }}>Enforce Turns +
+
+ { + playerPieces = e.target.checked; + }}>Players Are Pieces -
- Pieces: +
+ Pieces: - addPieceDef()}> - - -
- - { - pieceDefs[showEmojiPicker].images[0] = e.detail.unicode - showEmojiPicker = undefined - emojiDialog.hide() - } - }> - - - -
-
-
-
- addPieceDef()}> + + +
+ + { + pieceDefs[showEmojiPicker].images[0] = e.detail.unicode; + showEmojiPicker = undefined; + emojiDialog.hide(); + }} + > + + +
+
+
+
+ {pieceDefs[index].type=parseInt(e.target.value)}} + on:sl-change={(e) => { + pieceDefs[index].type = parseInt(e.target.value); + }} + > + Emoji + Image + + (pieceDefs[index].name = e.target.value)} + > + + (pieceDefs[index].width = parseInt(e.target.value))} + > + + (pieceDefs[index].height = parseInt(e.target.value))} + > + +
+
+ {#if pieceDefs[index].type === PieceType.Emoji} + (pieceDefs[index].images[0] = e.target.value)} + > + + { + showEmojiPicker = index; + emojiDialog.show(); + }} > - Emoji - Image - - pieceDefs[index].name = e.target.value}> - pieceDefs[index].width = parseInt(e.target.value)}> - pieceDefs[index].height = parseInt(e.target.value)}> -
-
- {#if pieceDefs[index].type===PieceType.Emoji} - pieceDefs[index].images[0] = e.target.value}> - {showEmojiPicker = index;emojiDialog.show()}} > - Pick - - {/if} - {#if pieceDefs[index].type===PieceType.Image} - pieceDefs[index].images[0] = e.target.value}> - {`${pieceDefs[index].name} - {/if} -
+ Pick + + {/if} + {#if pieceDefs[index].type === PieceType.Image} + (pieceDefs[index].images[0] = e.target.value)} + > + + {`${pieceDefs[index].name} + {/if}
- - - -
-
-
- -
- props.bgUrl = e.target.value} /> - {#if props.bgUrl} - Board - {:else} -
- {/if} - -
+
+ + + +
+ +
-
- props.bgWidth= e.target.value}> - props.bgHeight = e.target.value}> -
+
+ (props.bgUrl = e.target.value)} + /> + {#if props.bgUrl} + Board + {:else} +
+ {/if} +
+
+ (props.bgWidth = e.target.value)} + > + + (props.bgHeight = e.target.value)} + > + +
-
- {#if handleDelete} - {#if canDelete} - handleDelete(BoardType.deleted)} variant="warning"> - Delete - - {/if} - handleDelete(BoardType.archived)}> - Archive +
+ {#if handleDelete} + {#if canDelete} + handleDelete(BoardType.deleted)} variant="warning"> + Delete {/if} - - Cancel - - handleSave(text, pieceDefs, props, parseIntPlayers(minPlayers), parseIntPlayers(maxPlayers), turns, playerPieces)} variant="primary"> - Save + handleDelete(BoardType.archived)}> + Archive -
-
- + {/if} + Cancel + + handleSave( + text, + pieceDefs, + props, + parseIntPlayers(minPlayers), + parseIntPlayers(maxPlayers), + turns, + playerPieces, + )} + variant="primary" + > + Save + +
+
- - diff --git a/ui/src/shared/EditBoardDialog.svelte b/ui/src/shared/EditBoardDialog.svelte index 931acd9..3a05211 100644 --- a/ui/src/shared/EditBoardDialog.svelte +++ b/ui/src/shared/EditBoardDialog.svelte @@ -1,106 +1,117 @@ -{ + + { if (event.detail.source === 'overlay') { - event.preventDefault(); -}}}> - + event.preventDefault(); + } + }} +> + diff --git a/ui/src/shared/EmojiIcon.svelte b/ui/src/shared/EmojiIcon.svelte index 8058450..e645b09 100644 --- a/ui/src/shared/EmojiIcon.svelte +++ b/ui/src/shared/EmojiIcon.svelte @@ -1,8 +1,11 @@ + +
{emoji}
+ -
{emoji}
diff --git a/ui/src/shared/Participants.svelte b/ui/src/shared/Participants.svelte index 76d6110..7087345 100644 --- a/ui/src/shared/Participants.svelte +++ b/ui/src/shared/Participants.svelte @@ -1,8 +1,8 @@ {nickname} diff --git a/ui/src/shared/SvgIcon.svelte b/ui/src/shared/SvgIcon.svelte index 27bb1b0..decd094 100644 --- a/ui/src/shared/SvgIcon.svelte +++ b/ui/src/shared/SvgIcon.svelte @@ -1,29 +1,29 @@ -
{icon}
+
{icon}
\ No newline at end of file + .icon { + display: inline-block; + } + .icon img { + vertical-align: middle; + } + diff --git a/ui/src/shared/boardList.ts b/ui/src/shared/boardList.ts index 50ce7f4..fd76641 100644 --- a/ui/src/shared/boardList.ts +++ b/ui/src/shared/boardList.ts @@ -1,204 +1,250 @@ -import { type SynStore, WorkspaceStore, DocumentStore, type Document, type Commit } from "@holochain-syn/core"; -import { Board } from "./board"; -import { EntryRecord, LazyHoloHashMap } from "@holochain-open-dev/utils"; -import { derived, get, writable, type Readable, type Writable } from "svelte/store"; -import type { BoardDelta, BoardState } from "./board"; -import { type AgentPubKey, type EntryHash, decodeHashFromBase64, type EntryHashB64, type AgentPubKeyB64, encodeHashToBase64, type Timestamp } from "@holochain/client"; -import {toPromise, type AsyncReadable, pipe, joinAsync, sliceAndJoin, asyncDerived, alwaysSubscribed} from '@holochain-open-dev/stores' -import type { ProfilesStore } from "@holochain-open-dev/profiles"; -import type { WeaveClient } from "@lightningrodlabs/we-applet"; -import { SeenType } from "./store"; -import type { AsyncStatus } from "@holochain-open-dev/stores"; +import { derived, get, type Readable, writable, type Writable } from 'svelte/store'; + +import type { ProfilesStore } from '@holochain-open-dev/profiles'; +import { + alwaysSubscribed, + asyncDerived, + type AsyncReadable, + joinAsync, + pipe, + sliceAndJoin, + toPromise, +} from '@holochain-open-dev/stores'; +import type { AsyncStatus } from '@holochain-open-dev/stores'; +import { EntryRecord, LazyHoloHashMap } from '@holochain-open-dev/utils'; +import { + type Commit, + type Document, + DocumentStore, + type SynStore, + WorkspaceStore, +} from '@holochain-syn/core'; +import { + type AgentPubKey, + type AgentPubKeyB64, + decodeHashFromBase64, + encodeHashToBase64, + type EntryHash, + type EntryHashB64, + type Timestamp, +} from '@holochain/client'; +import type { WeaveClient } from '@lightningrodlabs/we-applet'; + +import { Board } from './board'; +import type { BoardDelta, BoardState } from './board'; +import { SeenType } from './store'; export enum BoardType { - active = "active", - archived = "archived", - deleted = "deleted" + active = 'active', + archived = 'archived', + deleted = 'deleted', } export interface TypedHash { - hash: EntryHash - type: BoardType + hash: EntryHash; + type: BoardType; } export interface BoardAndLatestState { - board: Board, - latestState: BoardState, - tip: EntryRecord|undefined, - document: EntryRecord + board: Board; + latestState: BoardState; + tip: EntryRecord | undefined; + document: EntryRecord; } export class BoardList { - activeBoardHashes: AsyncReadable - archivedBoardHashes: AsyncReadable - activeBoard: Writable = writable(undefined) - allBoards: AsyncReadable> - activeBoardHash: Writable = writable(undefined) - activeBoardHashB64: Readable = derived(this.activeBoardHash, s=> s ? encodeHashToBase64(s): undefined) - boardCount: AsyncReadable - - boardData2 = new LazyHoloHashMap( documentHash => { - const docStore = this.synStore.documents.get(documentHash) - - const board = pipe(docStore.allWorkspaces, - workspaces => { - const board = new Board(docStore, new WorkspaceStore(docStore, Array.from(workspaces.keys())[0])) - // TODO: fix once we know if our applet is in front or not. - if (this.weaveClient) { - board.workspace.tip.subscribe((tip)=>{ - if (tip.status=="complete" && tip.value) { - const tipRecord = tip.value - const tipB64 = encodeHashToBase64(tipRecord.entryHash) - const key = `${SeenType.Tip}:${board.hashB64}` - const seenTipB64 = localStorage.getItem(key) - const activeBoard = get (this.activeBoard) - - if ((tipB64 != seenTipB64) && (!activeBoard || (encodeHashToBase64(activeBoard.hash) != board.hashB64))) { - this.weaveClient.notifyFrame([{ - title: `Board updated`, - body: "", - notification_type: "change", - icon_src: undefined, - urgency: "low", - timestamp: Date.now() - } - ]) - } - } - }) - } - return board + activeBoardHashes: AsyncReadable; + archivedBoardHashes: AsyncReadable; + activeBoard: Writable = writable(undefined); + allBoards: AsyncReadable>; + activeBoardHash: Writable = writable(undefined); + activeBoardHashB64: Readable = derived(this.activeBoardHash, (s) => + s ? encodeHashToBase64(s) : undefined, + ); + boardCount: AsyncReadable; + + boardData2 = new LazyHoloHashMap((documentHash) => { + const docStore = this.synStore.documents.get(documentHash); + + const board = pipe(docStore.allWorkspaces, (workspaces) => { + const board = new Board( + docStore, + new WorkspaceStore(docStore, Array.from(workspaces.keys())[0]), + ); + // TODO: fix once we know if our applet is in front or not. + if (this.weaveClient) { + board.workspace.tip.subscribe((tip) => { + if (tip.status == 'complete' && tip.value) { + const tipRecord = tip.value; + const tipB64 = encodeHashToBase64(tipRecord.entryHash); + const key = `${SeenType.Tip}:${board.hashB64}`; + const seenTipB64 = localStorage.getItem(key); + const activeBoard = get(this.activeBoard); + + if ( + tipB64 != seenTipB64 && + (!activeBoard || encodeHashToBase64(activeBoard.hash) != board.hashB64) + ) { + this.weaveClient.notifyFrame([ + { + title: `Board updated`, + body: '', + notification_type: 'change', + icon_src: undefined, + urgency: 'low', + timestamp: Date.now(), + }, + ]); } - ) - const latestState = pipe(board, - board => board.workspace.latestState - ) - const tip = pipe(board, - board => board.workspace.tip - ) - const document = pipe(docStore.record, - document => document - ) - - return alwaysSubscribed(pipe(joinAsync([board, latestState, tip, document]), ([board, latestState, tip, document]) => {return {board,latestState, tip: tip ? tip: undefined, document}})) - }) - - agentBoardHashes: LazyHoloHashMap>> = new LazyHoloHashMap(agent => - pipe(this.activeBoardHashes, - documentHashes => joinAsync(documentHashes.map(documentHash=>this.synStore.documents.get(documentHash).allAuthors)), - (documentsAuthors, documentHashes) => { - const agentBoardHashes: AsyncReadable[] = [] - const b64 = encodeHashToBase64(agent) - for (let i = 0; i< documentsAuthors.length; i+=1) { - if (documentsAuthors[i].find(a=>encodeHashToBase64(a) == b64)) { - const hash = documentHashes[i] - //const state = this.boardData2.get(hash).workspace.latestSnapshot - //agentDocuments.push(asyncDerived(state, state=>{return {hash, state}})) - const x: Readable> = this.boardData2.get(hash) - agentBoardHashes.push(x) - } - } - return joinAsync(agentBoardHashes) - }, - ) - ) - - allAgentBoards: AsyncReadable>> - - constructor(public profilseStore: ProfilesStore, public synStore: SynStore, public weaveClient : WeaveClient) { - this.allAgentBoards = pipe(this.profilseStore.agentsWithProfile, - agents=>sliceAndJoin(this.agentBoardHashes, agents) - ) - - - const boardHashes = asyncDerived(this.synStore.documentsByTag.get(BoardType.active),x=>Array.from(x.keys())) - this.activeBoardHashes = boardHashes - const archivedHashes = asyncDerived(this.synStore.documentsByTag.get(BoardType.archived),x=>Array.from(x.keys())) - this.archivedBoardHashes = archivedHashes - - // const activeTypedHashes = asyncDerived(boardHashes, hashes=>hashes.map(hash=>{const h:TypedHash = {hash, type:BoardType.active}; return h})) - // const archivedTypedHashes = asyncDerived(archivedHashes, hashes=>hashes.map(hash=>{const h:TypedHash = {hash,type:BoardType.archived}; return h})) - - // const joinedTyped = joinAsync([activeTypedHashes, archivedTypedHashes]) - // this.typedHashes = asyncDerived(joinedTyped, - // ([active,archived]) => [...active, ...archived] - // ) - - const joined = joinAsync([boardHashes, archivedHashes]) - - const asyncJoined = asyncDerived(joined, - ([boards,archived]) => [...boards, ...archived] - ) - this.allBoards = pipe(asyncJoined, - docHashes => sliceAndJoin(this.boardData2, docHashes) - ) - this.boardCount = asyncDerived(joined, - ([boards,archived]) => boards.length + archived.length - ) - } - - async getBoard(documentHash: EntryHash) : Promise { - if (!documentHash) return undefined - const board = await toPromise(this.boardData2.get(documentHash)) - return board.board - } - - async setActiveBoard(hash: EntryHash | undefined) { - if (hash) { - const board = (await toPromise(this.boardData2.get(hash))).board - - if (board) { - await board.join() - console.log("joined") - this.activeBoard.update((n) => {return board} ) - } else { - console.log("NO BOARD") + } + }); + } + return board; + }); + const latestState = pipe(board, (board) => board.workspace.latestState); + const tip = pipe(board, (board) => board.workspace.tip); + const document = pipe(docStore.record, (document) => document); + + return alwaysSubscribed( + pipe( + joinAsync([board, latestState, tip, document]), + ([board, latestState, tip, document]) => { + return { board, latestState, tip: tip ? tip : undefined, document }; + }, + ), + ); + }); + + agentBoardHashes: LazyHoloHashMap>> = + new LazyHoloHashMap((agent) => + pipe( + this.activeBoardHashes, + (documentHashes) => + joinAsync( + documentHashes.map( + (documentHash) => this.synStore.documents.get(documentHash).allAuthors, + ), + ), + (documentsAuthors, documentHashes) => { + const agentBoardHashes: AsyncReadable[] = []; + const b64 = encodeHashToBase64(agent); + for (let i = 0; i < documentsAuthors.length; i += 1) { + if (documentsAuthors[i].find((a) => encodeHashToBase64(a) == b64)) { + const hash = documentHashes[i]; + //const state = this.boardData2.get(hash).workspace.latestSnapshot + //agentDocuments.push(asyncDerived(state, state=>{return {hash, state}})) + const x: Readable> = this.boardData2.get(hash); + agentBoardHashes.push(x); } - } else { - this.activeBoard.update((n) => {return undefined} ) - } - this.activeBoardHash.update((n) => {return hash} ) + } + return joinAsync(agentBoardHashes); + }, + ), + ); + + allAgentBoards: AsyncReadable>>; + + constructor( + public profilseStore: ProfilesStore, + public synStore: SynStore, + public weaveClient: WeaveClient, + ) { + this.allAgentBoards = pipe(this.profilseStore.agentsWithProfile, (agents) => + sliceAndJoin(this.agentBoardHashes, agents), + ); + + const boardHashes = asyncDerived(this.synStore.documentsByTag.get(BoardType.active), (x) => + Array.from(x.keys()), + ); + this.activeBoardHashes = boardHashes; + const archivedHashes = asyncDerived(this.synStore.documentsByTag.get(BoardType.archived), (x) => + Array.from(x.keys()), + ); + this.archivedBoardHashes = archivedHashes; + + // const activeTypedHashes = asyncDerived(boardHashes, hashes=>hashes.map(hash=>{const h:TypedHash = {hash, type:BoardType.active}; return h})) + // const archivedTypedHashes = asyncDerived(archivedHashes, hashes=>hashes.map(hash=>{const h:TypedHash = {hash,type:BoardType.archived}; return h})) + + // const joinedTyped = joinAsync([activeTypedHashes, archivedTypedHashes]) + // this.typedHashes = asyncDerived(joinedTyped, + // ([active,archived]) => [...active, ...archived] + // ) + + const joined = joinAsync([boardHashes, archivedHashes]); + + const asyncJoined = asyncDerived(joined, ([boards, archived]) => [...boards, ...archived]); + this.allBoards = pipe(asyncJoined, (docHashes) => sliceAndJoin(this.boardData2, docHashes)); + this.boardCount = asyncDerived(joined, ([boards, archived]) => boards.length + archived.length); + } + + async getBoard(documentHash: EntryHash): Promise { + if (!documentHash) return undefined; + const board = await toPromise(this.boardData2.get(documentHash)); + return board.board; + } + + async setActiveBoard(hash: EntryHash | undefined) { + if (hash) { + const board = (await toPromise(this.boardData2.get(hash))).board; + + if (board) { + await board.join(); + console.log('joined'); + this.activeBoard.update((n) => { + return board; + }); + } else { + console.log('NO BOARD'); + } + } else { + this.activeBoard.update((n) => { + return undefined; + }); } - - async archiveBoard(documentHash: EntryHash) { - await this.synStore.client.removeDocumentTag(documentHash, BoardType.active) - await this.synStore.client.tagDocument(documentHash, BoardType.archived) - if (encodeHashToBase64(get(this.activeBoardHash)) == encodeHashToBase64(documentHash)) { - await this.setActiveBoard(undefined) - } + this.activeBoardHash.update((n) => { + return hash; + }); + } + + async archiveBoard(documentHash: EntryHash) { + await this.synStore.client.removeDocumentTag(documentHash, BoardType.active); + await this.synStore.client.tagDocument(documentHash, BoardType.archived); + if (encodeHashToBase64(get(this.activeBoardHash)) == encodeHashToBase64(documentHash)) { + await this.setActiveBoard(undefined); } - - async deleteBoard(documentHash: EntryHash) { - await this.synStore.client.removeDocumentTag(documentHash, BoardType.active) - await this.synStore.client.removeDocumentTag(documentHash, BoardType.archived) - await this.synStore.client.tagDocument(documentHash, BoardType.deleted) - if (encodeHashToBase64(get(this.activeBoardHash)) == encodeHashToBase64(documentHash)) { - await this.setActiveBoard(undefined) - } - } - - async unarchiveBoard(documentHash: EntryHash) { - await this.synStore.client.removeDocumentTag(documentHash, BoardType.archived) - await this.synStore.client.tagDocument(documentHash, BoardType.active) + } + + async deleteBoard(documentHash: EntryHash) { + await this.synStore.client.removeDocumentTag(documentHash, BoardType.active); + await this.synStore.client.removeDocumentTag(documentHash, BoardType.archived); + await this.synStore.client.tagDocument(documentHash, BoardType.deleted); + if (encodeHashToBase64(get(this.activeBoardHash)) == encodeHashToBase64(documentHash)) { + await this.setActiveBoard(undefined); } - - async closeActiveBoard(leave: boolean) { - const hash = get(this.activeBoardHash) - if (hash) { - if (leave) { - const board = await this.getBoard(hash) - if (board) await board.leave() - else console.log("Board Not Found!") - } - this.setActiveBoard(undefined) - } + } + + async unarchiveBoard(documentHash: EntryHash) { + await this.synStore.client.removeDocumentTag(documentHash, BoardType.archived); + await this.synStore.client.tagDocument(documentHash, BoardType.active); + } + + async closeActiveBoard(leave: boolean) { + const hash = get(this.activeBoardHash); + if (hash) { + if (leave) { + const board = await this.getBoard(hash); + if (board) await board.leave(); + else console.log('Board Not Found!'); + } + this.setActiveBoard(undefined); } + } - async makeBoard(options: BoardState) : Promise { - if (!options.name) { - options.name = "untitled" - } - const board = await Board.Create(this.synStore, options) - return board + async makeBoard(options: BoardState): Promise { + if (!options.name) { + options.name = 'untitled'; } + const board = await Board.Create(this.synStore, options); + return board; + } } diff --git a/ui/src/shared/store.ts b/ui/src/shared/store.ts index bc36157..5c3ad68 100644 --- a/ui/src/shared/store.ts +++ b/ui/src/shared/store.ts @@ -1,216 +1,231 @@ -import { - type AppClient, - type AgentPubKeyB64, - type RoleName, - encodeHashToBase64, - type AgentPubKey, - type ActionHash, - type Link, - type EntryHash, - decodeHashFromBase64, - type DnaHash, - } from '@holochain/client'; -import { SynStore, SynClient} from '@holochain-syn/core'; -import type { BoardState } from './board'; -import { BoardList } from './boardList'; -import TimeAgo from "javascript-time-ago" -import en from 'javascript-time-ago/locale/en' -import { CHESS, GO, WORLD } from './defaultGames'; +import TimeAgo from 'javascript-time-ago'; +import en from 'javascript-time-ago/locale/en'; + import type { ProfilesStore } from '@holochain-open-dev/profiles'; +import { + asyncDerived, + type AsyncReadable, + collectionStore, + get, + joinAsync, + latestVersionOfEntryStore, + pipe, + sliceAndJoin, + type Unsubscriber, + type Writable, + writable, +} from '@holochain-open-dev/stores'; import { EntryRecord, LazyHoloHashMap, ZomeClient } from '@holochain-open-dev/utils'; -import { collectionStore, type AsyncReadable, latestVersionOfEntryStore, pipe, joinAsync, sliceAndJoin, asyncDerived, type Writable, writable, get, type Unsubscriber } from '@holochain-open-dev/stores'; import type { ActionCommittedSignal } from '@holochain-open-dev/utils'; -import type { WeaveClient } from '@lightningrodlabs/we-applet'; import { HoloHashMap } from '@holochain-open-dev/utils/dist/holo-hash-map'; -import { getMyDna } from './util'; +import { SynClient, SynStore } from '@holochain-syn/core'; +import { + type ActionHash, + type AgentPubKey, + type AgentPubKeyB64, + type AppClient, + decodeHashFromBase64, + type DnaHash, + encodeHashToBase64, + type EntryHash, + type Link, + type RoleName, +} from '@holochain/client'; +import type { WeaveClient } from '@lightningrodlabs/we-applet'; +import type { BoardState } from './board'; +import { BoardList } from './boardList'; +import { CHESS, GO, WORLD } from './defaultGames'; +import { getMyDna } from './util'; -TimeAgo.addDefaultLocale(en) +TimeAgo.addDefaultLocale(en); -const ZOME_NAME = 'gamez' +const ZOME_NAME = 'gamez'; -export type BoardDef = -{ - board: string -} +export type BoardDef = { + board: string; +}; -export type BoardDefData = -{ - originalHash: ActionHash, - board: BoardState, - record: EntryRecord, -} +export type BoardDefData = { + originalHash: ActionHash; + board: BoardState; + record: EntryRecord; +}; -export type EntryTypes = - | ({ type: 'BoardDef' } & BoardDef); +export type EntryTypes = { type: 'BoardDef' } & BoardDef; export type GamezSignal = ActionCommittedSignal; export class GamezClient extends ZomeClient { - constructor(public client: AppClient, public roleName, public zomeName = ZOME_NAME) { - super(client, roleName, zomeName); - } - - async createBoardDef(def: BoardState) : Promise> { - return new EntryRecord(await this.callZome('create_board_def', {board: JSON.stringify(def)})) - } - async updateBoardDef(origHash: ActionHash, prevHash:ActionHash, def: BoardState) : Promise> { - return new EntryRecord(await this.callZome('update_board_def', { - original_board_def_hash: origHash, - previous_board_def_hash: prevHash, - updated_board_def: {board: JSON.stringify(def)}})) - } - async getBoardDefs() : Promise { - const results = await this.callZome('get_board_defs', undefined) - return results - } - async getBoardDef(hash: ActionHash) : Promise| undefined> { - const record = await this.callZome('get_board_def', hash) - if (!record) return undefined; - - const def: EntryRecord = new EntryRecord(record); - return def - } + constructor( + public client: AppClient, + public roleName, + public zomeName = ZOME_NAME, + ) { + super(client, roleName, zomeName); + } + + async createBoardDef(def: BoardState): Promise> { + return new EntryRecord(await this.callZome('create_board_def', { board: JSON.stringify(def) })); + } + async updateBoardDef( + origHash: ActionHash, + prevHash: ActionHash, + def: BoardState, + ): Promise> { + return new EntryRecord( + await this.callZome('update_board_def', { + original_board_def_hash: origHash, + previous_board_def_hash: prevHash, + updated_board_def: { board: JSON.stringify(def) }, + }), + ); + } + async getBoardDefs(): Promise { + const results = await this.callZome('get_board_defs', undefined); + return results; + } + async getBoardDef(hash: ActionHash): Promise | undefined> { + const record = await this.callZome('get_board_def', hash); + if (!record) return undefined; + + const def: EntryRecord = new EntryRecord(record); + return def; + } } export enum SeenType { - Tip="t", + Tip = 't', } export interface UIProps { - tips: HoloHashMap - showArchived: boolean + tips: HoloHashMap; + showArchived: boolean; } export class GamezStore { - myAgentPubKeyB64: AgentPubKeyB64 - timeAgo = new TimeAgo('en-US') - boardList: BoardList; - updating = false - synStore: SynStore; - client: GamezClient; - defLinks: AsyncReadable - defHashes: AsyncReadable - defs: LazyHoloHashMap> = new LazyHoloHashMap( - (hash: ActionHash) => { - const latestVersion = latestVersionOfEntryStore(this.client, () => - this.client.getBoardDef(hash) - ); - const asyncBoard = pipe(latestVersion, - record => JSON.parse(record.entry.board) as BoardState - ) - return pipe(joinAsync([asyncBoard, latestVersion]), ([board, record]) => {return {originalHash: hash, board,record}}) - } - ) - defsList: AsyncReadable - uiProps: Writable - unsub: Unsubscriber - dnaHash: DnaHash - - constructor( - public weaveClient : WeaveClient, - public profilesStore: ProfilesStore, - protected clientIn: AppClient, - protected roleName: RoleName, - protected zomeName: string = ZOME_NAME - ) { - this.client = new GamezClient( - clientIn, - this.roleName, - this.zomeName - ); - getMyDna(roleName, clientIn).then(res=>{ - this.dnaHash = res - }) - this.myAgentPubKeyB64 = encodeHashToBase64(this.myAgentPubKey); - - this.synStore = new SynStore(new SynClient(clientIn,this.roleName,"syn")) - this.boardList = new BoardList(profilesStore, this.synStore, weaveClient) - this.defLinks = collectionStore( - this.client, - () => this.client.getBoardDefs(), - 'AllBoardDefs' - ); - this.defHashes = asyncDerived(this.defLinks, - links=> links.map(link=>link.target) - ) - this.defsList = pipe(this.defHashes, - hashes=> sliceAndJoin(this.defs,hashes), - map=>Array.from(map.values()) - ) - this.boardList.activeBoard.subscribe((board)=>{ - if (this.unsub) { - this.unsub() - this.unsub = undefined - } - if (board != undefined) { - this.unsub = board.workspace.tip.subscribe((tip)=>{ - if (tip.status == "complete" && tip.value) { - this.updateSeenTip(board.hash, tip.value.entryHash) - } - }) - } - }) - - this.uiProps = writable({ - tips: new HoloHashMap, - showArchived: false, - }) - for (let i = 0; i < localStorage.length; i+=1){ - const key = localStorage.key(i) - const [type, boardHashB64, cardId] = key.split(":") - if (type == SeenType.Tip) { - const tipB64 = localStorage.getItem(key) - this.setSeenTip(decodeHashFromBase64(boardHashB64), decodeHashFromBase64(tipB64)) - } - } + myAgentPubKeyB64: AgentPubKeyB64; + timeAgo = new TimeAgo('en-US'); + boardList: BoardList; + updating = false; + synStore: SynStore; + client: GamezClient; + defLinks: AsyncReadable; + defHashes: AsyncReadable; + defs: LazyHoloHashMap> = new LazyHoloHashMap( + (hash: ActionHash) => { + const latestVersion = latestVersionOfEntryStore(this.client, () => + this.client.getBoardDef(hash), + ); + const asyncBoard = pipe( + latestVersion, + (record) => JSON.parse(record.entry.board) as BoardState, + ); + return pipe(joinAsync([asyncBoard, latestVersion]), ([board, record]) => { + return { originalHash: hash, board, record }; + }); + }, + ); + defsList: AsyncReadable; + uiProps: Writable; + unsub: Unsubscriber; + dnaHash: DnaHash; + + constructor( + public weaveClient: WeaveClient, + public profilesStore: ProfilesStore, + protected clientIn: AppClient, + protected roleName: RoleName, + protected zomeName: string = ZOME_NAME, + ) { + this.client = new GamezClient(clientIn, this.roleName, this.zomeName); + getMyDna(roleName, clientIn).then((res) => { + this.dnaHash = res; + }); + this.myAgentPubKeyB64 = encodeHashToBase64(this.myAgentPubKey); + + this.synStore = new SynStore(new SynClient(clientIn, this.roleName, 'syn')); + this.boardList = new BoardList(profilesStore, this.synStore, weaveClient); + this.defLinks = collectionStore(this.client, () => this.client.getBoardDefs(), 'AllBoardDefs'); + this.defHashes = asyncDerived(this.defLinks, (links) => links.map((link) => link.target)); + this.defsList = pipe( + this.defHashes, + (hashes) => sliceAndJoin(this.defs, hashes), + (map) => Array.from(map.values()), + ); + this.boardList.activeBoard.subscribe((board) => { + if (this.unsub) { + this.unsub(); + this.unsub = undefined; + } + if (board != undefined) { + this.unsub = board.workspace.tip.subscribe((tip) => { + if (tip.status == 'complete' && tip.value) { + this.updateSeenTip(board.hash, tip.value.entryHash); + } + }); + } + }); + + this.uiProps = writable({ + tips: new HoloHashMap(), + showArchived: false, + }); + for (let i = 0; i < localStorage.length; i += 1) { + const key = localStorage.key(i); + const [type, boardHashB64, cardId] = key.split(':'); + if (type == SeenType.Tip) { + const tipB64 = localStorage.getItem(key); + this.setSeenTip(decodeHashFromBase64(boardHashB64), decodeHashFromBase64(tipB64)); + } } - - updateSeenTip(boardHash: EntryHash, tip:EntryHash) { - localStorage.setItem(`${SeenType.Tip}:${encodeHashToBase64(boardHash)}`, encodeHashToBase64(tip)) - this.setSeenTip(boardHash, tip) + } + + updateSeenTip(boardHash: EntryHash, tip: EntryHash) { + localStorage.setItem( + `${SeenType.Tip}:${encodeHashToBase64(boardHash)}`, + encodeHashToBase64(tip), + ); + this.setSeenTip(boardHash, tip); + } + + setSeenTip(boardHash: EntryHash, tip: EntryHash) { + this.uiProps.update((n) => { + n.tips.set(boardHash, tip); + return n; + }); + } + + setUIprops(props: {}) { + this.uiProps.update((n) => { + Object.keys(props).forEach((key) => (n[key] = props[key])); + return n; + }); + } + + get myAgentPubKey(): AgentPubKey { + return this.client.client.myPubKey; + } + + async makeGameType(board: BoardState): Promise { + return await this.client.createBoardDef(board); + } + + async addDefaultGames(name: string): Promise { + let board: Omit; + switch (name) { + case 'Chess': + board = CHESS; + break; + case 'Go': + board = GO; + break; + case 'World': + board = WORLD; + break; } - - setSeenTip(boardHash:EntryHash, tip: EntryHash) { - this.uiProps.update((n) => { - n.tips.set(boardHash,tip) - return n - }) - } - - setUIprops(props:{}) { - this.uiProps.update((n) => { - Object.keys(props).forEach(key=>n[key] = props[key]) - return n - }) + if (board) { + await this.client.createBoardDef(board as BoardState); } - - - get myAgentPubKey(): AgentPubKey { - return this.client.client.myPubKey; - } - - async makeGameType(board: BoardState) : Promise { - return await this.client.createBoardDef(board) - } - - async addDefaultGames(name:string): Promise { - let board: Omit - switch(name) { - case "Chess": - board = CHESS - break; - case "Go" : - board = GO - break; - case "World": - board = WORLD - break; - } - if (board) { - await this.client.createBoardDef(board as BoardState) - } - } - - -} \ No newline at end of file + } +} diff --git a/ui/src/shared/svgIcons.ts b/ui/src/shared/svgIcons.ts index 55c85d4..ed20db1 100644 --- a/ui/src/shared/svgIcons.ts +++ b/ui/src/shared/svgIcons.ts @@ -1,41 +1,41 @@ export const svgIcons = { - faSearch: ``, - faCog: ``, - faTrash: ``, - faCancel: ``, - faEdit: ``, - faPlus: ``, - faSpinner: ``, - faSquarePlus: ``, - faArchive: ``, - faPaperPlane: ``, - faUserGroup: ``, - faArrowTurnDown: ``, - faArrowRight: ``, - faCheck: ``, - faComments: ``, - faGripVertical: ``, - faUser: ``, - faFileImport: ``, - faFileExport: ``, - faClose: ``, - faBug: ``, - faBars: ``, - faClone: ``, - faPaperclip: ``, - link: ``, - addToPocket: ``, - exit: ` `, - searchPlus: ``, - info: ``, - addAsset: ` + faSearch: ``, + faCog: ``, + faTrash: ``, + faCancel: ``, + faEdit: ``, + faPlus: ``, + faSpinner: ``, + faSquarePlus: ``, + faArchive: ``, + faPaperPlane: ``, + faUserGroup: ``, + faArrowTurnDown: ``, + faArrowRight: ``, + faCheck: ``, + faComments: ``, + faGripVertical: ``, + faUser: ``, + faFileImport: ``, + faFileExport: ``, + faClose: ``, + faBug: ``, + faBars: ``, + faClone: ``, + faPaperclip: ``, + link: ``, + addToPocket: ``, + exit: ` `, + searchPlus: ``, + info: ``, + addAsset: ` `, - show: ` + show: ` `, - hide: ` + hide: ` - ` - } \ No newline at end of file + `, +}; diff --git a/ui/src/shared/util.ts b/ui/src/shared/util.ts index 9cf06db..e3c7fea 100644 --- a/ui/src/shared/util.ts +++ b/ui/src/shared/util.ts @@ -1,11 +1,6 @@ -import type { AsyncStatus } from "@holochain-open-dev/stores"; -import { - type AppClient, - type EntryHash, - type DnaHash, - CellType, -} from "@holochain/client"; -import type { WeaveUrl } from "@lightningrodlabs/we-applet"; +import type { AsyncStatus } from '@holochain-open-dev/stores'; +import { type AppClient, CellType, type DnaHash, type EntryHash } from '@holochain/client'; +import type { WeaveUrl } from '@lightningrodlabs/we-applet'; export const hashEqual = (a: EntryHash, b: EntryHash): boolean => { if (!a || !b) { @@ -17,13 +12,9 @@ export const hashEqual = (a: EntryHash, b: EntryHash): boolean => { return true; }; -export const getMyDna = async ( - role: string, - client: AppClient -): Promise => { +export const getMyDna = async (role: string, client: AppClient): Promise => { const appInfo = await client.appInfo(); - const dnaHash = (appInfo.cell_info[role][0] as any)[CellType.Provisioned] - .cell_id[0]; + const dnaHash = (appInfo.cell_info[role][0] as any)[CellType.Provisioned].cell_id[0]; return dnaHash; }; @@ -42,8 +33,6 @@ export type AssetSpec = { weaveUrl: WeaveUrl; }; -export function isComplete( - data: AsyncStatus -): data is { status: "complete"; value: T } { - return data.status === "complete"; +export function isComplete(data: AsyncStatus): data is { status: 'complete'; value: T } { + return data.status === 'complete'; } diff --git a/ui/src/vite-env.d.ts b/ui/src/vite-env.d.ts index e1aabcb..4078e74 100644 --- a/ui/src/vite-env.d.ts +++ b/ui/src/vite-env.d.ts @@ -1,3 +1,2 @@ /// /// - diff --git a/ui/src/we.ts b/ui/src/we.ts index 1afca92..8066c84 100644 --- a/ui/src/we.ts +++ b/ui/src/we.ts @@ -1,7 +1,7 @@ -import { DocumentStore, SynClient, SynStore, WorkspaceStore } from '@holochain-syn/core'; import { asyncDerived, pipe, sliceAndJoin, toPromise } from '@holochain-open-dev/stores'; -import { BoardType } from './shared/boardList'; import { LazyHoloHashMap } from '@holochain-open-dev/utils'; +import { DocumentStore, SynClient, SynStore, WorkspaceStore } from '@holochain-syn/core'; +import type { AppClient, RoleName, ZomeName } from '@holochain/client'; import type { AppletHash, AppletServices, @@ -10,9 +10,10 @@ import type { WAL, WeaveServices, } from '@lightningrodlabs/we-applet'; -import type { AppClient, RoleName, ZomeName } from '@holochain/client'; -import { getMyDna } from './shared/util'; + import type { BoardEphemeralState, BoardState } from './shared/board'; +import { BoardType } from './shared/boardList'; +import { getMyDna } from './shared/util'; const ROLE_NAME = 'gamez'; const ZOME_NAME = 'syn'; diff --git a/ui/svelte.config.js b/ui/svelte.config.js index a71f7ee..bf8d241 100644 --- a/ui/svelte.config.js +++ b/ui/svelte.config.js @@ -1,11 +1,11 @@ -import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; export default { // Consult https://svelte.dev/docs#compile-time-svelte-preprocess // for more information about preprocessors preprocess: vitePreprocess(), onwarn: (warning, handler) => { - if (warning.code === "a11y-click-events-have-key-events") return; + if (warning.code === 'a11y-click-events-have-key-events') return; handler(warning); }, }; diff --git a/ui/unocss.config.ts b/ui/unocss.config.ts index 6a0bfad..bfe6018 100644 --- a/ui/unocss.config.ts +++ b/ui/unocss.config.ts @@ -1,12 +1,12 @@ // Add textShadow -import { defineConfig, presetTypography, presetUno } from "unocss"; -import transformerVariantGroup from "@unocss/transformer-variant-group"; +import transformerVariantGroup from '@unocss/transformer-variant-group'; +import { defineConfig, presetTypography, presetUno } from 'unocss'; const FLEX_ALIGNS = { - c: "center", - e: "flex-end", - s: "flex-start", - _: "stretch", + c: 'center', + e: 'flex-end', + s: 'flex-start', + _: 'stretch', }; export default defineConfig({ @@ -16,15 +16,15 @@ export default defineConfig({ [ /^flex([cse_])([cse_])$/, ([, c1, c2]) => ({ - display: "flex", - "align-items": FLEX_ALIGNS[c1], - "justify-content": FLEX_ALIGNS[c2], + display: 'flex', + 'align-items': FLEX_ALIGNS[c1], + 'justify-content': FLEX_ALIGNS[c2], }), ], ], variants: [ (matcher) => { - if (!matcher.startsWith("hocus:")) return matcher; + if (!matcher.startsWith('hocus:')) return matcher; return { // slice `hover:` prefix and passed to the next variants and rules @@ -33,43 +33,33 @@ export default defineConfig({ }; }, (matcher) => { - const variant = "placeholder-shown"; + const variant = 'placeholder-shown'; if (!matcher.includes(variant)) return matcher; - const isNot = matcher.startsWith("not-"); + const isNot = matcher.startsWith('not-'); return { // slice `hover:` prefix and passed to the next variants and rules - matcher: isNot - ? matcher.slice(variant.length + 5) - : matcher.slice(variant.length + 1), + matcher: isNot ? matcher.slice(variant.length + 5) : matcher.slice(variant.length + 1), selector: (input) => - isNot - ? `${input}:not(:placeholder-shown)` - : `${input}:placeholder-shown`, + isNot ? `${input}:not(:placeholder-shown)` : `${input}:placeholder-shown`, }; }, ], theme: { breakpoints: { - xs: "360px", - sm: "640px", - md: "768px", - lg: "1024px", - xl: "1280px", - "2xl": "1536px", + xs: '360px', + sm: '640px', + md: '768px', + lg: '1024px', + xl: '1280px', + '2xl': '1536px', }, colors: { main: (() => { let colors: [string, string][] = []; for (let i = 10; i <= 90; i += 10) { - colors.push([ - `${i}0`, - `hsl(var(--main-hue), var(--main-saturation), ${i}%)`, - ]); + colors.push([`${i}0`, `hsl(var(--main-hue), var(--main-saturation), ${i}%)`]); } - colors.push([ - `950`, - `hsl(var(--main-hue), var(--main-saturation), 95%)`, - ]); + colors.push([`950`, `hsl(var(--main-hue), var(--main-saturation), 95%)`]); return Object.fromEntries(colors); })(), }, From aeba50caaf67292078cd503778102af215a2a712 Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 22:09:38 -0300 Subject: [PATCH 05/11] Run TypeScript checks on CI --- .github/workflows/test.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 262bb29..fed0625 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -26,5 +26,4 @@ jobs: - name: Install and test run: | - nix develop --command bash -c "npm i && npm t" - + nix develop --command bash -c "npm i && npm t && cd ui && npm run check" \ No newline at end of file From b889d6f6ece0977a7fcea5189b09ffdfdd0e3451 Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 22:13:19 -0300 Subject: [PATCH 06/11] Update all CI actions --- .github/workflows/test.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index fed0625..95e3f6c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -11,16 +11,16 @@ jobs: testbuild: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Install nix - uses: cachix/install-nix-action@v18 + uses: cachix/install-nix-action@v27 with: install_url: https://releases.nixos.org/nix/nix-2.18.2/install extra_nix_config: | experimental-features = flakes nix-command - - uses: cachix/cachix-action@v10 + - uses: cachix/cachix-action@v15 with: name: holochain-ci From 6b7e7b3933f335ec94aef84e4318d3a272fc1ed7 Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 22:38:05 -0300 Subject: [PATCH 07/11] Updated UI dependencies --- package-lock.json | 4093 ++++++++++++----------- tests/package.json | 2 +- tests/src/{kando/kando => }/common.ts | 0 ui/package.json | 16 +- ui/src/ControllerCreate.svelte | 4 + ui/src/GamezPane/AttachmentsList.svelte | 2 + ui/src/Home/StartGameDialog.svelte | 14 +- ui/src/shared/BoardEditor.svelte | 32 +- ui/svelte.config.js | 1 + ui/tsconfig.json | 4 +- 10 files changed, 2232 insertions(+), 1936 deletions(-) rename tests/src/{kando/kando => }/common.ts (100%) diff --git a/package-lock.json b/package-lock.json index 243e4f1..828fad4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2139,41 +2139,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@open-wc/dedupe-mixin": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", @@ -2194,6 +2159,242 @@ "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "dev": true }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", + "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", + "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", + "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", + "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", + "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", + "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", + "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", + "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", + "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", + "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", + "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", + "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", + "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@scena/dragscroll": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", @@ -2367,45 +2568,6 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.5.3.tgz", - "integrity": "sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==", - "dev": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.3", - "svelte-hmr": "^0.15.3", - "vitefu": "^0.2.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0", - "vite": "^4.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz", - "integrity": "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.2.0", - "svelte": "^3.54.0 || ^4.0.0", - "vite": "^4.0.0" - } - }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -2603,6 +2765,12 @@ "@types/jquery": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -2702,14 +2870,14 @@ } }, "node_modules/@unocss/astro": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.61.9.tgz", - "integrity": "sha512-adOXz4itYHxqhvQgJHlEU58EHDTtY2qrcEPVmQVk4qI1W+ezQV6nQMQvti8mS/HbFw3MOJhIY1MlJoZK36/cyw==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.62.1.tgz", + "integrity": "sha512-vUcNHfiqVNd1U1OuiZPtc2T/I7S8nrmXkWwLjz3KzVj8Q0CGUN70eQaz0F01EOg+P62Wxegm/trjGD7/ze5Ldw==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/reset": "0.61.9", - "@unocss/vite": "0.61.9" + "@unocss/core": "0.62.1", + "@unocss/reset": "0.62.1", + "@unocss/vite": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -2724,24 +2892,24 @@ } }, "node_modules/@unocss/cli": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.61.9.tgz", - "integrity": "sha512-W5pN2cOKAOkeKKXMqsGD/J7dpEAmxODtOH2Afjk41qsjqUlzGlUbmgG9PjAz7TDHrAmvuf3nvmMeeT3fii2UFg==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.62.1.tgz", + "integrity": "sha512-7+aqcOPHFBt4QVJkEGC8aOZairZznciLwbbOSXKLqySNH1mx5zgLMhY4uNFEFZF225ZTxbB037m2gLTf/f4XKA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.3.0", "@rollup/pluginutils": "^5.1.0", - "@unocss/config": "0.61.9", - "@unocss/core": "0.61.9", - "@unocss/preset-uno": "0.61.9", + "@unocss/config": "0.62.1", + "@unocss/core": "0.62.1", + "@unocss/preset-uno": "0.62.1", "cac": "^6.7.14", "chokidar": "^3.6.0", "colorette": "^2.0.20", "consola": "^3.2.3", - "fast-glob": "^3.3.2", "magic-string": "^0.30.11", "pathe": "^1.1.2", - "perfect-debounce": "^1.0.0" + "perfect-debounce": "^1.0.0", + "tinyglobby": "^0.2.1" }, "bin": { "unocss": "bin/unocss.mjs" @@ -2753,48 +2921,14 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@unocss/cli/node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@unocss/cli/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@unocss/cli/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, "node_modules/@unocss/config": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.61.9.tgz", - "integrity": "sha512-ATvZEFMQiW3/oUaaplVMBYuagEELtnLbHSYH4pUGbJ5MALAfV98mZRyk4FkKkYoMYqWLGdCylzpgMPFDOuFQlQ==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.62.1.tgz", + "integrity": "sha512-HNYpaqDERySunXKcD7u8UBe2lbeF8bgIxZ/aCoidfwrpuID8i7QXLcinoUgM2cFR6jXzHDxog+TpKKgcWeBm1A==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "unconfig": "^0.5.4" + "@unocss/core": "0.62.1", + "unconfig": "^0.5.5" }, "engines": { "node": ">=14" @@ -2804,34 +2938,34 @@ } }, "node_modules/@unocss/core": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.61.9.tgz", - "integrity": "sha512-2W1YZQIWXcueGdbXU/ZCqn/8yQhWk8e8kAHFkVlbc9rictkd2UmPB9nIZ8Ii1tMwt6F0TT6vfHbLJEGCV08o2g==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.62.1.tgz", + "integrity": "sha512-v257k6T6GByPbsXkCzglV0cMVfaQZmvKKQEFsx34VOJ7jLVwh3QCj0seSP8j4rWSIWxqQJnox3KaVrKVp7aJbg==", "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/extractor-arbitrary-variants": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.61.9.tgz", - "integrity": "sha512-ii42/hKbhgeBBOy86729t6/HeGmxUcHM8FprPeb/v/DfYsCkjDvMYVynX3FN/K5pR2WV+HHp6TQS7GbTmRIN0g==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.62.1.tgz", + "integrity": "sha512-K27s8yh+h3VBuvdoXkM8D2rJsfLT0KAPwEkur1AEK/rN/6n2+xm15/llKJXQmc9pMq7zK072a7EKPax4FMMv4g==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/inspector": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.61.9.tgz", - "integrity": "sha512-kUcQ/h8/yAfkqL2eCGVFyB0IGSPdR0dx2HH4V+mdSMfd8yKFR/BQys3mBvqZwSZu5a0+iisFHHq9wr+/I5DtHQ==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.62.1.tgz", + "integrity": "sha512-qVeNc0GVeKRT8573kpHKUytlhruDTLn5jNZosTenY3YywPkhK+fk1CfXMbebh8nQ69v9pE+mBl+AeJcNnfAyPQ==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/rule-utils": "0.61.9", + "@unocss/core": "0.62.1", + "@unocss/rule-utils": "0.62.1", "gzip-size": "^6.0.0", "sirv": "^2.0.4" }, @@ -2840,18 +2974,18 @@ } }, "node_modules/@unocss/postcss": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.61.9.tgz", - "integrity": "sha512-HuFE/TUH6tt5f/AwiKNhQ/FO/lvFeW0JHPkx9SCURcKKoD3rpJUbhTqVv7c0zlCVQnRFX0hxpimoetp5Dh8qdA==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.62.1.tgz", + "integrity": "sha512-RqODgpgHVHPLjT59nzVtBoX8Kv67fyqeMg/lh0UAhiHT8zdnKO+v6Q2HpFeXXu3AZUnO7NQKXHjfBGDfFjheJg==", "dev": true, "dependencies": { - "@unocss/config": "0.61.9", - "@unocss/core": "0.61.9", - "@unocss/rule-utils": "0.61.9", + "@unocss/config": "0.62.1", + "@unocss/core": "0.62.1", + "@unocss/rule-utils": "0.62.1", "css-tree": "^2.3.1", - "fast-glob": "^3.3.2", "magic-string": "^0.30.11", - "postcss": "^8.4.40" + "postcss": "^8.4.41", + "tinyglobby": "^0.2.1" }, "engines": { "node": ">=14" @@ -2864,25 +2998,25 @@ } }, "node_modules/@unocss/preset-attributify": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.61.9.tgz", - "integrity": "sha512-AHlEF7PiIBz1jHZZ62+AZ1u5ITrPNL/mgN8XyKwocoAr9HH8aQ3xzUgIuEX6vfV4a8rTdawffY99BQ12msePWQ==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.62.1.tgz", + "integrity": "sha512-ug0VEhNda2zEbEyYq1ccBBU2iKaEqCx1yIa0px3OYSmDkcCRYzaa/C+4WISXENnUbTpaG9DpzDFjPRyasfJy4w==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/preset-icons": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.61.9.tgz", - "integrity": "sha512-5XZO511ksu3EVwpV2nIZKa5NzyJAb+JARKaUpQIXssHUVdRKk5nJYr1XtrpBDLgB6VEf/1skViLEa1bpOUI5Wg==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.62.1.tgz", + "integrity": "sha512-zHO8RuFLkmDRLDQWuaDJKM6rlESxDA/CaKYmKUEXtqb9TRHV/w1gbICDXiZlXaphC5wDhkok62ymblwpm2xpSw==", "dev": true, "dependencies": { - "@iconify/utils": "^2.1.29", - "@unocss/core": "0.61.9", + "@iconify/utils": "^2.1.30", + "@unocss/core": "0.62.1", "ofetch": "^1.3.4" }, "funding": { @@ -2890,63 +3024,63 @@ } }, "node_modules/@unocss/preset-mini": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.61.9.tgz", - "integrity": "sha512-qhagWfdM7ytRWf4wFfrAcdeCUCVD9wDVrM+9evAmuOnMXWEiVZCjfwhjjFu+8lM7g+38n+gi7VcrNuTiZ8fHBA==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.62.1.tgz", + "integrity": "sha512-5YWj7+5F0caGJlG8Wyqqq0VJrvuVilP8i92PSFlrPPY8Nj9qHyGrFowyJ0MRGqei6K3nHWZWFx0Wo1Ligy376g==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/extractor-arbitrary-variants": "0.61.9", - "@unocss/rule-utils": "0.61.9" + "@unocss/core": "0.62.1", + "@unocss/extractor-arbitrary-variants": "0.62.1", + "@unocss/rule-utils": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/preset-tagify": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.61.9.tgz", - "integrity": "sha512-E+54+uSe+btOnQDlh8XjDUXhwxJd6/TL/8Rdl+7Pg6m+JNXudEt7xOd81L/KlDPD2tYYH9g/dQUaDN5aJyfRPQ==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.62.1.tgz", + "integrity": "sha512-EIrKGVL1Zu9aodumtzFpVuL8+/mIInkAxQ5v1hh22pVv01b274oKEJw3+R0eeqa7kqTquos2DlJvV1TFYXeWMQ==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/preset-typography": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.61.9.tgz", - "integrity": "sha512-ZDoRViHtzI1Ny0sZyjajeCGEdFQCBn5CeIYgxO/KCpN107KTGLnYfoabv0gHtj/qaeAh30obeOMxZaIuxYoW3Q==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.62.1.tgz", + "integrity": "sha512-uExRmPbBIWTDjq3RkuIv6Vp8crxukfUD+D3KoOkCP/NIGpNVfR3RRlA8n6QkoPqckYNHFET6ttB2Ke3SzvJBGg==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/preset-mini": "0.61.9" + "@unocss/core": "0.62.1", + "@unocss/preset-mini": "0.62.1" } }, "node_modules/@unocss/preset-uno": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.61.9.tgz", - "integrity": "sha512-N4R/BCMphrHvAMZ+qgR/FPoh724uXDuZ/1DEGuirUQJMg7makqrI6czL+P99q1bP8nWzxWEXiRXnKKLiyD9pJw==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.62.1.tgz", + "integrity": "sha512-khT9OsudiBET9RyOetZMwD4iB9uh37szbJlayWw6QuANfWm6t5BoejRoaR9wYfB0KvGCNQOFrgxUZVVQGz3Obg==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/preset-mini": "0.61.9", - "@unocss/preset-wind": "0.61.9", - "@unocss/rule-utils": "0.61.9" + "@unocss/core": "0.62.1", + "@unocss/preset-mini": "0.62.1", + "@unocss/preset-wind": "0.62.1", + "@unocss/rule-utils": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/preset-web-fonts": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.61.9.tgz", - "integrity": "sha512-fjQv74+FiAvGJM5vSLkD15Taku0cbi5F7qAr5T85EIQOpUB1fiH2kPoXIOT1WS2lKbQZh6pNGBxLrbBRgnVPew==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.62.1.tgz", + "integrity": "sha512-gbAXSKI027GOMLTMmYZEwLZKxF4V30clGQB8pyqWodRWXcQ4XaeIIYOmEibqqSV0woSpuMVllUR4E7/8FtE49Q==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", + "@unocss/core": "0.62.1", "ofetch": "^1.3.4" }, "funding": { @@ -2954,35 +3088,35 @@ } }, "node_modules/@unocss/preset-wind": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.61.9.tgz", - "integrity": "sha512-AzbjJrNL9Rb2BzTiREyssd8v7KFVVLERQ/PNILGzo6yYelYMl4AhKXZ3jgxWEsIABArVa3UkGBigG4h/L+2JHA==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.62.1.tgz", + "integrity": "sha512-6U8VsQrhbxdYoeYtMYMfcQiJE5sxanyxobjm5PO62uJx23cmUNEL0GUNsNxJOm9r/W8HlUyamnutuvxw06Qf1A==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/preset-mini": "0.61.9", - "@unocss/rule-utils": "0.61.9" + "@unocss/core": "0.62.1", + "@unocss/preset-mini": "0.62.1", + "@unocss/rule-utils": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/reset": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.61.9.tgz", - "integrity": "sha512-A1KtJiFgLM0N3FqJ9r5M3mVULcwsn+14tq5WkvSPF9ik3zQeJh8/NhxKdJImWClwBOzn795NQFXXFB70Ja+2RA==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.62.1.tgz", + "integrity": "sha512-v6YRcBDZx26RnuxG8/EhrmwG2ixyljcgdF/ZbSGzxktxbebGvxURH80TjKXNnfRX7nOMAJ2eyx15ZxpvCGx28Q==", "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/rule-utils": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.61.9.tgz", - "integrity": "sha512-54Hw0nF+3ga70ETo3kes4He62wdsB4dHMgEiD/DEmJzyVY3ZuG/sIVAgkxjMQDo5w4SSYU/Ys1QaY+IQmeJHFQ==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.62.1.tgz", + "integrity": "sha512-UZuk8wg0bzylEtkwH7UaOQcTIr10w0HOE/6lfpuUcLIdgbKRWAg6999JPxNowAaB7mJSO1MY3yiTn2ZpAHrl7g==", "dev": true, "dependencies": { - "@unocss/core": "^0.61.9", + "@unocss/core": "^0.62.1", "magic-string": "^0.30.11" }, "engines": { @@ -2993,89 +3127,89 @@ } }, "node_modules/@unocss/scope": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.61.9.tgz", - "integrity": "sha512-a9/vdg7YTFZEnJSaJBh/GqkLokYh3ZjEd3gHUxl/TZDSkGOz3WnkR2h+lgaLZm9MJ7RlSvJxYP8ySezH7jU1Pw==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.62.1.tgz", + "integrity": "sha512-FEQpdDm3XSNWjyZLqFw7UYqGKf5bTPBIgcmPXSY0y3pO98AzbW6yJuHxi64nm0tK69gyxA0rRUK3ILuFrfTOrg==", "dev": true }, "node_modules/@unocss/transformer-attributify-jsx": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.61.9.tgz", - "integrity": "sha512-tKZpZ64Lr6/CX96PhDtKEsqWDo1qjtswEulzIDLxpS90SMyann3azTs6mSuOwGbkbwc4gaJe6H38eCNos0ZqHg==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.62.1.tgz", + "integrity": "sha512-AYQYkKRXZk5G769f9phX5Ma2uXWVf6zn4XXHcVVu9UYJJY5h3GHhDH1fa7fEPgj1mKNSW4QQS4vyiX3O2SEBLQ==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/transformer-attributify-jsx-babel": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.61.9.tgz", - "integrity": "sha512-+fojHVJhA2MVd3VTCjlEKXf8Vnoy4N+lEl0CrYOD+im44sH5CWogm0RWs9rbeemy1uel6NI1wkP4xTfIA4vEgQ==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.62.1.tgz", + "integrity": "sha512-/2/ZOsLDCprCUkiNYgIM6kY4dxFwUwA/wQvNw3PLTiPvt3+13f04JCJmCBKeUTCP5U1yIAtCYyyf1hn4xntQeA==", "dev": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-syntax-jsx": "^7.24.7", "@babel/preset-typescript": "^7.24.7", - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/transformer-compile-class": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.61.9.tgz", - "integrity": "sha512-jezMpssFJGIaZNE/rw5U+9Rk1RoDrZqXZokRkqt4tamEn1SiXjRMPWoE/hLg5Kw4oybxwCXTuAk2OsD+kTb7iA==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.62.1.tgz", + "integrity": "sha512-hyxMO34g9I5AaFBUlQ3uc5w2XyUFsSDgRtXpHjvwwCLxFE8/ojr5aaualMtbTroiAoX4vn8acn7Rq/SLtYTEEQ==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/transformer-directives": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.61.9.tgz", - "integrity": "sha512-e4uIbHYdAYJSVpvxOv6kAsyI18X3gHkBsmBYWcUlPLVv+8tYo4eZtc0rn6ZvpiLzkFywG9e9cmpqVQwOR6pBVg==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.62.1.tgz", + "integrity": "sha512-PNUuKcMppJW2nFU9HHQDVYOmY52AeYcy0FAGk3Jwsbid/n53FByxmybxVwvzSaZtRIgTP9ledLv+nXUouNc/GA==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9", - "@unocss/rule-utils": "0.61.9", + "@unocss/core": "0.62.1", + "@unocss/rule-utils": "0.62.1", "css-tree": "^2.3.1" } }, "node_modules/@unocss/transformer-variant-group": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.61.9.tgz", - "integrity": "sha512-iewADYlY0LoeCb80E/4feHVSCKHl+QzGH4xUvW0zU85evMqNOa0/t0dCIoEG22wr/9piyEsg6OdHprZ2QliYqg==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.62.1.tgz", + "integrity": "sha512-M2k9hrFBpkyBsoctKhF1C50DXiGZzh2EmqQ/3FiiKKPsoxiXvefqL2WGdmtuZ+eKZaFeVhwbX02eHLfyxiDIXw==", "dev": true, "dependencies": { - "@unocss/core": "0.61.9" + "@unocss/core": "0.62.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/vite": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.61.9.tgz", - "integrity": "sha512-hP/sL9rq1DvVCbSSx05m+bwYqen1nHm9tW6elKFkfV7X5jBUywu24WRq551NZI33KmgHA525ApX++DSWye+0uw==", + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.62.1.tgz", + "integrity": "sha512-J5DLwvKhTgGW+TxvRnlt42PtGNteuWb5AQDQ8AykDsYXM2GGTzzNkoCuX6vOcIgxpinDwUKKtXPo0M3BWyVuDg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.3.0", "@rollup/pluginutils": "^5.1.0", - "@unocss/config": "0.61.9", - "@unocss/core": "0.61.9", - "@unocss/inspector": "0.61.9", - "@unocss/scope": "0.61.9", - "@unocss/transformer-directives": "0.61.9", + "@unocss/config": "0.62.1", + "@unocss/core": "0.62.1", + "@unocss/inspector": "0.62.1", + "@unocss/scope": "0.62.1", + "@unocss/transformer-directives": "0.62.1", "chokidar": "^3.6.0", - "fast-glob": "^3.3.2", - "magic-string": "^0.30.11" + "magic-string": "^0.30.11", + "tinyglobby": "^0.2.1" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -3084,40 +3218,6 @@ "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" } }, - "node_modules/@unocss/vite/node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@unocss/vite/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@unocss/vite/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, "node_modules/@vitest/expect": { "version": "0.28.5", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.28.5.tgz", @@ -3810,6 +3910,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -4220,6 +4329,15 @@ "uuid": "bin/uuid" } }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/bach": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/bach/-/bach-0.5.0.tgz", @@ -6401,6 +6519,19 @@ "node": ">=0.10.0" } }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -7410,6 +7541,15 @@ "node": ">=0.10.0" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/destr": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", @@ -7653,9 +7793,9 @@ } }, "node_modules/emoji-picker-element": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/emoji-picker-element/-/emoji-picker-element-1.21.0.tgz", - "integrity": "sha512-0ZyR+4Iwci8p2aaTCl43uuYgLI5z5kg/SozAyX1b1pBkvtFykeQfsmFaX/AripHyL/ZsN5Nkin4bm88UW3CGow==" + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/emoji-picker-element/-/emoji-picker-element-1.22.2.tgz", + "integrity": "sha512-josHZStpNbbkUvLMXpJoiOtVTJTutni9bv2c1dg7BLvLUd9rXVmfxlmIN6tJPJzh7HhLY70xU7xZ7wW87Lh2yw==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -8059,6 +8199,15 @@ "node": ">=4" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -8437,36 +8586,11 @@ "node": ">=0.10.0" } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/fast-sha256": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==" }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -10215,6 +10339,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/is-registered": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/is-registered/-/is-registered-0.1.5.tgz", @@ -10835,6 +10968,12 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -11574,28 +11713,6 @@ "node": ">=0.10.0" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.0.tgz", @@ -12501,6 +12618,17 @@ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", "dev": true }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -13172,26 +13300,6 @@ "node": ">=0.10.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -13801,16 +13909,6 @@ "node": ">=0.10.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -13858,19 +13956,37 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", + "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.20.0", + "@rollup/rollup-android-arm64": "4.20.0", + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-darwin-x64": "4.20.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", + "@rollup/rollup-linux-arm-musleabihf": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-arm64-musl": "4.20.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", + "@rollup/rollup-linux-riscv64-gnu": "4.20.0", + "@rollup/rollup-linux-s390x-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-musl": "4.20.0", + "@rollup/rollup-win32-arm64-msvc": "4.20.0", + "@rollup/rollup-win32-ia32-msvc": "4.20.0", + "@rollup/rollup-win32-x64-msvc": "4.20.0", "fsevents": "~2.3.2" } }, @@ -13883,29 +13999,6 @@ "once": "^1.3.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -14814,18 +14907,6 @@ "resolved": "https://registry.npmjs.org/svelte-dnd-list/-/svelte-dnd-list-0.1.8.tgz", "integrity": "sha512-81Nt/niux7kf59lql0lxTAH0z8xwAxHdHC9dZT7MbfE32T6hgeLsLZ7RIBNAihQ040Io1KghqqPXD+k2viiKeA==" }, - "node_modules/svelte-hmr": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", - "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0" - } - }, "node_modules/svelte-moveable": { "version": "0.45.0", "resolved": "https://registry.npmjs.org/svelte-moveable/-/svelte-moveable-0.45.0.tgz", @@ -15172,6 +15253,45 @@ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" }, + "node_modules/tinyglobby": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.2.tgz", + "integrity": "sha512-mZ2sDMaySvi1PkTp4lTo1In2zjU+cY8OvZsfwrDrx3YGRbXPX1/cbPwCR9zkm3O/Fz9Jo0F1HNgIQ1b8BepqyQ==", + "dev": true, + "dependencies": { + "fdir": "^6.2.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.2.0.tgz", + "integrity": "sha512-9XaWcDl0riOX5j2kYfy0kKdg7skw3IY6kA4LFT8Tk2yF9UdrADUy8D6AJuBLtf7ISm/MksumwAHE3WVbMRyCLw==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", @@ -15391,12 +15511,12 @@ "dev": true }, "node_modules/tsx": { - "version": "4.16.5", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.16.5.tgz", - "integrity": "sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.17.0.tgz", + "integrity": "sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==", "dev": true, "dependencies": { - "esbuild": "~0.21.5", + "esbuild": "~0.23.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -15409,650 +15529,668 @@ "fsevents": "~2.3.3" } }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=12" + "node": ">=4.2.0" } }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + }, + "node_modules/ui": { + "resolved": "ui", + "link": true + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true, - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], + "node_modules/unconfig": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.5.5.tgz", + "integrity": "sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@antfu/utils": "^0.7.10", + "defu": "^6.1.4", + "importx": "^0.4.3" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], + "node_modules/undici-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==" + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], + "node_modules/unique-stream/node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">= 4.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/unocss": { + "version": "0.62.1", + "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.62.1.tgz", + "integrity": "sha512-w05pOWD4Ps8BRYSlMlcn5i1At+DIZBB93DZaBPCvA5z3PTreXRv360yni+eS0PJxtfqWvjmdZ2lWEO901Hl4cQ==", + "dev": true, + "dependencies": { + "@unocss/astro": "0.62.1", + "@unocss/cli": "0.62.1", + "@unocss/core": "0.62.1", + "@unocss/extractor-arbitrary-variants": "0.62.1", + "@unocss/postcss": "0.62.1", + "@unocss/preset-attributify": "0.62.1", + "@unocss/preset-icons": "0.62.1", + "@unocss/preset-mini": "0.62.1", + "@unocss/preset-tagify": "0.62.1", + "@unocss/preset-typography": "0.62.1", + "@unocss/preset-uno": "0.62.1", + "@unocss/preset-web-fonts": "0.62.1", + "@unocss/preset-wind": "0.62.1", + "@unocss/reset": "0.62.1", + "@unocss/transformer-attributify-jsx": "0.62.1", + "@unocss/transformer-attributify-jsx-babel": "0.62.1", + "@unocss/transformer-compile-class": "0.62.1", + "@unocss/transformer-directives": "0.62.1", + "@unocss/transformer-variant-group": "0.62.1", + "@unocss/vite": "0.62.1" + }, "engines": { - "node": ">=12" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@unocss/webpack": "0.62.1", + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@unocss/webpack": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], + "node_modules/unplugin": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.12.0.tgz", + "integrity": "sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "acorn": "^8.12.1", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.2" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], + "node_modules/unplugin-icons": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.19.2.tgz", + "integrity": "sha512-QkQJ/Iz3PFr/EoiOvFUQYvqbbJZ7Vs3hObKAFHh5eywTU1PQagSNeXKGRD+JpzXSTnUNLtG0u/xEA5Ec2OeANQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@antfu/install-pkg": "^0.3.3", + "@antfu/utils": "^0.7.10", + "@iconify/utils": "^2.1.29", + "debug": "^4.3.6", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0", + "unplugin": "^1.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@svgr/core": ">=7.0.0", + "@svgx/core": "^1.0.1", + "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", + "vue-template-compiler": "^2.6.12", + "vue-template-es2015-compiler": "^1.9.0" + }, + "peerDependenciesMeta": { + "@svgr/core": { + "optional": true + }, + "@svgx/core": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "vue-template-es2015-compiler": { + "optional": true + } } }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], + "node_modules/unplugin-icons/node_modules/@antfu/install-pkg": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.3.3.tgz", + "integrity": "sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@jsdevtools/ez-spawn": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], + "node_modules/unused-filename": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-2.1.0.tgz", + "integrity": "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "modify-filename": "^1.1.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], + "node_modules/update": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/update/-/update-0.7.4.tgz", + "integrity": "sha512-B7HArWh4T6TSmMffmxlbD9gZM0QdboQ8N/p5aHcyhGCuuVRHSk37pvuQlAvi1XBrQMrEX5WJUQyQR8+jy/x4iQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "arr-union": "^3.1.0", + "assemble-core": "^0.25.0", + "assemble-loader": "^0.6.1", + "base-cli-process": "^0.1.18", + "base-config-process": "^0.1.9", + "base-generators": "^0.4.5", + "base-questions": "^0.7.3", + "base-runtimes": "^0.2.0", + "base-store": "^0.4.4", + "common-config": "^0.1.0", + "data-store": "^0.16.1", + "export-files": "^2.1.1", + "extend-shallow": "^2.0.1", + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0", + "global-modules": "^0.2.2", + "gulp-choose-files": "^0.1.3", + "is-valid-app": "^0.2.0", + "isobject": "^2.1.0", + "lazy-cache": "^2.0.1", + "log-utils": "^0.2.1", + "parser-front-matter": "^1.4.1", + "resolve-dir": "^0.1.0", + "resolve-file": "^0.2.0", + "set-blocking": "^2.0.0", + "strip-color": "^0.1.0", + "text-table": "^0.2.0", + "through2": "^2.0.1", + "yargs-parser": "^2.4.1" + }, + "bin": { + "update": "bin/update.js" + }, "engines": { - "node": ">=12" + "node": ">=5.0" } }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, - "optional": true, - "os": [ - "netbsd" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], - "engines": { - "node": ">=12" + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "node_modules/use": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use/-/use-1.1.2.tgz", + "integrity": "sha512-25Uw2xiVk0m2ySqmnu2GjOIROlImdXMRcpI6Cq7sZeG/zFZgFkSeo2+QwKNWJncfZOVS55eACoinvJ3EtprOBw==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "define-property": "^0.2.5", + "isobject": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "node_modules/utf-8-validate": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.4.tgz", + "integrity": "sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, "engines": { - "node": ">=12" + "node": ">=6.14.2" } }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], + "node_modules/vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.9" } }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], + "node_modules/vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha512-lxMlQW/Wxk/pwhooY3Ut0Q11OH5ZvZfV0Gg1c306fBNWznQ6ZeQaCdE7XX0O/PpGSqgAsHMBxwFgcGxiYW3hZg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=0.10" } }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "node_modules/vinyl-fs/node_modules/merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "dependencies": { + "readable-stream": "^2.0.1" } }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "node_modules/vinyl-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "engines": { - "node": ">=4" + "node_modules/vinyl-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "node_modules/vinyl-item": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vinyl-item/-/vinyl-item-0.1.0.tgz", + "integrity": "sha512-9L2HEcbtuTdKCLWDucRPObPoAxnUUCdAXg0QDf3aDPM3oFpb6C+yct/R31PA9EhLGeilNl8TF/inc3OwFSSEMg==", "dev": true, - "optional": true, - "engines": { - "node": ">=10" + "dependencies": { + "base": "^0.8.1", + "base-option": "^0.8.2", + "base-plugins": "^0.4.12", + "clone": "^1.0.2", + "clone-stats": "^1.0.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "isobject": "^2.1.0", + "lazy-cache": "^2.0.1", + "vinyl": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/vinyl-item/node_modules/base": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/base/-/base-0.8.1.tgz", + "integrity": "sha512-hCEtSWF9Xin1mVIrgCAwJhIJxURWOu3odjKsv+9TXofdJly0vO9Di87hnkChwi44v0+LPzHtNOjoCUYb36fBhg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "cache-base": "^0.8.2", + "class-utils": "^0.3.2", + "component-emitter": "^1.2.0", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "lazy-cache": "^1.0.3", + "mixin-deep": "^1.1.3" }, "engines": { - "node": ">=4.2.0" + "node": ">=0.10.0" } }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" - }, - "node_modules/ui": { - "resolved": "ui", - "link": true - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "node_modules/vinyl-item/node_modules/base/node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/unconfig": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.5.5.tgz", - "integrity": "sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==", + "node_modules/vinyl-item/node_modules/cache-base": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", + "integrity": "sha512-19t0n7xdoVr5Q08+6sF85YZ9VuvbpVFq5JLm0gcsRmCvTO1Y3duTJGMaOQYf14Ras4o6dEnvoqvjdrUK1tNtgg==", "dev": true, "dependencies": { - "@antfu/utils": "^0.7.10", - "defu": "^6.1.4", - "importx": "^0.4.3" + "collection-visit": "^0.2.1", + "component-emitter": "^1.2.1", + "get-value": "^2.0.5", + "has-value": "^0.3.1", + "isobject": "^3.0.0", + "lazy-cache": "^2.0.1", + "set-value": "^0.4.2", + "to-object-path": "^0.3.0", + "union-value": "^0.2.3", + "unset-value": "^0.1.1" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==" + "node_modules/vinyl-item/node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/vinyl-item/node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/vinyl-item/node_modules/collection-visit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", + "integrity": "sha512-V88PJOCqJfsZS45YBELDgmhQkECokQAAr9XR4hT6eFkFsAPsCsk3EoDHSuBPYzygjquGM/0KF4vdwTiQO6lbdw==", "dev": true, "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "lazy-cache": "^2.0.1", + "map-visit": "^0.1.5", + "object-visit": "^0.3.4" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "node_modules/vinyl-item/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "ms": "2.0.0" } }, - "node_modules/unique-stream/node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "node_modules/vinyl-item/node_modules/map-visit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", + "integrity": "sha512-zdmJBFvvVR/H5wCfsCP7XxSLp+346yAZ30Wy2OsQLcH19OVGMWa3Ms9quO00lj9ybsySu3gKOINNgICb4Zqauw==", "dev": true, "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "lazy-cache": "^2.0.1", + "object-visit": "^0.3.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/vinyl-item/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/vinyl-item/node_modules/object-visit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", + "integrity": "sha512-6QNyX7uTuwqxP7pmDBqgBDKdmZws1rXriUyXM5KG6+7J0aYRuuAGoc636IGdLzgOL77WUwL+EpoTJrEHwWsyOA==", "dev": true, + "dependencies": { + "isobject": "^2.0.0" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=0.10.0" } }, - "node_modules/unocss": { - "version": "0.61.9", - "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.61.9.tgz", - "integrity": "sha512-D7nEObT1lhCUwXU5MoQ2Msh5S5g1EHVVSqDNM2ODs6dqWSboDCsRTPZQiyQmV9vCobrjYcvAFno9ZAgO7pvurw==", - "dev": true, - "dependencies": { - "@unocss/astro": "0.61.9", - "@unocss/cli": "0.61.9", - "@unocss/core": "0.61.9", - "@unocss/extractor-arbitrary-variants": "0.61.9", - "@unocss/postcss": "0.61.9", - "@unocss/preset-attributify": "0.61.9", - "@unocss/preset-icons": "0.61.9", - "@unocss/preset-mini": "0.61.9", - "@unocss/preset-tagify": "0.61.9", - "@unocss/preset-typography": "0.61.9", - "@unocss/preset-uno": "0.61.9", - "@unocss/preset-web-fonts": "0.61.9", - "@unocss/preset-wind": "0.61.9", - "@unocss/reset": "0.61.9", - "@unocss/transformer-attributify-jsx": "0.61.9", - "@unocss/transformer-attributify-jsx-babel": "0.61.9", - "@unocss/transformer-compile-class": "0.61.9", - "@unocss/transformer-directives": "0.61.9", - "@unocss/transformer-variant-group": "0.61.9", - "@unocss/vite": "0.61.9" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@unocss/webpack": "0.61.9", - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "@unocss/webpack": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/unplugin": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.12.0.tgz", - "integrity": "sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==", + "node_modules/vinyl-item/node_modules/set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha512-2Z0LRUUvYeF7gIFFep48ksPq0NR09e5oKoFXznaMGNcu+EZAfGnyL0K6xno2gCqX6dZYEZRjrcn04/gvZzcKhQ==", + "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", "dev": true, "dependencies": { - "acorn": "^8.12.1", - "chokidar": "^3.6.0", - "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.6.2" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/unplugin-icons": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.19.1.tgz", - "integrity": "sha512-a5I+wSOO5lsgc4dB2nEFaSZ4eEgQvSSR8tSR2jT69nTKiVmcK+PPU633zn2FyRf9i6vLapUiQ28GQStfzGURdg==", - "dev": true, - "dependencies": { - "@antfu/install-pkg": "^0.3.3", - "@antfu/utils": "^0.7.10", - "@iconify/utils": "^2.1.29", - "debug": "^4.3.6", - "kolorist": "^1.8.0", - "local-pkg": "^0.5.0", - "unplugin": "^1.12.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@svgr/core": ">=7.0.0", - "@svgx/core": "^1.0.1", - "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", - "vue-template-compiler": "^2.6.12", - "vue-template-es2015-compiler": "^1.9.0" - }, - "peerDependenciesMeta": { - "@svgr/core": { - "optional": true - }, - "@svgx/core": { - "optional": true - }, - "@vue/compiler-sfc": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - }, - "vue-template-es2015-compiler": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/unplugin-icons/node_modules/@antfu/install-pkg": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.3.3.tgz", - "integrity": "sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==", + "node_modules/vinyl-item/node_modules/union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha512-Tv3cqdyY8yjW9ZcJ9WP7JdHS34natzylD0oNRLlYbWOfUdC4EQ0sf3fubnqrK2IErtlmobFmuS1pWvv88VghpA==", "dev": true, "dependencies": { - "@jsdevtools/ez-spawn": "^3.0.4" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "node_modules/vinyl-item/node_modules/unset-value": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", + "integrity": "sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg==", "dev": true, "dependencies": { "has-value": "^0.3.1", @@ -16062,7 +16200,7 @@ "node": ">=0.10.0" } }, - "node_modules/unset-value/node_modules/isobject": { + "node_modules/vinyl-item/node_modules/unset-value/node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", @@ -16071,1359 +16209,1476 @@ "node": ">=0.10.0" } }, - "node_modules/unused-filename": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-2.1.0.tgz", - "integrity": "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==", - "dev": true, - "dependencies": { - "modify-filename": "^1.1.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/update/-/update-0.7.4.tgz", - "integrity": "sha512-B7HArWh4T6TSmMffmxlbD9gZM0QdboQ8N/p5aHcyhGCuuVRHSk37pvuQlAvi1XBrQMrEX5WJUQyQR8+jy/x4iQ==", + "node_modules/vinyl-view": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/vinyl-view/-/vinyl-view-0.1.2.tgz", + "integrity": "sha512-qIc2qnXgOXZrT1Q1ViR1VMTjuylAi3Y/LSYSYfwJ6ZG7Ar5miUfioSIBu30bsHTo5dSz4ReDNSUw3lelCtc5Jw==", "dev": true, "dependencies": { "arr-union": "^3.1.0", - "assemble-core": "^0.25.0", - "assemble-loader": "^0.6.1", - "base-cli-process": "^0.1.18", - "base-config-process": "^0.1.9", - "base-generators": "^0.4.5", - "base-questions": "^0.7.3", - "base-runtimes": "^0.2.0", - "base-store": "^0.4.4", - "common-config": "^0.1.0", - "data-store": "^0.16.1", - "export-files": "^2.1.1", - "extend-shallow": "^2.0.1", - "find-pkg": "^0.1.2", - "fs-exists-sync": "^0.1.0", - "global-modules": "^0.2.2", - "gulp-choose-files": "^0.1.3", - "is-valid-app": "^0.2.0", + "define-property": "^0.2.5", + "engine-base": "^0.1.2", "isobject": "^2.1.0", "lazy-cache": "^2.0.1", - "log-utils": "^0.2.1", - "parser-front-matter": "^1.4.1", - "resolve-dir": "^0.1.0", - "resolve-file": "^0.2.0", - "set-blocking": "^2.0.0", - "strip-color": "^0.1.0", - "text-table": "^0.2.0", - "through2": "^2.0.1", - "yargs-parser": "^2.4.1" - }, - "bin": { - "update": "bin/update.js" + "mixin-deep": "^1.1.3", + "vinyl-item": "^0.1.0" }, "engines": { - "node": ">=5.0" + "node": ">=0.10.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" }, "bin": { - "update-browserslist-db": "cli.js" + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" }, "peerDependencies": { - "browserslist": ">= 4.21.0" + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/use": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use/-/use-1.1.2.tgz", - "integrity": "sha512-25Uw2xiVk0m2ySqmnu2GjOIROlImdXMRcpI6Cq7sZeG/zFZgFkSeo2+QwKNWJncfZOVS55eACoinvJ3EtprOBw==", - "dev": true, + "node_modules/vite-node": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.28.5.tgz", + "integrity": "sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==", "dependencies": { - "define-property": "^0.2.5", - "isobject": "^2.0.0" + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.1.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "source-map-support": "^0.5.21", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=0.10.0" + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/utf-8-validate": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.4.tgz", - "integrity": "sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==", - "devOptional": true, - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.14.2" + "node": ">=12" } }, - "node_modules/utf8-byte-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==", - "dev": true, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==", - "dev": true, - "dependencies": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">= 0.9" + "node": ">=12" } }, - "node_modules/vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha512-lxMlQW/Wxk/pwhooY3Ut0Q11OH5ZvZfV0Gg1c306fBNWznQ6ZeQaCdE7XX0O/PpGSqgAsHMBxwFgcGxiYW3hZg==", - "dev": true, - "dependencies": { - "duplexify": "^3.2.0", - "glob-stream": "^5.3.2", - "graceful-fs": "^4.0.0", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "^0.3.0", - "lazystream": "^1.0.0", - "lodash.isequal": "^4.0.0", - "merge-stream": "^1.0.0", - "mkdirp": "^0.5.0", - "object-assign": "^4.0.0", - "readable-stream": "^2.0.4", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^1.0.0", - "through2": "^2.0.0", - "through2-filter": "^2.0.0", - "vali-date": "^1.0.0", - "vinyl": "^1.0.0" - }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10" + "node": ">=12" } }, - "node_modules/vinyl-fs/node_modules/merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vinyl-fs/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vinyl-fs/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/vinyl-fs/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vinyl-item": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/vinyl-item/-/vinyl-item-0.1.0.tgz", - "integrity": "sha512-9L2HEcbtuTdKCLWDucRPObPoAxnUUCdAXg0QDf3aDPM3oFpb6C+yct/R31PA9EhLGeilNl8TF/inc3OwFSSEMg==", - "dev": true, - "dependencies": { - "base": "^0.8.1", - "base-option": "^0.8.2", - "base-plugins": "^0.4.12", - "clone": "^1.0.2", - "clone-stats": "^1.0.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "isobject": "^2.1.0", - "lazy-cache": "^2.0.1", - "vinyl": "^1.1.1" + "node_modules/vite/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/vinyl-item/node_modules/base": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/base/-/base-0.8.1.tgz", - "integrity": "sha512-hCEtSWF9Xin1mVIrgCAwJhIJxURWOu3odjKsv+9TXofdJly0vO9Di87hnkChwi44v0+LPzHtNOjoCUYb36fBhg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "cache-base": "^0.8.2", - "class-utils": "^0.3.2", - "component-emitter": "^1.2.0", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "lazy-cache": "^1.0.3", - "mixin-deep": "^1.1.3" + "node_modules/vite/node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/vinyl-item/node_modules/base/node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } } }, - "node_modules/vinyl-item/node_modules/cache-base": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", - "integrity": "sha512-19t0n7xdoVr5Q08+6sF85YZ9VuvbpVFq5JLm0gcsRmCvTO1Y3duTJGMaOQYf14Ras4o6dEnvoqvjdrUK1tNtgg==", - "dev": true, + "node_modules/vitest": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.28.5.tgz", + "integrity": "sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==", "dependencies": { - "collection-visit": "^0.2.1", - "component-emitter": "^1.2.1", - "get-value": "^2.0.5", - "has-value": "^0.3.1", - "isobject": "^3.0.0", - "lazy-cache": "^2.0.1", - "set-value": "^0.4.2", - "to-object-path": "^0.3.0", - "union-value": "^0.2.3", - "unset-value": "^0.1.1" + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.28.5", + "@vitest/runner": "0.28.5", + "@vitest/spy": "0.28.5", + "@vitest/utils": "0.28.5", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "std-env": "^3.3.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.1", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.28.5", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" }, "engines": { - "node": ">=0.10.0" + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/vinyl-item/node_modules/cache-base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, + "node_modules/vitest/node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/vinyl-item/node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", - "dev": true + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" }, - "node_modules/vinyl-item/node_modules/collection-visit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", - "integrity": "sha512-V88PJOCqJfsZS45YBELDgmhQkECokQAAr9XR4hT6eFkFsAPsCsk3EoDHSuBPYzygjquGM/0KF4vdwTiQO6lbdw==", + "node_modules/warning-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", + "integrity": "sha512-1S0lwbHo3kNUKA4VomBAhqn4DPjQkIKSdbOin5K7EFUQNwyIKx+wZMGXKI53RUjla8V2B8ouQduUlgtx8LoSMw==", "dev": true, - "dependencies": { - "lazy-cache": "^2.0.1", - "map-visit": "^0.1.5", - "object-visit": "^0.3.4" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/vinyl-item/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/webcola": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webcola/-/webcola-3.4.0.tgz", + "integrity": "sha512-4BiLXjXw3SJHo3Xd+rF+7fyClT6n7I+AR6TkBqyQ4kTsePSAMDLRCXY1f3B/kXJeP9tYn4G1TblxTO+jAt0gaw==", "dependencies": { - "ms": "2.0.0" + "d3-dispatch": "^1.0.3", + "d3-drag": "^1.0.4", + "d3-shape": "^1.3.5", + "d3-timer": "^1.0.5" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/vinyl-item/node_modules/map-visit": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", - "integrity": "sha512-zdmJBFvvVR/H5wCfsCP7XxSLp+346yAZ30Wy2OsQLcH19OVGMWa3Ms9quO00lj9ybsySu3gKOINNgICb4Zqauw==", + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "lazy-cache": "^2.0.1", - "object-visit": "^0.3.4" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/vinyl-item/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/vinyl-item/node_modules/object-visit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", - "integrity": "sha512-6QNyX7uTuwqxP7pmDBqgBDKdmZws1rXriUyXM5KG6+7J0aYRuuAGoc636IGdLzgOL77WUwL+EpoTJrEHwWsyOA==", - "dev": true, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dependencies": { - "isobject": "^2.0.0" + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/vinyl-item/node_modules/set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha512-2Z0LRUUvYeF7gIFFep48ksPq0NR09e5oKoFXznaMGNcu+EZAfGnyL0K6xno2gCqX6dZYEZRjrcn04/gvZzcKhQ==", - "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", - "dev": true, + "node_modules/winston": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" } }, - "node_modules/vinyl-item/node_modules/union-value": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", - "integrity": "sha512-Tv3cqdyY8yjW9ZcJ9WP7JdHS34natzylD0oNRLlYbWOfUdC4EQ0sf3fubnqrK2IErtlmobFmuS1pWvv88VghpA==", - "dev": true, + "node_modules/winston-transport": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", + "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "logform": "^2.6.1", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" } }, - "node_modules/vinyl-item/node_modules/unset-value": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", - "integrity": "sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/vinyl-item/node_modules/unset-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/vinyl-view": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/vinyl-view/-/vinyl-view-0.1.2.tgz", - "integrity": "sha512-qIc2qnXgOXZrT1Q1ViR1VMTjuylAi3Y/LSYSYfwJ6ZG7Ar5miUfioSIBu30bsHTo5dSz4ReDNSUw3lelCtc5Jw==", + "node_modules/write-json": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/write-json/-/write-json-0.2.2.tgz", + "integrity": "sha512-3HOXDnA8CgyaObzkxKPTHBw0feFlYMn9Mi8ZIrnoNJTTMABn+XOhmTsVlX/P/WeZuXEV9ApvQvR1fpZOOQ5FOg==", "dev": true, "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "engine-base": "^0.1.2", - "isobject": "^2.1.0", - "lazy-cache": "^2.0.1", - "mixin-deep": "^1.1.3", - "vinyl-item": "^0.1.0" + "write": "^0.2.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/vite": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", - "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=10.0.0" }, "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { + "bufferutil": { "optional": true }, - "terser": { + "utf-8-validate": { "optional": true } } }, - "node_modules/vite-node": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.28.5.tgz", - "integrity": "sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.1.0", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "source-map-support": "^0.5.21", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node": ">=0.4" } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "node_modules/yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" } }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, "engines": { - "node": ">=12" + "node": ">= 10" } }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, "engines": { - "node": ">=12" + "node": ">= 10" } }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "tests": { + "dependencies": { + "@holochain-open-dev/file-storage": "0.4.3", + "@holochain/client": "^0.12.2", + "@holochain/tryorama": "^0.11.0", + "@msgpack/msgpack": "^2.7.0", + "typescript": "^4.9.4", + "vitest": "^0.28.4" } }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], + "tests/node_modules/@holochain/client": { + "version": "0.12.8", + "resolved": "https://registry.npmjs.org/@holochain/client/-/client-0.12.8.tgz", + "integrity": "sha512-fa6yC5fFRBWFnz8QNSIn0V+js5IN0fTR9Gwxc4F552AQ4KVEhynM+ROkDOswT77/mDVpKyr5FBI7X+FEKqcM0Q==", + "dependencies": { + "@holochain/serialization": "^0.1.0-beta-rc.3", + "@msgpack/msgpack": "^2.7.2", + "@tauri-apps/api": "^1.2.0", + "emittery": "^1.0.1", + "isomorphic-ws": "^5.0.0", + "js-base64": "^3.7.3", + "lodash-es": "^4.17.21", + "tweetnacl": "^1.0.3" + }, "engines": { - "node": ">=12" + "node": "^14.13.1 || >=16.0.0 || >=18.0.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "ui": { + "version": "0.6.0", + "dependencies": { + "@holochain-open-dev/elements": "^0.400.0-dev.0", + "@holochain-open-dev/profiles": "^0.400.0-dev.1", + "@holochain-open-dev/stores": "^0.400.0-dev.1", + "@holochain-open-dev/utils": "^0.400.0-dev.0", + "@holochain-syn/core": "^0.400.0-dev.0", + "@holochain/client": "^0.18.0-dev.0", + "@iconify-json/fa6-regular": "^1.1.22", + "@iconify-json/fa6-solid": "^1.1.24", + "@lightningrodlabs/we-applet": "^0.17.0-dev.2", + "@lightningrodlabs/we-elements": "^0.6.1", + "@shoelace-style/shoelace": "^2.5.2", + "@types/javascript-time-ago": "^2.0.3", + "classnames": "^2.5.1", + "emoji-picker-element": "1.22.2", + "javascript-time-ago": "2.3.7", + "lodash": "^4.17.21", + "sanitize-filename": "1.6.3", + "svelte-dnd-list": "0.1.8", + "svelte-moveable": "0.45.0", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@types/lodash": "^4.17.7", + "@unocss/vite": "^0.62.1", + "bestzip": "^2.2.0", + "svelte": "^4.2.18", + "svelte-check": "^3.8.5", + "tslib": "^2.4.1", + "typescript": "^4.9.3", + "unocss": "^0.62.1", + "unplugin-icons": "^0.19.2", + "update": "^0.7.4", + "vite": "^5.4.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "ui/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ - "linux" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "ui/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ - "riscv64" + "arm" ], + "dev": true, "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "ui/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ - "s390x" + "arm64" ], + "dev": true, "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "ui/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "ui/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ - "x64" + "arm64" ], + "dev": true, "optional": true, "os": [ - "netbsd" + "darwin" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "ui/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ - "openbsd" + "darwin" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "ui/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ - "x64" + "arm64" ], + "dev": true, "optional": true, "os": [ - "sunos" + "freebsd" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "ui/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ - "arm64" + "x64" ], + "dev": true, "optional": true, "os": [ - "win32" + "freebsd" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "ui/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ - "ia32" + "arm" ], + "dev": true, "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "ui/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ - "x64" + "arm64" ], + "dev": true, "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/vite/node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", - "dev": true, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.28.5.tgz", - "integrity": "sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==", - "dependencies": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.28.5", - "@vitest/runner": "0.28.5", - "@vitest/spy": "0.28.5", - "@vitest/utils": "0.28.5", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "std-env": "^3.3.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.1", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.28.5", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + } }, - "node_modules/warning-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", - "integrity": "sha512-1S0lwbHo3kNUKA4VomBAhqn4DPjQkIKSdbOin5K7EFUQNwyIKx+wZMGXKI53RUjla8V2B8ouQduUlgtx8LoSMw==", + "ui/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/webcola": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webcola/-/webcola-3.4.0.tgz", - "integrity": "sha512-4BiLXjXw3SJHo3Xd+rF+7fyClT6n7I+AR6TkBqyQ4kTsePSAMDLRCXY1f3B/kXJeP9tYn4G1TblxTO+jAt0gaw==", - "dependencies": { - "d3-dispatch": "^1.0.3", - "d3-drag": "^1.0.4", - "d3-shape": "^1.3.5", - "d3-timer": "^1.0.5" + "ui/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "ui/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "ui/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, + "ui/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/winston": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", - "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, + "ui/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12.0.0" + "node": ">=12" } }, - "node_modules/winston-transport": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", - "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", - "dependencies": { - "logform": "^2.6.1", - "readable-stream": "^3.6.2", - "triple-beam": "^1.3.0" - }, + "ui/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12.0.0" + "node": ">=12" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "ui/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=12" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "ui/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/write-json": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/write-json/-/write-json-0.2.2.tgz", - "integrity": "sha512-3HOXDnA8CgyaObzkxKPTHBw0feFlYMn9Mi8ZIrnoNJTTMABn+XOhmTsVlX/P/WeZuXEV9ApvQvR1fpZOOQ5FOg==", + "ui/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "write": "^0.2.1" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "ui/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=12" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "ui/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.4" + "node": ">=12" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "ui/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/yallist": { + "ui/node_modules/@sveltejs/vite-plugin-svelte": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", + "integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" }, "engines": { - "node": ">=10" + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" } }, - "node_modules/yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", + "ui/node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "dev": true, "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "ui/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "ui/node_modules/svelte": { + "version": "4.2.18", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.18.tgz", + "integrity": "sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==", "dev": true, "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "ui/node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.20 || ^14.13.1 || >= 16" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" } }, - "node_modules/zip-stream": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", - "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "ui/node_modules/vite": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", + "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", "dev": true, "dependencies": { - "archiver-utils": "^3.0.4", - "compress-commons": "^4.1.2", - "readable-stream": "^3.6.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.40", + "rollup": "^4.13.0" }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/zip-stream/node_modules/archiver-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", - "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", - "dev": true, - "dependencies": { - "glob": "^7.2.3", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": ">= 10" - } - }, - "tests": { - "dependencies": { - "@holochain-open-dev/file-storage": "0.4.3", - "@holochain/client": "^0.12.2", - "@holochain/tryorama": "^0.11.0", - "@msgpack/msgpack": "^2.7.0", - "typescript": "^4.9.4", - "vitest": "^0.28.4" - } - }, - "tests/node_modules/@holochain/client": { - "version": "0.12.8", - "resolved": "https://registry.npmjs.org/@holochain/client/-/client-0.12.8.tgz", - "integrity": "sha512-fa6yC5fFRBWFnz8QNSIn0V+js5IN0fTR9Gwxc4F552AQ4KVEhynM+ROkDOswT77/mDVpKyr5FBI7X+FEKqcM0Q==", - "dependencies": { - "@holochain/serialization": "^0.1.0-beta-rc.3", - "@msgpack/msgpack": "^2.7.2", - "@tauri-apps/api": "^1.2.0", - "emittery": "^1.0.1", - "isomorphic-ws": "^5.0.0", - "js-base64": "^3.7.3", - "lodash-es": "^4.17.21", - "tweetnacl": "^1.0.3" + "node": "^18.0.0 || >=20.0.0" }, - "engines": { - "node": "^14.13.1 || >=16.0.0 || >=18.0.0" - } - }, - "ui": { - "version": "0.6.0", - "dependencies": { - "@holochain-open-dev/elements": "^0.400.0-dev.0", - "@holochain-open-dev/profiles": "^0.400.0-dev.1", - "@holochain-open-dev/stores": "^0.400.0-dev.1", - "@holochain-open-dev/utils": "^0.400.0-dev.0", - "@holochain-syn/core": "^0.400.0-dev.0", - "@holochain/client": "^0.18.0-dev.0", - "@iconify-json/fa6-regular": "^1.1.22", - "@iconify-json/fa6-solid": "^1.1.24", - "@lightningrodlabs/we-applet": "^0.17.0-dev.2", - "@lightningrodlabs/we-elements": "^0.6.1", - "@shoelace-style/shoelace": "^2.5.2", - "@types/javascript-time-ago": "^2.0.3", - "classnames": "^2.5.1", - "emoji-picker-element": "1.21.0", - "javascript-time-ago": "2.3.7", - "lodash": "^4.17.21", - "sanitize-filename": "1.6.3", - "svelte-dnd-list": "0.1.8", - "svelte-moveable": "0.45.0", - "uuid": "^8.3.2" + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, - "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.0.2", - "@types/lodash": "^4.17.7", - "@unocss/vite": "^0.61.9", - "bestzip": "^2.2.0", - "svelte": "^3.55.1", - "svelte-check": "^3.8.5", - "tslib": "^2.4.1", - "typescript": "^4.9.3", - "unocss": "^0.61.9", - "unplugin-icons": "^0.19.1", - "update": "^0.7.4", - "vite": "^4.0.4" + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } } } diff --git a/tests/package.json b/tests/package.json index a59ee76..c668525 100644 --- a/tests/package.json +++ b/tests/package.json @@ -2,7 +2,7 @@ "name": "tests", "private": true, "scripts": { - "test": "vitest run session.test.ts" + "test": "echo 'Nothing yet'" }, "dependencies": { "@holochain-open-dev/file-storage": "0.4.3", diff --git a/tests/src/kando/kando/common.ts b/tests/src/common.ts similarity index 100% rename from tests/src/kando/kando/common.ts rename to tests/src/common.ts diff --git a/ui/package.json b/ui/package.json index d0bcc18..ed4ec6b 100644 --- a/ui/package.json +++ b/ui/package.json @@ -6,7 +6,7 @@ "start": "vite --clearScreen false --port $UI_PORT", "build": "vite build", "build-check": "npm run check && vite build", - "check": "svelte-check --tsconfig ./tsconfig.json --compiler-warnings a11y-click-events-have-key-events:ignore,a11y-mouse-events-have-key-events:ignore", + "check": "svelte-check --tsconfig ./tsconfig.json --compiler-warnings a11y-click-events-have-key-events:ignore,a11y-mouse-events-have-key-events:ignore,a11y-no-static-element-interactions:ignore", "package": "rm -f dist.zip && npm run build && cd dist && bestzip ../dist.zip *" }, "dependencies": { @@ -23,7 +23,7 @@ "@shoelace-style/shoelace": "^2.5.2", "@types/javascript-time-ago": "^2.0.3", "classnames": "^2.5.1", - "emoji-picker-element": "1.21.0", + "emoji-picker-element": "1.22.2", "javascript-time-ago": "2.3.7", "lodash": "^4.17.21", "sanitize-filename": "1.6.3", @@ -32,18 +32,18 @@ "uuid": "^8.3.2" }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.0.2", + "@sveltejs/vite-plugin-svelte": "^3.1.1", "@types/lodash": "^4.17.7", - "@unocss/vite": "^0.61.9", + "@unocss/vite": "^0.62.1", "bestzip": "^2.2.0", - "svelte": "^3.55.1", + "svelte": "^4.2.18", "svelte-check": "^3.8.5", "tslib": "^2.4.1", "typescript": "^4.9.3", - "unocss": "^0.61.9", - "unplugin-icons": "^0.19.1", + "unocss": "^0.62.1", + "unplugin-icons": "^0.19.2", "update": "^0.7.4", - "vite": "^4.0.4" + "vite": "^5.4.0" }, "type": "module" } diff --git a/ui/src/ControllerCreate.svelte b/ui/src/ControllerCreate.svelte index b70b808..35ece93 100644 --- a/ui/src/ControllerCreate.svelte +++ b/ui/src/ControllerCreate.svelte @@ -63,11 +63,15 @@ >
{ view.cancel(); }}>Cancel { e.stopPropagation(); diff --git a/ui/src/Home/StartGameDialog.svelte b/ui/src/Home/StartGameDialog.svelte index 91e39a5..86c22d8 100644 --- a/ui/src/Home/StartGameDialog.svelte +++ b/ui/src/Home/StartGameDialog.svelte @@ -71,13 +71,25 @@ }} > (text = e.target.value)} > - close()} style="margin-left:10px"> Cancel close()} + style="margin-left:10px" + > + Cancel + + Pieces: - addPieceDef()}> + addPieceDef()}>
@@ -264,6 +264,8 @@ > { showEmojiPicker = index; @@ -291,7 +293,13 @@ {/if}
- +
@@ -336,16 +344,30 @@
{#if handleDelete} {#if canDelete} - handleDelete(BoardType.deleted)} variant="warning"> + handleDelete(BoardType.deleted)} + variant="warning" + > Delete {/if} - handleDelete(BoardType.archived)}> + handleDelete(BoardType.archived)} + > Archive {/if} - Cancel + + Cancel + diff --git a/ui/svelte.config.js b/ui/svelte.config.js index bf8d241..83ce424 100644 --- a/ui/svelte.config.js +++ b/ui/svelte.config.js @@ -5,6 +5,7 @@ export default { // for more information about preprocessors preprocess: vitePreprocess(), onwarn: (warning, handler) => { + console.log(warning.code); if (warning.code === 'a11y-click-events-have-key-events') return; handler(warning); }, diff --git a/ui/tsconfig.json b/ui/tsconfig.json index b0f345a..26a5325 100644 --- a/ui/tsconfig.json +++ b/ui/tsconfig.json @@ -17,7 +17,7 @@ "importsNotUsedAsValues": "error", "preserveValueImports": true, "ignoreDeprecations": "5.0", - "types": ["../node_modules/unplugin-icons/types/svelte3.d.ts"], + "types": ["../node_modules/unplugin-icons/types/svelte.d.ts"], "baseUrl": ".", "sourceMap": true, "strict": false, @@ -29,7 +29,7 @@ } }, "include": [ - "../node_modules/unplugin-icons/types/svelte3.d.ts", + "../node_modules/unplugin-icons/types/svelte.d.ts", "./package.json", "./types.d.ts", "./vite.config.ts", From df68f5cad5b991a8d8a7eabc753786da7f51989b Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 22:52:11 -0300 Subject: [PATCH 08/11] Updated to TypeScript 5 --- package-lock.json | 15 ++++++++++++++- ui/package.json | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 828fad4..f12d3f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17133,7 +17133,7 @@ "svelte": "^4.2.18", "svelte-check": "^3.8.5", "tslib": "^2.4.1", - "typescript": "^4.9.3", + "typescript": "^5.5.4", "unocss": "^0.62.1", "unplugin-icons": "^0.19.2", "update": "^0.7.4", @@ -17622,6 +17622,19 @@ "svelte": "^3.19.0 || ^4.0.0" } }, + "ui/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "ui/node_modules/vite": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", diff --git a/ui/package.json b/ui/package.json index ed4ec6b..c31876d 100644 --- a/ui/package.json +++ b/ui/package.json @@ -39,7 +39,7 @@ "svelte": "^4.2.18", "svelte-check": "^3.8.5", "tslib": "^2.4.1", - "typescript": "^4.9.3", + "typescript": "^5.5.4", "unocss": "^0.62.1", "unplugin-icons": "^0.19.2", "update": "^0.7.4", From 6b3056c0c6babc8fb59575c09b81984164d4cfed Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 23:00:39 -0300 Subject: [PATCH 09/11] Updated more UI deps --- package-lock.json | 35 +++++++++++++++++++++++------------ ui/package.json | 12 ++++++------ 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index f12d3f5..366fe98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10524,11 +10524,11 @@ "dev": true }, "node_modules/javascript-time-ago": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.3.7.tgz", - "integrity": "sha512-Vo4dbGOWkgpwVm12rwi+pwxYI5TXZJD8xU0SNaz06oovnIMIPkKdkKAOEh/GhG5FwILKJxLTYqtzqFKTDdyJMA==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.10.tgz", + "integrity": "sha512-EUxp4BP74QH8xiYHyeSHopx1XhMMJ9qEX4rcBdFtpVWmKRdzpxbNzz2GSbuekZr5wt0rmLehuyp0PE34EAJT9g==", "dependencies": { - "relative-time-format": "^1.0.5" + "relative-time-format": "^1.1.6" } }, "node_modules/jiti": { @@ -15507,8 +15507,7 @@ "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsx": { "version": "4.17.0", @@ -17114,25 +17113,25 @@ "@iconify-json/fa6-solid": "^1.1.24", "@lightningrodlabs/we-applet": "^0.17.0-dev.2", "@lightningrodlabs/we-elements": "^0.6.1", - "@shoelace-style/shoelace": "^2.5.2", - "@types/javascript-time-ago": "^2.0.3", + "@shoelace-style/shoelace": "^2.16.0", + "@types/javascript-time-ago": "^2.0.8", "classnames": "^2.5.1", "emoji-picker-element": "1.22.2", - "javascript-time-ago": "2.3.7", + "javascript-time-ago": "2.5.10", "lodash": "^4.17.21", "sanitize-filename": "1.6.3", "svelte-dnd-list": "0.1.8", "svelte-moveable": "0.45.0", - "uuid": "^8.3.2" + "tslib": "^2.6.3", + "uuid": "^10.0.0" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.1", "@types/lodash": "^4.17.7", "@unocss/vite": "^0.62.1", - "bestzip": "^2.2.0", + "bestzip": "^2.2.1", "svelte": "^4.2.18", "svelte-check": "^3.8.5", - "tslib": "^2.4.1", "typescript": "^5.5.4", "unocss": "^0.62.1", "unplugin-icons": "^0.19.2", @@ -17635,6 +17634,18 @@ "node": ">=14.17" } }, + "ui/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "ui/node_modules/vite": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", diff --git a/ui/package.json b/ui/package.json index c31876d..7eef919 100644 --- a/ui/package.json +++ b/ui/package.json @@ -20,25 +20,25 @@ "@iconify-json/fa6-solid": "^1.1.24", "@lightningrodlabs/we-applet": "^0.17.0-dev.2", "@lightningrodlabs/we-elements": "^0.6.1", - "@shoelace-style/shoelace": "^2.5.2", - "@types/javascript-time-ago": "^2.0.3", + "@shoelace-style/shoelace": "^2.16.0", + "@types/javascript-time-ago": "^2.0.8", "classnames": "^2.5.1", "emoji-picker-element": "1.22.2", - "javascript-time-ago": "2.3.7", + "javascript-time-ago": "2.5.10", "lodash": "^4.17.21", "sanitize-filename": "1.6.3", "svelte-dnd-list": "0.1.8", "svelte-moveable": "0.45.0", - "uuid": "^8.3.2" + "tslib": "^2.6.3", + "uuid": "^10.0.0" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.1", "@types/lodash": "^4.17.7", "@unocss/vite": "^0.62.1", - "bestzip": "^2.2.0", + "bestzip": "^2.2.1", "svelte": "^4.2.18", "svelte-check": "^3.8.5", - "tslib": "^2.4.1", "typescript": "^5.5.4", "unocss": "^0.62.1", "unplugin-icons": "^0.19.2", From 53ca13d775d449ae15a26b479b3705970d7bb3b3 Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 23:03:42 -0300 Subject: [PATCH 10/11] Finished all updates on UI packages deps; including Holochain client and Weave --- package-lock.json | 4 ++-- ui/package.json | 4 ++-- ui/svelte.config.js | 7 +++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 366fe98..56ebfbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17108,10 +17108,10 @@ "@holochain-open-dev/stores": "^0.400.0-dev.1", "@holochain-open-dev/utils": "^0.400.0-dev.0", "@holochain-syn/core": "^0.400.0-dev.0", - "@holochain/client": "^0.18.0-dev.0", + "@holochain/client": "^0.18.0-dev.8", "@iconify-json/fa6-regular": "^1.1.22", "@iconify-json/fa6-solid": "^1.1.24", - "@lightningrodlabs/we-applet": "^0.17.0-dev.2", + "@lightningrodlabs/we-applet": "^0.17.1", "@lightningrodlabs/we-elements": "^0.6.1", "@shoelace-style/shoelace": "^2.16.0", "@types/javascript-time-ago": "^2.0.8", diff --git a/ui/package.json b/ui/package.json index 7eef919..4ad3c79 100644 --- a/ui/package.json +++ b/ui/package.json @@ -15,10 +15,10 @@ "@holochain-open-dev/stores": "^0.400.0-dev.1", "@holochain-open-dev/utils": "^0.400.0-dev.0", "@holochain-syn/core": "^0.400.0-dev.0", - "@holochain/client": "^0.18.0-dev.0", + "@holochain/client": "^0.18.0-dev.8", "@iconify-json/fa6-regular": "^1.1.22", "@iconify-json/fa6-solid": "^1.1.24", - "@lightningrodlabs/we-applet": "^0.17.0-dev.2", + "@lightningrodlabs/we-applet": "^0.17.1", "@lightningrodlabs/we-elements": "^0.6.1", "@shoelace-style/shoelace": "^2.16.0", "@types/javascript-time-ago": "^2.0.8", diff --git a/ui/svelte.config.js b/ui/svelte.config.js index 83ce424..b952bff 100644 --- a/ui/svelte.config.js +++ b/ui/svelte.config.js @@ -5,8 +5,11 @@ export default { // for more information about preprocessors preprocess: vitePreprocess(), onwarn: (warning, handler) => { - console.log(warning.code); - if (warning.code === 'a11y-click-events-have-key-events') return; + if ( + warning.code === 'a11y-click-events-have-key-events' || + warning.code === 'a11y-no-static-element-interactions' + ) + return; handler(warning); }, }; From 8819c41d50534efb39107b2faf75825ac5329d5b Mon Sep 17 00:00:00 2001 From: Ezequiel Adrian Schwartzman Date: Mon, 12 Aug 2024 23:17:09 -0300 Subject: [PATCH 11/11] Normalize loading indicators --- ui/src/App.svelte | 50 ++++++--------------------- ui/src/Button.svelte | 34 ------------------ ui/src/Controller.svelte | 5 ++- ui/src/ControllerBoard.svelte | 36 +++---------------- ui/src/Loader.svelte | 25 -------------- ui/src/shared/LoadingIndicator.svelte | 12 +++++-- 6 files changed, 26 insertions(+), 136 deletions(-) delete mode 100644 ui/src/Button.svelte delete mode 100644 ui/src/Loader.svelte diff --git a/ui/src/App.svelte b/ui/src/App.svelte index 6ee8212..b4f2b2a 100644 --- a/ui/src/App.svelte +++ b/ui/src/App.svelte @@ -1,13 +1,11 @@ - - - - diff --git a/ui/src/Controller.svelte b/ui/src/Controller.svelte index 92205f2..7272f93 100644 --- a/ui/src/Controller.svelte +++ b/ui/src/Controller.svelte @@ -6,13 +6,12 @@ import { type WeaveClient } from '@lightningrodlabs/we-applet'; import { GamezStore } from '~/shared/store'; + import LoadingIndicator from '~/shared/LoadingIndicator.svelte'; import Toolbar from './Layout/LayoutBar.svelte'; import Home from './Home'; import GamezPane from './GamezPane'; - import Loader from './Loader.svelte'; - export let roleName = ''; export let client: AppClient; export let profilesStore: ProfilesStore; @@ -44,6 +43,6 @@ {/if} {:else} - + {/if}
diff --git a/ui/src/ControllerBoard.svelte b/ui/src/ControllerBoard.svelte index 2205124..9df2a70 100644 --- a/ui/src/ControllerBoard.svelte +++ b/ui/src/ControllerBoard.svelte @@ -7,6 +7,8 @@ import type { WeaveClient } from '@lightningrodlabs/we-applet'; import { GamezStore } from '~/shared/store'; + import LoadingIndicator from '~/shared/LoadingIndicator.svelte'; + import GamezPane from './GamezPane'; export let roleName = ''; @@ -39,10 +41,10 @@ {#if $activeBoardHash !== undefined} {:else} -
+ {/if} {:else} -
+ {/if}
@@ -70,36 +72,6 @@ } } - .loading { - text-align: center; - padding-top: 100px; - } - .loader { - border: 8px solid #f3f3f3; - border-radius: 50%; - border-top: 8px solid #3498db; - width: 50px; - height: 50px; - -webkit-animation: spin 2s linear infinite; /* Safari */ - animation: spin 2s linear infinite; - display: inline-block; - } - @-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - } - } - @keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } - } .flex-scrollable-parent { position: relative; display: flex; diff --git a/ui/src/Loader.svelte b/ui/src/Loader.svelte deleted file mode 100644 index 61918d6..0000000 --- a/ui/src/Loader.svelte +++ /dev/null @@ -1,25 +0,0 @@ -
-
-
- - diff --git a/ui/src/shared/LoadingIndicator.svelte b/ui/src/shared/LoadingIndicator.svelte index a8dfb71..e1ba1b3 100644 --- a/ui/src/shared/LoadingIndicator.svelte +++ b/ui/src/shared/LoadingIndicator.svelte @@ -1,4 +1,10 @@ -
+ + +
-
Loading...
+ {#if textual} +
Loading...
+ {/if}