From 87d007e78f2901739054707041254761aac2df91 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Thu, 22 Sep 2022 15:00:57 -0700 Subject: [PATCH 01/17] feat: Add Svelte to project --- .vscode/extensions.json | 5 +- client/package.json | 3 + client/src/vite-env.d.ts | 1 + client/vite.config.ts | 7 + package-lock.json | 552 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 566 insertions(+), 2 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 6397e4a7..64eeb695 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,6 @@ { "recommendations": [ - "NomicFoundation.hardhat-solidity", + "nomicfoundation.hardhat-solidity", "esbenp.prettier-vscode", "hbenl.vscode-mocha-test-adapter", "styled-components.vscode-styled-components", @@ -10,6 +10,7 @@ "redhat.vscode-yaml", "graphql.vscode-graphql", "dbaeumer.vscode-eslint", - "stkb.rewrap" + "stkb.rewrap", + "svelte.svelte-vscode" ] } diff --git a/client/package.json b/client/package.json index 52043bd4..cd01048f 100644 --- a/client/package.json +++ b/client/package.json @@ -88,6 +88,8 @@ "@projectsophon/workspace": "^2.0.0", "@rollup/plugin-commonjs": "^22.0.2", "@rollup/plugin-node-resolve": "14.1.0", + "@sveltejs/vite-plugin-svelte": "^1.0.8", + "@testing-library/svelte": "^3.2.1", "@types/react-timeago": "^4.1.3", "@types/animejs": "^3.1.3", "@types/color": "^3.0.2", @@ -108,6 +110,7 @@ "jsdom": "^20.0.0", "netlify-cli": "^3.8.5", "prettier": "^2.7.1", + "svelte-preprocess": "^4.10.7", "typedoc": "^0.23.15", "typedoc-plugin-markdown": "3.13.x", "typescript": "4.7.x", diff --git a/client/src/vite-env.d.ts b/client/src/vite-env.d.ts index 11f02fe2..4078e747 100644 --- a/client/src/vite-env.d.ts +++ b/client/src/vite-env.d.ts @@ -1 +1,2 @@ +/// /// diff --git a/client/vite.config.ts b/client/vite.config.ts index 647016b1..42b298da 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -1,9 +1,11 @@ import { all } from '@projectsophon/workspace'; import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; +import { svelte } from '@sveltejs/vite-plugin-svelte'; import react from '@vitejs/plugin-react'; import esbuild from 'esbuild'; import fs from 'fs/promises'; +import sveltePreprocess from 'svelte-preprocess'; import { defineConfig, loadEnv } from 'vite'; export default defineConfig(async ({ mode }) => { @@ -17,6 +19,7 @@ export default defineConfig(async ({ mode }) => { assetsInclude: ['**/*.zkey'], plugins: [ react(), + svelte({ hot: !env.VITEST, preprocess: sveltePreprocess() }), // Custom plugin for transpiling files in `embedded_plugins` and converting them to strings of source code { name: 'embedded-plugins', @@ -43,6 +46,10 @@ export default defineConfig(async ({ mode }) => { plugins: [commonjs(), nodeResolve()], }, }, + test: { + globals: true, + environment: 'jsdom', + }, envPrefix: 'DF_', clearScreen: false, optimizeDeps: { diff --git a/package-lock.json b/package-lock.json index 3a964e28..6d94f17a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,6 +103,8 @@ "@projectsophon/workspace": "^2.0.0", "@rollup/plugin-commonjs": "^22.0.2", "@rollup/plugin-node-resolve": "14.1.0", + "@sveltejs/vite-plugin-svelte": "^1.0.8", + "@testing-library/svelte": "^3.2.1", "@types/animejs": "^3.1.3", "@types/color": "^3.0.2", "@types/gl-matrix": "^3.2.0", @@ -123,6 +125,7 @@ "jsdom": "^20.0.0", "netlify-cli": "^3.8.5", "prettier": "^2.7.1", + "svelte-preprocess": "^4.10.7", "typedoc": "^0.23.15", "typedoc-plugin-markdown": "3.13.x", "typescript": "4.7.x", @@ -7294,6 +7297,64 @@ "tslib": "^2.0.0" } }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.8.tgz", + "integrity": "sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.3", + "svelte-hmr": "^0.15.0" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "diff-match-patch": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/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/@sveltejs/vite-plugin-svelte/node_modules/magic-string": { + "version": "0.26.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz", + "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -7307,6 +7368,81 @@ "node": ">=6" } }, + "node_modules/@testing-library/dom": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz", + "integrity": "sha512-oEvsm2B/WtcHKE+IcEeeCqNU/ltFGaVyGbpcm4g/2ytuT49jrlH9x5qRKL/H3A6yfM4YAbSbC0ceT5+9CEXnLg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.4.4", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@testing-library/svelte": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-3.2.1.tgz", + "integrity": "sha512-qP5nMAx78zt+a3y9Sws9BNQYP30cOQ/LXDYuAj7wNtw86b7AtB7TFAz6/Av9hFsW3IJHPBBIGff6utVNyq+F1g==", + "dev": true, + "dependencies": { + "@testing-library/dom": "^8.1.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "svelte": "3.x" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -7323,6 +7459,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "dev": true + }, "node_modules/@types/async-eventemitter": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", @@ -7716,6 +7858,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -7811,6 +7959,15 @@ "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "license": "MIT" }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -8978,6 +9135,15 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -13372,6 +13538,15 @@ "node": ">=0.10.0" } }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -13602,6 +13777,12 @@ "node": ">=0.10.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", + "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", + "dev": true + }, "node_modules/domexception": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", @@ -21396,6 +21577,15 @@ "graceful-fs": "^4.1.9" } }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -22778,6 +22968,15 @@ "dev": true, "license": "MIT" }, + "node_modules/lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/macos-release": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", @@ -27732,6 +27931,36 @@ "dev": true, "license": "MIT" }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -28817,6 +29046,21 @@ "dev": true, "license": "MIT" }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, "node_modules/sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -29595,6 +29839,94 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svelte": { + "version": "3.50.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", + "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", + "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "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==", + "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", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "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", + "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" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, "node_modules/symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", @@ -37653,6 +37985,47 @@ "tslib": "^2.0.0" } }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.8.tgz", + "integrity": "sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.2.1", + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.3", + "svelte-hmr": "^0.15.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "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 + }, + "magic-string": { + "version": "0.26.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz", + "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -37662,6 +38035,62 @@ "defer-to-connect": "^1.0.1" } }, + "@testing-library/dom": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz", + "integrity": "sha512-oEvsm2B/WtcHKE+IcEeeCqNU/ltFGaVyGbpcm4g/2ytuT49jrlH9x5qRKL/H3A6yfM4YAbSbC0ceT5+9CEXnLg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.4.4", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } + } + }, + "@testing-library/svelte": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-3.2.1.tgz", + "integrity": "sha512-qP5nMAx78zt+a3y9Sws9BNQYP30cOQ/LXDYuAj7wNtw86b7AtB7TFAz6/Av9hFsW3IJHPBBIGff6utVNyq+F1g==", + "dev": true, + "requires": { + "@testing-library/dom": "^8.1.0" + } + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -37674,6 +38103,12 @@ "integrity": "sha512-WUjeFT2SXd6intfE6cg6eL1jk/JL88JqM2gC4WqO4iHLmbCvHUq6aoLK13lGpDWs4FtS2PHoYraJZ0dEx99Dyg==", "dev": true }, + "@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "dev": true + }, "@types/async-eventemitter": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", @@ -38026,6 +38461,12 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", "dev": true }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -38111,6 +38552,15 @@ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -38923,6 +39373,12 @@ "sprintf-js": "~1.0.2" } }, + "aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -40547,6 +41003,8 @@ "@projectsophon/workspace": "^2.0.0", "@rollup/plugin-commonjs": "^22.0.2", "@rollup/plugin-node-resolve": "14.1.0", + "@sveltejs/vite-plugin-svelte": "^1.0.8", + "@testing-library/svelte": "^3.2.1", "@types/animejs": "^3.1.3", "@types/color": "^3.0.2", "@types/gl-matrix": "^3.2.0", @@ -40601,6 +41059,7 @@ "react-timeago": "^6.2.1", "sortablejs": "^1.10.2", "styled-components": "^5.3.3", + "svelte-preprocess": "^4.10.7", "ts-dedent": "^2.0.0", "typedoc": "^0.23.15", "typedoc-plugin-markdown": "3.13.x", @@ -42292,6 +42751,12 @@ "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, "detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -42455,6 +42920,12 @@ "esutils": "^2.0.2" } }, + "dom-accessibility-api": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", + "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", + "dev": true + }, "domexception": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", @@ -48233,6 +48704,12 @@ "graceful-fs": "^4.1.9" } }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -49279,6 +49756,12 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", + "dev": true + }, "macos-release": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", @@ -52857,6 +53340,35 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "requires": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + }, + "dependencies": { + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -53682,6 +54194,18 @@ "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", "dev": true }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + } + }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -54251,6 +54775,34 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "svelte": { + "version": "3.50.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", + "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", + "dev": true, + "peer": true + }, + "svelte-hmr": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", + "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", + "dev": true, + "requires": {} + }, + "svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + } + }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", From 0608220432f05b1c42528f18bc3fe11aac113713 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Thu, 22 Sep 2022 15:01:24 -0700 Subject: [PATCH 02/17] feat: Convert sample component to Svelte & write some tests --- .../Frontend/Components/Icons/Icons.test.ts | 36 +++++++++++++++++++ .../Frontend/Components/Icons/Quasar.svelte | 7 ++++ 2 files changed, 43 insertions(+) create mode 100644 client/src/Frontend/Components/Icons/Icons.test.ts create mode 100644 client/src/Frontend/Components/Icons/Quasar.svelte diff --git a/client/src/Frontend/Components/Icons/Icons.test.ts b/client/src/Frontend/Components/Icons/Icons.test.ts new file mode 100644 index 00000000..ad0dc21f --- /dev/null +++ b/client/src/Frontend/Components/Icons/Icons.test.ts @@ -0,0 +1,36 @@ +import { cleanup, render, screen } from '@testing-library/svelte'; +import { afterEach, expect } from 'vitest'; +import Quasar from './Quasar.svelte'; + +afterEach(() => cleanup()); + +test('Quasar icon: default', () => { + render(Quasar); + + const el = screen.getByRole('img'); + expect(el).toBeTruthy(); + expect(el.getAttribute('alt')).toEqual('Quasar'); + expect(el.getAttribute('src')?.endsWith('.svg')).toEqual(true); + expect(el.getAttribute('width')).toEqual('48px'); + expect(el.getAttribute('height')).toEqual('48px'); +}); + +test('Quasar icon: custom height & width', () => { + render(Quasar, { height: '24px', width: '24px' }); + + const el = screen.getByRole('img'); + expect(el).toBeTruthy(); + expect(el.getAttribute('width')).toEqual('24px'); + expect(el.getAttribute('height')).toEqual('24px'); +}); + +test('Quasar icon: rerender with new prop', () => { + const { rerender } = render(Quasar); + + rerender({ width: '96px' }); + + const el = screen.getByRole('img'); + expect(el).toBeTruthy(); + expect(el.getAttribute('width')).toEqual('96px'); + expect(el.getAttribute('height')).toEqual('48px'); +}); diff --git a/client/src/Frontend/Components/Icons/Quasar.svelte b/client/src/Frontend/Components/Icons/Quasar.svelte new file mode 100644 index 00000000..a542268d --- /dev/null +++ b/client/src/Frontend/Components/Icons/Quasar.svelte @@ -0,0 +1,7 @@ + + +Quasar From 093e163eb5d5b10adbaa4edf18352bcc83c06f07 Mon Sep 17 00:00:00 2001 From: cha0sg0d Date: Fri, 23 Sep 2022 10:17:49 +0100 Subject: [PATCH 03/17] test: FoundRuins --- .../src/Frontend/Components/Icons/FoundRuins.svelte | 9 +++++++++ client/src/Frontend/Components/Icons/Icons.test.ts | 12 ++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 client/src/Frontend/Components/Icons/FoundRuins.svelte diff --git a/client/src/Frontend/Components/Icons/FoundRuins.svelte b/client/src/Frontend/Components/Icons/FoundRuins.svelte new file mode 100644 index 00000000..6bc8a52a --- /dev/null +++ b/client/src/Frontend/Components/Icons/FoundRuins.svelte @@ -0,0 +1,9 @@ + + +FoundRuins + + + diff --git a/client/src/Frontend/Components/Icons/Icons.test.ts b/client/src/Frontend/Components/Icons/Icons.test.ts index ad0dc21f..7fe6915b 100644 --- a/client/src/Frontend/Components/Icons/Icons.test.ts +++ b/client/src/Frontend/Components/Icons/Icons.test.ts @@ -1,5 +1,6 @@ import { cleanup, render, screen } from '@testing-library/svelte'; import { afterEach, expect } from 'vitest'; +import FoundRuins from './FoundRuins.svelte'; import Quasar from './Quasar.svelte'; afterEach(() => cleanup()); @@ -34,3 +35,14 @@ test('Quasar icon: rerender with new prop', () => { expect(el.getAttribute('width')).toEqual('96px'); expect(el.getAttribute('height')).toEqual('48px'); }); + +test('FoundRuins icon: default', () => { + render(FoundRuins); + + const el = screen.getByRole('img'); + expect(el).toBeTruthy(); + expect(el.getAttribute('alt')).toEqual('FoundRuins'); + expect(el.getAttribute('src')?.endsWith('.svg')).toEqual(true); + expect(el.getAttribute('width')).toEqual('48px'); + expect(el.getAttribute('height')).toEqual('48px'); +}); From c2b4d3fccbeca16f81a38c5cd2980e0be2e21bf6 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:33:51 -0700 Subject: [PATCH 04/17] chore: Format svelte code --- .vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 93c21f63..a26f21ca 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -37,5 +37,8 @@ "yaml.format.singleQuote": true, "[solidity]": { "editor.defaultFormatter": "NomicFoundation.hardhat-solidity" + }, + "[svelte]": { + "editor.defaultFormatter": "svelte.svelte-vscode" } } From 8ecb8718dd6ee649c385ff69814454b5f7a4e08d Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:34:24 -0700 Subject: [PATCH 05/17] chore: Remove the organize-imports plugin because it removes svelte component imports --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index b856340b..32f77dfe 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "eslint-plugin-react-hooks": "^4.6.0", "npm-run-all": "^4.1.5", "prettier": "^2.7.1", - "prettier-plugin-organize-imports": "^3.1.1", "prettier-plugin-solidity": "=1.0.0-beta.24", "typescript": "4.7.x" } From d09ccecc3a12495661d0f2f1cc87e74caf476f40 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:35:21 -0700 Subject: [PATCH 06/17] feat: Add an IconLink component --- .../src/Frontend/Components/IconLink.svelte | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 client/src/Frontend/Components/IconLink.svelte diff --git a/client/src/Frontend/Components/IconLink.svelte b/client/src/Frontend/Components/IconLink.svelte new file mode 100644 index 00000000..7d0a9e93 --- /dev/null +++ b/client/src/Frontend/Components/IconLink.svelte @@ -0,0 +1,45 @@ + + + + + + + From d26feef66d8237bf2a89c8a3d344d0b34a1f8b34 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:35:42 -0700 Subject: [PATCH 07/17] feat: Migrate MythicLabel component --- .../Components/Labels/MythicLabel.svelte | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 client/src/Frontend/Components/Labels/MythicLabel.svelte diff --git a/client/src/Frontend/Components/Labels/MythicLabel.svelte b/client/src/Frontend/Components/Labels/MythicLabel.svelte new file mode 100644 index 00000000..b71d8ec7 --- /dev/null +++ b/client/src/Frontend/Components/Labels/MythicLabel.svelte @@ -0,0 +1,34 @@ + + + + {#each text as c, i} + + {c} + + {/each} + + + From a5e0781e79d6f00725adbc7389e7245bbe5c8b1b Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:36:09 -0700 Subject: [PATCH 08/17] feat: Migrate Link component --- client/src/Frontend/Components/Link.svelte | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 client/src/Frontend/Components/Link.svelte diff --git a/client/src/Frontend/Components/Link.svelte b/client/src/Frontend/Components/Link.svelte new file mode 100644 index 00000000..cb9e509b --- /dev/null +++ b/client/src/Frontend/Components/Link.svelte @@ -0,0 +1,26 @@ + + + + + From 8442f8acd0ee3e8645b5a61fc39f92a9bf142fef Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:36:37 -0700 Subject: [PATCH 09/17] chore: Add DF_DEFAULT_RPC to the vite env --- client/src/vite-env.d.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/vite-env.d.ts b/client/src/vite-env.d.ts index 4078e747..da930743 100644 --- a/client/src/vite-env.d.ts +++ b/client/src/vite-env.d.ts @@ -1,2 +1,6 @@ /// /// + +interface ImportMetaEnv { + DF_DEFAULT_RPC: string; +} From 514afaba67b9cf11678e13b7ebf3edde507653f5 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:38:00 -0700 Subject: [PATCH 10/17] feat: Migrate TextPreview component --- .../Frontend/Components/TextPreview.svelte | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 client/src/Frontend/Components/TextPreview.svelte diff --git a/client/src/Frontend/Components/TextPreview.svelte b/client/src/Frontend/Components/TextPreview.svelte new file mode 100644 index 00000000..0245679b --- /dev/null +++ b/client/src/Frontend/Components/TextPreview.svelte @@ -0,0 +1,43 @@ + + +{#if isFocused} +
+ +
+{:else} + + {text} + +{/if} + + From 74c4f596fd2db73391256a7a67a1e21d2714040b Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:38:30 -0700 Subject: [PATCH 11/17] feat: Migrate LandingPageRoundArt component --- .../Frontend/Views/LandingPageRoundArt.svelte | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 client/src/Frontend/Views/LandingPageRoundArt.svelte diff --git a/client/src/Frontend/Views/LandingPageRoundArt.svelte b/client/src/Frontend/Views/LandingPageRoundArt.svelte new file mode 100644 index 00000000..2c872cac --- /dev/null +++ b/client/src/Frontend/Views/LandingPageRoundArt.svelte @@ -0,0 +1,50 @@ +
+
+ Art by @JannehMoe + + Art by + + +
+
+ + From 5f3b7f9a7b6d65f61902911cea72ecc1850c2c14 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:39:00 -0700 Subject: [PATCH 12/17] fix: Target es2020 to support native bigint in deps --- client/vite.config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/vite.config.ts b/client/vite.config.ts index 42b298da..2a193c0a 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -54,6 +54,9 @@ export default defineConfig(async ({ mode }) => { clearScreen: false, optimizeDeps: { include: Array.from(all().keys()).filter((name) => !privateWorkspaces.includes(name)), + esbuildOptions: { + target: 'es2020', + }, }, }; }); From 1df5d3804dbf78fca719f800ee68fda2567238ba Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:40:02 -0700 Subject: [PATCH 13/17] fix: Target es2021 to have replaceAll on strings --- client/tsconfig.json | 4 ++-- client/vite.config.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/tsconfig.json b/client/tsconfig.json index b4a1bd63..d8b65f46 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -9,7 +9,7 @@ ], "compilerOptions": { "module": "esnext", - "target": "es2020", + "target": "es2021", "sourceMap": true, "noImplicitAny": true, "strictNullChecks": true, @@ -17,7 +17,7 @@ "jsx": "react", // use typescript to transpile jsx to js "allowJs": true, // allow a partial TypeScript and JavaScript codebase "moduleResolution": "Node", - "lib": ["es2020", "dom"], + "lib": ["es2021", "dom"], "skipLibCheck": true, "noEmit": true }, diff --git a/client/vite.config.ts b/client/vite.config.ts index 2a193c0a..41c78443 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -55,7 +55,7 @@ export default defineConfig(async ({ mode }) => { optimizeDeps: { include: Array.from(all().keys()).filter((name) => !privateWorkspaces.includes(name)), esbuildOptions: { - target: 'es2020', + target: 'es2021', }, }, }; From a6457641cb024895728d3c2af62a10b22412cf28 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:49:52 -0700 Subject: [PATCH 14/17] feat: Bootstrap svelte and begin migrating the homepage --- client/index.html | 2 +- client/package.json | 2 + client/src/Frontend/EntryPoints/index.ts | 19 ++ client/src/Frontend/Pages/App.svelte | 28 +++ client/src/Frontend/Pages/LandingPage.svelte | 219 +++++++++++++++++++ 5 files changed, 269 insertions(+), 1 deletion(-) create mode 100644 client/src/Frontend/EntryPoints/index.ts create mode 100644 client/src/Frontend/Pages/App.svelte create mode 100644 client/src/Frontend/Pages/LandingPage.svelte diff --git a/client/index.html b/client/index.html index 7c089e0f..8e2c3888 100644 --- a/client/index.html +++ b/client/index.html @@ -58,6 +58,6 @@
- + diff --git a/client/package.json b/client/package.json index cd01048f..8880b946 100644 --- a/client/package.json +++ b/client/package.json @@ -55,6 +55,8 @@ "react-timeago": "^6.2.1", "sortablejs": "^1.10.2", "styled-components": "^5.3.3", + "svelte": "^3.50.1", + "svelte-spa-router": "^3.3.0", "ts-dedent": "^2.0.0", "uuid": "^8.3.2" }, diff --git a/client/src/Frontend/EntryPoints/index.ts b/client/src/Frontend/EntryPoints/index.ts new file mode 100644 index 00000000..efc7a786 --- /dev/null +++ b/client/src/Frontend/EntryPoints/index.ts @@ -0,0 +1,19 @@ +import App from '../Pages/App.svelte'; +import '../Styles/font/stylesheet.css'; +import '../Styles/icomoon/style.css'; +import '../Styles/preflight.css'; +import '../Styles/style.css'; + +import { DarkForestTheme, DarkForestButton, DarkForestTextInput } from '@dfdao/ui'; +customElements.define(DarkForestTheme.tagName, DarkForestTheme); +customElements.define(DarkForestButton.tagName, DarkForestButton); +customElements.define(DarkForestTextInput.tagName, DarkForestTextInput); + +const target = document.getElementById('root'); +if (!target) { + throw new Error('Could not locate #root node'); +} + +const app = new App({ target }); + +export default app; diff --git a/client/src/Frontend/Pages/App.svelte b/client/src/Frontend/Pages/App.svelte new file mode 100644 index 00000000..aecabe17 --- /dev/null +++ b/client/src/Frontend/Pages/App.svelte @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/client/src/Frontend/Pages/LandingPage.svelte b/client/src/Frontend/Pages/LandingPage.svelte new file mode 100644 index 00000000..4ed63b32 --- /dev/null +++ b/client/src/Frontend/Pages/LandingPage.svelte @@ -0,0 +1,219 @@ + + +
+
+
+
+ + + + +

+ Dark Forest + zkSNARK space warfare +
+ Round 5: + The Junk Wars +

+ +
+ push(`/lobby/${defaultAddress}`)} + >Create Lobby + push(`/play/${defaultAddress}`)} + >Enter Round 5 + push(`/events`)}>Events +
+
+ + Ways to get Involved + + +
+
+ + From da75ba4adb288f4d968f4dbdd5808e935801fdc5 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 28 Sep 2022 10:50:21 -0700 Subject: [PATCH 15/17] feat: Prototype a Terminal component replacement --- client/src/Frontend/Views/Terminal.svelte | 232 ++++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 client/src/Frontend/Views/Terminal.svelte diff --git a/client/src/Frontend/Views/Terminal.svelte b/client/src/Frontend/Views/Terminal.svelte new file mode 100644 index 00000000..1900a771 --- /dev/null +++ b/client/src/Frontend/Views/Terminal.svelte @@ -0,0 +1,232 @@ + + + + +
+ {#each $fragments as frag (frag.index)} + {#if frag.type === 'element'} + {#if frag.content} + {frag.content} + {:else} + + {/if} + {:else if frag.content} + {frag.content} + {:else} + + {/if} + {/each} +
+ +
+