From e9969288d0c183f0586038ac9f2d0e03bca5b806 Mon Sep 17 00:00:00 2001 From: Brian Ginsburg Date: Tue, 5 Sep 2023 14:54:29 -0700 Subject: [PATCH 01/17] refactor: wip upgrade svelvet --- examples/websocket-relay/relay-app/.env | 2 +- .../relay-app/package-lock.json | 1281 +---------------- .../websocket-relay/relay-app/package.json | 6 +- .../src/components/WorkflowDetail.svelte | 73 +- .../src/components/controls/TaskValue.svelte | 84 +- .../relay-app/src/components/node/Edge.svelte | 30 + .../relay-app/src/components/node/Node.svelte | 78 + .../websocket-relay/relay-app/src/lib/node.ts | 4 + .../relay-app/src/routes/+layout.svelte | 2 +- .../relay-app/src/routes/+page.svelte | 93 +- .../relay-app/src/stores-original.ts.bak | 271 ++++ .../websocket-relay/relay-app/src/stores.ts | 339 ++--- .../websocket-relay/relay-app/vite.config.ts | 3 - 13 files changed, 703 insertions(+), 1563 deletions(-) create mode 100644 examples/websocket-relay/relay-app/src/components/node/Edge.svelte create mode 100644 examples/websocket-relay/relay-app/src/components/node/Node.svelte create mode 100644 examples/websocket-relay/relay-app/src/lib/node.ts create mode 100644 examples/websocket-relay/relay-app/src/stores-original.ts.bak diff --git a/examples/websocket-relay/relay-app/.env b/examples/websocket-relay/relay-app/.env index 36d1eb1f..253659c5 100644 --- a/examples/websocket-relay/relay-app/.env +++ b/examples/websocket-relay/relay-app/.env @@ -1,4 +1,4 @@ VITE_WEBSOCKET_ENDPOINT="ws://localhost:1337" VITE_PING_INTERVAL=8000 VITE_MAX_PING_RETRIES=3 -VITE_EMULATION_MODE=false +VITE_EMULATION_MODE=true diff --git a/examples/websocket-relay/relay-app/package-lock.json b/examples/websocket-relay/relay-app/package-lock.json index 9efcc1a7..06fcd122 100644 --- a/examples/websocket-relay/relay-app/package-lock.json +++ b/examples/websocket-relay/relay-app/package-lock.json @@ -8,9 +8,7 @@ "name": "websocket-relay", "version": "0.0.1", "dependencies": { - "@zerodevx/svelte-json-view": "^1.0.3", - "clipboard-copy": "^4.0.1", - "svelvet": "github:bgins/Svelvet#custom-for-homestar" + "svelvet": "8.1.0" }, "devDependencies": { "@playwright/test": "^1.28.1", @@ -31,7 +29,7 @@ "tailwindcss": "^3.3.1", "tslib": "^2.4.1", "typescript": "^5.0.0", - "vite": "^4.2.0", + "vite": "^4.4.2", "vitest": "^0.25.3" } }, @@ -56,29 +54,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@daybrush/utils": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@daybrush/utils/-/utils-1.13.0.tgz", - "integrity": "sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ==" - }, - "node_modules/@egjs/agent": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@egjs/agent/-/agent-2.4.3.tgz", - "integrity": "sha512-XvksSENe8wPeFlEVouvrOhKdx8HMniJ3by7sro2uPF3M6QqWwjzVcmvwoPtdjiX8O1lfRoLhQMp1a7NGlVTdIA==" - }, - "node_modules/@egjs/children-differ": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@egjs/children-differ/-/children-differ-1.0.1.tgz", - "integrity": "sha512-DRvyqMf+CPCOzAopQKHtW+X8iN6Hy6SFol+/7zCUiE5y4P/OB8JP8FtU4NxtZwtafvSL4faD5KoQYPj3JHzPFQ==", - "dependencies": { - "@egjs/list-differ": "^1.0.0" - } - }, - "node_modules/@egjs/list-differ": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@egjs/list-differ/-/list-differ-1.0.1.tgz", - "integrity": "sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==" - }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -628,84 +603,6 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, - "node_modules/@scena/dragscroll": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", - "integrity": "sha512-3O8daaZD9VXA9CP3dra6xcgt/qrm0mg0xJCwiX6druCteQ9FFsXffkF8PrqxY4Z4VJ58fFKEa0RlKqbsi/XnRA==", - "dependencies": { - "@daybrush/utils": "^1.6.0", - "@scena/event-emitter": "^1.0.2" - } - }, - "node_modules/@scena/event-emitter": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@scena/event-emitter/-/event-emitter-1.0.5.tgz", - "integrity": "sha512-AzY4OTb0+7ynefmWFQ6hxDdk0CySAq/D4efljfhtRHCOP7MBF9zUfhKG3TJiroVjASqVgkRJFdenS8ArZo6Olg==", - "dependencies": { - "@daybrush/utils": "^1.1.1" - } - }, - "node_modules/@scena/matrix": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scena/matrix/-/matrix-1.1.1.tgz", - "integrity": "sha512-JVKBhN0tm2Srl+Yt+Ywqu0oLgLcdemDQlD1OxmN9jaCTwaFPZ7tY8n6dhVgMEaR9qcR7r+kAlMXnSfNyYdE+Vg==", - "dependencies": { - "@daybrush/utils": "^1.4.0" - } - }, - "node_modules/@supabase/functions-js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.4.tgz", - "integrity": "sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/gotrue-js": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.24.0.tgz", - "integrity": "sha512-6PVv7mHCFOxLm6TSBfR7hsq/y3CMKpvzePVR+ZWtlFBTjJ2J87g2OYE9bgC61P5TNeZopUXKw93H92yz0MTALw==", - "dependencies": { - "cross-fetch": "^3.0.6" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.4.tgz", - "integrity": "sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.7.5.tgz", - "integrity": "sha512-nXuoxt7NE1NTI+G8WBim1K2gkUC8YE3e9evBUG+t6xwd9Sq+sSOrjcE0qJ8/Y631BCnLzlhX6yhFYQFh1oQDOg==", - "dependencies": { - "@types/phoenix": "^1.5.4", - "websocket": "^1.0.34" - } - }, - "node_modules/@supabase/storage-js": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.7.3.tgz", - "integrity": "sha512-jnIZWqOc9TGclOozgX9v/RWGFCgJAyW/yvmauexgRZhWknUXoA4b2i8tj7vfwE0WTvNRuA5JpXID98rfJeSG7Q==", - "dependencies": { - "cross-fetch": "^3.1.0" - } - }, - "node_modules/@supabase/supabase-js": { - "version": "1.35.7", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.7.tgz", - "integrity": "sha512-X+qCzmj5sH0dozagbLoK7LzysBaWoivO0gsAUAPPBQkQupQWuBfaOqG18gKhlfL0wp2PL888QzhQNScp/IwUfA==", - "dependencies": { - "@supabase/functions-js": "^1.3.4", - "@supabase/gotrue-js": "^1.22.21", - "@supabase/postgrest-js": "^0.37.4", - "@supabase/realtime-js": "^1.7.5", - "@supabase/storage-js": "^1.7.2" - } - }, "node_modules/@sveltejs/adapter-auto": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz", @@ -818,11 +715,6 @@ "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", "dev": true }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -835,11 +727,6 @@ "integrity": "sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg==", "dev": true }, - "node_modules/@types/phoenix": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", - "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" - }, "node_modules/@types/pug": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", @@ -1040,18 +927,11 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@zerodevx/svelte-json-view": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@zerodevx/svelte-json-view/-/svelte-json-view-1.0.7.tgz", - "integrity": "sha512-yW0MV+9BCKOwzt3h86y3xDqYdI5st+Rxk+L5pa0Utq7nlPD+VvxyhL7R1gJoLxQvWwjyAvY/fyUCFTdwDyI14w==", - "peerDependencies": { - "svelte": "^3.57.0 || ^4.0.0" - } - }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1277,18 +1157,6 @@ "node": "*" } }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -1421,30 +1289,6 @@ "node": ">= 6" } }, - "node_modules/clipboard-copy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-4.0.1.tgz", - "integrity": "sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==", - "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/codemirror": { - "version": "5.65.14", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.14.tgz", - "integrity": "sha512-VSNugIBDGt0OU9gDjeVr6fNkoFQznrWEUdAApMlXQNbfE8gGO19776D6MwSqF/V/w/sDwonsQ0z7KmmI9guScg==" - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1487,14 +1331,6 @@ "node": ">= 0.6" } }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1509,23 +1345,6 @@ "node": ">= 8" } }, - "node_modules/css-styled": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/css-styled/-/css-styled-1.0.8.tgz", - "integrity": "sha512-tCpP7kLRI8dI95rCh3Syl7I+v7PP+2JYOzWkl0bUEoSbJM+u8ITbutjlQVf0NC2/g4ULROJPi16sfwDIO8/84g==", - "dependencies": { - "@daybrush/utils": "^1.13.0" - } - }, - "node_modules/css-to-mat": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-to-mat/-/css-to-mat-1.1.1.tgz", - "integrity": "sha512-kvpxFYZb27jRd2vium35G7q5XZ2WJ9rWjDUMNT36M3Hc41qCrLXFM5iEKMGXcrPsKfXEN+8l/riB4QzwwwiEyQ==", - "dependencies": { - "@daybrush/utils": "^1.13.0", - "@scena/matrix": "^1.0.0" - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -1538,111 +1357,6 @@ "node": ">=4" } }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1738,62 +1452,18 @@ "node": ">=6.0.0" } }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.490", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", "dev": true }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, "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/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", @@ -2052,14 +1722,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2069,19 +1731,6 @@ "node": ">=0.10.0" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2196,11 +1845,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/focus-options-polyfill": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/focus-options-polyfill/-/focus-options-polyfill-1.6.0.tgz", - "integrity": "sha512-uyrAmLZrPnUItQY5wTdg31TO9GGZRGsh/jmohUg9oLmLi/sw5y7LlTV/mwyd6rvbxIOGwmRiv6LcTS8w7Bk9NQ==" - }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -2214,11 +1858,6 @@ "url": "https://www.patreon.com/infusion" } }, - "node_modules/framework-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/framework-utils/-/framework-utils-1.1.0.tgz", - "integrity": "sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg==" - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2245,15 +1884,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/gesto": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/gesto/-/gesto-1.19.1.tgz", - "integrity": "sha512-ofWVEdqmnpFm3AFf7aoclhoayseb3OkwSiXbXusKYu/99iN5HgeWP+SWqdghQ5TFlOgP5Zlz+6SY8mP2V0kFaQ==", - "dependencies": { - "@daybrush/utils": "^1.13.0", - "@scena/event-emitter": "^1.0.2" - } - }, "node_modules/get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", @@ -2486,11 +2116,6 @@ "node": ">=8" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2633,17 +2258,6 @@ "node": ">=12" } }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2720,17 +2334,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/moveable": { - "version": "0.42.2", - "resolved": "https://registry.npmjs.org/moveable/-/moveable-0.42.2.tgz", - "integrity": "sha512-3FQ5bZ+f6txGPgi7wJQ+rRhBLjT2/oqKVwg5Jw5w/eDMYPbUK2QY3YX9cZ+LvcfUc/KChHzyMnrwNgzxYs3L+g==", - "dependencies": { - "@scena/event-emitter": "^1.0.5", - "react-compat-moveable": "~0.30.2", - "react-moveable": "~0.45.1", - "react-simple-compat": "^1.2.3" - } - }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -2796,40 +2399,6 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -2898,14 +2467,6 @@ "node": ">= 0.8.0" } }, - "node_modules/overlap-area": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/overlap-area/-/overlap-area-1.1.0.tgz", - "integrity": "sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==", - "dependencies": { - "@daybrush/utils": "^1.7.1" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -3241,85 +2802,6 @@ } ] }, - "node_modules/react-compat-css-styled": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/react-compat-css-styled/-/react-compat-css-styled-1.0.9.tgz", - "integrity": "sha512-YpUgTpXU1wR58aPQJVGAWq6QeEFWkafV0qq4Y8KRUwpQJLbJF2GYu5ZQ/kafHGvN3dqQX2e340NlNZ+zbZZv2w==", - "dependencies": { - "@daybrush/utils": "^1.0.0", - "css-styled": "^1.0.0", - "framework-utils": "^1.1.0", - "react-css-styled": "~1.0.4" - } - }, - "node_modules/react-compat-css-styled/node_modules/react-css-styled": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/react-css-styled/-/react-css-styled-1.0.4.tgz", - "integrity": "sha512-nRske1bAKOCaf7Gf3o76tKQFIYggaW1qH4rutBlitH5lYnRPA7WoAYKrcxqdUPZd00oASg3SvFZSh3Mc1Wvj3w==", - "dependencies": { - "css-styled": "~1.0.1", - "framework-utils": "^1.1.0" - } - }, - "node_modules/react-compat-moveable": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/react-compat-moveable/-/react-compat-moveable-0.30.2.tgz", - "integrity": "sha512-4nQ4U4JYcYbscClxFmxyMbAw3fzgIuVZs5lp4OclOWzPv8zGRUNuCPICYj6EZmXziHPJbG9JR81ukKYUcNDtUw==", - "dependencies": { - "@daybrush/utils": "^1.10.0", - "@egjs/agent": "^2.2.1", - "@egjs/children-differ": "^1.0.1", - "@egjs/list-differ": "^1.0.0", - "@scena/dragscroll": "^1.3.0", - "@scena/event-emitter": "^1.0.5", - "@scena/matrix": "^1.1.1", - "css-to-mat": "^1.0.3", - "framework-utils": "^1.1.0", - "gesto": "^1.14.0", - "overlap-area": "^1.1.0", - "react-compat-css-styled": "^1.0.9", - "react-css-styled": "^1.0.4", - "react-moveable": "~0.45.1" - } - }, - "node_modules/react-css-styled": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/react-css-styled/-/react-css-styled-1.1.9.tgz", - "integrity": "sha512-M7fJZ3IWFaIHcZEkoFOnkjdiUFmwd8d+gTh2bpqMOcnxy/0Gsykw4dsL4QBiKsxcGow6tETUa4NAUcmJF+/nfw==", - "dependencies": { - "css-styled": "~1.0.8", - "framework-utils": "^1.1.0" - } - }, - "node_modules/react-moveable": { - "version": "0.45.1", - "resolved": "https://registry.npmjs.org/react-moveable/-/react-moveable-0.45.1.tgz", - "integrity": "sha512-3ktIdg7spM4hTJFMJFcUab5i5XCGUuNG/V7A0pZFHs8jAwAyVXHKnjhOKasgHmYF9Z4/3YAdA9u25cSlACZHjw==", - "dependencies": { - "@daybrush/utils": "^1.10.0", - "@egjs/agent": "^2.2.1", - "@egjs/children-differ": "^1.0.1", - "@egjs/list-differ": "^1.0.0", - "@scena/dragscroll": "^1.3.0", - "@scena/event-emitter": "^1.0.5", - "@scena/matrix": "^1.1.1", - "css-to-mat": "^1.0.3", - "framework-utils": "^1.1.0", - "gesto": "^1.14.0", - "overlap-area": "^1.1.0", - "react-css-styled": "^1.0.4" - } - }, - "node_modules/react-simple-compat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/react-simple-compat/-/react-simple-compat-1.2.3.tgz", - "integrity": "sha512-vYepRjSriGRyEmFtSsTQoHWVQRbBMYR4ONATeZtuf8GDY8jWGkc6R4+lIb5rVhPBIkx3ru68bpl+9r8V4YA/nA==", - "deprecated": "Use 'croact' module.", - "dependencies": { - "@daybrush/utils": "^1.0.0", - "@egjs/list-differ": "^1.0.0" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -3730,36 +3212,6 @@ "svelte": "^3.19.0 || ^4.0.0" } }, - "node_modules/svelte-json-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-1.0.0.tgz", - "integrity": "sha512-scs1OdkC8uFpTN4MX0yKkOzZ1/EG3eP1ARC+xcFthXp2IfcwBaXgab0FqA4Am0vQwffNNB+1Gd1LFkJBlynWTA==" - }, - "node_modules/svelte-material-icons": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/svelte-material-icons/-/svelte-material-icons-2.1.0.tgz", - "integrity": "sha512-UaZngbPcWtS6gEoZx/8bpv0ompsm5SOZs66NkuEQIX+p8UblrUoknjy7kKRlFEpRdFQ232IB8jswkGaFTreB6g==", - "peerDependencies": { - "svelte": "^3.0.0" - } - }, - "node_modules/svelte-moveable": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/svelte-moveable/-/svelte-moveable-0.34.1.tgz", - "integrity": "sha512-4G5Lx1/njk0TSWVDFFaeVOkb5wsb8oUZDz4S0nfyceV9/4KXFA/ZRT6s7yJdQwXInTZfrPTOAisv5ivD9w3YYg==", - "dependencies": { - "framework-utils": "^1.1.0", - "moveable": "~0.42.2" - } - }, - "node_modules/svelte-parallax": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/svelte-parallax/-/svelte-parallax-0.6.0.tgz", - "integrity": "sha512-W2dGPNmK274AmL8Ibzr96luh24jr3u2MfAmAJTpnhAZwxkRws5MKgCxfxBBPvpRUc2GpGGIGanhTYXoHV6DcBw==", - "dependencies": { - "focus-options-polyfill": "^1.6.0" - } - }, "node_modules/svelte-preprocess": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", @@ -3835,42 +3287,11 @@ } }, "node_modules/svelvet": { - "version": "6.0.9", - "resolved": "git+ssh://git@github.com/bgins/Svelvet.git#c59a9094d6e9687353cad0e0cf06846543080134", - "license": "MIT", - "dependencies": { - "@supabase/supabase-js": "^1.35.6", - "acorn": "^8.7.1", - "codemirror": "^5.65.6", - "d3-zoom": "^3.0.0", - "dotenv": "^16.0.1", - "estree-walker": "^3.0.1", - "marked": "^4.0.17", - "svelte-json-tree": "^1.0.0", - "svelte-material-icons": "^2.0.4", - "svelte-moveable": "^0.34.1", - "svelte-parallax": "^0.6.0", - "svelvet": "^6.0.7", - "svelvet-lime": "^6.8.16", - "svelvetrabbits": "^4.10.3", - "uuid": "^9.0.0", - "yootils": "^0.3.1" - } - }, - "node_modules/svelvet-lime": { - "version": "6.8.16", - "resolved": "https://registry.npmjs.org/svelvet-lime/-/svelvet-lime-6.8.16.tgz", - "integrity": "sha512-bVf2Lqn6VmFP6kfclIc72H+VcGuh6VsaIAMJw5icoFfvEepzFDCaG0iFPEqTBxEq0x9g5ws6mxUNLbVx0lnYHg==", - "dependencies": { - "d3-zoom": "^3.0.0" - } - }, - "node_modules/svelvetrabbits": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/svelvetrabbits/-/svelvetrabbits-4.10.3.tgz", - "integrity": "sha512-I94sW37rSt0i0z6gr2grxANDBqfb5ywyERrLlZgQeTX/h/FY+OS+9oOxiM4cJBWk+DXAoQwyV2whu87jHpvpIQ==", - "dependencies": { - "d3-zoom": "^3.0.0" + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/svelvet/-/svelvet-8.1.0.tgz", + "integrity": "sha512-rH67tgb7e2aTBQZBCW+V5hSvulLwvzBiOml9Dzdz2ATkgQr58mHi2WtlQFOOb+eZt6zH/J10a2MataC29Qdpuw==", + "peerDependencies": { + "svelte": ">=3.59.2 || ^4.0.0" } }, "node_modules/tailwindcss": { @@ -3982,11 +3403,6 @@ "node": ">=6" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -4020,11 +3436,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4058,14 +3469,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -4130,32 +3533,12 @@ "punycode": "^2.1.0" } }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, "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==", "dev": true }, - "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/vite": { "version": "4.4.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", @@ -4280,49 +3663,6 @@ } } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4344,14 +3684,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -4378,11 +3710,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/yootils": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/yootils/-/yootils-0.3.1.tgz", - "integrity": "sha512-A7AMeJfGefk317I/3tBoUYRcDcNavKEkpiPN/nQsBz/viI2GvT7BtrqdPD6rGqBFN8Ax7v4obf+Cl32JF9DDVw==" } }, "dependencies": { @@ -4398,29 +3725,6 @@ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true }, - "@daybrush/utils": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@daybrush/utils/-/utils-1.13.0.tgz", - "integrity": "sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ==" - }, - "@egjs/agent": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@egjs/agent/-/agent-2.4.3.tgz", - "integrity": "sha512-XvksSENe8wPeFlEVouvrOhKdx8HMniJ3by7sro2uPF3M6QqWwjzVcmvwoPtdjiX8O1lfRoLhQMp1a7NGlVTdIA==" - }, - "@egjs/children-differ": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@egjs/children-differ/-/children-differ-1.0.1.tgz", - "integrity": "sha512-DRvyqMf+CPCOzAopQKHtW+X8iN6Hy6SFol+/7zCUiE5y4P/OB8JP8FtU4NxtZwtafvSL4faD5KoQYPj3JHzPFQ==", - "requires": { - "@egjs/list-differ": "^1.0.0" - } - }, - "@egjs/list-differ": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@egjs/list-differ/-/list-differ-1.0.1.tgz", - "integrity": "sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==" - }, "@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -4718,84 +4022,6 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, - "@scena/dragscroll": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", - "integrity": "sha512-3O8daaZD9VXA9CP3dra6xcgt/qrm0mg0xJCwiX6druCteQ9FFsXffkF8PrqxY4Z4VJ58fFKEa0RlKqbsi/XnRA==", - "requires": { - "@daybrush/utils": "^1.6.0", - "@scena/event-emitter": "^1.0.2" - } - }, - "@scena/event-emitter": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@scena/event-emitter/-/event-emitter-1.0.5.tgz", - "integrity": "sha512-AzY4OTb0+7ynefmWFQ6hxDdk0CySAq/D4efljfhtRHCOP7MBF9zUfhKG3TJiroVjASqVgkRJFdenS8ArZo6Olg==", - "requires": { - "@daybrush/utils": "^1.1.1" - } - }, - "@scena/matrix": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scena/matrix/-/matrix-1.1.1.tgz", - "integrity": "sha512-JVKBhN0tm2Srl+Yt+Ywqu0oLgLcdemDQlD1OxmN9jaCTwaFPZ7tY8n6dhVgMEaR9qcR7r+kAlMXnSfNyYdE+Vg==", - "requires": { - "@daybrush/utils": "^1.4.0" - } - }, - "@supabase/functions-js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.4.tgz", - "integrity": "sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/gotrue-js": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.24.0.tgz", - "integrity": "sha512-6PVv7mHCFOxLm6TSBfR7hsq/y3CMKpvzePVR+ZWtlFBTjJ2J87g2OYE9bgC61P5TNeZopUXKw93H92yz0MTALw==", - "requires": { - "cross-fetch": "^3.0.6" - } - }, - "@supabase/postgrest-js": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.4.tgz", - "integrity": "sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/realtime-js": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.7.5.tgz", - "integrity": "sha512-nXuoxt7NE1NTI+G8WBim1K2gkUC8YE3e9evBUG+t6xwd9Sq+sSOrjcE0qJ8/Y631BCnLzlhX6yhFYQFh1oQDOg==", - "requires": { - "@types/phoenix": "^1.5.4", - "websocket": "^1.0.34" - } - }, - "@supabase/storage-js": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.7.3.tgz", - "integrity": "sha512-jnIZWqOc9TGclOozgX9v/RWGFCgJAyW/yvmauexgRZhWknUXoA4b2i8tj7vfwE0WTvNRuA5JpXID98rfJeSG7Q==", - "requires": { - "cross-fetch": "^3.1.0" - } - }, - "@supabase/supabase-js": { - "version": "1.35.7", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.7.tgz", - "integrity": "sha512-X+qCzmj5sH0dozagbLoK7LzysBaWoivO0gsAUAPPBQkQupQWuBfaOqG18gKhlfL0wp2PL888QzhQNScp/IwUfA==", - "requires": { - "@supabase/functions-js": "^1.3.4", - "@supabase/gotrue-js": "^1.22.21", - "@supabase/postgrest-js": "^0.37.4", - "@supabase/realtime-js": "^1.7.5", - "@supabase/storage-js": "^1.7.2" - } - }, "@sveltejs/adapter-auto": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz", @@ -4877,11 +4103,6 @@ "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", "dev": true }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -4894,11 +4115,6 @@ "integrity": "sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg==", "dev": true }, - "@types/phoenix": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", - "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" - }, "@types/pug": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", @@ -5010,16 +4226,11 @@ "eslint-visitor-keys": "^3.3.0" } }, - "@zerodevx/svelte-json-view": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@zerodevx/svelte-json-view/-/svelte-json-view-1.0.7.tgz", - "integrity": "sha512-yW0MV+9BCKOwzt3h86y3xDqYdI5st+Rxk+L5pa0Utq7nlPD+VvxyhL7R1gJoLxQvWwjyAvY/fyUCFTdwDyI14w==", - "requires": {} - }, "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true }, "acorn-jsx": { "version": "5.3.2", @@ -5164,14 +4375,6 @@ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, "busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -5257,16 +4460,6 @@ } } }, - "clipboard-copy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-4.0.1.tgz", - "integrity": "sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==" - }, - "codemirror": { - "version": "5.65.14", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.14.tgz", - "integrity": "sha512-VSNugIBDGt0OU9gDjeVr6fNkoFQznrWEUdAApMlXQNbfE8gGO19776D6MwSqF/V/w/sDwonsQ0z7KmmI9guScg==" - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5300,14 +4493,6 @@ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, - "cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "requires": { - "node-fetch": "^2.6.12" - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5319,104 +4504,12 @@ "which": "^2.0.1" } }, - "css-styled": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/css-styled/-/css-styled-1.0.8.tgz", - "integrity": "sha512-tCpP7kLRI8dI95rCh3Syl7I+v7PP+2JYOzWkl0bUEoSbJM+u8ITbutjlQVf0NC2/g4ULROJPi16sfwDIO8/84g==", - "requires": { - "@daybrush/utils": "^1.13.0" - } - }, - "css-to-mat": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-to-mat/-/css-to-mat-1.1.1.tgz", - "integrity": "sha512-kvpxFYZb27jRd2vium35G7q5XZ2WJ9rWjDUMNT36M3Hc41qCrLXFM5iEKMGXcrPsKfXEN+8l/riB4QzwwwiEyQ==", - "requires": { - "@daybrush/utils": "^1.13.0", - "@scena/matrix": "^1.0.0" - } - }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5489,52 +4582,18 @@ "esutils": "^2.0.2" } }, - "dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" - }, "electron-to-chromium": { "version": "1.4.490", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", "dev": true }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, "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 }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", @@ -5727,35 +4786,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "requires": { - "@types/estree": "^1.0.0" - } - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5851,22 +4887,12 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "focus-options-polyfill": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/focus-options-polyfill/-/focus-options-polyfill-1.6.0.tgz", - "integrity": "sha512-uyrAmLZrPnUItQY5wTdg31TO9GGZRGsh/jmohUg9oLmLi/sw5y7LlTV/mwyd6rvbxIOGwmRiv6LcTS8w7Bk9NQ==" - }, "fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, - "framework-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/framework-utils/-/framework-utils-1.1.0.tgz", - "integrity": "sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg==" - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5886,15 +4912,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "gesto": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/gesto/-/gesto-1.19.1.tgz", - "integrity": "sha512-ofWVEdqmnpFm3AFf7aoclhoayseb3OkwSiXbXusKYu/99iN5HgeWP+SWqdghQ5TFlOgP5Zlz+6SY8mP2V0kFaQ==", - "requires": { - "@daybrush/utils": "^1.13.0", - "@scena/event-emitter": "^1.0.2" - } - }, "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", @@ -6063,11 +5080,6 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6177,11 +5189,6 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6234,17 +5241,6 @@ "minimist": "^1.2.6" } }, - "moveable": { - "version": "0.42.2", - "resolved": "https://registry.npmjs.org/moveable/-/moveable-0.42.2.tgz", - "integrity": "sha512-3FQ5bZ+f6txGPgi7wJQ+rRhBLjT2/oqKVwg5Jw5w/eDMYPbUK2QY3YX9cZ+LvcfUc/KChHzyMnrwNgzxYs3L+g==", - "requires": { - "@scena/event-emitter": "^1.0.5", - "react-compat-moveable": "~0.30.2", - "react-moveable": "~0.45.1", - "react-simple-compat": "^1.2.3" - } - }, "mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -6292,24 +5288,6 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" - }, "node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -6363,14 +5341,6 @@ "type-check": "^0.4.0" } }, - "overlap-area": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/overlap-area/-/overlap-area-1.1.0.tgz", - "integrity": "sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==", - "requires": { - "@daybrush/utils": "^1.7.1" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6561,86 +5531,6 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "react-compat-css-styled": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/react-compat-css-styled/-/react-compat-css-styled-1.0.9.tgz", - "integrity": "sha512-YpUgTpXU1wR58aPQJVGAWq6QeEFWkafV0qq4Y8KRUwpQJLbJF2GYu5ZQ/kafHGvN3dqQX2e340NlNZ+zbZZv2w==", - "requires": { - "@daybrush/utils": "^1.0.0", - "css-styled": "^1.0.0", - "framework-utils": "^1.1.0", - "react-css-styled": "~1.0.4" - }, - "dependencies": { - "react-css-styled": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/react-css-styled/-/react-css-styled-1.0.4.tgz", - "integrity": "sha512-nRske1bAKOCaf7Gf3o76tKQFIYggaW1qH4rutBlitH5lYnRPA7WoAYKrcxqdUPZd00oASg3SvFZSh3Mc1Wvj3w==", - "requires": { - "css-styled": "~1.0.1", - "framework-utils": "^1.1.0" - } - } - } - }, - "react-compat-moveable": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/react-compat-moveable/-/react-compat-moveable-0.30.2.tgz", - "integrity": "sha512-4nQ4U4JYcYbscClxFmxyMbAw3fzgIuVZs5lp4OclOWzPv8zGRUNuCPICYj6EZmXziHPJbG9JR81ukKYUcNDtUw==", - "requires": { - "@daybrush/utils": "^1.10.0", - "@egjs/agent": "^2.2.1", - "@egjs/children-differ": "^1.0.1", - "@egjs/list-differ": "^1.0.0", - "@scena/dragscroll": "^1.3.0", - "@scena/event-emitter": "^1.0.5", - "@scena/matrix": "^1.1.1", - "css-to-mat": "^1.0.3", - "framework-utils": "^1.1.0", - "gesto": "^1.14.0", - "overlap-area": "^1.1.0", - "react-compat-css-styled": "^1.0.9", - "react-css-styled": "^1.0.4", - "react-moveable": "~0.45.1" - } - }, - "react-css-styled": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/react-css-styled/-/react-css-styled-1.1.9.tgz", - "integrity": "sha512-M7fJZ3IWFaIHcZEkoFOnkjdiUFmwd8d+gTh2bpqMOcnxy/0Gsykw4dsL4QBiKsxcGow6tETUa4NAUcmJF+/nfw==", - "requires": { - "css-styled": "~1.0.8", - "framework-utils": "^1.1.0" - } - }, - "react-moveable": { - "version": "0.45.1", - "resolved": "https://registry.npmjs.org/react-moveable/-/react-moveable-0.45.1.tgz", - "integrity": "sha512-3ktIdg7spM4hTJFMJFcUab5i5XCGUuNG/V7A0pZFHs8jAwAyVXHKnjhOKasgHmYF9Z4/3YAdA9u25cSlACZHjw==", - "requires": { - "@daybrush/utils": "^1.10.0", - "@egjs/agent": "^2.2.1", - "@egjs/children-differ": "^1.0.1", - "@egjs/list-differ": "^1.0.0", - "@scena/dragscroll": "^1.3.0", - "@scena/event-emitter": "^1.0.5", - "@scena/matrix": "^1.1.1", - "css-to-mat": "^1.0.3", - "framework-utils": "^1.1.0", - "gesto": "^1.14.0", - "overlap-area": "^1.1.0", - "react-css-styled": "^1.0.4" - } - }, - "react-simple-compat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/react-simple-compat/-/react-simple-compat-1.2.3.tgz", - "integrity": "sha512-vYepRjSriGRyEmFtSsTQoHWVQRbBMYR4ONATeZtuf8GDY8jWGkc6R4+lIb5rVhPBIkx3ru68bpl+9r8V4YA/nA==", - "requires": { - "@daybrush/utils": "^1.0.0", - "@egjs/list-differ": "^1.0.0" - } - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -6925,34 +5815,6 @@ "dev": true, "requires": {} }, - "svelte-json-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-1.0.0.tgz", - "integrity": "sha512-scs1OdkC8uFpTN4MX0yKkOzZ1/EG3eP1ARC+xcFthXp2IfcwBaXgab0FqA4Am0vQwffNNB+1Gd1LFkJBlynWTA==" - }, - "svelte-material-icons": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/svelte-material-icons/-/svelte-material-icons-2.1.0.tgz", - "integrity": "sha512-UaZngbPcWtS6gEoZx/8bpv0ompsm5SOZs66NkuEQIX+p8UblrUoknjy7kKRlFEpRdFQ232IB8jswkGaFTreB6g==", - "requires": {} - }, - "svelte-moveable": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/svelte-moveable/-/svelte-moveable-0.34.1.tgz", - "integrity": "sha512-4G5Lx1/njk0TSWVDFFaeVOkb5wsb8oUZDz4S0nfyceV9/4KXFA/ZRT6s7yJdQwXInTZfrPTOAisv5ivD9w3YYg==", - "requires": { - "framework-utils": "^1.1.0", - "moveable": "~0.42.2" - } - }, - "svelte-parallax": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/svelte-parallax/-/svelte-parallax-0.6.0.tgz", - "integrity": "sha512-W2dGPNmK274AmL8Ibzr96luh24jr3u2MfAmAJTpnhAZwxkRws5MKgCxfxBBPvpRUc2GpGGIGanhTYXoHV6DcBw==", - "requires": { - "focus-options-polyfill": "^1.6.0" - } - }, "svelte-preprocess": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", @@ -6978,42 +5840,10 @@ } }, "svelvet": { - "version": "git+ssh://git@github.com/bgins/Svelvet.git#c59a9094d6e9687353cad0e0cf06846543080134", - "from": "svelvet@github:bgins/Svelvet#custom-for-homestar", - "requires": { - "@supabase/supabase-js": "^1.35.6", - "acorn": "^8.7.1", - "codemirror": "^5.65.6", - "d3-zoom": "^3.0.0", - "dotenv": "^16.0.1", - "estree-walker": "^3.0.1", - "marked": "^4.0.17", - "svelte-json-tree": "^1.0.0", - "svelte-material-icons": "^2.0.4", - "svelte-moveable": "^0.34.1", - "svelte-parallax": "^0.6.0", - "svelvet": "^6.0.7", - "svelvet-lime": "^6.8.16", - "svelvetrabbits": "^4.10.3", - "uuid": "^9.0.0", - "yootils": "^0.3.1" - } - }, - "svelvet-lime": { - "version": "6.8.16", - "resolved": "https://registry.npmjs.org/svelvet-lime/-/svelvet-lime-6.8.16.tgz", - "integrity": "sha512-bVf2Lqn6VmFP6kfclIc72H+VcGuh6VsaIAMJw5icoFfvEepzFDCaG0iFPEqTBxEq0x9g5ws6mxUNLbVx0lnYHg==", - "requires": { - "d3-zoom": "^3.0.0" - } - }, - "svelvetrabbits": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/svelvetrabbits/-/svelvetrabbits-4.10.3.tgz", - "integrity": "sha512-I94sW37rSt0i0z6gr2grxANDBqfb5ywyERrLlZgQeTX/h/FY+OS+9oOxiM4cJBWk+DXAoQwyV2whu87jHpvpIQ==", - "requires": { - "d3-zoom": "^3.0.0" - } + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/svelvet/-/svelvet-8.1.0.tgz", + "integrity": "sha512-rH67tgb7e2aTBQZBCW+V5hSvulLwvzBiOml9Dzdz2ATkgQr58mHi2WtlQFOOb+eZt6zH/J10a2MataC29Qdpuw==", + "requires": {} }, "tailwindcss": { "version": "3.3.3", @@ -7102,11 +5932,6 @@ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -7136,11 +5961,6 @@ } } }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7162,14 +5982,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -7204,25 +6016,12 @@ "punycode": "^2.1.0" } }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - }, "vite": { "version": "4.4.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", @@ -7264,48 +6063,6 @@ "vite": "^3.0.0 || ^4.0.0" } }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7321,11 +6078,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -7343,11 +6095,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true - }, - "yootils": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/yootils/-/yootils-0.3.1.tgz", - "integrity": "sha512-A7AMeJfGefk317I/3tBoUYRcDcNavKEkpiPN/nQsBz/viI2GvT7BtrqdPD6rGqBFN8Ax7v4obf+Cl32JF9DDVw==" } } } diff --git a/examples/websocket-relay/relay-app/package.json b/examples/websocket-relay/relay-app/package.json index 7ceb3654..5e2fbfd4 100644 --- a/examples/websocket-relay/relay-app/package.json +++ b/examples/websocket-relay/relay-app/package.json @@ -32,13 +32,11 @@ "tailwindcss": "^3.3.1", "tslib": "^2.4.1", "typescript": "^5.0.0", - "vite": "^4.2.0", + "vite": "^4.4.2", "vitest": "^0.25.3" }, "type": "module", "dependencies": { - "@zerodevx/svelte-json-view": "^1.0.3", - "clipboard-copy": "^4.0.1", - "svelvet": "github:bgins/Svelvet#custom-for-homestar" + "svelvet": "8.1.0" } } diff --git a/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte b/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte index 4dad639e..9770c4c3 100644 --- a/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte +++ b/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte @@ -1,49 +1,50 @@
-
-
-
Workflow One
-
- -
+
+
+
Workflow One
+
+ +
+
+
+
Workflow Two
+
+ +
+
-
-
Workflow Two
-
- -
-
-
diff --git a/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte b/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte index ff41a49a..e6be8ca5 100644 --- a/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte +++ b/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte @@ -1,56 +1,56 @@
- - {label} - {#if val} - {#if state === "copy"} - copy(val)} - on:keypress={() => copy(val)} - in:fade={{ duration: 80, easing: quintIn }} - out:fade={{ duration: 40, easing: quintIn }} - > - - - {:else} - - - - {/if} - {/if} - - {val} + + {label} + {#if val} + {#if state === "copy"} + copy(val)} + on:keypress={() => copy(val)} + in:fade={{ duration: 80, easing: quintIn }} + out:fade={{ duration: 40, easing: quintIn }} + > + + + {:else} + + + + {/if} + {/if} + + {val}
diff --git a/examples/websocket-relay/relay-app/src/components/node/Edge.svelte b/examples/websocket-relay/relay-app/src/components/node/Edge.svelte new file mode 100644 index 00000000..9ca5cf2b --- /dev/null +++ b/examples/websocket-relay/relay-app/src/components/node/Edge.svelte @@ -0,0 +1,30 @@ + + + + + + + + + + + + + diff --git a/examples/websocket-relay/relay-app/src/components/node/Node.svelte b/examples/websocket-relay/relay-app/src/components/node/Node.svelte new file mode 100644 index 00000000..fd84ff58 --- /dev/null +++ b/examples/websocket-relay/relay-app/src/components/node/Node.svelte @@ -0,0 +1,78 @@ + + + + {#if task === null} + {#if !tempcat} + A cat in space chilling on a synth. + + + + {:else} + A cat in space chilling on a synth. + + {/if} + {:else if task.status === "replayed"} + A cat image after a ${task.operation} performed by Homestar. The operation was replayed. + {:else} + A cat image after a ${task.operation} performed by Homestar + {/if} + diff --git a/examples/websocket-relay/relay-app/src/lib/node.ts b/examples/websocket-relay/relay-app/src/lib/node.ts new file mode 100644 index 00000000..d6f2f2ad --- /dev/null +++ b/examples/websocket-relay/relay-app/src/lib/node.ts @@ -0,0 +1,4 @@ +export type Position = { + x: number; + y: number; +}; diff --git a/examples/websocket-relay/relay-app/src/routes/+layout.svelte b/examples/websocket-relay/relay-app/src/routes/+layout.svelte index 881d2ba8..1fe2550a 100644 --- a/examples/websocket-relay/relay-app/src/routes/+layout.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+layout.svelte @@ -1,5 +1,5 @@ diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 299c016a..86685c84 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -1,64 +1,71 @@
{#if showWorkflowModal} - + {/if} - - --> + + + + + + + diff --git a/examples/websocket-relay/relay-app/src/stores-original.ts.bak b/examples/websocket-relay/relay-app/src/stores-original.ts.bak new file mode 100644 index 00000000..e6ef04b5 --- /dev/null +++ b/examples/websocket-relay/relay-app/src/stores-original.ts.bak @@ -0,0 +1,271 @@ +import { derived, writable } from "svelte/store"; +import type { Readable, Writable } from "svelte/store"; +import type { NodeType } from "svelvet"; + +import type { Channel } from "$lib/channel"; +import type { Workflow, WorkflowId, WorkflowState } from "$lib/workflow"; +import type { Maybe } from "$lib"; +import type { Task } from "$lib/task"; + +const catResponse = await fetch("./spacecat"); +const base64Cat = await catResponse.text(); + +export const channelStore: Writable> = writable(null); + +export const workflowStore: Writable> = writable({ + one: { + id: "one", + status: "waiting", + }, + two: { + id: "two", + status: "waiting", + }, +}); + +export const activeWorkflowStore: Writable> = + writable(null); + +export const taskStore: Writable> = writable({ + one: [ + { + id: 1, + workflowId: "one", + operation: "crop", + message: "Waiting for task to complete", + selected: false, + status: "waiting", + }, + { + id: 2, + workflowId: "one", + operation: "rotate90", + message: "Waiting for task to complete.", + selected: false, + status: "waiting", + }, + { + id: 3, + workflowId: "one", + operation: "blur", + message: "Waiting for task to complete.", + selected: false, + status: "waiting", + }, + ], + two: [ + { + id: 1, + workflowId: "two", + operation: "crop", + message: "Waiting for task to complete.", + selected: false, + status: "waiting", + }, + { + id: 2, + workflowId: "two", + operation: "rotate90", + message: "Waiting for task to complete.", + selected: false, + status: "waiting", + }, + { + id: 3, + workflowId: "two", + operation: "grayscale", + message: "Waiting for task to complete.", + selected: false, + status: "waiting", + }, + ], +}); + +export const nodeStore: Readable = derived( + taskStore, + ($taskStore) => { + const workflowOneTasks = $taskStore["one"] + const workflowOneNodes = workflowOneTasks.reduce((nodes, task, index) => { + const previous = index !== 0 ? workflowOneTasks[index - 1] : null + + if ( + (task.status === "executed" || task.status === "replayed") && + (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) + ) { + const idOffset = 2; + + // @ts-ignore + nodes = [ + ...nodes, + { + id: String(index + idOffset), + position: { x: 500 + (index + 1) * 250, y: 150 }, + data: { + html: + task.status === "replayed" + ? `` + : ``, + }, + width: 150, + height: 150, + bgColor: "white", + borderColor: "transparent", + }, + ]; + } + return nodes; + }, []); + + const workflowTwoTasks = $taskStore["two"] + const workflowTwoNodes = workflowTwoTasks.reduce((nodes, task, index) => { + const previous = index !== 0 ? workflowTwoTasks[index - 1] : null + + if ( + (task.status === "executed" || task.status === "replayed") && + (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) + ) { + const idOffset = 5; + + // Check for a matching task in workflow one + const matchingOneTask = $taskStore.one.find( + (t) => t.operation === task.operation + ); + + if ( + matchingOneTask && + (matchingOneTask.status === "executed" || + matchingOneTask.status === "replayed") + ) { + const nodeIndex = matchingOneTask.id - 1; + const updatedHtml = `${workflowOneNodes[nodeIndex].data.html.slice( + 0, + -2 + )} style="filter: opacity(75%)" />`; + + // Update node in workflow one with opacity to indicate the replayed + // task + workflowOneNodes[nodeIndex] = { + ...workflowOneNodes[nodeIndex], + data: { html: updatedHtml }, + }; + + // Skip adding new nodes to workflow two + return nodes; + } + + // @ts-ignore + nodes = [ + ...nodes, + { + id: String(index + idOffset), + position: { x: 500 + (index + 1) * 250, y: 450 }, + data: { + html: + task.status === "replayed" + ? `` + : ``, + }, + width: 150, + height: 150, + bgColor: "white", + borderColor: "transparent", + }, + ]; + } + return nodes; + }, []); + + return [ + { + id: "1", + position: { x: 500, y: 300 }, + data: { + html: ``, + }, + width: 150, + height: 150, + bgColor: "white", + borderColor: "transparent", + }, + ...workflowOneNodes, + ...workflowTwoNodes, + ]; + } +); + +export const edgeStore = derived(nodeStore, ($nodeStore) => { + let edges: any[] = []; + const nodeIds = $nodeStore.map((node) => node.id); + + // Workflow One + + if (nodeIds.includes("1") && nodeIds.includes("2")) { + edges = [ + ...edges, + { id: "e1-2", source: "1", target: "2", label: "Crop", arrow: true }, + ]; + } + + if (nodeIds.includes("2") && nodeIds.includes("3")) { + edges = [ + ...edges, + { id: "e2-3", source: "2", target: "3", label: "Rotate90", arrow: true }, + ]; + } + + if (nodeIds.includes("3") && nodeIds.includes("4")) { + edges = [ + ...edges, + { id: "e3-4", source: "3", target: "4", label: "Blur", arrow: true }, + ]; + } + + // Workflow Two + + if ( + nodeIds.includes("1") && + nodeIds.includes("2") && + nodeIds.includes("3") && + nodeIds.includes("7") + ) { + edges = [ + ...edges, + { id: "e3-7", source: "3", target: "7", label: "Grayscale", arrow: true }, + ]; + } else { + if (nodeIds.includes("1") && nodeIds.includes("5")) { + edges = [ + ...edges, + { id: "e1-5", source: "1", target: "5", label: "Crop", arrow: true }, + ]; + } + + if (nodeIds.includes("5") && nodeIds.includes("6")) { + edges = [ + ...edges, + { + id: "e5-6", + source: "5", + target: "6", + label: "Rotate90", + arrow: true, + }, + ]; + } + + if (nodeIds.includes("6") && nodeIds.includes("7")) { + edges = [ + ...edges, + { + id: "e6-7", + source: "6", + target: "7", + label: "Grayscale", + arrow: true, + }, + ]; + } + } + + return edges; +}); diff --git a/examples/websocket-relay/relay-app/src/stores.ts b/examples/websocket-relay/relay-app/src/stores.ts index dd1ce462..204dff6f 100644 --- a/examples/websocket-relay/relay-app/src/stores.ts +++ b/examples/websocket-relay/relay-app/src/stores.ts @@ -84,189 +84,196 @@ export const taskStore: Writable> = writable({ export const nodeStore: Readable = derived( [base64CatStore, taskStore], ($stores) => { - const [ base64Cat, taskStore ] = $stores - const workflowOneTasks = taskStore["one"] - const workflowOneNodes = workflowOneTasks.reduce((nodes, task, index) => { - const previous = index !== 0 ? workflowOneTasks[index - 1] : null + const [base64Cat, taskStore] = $stores + return [] +}); - if ( - (task.status === "executed" || task.status === "replayed") && - (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) - ) { - const idOffset = 2; +// export const nodeStore: Readable = derived( +// [base64CatStore, taskStore], +// ($stores) => { +// const [ base64Cat, taskStore ] = $stores +// const workflowOneTasks = taskStore["one"] +// const workflowOneNodes = workflowOneTasks.reduce((nodes, task, index) => { +// const previous = index !== 0 ? workflowOneTasks[index - 1] : null - // @ts-ignore - nodes = [ - ...nodes, - { - id: String(index + idOffset), - position: { x: 500 + (index + 1) * 250, y: 150 }, - data: { - html: - task.status === "replayed" - ? `` - : ``, - }, - width: 150, - height: 150, - bgColor: "white", - borderColor: "transparent", - }, - ]; - } - return nodes; - }, []); +// if ( +// (task.status === "executed" || task.status === "replayed") && +// (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) +// ) { +// const idOffset = 2; - const workflowTwoTasks = taskStore["two"] - const workflowTwoNodes = workflowTwoTasks.reduce((nodes, task, index) => { - const previous = index !== 0 ? workflowTwoTasks[index - 1] : null +// // @ts-ignore +// nodes = [ +// ...nodes, +// { +// id: String(index + idOffset), +// position: { x: 500 + (index + 1) * 250, y: 150 }, +// data: { +// html: +// task.status === "replayed" +// ? `` +// : ``, +// }, +// width: 150, +// height: 150, +// bgColor: "white", +// borderColor: "transparent", +// }, +// ]; +// } +// return nodes; +// }, []); - if ( - (task.status === "executed" || task.status === "replayed") && - (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) - ) { - const idOffset = 5; +// const workflowTwoTasks = taskStore["two"] +// const workflowTwoNodes = workflowTwoTasks.reduce((nodes, task, index) => { +// const previous = index !== 0 ? workflowTwoTasks[index - 1] : null - // Check for a matching task in workflow one - const matchingOneTask = taskStore.one.find( - (t) => t.operation === task.operation - ); +// if ( +// (task.status === "executed" || task.status === "replayed") && +// (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) +// ) { +// const idOffset = 5; - if ( - matchingOneTask && - (matchingOneTask.status === "executed" || - matchingOneTask.status === "replayed") - ) { - const nodeIndex = matchingOneTask.id - 1; - const updatedHtml = `${workflowOneNodes[nodeIndex].data.html.slice( - 0, - -2 - )} style="filter: opacity(75%)" />`; +// // Check for a matching task in workflow one +// const matchingOneTask = taskStore.one.find( +// (t) => t.operation === task.operation +// ); - // Update node in workflow one with opacity to indicate the replayed - // task - workflowOneNodes[nodeIndex] = { - ...workflowOneNodes[nodeIndex], - data: { html: updatedHtml }, - }; +// if ( +// matchingOneTask && +// (matchingOneTask.status === "executed" || +// matchingOneTask.status === "replayed") +// ) { +// const nodeIndex = matchingOneTask.id - 1; +// const updatedHtml = `${workflowOneNodes[nodeIndex].data.html.slice( +// 0, +// -2 +// )} style="filter: opacity(75%)" />`; - // Skip adding new nodes to workflow two - return nodes; - } +// // Update node in workflow one with opacity to indicate the replayed +// // task +// workflowOneNodes[nodeIndex] = { +// ...workflowOneNodes[nodeIndex], +// data: { html: updatedHtml }, +// }; - // @ts-ignore - nodes = [ - ...nodes, - { - id: String(index + idOffset), - position: { x: 500 + (index + 1) * 250, y: 450 }, - data: { - html: - task.status === "replayed" - ? `` - : ``, - }, - width: 150, - height: 150, - bgColor: "white", - borderColor: "transparent", - }, - ]; - } - return nodes; - }, []); +// // Skip adding new nodes to workflow two +// return nodes; +// } - return [ - { - id: "1", - position: { x: 500, y: 300 }, - data: { - html: ``, - }, - width: 150, - height: 150, - bgColor: "white", - borderColor: "transparent", - }, - ...workflowOneNodes, - ...workflowTwoNodes, - ]; - } -); +// // @ts-ignore +// nodes = [ +// ...nodes, +// { +// id: String(index + idOffset), +// position: { x: 500 + (index + 1) * 250, y: 450 }, +// data: { +// html: +// task.status === "replayed" +// ? `` +// : ``, +// }, +// width: 150, +// height: 150, +// bgColor: "white", +// borderColor: "transparent", +// }, +// ]; +// } +// return nodes; +// }, []); -export const edgeStore = derived(nodeStore, ($nodeStore) => { - let edges: any[] = []; - const nodeIds = $nodeStore.map((node) => node.id); +// return [ +// { +// id: "1", +// position: { x: 500, y: 300 }, +// data: { +// html: ``, +// }, +// width: 150, +// height: 150, +// bgColor: "white", +// borderColor: "transparent", +// }, +// ...workflowOneNodes, +// ...workflowTwoNodes, +// ]; +// } +// ); - // Workflow One +// export const edgeStore = derived(nodeStore, ($nodeStore) => { +// let edges: any[] = []; +// const nodeIds = $nodeStore.map((node) => node.id); - if (nodeIds.includes("1") && nodeIds.includes("2")) { - edges = [ - ...edges, - { id: "e1-2", source: "1", target: "2", label: "Crop", arrow: true }, - ]; - } +// // Workflow One - if (nodeIds.includes("2") && nodeIds.includes("3")) { - edges = [ - ...edges, - { id: "e2-3", source: "2", target: "3", label: "Rotate90", arrow: true }, - ]; - } +// if (nodeIds.includes("1") && nodeIds.includes("2")) { +// edges = [ +// ...edges, +// { id: "e1-2", source: "1", target: "2", label: "Crop", arrow: true }, +// ]; +// } - if (nodeIds.includes("3") && nodeIds.includes("4")) { - edges = [ - ...edges, - { id: "e3-4", source: "3", target: "4", label: "Blur", arrow: true }, - ]; - } +// if (nodeIds.includes("2") && nodeIds.includes("3")) { +// edges = [ +// ...edges, +// { id: "e2-3", source: "2", target: "3", label: "Rotate90", arrow: true }, +// ]; +// } - // Workflow Two +// if (nodeIds.includes("3") && nodeIds.includes("4")) { +// edges = [ +// ...edges, +// { id: "e3-4", source: "3", target: "4", label: "Blur", arrow: true }, +// ]; +// } - if ( - nodeIds.includes("1") && - nodeIds.includes("2") && - nodeIds.includes("3") && - nodeIds.includes("7") - ) { - edges = [ - ...edges, - { id: "e3-7", source: "3", target: "7", label: "Grayscale", arrow: true }, - ]; - } else { - if (nodeIds.includes("1") && nodeIds.includes("5")) { - edges = [ - ...edges, - { id: "e1-5", source: "1", target: "5", label: "Crop", arrow: true }, - ]; - } +// // Workflow Two - if (nodeIds.includes("5") && nodeIds.includes("6")) { - edges = [ - ...edges, - { - id: "e5-6", - source: "5", - target: "6", - label: "Rotate90", - arrow: true, - }, - ]; - } +// if ( +// nodeIds.includes("1") && +// nodeIds.includes("2") && +// nodeIds.includes("3") && +// nodeIds.includes("7") +// ) { +// edges = [ +// ...edges, +// { id: "e3-7", source: "3", target: "7", label: "Grayscale", arrow: true }, +// ]; +// } else { +// if (nodeIds.includes("1") && nodeIds.includes("5")) { +// edges = [ +// ...edges, +// { id: "e1-5", source: "1", target: "5", label: "Crop", arrow: true }, +// ]; +// } - if (nodeIds.includes("6") && nodeIds.includes("7")) { - edges = [ - ...edges, - { - id: "e6-7", - source: "6", - target: "7", - label: "Grayscale", - arrow: true, - }, - ]; - } - } +// if (nodeIds.includes("5") && nodeIds.includes("6")) { +// edges = [ +// ...edges, +// { +// id: "e5-6", +// source: "5", +// target: "6", +// label: "Rotate90", +// arrow: true, +// }, +// ]; +// } - return edges; -}); +// if (nodeIds.includes("6") && nodeIds.includes("7")) { +// edges = [ +// ...edges, +// { +// id: "e6-7", +// source: "6", +// target: "7", +// label: "Grayscale", +// arrow: true, +// }, +// ]; +// } +// } + +// return edges; +// }); diff --git a/examples/websocket-relay/relay-app/vite.config.ts b/examples/websocket-relay/relay-app/vite.config.ts index b4cc5171..caa1c976 100644 --- a/examples/websocket-relay/relay-app/vite.config.ts +++ b/examples/websocket-relay/relay-app/vite.config.ts @@ -7,7 +7,4 @@ export default defineConfig({ target: "es2022", }, plugins: [sveltekit()], - test: { - include: ["src/**/*.{test,spec}.{js,ts}"], - }, }); From 8480039f8ca07358fcbd3e11fe05dcd8e6536b33 Mon Sep 17 00:00:00 2001 From: avivash Date: Thu, 5 Oct 2023 14:41:21 -0700 Subject: [PATCH 02/17] Feat: upgrade svelvet and maintain Node positions when switching workflows --- examples/websocket-relay/relay-app/.env | 2 +- .../relay-app/package-lock.json | 12 +- .../websocket-relay/relay-app/src/app.css | 6 + .../relay-app/src/components/node/Edge.svelte | 41 ++- .../relay-app/src/components/node/Node.svelte | 147 +++++--- .../relay-app/src/lib/workflow.ts | 8 +- .../relay-app/src/routes/+page.svelte | 66 ++-- .../websocket-relay/relay-app/src/stores.ts | 329 ++++++++---------- 8 files changed, 320 insertions(+), 291 deletions(-) diff --git a/examples/websocket-relay/relay-app/.env b/examples/websocket-relay/relay-app/.env index 253659c5..36d1eb1f 100644 --- a/examples/websocket-relay/relay-app/.env +++ b/examples/websocket-relay/relay-app/.env @@ -1,4 +1,4 @@ VITE_WEBSOCKET_ENDPOINT="ws://localhost:1337" VITE_PING_INTERVAL=8000 VITE_MAX_PING_RETRIES=3 -VITE_EMULATION_MODE=true +VITE_EMULATION_MODE=false diff --git a/examples/websocket-relay/relay-app/package-lock.json b/examples/websocket-relay/relay-app/package-lock.json index 06fcd122..141f828b 100644 --- a/examples/websocket-relay/relay-app/package-lock.json +++ b/examples/websocket-relay/relay-app/package-lock.json @@ -1885,9 +1885,9 @@ "dev": true }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -4913,9 +4913,9 @@ "dev": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "glob": { diff --git a/examples/websocket-relay/relay-app/src/app.css b/examples/websocket-relay/relay-app/src/app.css index 099575dd..6eba4c7a 100644 --- a/examples/websocket-relay/relay-app/src/app.css +++ b/examples/websocket-relay/relay-app/src/app.css @@ -12,3 +12,9 @@ font-weight: 400; src: url("/IBMPlexMono-Regular.ttf") format("truetype"); } + + +/* Svelvet */ +.label-wrapper .default-label { + @apply font-sans text-xs !important; +} diff --git a/examples/websocket-relay/relay-app/src/components/node/Edge.svelte b/examples/websocket-relay/relay-app/src/components/node/Edge.svelte index 9ca5cf2b..59f1a92b 100644 --- a/examples/websocket-relay/relay-app/src/components/node/Edge.svelte +++ b/examples/websocket-relay/relay-app/src/components/node/Edge.svelte @@ -1,30 +1,33 @@ - - - - - - - - - + + + + + + + diff --git a/examples/websocket-relay/relay-app/src/components/node/Node.svelte b/examples/websocket-relay/relay-app/src/components/node/Node.svelte index fd84ff58..dca2b591 100644 --- a/examples/websocket-relay/relay-app/src/components/node/Node.svelte +++ b/examples/websocket-relay/relay-app/src/components/node/Node.svelte @@ -1,78 +1,123 @@ - {#if task === null} - {#if !tempcat} +
+ {#if task === null} + {#if !tempcat} + A cat in space chilling on a synth. + + {:else} + A cat in space chilling on a synth. + + + + {/if} + {:else if task.status === "replayed"} A cat in space chilling on a synth. - - - + {#if matchingEdge} + + {#if (matchingEdge.target - matchingEdge.source) > 1} + + + + {:else} + + + + {/if} + {/if} {:else} A cat in space chilling on a synth. - {/if} - {:else if task.status === "replayed"} - A cat image after a ${task.operation} performed by Homestar. The operation was replayed. - {:else} - A cat image after a ${task.operation} performed by Homestar - {/if} +
diff --git a/examples/websocket-relay/relay-app/src/lib/workflow.ts b/examples/websocket-relay/relay-app/src/lib/workflow.ts index 1d5adfaf..c335e74f 100644 --- a/examples/websocket-relay/relay-app/src/lib/workflow.ts +++ b/examples/websocket-relay/relay-app/src/lib/workflow.ts @@ -1,6 +1,6 @@ import { get as getStore } from "svelte/store"; -import { base64CatStore } from "../stores"; +import { base64CatStore, firstWorkflowToRunStore } from "../stores"; import type { Receipt, TaskOperation, TaskStatus, Meta } from "$lib/task"; import { @@ -29,6 +29,7 @@ export type WorkflowId = "one" | "two"; // RUN export async function run(workflowId: WorkflowId) { let channel = getStore(channelStore); + const firstWorkflowToRun = getStore(firstWorkflowToRunStore); const tasks = getStore(taskStore); if (!channel) { @@ -47,6 +48,11 @@ export async function run(workflowId: WorkflowId) { failedPingCount: 0, }); + // Record the first workflow that ran + if (!firstWorkflowToRun) { + firstWorkflowToRunStore.set(workflowId) + } + // Set workflow status to working workflowStore.update((workflows) => ({ ...workflows, diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 86685c84..3be4ff4a 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -4,73 +4,63 @@ import { connect } from "$lib/channel"; import { base64CatStore, nodeStore } from "../stores"; - // import { base64CatStore, edgeStore, nodeStore } from "../stores"; import Controls from "$components/Controls.svelte"; import Header from "$components/Header.svelte"; import WorkflowDetail from "$components/WorkflowDetail.svelte"; import Node from "$components/node/Node.svelte"; let nodes: any[] = []; - let edges: any[] = []; let showWorkflowModal = false; let windowHeight = window.innerHeight; let windowWidth = window.innerWidth; - // const unsubscribeNodeStore = nodeStore.subscribe((store) => { - // nodes = store; - // }); + const unsubscribeNodeStore = nodeStore.subscribe((store) => { + nodes = store; + }); - // const unsubscribeEdgeStore = edgeStore.subscribe((store) => { - // edges = store; - // }); - - function handleWindowResize(event: Event) { - windowHeight = window.innerHeight; - windowWidth = window.innerWidth; + function handleWindowResize() { + windowHeight = window.innerHeight; + windowWidth = window.innerWidth; } function toggleWorflowModal() { - showWorkflowModal = !showWorkflowModal; + showWorkflowModal = !showWorkflowModal; } async function initializeSpaceCat() { - const catResponse = await fetch("./spacecat"); - const cat = await catResponse.text(); + const catResponse = await fetch("./spacecat"); + const cat = await catResponse.text(); - base64CatStore.set(cat); + base64CatStore.set(cat); } // Set spacecat unmodified image - initializeSpaceCat(); + const fetchCat = initializeSpaceCat(); // Connect to websocket server - // connect(); + connect(); - // onDestroy(() => { - // unsubscribeNodeStore(); - // unsubscribeEdgeStore(); - // }); + onDestroy(() => { + unsubscribeNodeStore(); + });
+ {#if showWorkflowModal} - + {/if} - - - - - - - + + +{#await fetchCat then _} + + {#key nodes} + {#each nodes as node} + + {/each} + {/key} + +{/await} diff --git a/examples/websocket-relay/relay-app/src/stores.ts b/examples/websocket-relay/relay-app/src/stores.ts index 204dff6f..ed91ec0a 100644 --- a/examples/websocket-relay/relay-app/src/stores.ts +++ b/examples/websocket-relay/relay-app/src/stores.ts @@ -1,6 +1,6 @@ import { derived, writable } from "svelte/store"; import type { Readable, Writable } from "svelte/store"; -import type { NodeType } from "svelvet"; +import type { NodeProps } from "svelvet"; import type { Channel } from "$lib/channel"; import type { Workflow, WorkflowId, WorkflowState } from "$lib/workflow"; @@ -26,6 +26,8 @@ export const workflowStore: Writable> = writable({ export const activeWorkflowStore: Writable> = writable(null); +export const firstWorkflowToRunStore: Writable<'one' | 'two'| null> = writable(null) + export const taskStore: Writable> = writable({ one: [ { @@ -81,199 +83,176 @@ export const taskStore: Writable> = writable({ ], }); -export const nodeStore: Readable = derived( - [base64CatStore, taskStore], +export const nodeStore: Readable = derived( + [firstWorkflowToRunStore, taskStore], ($stores) => { - const [base64Cat, taskStore] = $stores - return [] -}); + const [firstWorkflowToRunStore, taskStore] = $stores; + const workflowOneTasks = taskStore["one"]; + const workflowOneNodes = workflowOneTasks.reduce((nodes, task, index) => { + const previous = index !== 0 ? workflowOneTasks[index - 1] : null; -// export const nodeStore: Readable = derived( -// [base64CatStore, taskStore], -// ($stores) => { -// const [ base64Cat, taskStore ] = $stores -// const workflowOneTasks = taskStore["one"] -// const workflowOneNodes = workflowOneTasks.reduce((nodes, task, index) => { -// const previous = index !== 0 ? workflowOneTasks[index - 1] : null + if ( + (task.status === "executed" || task.status === "replayed") && + (previous + ? previous.status !== "waiting" && previous.status !== "failure" + : true) + ) { + const idOffset = 2; + const id = String(index + idOffset) -// if ( -// (task.status === "executed" || task.status === "replayed") && -// (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) -// ) { -// const idOffset = 2; + // @ts-ignore + nodes = [ + ...nodes, + { + id, + position: { + x: 500 + (index + 1) * 280, + y: + firstWorkflowToRunStore === 'two' && (id === "2" || id === "3") + ? 450 + : 150, + }, + task, + }, + ]; + } + return nodes; + }, []); -// // @ts-ignore -// nodes = [ -// ...nodes, -// { -// id: String(index + idOffset), -// position: { x: 500 + (index + 1) * 250, y: 150 }, -// data: { -// html: -// task.status === "replayed" -// ? `` -// : ``, -// }, -// width: 150, -// height: 150, -// bgColor: "white", -// borderColor: "transparent", -// }, -// ]; -// } -// return nodes; -// }, []); + const workflowTwoTasks = taskStore["two"]; + const workflowTwoNodes = workflowTwoTasks.reduce((nodes, task, index) => { + const previous = index !== 0 ? workflowTwoTasks[index - 1] : null; -// const workflowTwoTasks = taskStore["two"] -// const workflowTwoNodes = workflowTwoTasks.reduce((nodes, task, index) => { -// const previous = index !== 0 ? workflowTwoTasks[index - 1] : null + if ( + (task.status === "executed" || task.status === "replayed") && + (previous + ? previous.status !== "waiting" && previous.status !== "failure" + : true) + ) { + const idOffset = 5; -// if ( -// (task.status === "executed" || task.status === "replayed") && -// (previous ? previous.status !== 'waiting' && previous.status !== "failure" : true) -// ) { -// const idOffset = 5; + // Check for a matching task in workflow one + const matchingOneTask = taskStore.one.find( + (t) => t.operation === task.operation + ); -// // Check for a matching task in workflow one -// const matchingOneTask = taskStore.one.find( -// (t) => t.operation === task.operation -// ); + if ( + matchingOneTask && + (matchingOneTask.status === "executed" || + matchingOneTask.status === "replayed") + ) { + const nodeIndex = matchingOneTask.id - 1; -// if ( -// matchingOneTask && -// (matchingOneTask.status === "executed" || -// matchingOneTask.status === "replayed") -// ) { -// const nodeIndex = matchingOneTask.id - 1; -// const updatedHtml = `${workflowOneNodes[nodeIndex].data.html.slice( -// 0, -// -2 -// )} style="filter: opacity(75%)" />`; + // Update node in workflow one with opacity to indicate the replayed + // task + workflowOneNodes[nodeIndex] = { + ...workflowOneNodes[nodeIndex], + }; -// // Update node in workflow one with opacity to indicate the replayed -// // task -// workflowOneNodes[nodeIndex] = { -// ...workflowOneNodes[nodeIndex], -// data: { html: updatedHtml }, -// }; + // Skip adding new nodes to workflow two + return nodes; + } -// // Skip adding new nodes to workflow two -// return nodes; -// } + const id = String(index + idOffset); -// // @ts-ignore -// nodes = [ -// ...nodes, -// { -// id: String(index + idOffset), -// position: { x: 500 + (index + 1) * 250, y: 450 }, -// data: { -// html: -// task.status === "replayed" -// ? `` -// : ``, -// }, -// width: 150, -// height: 150, -// bgColor: "white", -// borderColor: "transparent", -// }, -// ]; -// } -// return nodes; -// }, []); + // @ts-ignore + nodes = [ + ...nodes, + { + id, + position: { x: 500 + (index + 1) * 280, y: 450 }, + task, + }, + ]; + } -// return [ -// { -// id: "1", -// position: { x: 500, y: 300 }, -// data: { -// html: ``, -// }, -// width: 150, -// height: 150, -// bgColor: "white", -// borderColor: "transparent", -// }, -// ...workflowOneNodes, -// ...workflowTwoNodes, -// ]; -// } -// ); + return nodes; + }, []); -// export const edgeStore = derived(nodeStore, ($nodeStore) => { -// let edges: any[] = []; -// const nodeIds = $nodeStore.map((node) => node.id); + return [ + { + id: "1", + position: { x: 500, y: 300 }, + }, + ...workflowOneNodes, + ...workflowTwoNodes, + ]; + } +); -// // Workflow One +export const edgeStore = derived(nodeStore, ($nodeStore) => { + let edges: any[] = []; + const nodeIds = $nodeStore.map((node) => node.id); -// if (nodeIds.includes("1") && nodeIds.includes("2")) { -// edges = [ -// ...edges, -// { id: "e1-2", source: "1", target: "2", label: "Crop", arrow: true }, -// ]; -// } + // Workflow One -// if (nodeIds.includes("2") && nodeIds.includes("3")) { -// edges = [ -// ...edges, -// { id: "e2-3", source: "2", target: "3", label: "Rotate90", arrow: true }, -// ]; -// } + if (nodeIds.includes("1") && nodeIds.includes("2")) { + edges = [ + ...edges, + { id: "e1-2", source: "1", target: "2", label: "Crop", arrow: true }, + ]; + } -// if (nodeIds.includes("3") && nodeIds.includes("4")) { -// edges = [ -// ...edges, -// { id: "e3-4", source: "3", target: "4", label: "Blur", arrow: true }, -// ]; -// } + if (nodeIds.includes("2") && nodeIds.includes("3")) { + edges = [ + ...edges, + { id: "e2-3", source: "2", target: "3", label: "Rotate90", arrow: true }, + ]; + } -// // Workflow Two + if (nodeIds.includes("3") && nodeIds.includes("4")) { + edges = [ + ...edges, + { id: "e3-4", source: "3", target: "4", label: "Blur", arrow: true }, + ]; + } -// if ( -// nodeIds.includes("1") && -// nodeIds.includes("2") && -// nodeIds.includes("3") && -// nodeIds.includes("7") -// ) { -// edges = [ -// ...edges, -// { id: "e3-7", source: "3", target: "7", label: "Grayscale", arrow: true }, -// ]; -// } else { -// if (nodeIds.includes("1") && nodeIds.includes("5")) { -// edges = [ -// ...edges, -// { id: "e1-5", source: "1", target: "5", label: "Crop", arrow: true }, -// ]; -// } + // Workflow Two -// if (nodeIds.includes("5") && nodeIds.includes("6")) { -// edges = [ -// ...edges, -// { -// id: "e5-6", -// source: "5", -// target: "6", -// label: "Rotate90", -// arrow: true, -// }, -// ]; -// } + if ( + nodeIds.includes("1") && + nodeIds.includes("2") && + nodeIds.includes("3") && + nodeIds.includes("7") + ) { + edges = [ + ...edges, + { id: "e3-7", source: "3", target: "7", label: "Grayscale", arrow: true }, + ]; + } else { + if (nodeIds.includes("1") && nodeIds.includes("5")) { + edges = [ + ...edges, + { id: "e1-5", source: "1", target: "5", label: "Crop", arrow: true }, + ]; + } -// if (nodeIds.includes("6") && nodeIds.includes("7")) { -// edges = [ -// ...edges, -// { -// id: "e6-7", -// source: "6", -// target: "7", -// label: "Grayscale", -// arrow: true, -// }, -// ]; -// } -// } + if (nodeIds.includes("5") && nodeIds.includes("6")) { + edges = [ + ...edges, + { + id: "e5-6", + source: "5", + target: "6", + label: "Rotate90", + arrow: true, + }, + ]; + } -// return edges; -// }); + if (nodeIds.includes("6") && nodeIds.includes("7")) { + edges = [ + ...edges, + { + id: "e6-7", + source: "6", + target: "7", + label: "Grayscale", + arrow: true, + }, + ]; + } + } + + return edges; +}); From 12d4e66b89e173c4751daa6899d052fecdc96c23 Mon Sep 17 00:00:00 2001 From: avivash Date: Thu, 5 Oct 2023 14:47:34 -0700 Subject: [PATCH 03/17] Chore: run npm audit fix for one postcss vulnerability --- examples/websocket-relay/relay-app/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/websocket-relay/relay-app/package-lock.json b/examples/websocket-relay/relay-app/package-lock.json index 141f828b..4c7b8d48 100644 --- a/examples/websocket-relay/relay-app/package-lock.json +++ b/examples/websocket-relay/relay-app/package-lock.json @@ -2609,9 +2609,9 @@ } }, "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -5435,9 +5435,9 @@ "dev": true }, "postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "requires": { "nanoid": "^3.3.6", From 0a9955cbdbe62e96ae9d1a45018366d748b42ae5 Mon Sep 17 00:00:00 2001 From: avivash Date: Thu, 5 Oct 2023 15:17:06 -0700 Subject: [PATCH 04/17] Fix: revert spacing in three files --- .../src/components/WorkflowDetail.svelte | 74 ++++++++-------- .../src/components/controls/TaskValue.svelte | 84 +++++++++---------- .../relay-app/src/routes/+page.svelte | 68 +++++++-------- 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte b/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte index 9770c4c3..963c0041 100644 --- a/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte +++ b/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte @@ -1,50 +1,50 @@
-
-
-
Workflow One
-
- -
-
-
-
Workflow Two
-
- -
-
+
+
+
Workflow One
+
+ +
+
+
Workflow Two
+
+ +
+
+
diff --git a/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte b/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte index e6be8ca5..c5626d5c 100644 --- a/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte +++ b/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte @@ -1,56 +1,56 @@
- - {label} - {#if val} - {#if state === "copy"} - copy(val)} - on:keypress={() => copy(val)} - in:fade={{ duration: 80, easing: quintIn }} - out:fade={{ duration: 40, easing: quintIn }} - > - - - {:else} - - - - {/if} - {/if} - - {val} + + {label} + {#if val} + {#if state === "copy"} + copy(val)} + on:keypress={() => copy(val)} + in:fade={{ duration: 80, easing: quintIn }} + out:fade={{ duration: 40, easing: quintIn }} + > + + + {:else} + + + + {/if} + {/if} + + {val}
diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 3be4ff4a..7b38eda2 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -1,48 +1,48 @@ From 80805197a7641b0b72252804c108ba83b4d53fdc Mon Sep 17 00:00:00 2001 From: avivash Date: Thu, 5 Oct 2023 15:18:47 -0700 Subject: [PATCH 05/17] Fix: revert last spacing that got changed --- examples/websocket-relay/relay-app/src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/websocket-relay/relay-app/src/routes/+layout.svelte b/examples/websocket-relay/relay-app/src/routes/+layout.svelte index 1fe2550a..881d2ba8 100644 --- a/examples/websocket-relay/relay-app/src/routes/+layout.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+layout.svelte @@ -1,5 +1,5 @@ From be39d69f10a3f6c9ed5e161b2a96c131d1c31de5 Mon Sep 17 00:00:00 2001 From: avivash Date: Thu, 5 Oct 2023 15:30:42 -0700 Subject: [PATCH 06/17] Chore: remove old .bak file and uncomment clipboardCopy --- .../src/components/controls/TaskValue.svelte | 4 +- .../relay-app/src/stores-original.ts.bak | 271 ------------------ 2 files changed, 2 insertions(+), 273 deletions(-) delete mode 100644 examples/websocket-relay/relay-app/src/stores-original.ts.bak diff --git a/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte b/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte index c5626d5c..ff41a49a 100644 --- a/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte +++ b/examples/websocket-relay/relay-app/src/components/controls/TaskValue.svelte @@ -1,5 +1,5 @@
Workflow One
- +
Workflow Two
- +
From 0d7ebe96c962005b962bb9b19066bbaa73937d14 Mon Sep 17 00:00:00 2001 From: avivash Date: Fri, 6 Oct 2023 10:08:42 -0700 Subject: [PATCH 12/17] Chore: move key block to inside each loop for Nodes --- .../websocket-relay/relay-app/src/routes/+page.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 7b38eda2..3c3a87a0 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -57,10 +57,10 @@ {#await fetchCat then _} - {#key nodes} - {#each nodes as node} + {#each nodes as node} + {#key node} - {/each} - {/key} + {/key} + {/each} {/await} From e0dca768ad9a83cee6097cf28db29797657da2f2 Mon Sep 17 00:00:00 2001 From: avivash Date: Fri, 6 Oct 2023 10:12:24 -0700 Subject: [PATCH 13/17] Chore: also add a key block for the edgeStore to increase FF reliability --- .../relay-app/src/routes/+page.svelte | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 3c3a87a0..6d2a39f3 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -3,7 +3,7 @@ import { Svelvet } from "svelvet"; import { connect } from "$lib/channel"; - import { base64CatStore, nodeStore } from "../stores"; + import { base64CatStore, edgeStore, nodeStore } from "../stores"; import Controls from "$components/Controls.svelte"; import Header from "$components/Header.svelte"; import WorkflowDetail from "$components/WorkflowDetail.svelte"; @@ -16,6 +16,7 @@ const unsubscribeNodeStore = nodeStore.subscribe((store) => { nodes = store; + console.log('nodes',) }); function handleWindowResize() { @@ -57,10 +58,12 @@ {#await fetchCat then _} - {#each nodes as node} - {#key node} - - {/key} - {/each} + {#key $edgeStore} + {#each nodes as node} + {#key node} + + {/key} + {/each} + {/key} {/await} From 40a6874e3e0db0962b7dbbc4b24000322b07da9f Mon Sep 17 00:00:00 2001 From: avivash Date: Fri, 6 Oct 2023 10:29:43 -0700 Subject: [PATCH 14/17] Fix: add key block for taskStore for FF rendering --- .../websocket-relay/relay-app/src/routes/+page.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 6d2a39f3..88df4d7b 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -3,7 +3,7 @@ import { Svelvet } from "svelvet"; import { connect } from "$lib/channel"; - import { base64CatStore, edgeStore, nodeStore } from "../stores"; + import { base64CatStore, nodeStore, taskStore } from "../stores"; import Controls from "$components/Controls.svelte"; import Header from "$components/Header.svelte"; import WorkflowDetail from "$components/WorkflowDetail.svelte"; @@ -16,7 +16,7 @@ const unsubscribeNodeStore = nodeStore.subscribe((store) => { nodes = store; - console.log('nodes',) + console.log('nodes', nodes) }); function handleWindowResize() { @@ -58,9 +58,9 @@ {#await fetchCat then _} - {#key $edgeStore} + {#key nodes} {#each nodes as node} - {#key node} + {#key $taskStore} {/key} {/each} From 224d8f42b568533b849612045d3feee6a1cc57ba Mon Sep 17 00:00:00 2001 From: avivash Date: Fri, 6 Oct 2023 16:16:43 -0700 Subject: [PATCH 15/17] Fix: ensure the correct receipt is associated with the correct task/node --- .../relay-app/src/routes/+page.svelte | 5 +-- .../websocket-relay/relay-app/src/stores.ts | 37 +++++++++++++++++-- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/examples/websocket-relay/relay-app/src/routes/+page.svelte b/examples/websocket-relay/relay-app/src/routes/+page.svelte index 88df4d7b..f8b54fa7 100644 --- a/examples/websocket-relay/relay-app/src/routes/+page.svelte +++ b/examples/websocket-relay/relay-app/src/routes/+page.svelte @@ -16,7 +16,6 @@ const unsubscribeNodeStore = nodeStore.subscribe((store) => { nodes = store; - console.log('nodes', nodes) }); function handleWindowResize() { @@ -60,9 +59,7 @@ {#key nodes} {#each nodes as node} - {#key $taskStore} - - {/key} + {/each} {/key} diff --git a/examples/websocket-relay/relay-app/src/stores.ts b/examples/websocket-relay/relay-app/src/stores.ts index 2cc02fa2..78b1a158 100644 --- a/examples/websocket-relay/relay-app/src/stores.ts +++ b/examples/websocket-relay/relay-app/src/stores.ts @@ -83,6 +83,14 @@ export const taskStore: Writable> = writable({ ], }); +const NODE_TASK_MAP = { + '2': 'crop', + '3': 'rotate90', + '4': 'blur', + '5': 'crop', + '6': 'rotate90', + '7': 'grayscale', +} export const nodeStore: Readable = derived( [firstWorkflowToRunStore, taskStore], ($stores) => { @@ -98,7 +106,7 @@ export const nodeStore: Readable = derived( : true) ) { const idOffset = 2; - const id = String(index + idOffset) + const id = String(index + idOffset); // @ts-ignore nodes = [ @@ -108,7 +116,7 @@ export const nodeStore: Readable = derived( position: { x: 208 + (index + 1) * 275, y: - firstWorkflowToRunStore === 'two' && (id === "2" || id === "3") + firstWorkflowToRunStore === "two" && (id === "2" || id === "3") ? 570 : 270, }, @@ -169,13 +177,34 @@ export const nodeStore: Readable = derived( return nodes; }, []); + // Nodes don't always have the correct task receipts because activeWorkflow.step can get out of sync + // when the BE returns two messages at the same time, which causes the wrong receipt to be associated + // with a task. So here we ensure the correct receipt is assigned to the correct node and task by + // checking the NODE_TASK_MAP, which states the correct sequence of ops based on a node.id + const workflowNodes = [...workflowOneNodes, ...workflowTwoNodes].map( + (node) => + NODE_TASK_MAP[node.id] !== node?.task?.receipt?.meta?.op + ? { + ...node, + task: { + ...(taskStore["one"].find( + (task) => NODE_TASK_MAP[node.id] === task?.receipt?.meta?.op + ) ?? + taskStore["two"].find( + (task) => NODE_TASK_MAP[node.id] === task?.receipt?.meta?.op + )), + operation: NODE_TASK_MAP[node.id], + }, + } + : node + ); + return [ { id: "1", position: { x: 208, y: 420 }, }, - ...workflowOneNodes, - ...workflowTwoNodes, + ...workflowNodes, ]; } ); From d59e96ba250cc4b5fe36434cc3b91bf4c66a8294 Mon Sep 17 00:00:00 2001 From: avivash Date: Fri, 6 Oct 2023 16:18:23 -0700 Subject: [PATCH 16/17] Fix: remove extra space and use alias --- .../relay-app/src/components/WorkflowDetail.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte b/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte index 1505470a..4dad639e 100644 --- a/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte +++ b/examples/websocket-relay/relay-app/src/components/WorkflowDetail.svelte @@ -3,7 +3,7 @@ import { slide } from "svelte/transition"; import { quartOut } from "svelte/easing"; - import { workflowOneJson, workflowTwoJson } from "../lib/workflow"; + import { workflowOneJson, workflowTwoJson } from "$lib/workflow";
Workflow Two
- +
From 38aee325188f76a70bcdd454ac5ee38f1afbfbc6 Mon Sep 17 00:00:00 2001 From: avivash Date: Fri, 6 Oct 2023 17:07:24 -0700 Subject: [PATCH 17/17] Fix: account for Edges when not being replayed and add Anchor component --- .../src/components/node/Anchor.svelte | 22 +++++++ .../relay-app/src/components/node/Node.svelte | 59 ++++++++----------- 2 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 examples/websocket-relay/relay-app/src/components/node/Anchor.svelte diff --git a/examples/websocket-relay/relay-app/src/components/node/Anchor.svelte b/examples/websocket-relay/relay-app/src/components/node/Anchor.svelte new file mode 100644 index 00000000..13da7ccd --- /dev/null +++ b/examples/websocket-relay/relay-app/src/components/node/Anchor.svelte @@ -0,0 +1,22 @@ + + + + + diff --git a/examples/websocket-relay/relay-app/src/components/node/Node.svelte b/examples/websocket-relay/relay-app/src/components/node/Node.svelte index dca2b591..e4671195 100644 --- a/examples/websocket-relay/relay-app/src/components/node/Node.svelte +++ b/examples/websocket-relay/relay-app/src/components/node/Node.svelte @@ -1,11 +1,11 @@