From 30e897468a8047449112af6792267d7db595dd5e Mon Sep 17 00:00:00 2001 From: Max Richter Date: Mon, 2 Feb 2026 16:22:14 +0100 Subject: [PATCH 1/2] chore: setup linting --- .dprint.jsonc | 45 +- .gitea/workflows/deploy.yaml | 96 +- app/Dockerfile | 13 +- app/docker/app.conf | 10 + app/eslint.config.mjs | 37 + app/package.json | 14 +- app/src/app.css | 4 +- app/src/app.d.ts | 14 +- app/src/app.html | 48 +- app/src/lib/config.ts | 2 +- .../background/Background.svelte | 8 +- .../graph-interface/components/AddMenu.svelte | 2 +- .../components/BoxSelection.svelte | 7 +- .../graph-interface/components/Camera.svelte | 4 +- .../components/HelpView.svelte | 20 +- .../lib/graph-interface/debug/Debug.svelte | 37 +- app/src/lib/graph-interface/edges/Edge.svelte | 30 +- app/src/lib/graph-interface/edges/utils.ts | 38 +- .../graph-interface/graph-manager.svelte.ts | 36 +- .../lib/graph-interface/graph-state.svelte.ts | 13 +- .../lib/graph-interface/graph/Graph.svelte | 4 +- .../lib/graph-interface/graph/Wrapper.svelte | 31 +- .../graph-interface/graph/colors.svelte.ts | 26 +- .../lib/graph-interface/graph/drop.events.ts | 14 +- .../lib/graph-interface/graph/edge.events.ts | 11 +- .../lib/graph-interface/graph/mouse.events.ts | 15 +- .../graph-interface/helpers/EventEmitter.ts | 12 +- app/src/lib/graph-interface/helpers/index.ts | 34 +- .../lib/graph-interface/helpers/localStore.ts | 16 +- .../lib/graph-interface/history-manager.ts | 34 +- app/src/lib/graph-interface/node/Node.svelte | 32 +- .../lib/graph-interface/node/NodeHTML.svelte | 23 +- .../graph-interface/node/NodeHeader.svelte | 60 +- .../lib/graph-interface/node/NodeInput.svelte | 19 +- .../graph-interface/node/NodeParameter.svelte | 87 +- app/src/lib/graph-templates/default.json | 96 +- app/src/lib/graph-templates/grid.ts | 14 +- app/src/lib/graph-templates/index.ts | 15 +- app/src/lib/graph-templates/lotta-faces.json | 45 +- .../lotta-nodes-and-faces.json | 1594 +++++++++++++++- app/src/lib/graph-templates/lotta-nodes.json | 1601 ++++++++++++++++- app/src/lib/graph-templates/plant.ts | 79 +- app/src/lib/graph-templates/tree.ts | 26 +- app/src/lib/grid/Cell.svelte | 11 +- app/src/lib/grid/Grid.svelte | 6 +- app/src/lib/grid/Row.svelte | 14 +- app/src/lib/grid/index.ts | 8 +- app/src/lib/helpers/createKeyMap.ts | 44 +- app/src/lib/helpers/index.ts | 137 +- app/src/lib/helpers/localState.svelte.ts | 4 +- app/src/lib/helpers/localStore.ts | 16 +- app/src/lib/helpers/throttle.ts | 2 +- app/src/lib/icons/graph.svg | 14 +- app/src/lib/node-registry.ts | 9 +- app/src/lib/node-registry/index.ts | 2 + .../lib/node-registry}/node-registry-cache.ts | 12 +- .../node-registry}/node-registry-client.ts | 24 +- app/src/lib/node-store/BreadCrumbs.svelte | 8 +- app/src/lib/node-store/DraggableNode.svelte | 45 +- app/src/lib/node-store/NodeStore.svelte | 20 +- app/src/lib/performance/BarSplit.svelte | 8 +- app/src/lib/performance/Monitor.svelte | 13 +- .../lib/performance/PerformanceViewer.svelte | 130 +- app/src/lib/performance/SmallGraph.svelte | 2 +- .../performance/SmallPerformanceViewer.svelte | 32 +- app/src/lib/performance/index.ts | 2 +- .../lib/project-manager/ProjectManager.svelte | 51 +- .../project-database.svelte.ts | 1 + .../project-manager/project-manager.svelte.ts | 2 +- app/src/lib/result-viewer/Camera.svelte | 34 +- app/src/lib/result-viewer/Scene.svelte | 67 +- app/src/lib/result-viewer/Viewer.svelte | 39 +- app/src/lib/result-viewer/geometryPool.ts | 78 +- app/src/lib/runtime/index.ts | 7 +- .../lib/runtime/remote-runtime-executor.ts | 14 +- app/src/lib/runtime/runtime-executor-cache.ts | 2 +- app/src/lib/runtime/runtime-executor.ts | 85 +- app/src/lib/runtime/types.ts | 14 +- .../worker-runtime-executor-backend.ts | 20 +- .../lib/runtime/worker-runtime-executor.ts | 8 +- app/src/lib/settings/NestedSettings.svelte | 117 +- app/src/lib/settings/app-settings.svelte.ts | 188 +- app/src/lib/settings/index.ts | 6 +- app/src/lib/sidebar/Panel.svelte | 20 +- app/src/lib/sidebar/PanelState.svelte.ts | 6 +- app/src/lib/sidebar/Sidebar.svelte | 11 +- .../sidebar/panels/ActiveNodeSelected.svelte | 44 +- .../sidebar/panels/ActiveNodeSettings.svelte | 6 +- .../lib/sidebar/panels/BenchmarkPanel.svelte | 252 +-- .../lib/sidebar/panels/ExportSettings.svelte | 34 +- app/src/lib/sidebar/panels/GraphSource.svelte | 8 +- app/src/lib/sidebar/panels/Keymap.svelte | 16 +- app/src/lib/types.ts | 6 +- app/src/routes/+layout.svelte | 9 +- app/src/routes/+layout.ts | 4 +- app/src/routes/+page.svelte | 143 +- app/src/routes/dev/+layout.svelte | 2 +- app/src/routes/dev/+page.svelte | 60 +- app/src/routes/dev/Code.svelte | 4 +- app/src/routes/nodes/[user].json/+server.ts | 18 +- .../nodes/[user]/[collection].json/+server.ts | 16 +- .../[collection]/[node].json/+server.ts | 26 +- .../[collection]/[node].wasm/+server.ts | 14 +- app/src/routes/nodes/users.json/+server.ts | 10 +- app/static/svelte.svg | 20 +- app/static/tauri.svg | 28 +- app/static/vite.svg | 38 +- app/vite.config.ts | 14 +- flake.nix | 2 +- package.json | 6 +- packages/macros/Cargo.toml | 10 +- packages/registry/package.json | 17 - packages/registry/src/index.ts | 2 - packages/store-client/package.json | 16 - .../store-client/src/client/client.gen.ts | 16 - .../src/client/client/client.gen.ts | 311 ---- .../store-client/src/client/client/index.ts | 25 - .../src/client/client/types.gen.ts | 241 --- .../src/client/client/utils.gen.ts | 332 ---- .../store-client/src/client/core/auth.gen.ts | 42 - .../src/client/core/bodySerializer.gen.ts | 100 - .../src/client/core/params.gen.ts | 176 -- .../src/client/core/pathSerializer.gen.ts | 181 -- .../src/client/core/queryKeySerializer.gen.ts | 136 -- .../src/client/core/serverSentEvents.gen.ts | 266 --- .../store-client/src/client/core/types.gen.ts | 118 -- .../store-client/src/client/core/utils.gen.ts | 143 -- packages/store-client/src/client/index.ts | 4 - packages/store-client/src/client/sdk.gen.ts | 39 - packages/store-client/src/client/types.gen.ts | 305 ---- packages/types/Cargo.toml | 2 +- packages/types/package.json | 7 + packages/types/src/components.ts | 8 +- packages/types/src/index.ts | 11 +- packages/types/src/inputs.ts | 58 +- packages/types/src/settings.ts | 6 +- packages/ui/.eslintignore | 13 - packages/ui/.eslintrc.cjs | 32 - packages/ui/.prettierignore | 4 - packages/ui/.prettierrc | 8 - packages/ui/eslint.config.mjs | 37 + packages/ui/package.json | 14 +- packages/ui/src/app.d.ts | 14 +- packages/ui/src/app.html | 20 +- packages/ui/src/lib/Details.svelte | 4 +- packages/ui/src/lib/Input.svelte | 31 +- packages/ui/src/lib/ShortCut.svelte | 58 +- packages/ui/src/lib/app.css | 65 +- packages/ui/src/lib/index.ts | 3 +- packages/ui/src/lib/inputs/Checkbox.svelte | 78 +- packages/ui/src/lib/inputs/Float.svelte | 317 ++-- packages/ui/src/lib/inputs/Integer.svelte | 215 --- packages/ui/src/lib/inputs/Search.svelte | 1 + packages/ui/src/lib/inputs/Select.svelte | 36 +- packages/ui/src/lib/inputs/Vec3.svelte | 48 +- packages/ui/src/routes/+page.svelte | 125 +- packages/ui/src/routes/Section.svelte | 26 +- packages/ui/svelte.config.js | 4 +- packages/ui/tsconfig.json | 26 +- packages/ui/vite.config.ts | 2 +- packages/utils/package.json | 5 +- packages/utils/src/encoding.test.ts | 42 +- packages/utils/src/encoding.ts | 2 +- packages/utils/src/fastHash.test.ts | 7 +- packages/utils/src/fastHash.ts | 42 +- packages/utils/src/flatTree.test.ts | 16 +- packages/utils/src/flatTree.ts | 6 +- packages/utils/src/index.ts | 12 +- packages/utils/src/logger.ts | 31 +- packages/utils/src/performance.ts | 10 +- packages/utils/src/wasm-wrapper.ts | 6 +- packages/utils/vite.config.ts | 5 +- pnpm-lock.yaml | 721 ++++---- pnpm-workspace.yaml | 13 +- 174 files changed, 6043 insertions(+), 5107 deletions(-) create mode 100644 app/docker/app.conf create mode 100644 app/eslint.config.mjs create mode 100644 app/src/lib/node-registry/index.ts rename {packages/registry/src => app/src/lib/node-registry}/node-registry-cache.ts (90%) rename {packages/registry/src => app/src/lib/node-registry}/node-registry-client.ts (85%) delete mode 100644 packages/registry/package.json delete mode 100644 packages/registry/src/index.ts delete mode 100644 packages/store-client/package.json delete mode 100644 packages/store-client/src/client/client.gen.ts delete mode 100644 packages/store-client/src/client/client/client.gen.ts delete mode 100644 packages/store-client/src/client/client/index.ts delete mode 100644 packages/store-client/src/client/client/types.gen.ts delete mode 100644 packages/store-client/src/client/client/utils.gen.ts delete mode 100644 packages/store-client/src/client/core/auth.gen.ts delete mode 100644 packages/store-client/src/client/core/bodySerializer.gen.ts delete mode 100644 packages/store-client/src/client/core/params.gen.ts delete mode 100644 packages/store-client/src/client/core/pathSerializer.gen.ts delete mode 100644 packages/store-client/src/client/core/queryKeySerializer.gen.ts delete mode 100644 packages/store-client/src/client/core/serverSentEvents.gen.ts delete mode 100644 packages/store-client/src/client/core/types.gen.ts delete mode 100644 packages/store-client/src/client/core/utils.gen.ts delete mode 100644 packages/store-client/src/client/index.ts delete mode 100644 packages/store-client/src/client/sdk.gen.ts delete mode 100644 packages/store-client/src/client/types.gen.ts delete mode 100644 packages/ui/.eslintignore delete mode 100644 packages/ui/.eslintrc.cjs delete mode 100644 packages/ui/.prettierignore delete mode 100644 packages/ui/.prettierrc create mode 100644 packages/ui/eslint.config.mjs delete mode 100644 packages/ui/src/lib/inputs/Integer.svelte diff --git a/.dprint.jsonc b/.dprint.jsonc index 75e6233..27d278b 100644 --- a/.dprint.jsonc +++ b/.dprint.jsonc @@ -10,38 +10,33 @@ "json": { // https://dprint.dev/plugins/json/config/ }, - "markdown": { - }, - "toml": { - }, - "dockerfile": { - }, - "ruff": { - }, - "jupyter": { - }, - "malva": { - }, + "markdown": {}, + "toml": {}, + "dockerfile": {}, + "ruff": {}, + "jupyter": {}, + "malva": {}, "markup": { // https://dprint.dev/plugins/markup_fmt/config/ "scriptIndent": true, "styleIndent": true, }, - "yaml": { - }, - "graphql": { - }, + "yaml": {}, + "graphql": {}, "exec": { "cwd": "${configDir}", - - "commands": [{ - "command": "rustfmt", - "exts": ["rs"], - "cacheKeyFiles": [ - "rustfmt.toml", - "rust-toolchain.toml", - ], - }], + "commands": [ + { + "command": "rustfmt", + "exts": [ + "rs", + ], + "cacheKeyFiles": [ + "rustfmt.toml", + "rust-toolchain.toml", + ], + }, + ], }, "excludes": [ "**/node_modules", diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 48f95d8..d2414b1 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,38 +1,110 @@ -name: Deploy to GitHub Pages +name: ๐Ÿ—๏ธ Build and Deploy on: push: branches: "main" +env: + PNPM_CACHE_FOLDER: .pnpm-store + jobs: - build_site: + lint: runs-on: ubuntu-latest container: jimfx/nodes:latest steps: - - name: Checkout + - name: ๐Ÿ“‘ Checkout Code uses: actions/checkout@v4 - - name: Install dependencies - run: pnpm install --frozen-lockfile + - name: ๐Ÿ’พ Setup pnpm Cache + uses: actions/cache@v4 + with: + path: ${{ env.PNPM_CACHE_FOLDER }} + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} - - name: build + - name: ๐Ÿ“ฆ Install Dependencies + run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} + + - name: ๐Ÿงน Run Linter + run: pnpm lint + + format: + runs-on: ubuntu-latest + container: jimfx/nodes:latest + steps: + - name: ๐Ÿ“‘ Checkout Code + uses: actions/checkout@v4 + + - name: ๐Ÿ’พ Setup pnpm Cache + uses: actions/cache@v4 + with: + path: ${{ env.PNPM_CACHE_FOLDER }} + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: ๐Ÿ“ฆ Install Dependencies + run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} + + - name: ๐ŸŽจ Check Formatting + run: pnpm format:check + + typecheck: + runs-on: ubuntu-latest + container: jimfx/nodes:latest + steps: + - name: ๐Ÿ“‘ Checkout Code + uses: actions/checkout@v4 + + - name: ๐Ÿ’พ Setup pnpm Cache + uses: actions/cache@v4 + with: + path: ${{ env.PNPM_CACHE_FOLDER }} + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: ๐Ÿ“ฆ Install Dependencies + run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} + + - name: ๐Ÿงฌ Type Check + run: pnpm check + + build_and_deploy: + needs: [lint, format, typecheck] + runs-on: ubuntu-latest + container: jimfx/nodes:latest + steps: + - name: ๐Ÿ“‘ Checkout Code + uses: actions/checkout@v4 + + - name: ๐Ÿ’พ Setup pnpm Cache + uses: actions/cache@v4 + with: + path: ${{ env.PNPM_CACHE_FOLDER }} + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: ๐Ÿ“ฆ Install Dependencies + run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} + + - name: ๐Ÿ› ๏ธ Build Site run: pnpm run build:deploy - name: ๐Ÿ”‘ Configure rclone run: | - echo "$SSH_PRIVATE_KEY" > /tmp/id_rsa - chmod 600 /tmp/id_rsa mkdir -p ~/.config/rclone - echo -e "[sftp-remote]\ntype = sftp\nhost = ${SSH_HOST}\nuser = ${SSH_USER}\nport = ${SSH_PORT}\nkey_file = /tmp/id_rsa" > ~/.config/rclone/rclone.conf + cat < ~/.config/rclone/rclone.conf + [sftp-remote] + type = sftp + host = ${SSH_HOST} + user = ${SSH_USER} + port = ${SSH_PORT} + key_use_agent = false + key_data = ${SSH_PRIVATE_KEY} + EOF env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} SSH_HOST: ${{ vars.SSH_HOST }} SSH_PORT: ${{ vars.SSH_PORT }} SSH_USER: ${{ vars.SSH_USER }} - - name: ๐Ÿš€ Deploy Changed Files via rclone + - name: ๐Ÿšš Deploy via rclone run: | - echo "Uploading the rest" - rclone sync --update -v --progress --exclude _astro/** --stats 2s --stats-one-line ./app/build/ sftp-remote:${REMOTE_DIR} --transfers 4 + rclone sync --update -v --progress --exclude "_astro/**" --stats 2s --stats-one-line ./app/build/ sftp-remote:${REMOTE_DIR} --transfers 4 env: REMOTE_DIR: ${{ vars.REMOTE_DIR }} diff --git a/app/Dockerfile b/app/Dockerfile index a059a66..7f2aad5 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -25,18 +25,7 @@ FROM nginx:alpine AS runner RUN rm /etc/nginx/conf.d/default.conf -COPY < + + + + + + %sveltekit.head% + Nodes + + - - - - - %sveltekit.head% - Nodes - - - - -
%sveltekit.body%
- - + +
%sveltekit.body%
+ diff --git a/app/src/lib/config.ts b/app/src/lib/config.ts index fa31c00..cf3e9f8 100644 --- a/app/src/lib/config.ts +++ b/app/src/lib/config.ts @@ -1,2 +1,2 @@ -import { PUBLIC_ANALYTIC_SCRIPT } from "$env/static/public"; +import { PUBLIC_ANALYTIC_SCRIPT } from '$env/static/public'; export const ANALYTIC_SCRIPT = PUBLIC_ANALYTIC_SCRIPT; diff --git a/app/src/lib/graph-interface/background/Background.svelte b/app/src/lib/graph-interface/background/Background.svelte index 96f7334..78af086 100644 --- a/app/src/lib/graph-interface/background/Background.svelte +++ b/app/src/lib/graph-interface/background/Background.svelte @@ -1,9 +1,9 @@ @@ -53,12 +53,12 @@ class="help-wrapper p-4" class:visible={node} bind:clientWidth={width} - style="--my:{my}px; --mx:{Math.min(mx, window.innerWidth - width - 20)}px;" + style="--my: {my}px; --mx: {Math.min(mx, window.innerWidth - width - 20)}px" bind:this={wrapper} >

- {node?.id.split("/").at(-1) || "Help"} + {node?.id.split('/').at(-1) || 'Help'} {#if input} > {input} {/if} @@ -77,7 +77,7 @@ {#if !input}

-> - {node?.outputs?.map((o) => o).join(", ") ?? "nothing"} + {node?.outputs?.map((o) => o).join(', ') ?? 'nothing'}
{/if} {/if} diff --git a/app/src/lib/graph-interface/debug/Debug.svelte b/app/src/lib/graph-interface/debug/Debug.svelte index 22fe27c..b1792ff 100644 --- a/app/src/lib/graph-interface/debug/Debug.svelte +++ b/app/src/lib/graph-interface/debug/Debug.svelte @@ -1,11 +1,32 @@ -{#each $points as point} +{#each $points as point (getEachKey(point))} {/each} -{#each $rects as rect, i} +{#each $rects as rect, i (getEachKey(rect))} {/each} -{#each $lines as line} +{#each $lines as line (getEachKey(line))} diff --git a/app/src/lib/graph-interface/edges/Edge.svelte b/app/src/lib/graph-interface/edges/Edge.svelte index 7180b5c..884e90e 100644 --- a/app/src/lib/graph-interface/edges/Edge.svelte +++ b/app/src/lib/graph-interface/edges/Edge.svelte @@ -1,16 +1,18 @@
- {node.type.split("/").pop()} + {node.type.split('/').pop()}
+ > +
- + @@ -104,9 +108,7 @@ svg path { stroke-width: 0.2px; - transition: - d 0.3s ease, - fill 0.3s ease; + transition: d 0.3s ease, fill 0.3s ease; fill: var(--layer-2); stroke: var(--stroke); stroke-width: var(--stroke-width); diff --git a/app/src/lib/graph-interface/node/NodeInput.svelte b/app/src/lib/graph-interface/node/NodeInput.svelte index 6ab03bb..af30b89 100644 --- a/app/src/lib/graph-interface/node/NodeInput.svelte +++ b/app/src/lib/graph-interface/node/NodeInput.svelte @@ -1,7 +1,7 @@
{#key id && graphId}
- {#if inputType.label !== ""} - + {#if inputType?.label !== ''} + {/if} - {#if inputType.external !== true} + {#if inputType?.external !== true} {/if}
@@ -94,7 +98,8 @@ onmousedown={handleMouseDown} role="button" tabindex="0" - >
+ > + {/if} {/key} @@ -169,9 +174,7 @@ } svg path { - transition: - d 0.3s ease, - fill 0.3s ease; + transition: d 0.3s ease, fill 0.3s ease; fill: var(--layer-1); stroke: var(--stroke); stroke-width: var(--stroke-width); diff --git a/app/src/lib/graph-templates/default.json b/app/src/lib/graph-templates/default.json index 6744450..fc7a3f2 100644 --- a/app/src/lib/graph-templates/default.json +++ b/app/src/lib/graph-templates/default.json @@ -1 +1,95 @@ -{"settings":{"resolution.circle":26,"resolution.curve":39},"nodes":[{"id":9,"position":[220,80],"type":"max/plantarium/output","props":{}},{"id":10,"position":[95,80],"type":"max/plantarium/stem","props":{"amount":5,"length":11,"thickness":0.1}},{"id":14,"position":[195,80],"type":"max/plantarium/gravity","props":{"strength":0.38,"scale":39,"fixBottom":0,"directionalStrength":[1,1,1],"depth":1,"curviness":1}},{"id":15,"position":[120,80],"type":"max/plantarium/noise","props":{"strength":4.9,"scale":2.2,"fixBottom":1,"directionalStrength":[1,1,1],"depth":1,"octaves":1}},{"id":16,"position":[70,80],"type":"max/plantarium/vec3","props":{"0":0,"1":0,"2":0}},{"id":17,"position":[45,80],"type":"max/plantarium/random","props":{"min":-2,"max":2}},{"id":18,"position":[170,80],"type":"max/plantarium/branch","props":{"length":1.6,"thickness":0.69,"amount":36,"offsetSingle":0.5,"lowestBranch":0.46,"highestBranch":1,"depth":1,"rotation":180}},{"id":19,"position":[145,80],"type":"max/plantarium/gravity","props":{"strength":0.38,"scale":39,"fixBottom":0,"directionalStrength":[1,1,1],"depth":1,"curviness":1}},{"id":20,"position":[70,120],"type":"max/plantarium/random","props":{"min":0.073,"max":0.15}}],"edges":[[14,0,9,"input"],[10,0,15,"plant"],[16,0,10,"origin"],[17,0,16,"0"],[17,0,16,"2"],[18,0,14,"plant"],[15,0,19,"plant"],[19,0,18,"plant"],[20,0,10,"thickness"]]} +{ + "settings": { "resolution.circle": 26, "resolution.curve": 39 }, + "nodes": [ + { "id": 9, "position": [220, 80], "type": "max/plantarium/output", "props": {} }, + { + "id": 10, + "position": [95, 80], + "type": "max/plantarium/stem", + "props": { "amount": 5, "length": 11, "thickness": 0.1 } + }, + { + "id": 14, + "position": [195, 80], + "type": "max/plantarium/gravity", + "props": { + "strength": 0.38, + "scale": 39, + "fixBottom": 0, + "directionalStrength": [1, 1, 1], + "depth": 1, + "curviness": 1 + } + }, + { + "id": 15, + "position": [120, 80], + "type": "max/plantarium/noise", + "props": { + "strength": 4.9, + "scale": 2.2, + "fixBottom": 1, + "directionalStrength": [1, 1, 1], + "depth": 1, + "octaves": 1 + } + }, + { + "id": 16, + "position": [70, 80], + "type": "max/plantarium/vec3", + "props": { "0": 0, "1": 0, "2": 0 } + }, + { + "id": 17, + "position": [45, 80], + "type": "max/plantarium/random", + "props": { "min": -2, "max": 2 } + }, + { + "id": 18, + "position": [170, 80], + "type": "max/plantarium/branch", + "props": { + "length": 1.6, + "thickness": 0.69, + "amount": 36, + "offsetSingle": 0.5, + "lowestBranch": 0.46, + "highestBranch": 1, + "depth": 1, + "rotation": 180 + } + }, + { + "id": 19, + "position": [145, 80], + "type": "max/plantarium/gravity", + "props": { + "strength": 0.38, + "scale": 39, + "fixBottom": 0, + "directionalStrength": [1, 1, 1], + "depth": 1, + "curviness": 1 + } + }, + { + "id": 20, + "position": [70, 120], + "type": "max/plantarium/random", + "props": { "min": 0.073, "max": 0.15 } + } + ], + "edges": [ + [14, 0, 9, "input"], + [10, 0, 15, "plant"], + [16, 0, 10, "origin"], + [17, 0, 16, "0"], + [17, 0, 16, "2"], + [18, 0, 14, "plant"], + [15, 0, 19, "plant"], + [19, 0, 18, "plant"], + [20, 0, 10, "thickness"] + ] +} diff --git a/app/src/lib/graph-templates/grid.ts b/app/src/lib/graph-templates/grid.ts index 879cf0a..bc759e6 100644 --- a/app/src/lib/graph-templates/grid.ts +++ b/app/src/lib/graph-templates/grid.ts @@ -1,11 +1,10 @@ -import type { Graph } from "@nodarium/types"; +import type { Graph } from '@nodarium/types'; export function grid(width: number, height: number) { - const graph: Graph = { id: Math.floor(Math.random() * 100000), edges: [], - nodes: [], + nodes: [] }; const amount = width * height; @@ -18,19 +17,18 @@ export function grid(width: number, height: number) { id: i, position: [x * 30, y * 40], props: i == 0 ? { value: 0 } : { op_type: 0, a: 1, b: 0.05 }, - type: i == 0 ? "max/plantarium/float" : "max/plantarium/math", + type: i == 0 ? 'max/plantarium/float' : 'max/plantarium/math' }); - graph.edges.push([i, 0, i + 1, i === amount - 1 ? "input" : "a",]); + graph.edges.push([i, 0, i + 1, i === amount - 1 ? 'input' : 'a']); } graph.nodes.push({ id: amount, position: [width * 30, (height - 1) * 40], - type: "max/plantarium/output", - props: {}, + type: 'max/plantarium/output', + props: {} }); return graph; - } diff --git a/app/src/lib/graph-templates/index.ts b/app/src/lib/graph-templates/index.ts index 678e385..8c69b52 100644 --- a/app/src/lib/graph-templates/index.ts +++ b/app/src/lib/graph-templates/index.ts @@ -1,8 +1,7 @@ -export { grid } from "./grid"; -export { tree } from "./tree"; -export { plant } from "./plant"; -export { default as lottaFaces } from "./lotta-faces.json"; -export { default as lottaNodes } from "./lotta-nodes.json"; -export { default as defaultPlant } from "./default.json" -export { default as lottaNodesAndFaces } from "./lotta-nodes-and-faces.json"; - +export { default as defaultPlant } from './default.json'; +export { grid } from './grid'; +export { default as lottaFaces } from './lotta-faces.json'; +export { default as lottaNodesAndFaces } from './lotta-nodes-and-faces.json'; +export { default as lottaNodes } from './lotta-nodes.json'; +export { plant } from './plant'; +export { tree } from './tree'; diff --git a/app/src/lib/graph-templates/lotta-faces.json b/app/src/lib/graph-templates/lotta-faces.json index 7ef1354..db13b55 100644 --- a/app/src/lib/graph-templates/lotta-faces.json +++ b/app/src/lib/graph-templates/lotta-faces.json @@ -1 +1,44 @@ -{"settings":{"resolution.circle":64,"resolution.curve":64,"randomSeed":false},"nodes":[{"id":9,"position":[260,0],"type":"max/plantarium/output","props":{}},{"id":18,"position":[185,0],"type":"max/plantarium/stem","props":{"amount":64,"length":12,"thickness":0.15}},{"id":19,"position":[210,0],"type":"max/plantarium/noise","props":{"scale":1.3,"strength":5.4}},{"id":20,"position":[235,0],"type":"max/plantarium/branch","props":{"length":0.8,"thickness":0.8,"amount":3}},{"id":21,"position":[160,0],"type":"max/plantarium/vec3","props":{"0":0.39,"1":0,"2":0.41}},{"id":22,"position":[130,0],"type":"max/plantarium/random","props":{"min":-2,"max":2}}],"edges":[[18,0,19,"plant"],[19,0,20,"plant"],[20,0,9,"input"],[21,0,18,"origin"],[22,0,21,"0"],[22,0,21,"2"]]} +{ + "settings": { "resolution.circle": 64, "resolution.curve": 64, "randomSeed": false }, + "nodes": [ + { "id": 9, "position": [260, 0], "type": "max/plantarium/output", "props": {} }, + { + "id": 18, + "position": [185, 0], + "type": "max/plantarium/stem", + "props": { "amount": 64, "length": 12, "thickness": 0.15 } + }, + { + "id": 19, + "position": [210, 0], + "type": "max/plantarium/noise", + "props": { "scale": 1.3, "strength": 5.4 } + }, + { + "id": 20, + "position": [235, 0], + "type": "max/plantarium/branch", + "props": { "length": 0.8, "thickness": 0.8, "amount": 3 } + }, + { + "id": 21, + "position": [160, 0], + "type": "max/plantarium/vec3", + "props": { "0": 0.39, "1": 0, "2": 0.41 } + }, + { + "id": 22, + "position": [130, 0], + "type": "max/plantarium/random", + "props": { "min": -2, "max": 2 } + } + ], + "edges": [ + [18, 0, 19, "plant"], + [19, 0, 20, "plant"], + [20, 0, 9, "input"], + [21, 0, 18, "origin"], + [22, 0, 21, "0"], + [22, 0, 21, "2"] + ] +} diff --git a/app/src/lib/graph-templates/lotta-nodes-and-faces.json b/app/src/lib/graph-templates/lotta-nodes-and-faces.json index e45595c..dde44e0 100644 --- a/app/src/lib/graph-templates/lotta-nodes-and-faces.json +++ b/app/src/lib/graph-templates/lotta-nodes-and-faces.json @@ -1 +1,1593 @@ -{"id":96544,"settings":{"resolution.circle":64,"resolution.curve":64,"randomSeed":false},"nodes":[{"id":0,"position":[0,0],"type":"max/plantarium/float","props":{"value":0}},{"id":1,"position":[30,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":2,"position":[60,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":3,"position":[90,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":4,"position":[120,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":5,"position":[150,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":6,"position":[180,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":7,"position":[210,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":8,"position":[240,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":9,"position":[270,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":10,"position":[300,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":11,"position":[330,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":12,"position":[360,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":13,"position":[390,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":14,"position":[420,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":15,"position":[0,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":16,"position":[30,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":17,"position":[60,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":18,"position":[90,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":19,"position":[120,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":20,"position":[150,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":21,"position":[180,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":22,"position":[210,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":23,"position":[240,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":24,"position":[270,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":25,"position":[300,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":26,"position":[330,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":27,"position":[360,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":28,"position":[390,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":29,"position":[420,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":30,"position":[0,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":31,"position":[30,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":32,"position":[60,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":33,"position":[90,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":34,"position":[120,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":35,"position":[150,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":36,"position":[180,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":37,"position":[210,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":38,"position":[240,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":39,"position":[270,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":40,"position":[300,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":41,"position":[330,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":42,"position":[360,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":43,"position":[390,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":44,"position":[420,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":45,"position":[0,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":46,"position":[30,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":47,"position":[60,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":48,"position":[90,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":49,"position":[120,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":50,"position":[150,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":51,"position":[180,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":52,"position":[210,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":53,"position":[240,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":54,"position":[270,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":55,"position":[300,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":56,"position":[330,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":57,"position":[360,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":58,"position":[390,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":59,"position":[420,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":60,"position":[0,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":61,"position":[30,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":62,"position":[60,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":63,"position":[90,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":64,"position":[120,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":65,"position":[150,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":66,"position":[180,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":67,"position":[210,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":68,"position":[240,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":69,"position":[270,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":70,"position":[300,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":71,"position":[330,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":72,"position":[360,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":73,"position":[390,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":74,"position":[420,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":75,"position":[0,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":76,"position":[30,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":77,"position":[60,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":78,"position":[90,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":79,"position":[120,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":80,"position":[150,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":81,"position":[180,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":82,"position":[210,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":83,"position":[240,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":84,"position":[270,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":85,"position":[300,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":86,"position":[330,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":87,"position":[360,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":88,"position":[390,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":89,"position":[420,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":90,"position":[0,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":91,"position":[30,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":92,"position":[60,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":93,"position":[90,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":94,"position":[120,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":95,"position":[150,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":96,"position":[180,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":97,"position":[210,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":98,"position":[240,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":99,"position":[270,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":100,"position":[300,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":101,"position":[330,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":102,"position":[360,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":103,"position":[390,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":104,"position":[420,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":105,"position":[0,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":106,"position":[30,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":107,"position":[60,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":108,"position":[90,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":109,"position":[120,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":110,"position":[150,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":111,"position":[180,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":112,"position":[210,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":113,"position":[240,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":114,"position":[270,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":115,"position":[300,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":116,"position":[330,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":117,"position":[360,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":118,"position":[390,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":119,"position":[420,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":120,"position":[0,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":121,"position":[30,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":122,"position":[60,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":123,"position":[90,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":124,"position":[120,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":125,"position":[150,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":126,"position":[180,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":127,"position":[210,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":128,"position":[240,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":129,"position":[270,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":130,"position":[300,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":131,"position":[330,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":132,"position":[360,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":133,"position":[390,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":134,"position":[420,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":135,"position":[0,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":136,"position":[30,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":137,"position":[60,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":138,"position":[90,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":139,"position":[120,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":140,"position":[150,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":141,"position":[180,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":142,"position":[210,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":143,"position":[240,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":144,"position":[270,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":145,"position":[300,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":146,"position":[330,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":147,"position":[360,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":148,"position":[390,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":149,"position":[420,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":150,"position":[0,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":151,"position":[30,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":152,"position":[60,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":153,"position":[90,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":154,"position":[120,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":155,"position":[150,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":156,"position":[180,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":157,"position":[210,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":158,"position":[240,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":159,"position":[270,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":160,"position":[300,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":161,"position":[330,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":162,"position":[360,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":163,"position":[390,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":164,"position":[420,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":165,"position":[0,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":166,"position":[30,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":167,"position":[60,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":168,"position":[90,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":169,"position":[120,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":170,"position":[150,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":171,"position":[180,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":172,"position":[210,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":173,"position":[240,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":174,"position":[270,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":175,"position":[300,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":176,"position":[330,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":177,"position":[360,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":178,"position":[390,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":179,"position":[420,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":180,"position":[0,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":181,"position":[30,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":182,"position":[60,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":183,"position":[90,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":184,"position":[120,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":185,"position":[150,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":186,"position":[180,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":187,"position":[210,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":188,"position":[240,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":189,"position":[270,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":190,"position":[300,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":191,"position":[330,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":192,"position":[360,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":193,"position":[390,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":194,"position":[420,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":195,"position":[0,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":196,"position":[30,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":197,"position":[60,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":198,"position":[90,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":199,"position":[120,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":200,"position":[150,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":201,"position":[180,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":202,"position":[210,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":203,"position":[240,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":204,"position":[270,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":205,"position":[300,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":206,"position":[330,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":207,"position":[360,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":208,"position":[390,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":209,"position":[420,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":210,"position":[0,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":211,"position":[30,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":212,"position":[60,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":213,"position":[90,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":214,"position":[120,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":215,"position":[150,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":216,"position":[180,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":217,"position":[210,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":218,"position":[240,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":219,"position":[270,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":220,"position":[300,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":221,"position":[330,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":222,"position":[360,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":223,"position":[390,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":224,"position":[420,560],"type":"max/plantarium/math","props":{"op_type":1,"a":1,"b":0.075}},{"id":225,"position":[512.5,555],"type":"max/plantarium/output","props":{}},{"id":226,"position":[455,560],"type":"max/plantarium/stem","props":{"amount":126,"length":5,"thickness":1}},{"id":227,"position":[485,560],"type":"max/plantarium/noise","props":{"scale":3.3,"strength":5.3}}],"edges":[[0,0,1,"a"],[1,0,2,"a"],[2,0,3,"a"],[3,0,4,"a"],[4,0,5,"a"],[5,0,6,"a"],[6,0,7,"a"],[7,0,8,"a"],[8,0,9,"a"],[9,0,10,"a"],[10,0,11,"a"],[11,0,12,"a"],[12,0,13,"a"],[13,0,14,"a"],[14,0,15,"a"],[15,0,16,"a"],[16,0,17,"a"],[17,0,18,"a"],[18,0,19,"a"],[19,0,20,"a"],[20,0,21,"a"],[21,0,22,"a"],[22,0,23,"a"],[23,0,24,"a"],[24,0,25,"a"],[25,0,26,"a"],[26,0,27,"a"],[27,0,28,"a"],[28,0,29,"a"],[29,0,30,"a"],[30,0,31,"a"],[31,0,32,"a"],[32,0,33,"a"],[33,0,34,"a"],[34,0,35,"a"],[35,0,36,"a"],[36,0,37,"a"],[37,0,38,"a"],[38,0,39,"a"],[39,0,40,"a"],[40,0,41,"a"],[41,0,42,"a"],[42,0,43,"a"],[43,0,44,"a"],[44,0,45,"a"],[45,0,46,"a"],[46,0,47,"a"],[47,0,48,"a"],[48,0,49,"a"],[49,0,50,"a"],[50,0,51,"a"],[51,0,52,"a"],[52,0,53,"a"],[53,0,54,"a"],[54,0,55,"a"],[55,0,56,"a"],[56,0,57,"a"],[57,0,58,"a"],[58,0,59,"a"],[59,0,60,"a"],[60,0,61,"a"],[61,0,62,"a"],[62,0,63,"a"],[63,0,64,"a"],[64,0,65,"a"],[65,0,66,"a"],[66,0,67,"a"],[67,0,68,"a"],[68,0,69,"a"],[69,0,70,"a"],[70,0,71,"a"],[71,0,72,"a"],[72,0,73,"a"],[73,0,74,"a"],[74,0,75,"a"],[75,0,76,"a"],[76,0,77,"a"],[77,0,78,"a"],[78,0,79,"a"],[79,0,80,"a"],[80,0,81,"a"],[81,0,82,"a"],[82,0,83,"a"],[83,0,84,"a"],[84,0,85,"a"],[85,0,86,"a"],[86,0,87,"a"],[87,0,88,"a"],[88,0,89,"a"],[89,0,90,"a"],[90,0,91,"a"],[91,0,92,"a"],[92,0,93,"a"],[93,0,94,"a"],[94,0,95,"a"],[95,0,96,"a"],[96,0,97,"a"],[97,0,98,"a"],[98,0,99,"a"],[99,0,100,"a"],[100,0,101,"a"],[101,0,102,"a"],[102,0,103,"a"],[103,0,104,"a"],[104,0,105,"a"],[105,0,106,"a"],[106,0,107,"a"],[107,0,108,"a"],[108,0,109,"a"],[109,0,110,"a"],[110,0,111,"a"],[111,0,112,"a"],[112,0,113,"a"],[113,0,114,"a"],[114,0,115,"a"],[115,0,116,"a"],[116,0,117,"a"],[117,0,118,"a"],[118,0,119,"a"],[119,0,120,"a"],[120,0,121,"a"],[121,0,122,"a"],[122,0,123,"a"],[123,0,124,"a"],[124,0,125,"a"],[125,0,126,"a"],[126,0,127,"a"],[127,0,128,"a"],[128,0,129,"a"],[129,0,130,"a"],[130,0,131,"a"],[131,0,132,"a"],[132,0,133,"a"],[133,0,134,"a"],[134,0,135,"a"],[135,0,136,"a"],[136,0,137,"a"],[137,0,138,"a"],[138,0,139,"a"],[139,0,140,"a"],[140,0,141,"a"],[141,0,142,"a"],[142,0,143,"a"],[143,0,144,"a"],[144,0,145,"a"],[145,0,146,"a"],[146,0,147,"a"],[147,0,148,"a"],[148,0,149,"a"],[149,0,150,"a"],[150,0,151,"a"],[151,0,152,"a"],[152,0,153,"a"],[153,0,154,"a"],[154,0,155,"a"],[155,0,156,"a"],[156,0,157,"a"],[157,0,158,"a"],[158,0,159,"a"],[159,0,160,"a"],[160,0,161,"a"],[161,0,162,"a"],[162,0,163,"a"],[163,0,164,"a"],[164,0,165,"a"],[165,0,166,"a"],[166,0,167,"a"],[167,0,168,"a"],[168,0,169,"a"],[169,0,170,"a"],[170,0,171,"a"],[171,0,172,"a"],[172,0,173,"a"],[173,0,174,"a"],[174,0,175,"a"],[175,0,176,"a"],[176,0,177,"a"],[177,0,178,"a"],[178,0,179,"a"],[179,0,180,"a"],[180,0,181,"a"],[181,0,182,"a"],[182,0,183,"a"],[183,0,184,"a"],[184,0,185,"a"],[185,0,186,"a"],[186,0,187,"a"],[187,0,188,"a"],[188,0,189,"a"],[189,0,190,"a"],[190,0,191,"a"],[191,0,192,"a"],[192,0,193,"a"],[193,0,194,"a"],[194,0,195,"a"],[195,0,196,"a"],[196,0,197,"a"],[197,0,198,"a"],[198,0,199,"a"],[199,0,200,"a"],[200,0,201,"a"],[201,0,202,"a"],[202,0,203,"a"],[203,0,204,"a"],[204,0,205,"a"],[205,0,206,"a"],[206,0,207,"a"],[207,0,208,"a"],[208,0,209,"a"],[209,0,210,"a"],[210,0,211,"a"],[211,0,212,"a"],[212,0,213,"a"],[213,0,214,"a"],[214,0,215,"a"],[215,0,216,"a"],[216,0,217,"a"],[217,0,218,"a"],[218,0,219,"a"],[219,0,220,"a"],[220,0,221,"a"],[221,0,222,"a"],[222,0,223,"a"],[223,0,224,"a"],[224,0,226,"length"],[226,0,227,"plant"],[227,0,225,"input"]]} +{ + "id": 96544, + "settings": { "resolution.circle": 64, "resolution.curve": 64, "randomSeed": false }, + "nodes": [ + { "id": 0, "position": [0, 0], "type": "max/plantarium/float", "props": { "value": 0 } }, + { + "id": 1, + "position": [30, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 2, + "position": [60, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 3, + "position": [90, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 4, + "position": [120, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 5, + "position": [150, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 6, + "position": [180, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 7, + "position": [210, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 8, + "position": [240, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 9, + "position": [270, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 10, + "position": [300, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 11, + "position": [330, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 12, + "position": [360, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 13, + "position": [390, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 14, + "position": [420, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 15, + "position": [0, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 16, + "position": [30, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 17, + "position": [60, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 18, + "position": [90, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 19, + "position": [120, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 20, + "position": [150, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 21, + "position": [180, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 22, + "position": [210, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 23, + "position": [240, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 24, + "position": [270, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 25, + "position": [300, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 26, + "position": [330, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 27, + "position": [360, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 28, + "position": [390, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 29, + "position": [420, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 30, + "position": [0, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 31, + "position": [30, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 32, + "position": [60, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 33, + "position": [90, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 34, + "position": [120, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 35, + "position": [150, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 36, + "position": [180, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 37, + "position": [210, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 38, + "position": [240, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 39, + "position": [270, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 40, + "position": [300, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 41, + "position": [330, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 42, + "position": [360, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 43, + "position": [390, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 44, + "position": [420, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 45, + "position": [0, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 46, + "position": [30, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 47, + "position": [60, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 48, + "position": [90, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 49, + "position": [120, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 50, + "position": [150, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 51, + "position": [180, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 52, + "position": [210, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 53, + "position": [240, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 54, + "position": [270, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 55, + "position": [300, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 56, + "position": [330, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 57, + "position": [360, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 58, + "position": [390, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 59, + "position": [420, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 60, + "position": [0, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 61, + "position": [30, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 62, + "position": [60, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 63, + "position": [90, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 64, + "position": [120, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 65, + "position": [150, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 66, + "position": [180, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 67, + "position": [210, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 68, + "position": [240, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 69, + "position": [270, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 70, + "position": [300, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 71, + "position": [330, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 72, + "position": [360, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 73, + "position": [390, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 74, + "position": [420, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 75, + "position": [0, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 76, + "position": [30, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 77, + "position": [60, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 78, + "position": [90, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 79, + "position": [120, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 80, + "position": [150, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 81, + "position": [180, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 82, + "position": [210, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 83, + "position": [240, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 84, + "position": [270, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 85, + "position": [300, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 86, + "position": [330, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 87, + "position": [360, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 88, + "position": [390, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 89, + "position": [420, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 90, + "position": [0, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 91, + "position": [30, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 92, + "position": [60, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 93, + "position": [90, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 94, + "position": [120, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 95, + "position": [150, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 96, + "position": [180, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 97, + "position": [210, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 98, + "position": [240, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 99, + "position": [270, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 100, + "position": [300, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 101, + "position": [330, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 102, + "position": [360, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 103, + "position": [390, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 104, + "position": [420, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 105, + "position": [0, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 106, + "position": [30, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 107, + "position": [60, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 108, + "position": [90, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 109, + "position": [120, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 110, + "position": [150, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 111, + "position": [180, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 112, + "position": [210, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 113, + "position": [240, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 114, + "position": [270, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 115, + "position": [300, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 116, + "position": [330, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 117, + "position": [360, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 118, + "position": [390, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 119, + "position": [420, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 120, + "position": [0, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 121, + "position": [30, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 122, + "position": [60, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 123, + "position": [90, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 124, + "position": [120, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 125, + "position": [150, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 126, + "position": [180, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 127, + "position": [210, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 128, + "position": [240, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 129, + "position": [270, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 130, + "position": [300, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 131, + "position": [330, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 132, + "position": [360, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 133, + "position": [390, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 134, + "position": [420, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 135, + "position": [0, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 136, + "position": [30, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 137, + "position": [60, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 138, + "position": [90, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 139, + "position": [120, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 140, + "position": [150, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 141, + "position": [180, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 142, + "position": [210, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 143, + "position": [240, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 144, + "position": [270, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 145, + "position": [300, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 146, + "position": [330, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 147, + "position": [360, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 148, + "position": [390, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 149, + "position": [420, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 150, + "position": [0, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 151, + "position": [30, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 152, + "position": [60, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 153, + "position": [90, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 154, + "position": [120, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 155, + "position": [150, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 156, + "position": [180, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 157, + "position": [210, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 158, + "position": [240, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 159, + "position": [270, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 160, + "position": [300, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 161, + "position": [330, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 162, + "position": [360, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 163, + "position": [390, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 164, + "position": [420, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 165, + "position": [0, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 166, + "position": [30, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 167, + "position": [60, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 168, + "position": [90, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 169, + "position": [120, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 170, + "position": [150, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 171, + "position": [180, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 172, + "position": [210, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 173, + "position": [240, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 174, + "position": [270, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 175, + "position": [300, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 176, + "position": [330, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 177, + "position": [360, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 178, + "position": [390, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 179, + "position": [420, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 180, + "position": [0, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 181, + "position": [30, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 182, + "position": [60, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 183, + "position": [90, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 184, + "position": [120, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 185, + "position": [150, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 186, + "position": [180, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 187, + "position": [210, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 188, + "position": [240, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 189, + "position": [270, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 190, + "position": [300, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 191, + "position": [330, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 192, + "position": [360, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 193, + "position": [390, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 194, + "position": [420, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 195, + "position": [0, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 196, + "position": [30, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 197, + "position": [60, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 198, + "position": [90, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 199, + "position": [120, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 200, + "position": [150, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 201, + "position": [180, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 202, + "position": [210, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 203, + "position": [240, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 204, + "position": [270, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 205, + "position": [300, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 206, + "position": [330, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 207, + "position": [360, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 208, + "position": [390, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 209, + "position": [420, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 210, + "position": [0, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 211, + "position": [30, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 212, + "position": [60, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 213, + "position": [90, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 214, + "position": [120, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 215, + "position": [150, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 216, + "position": [180, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 217, + "position": [210, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 218, + "position": [240, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 219, + "position": [270, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 220, + "position": [300, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 221, + "position": [330, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 222, + "position": [360, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 223, + "position": [390, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 224, + "position": [420, 560], + "type": "max/plantarium/math", + "props": { "op_type": 1, "a": 1, "b": 0.075 } + }, + { "id": 225, "position": [512.5, 555], "type": "max/plantarium/output", "props": {} }, + { + "id": 226, + "position": [455, 560], + "type": "max/plantarium/stem", + "props": { "amount": 126, "length": 5, "thickness": 1 } + }, + { + "id": 227, + "position": [485, 560], + "type": "max/plantarium/noise", + "props": { "scale": 3.3, "strength": 5.3 } + } + ], + "edges": [ + [0, 0, 1, "a"], + [1, 0, 2, "a"], + [2, 0, 3, "a"], + [3, 0, 4, "a"], + [4, 0, 5, "a"], + [5, 0, 6, "a"], + [6, 0, 7, "a"], + [7, 0, 8, "a"], + [8, 0, 9, "a"], + [9, 0, 10, "a"], + [10, 0, 11, "a"], + [11, 0, 12, "a"], + [12, 0, 13, "a"], + [13, 0, 14, "a"], + [14, 0, 15, "a"], + [15, 0, 16, "a"], + [16, 0, 17, "a"], + [17, 0, 18, "a"], + [18, 0, 19, "a"], + [19, 0, 20, "a"], + [20, 0, 21, "a"], + [21, 0, 22, "a"], + [22, 0, 23, "a"], + [23, 0, 24, "a"], + [24, 0, 25, "a"], + [25, 0, 26, "a"], + [26, 0, 27, "a"], + [27, 0, 28, "a"], + [28, 0, 29, "a"], + [29, 0, 30, "a"], + [30, 0, 31, "a"], + [31, 0, 32, "a"], + [32, 0, 33, "a"], + [33, 0, 34, "a"], + [34, 0, 35, "a"], + [35, 0, 36, "a"], + [36, 0, 37, "a"], + [37, 0, 38, "a"], + [38, 0, 39, "a"], + [39, 0, 40, "a"], + [40, 0, 41, "a"], + [41, 0, 42, "a"], + [42, 0, 43, "a"], + [43, 0, 44, "a"], + [44, 0, 45, "a"], + [45, 0, 46, "a"], + [46, 0, 47, "a"], + [47, 0, 48, "a"], + [48, 0, 49, "a"], + [49, 0, 50, "a"], + [50, 0, 51, "a"], + [51, 0, 52, "a"], + [52, 0, 53, "a"], + [53, 0, 54, "a"], + [54, 0, 55, "a"], + [55, 0, 56, "a"], + [56, 0, 57, "a"], + [57, 0, 58, "a"], + [58, 0, 59, "a"], + [59, 0, 60, "a"], + [60, 0, 61, "a"], + [61, 0, 62, "a"], + [62, 0, 63, "a"], + [63, 0, 64, "a"], + [64, 0, 65, "a"], + [65, 0, 66, "a"], + [66, 0, 67, "a"], + [67, 0, 68, "a"], + [68, 0, 69, "a"], + [69, 0, 70, "a"], + [70, 0, 71, "a"], + [71, 0, 72, "a"], + [72, 0, 73, "a"], + [73, 0, 74, "a"], + [74, 0, 75, "a"], + [75, 0, 76, "a"], + [76, 0, 77, "a"], + [77, 0, 78, "a"], + [78, 0, 79, "a"], + [79, 0, 80, "a"], + [80, 0, 81, "a"], + [81, 0, 82, "a"], + [82, 0, 83, "a"], + [83, 0, 84, "a"], + [84, 0, 85, "a"], + [85, 0, 86, "a"], + [86, 0, 87, "a"], + [87, 0, 88, "a"], + [88, 0, 89, "a"], + [89, 0, 90, "a"], + [90, 0, 91, "a"], + [91, 0, 92, "a"], + [92, 0, 93, "a"], + [93, 0, 94, "a"], + [94, 0, 95, "a"], + [95, 0, 96, "a"], + [96, 0, 97, "a"], + [97, 0, 98, "a"], + [98, 0, 99, "a"], + [99, 0, 100, "a"], + [100, 0, 101, "a"], + [101, 0, 102, "a"], + [102, 0, 103, "a"], + [103, 0, 104, "a"], + [104, 0, 105, "a"], + [105, 0, 106, "a"], + [106, 0, 107, "a"], + [107, 0, 108, "a"], + [108, 0, 109, "a"], + [109, 0, 110, "a"], + [110, 0, 111, "a"], + [111, 0, 112, "a"], + [112, 0, 113, "a"], + [113, 0, 114, "a"], + [114, 0, 115, "a"], + [115, 0, 116, "a"], + [116, 0, 117, "a"], + [117, 0, 118, "a"], + [118, 0, 119, "a"], + [119, 0, 120, "a"], + [120, 0, 121, "a"], + [121, 0, 122, "a"], + [122, 0, 123, "a"], + [123, 0, 124, "a"], + [124, 0, 125, "a"], + [125, 0, 126, "a"], + [126, 0, 127, "a"], + [127, 0, 128, "a"], + [128, 0, 129, "a"], + [129, 0, 130, "a"], + [130, 0, 131, "a"], + [131, 0, 132, "a"], + [132, 0, 133, "a"], + [133, 0, 134, "a"], + [134, 0, 135, "a"], + [135, 0, 136, "a"], + [136, 0, 137, "a"], + [137, 0, 138, "a"], + [138, 0, 139, "a"], + [139, 0, 140, "a"], + [140, 0, 141, "a"], + [141, 0, 142, "a"], + [142, 0, 143, "a"], + [143, 0, 144, "a"], + [144, 0, 145, "a"], + [145, 0, 146, "a"], + [146, 0, 147, "a"], + [147, 0, 148, "a"], + [148, 0, 149, "a"], + [149, 0, 150, "a"], + [150, 0, 151, "a"], + [151, 0, 152, "a"], + [152, 0, 153, "a"], + [153, 0, 154, "a"], + [154, 0, 155, "a"], + [155, 0, 156, "a"], + [156, 0, 157, "a"], + [157, 0, 158, "a"], + [158, 0, 159, "a"], + [159, 0, 160, "a"], + [160, 0, 161, "a"], + [161, 0, 162, "a"], + [162, 0, 163, "a"], + [163, 0, 164, "a"], + [164, 0, 165, "a"], + [165, 0, 166, "a"], + [166, 0, 167, "a"], + [167, 0, 168, "a"], + [168, 0, 169, "a"], + [169, 0, 170, "a"], + [170, 0, 171, "a"], + [171, 0, 172, "a"], + [172, 0, 173, "a"], + [173, 0, 174, "a"], + [174, 0, 175, "a"], + [175, 0, 176, "a"], + [176, 0, 177, "a"], + [177, 0, 178, "a"], + [178, 0, 179, "a"], + [179, 0, 180, "a"], + [180, 0, 181, "a"], + [181, 0, 182, "a"], + [182, 0, 183, "a"], + [183, 0, 184, "a"], + [184, 0, 185, "a"], + [185, 0, 186, "a"], + [186, 0, 187, "a"], + [187, 0, 188, "a"], + [188, 0, 189, "a"], + [189, 0, 190, "a"], + [190, 0, 191, "a"], + [191, 0, 192, "a"], + [192, 0, 193, "a"], + [193, 0, 194, "a"], + [194, 0, 195, "a"], + [195, 0, 196, "a"], + [196, 0, 197, "a"], + [197, 0, 198, "a"], + [198, 0, 199, "a"], + [199, 0, 200, "a"], + [200, 0, 201, "a"], + [201, 0, 202, "a"], + [202, 0, 203, "a"], + [203, 0, 204, "a"], + [204, 0, 205, "a"], + [205, 0, 206, "a"], + [206, 0, 207, "a"], + [207, 0, 208, "a"], + [208, 0, 209, "a"], + [209, 0, 210, "a"], + [210, 0, 211, "a"], + [211, 0, 212, "a"], + [212, 0, 213, "a"], + [213, 0, 214, "a"], + [214, 0, 215, "a"], + [215, 0, 216, "a"], + [216, 0, 217, "a"], + [217, 0, 218, "a"], + [218, 0, 219, "a"], + [219, 0, 220, "a"], + [220, 0, 221, "a"], + [221, 0, 222, "a"], + [222, 0, 223, "a"], + [223, 0, 224, "a"], + [224, 0, 226, "length"], + [226, 0, 227, "plant"], + [227, 0, 225, "input"] + ] +} diff --git a/app/src/lib/graph-templates/lotta-nodes.json b/app/src/lib/graph-templates/lotta-nodes.json index 0b52538..a5c3288 100644 --- a/app/src/lib/graph-templates/lotta-nodes.json +++ b/app/src/lib/graph-templates/lotta-nodes.json @@ -1 +1,1600 @@ -{"id":96544,"settings":{"resolution.circle":32,"resolution.curve":32,"randomSeed":false},"nodes":[{"id":0,"position":[0,0],"type":"max/plantarium/float","props":{"value":0}},{"id":1,"position":[30,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":2,"position":[60,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":3,"position":[90,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":4,"position":[120,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":5,"position":[150,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":6,"position":[180,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":7,"position":[210,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":8,"position":[240,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":9,"position":[270,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":10,"position":[300,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":11,"position":[330,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":12,"position":[360,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":13,"position":[390,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":14,"position":[420,0],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":15,"position":[0,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":16,"position":[30,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":17,"position":[60,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":18,"position":[90,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":19,"position":[120,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":20,"position":[150,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":21,"position":[180,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":22,"position":[210,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":23,"position":[240,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":24,"position":[270,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":25,"position":[300,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":26,"position":[330,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":27,"position":[360,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":28,"position":[390,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":29,"position":[420,40],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":30,"position":[0,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":31,"position":[30,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":32,"position":[60,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":33,"position":[90,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":34,"position":[120,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":35,"position":[150,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":36,"position":[180,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":37,"position":[210,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":38,"position":[240,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":39,"position":[270,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":40,"position":[300,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":41,"position":[330,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":42,"position":[360,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":43,"position":[390,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":44,"position":[420,80],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":45,"position":[0,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":46,"position":[30,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":47,"position":[60,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":48,"position":[90,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":49,"position":[120,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":50,"position":[150,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":51,"position":[180,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":52,"position":[210,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":53,"position":[240,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":54,"position":[270,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":55,"position":[300,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":56,"position":[330,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":57,"position":[360,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":58,"position":[390,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":59,"position":[420,120],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":60,"position":[0,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":61,"position":[30,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":62,"position":[60,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":63,"position":[90,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":64,"position":[120,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":65,"position":[150,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":66,"position":[180,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":67,"position":[210,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":68,"position":[240,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":69,"position":[270,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":70,"position":[300,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":71,"position":[330,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":72,"position":[360,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":73,"position":[390,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":74,"position":[420,160],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":75,"position":[0,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":76,"position":[30,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":77,"position":[60,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":78,"position":[90,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":79,"position":[120,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":80,"position":[150,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":81,"position":[180,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":82,"position":[210,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":83,"position":[240,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":84,"position":[270,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":85,"position":[300,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":86,"position":[330,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":87,"position":[360,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":88,"position":[390,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":89,"position":[420,200],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":90,"position":[0,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":91,"position":[30,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":92,"position":[60,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":93,"position":[90,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":94,"position":[120,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":95,"position":[150,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":96,"position":[180,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":97,"position":[210,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":98,"position":[240,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":99,"position":[270,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":100,"position":[300,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":101,"position":[330,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":102,"position":[360,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":103,"position":[390,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":104,"position":[420,240],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":105,"position":[0,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":106,"position":[30,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":107,"position":[60,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":108,"position":[90,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":109,"position":[120,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":110,"position":[150,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":111,"position":[180,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":112,"position":[210,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":113,"position":[240,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":114,"position":[270,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":115,"position":[300,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":116,"position":[330,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":117,"position":[360,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":118,"position":[390,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":119,"position":[420,280],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":120,"position":[0,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":121,"position":[30,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":122,"position":[60,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":123,"position":[90,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":124,"position":[120,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":125,"position":[150,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":126,"position":[180,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":127,"position":[210,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":128,"position":[240,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":129,"position":[270,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":130,"position":[300,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":131,"position":[330,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":132,"position":[360,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":133,"position":[390,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":134,"position":[420,320],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":135,"position":[0,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":136,"position":[30,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":137,"position":[60,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":138,"position":[90,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":139,"position":[120,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":140,"position":[150,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":141,"position":[180,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":142,"position":[210,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":143,"position":[240,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":144,"position":[270,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":145,"position":[300,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":146,"position":[330,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":147,"position":[360,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":148,"position":[390,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":149,"position":[420,360],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":150,"position":[0,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":151,"position":[30,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":152,"position":[60,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":153,"position":[90,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":154,"position":[120,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":155,"position":[150,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":156,"position":[180,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":157,"position":[210,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":158,"position":[240,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":159,"position":[270,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":160,"position":[300,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":161,"position":[330,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":162,"position":[360,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":163,"position":[390,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":164,"position":[420,400],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":165,"position":[0,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":166,"position":[30,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":167,"position":[60,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":168,"position":[90,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":169,"position":[120,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":170,"position":[150,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":171,"position":[180,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":172,"position":[210,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":173,"position":[240,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":174,"position":[270,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":175,"position":[300,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":176,"position":[330,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":177,"position":[360,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":178,"position":[390,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":179,"position":[420,440],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":180,"position":[0,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":181,"position":[30,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":182,"position":[60,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":183,"position":[90,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":184,"position":[120,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":185,"position":[150,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":186,"position":[180,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":187,"position":[210,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":188,"position":[240,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":189,"position":[270,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":190,"position":[300,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":191,"position":[330,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":192,"position":[360,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":193,"position":[390,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":194,"position":[420,480],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":195,"position":[0,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":196,"position":[30,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":197,"position":[60,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":198,"position":[90,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":199,"position":[120,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":200,"position":[150,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":201,"position":[180,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":202,"position":[210,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":203,"position":[240,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":204,"position":[270,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":205,"position":[300,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":206,"position":[330,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":207,"position":[360,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":208,"position":[390,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":209,"position":[420,520],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":210,"position":[0,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":211,"position":[30,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":212,"position":[60,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":213,"position":[90,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":214,"position":[120,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":215,"position":[150,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":216,"position":[180,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":217,"position":[210,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":218,"position":[240,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":219,"position":[270,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":220,"position":[300,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":221,"position":[330,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":222,"position":[360,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":223,"position":[390,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.05}},{"id":224,"position":[420,560],"type":"max/plantarium/math","props":{"op_type":0,"a":1,"b":0.075}},{"id":225,"position":[510,560],"type":"max/plantarium/output","props":{}},{"id":226,"position":[450,560],"type":"max/plantarium/stem","props":{"amount":64,"length":5,"thickness":0.17}},{"id":227,"position":[480,560],"type":"max/plantarium/noise","props":{"scale":1.7,"strength":2.3,"fixBottom":1,"directionalStrength":[1,1,1],"depth":1,"octaves":5}}],"edges":[[0,0,1,"a"],[1,0,2,"a"],[2,0,3,"a"],[3,0,4,"a"],[4,0,5,"a"],[5,0,6,"a"],[6,0,7,"a"],[7,0,8,"a"],[8,0,9,"a"],[9,0,10,"a"],[10,0,11,"a"],[11,0,12,"a"],[12,0,13,"a"],[13,0,14,"a"],[14,0,15,"a"],[15,0,16,"a"],[16,0,17,"a"],[17,0,18,"a"],[18,0,19,"a"],[19,0,20,"a"],[20,0,21,"a"],[21,0,22,"a"],[22,0,23,"a"],[23,0,24,"a"],[24,0,25,"a"],[25,0,26,"a"],[26,0,27,"a"],[27,0,28,"a"],[28,0,29,"a"],[29,0,30,"a"],[30,0,31,"a"],[31,0,32,"a"],[32,0,33,"a"],[33,0,34,"a"],[34,0,35,"a"],[35,0,36,"a"],[36,0,37,"a"],[37,0,38,"a"],[38,0,39,"a"],[39,0,40,"a"],[40,0,41,"a"],[41,0,42,"a"],[42,0,43,"a"],[43,0,44,"a"],[44,0,45,"a"],[45,0,46,"a"],[46,0,47,"a"],[47,0,48,"a"],[48,0,49,"a"],[49,0,50,"a"],[50,0,51,"a"],[51,0,52,"a"],[52,0,53,"a"],[53,0,54,"a"],[54,0,55,"a"],[55,0,56,"a"],[56,0,57,"a"],[57,0,58,"a"],[58,0,59,"a"],[59,0,60,"a"],[60,0,61,"a"],[61,0,62,"a"],[62,0,63,"a"],[63,0,64,"a"],[64,0,65,"a"],[65,0,66,"a"],[66,0,67,"a"],[67,0,68,"a"],[68,0,69,"a"],[69,0,70,"a"],[70,0,71,"a"],[71,0,72,"a"],[72,0,73,"a"],[73,0,74,"a"],[74,0,75,"a"],[75,0,76,"a"],[76,0,77,"a"],[77,0,78,"a"],[78,0,79,"a"],[79,0,80,"a"],[80,0,81,"a"],[81,0,82,"a"],[82,0,83,"a"],[83,0,84,"a"],[84,0,85,"a"],[85,0,86,"a"],[86,0,87,"a"],[87,0,88,"a"],[88,0,89,"a"],[89,0,90,"a"],[90,0,91,"a"],[91,0,92,"a"],[92,0,93,"a"],[93,0,94,"a"],[94,0,95,"a"],[95,0,96,"a"],[96,0,97,"a"],[97,0,98,"a"],[98,0,99,"a"],[99,0,100,"a"],[100,0,101,"a"],[101,0,102,"a"],[102,0,103,"a"],[103,0,104,"a"],[104,0,105,"a"],[105,0,106,"a"],[106,0,107,"a"],[107,0,108,"a"],[108,0,109,"a"],[109,0,110,"a"],[110,0,111,"a"],[111,0,112,"a"],[112,0,113,"a"],[113,0,114,"a"],[114,0,115,"a"],[115,0,116,"a"],[116,0,117,"a"],[117,0,118,"a"],[118,0,119,"a"],[119,0,120,"a"],[120,0,121,"a"],[121,0,122,"a"],[122,0,123,"a"],[123,0,124,"a"],[124,0,125,"a"],[125,0,126,"a"],[126,0,127,"a"],[127,0,128,"a"],[128,0,129,"a"],[129,0,130,"a"],[130,0,131,"a"],[131,0,132,"a"],[132,0,133,"a"],[133,0,134,"a"],[134,0,135,"a"],[135,0,136,"a"],[136,0,137,"a"],[137,0,138,"a"],[138,0,139,"a"],[139,0,140,"a"],[140,0,141,"a"],[141,0,142,"a"],[142,0,143,"a"],[143,0,144,"a"],[144,0,145,"a"],[145,0,146,"a"],[146,0,147,"a"],[147,0,148,"a"],[148,0,149,"a"],[149,0,150,"a"],[150,0,151,"a"],[151,0,152,"a"],[152,0,153,"a"],[153,0,154,"a"],[154,0,155,"a"],[155,0,156,"a"],[156,0,157,"a"],[157,0,158,"a"],[158,0,159,"a"],[159,0,160,"a"],[160,0,161,"a"],[161,0,162,"a"],[162,0,163,"a"],[163,0,164,"a"],[164,0,165,"a"],[165,0,166,"a"],[166,0,167,"a"],[167,0,168,"a"],[168,0,169,"a"],[169,0,170,"a"],[170,0,171,"a"],[171,0,172,"a"],[172,0,173,"a"],[173,0,174,"a"],[174,0,175,"a"],[175,0,176,"a"],[176,0,177,"a"],[177,0,178,"a"],[178,0,179,"a"],[179,0,180,"a"],[180,0,181,"a"],[181,0,182,"a"],[182,0,183,"a"],[183,0,184,"a"],[184,0,185,"a"],[185,0,186,"a"],[186,0,187,"a"],[187,0,188,"a"],[188,0,189,"a"],[189,0,190,"a"],[190,0,191,"a"],[191,0,192,"a"],[192,0,193,"a"],[193,0,194,"a"],[194,0,195,"a"],[195,0,196,"a"],[196,0,197,"a"],[197,0,198,"a"],[198,0,199,"a"],[199,0,200,"a"],[200,0,201,"a"],[201,0,202,"a"],[202,0,203,"a"],[203,0,204,"a"],[204,0,205,"a"],[205,0,206,"a"],[206,0,207,"a"],[207,0,208,"a"],[208,0,209,"a"],[209,0,210,"a"],[210,0,211,"a"],[211,0,212,"a"],[212,0,213,"a"],[213,0,214,"a"],[214,0,215,"a"],[215,0,216,"a"],[216,0,217,"a"],[217,0,218,"a"],[218,0,219,"a"],[219,0,220,"a"],[220,0,221,"a"],[221,0,222,"a"],[222,0,223,"a"],[223,0,224,"a"],[224,0,226,"length"],[226,0,227,"plant"],[227,0,225,"input"]]} +{ + "id": 96544, + "settings": { "resolution.circle": 32, "resolution.curve": 32, "randomSeed": false }, + "nodes": [ + { "id": 0, "position": [0, 0], "type": "max/plantarium/float", "props": { "value": 0 } }, + { + "id": 1, + "position": [30, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 2, + "position": [60, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 3, + "position": [90, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 4, + "position": [120, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 5, + "position": [150, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 6, + "position": [180, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 7, + "position": [210, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 8, + "position": [240, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 9, + "position": [270, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 10, + "position": [300, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 11, + "position": [330, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 12, + "position": [360, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 13, + "position": [390, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 14, + "position": [420, 0], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 15, + "position": [0, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 16, + "position": [30, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 17, + "position": [60, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 18, + "position": [90, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 19, + "position": [120, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 20, + "position": [150, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 21, + "position": [180, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 22, + "position": [210, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 23, + "position": [240, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 24, + "position": [270, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 25, + "position": [300, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 26, + "position": [330, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 27, + "position": [360, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 28, + "position": [390, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 29, + "position": [420, 40], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 30, + "position": [0, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 31, + "position": [30, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 32, + "position": [60, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 33, + "position": [90, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 34, + "position": [120, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 35, + "position": [150, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 36, + "position": [180, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 37, + "position": [210, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 38, + "position": [240, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 39, + "position": [270, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 40, + "position": [300, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 41, + "position": [330, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 42, + "position": [360, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 43, + "position": [390, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 44, + "position": [420, 80], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 45, + "position": [0, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 46, + "position": [30, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 47, + "position": [60, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 48, + "position": [90, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 49, + "position": [120, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 50, + "position": [150, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 51, + "position": [180, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 52, + "position": [210, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 53, + "position": [240, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 54, + "position": [270, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 55, + "position": [300, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 56, + "position": [330, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 57, + "position": [360, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 58, + "position": [390, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 59, + "position": [420, 120], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 60, + "position": [0, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 61, + "position": [30, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 62, + "position": [60, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 63, + "position": [90, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 64, + "position": [120, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 65, + "position": [150, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 66, + "position": [180, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 67, + "position": [210, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 68, + "position": [240, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 69, + "position": [270, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 70, + "position": [300, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 71, + "position": [330, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 72, + "position": [360, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 73, + "position": [390, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 74, + "position": [420, 160], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 75, + "position": [0, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 76, + "position": [30, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 77, + "position": [60, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 78, + "position": [90, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 79, + "position": [120, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 80, + "position": [150, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 81, + "position": [180, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 82, + "position": [210, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 83, + "position": [240, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 84, + "position": [270, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 85, + "position": [300, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 86, + "position": [330, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 87, + "position": [360, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 88, + "position": [390, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 89, + "position": [420, 200], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 90, + "position": [0, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 91, + "position": [30, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 92, + "position": [60, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 93, + "position": [90, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 94, + "position": [120, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 95, + "position": [150, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 96, + "position": [180, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 97, + "position": [210, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 98, + "position": [240, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 99, + "position": [270, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 100, + "position": [300, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 101, + "position": [330, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 102, + "position": [360, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 103, + "position": [390, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 104, + "position": [420, 240], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 105, + "position": [0, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 106, + "position": [30, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 107, + "position": [60, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 108, + "position": [90, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 109, + "position": [120, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 110, + "position": [150, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 111, + "position": [180, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 112, + "position": [210, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 113, + "position": [240, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 114, + "position": [270, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 115, + "position": [300, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 116, + "position": [330, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 117, + "position": [360, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 118, + "position": [390, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 119, + "position": [420, 280], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 120, + "position": [0, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 121, + "position": [30, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 122, + "position": [60, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 123, + "position": [90, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 124, + "position": [120, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 125, + "position": [150, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 126, + "position": [180, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 127, + "position": [210, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 128, + "position": [240, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 129, + "position": [270, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 130, + "position": [300, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 131, + "position": [330, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 132, + "position": [360, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 133, + "position": [390, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 134, + "position": [420, 320], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 135, + "position": [0, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 136, + "position": [30, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 137, + "position": [60, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 138, + "position": [90, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 139, + "position": [120, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 140, + "position": [150, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 141, + "position": [180, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 142, + "position": [210, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 143, + "position": [240, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 144, + "position": [270, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 145, + "position": [300, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 146, + "position": [330, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 147, + "position": [360, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 148, + "position": [390, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 149, + "position": [420, 360], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 150, + "position": [0, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 151, + "position": [30, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 152, + "position": [60, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 153, + "position": [90, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 154, + "position": [120, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 155, + "position": [150, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 156, + "position": [180, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 157, + "position": [210, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 158, + "position": [240, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 159, + "position": [270, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 160, + "position": [300, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 161, + "position": [330, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 162, + "position": [360, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 163, + "position": [390, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 164, + "position": [420, 400], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 165, + "position": [0, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 166, + "position": [30, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 167, + "position": [60, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 168, + "position": [90, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 169, + "position": [120, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 170, + "position": [150, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 171, + "position": [180, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 172, + "position": [210, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 173, + "position": [240, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 174, + "position": [270, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 175, + "position": [300, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 176, + "position": [330, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 177, + "position": [360, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 178, + "position": [390, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 179, + "position": [420, 440], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 180, + "position": [0, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 181, + "position": [30, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 182, + "position": [60, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 183, + "position": [90, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 184, + "position": [120, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 185, + "position": [150, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 186, + "position": [180, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 187, + "position": [210, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 188, + "position": [240, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 189, + "position": [270, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 190, + "position": [300, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 191, + "position": [330, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 192, + "position": [360, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 193, + "position": [390, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 194, + "position": [420, 480], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 195, + "position": [0, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 196, + "position": [30, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 197, + "position": [60, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 198, + "position": [90, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 199, + "position": [120, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 200, + "position": [150, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 201, + "position": [180, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 202, + "position": [210, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 203, + "position": [240, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 204, + "position": [270, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 205, + "position": [300, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 206, + "position": [330, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 207, + "position": [360, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 208, + "position": [390, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 209, + "position": [420, 520], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 210, + "position": [0, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 211, + "position": [30, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 212, + "position": [60, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 213, + "position": [90, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 214, + "position": [120, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 215, + "position": [150, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 216, + "position": [180, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 217, + "position": [210, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 218, + "position": [240, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 219, + "position": [270, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 220, + "position": [300, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 221, + "position": [330, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 222, + "position": [360, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 223, + "position": [390, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.05 } + }, + { + "id": 224, + "position": [420, 560], + "type": "max/plantarium/math", + "props": { "op_type": 0, "a": 1, "b": 0.075 } + }, + { "id": 225, "position": [510, 560], "type": "max/plantarium/output", "props": {} }, + { + "id": 226, + "position": [450, 560], + "type": "max/plantarium/stem", + "props": { "amount": 64, "length": 5, "thickness": 0.17 } + }, + { + "id": 227, + "position": [480, 560], + "type": "max/plantarium/noise", + "props": { + "scale": 1.7, + "strength": 2.3, + "fixBottom": 1, + "directionalStrength": [1, 1, 1], + "depth": 1, + "octaves": 5 + } + } + ], + "edges": [ + [0, 0, 1, "a"], + [1, 0, 2, "a"], + [2, 0, 3, "a"], + [3, 0, 4, "a"], + [4, 0, 5, "a"], + [5, 0, 6, "a"], + [6, 0, 7, "a"], + [7, 0, 8, "a"], + [8, 0, 9, "a"], + [9, 0, 10, "a"], + [10, 0, 11, "a"], + [11, 0, 12, "a"], + [12, 0, 13, "a"], + [13, 0, 14, "a"], + [14, 0, 15, "a"], + [15, 0, 16, "a"], + [16, 0, 17, "a"], + [17, 0, 18, "a"], + [18, 0, 19, "a"], + [19, 0, 20, "a"], + [20, 0, 21, "a"], + [21, 0, 22, "a"], + [22, 0, 23, "a"], + [23, 0, 24, "a"], + [24, 0, 25, "a"], + [25, 0, 26, "a"], + [26, 0, 27, "a"], + [27, 0, 28, "a"], + [28, 0, 29, "a"], + [29, 0, 30, "a"], + [30, 0, 31, "a"], + [31, 0, 32, "a"], + [32, 0, 33, "a"], + [33, 0, 34, "a"], + [34, 0, 35, "a"], + [35, 0, 36, "a"], + [36, 0, 37, "a"], + [37, 0, 38, "a"], + [38, 0, 39, "a"], + [39, 0, 40, "a"], + [40, 0, 41, "a"], + [41, 0, 42, "a"], + [42, 0, 43, "a"], + [43, 0, 44, "a"], + [44, 0, 45, "a"], + [45, 0, 46, "a"], + [46, 0, 47, "a"], + [47, 0, 48, "a"], + [48, 0, 49, "a"], + [49, 0, 50, "a"], + [50, 0, 51, "a"], + [51, 0, 52, "a"], + [52, 0, 53, "a"], + [53, 0, 54, "a"], + [54, 0, 55, "a"], + [55, 0, 56, "a"], + [56, 0, 57, "a"], + [57, 0, 58, "a"], + [58, 0, 59, "a"], + [59, 0, 60, "a"], + [60, 0, 61, "a"], + [61, 0, 62, "a"], + [62, 0, 63, "a"], + [63, 0, 64, "a"], + [64, 0, 65, "a"], + [65, 0, 66, "a"], + [66, 0, 67, "a"], + [67, 0, 68, "a"], + [68, 0, 69, "a"], + [69, 0, 70, "a"], + [70, 0, 71, "a"], + [71, 0, 72, "a"], + [72, 0, 73, "a"], + [73, 0, 74, "a"], + [74, 0, 75, "a"], + [75, 0, 76, "a"], + [76, 0, 77, "a"], + [77, 0, 78, "a"], + [78, 0, 79, "a"], + [79, 0, 80, "a"], + [80, 0, 81, "a"], + [81, 0, 82, "a"], + [82, 0, 83, "a"], + [83, 0, 84, "a"], + [84, 0, 85, "a"], + [85, 0, 86, "a"], + [86, 0, 87, "a"], + [87, 0, 88, "a"], + [88, 0, 89, "a"], + [89, 0, 90, "a"], + [90, 0, 91, "a"], + [91, 0, 92, "a"], + [92, 0, 93, "a"], + [93, 0, 94, "a"], + [94, 0, 95, "a"], + [95, 0, 96, "a"], + [96, 0, 97, "a"], + [97, 0, 98, "a"], + [98, 0, 99, "a"], + [99, 0, 100, "a"], + [100, 0, 101, "a"], + [101, 0, 102, "a"], + [102, 0, 103, "a"], + [103, 0, 104, "a"], + [104, 0, 105, "a"], + [105, 0, 106, "a"], + [106, 0, 107, "a"], + [107, 0, 108, "a"], + [108, 0, 109, "a"], + [109, 0, 110, "a"], + [110, 0, 111, "a"], + [111, 0, 112, "a"], + [112, 0, 113, "a"], + [113, 0, 114, "a"], + [114, 0, 115, "a"], + [115, 0, 116, "a"], + [116, 0, 117, "a"], + [117, 0, 118, "a"], + [118, 0, 119, "a"], + [119, 0, 120, "a"], + [120, 0, 121, "a"], + [121, 0, 122, "a"], + [122, 0, 123, "a"], + [123, 0, 124, "a"], + [124, 0, 125, "a"], + [125, 0, 126, "a"], + [126, 0, 127, "a"], + [127, 0, 128, "a"], + [128, 0, 129, "a"], + [129, 0, 130, "a"], + [130, 0, 131, "a"], + [131, 0, 132, "a"], + [132, 0, 133, "a"], + [133, 0, 134, "a"], + [134, 0, 135, "a"], + [135, 0, 136, "a"], + [136, 0, 137, "a"], + [137, 0, 138, "a"], + [138, 0, 139, "a"], + [139, 0, 140, "a"], + [140, 0, 141, "a"], + [141, 0, 142, "a"], + [142, 0, 143, "a"], + [143, 0, 144, "a"], + [144, 0, 145, "a"], + [145, 0, 146, "a"], + [146, 0, 147, "a"], + [147, 0, 148, "a"], + [148, 0, 149, "a"], + [149, 0, 150, "a"], + [150, 0, 151, "a"], + [151, 0, 152, "a"], + [152, 0, 153, "a"], + [153, 0, 154, "a"], + [154, 0, 155, "a"], + [155, 0, 156, "a"], + [156, 0, 157, "a"], + [157, 0, 158, "a"], + [158, 0, 159, "a"], + [159, 0, 160, "a"], + [160, 0, 161, "a"], + [161, 0, 162, "a"], + [162, 0, 163, "a"], + [163, 0, 164, "a"], + [164, 0, 165, "a"], + [165, 0, 166, "a"], + [166, 0, 167, "a"], + [167, 0, 168, "a"], + [168, 0, 169, "a"], + [169, 0, 170, "a"], + [170, 0, 171, "a"], + [171, 0, 172, "a"], + [172, 0, 173, "a"], + [173, 0, 174, "a"], + [174, 0, 175, "a"], + [175, 0, 176, "a"], + [176, 0, 177, "a"], + [177, 0, 178, "a"], + [178, 0, 179, "a"], + [179, 0, 180, "a"], + [180, 0, 181, "a"], + [181, 0, 182, "a"], + [182, 0, 183, "a"], + [183, 0, 184, "a"], + [184, 0, 185, "a"], + [185, 0, 186, "a"], + [186, 0, 187, "a"], + [187, 0, 188, "a"], + [188, 0, 189, "a"], + [189, 0, 190, "a"], + [190, 0, 191, "a"], + [191, 0, 192, "a"], + [192, 0, 193, "a"], + [193, 0, 194, "a"], + [194, 0, 195, "a"], + [195, 0, 196, "a"], + [196, 0, 197, "a"], + [197, 0, 198, "a"], + [198, 0, 199, "a"], + [199, 0, 200, "a"], + [200, 0, 201, "a"], + [201, 0, 202, "a"], + [202, 0, 203, "a"], + [203, 0, 204, "a"], + [204, 0, 205, "a"], + [205, 0, 206, "a"], + [206, 0, 207, "a"], + [207, 0, 208, "a"], + [208, 0, 209, "a"], + [209, 0, 210, "a"], + [210, 0, 211, "a"], + [211, 0, 212, "a"], + [212, 0, 213, "a"], + [213, 0, 214, "a"], + [214, 0, 215, "a"], + [215, 0, 216, "a"], + [216, 0, 217, "a"], + [217, 0, 218, "a"], + [218, 0, 219, "a"], + [219, 0, 220, "a"], + [220, 0, 221, "a"], + [221, 0, 222, "a"], + [222, 0, 223, "a"], + [223, 0, 224, "a"], + [224, 0, 226, "length"], + [226, 0, 227, "plant"], + [227, 0, 225, "input"] + ] +} diff --git a/app/src/lib/graph-templates/plant.ts b/app/src/lib/graph-templates/plant.ts index bf19244..6d263f0 100644 --- a/app/src/lib/graph-templates/plant.ts +++ b/app/src/lib/graph-templates/plant.ts @@ -1,12 +1,71 @@ export const plant = { - "settings": { "resolution.circle": 26, "resolution.curve": 39 }, - "nodes": [ - { "id": 9, "position": [180, 80], "type": "max/plantarium/output", "props": {} }, - { "id": 10, "position": [55, 80], "type": "max/plantarium/stem", "props": { "amount": 1, "length": 11, "thickness": 0.71 } }, - { "id": 11, "position": [80, 80], "type": "max/plantarium/noise", "props": { "strength": 35, "scale": 4.6, "fixBottom": 1, "directionalStrength": [1, 0.74, 0.083], "depth": 1 } }, - { "id": 12, "position": [105, 80], "type": "max/plantarium/branch", "props": { "length": 3, "thickness": 0.6, "amount": 10, "rotation": 180, "offsetSingle": 0.34, "lowestBranch": 0.53, "highestBranch": 1, "depth": 1 } }, - { "id": 13, "position": [130, 80], "type": "max/plantarium/noise", "props": { "strength": 8, "scale": 7.7, "fixBottom": 1, "directionalStrength": [1, 0, 1], "depth": 1 } }, - { "id": 14, "position": [155, 80], "type": "max/plantarium/gravity", "props": { "strength": 0.11, "scale": 39, "fixBottom": 0, "directionalStrength": [1, 1, 1], "depth": 1, "curviness": 1 } } + 'settings': { 'resolution.circle': 26, 'resolution.curve': 39 }, + 'nodes': [ + { 'id': 9, 'position': [180, 80], 'type': 'max/plantarium/output', 'props': {} }, + { + 'id': 10, + 'position': [55, 80], + 'type': 'max/plantarium/stem', + 'props': { 'amount': 1, 'length': 11, 'thickness': 0.71 } + }, + { + 'id': 11, + 'position': [80, 80], + 'type': 'max/plantarium/noise', + 'props': { + 'strength': 35, + 'scale': 4.6, + 'fixBottom': 1, + 'directionalStrength': [1, 0.74, 0.083], + 'depth': 1 + } + }, + { + 'id': 12, + 'position': [105, 80], + 'type': 'max/plantarium/branch', + 'props': { + 'length': 3, + 'thickness': 0.6, + 'amount': 10, + 'rotation': 180, + 'offsetSingle': 0.34, + 'lowestBranch': 0.53, + 'highestBranch': 1, + 'depth': 1 + } + }, + { + 'id': 13, + 'position': [130, 80], + 'type': 'max/plantarium/noise', + 'props': { + 'strength': 8, + 'scale': 7.7, + 'fixBottom': 1, + 'directionalStrength': [1, 0, 1], + 'depth': 1 + } + }, + { + 'id': 14, + 'position': [155, 80], + 'type': 'max/plantarium/gravity', + 'props': { + 'strength': 0.11, + 'scale': 39, + 'fixBottom': 0, + 'directionalStrength': [1, 1, 1], + 'depth': 1, + 'curviness': 1 + } + } ], - "edges": [[10, 0, 11, "plant"], [11, 0, 12, "plant"], [12, 0, 13, "plant"], [13, 0, 14, "plant"], [14, 0, 9, "input"]] -} + 'edges': [ + [10, 0, 11, 'plant'], + [11, 0, 12, 'plant'], + [12, 0, 13, 'plant'], + [13, 0, 14, 'plant'], + [14, 0, 9, 'input'] + ] +}; diff --git a/app/src/lib/graph-templates/tree.ts b/app/src/lib/graph-templates/tree.ts index cb808fa..e382a1c 100644 --- a/app/src/lib/graph-templates/tree.ts +++ b/app/src/lib/graph-templates/tree.ts @@ -1,28 +1,26 @@ -import type { Graph, SerializedNode } from "@nodarium/types"; +import type { Graph, SerializedNode } from '@nodarium/types'; export function tree(depth: number): Graph { - const nodes: SerializedNode[] = [ { id: 0, - type: "max/plantarium/output", + type: 'max/plantarium/output', position: [0, 0] }, { id: 1, - type: "max/plantarium/math", + type: 'max/plantarium/math', position: [-40, -10] } - ] + ]; const edges: [number, number, number, string][] = [ - [1, 0, 0, "input"] + [1, 0, 0, 'input'] ]; for (let d = 0; d < depth; d++) { const amount = Math.pow(2, d); for (let i = 0; i < amount; i++) { - const id0 = amount * 2 + i * 2; const id1 = amount * 2 + i * 2 + 1; @@ -33,24 +31,22 @@ export function tree(depth: number): Graph { nodes.push({ id: id0, - type: "max/plantarium/math", - position: [x, y], + type: 'max/plantarium/math', + position: [x, y] }); - edges.push([id0, 0, parent, "a"]); + edges.push([id0, 0, parent, 'a']); nodes.push({ id: id1, - type: "max/plantarium/math", - position: [x, y + 35], + type: 'max/plantarium/math', + position: [x, y + 35] }); - edges.push([id1, 0, parent, "b"]); + edges.push([id1, 0, parent, 'b']); } } - return { id: Math.floor(Math.random() * 100000), nodes, edges }; - } diff --git a/app/src/lib/grid/Cell.svelte b/app/src/lib/grid/Cell.svelte index b7ad472..49911fa 100644 --- a/app/src/lib/grid/Cell.svelte +++ b/app/src/lib/grid/Cell.svelte @@ -1,5 +1,5 @@ {@render children({ id })} diff --git a/app/src/lib/grid/Row.svelte b/app/src/lib/grid/Row.svelte index fc6f652..abddf25 100644 --- a/app/src/lib/grid/Row.svelte +++ b/app/src/lib/grid/Row.svelte @@ -1,26 +1,26 @@ diff --git a/app/src/lib/grid/index.ts b/app/src/lib/grid/index.ts index 77eb2f5..57e9622 100644 --- a/app/src/lib/grid/index.ts +++ b/app/src/lib/grid/index.ts @@ -1,6 +1,6 @@ -import { withSubComponents } from "$lib/helpers"; -import Grid from "./Grid.svelte"; -import Row from "./Row.svelte"; -import Cell from "./Cell.svelte"; +import { withSubComponents } from '$lib/helpers'; +import Cell from './Cell.svelte'; +import Grid from './Grid.svelte'; +import Row from './Row.svelte'; export default withSubComponents(Grid, { Row, Cell }); diff --git a/app/src/lib/helpers/createKeyMap.ts b/app/src/lib/helpers/createKeyMap.ts index 7330109..a298824 100644 --- a/app/src/lib/helpers/createKeyMap.ts +++ b/app/src/lib/helpers/createKeyMap.ts @@ -1,38 +1,39 @@ -import { derived, get, writable } from "svelte/store"; +import { derived, get, writable } from 'svelte/store'; -type Shortcut = { - key: string | string[], - shift?: boolean, - ctrl?: boolean, - alt?: boolean, - preventDefault?: boolean, - description?: string, - callback: (event: KeyboardEvent) => void +export type ShortCut = { + key: string | string[]; + shift?: boolean; + ctrl?: boolean; + alt?: boolean; + preventDefault?: boolean; + description?: string; + callback: (event: KeyboardEvent) => void; +}; + +function getShortcutId(shortcut: ShortCut) { + return `${shortcut.key}${shortcut.shift ? '+shift' : ''}${shortcut.ctrl ? '+ctrl' : ''}${ + shortcut.alt ? '+alt' : '' + }`; } -function getShortcutId(shortcut: Shortcut) { - return `${shortcut.key}${shortcut.shift ? "+shift" : ""}${shortcut.ctrl ? "+ctrl" : ""}${shortcut.alt ? "+alt" : ""}`; -} - -export function createKeyMap(keys: Shortcut[]) { - +export function createKeyMap(keys: ShortCut[]) { const store = writable(new Map(keys.map(k => [getShortcutId(k), k]))); return { handleKeyboardEvent: (event: KeyboardEvent) => { const activeElement = document.activeElement as HTMLElement; - if (activeElement?.tagName === "INPUT" || activeElement?.tagName === "TEXTAREA") return; + if (activeElement?.tagName === 'INPUT' || activeElement?.tagName === 'TEXTAREA') return; const key = [...get(store).values()].find(k => { if (Array.isArray(k.key) ? !k.key.includes(event.key) : k.key !== event.key) return false; - if ("shift" in k && k.shift !== event.shiftKey) return false; - if ("ctrl" in k && k.ctrl !== event.ctrlKey) return false; - if ("alt" in k && k.alt !== event.altKey) return false; + if ('shift' in k && k.shift !== event.shiftKey) return false; + if ('ctrl' in k && k.ctrl !== event.ctrlKey) return false; + if ('alt' in k && k.alt !== event.altKey) return false; return true; }); if (key && key.preventDefault) event.preventDefault(); key?.callback(event); }, - addShortcut: (shortcut: Shortcut) => { + addShortcut: (shortcut: ShortCut) => { if (Array.isArray(shortcut.key)) { for (const k of shortcut.key) { store.update(shortcuts => { @@ -52,6 +53,5 @@ export function createKeyMap(keys: Shortcut[]) { } }, keys: derived(store, $store => Array.from($store.values())) - } - + }; } diff --git a/app/src/lib/helpers/index.ts b/app/src/lib/helpers/index.ts index c014f5b..eb21275 100644 --- a/app/src/lib/helpers/index.ts +++ b/app/src/lib/helpers/index.ts @@ -18,7 +18,7 @@ export function animate(duration: number, callback: (progress: number) => void | } else { callback(1); } - } + }; requestAnimationFrame(loop); } @@ -30,10 +30,11 @@ export function createNodePath({ cornerBottom = 0, leftBump = false, rightBump = false, - aspectRatio = 1, + aspectRatio = 1 } = {}) { return `M0,${cornerTop} - ${cornerTop + ${ + cornerTop ? ` V${cornerTop} Q0,0 ${cornerTop * aspectRatio},0 H${100 - cornerTop * aspectRatio} @@ -42,40 +43,45 @@ export function createNodePath({ : ` V0 H100 ` - } + } V${y - height / 2} - ${rightBump + ${ + rightBump ? ` C${100 - depth},${y - height / 2} ${100 - depth},${y + height / 2} 100,${y + height / 2}` : ` H100` - } - ${cornerBottom + } + ${ + cornerBottom ? ` V${100 - cornerBottom} Q100,100 ${100 - cornerBottom * aspectRatio},100 H${cornerBottom * aspectRatio} Q0,100 0,${100 - cornerBottom} ` : `${leftBump ? `V100 H0` : `V100`}` - } - ${leftBump - ? ` V${y + height / 2} C${depth},${y + height / 2} ${depth},${y - height / 2} 0,${y - height / 2}` + } + ${ + leftBump + ? ` V${y + height / 2} C${depth},${y + height / 2} ${depth},${y - height / 2} 0,${ + y - height / 2 + }` : ` H0` - } - Z`.replace(/\s+/g, " "); + } + Z`.replace(/\s+/g, ' '); } -export const debounce = (fn: Function, ms = 300) => { +export const debounce = (fn: () => void, ms = 300) => { let timeoutId: ReturnType; - return function (this: any, ...args: any[]) { + return function(this: unknown, ...args: unknown[]) { clearTimeout(timeoutId); - timeoutId = setTimeout(() => fn.apply(this, args), ms); + timeoutId = setTimeout(() => fn.apply(this, args as []), ms); }; }; -export const clone: (v: T) => T = "structedClone" in globalThis ? globalThis.structuredClone : (obj) => JSON.parse(JSON.stringify(obj)); +export const clone: (v: T) => T = 'structedClone' in globalThis + ? globalThis.structuredClone + : (obj) => JSON.parse(JSON.stringify(obj)); - - -export function withSubComponents>( +export function withSubComponents>( component: A, subcomponents: B ): A & B { @@ -87,7 +93,7 @@ export function withSubComponents>( } export function humanizeNumber(number: number): string { - const suffixes = ["", "K", "M", "B", "T"]; + const suffixes = ['', 'K', 'M', 'B', 'T']; if (number < 1000) { return number.toString(); } @@ -104,11 +110,15 @@ export function humanizeDuration(durationInMilliseconds: number) { const millisecondsPerHour = 3600000; const millisecondsPerDay = 86400000; - let days = Math.floor(durationInMilliseconds / millisecondsPerDay); - let hours = Math.floor((durationInMilliseconds % millisecondsPerDay) / millisecondsPerHour); - let minutes = Math.floor((durationInMilliseconds % millisecondsPerHour) / millisecondsPerMinute); - let seconds = Math.floor((durationInMilliseconds % millisecondsPerMinute) / millisecondsPerSecond); - let millis = durationInMilliseconds % millisecondsPerSecond; + const days = Math.floor(durationInMilliseconds / millisecondsPerDay); + const hours = Math.floor((durationInMilliseconds % millisecondsPerDay) / millisecondsPerHour); + const minutes = Math.floor( + (durationInMilliseconds % millisecondsPerHour) / millisecondsPerMinute + ); + const seconds = Math.floor( + (durationInMilliseconds % millisecondsPerMinute) / millisecondsPerSecond + ); + const millis = durationInMilliseconds % millisecondsPerSecond; let durationString = ''; @@ -131,32 +141,10 @@ export function humanizeDuration(durationInMilliseconds: number) { return durationString.trim(); } -// export function debounceAsyncFunction( -// func: (...args: T) => Promise -// ): (...args: T) => Promise { -// let timeoutId: ReturnType | null = null; -// let lastPromise: Promise | null = null; -// let lastReject: ((reason?: any) => void) | null = null; -// -// return (...args: T): Promise => { -// if (timeoutId) { -// clearTimeout(timeoutId); -// if (lastReject) { -// lastReject(new Error("Debounced: Previous call was canceled.")); -// } -// } -// -// return new Promise((resolve, reject) => { -// lastReject = reject; -// timeoutId = setTimeout(() => { -// timeoutId = null; -// lastReject = null; -// lastPromise = func(...args).then(resolve, reject); -// }, 300); // Default debounce time is 300ms; you can make this configurable. -// }); -// }; -// } -export function debounceAsyncFunction Promise>(asyncFn: T): T { + +export function debounceAsyncFunction Promise>( + asyncFn: T +): T { let isRunning = false; let latestArgs: Parameters | null = null; let resolveNext: (() => void) | null = null; @@ -177,7 +165,7 @@ export function debounceAsyncFunction Promise try { // Execute with the latest arguments const result = await asyncFn(...latestArgs!); - return result; + return result as ReturnType; } finally { // Allow the next execution isRunning = false; @@ -190,48 +178,18 @@ export function debounceAsyncFunction Promise }) as T; } -// export function debounceAsyncFunction(func: (...args: T) => Promise): (...args: T) => Promise { -// let currentPromise: Promise | null = null; -// let nextArgs: T | null = null; -// let resolveNext: ((result: R) => void) | null = null; -// -// const debouncedFunction = async (...args: T): Promise => { -// if (currentPromise) { -// // Store the latest arguments and create a new promise to resolve them later -// nextArgs = args; -// return new Promise((resolve) => { -// resolveNext = resolve; -// }); -// } else { -// // Execute the function immediately -// try { -// currentPromise = func(...args); -// const result = await currentPromise; -// return result; -// } finally { -// currentPromise = null; -// // If there are stored arguments, call the function again with the latest arguments -// if (nextArgs) { -// const argsToUse = nextArgs; -// const resolver = resolveNext; -// nextArgs = null; -// resolveNext = null; -// resolver!(await debouncedFunction(...argsToUse)); -// } -// } -// } -// }; -// -// return debouncedFunction; -// } - -export function withArgsChangeOnly(func: (...args: T) => R): (...args: T) => R { +export function withArgsChangeOnly( + func: (...args: T) => R +): (...args: T) => R { let lastArgs: T | undefined = undefined; let lastResult: R; return (...args: T): R => { // Check if arguments are the same as last call - if (lastArgs && args.length === lastArgs.length && args.every((val, index) => val === lastArgs?.[index])) { + if ( + lastArgs && args.length === lastArgs.length + && args.every((val, index) => val === lastArgs?.[index]) + ) { return lastResult; // Return cached result if arguments haven't changed } @@ -241,4 +199,3 @@ export function withArgsChangeOnly(func: (...args: T) => R): return lastResult; // Return new result }; } - diff --git a/app/src/lib/helpers/localState.svelte.ts b/app/src/lib/helpers/localState.svelte.ts index 8e2332b..cb23dfb 100644 --- a/app/src/lib/helpers/localState.svelte.ts +++ b/app/src/lib/helpers/localState.svelte.ts @@ -1,8 +1,8 @@ -import { browser } from "$app/environment"; +import { browser } from '$app/environment'; export class LocalStore { value = $state() as T; - key = ""; + key = ''; constructor(key: string, value: T) { this.key = key; diff --git a/app/src/lib/helpers/localStore.ts b/app/src/lib/helpers/localStore.ts index 7b9e2ad..f44faf2 100644 --- a/app/src/lib/helpers/localStore.ts +++ b/app/src/lib/helpers/localStore.ts @@ -1,15 +1,14 @@ -import { writable, type Writable } from "svelte/store"; +import { type Writable, writable } from 'svelte/store'; function isStore(v: unknown): v is Writable { - return v !== null && typeof v === "object" && "subscribe" in v && "set" in v; + return v !== null && typeof v === 'object' && 'subscribe' in v && 'set' in v; } const storeIds: Map> = new Map(); -const HAS_LOCALSTORAGE = "localStorage" in globalThis; +const HAS_LOCALSTORAGE = 'localStorage' in globalThis; function createLocalStore(key: string, initialValue: T | Writable) { - let store: Writable; if (HAS_LOCALSTORAGE) { @@ -36,18 +35,15 @@ function createLocalStore(key: string, initialValue: T | Writable) { subscribe: store.subscribe, set: store.set, update: store.update - } + }; } - export default function localStore(key: string, initialValue: T | Writable): Writable { - if (storeIds.has(key)) return storeIds.get(key) as Writable; - const store = createLocalStore(key, initialValue) + const store = createLocalStore(key, initialValue); storeIds.set(key, store); - return store - + return store; } diff --git a/app/src/lib/helpers/throttle.ts b/app/src/lib/helpers/throttle.ts index f209c9e..8196e73 100644 --- a/app/src/lib/helpers/throttle.ts +++ b/app/src/lib/helpers/throttle.ts @@ -1,6 +1,6 @@ export default ( callback: (...args: T) => void, - delay: number, + delay: number ) => { let isWaiting = false; diff --git a/app/src/lib/icons/graph.svg b/app/src/lib/icons/graph.svg index 1e18d92..4d62e21 100644 --- a/app/src/lib/icons/graph.svg +++ b/app/src/lib/icons/graph.svg @@ -1,6 +1,10 @@ - - - - - + + + + + diff --git a/app/src/lib/node-registry.ts b/app/src/lib/node-registry.ts index b6d03e6..1cb14ad 100644 --- a/app/src/lib/node-registry.ts +++ b/app/src/lib/node-registry.ts @@ -8,6 +8,7 @@ export async function getWasm(id: `${string}/${string}/${string}`) { try { await fs.access(filePath); } catch (e) { + console.error(`Failed to read node: ${id}`, e); return null; } @@ -20,9 +21,11 @@ export async function getNodeWasm(id: `${string}/${string}/${string}`) { const wasmBytes = await getWasm(id); if (!wasmBytes) return null; - const wrapper = createWasmWrapper(wasmBytes); - - return wrapper; + try { + return createWasmWrapper(wasmBytes.buffer); + } catch (error) { + console.error(`Failed to create node wrapper for node: ${id}`, error); + } } export async function getNode(id: `${string}/${string}/${string}`) { diff --git a/app/src/lib/node-registry/index.ts b/app/src/lib/node-registry/index.ts new file mode 100644 index 0000000..09edf1d --- /dev/null +++ b/app/src/lib/node-registry/index.ts @@ -0,0 +1,2 @@ +export * from './node-registry-cache'; +export * from './node-registry-client'; diff --git a/packages/registry/src/node-registry-cache.ts b/app/src/lib/node-registry/node-registry-cache.ts similarity index 90% rename from packages/registry/src/node-registry-cache.ts rename to app/src/lib/node-registry/node-registry-cache.ts index 6a3bb89..9d96bc9 100644 --- a/packages/registry/src/node-registry-cache.ts +++ b/app/src/lib/node-registry/node-registry-cache.ts @@ -1,8 +1,7 @@ import type { AsyncCache } from '@nodarium/types'; -import { openDB, type IDBPDatabase } from 'idb'; +import { type IDBPDatabase, openDB } from 'idb'; export class IndexDBCache implements AsyncCache { - size: number = 100; db: Promise>; @@ -12,7 +11,7 @@ export class IndexDBCache implements AsyncCache { this.db = openDB('cache/' + id, 1, { upgrade(db) { db.createObjectStore('keyval'); - }, + } }); } @@ -33,16 +32,16 @@ export class IndexDBCache implements AsyncCache { if (res instanceof ArrayBuffer) { return res; } - return + return; } async getString(key: string) { const res = await this.get(key); if (!res) return; - if (typeof res === "string") { + if (typeof res === 'string') { return res; } - return + return; } async set(key: string, value: unknown) { @@ -54,5 +53,4 @@ export class IndexDBCache implements AsyncCache { clear() { this.db.then(db => db.clear('keyval')); } - } diff --git a/packages/registry/src/node-registry-client.ts b/app/src/lib/node-registry/node-registry-client.ts similarity index 85% rename from packages/registry/src/node-registry-client.ts rename to app/src/lib/node-registry/node-registry-client.ts index a316f86..c8c7601 100644 --- a/packages/registry/src/node-registry-client.ts +++ b/app/src/lib/node-registry/node-registry-client.ts @@ -16,7 +16,7 @@ export class RemoteNodeRegistry implements NodeRegistry { constructor( private url: string, public cache?: AsyncCache - ) { } + ) {} async fetchJson(url: string, skipCache = false) { const finalUrl = `${this.url}/${url}`; @@ -105,7 +105,7 @@ export class RemoteNodeRegistry implements NodeRegistry { const wasmBuffer = await this.fetchNodeWasm(id); try { - return await this.register(wasmBuffer); + return await this.register(id, wasmBuffer); } catch (e) { console.log('Failed to register: ', id); console.error(e); @@ -125,20 +125,30 @@ export class RemoteNodeRegistry implements NodeRegistry { return nodes; } - async register(wasmBuffer: ArrayBuffer) { - const wrapper = createWasmWrapper(wasmBuffer); + async register(id: string, wasmBuffer: ArrayBuffer) { + let wrapper: ReturnType = null!; + try { + wrapper = createWasmWrapper(wasmBuffer); + } catch (error) { + console.error(`Failed to create node wrapper for node: ${id}`, error); + } - const definition = NodeDefinitionSchema.safeParse(wrapper.get_definition()); + const rawDefinition = wrapper.get_definition(); + const definition = NodeDefinitionSchema.safeParse(rawDefinition); if (definition.error) { - throw definition.error; + throw new Error( + 'Failed to parse node definition from node:+\n' + JSON.stringify(rawDefinition, null, 2) + + '\n' + + definition.error + ); } if (this.cache) { this.cache.set(definition.data.id, wasmBuffer); } - let node = { + const node = { ...definition.data, execute: wrapper.execute }; diff --git a/app/src/lib/node-store/BreadCrumbs.svelte b/app/src/lib/node-store/BreadCrumbs.svelte index e44ba63..c1a639e 100644 --- a/app/src/lib/node-store/BreadCrumbs.svelte +++ b/app/src/lib/node-store/BreadCrumbs.svelte @@ -1,16 +1,16 @@ diff --git a/app/src/lib/node-store/DraggableNode.svelte b/app/src/lib/node-store/DraggableNode.svelte index 77d9406..797472d 100644 --- a/app/src/lib/node-store/DraggableNode.svelte +++ b/app/src/lib/node-store/DraggableNode.svelte @@ -1,39 +1,44 @@
@@ -46,7 +51,7 @@ tabindex="0" ondragstart={handleDragStart} > - +
diff --git a/app/src/lib/node-store/NodeStore.svelte b/app/src/lib/node-store/NodeStore.svelte index 7423b95..0dfc86d 100644 --- a/app/src/lib/node-store/NodeStore.svelte +++ b/app/src/lib/node-store/NodeStore.svelte @@ -1,15 +1,15 @@ @@ -22,12 +22,14 @@ {#await registry.fetchUsers()}
Loading Users...
{:then users} - {#each users as user} + {#each users as user (user.id)} + {user.id} + {/each} {:catch error}
{error.message}
@@ -36,7 +38,7 @@ {#await registry.fetchUser(activeUser)}
Loading User...
{:then user} - {#each user.collections as collection} + {#each user.collections as collection (collection)} {:else} - {#if type[key].label !== ""} - + {#if inputType.label !== ''} + {/if} - + {/if} {:else if depth === 0} - {#each Object.keys(type ?? {}).filter((k) => k !== "title") as childKey} + {#each Object.keys(type ?? {}).filter((k) => k !== 'title') as childKey (childKey)}

{(type[key] as SettingsGroup).title || key}

- {#each Object.keys(type[key] as SettingsGroup).filter((k) => k !== "title") as childKey} + {#each Object.keys(type[key] as SettingsGroup).filter((k) => k !== 'title') as childKey (childKey)} = - T extends { value: infer V } - ? V extends readonly string[] - ? V[number] - : V - : T extends any[] - ? {} - : T extends object - ? { - [K in keyof T as T[K] extends object ? K : never]: - SettingsToStore - } +type SettingsToStore = T extends { type: 'button' } ? () => void + : T extends { value: infer V } ? V extends readonly string[] ? V[number] + : V + : T extends object ? { + -readonly [K in keyof T as T[K] extends object ? K : never]: SettingsToStore; + } : never; export function settingsToStore(settings: T): SettingsToStore { - const result = {} as any; + const result = {} as Record; for (const key in settings) { const value = settings[key]; - if (value && typeof value === "object") { - if ("value" in value) { + if (value && typeof value === 'object') { + if ('value' in value) { result[key] = value.value; } else { result[key] = settingsToStore(value); } } } - return result; + return result as SettingsToStore; } -export let appSettings = localState( - "app-settings", - settingsToStore(AppSettingTypes), +export const appSettings = localState( + 'app-settings', + settingsToStore(AppSettingTypes) ); $effect.root(() => { @@ -173,7 +167,7 @@ $effect.root(() => { const newClassName = `theme-${theme}`; if (classes) { for (const className of classes) { - if (className.startsWith("theme-") && className !== newClassName) { + if (className.startsWith('theme-') && className !== newClassName) { classes.remove(className); } } diff --git a/app/src/lib/settings/index.ts b/app/src/lib/settings/index.ts index de63da4..c7674f0 100644 --- a/app/src/lib/settings/index.ts +++ b/app/src/lib/settings/index.ts @@ -1,6 +1,6 @@ -import type { NodeInput } from "@nodarium/types"; +import type { NodeInput } from '@nodarium/types'; -type Button = { type: "button"; label?: string }; +type Button = { type: 'button'; label?: string }; export type SettingsStore = { [key: string]: SettingsStore | string | number | boolean; @@ -23,5 +23,5 @@ export type SettingsValue = Record< >; export function isNodeInput(v: SettingsNode | undefined): v is InputType { - return !!v && "type" in v; + return !!v && 'type' in v; } diff --git a/app/src/lib/sidebar/Panel.svelte b/app/src/lib/sidebar/Panel.svelte index e079e9c..19b0bc0 100644 --- a/app/src/lib/sidebar/Panel.svelte +++ b/app/src/lib/sidebar/Panel.svelte @@ -1,14 +1,14 @@ @@ -19,8 +19,7 @@ class:active={panelId === state.activePanel.value} onclick={() => (state.activePanel.value = panelId)} > - + {/if} {/each} @@ -40,9 +39,7 @@ height: 100%; right: 0px; transform: translateX(calc(100% - 30px)); - transition: - transform 0.2s, - background 0.2s ease; + transition: transform 0.2s, background 0.2s ease; width: 30%; min-width: 350px; } diff --git a/app/src/lib/sidebar/panels/ActiveNodeSelected.svelte b/app/src/lib/sidebar/panels/ActiveNodeSelected.svelte index 14b6ac9..52b8b04 100644 --- a/app/src/lib/sidebar/panels/ActiveNodeSelected.svelte +++ b/app/src/lib/sidebar/panels/ActiveNodeSelected.svelte @@ -1,7 +1,12 @@ {status}
- {#if result} -

Finished ({humanizeDuration(result.duration)})

-
- -
- - - ev.key === 'Enter' && copyContent(result?.avg)} - onclick={() => copyContent(result?.avg)} - >(click to copy) - - - ev.key === 'Enter' && copyContent(result?.avg)} - onclick={() => copyContent(result?.stdev + '')} - >(click to copy) -
- -
- {:else if isRunning} -

WarmUp ({$warmUp}/{warmUpAmount})

- - {Math.floor(($warmUp / warmUpAmount) * 100)}% - -

Progress ({samples}/{amount.value})

- - {Math.floor((samples / amount.value) * 100)}% - - {:else} - - - - {/if} + {#if result} +

Finished ({humanizeDuration(result.duration)})

+
+ +
+ + + ev.key === 'Enter' && copyContent(result?.avg)} + onclick={() => copyContent(result?.avg)} + >(click to copy) + + + ev.key === 'Enter' && copyContent(result?.avg)} + onclick={() => copyContent(result?.stdev + '')} + >(click to copy) +
+ +
+ {:else if isRunning} +

WarmUp ({$warmUp}/{warmUpAmount})

+ + {Math.floor(($warmUp / warmUpAmount) * 100)}% + +

Progress ({samples}/{amount.value})

+ + {Math.floor((samples / amount.value) * 100)}% + + {:else} + + + + {/if}
diff --git a/app/src/lib/sidebar/panels/ExportSettings.svelte b/app/src/lib/sidebar/panels/ExportSettings.svelte index ad7fe48..000b985 100644 --- a/app/src/lib/sidebar/panels/ExportSettings.svelte +++ b/app/src/lib/sidebar/panels/ExportSettings.svelte @@ -1,27 +1,26 @@
- - + +
diff --git a/app/src/lib/sidebar/panels/GraphSource.svelte b/app/src/lib/sidebar/panels/GraphSource.svelte index 0866b3e..5e060f9 100644 --- a/app/src/lib/sidebar/panels/GraphSource.svelte +++ b/app/src/lib/sidebar/panels/GraphSource.svelte @@ -1,5 +1,5 @@
-  {graph ? convert(graph) : 'No graph loaded'}
+  {graph ? convert(graph) : "No graph loaded"}
 
diff --git a/app/src/lib/sidebar/panels/Keymap.svelte b/app/src/lib/sidebar/panels/Keymap.svelte index 070a676..d60035e 100644 --- a/app/src/lib/sidebar/panels/Keymap.svelte +++ b/app/src/lib/sidebar/panels/Keymap.svelte @@ -1,7 +1,7 @@
- {#each keymaps as keymap} + {#each keymaps as keymap (keymap.title)} - {#each get(keymap.keymap?.keys) as key} + {#each get(keymap.keymap?.keys) as key (getKeyKey(key))} {#if key.description}

{keymap.title}

- - import "@nodarium/ui/app.css"; - import "../app.css"; - import type { Snippet } from "svelte"; - import * as config from "$lib/config"; + import '@nodarium/ui/app.css'; + import '../app.css'; + import * as config from '$lib/config'; + import type { Snippet } from 'svelte'; const { children } = $props<{ children?: Snippet }>(); @@ -10,6 +10,7 @@ {#if config.ANALYTIC_SCRIPT} + {@html config.ANALYTIC_SCRIPT} {/if} diff --git a/app/src/routes/+layout.ts b/app/src/routes/+layout.ts index a032602..ceccaaf 100644 --- a/app/src/routes/+layout.ts +++ b/app/src/routes/+layout.ts @@ -1,2 +1,2 @@ -export const prerender = true -export const ssr = false +export const prerender = true; +export const ssr = false; diff --git a/app/src/routes/+page.svelte b/app/src/routes/+page.svelte index 6d89f4a..013e760 100644 --- a/app/src/routes/+page.svelte +++ b/app/src/routes/+page.svelte @@ -1,40 +1,35 @@ @@ -184,7 +175,7 @@ bind:settings={graphSettings} bind:settingTypes={graphSettingTypes} onsave={(g) => pm.saveGraph(g)} - onresult={(result) => handleUpdate(result)} + onresult={(result) => handleUpdate(result as Graph)} /> {/if} @@ -202,8 +193,8 @@ > diff --git a/app/src/routes/dev/+layout.svelte b/app/src/routes/dev/+layout.svelte index ddf9ccd..f3366bc 100644 --- a/app/src/routes/dev/+layout.svelte +++ b/app/src/routes/dev/+layout.svelte @@ -1,5 +1,5 @@ diff --git a/app/src/routes/dev/+page.svelte b/app/src/routes/dev/+page.svelte index 6166fa2..6e95d1e 100644 --- a/app/src/routes/dev/+page.svelte +++ b/app/src/routes/dev/+page.svelte @@ -1,24 +1,20 @@
@@ -33,5 +34,4 @@ padding: 0; outline: none; } - diff --git a/packages/ui/src/lib/Input.svelte b/packages/ui/src/lib/Input.svelte index aa91cba..b0cb42c 100644 --- a/packages/ui/src/lib/Input.svelte +++ b/packages/ui/src/lib/Input.svelte @@ -1,25 +1,30 @@ {#if input.type === 'float'} - + {:else if input.type === 'integer'} - + {:else if input.type === 'boolean'} - + {:else if input.type === 'select'} - {:else if input.type === 'vec3'} - + {/if} diff --git a/packages/ui/src/lib/ShortCut.svelte b/packages/ui/src/lib/ShortCut.svelte index 254e3e9..314bdc3 100644 --- a/packages/ui/src/lib/ShortCut.svelte +++ b/packages/ui/src/lib/ShortCut.svelte @@ -1,39 +1,39 @@
- {#if ctrl} - Ctrl - {/if} - {#if shift} - Shift - {/if} - {#if alt} - Alt - {/if} - {key} + {#if ctrl} + Ctrl + {/if} + {#if shift} + Shift + {/if} + {#if alt} + Alt + {/if} + {key}
diff --git a/packages/ui/src/lib/app.css b/packages/ui/src/lib/app.css index ac2b426..d4b9fdc 100644 --- a/packages/ui/src/lib/app.css +++ b/packages/ui/src/lib/app.css @@ -4,10 +4,10 @@ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Fira Code'; + font-family: "Fira Code"; font-style: normal; font-weight: 300; - src: url('/fonts/fira-code-v22-latin-300.woff2') format('woff2'); + src: url("/fonts/fira-code-v22-latin-300.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } @@ -15,15 +15,15 @@ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Fira Code'; + font-family: "Fira Code"; font-style: normal; font-weight: 600; - src: url('/fonts/fira-code-v22-latin-600.woff2') format('woff2'); + src: url("/fonts/fira-code-v22-latin-600.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } :root { - --font-family: 'Fira Code', monospace; + --font-family: "Fira Code", monospace; font-family: var(--font-family); /* Spacing */ @@ -37,14 +37,13 @@ /* Large spacing */ --spacing-xl: 32px; /* Extra large spacing */ - } @theme { - --color-neutral-100: #E7E7E7; - --color-neutral-200: #CECECE; - --color-neutral-300: #7C7C7C; - --color-neutral-400: #2D2D2D; + --color-neutral-100: #e7e7e7; + --color-neutral-200: #cecece; + --color-neutral-300: #7c7c7c; + --color-neutral-400: #2d2d2d; --color-neutral-500: #171717; --color-neutral-800: #111111; --color-neutral-900: #060606; @@ -65,10 +64,10 @@ } html { - --neutral-100: #E7E7E7; - --neutral-200: #CECECE; - --neutral-300: #7C7C7C; - --neutral-400: #2D2D2D; + --neutral-100: #e7e7e7; + --neutral-200: #cecece; + --neutral-300: #7c7c7c; + --neutral-400: #2d2d2d; --neutral-500: #171717; --neutral-800: #111111; --neutral-900: #060606; @@ -123,45 +122,45 @@ html.theme-solarized { } html.theme-catppuccin { - --text-color: #CDD6F4; + --text-color: #cdd6f4; --outline: #3e3e4f; --layer-3: #a8aac8; --layer-2: #313244; - --layer-1: #1E1E2E; + --layer-1: #1e1e2e; --layer-0: #11111b; --connection: #444459; } html.theme-high-contrast { - --text-color: #FFFFFF; + --text-color: #ffffff; --outline: white; --layer-0: #000000; --layer-1: black; --layer-2: #222222; - --layer-3: #FFFFFF; - --connection: #FFF; + --layer-3: #ffffff; + --connection: #fff; } html.theme-nord { - --text-color: #D8DEE9; - --outline: #4C566A; - --layer-0: #2E3440; - --layer-1: #3B4252; - --layer-2: #434C5E; - --layer-3: #5E81AC; + --text-color: #d8dee9; + --outline: #4c566a; + --layer-0: #2e3440; + --layer-1: #3b4252; + --layer-2: #434c5e; + --layer-3: #5e81ac; --active: #8999bd; --selected: #b76c3f; - --connection: #4C566A; + --connection: #4c566a; } html.theme-dracula { - --text-color: #F8F8F2; - --outline: #6272A4; - --layer-0: #282A36; - --layer-1: #44475A; - --layer-2: #32374D; - --layer-3: #BD93F9; - --connection: #6272A4; + --text-color: #f8f8f2; + --outline: #6272a4; + --layer-0: #282a36; + --layer-1: #44475a; + --layer-2: #32374d; + --layer-3: #bd93f9; + --connection: #6272a4; } button { diff --git a/packages/ui/src/lib/index.ts b/packages/ui/src/lib/index.ts index a827062..123812a 100644 --- a/packages/ui/src/lib/index.ts +++ b/packages/ui/src/lib/index.ts @@ -1,7 +1,6 @@ export { default as Input } from './Input.svelte'; export { default as Checkbox } from './inputs/Checkbox.svelte'; -export { default as Float, default as Number } from './inputs/Float.svelte'; -export { default as Integer } from './inputs/Integer.svelte'; +export { default as Float } from './inputs/Float.svelte'; export { default as Select } from './inputs/Select.svelte'; export { default as Vec3 } from './inputs/Vec3.svelte'; diff --git a/packages/ui/src/lib/inputs/Checkbox.svelte b/packages/ui/src/lib/inputs/Checkbox.svelte index f938851..f2c2185 100644 --- a/packages/ui/src/lib/inputs/Checkbox.svelte +++ b/packages/ui/src/lib/inputs/Checkbox.svelte @@ -1,47 +1,47 @@ diff --git a/packages/ui/src/lib/inputs/Float.svelte b/packages/ui/src/lib/inputs/Float.svelte index 013afc9..3fa48e3 100644 --- a/packages/ui/src/lib/inputs/Float.svelte +++ b/packages/ui/src/lib/inputs/Float.svelte @@ -1,194 +1,199 @@
- - + +
diff --git a/packages/ui/src/lib/inputs/Integer.svelte b/packages/ui/src/lib/inputs/Integer.svelte deleted file mode 100644 index 0437667..0000000 --- a/packages/ui/src/lib/inputs/Integer.svelte +++ /dev/null @@ -1,215 +0,0 @@ - - - - -
- - - - - {#if typeof min !== 'undefined' && typeof max !== 'undefined'} - - {/if} -
- - diff --git a/packages/ui/src/lib/inputs/Search.svelte b/packages/ui/src/lib/inputs/Search.svelte index e69de29..8b13789 100644 --- a/packages/ui/src/lib/inputs/Search.svelte +++ b/packages/ui/src/lib/inputs/Search.svelte @@ -0,0 +1 @@ + diff --git a/packages/ui/src/lib/inputs/Select.svelte b/packages/ui/src/lib/inputs/Select.svelte index 39fc11f..31a2a5a 100644 --- a/packages/ui/src/lib/inputs/Select.svelte +++ b/packages/ui/src/lib/inputs/Select.svelte @@ -1,27 +1,27 @@ diff --git a/packages/ui/src/lib/inputs/Vec3.svelte b/packages/ui/src/lib/inputs/Vec3.svelte index 96bcea9..0222892 100644 --- a/packages/ui/src/lib/inputs/Vec3.svelte +++ b/packages/ui/src/lib/inputs/Vec3.svelte @@ -1,34 +1,34 @@
- - - + + +
diff --git a/packages/ui/src/routes/+page.svelte b/packages/ui/src/routes/+page.svelte index 2e7deab..742539f 100644 --- a/packages/ui/src/routes/+page.svelte +++ b/packages/ui/src/routes/+page.svelte @@ -1,79 +1,86 @@
-
-

@nodarium/ui

- -
+
+

@nodarium/ui

+ +
-
- -
+
+ +
-
- -
+
+ +
-
- -
+
+ +
-
- -
+
+ +
-
- -
+
+ +
-
- +
-
- -
+
+ +
-
-
-

Here is some more information that was previously hidden.

-
-
+
+
+

Here is some more information that was previously hidden.

+
+
-
- -
+
+ +
diff --git a/packages/ui/src/routes/Section.svelte b/packages/ui/src/routes/Section.svelte index afd61ea..f9b55b9 100644 --- a/packages/ui/src/routes/Section.svelte +++ b/packages/ui/src/routes/Section.svelte @@ -1,18 +1,18 @@
-

- {title} -

{value}

-

-
- {@render children()} -
+

+ {title} +

{value}

+

+
+ {@render children()} +
diff --git a/packages/ui/svelte.config.js b/packages/ui/svelte.config.js index 31623fc..a13a085 100644 --- a/packages/ui/svelte.config.js +++ b/packages/ui/svelte.config.js @@ -1,7 +1,7 @@ import adapter from '@sveltejs/adapter-static'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; -const { BASE_URL = "" } = process.env; +const { BASE_URL = '' } = process.env; /** @type {import('@sveltejs/kit').Config} */ const config = { @@ -11,7 +11,7 @@ const config = { kit: { paths: { - base: BASE_URL, + base: BASE_URL }, // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. // If your environment is not supported, or you settled on a specific environment, switch out the adapter. diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 6f788f1..8ed3dd7 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -1,15 +1,15 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "module": "NodeNext", - "moduleResolution": "NodeNext" - } + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "module": "NodeNext", + "moduleResolution": "NodeNext" + } } diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index b55cac6..1a8026e 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -1,6 +1,6 @@ import { sveltekit } from '@sveltejs/kit/vite'; +import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vitest/config'; -import tailwindcss from '@tailwindcss/vite' export default defineConfig({ plugins: [tailwindcss(), sveltekit()], diff --git a/packages/utils/package.json b/packages/utils/package.json index 57567a2..ba1117d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -4,7 +4,9 @@ "description": "", "main": "src/index.ts", "scripts": { - "test": "vitest" + "test": "vitest", + "format": "dprint fmt -c '../../.dprint.jsonc' .", + "format:check": "dprint check -c '../../.dprint.jsonc' ." }, "keywords": [], "author": "", @@ -13,6 +15,7 @@ "@nodarium/types": "workspace:" }, "devDependencies": { + "dprint": "^0.51.1", "vite": "^7.3.1", "vitest": "^4.0.17" } diff --git a/packages/utils/src/encoding.test.ts b/packages/utils/src/encoding.test.ts index eff8bc6..1dfaa3e 100644 --- a/packages/utils/src/encoding.test.ts +++ b/packages/utils/src/encoding.test.ts @@ -1,21 +1,21 @@ -import { test, expect } from "vitest" -import { encodeFloat, decodeFloat } from "./encoding" +import { expect, test } from 'vitest'; +import { decodeFloat, encodeFloat } from './encoding'; -test("encode_float", () => { +test('encode_float', () => { const input = 1.23; - const encoded = encodeFloat(input) - const output = decodeFloat(encoded) - console.log(input, output) + const encoded = encodeFloat(input); + const output = decodeFloat(encoded); + console.log(input, output); expect(output).toBeCloseTo(input); }); -test("encode 2.0", () => { +test('encode 2.0', () => { const input = 2.0; - const encoded = encodeFloat(input) - expect(encoded).toEqual(1073741824) + const encoded = encodeFloat(input); + expect(encoded).toEqual(1073741824); }); -test("floating point imprecision", () => { +test('floating point imprecision', () => { let maxError = 0; new Array(10_000).fill(null).forEach((_, i) => { const input = i < 5_000 ? i : Math.random() * 100; @@ -32,7 +32,7 @@ test("floating point imprecision", () => { }); // Test with negative numbers -test("negative numbers", () => { +test('negative numbers', () => { const inputs = [-1, -0.5, -123.456, -0.0001]; inputs.forEach(input => { const encoded = encodeFloat(input); @@ -42,31 +42,31 @@ test("negative numbers", () => { }); // Test with very small numbers -test("very small numbers", () => { +test('very small numbers', () => { const input = 1.2345e-38; - const encoded = encodeFloat(input) - const output = decodeFloat(encoded) + const encoded = encodeFloat(input); + const output = decodeFloat(encoded); expect(output).toBeCloseTo(input); }); // Test with zero -test("zero", () => { +test('zero', () => { const input = 0; - const encoded = encodeFloat(input) - const output = decodeFloat(encoded) + const encoded = encodeFloat(input); + const output = decodeFloat(encoded); expect(output).toBe(0); }); // Test with infinity -test("infinity", () => { +test('infinity', () => { const input = Infinity; - const encoded = encodeFloat(input) - const output = decodeFloat(encoded) + const encoded = encodeFloat(input); + const output = decodeFloat(encoded); expect(output).toBe(Infinity); }); // Test with large numbers -test("large numbers", () => { +test('large numbers', () => { const inputs = [1e+5, 1e+10]; inputs.forEach(input => { const encoded = encodeFloat(input); diff --git a/packages/utils/src/encoding.ts b/packages/utils/src/encoding.ts index d5f77ab..3316dbc 100644 --- a/packages/utils/src/encoding.ts +++ b/packages/utils/src/encoding.ts @@ -4,7 +4,7 @@ const view = new DataView(buffer); export function encodeFloat(value: number): number { // Write the number as a float to the buffer - view.setFloat32(0, value, true); // 'true' for little-endian + view.setFloat32(0, value, true); // 'true' for little-endian // Read the buffer as an integer return view.getInt32(0, true); diff --git a/packages/utils/src/fastHash.test.ts b/packages/utils/src/fastHash.test.ts index 291960f..bb6782c 100644 --- a/packages/utils/src/fastHash.test.ts +++ b/packages/utils/src/fastHash.test.ts @@ -1,4 +1,4 @@ -import { test, expect } from 'vitest'; +import { expect, test } from 'vitest'; import { fastHashArrayBuffer, fastHashString } from './fastHash'; test('fastHashString doesnt produce clashes', () => { @@ -10,8 +10,7 @@ test('fastHashString doesnt produce clashes', () => { expect(hashB).toEqual(hashC); }); -test("fastHashArray doesnt product collisions", () => { - +test('fastHashArray doesnt product collisions', () => { const a = new Int32Array(1000); const hash_a = fastHashArrayBuffer(a); @@ -20,11 +19,9 @@ test("fastHashArray doesnt product collisions", () => { const hash_b = fastHashArrayBuffer(a); expect(hash_a).not.toEqual(hash_b); - }); test('fastHashArray is fast(ish) < 20ms', () => { - const a = new Int32Array(10_000); const t0 = performance.now(); diff --git a/packages/utils/src/fastHash.ts b/packages/utils/src/fastHash.ts index 8259bcd..28b00b4 100644 --- a/packages/utils/src/fastHash.ts +++ b/packages/utils/src/fastHash.ts @@ -1,43 +1,43 @@ export function fastHashArrayBuffer(input: string | Int32Array): string { - const mask = (1n << 64n) - 1n + const mask = (1n << 64n) - 1n; // FNV-1a 64-bit constants - let h = 0xcbf29ce484222325n // offset basis - const FNV_PRIME = 0x100000001b3n + let h = 0xcbf29ce484222325n; // offset basis + const FNV_PRIME = 0x100000001b3n; // get bytes for string or Int32Array - let bytes: Uint8Array - if (typeof input === "string") { + let bytes: Uint8Array; + if (typeof input === 'string') { // utf-8 encoding - bytes = new TextEncoder().encode(input) + bytes = new TextEncoder().encode(input); } else { // Int32Array -> bytes (little-endian) - bytes = new Uint8Array(input.length * 4) + bytes = new Uint8Array(input.length * 4); for (let i = 0; i < input.length; i++) { - const v = input[i] >>> 0 // ensure unsigned 32-bit - const base = i * 4 - bytes[base] = v & 0xff - bytes[base + 1] = (v >>> 8) & 0xff - bytes[base + 2] = (v >>> 16) & 0xff - bytes[base + 3] = (v >>> 24) & 0xff + const v = input[i] >>> 0; // ensure unsigned 32-bit + const base = i * 4; + bytes[base] = v & 0xff; + bytes[base + 1] = (v >>> 8) & 0xff; + bytes[base + 2] = (v >>> 16) & 0xff; + bytes[base + 3] = (v >>> 24) & 0xff; } } // FNV-1a byte-wise for (let i = 0; i < bytes.length; i++) { - h = (h ^ BigInt(bytes[i])) & mask - h = (h * FNV_PRIME) & mask + h = (h ^ BigInt(bytes[i])) & mask; + h = (h * FNV_PRIME) & mask; } // MurmurHash3's fmix64 finalizer (good avalanche) - h ^= h >> 33n - h = (h * 0xff51afd7ed558ccdn) & mask - h ^= h >> 33n - h = (h * 0xc4ceb9fe1a85ec53n) & mask - h ^= h >> 33n + h ^= h >> 33n; + h = (h * 0xff51afd7ed558ccdn) & mask; + h ^= h >> 33n; + h = (h * 0xc4ceb9fe1a85ec53n) & mask; + h ^= h >> 33n; // to 16-char hex - return h.toString(16).padStart(16, "0").slice(-16) + return h.toString(16).padStart(16, '0').slice(-16); } export function fastHashString(input: string) { diff --git a/packages/utils/src/flatTree.test.ts b/packages/utils/src/flatTree.test.ts index f66cf2e..dbfdc08 100644 --- a/packages/utils/src/flatTree.test.ts +++ b/packages/utils/src/flatTree.test.ts @@ -1,25 +1,23 @@ -import { expect, test } from 'vitest' -import { decodeNestedArray, encodeNestedArray, concatEncodedArrays } from './flatTree' - -test("it correctly concats nested arrays", () => { +import { expect, test } from 'vitest'; +import { concatEncodedArrays, decodeNestedArray, encodeNestedArray } from './flatTree'; +test('it correctly concats nested arrays', () => { const input_a = encodeNestedArray([1, 2, 3]); const input_b = 2; const input_c = encodeNestedArray([4, 5, 6]); const output = concatEncodedArrays([input_a, input_b, input_c]); - console.log("Output", output); + console.log('Output', output); const decoded = decodeNestedArray(output); expect(decoded[0]).toEqual([1, 2, 3]); expect(decoded[1]).toEqual(2); expect(decoded[2]).toEqual([4, 5, 6]); - }); -test("it correctly concats nested arrays with nested arrays", () => { +test('it correctly concats nested arrays with nested arrays', () => { const input_c = encodeNestedArray([1, 2, 3]); const output = concatEncodedArrays([42, 12, input_c]); const decoded = decodeNestedArray(output); @@ -78,11 +76,11 @@ test('it correctly handles sequential nesting', () => { }); // Test with mixed data types (if supported) -// Note: This test assumes your implementation supports mixed types. +// Note: This test assumes your implementation supports mixed types. // If not, you can ignore or remove this test. test('it correctly handles arrays with mixed data types', () => { const input = [1, 'text', [true, [null, ['another text']]]]; - //@ts-ignore + // @ts-ignore const decoded = decodeNestedArray(encodeNestedArray(input)); expect(decoded).toEqual(input); }); diff --git a/packages/utils/src/flatTree.ts b/packages/utils/src/flatTree.ts index f99cf45..8b4ae8d 100644 --- a/packages/utils/src/flatTree.ts +++ b/packages/utils/src/flatTree.ts @@ -1,7 +1,7 @@ type SparseArray = (T | T[] | SparseArray)[]; export function concatEncodedArrays( - input: (number | number[] | Int32Array)[], + input: (number | number[] | Int32Array)[] ): Int32Array { let totalLength = 4; for (let i = 0; i < input.length; i++) { @@ -86,7 +86,7 @@ function decode_recursive(dense: number[] | Int32Array, index = 0) { // Opening bracket detected const [p, nextIndex, _nextBracketIndex] = decode_recursive( dense, - index, + index ); decoded.push(...p); index = nextIndex + 1; @@ -109,12 +109,10 @@ export function decodeNestedArray(dense: number[] | Int32Array) { } export function splitNestedArray(input: Int32Array) { - let index = 0; const length = input.length; let res: Int32Array[] = []; - let nextBracketIndex = 0; let argStartIndex = 0; let depth = -1; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index d79ebc9..8e74b79 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,6 +1,6 @@ -export * from "./wasm-wrapper"; -export * from "./flatTree" -export * from "./encoding" -export * from "./fastHash" -export * from "./logger" -export * from "./performance" +export * from './encoding'; +export * from './fastHash'; +export * from './flatTree'; +export * from './logger'; +export * from './performance'; +export * from './wasm-wrapper'; diff --git a/packages/utils/src/logger.ts b/packages/utils/src/logger.ts index 9d01bd1..0b820ef 100644 --- a/packages/utils/src/logger.ts +++ b/packages/utils/src/logger.ts @@ -7,23 +7,34 @@ export const createLogger = (() => { let isGrouped = false; function s(color: string, ...args: any) { - return isGrouped ? [...args] : [`[%c${scope.padEnd(maxLength, " ")}]:`, `color: ${color}`, ...args]; + return isGrouped + ? [...args] + : [`[%c${scope.padEnd(maxLength, ' ')}]:`, `color: ${color}`, ...args]; } return { - log: (...args: any[]) => !muted && console.log(...s("#888", ...args)), - info: (...args: any[]) => !muted && console.info(...s("#888", ...args)), - warn: (...args: any[]) => !muted && console.warn(...s("#888", ...args)), - error: (...args: any[]) => console.error(...s("#f88", ...args)), - group: (...args: any[]) => { if (!muted) { console.groupCollapsed(...s("#888", ...args)); isGrouped = true; } }, - groupEnd: () => { if (!muted) { console.groupEnd(); isGrouped = false } }, + log: (...args: any[]) => !muted && console.log(...s('#888', ...args)), + info: (...args: any[]) => !muted && console.info(...s('#888', ...args)), + warn: (...args: any[]) => !muted && console.warn(...s('#888', ...args)), + error: (...args: any[]) => console.error(...s('#f88', ...args)), + group: (...args: any[]) => { + if (!muted) { + console.groupCollapsed(...s('#888', ...args)); + isGrouped = true; + } + }, + groupEnd: () => { + if (!muted) { + console.groupEnd(); + isGrouped = false; + } + }, mute() { muted = true; }, unmute() { muted = false; } - - } - } + }; + }; })(); diff --git a/packages/utils/src/performance.ts b/packages/utils/src/performance.ts index d1b4799..f9335b0 100644 --- a/packages/utils/src/performance.ts +++ b/packages/utils/src/performance.ts @@ -11,7 +11,6 @@ export interface PerformanceStore { } export function createPerformanceStore(): PerformanceStore { - let data: PerformanceData = []; let currentRun: Record | undefined; @@ -24,7 +23,7 @@ export function createPerformanceStore(): PerformanceStore { return () => { const i = listeners.indexOf(cb); if (i > -1) listeners.splice(i, 1); - } + }; } function set(v: PerformanceData) { @@ -37,12 +36,12 @@ export function createPerformanceStore(): PerformanceStore { lastPoint = undefined; temp = { start: performance.now() - } + }; } function stopRun() { if (currentRun && temp) { - currentRun["total"] = [performance.now() - temp.start]; + currentRun['total'] = [performance.now() - temp.start]; data.push(currentRun); data = data.slice(-100); currentRun = undefined; @@ -69,7 +68,6 @@ export function createPerformanceStore(): PerformanceStore { } function mergeData(newData: PerformanceData[number]) { - let r = currentRun; if (!r) return; @@ -99,5 +97,5 @@ export function createPerformanceStore(): PerformanceStore { endPoint, mergeData, get - } + }; } diff --git a/packages/utils/src/wasm-wrapper.ts b/packages/utils/src/wasm-wrapper.ts index 6327d73..3b43ec2 100644 --- a/packages/utils/src/wasm-wrapper.ts +++ b/packages/utils/src/wasm-wrapper.ts @@ -13,12 +13,12 @@ export function createWasmWrapper(buffer: ArrayBuffer) { host_log_panic: (ptr: number, len: number) => { if (!exports) return; const view = new Uint8Array(exports.memory.buffer, ptr, len); - console.error("RUST PANIC:", new TextDecoder().decode(view)); + console.error('RUST PANIC:', new TextDecoder().decode(view)); }, host_log: (ptr: number, len: number) => { if (!exports) return; const view = new Uint8Array(exports.memory.buffer, ptr, len); - console.log("RUST:", new TextDecoder().decode(view)); + console.log('RUST:', new TextDecoder().decode(view)); } } }; @@ -43,7 +43,7 @@ export function createWasmWrapper(buffer: ArrayBuffer) { } function get_definition() { - const sections = WebAssembly.Module.customSections(module, "nodarium_definition"); + const sections = WebAssembly.Module.customSections(module, 'nodarium_definition'); if (sections.length > 0) { const decoder = new TextDecoder(); const jsonString = decoder.decode(sections[0]); diff --git a/packages/utils/vite.config.ts b/packages/utils/vite.config.ts index a72c03b..c049f46 100644 --- a/packages/utils/vite.config.ts +++ b/packages/utils/vite.config.ts @@ -1,4 +1,3 @@ -import { defineConfig } from 'vite' +import { defineConfig } from 'vite'; -export default defineConfig({ -}) +export default defineConfig({}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bfd4cf8..b52ce5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,12 +17,12 @@ importers: chokidar-cli: specifier: 'catalog:' version: https://codeload.github.com/open-cli-tools/chokidar-cli/tar.gz/8dd8a1e8631d377de600f628d819a0cda46c102f + dprint: + specifier: ^0.51.1 + version: 0.51.1 app: dependencies: - '@nodarium/registry': - specifier: workspace:* - version: link:../packages/registry '@nodarium/ui': specifier: workspace:* version: link:../packages/ui @@ -31,7 +31,7 @@ importers: version: link:../packages/utils '@sveltejs/kit': specifier: ^2.50.0 - version: 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) + version: 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) @@ -63,6 +63,12 @@ importers: specifier: ^1.0.39 version: 1.0.39 devDependencies: + '@eslint/compat': + specifier: ^2.0.2 + version: 2.0.2(eslint@9.39.2(jiti@2.6.1)) + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 '@iconify-json/tabler': specifier: ^1.2.26 version: 1.2.26 @@ -74,10 +80,10 @@ importers: version: link:../packages/types '@sveltejs/adapter-static': specifier: ^3.0.10 - version: 3.0.10(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))) + version: 3.0.10(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) + version: 6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) '@tsconfig/svelte': specifier: ^5.0.6 version: 5.0.6 @@ -87,6 +93,18 @@ importers: '@types/three': specifier: ^0.182.0 version: 0.182.0 + dprint: + specifier: ^0.51.1 + version: 0.51.1 + eslint: + specifier: ^9.39.2 + version: 9.39.2(jiti@2.6.1) + eslint-plugin-svelte: + specifier: ^3.14.0 + version: 3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.4)(ts-node@10.9.2(@types/node@22.8.6)(typescript@5.9.3)) + globals: + specifier: ^17.3.0 + version: 17.3.0 svelte: specifier: ^5.46.4 version: 5.46.4 @@ -99,45 +117,34 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 + typescript-eslint: + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 version: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) vite-plugin-comlink: specifier: ^5.3.0 - version: 5.3.0(comlink@4.4.2)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) + version: 5.3.0(comlink@4.4.2)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) vite-plugin-glsl: specifier: ^1.5.5 - version: 1.5.5(@rollup/pluginutils@5.1.4(rollup@4.55.1))(esbuild@0.27.2)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) + version: 1.5.5(@rollup/pluginutils@5.1.4(rollup@4.55.1))(esbuild@0.27.2)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) vite-plugin-wasm: specifier: ^3.5.0 - version: 3.5.0(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) + version: 3.5.0(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) vitest: specifier: ^4.0.17 version: 4.0.17(@types/node@22.8.6)(jiti@2.6.1)(jsdom@25.0.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) - packages/registry: - dependencies: - '@nodarium/types': - specifier: 'workspace:' - version: link:../types - '@nodarium/utils': - specifier: 'workspace:' - version: link:../utils - idb: - specifier: ^8.0.3 - version: 8.0.3 - - packages/store-client: - devDependencies: - '@hey-api/openapi-ts': - specifier: ^0.90.4 - version: 0.90.4(typescript@5.9.3) - packages/types: dependencies: zod: specifier: ^4.3.5 version: 4.3.5 + devDependencies: + dprint: + specifier: ^0.51.1 + version: 0.51.1 packages/ui: dependencies: @@ -154,6 +161,15 @@ importers: specifier: ^4.1.18 version: 4.1.18 devDependencies: + '@eslint/compat': + specifier: ^2.0.2 + version: 2.0.2(eslint@9.39.2(jiti@2.6.1)) + '@eslint/eslintrc': + specifier: ^3.3.3 + version: 3.3.3 + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 '@nodarium/types': specifier: 'workspace:' version: link:../types @@ -184,12 +200,18 @@ importers: chokidar-cli: specifier: ^3.0.0 version: 3.0.0 + dprint: + specifier: ^0.51.1 + version: 0.51.1 eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) eslint-plugin-svelte: specifier: ^3.14.0 version: 3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.4)(ts-node@10.9.2(@types/node@22.8.6)(typescript@5.9.3)) + globals: + specifier: ^17.3.0 + version: 17.3.0 publint: specifier: ^0.3.16 version: 0.3.16 @@ -199,12 +221,18 @@ importers: svelte-check: specifier: ^4.3.5 version: 4.3.5(picomatch@4.0.3)(svelte@5.46.4)(typescript@5.9.3) + svelte-eslint-parser: + specifier: ^1.4.1 + version: 1.4.1(svelte@5.46.4) tslib: specifier: ^2.8.1 version: 2.8.1 typescript: specifier: ^5.9.3 version: 5.9.3 + typescript-eslint: + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 version: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) @@ -218,6 +246,9 @@ importers: specifier: 'workspace:' version: link:../types devDependencies: + dprint: + specifier: ^0.51.1 + version: 0.51.1 vite: specifier: ^7.3.1 version: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) @@ -274,6 +305,61 @@ packages: '@dmsnell/diff-match-patch@1.1.0': resolution: {integrity: sha512-yejLPmM5pjsGvxS9gXablUSbInW7H976c/FJ4iQxWIm7/38xBySRemTPDe34lhg1gVLbJntX0+sH0jYfU+PN9A==} + '@dprint/darwin-arm64@0.51.1': + resolution: {integrity: sha512-C7fkaz0/NGf/X4G9Cq65izdJgerND5jWShOaPiOgGs4A0CyCMKMLRd45m3xKIttuO8x0IQiZVixD22qmVglXmQ==} + cpu: [arm64] + os: [darwin] + + '@dprint/darwin-x64@0.51.1': + resolution: {integrity: sha512-/CESb4SJejshTWb/nO2gucrioKdLD/fK2gKB5Immi4XecAjhkV1HZpUMRLsIeVDQ6ha7xktKbnnvudJRI0maSg==} + cpu: [x64] + os: [darwin] + + '@dprint/linux-arm64-glibc@0.51.1': + resolution: {integrity: sha512-W+QD/4TkQKMPq02uz+ZIz/EI91YEtS2zHBu/Jihx2lfNh3HjUKgyY1KfqCTg2WGJVDkJtPc5KDw+M8yd4rI+Rg==} + cpu: [arm64] + os: [linux] + + '@dprint/linux-arm64-musl@0.51.1': + resolution: {integrity: sha512-P4Cfn8wrdSvdoMoz0HtsC5zZpbh8Kk3OjRzgG4qs/gub5Ba3CCLcVaQvQmIOCvgPzdhPB41eSn5qAK87mh7vCQ==} + cpu: [arm64] + os: [linux] + + '@dprint/linux-loong64-glibc@0.51.1': + resolution: {integrity: sha512-dxDShELBrSGB9PktRqhYrm1UWCL+7N430rGuDTFg+i4d1wL4JD7EI5NDS/5IVbg3lrKJUu6gAJoY9NWF4sZ0mQ==} + cpu: [loong64] + os: [linux] + + '@dprint/linux-loong64-musl@0.51.1': + resolution: {integrity: sha512-l+uNPzUBNxkywGN1HgvTV0CzUDpzXC+s6VEvjYRdVAEKl9TAsIfLMfZifS8rnlOi9hz/0sckmpny+wL40G6dhQ==} + cpu: [loong64] + os: [linux] + + '@dprint/linux-riscv64-glibc@0.51.1': + resolution: {integrity: sha512-YI6SemJRMsLUrtognhkAYOJ67j/AkiufHfx6+cPv/7qO6zBoBL6otR1e5yFYvAgEJOzRZD5g51EdqCcuK19B+g==} + cpu: [riscv64] + os: [linux] + + '@dprint/linux-x64-glibc@0.51.1': + resolution: {integrity: sha512-Hm9ntOWeclXU6/rZGYIN2XjuAhsRUZ77lRJC5EiM1rP6Ayh0J/YMsDdqlPAs+xZGdFFzt8ZeUpqJJJsbc54ZjQ==} + cpu: [x64] + os: [linux] + + '@dprint/linux-x64-musl@0.51.1': + resolution: {integrity: sha512-iUs/9Z4Ky6+2GAK+i1jF1ZwM27CSIGaqw3LxTXtmE8eBCRwyCW+opzn9bzaFtlT9REUAGMC5PXihAPmzP3ttWg==} + cpu: [x64] + os: [linux] + + '@dprint/win32-arm64@0.51.1': + resolution: {integrity: sha512-oXjEL7Blf/160/j7U8MapRzSOVQvLIdAKEZbslIHA4Fwj10fvoDizqpfVU/aVj/BVrlIcZ/+AH8kfSC9XAyjLw==} + cpu: [arm64] + os: [win32] + + '@dprint/win32-x64@0.51.1': + resolution: {integrity: sha512-RM9thb/+Jm6GkXJS+eW+0Pzmz2PNeDk8ZOWcjunE1jv2RabHgm+GbeGpS+WZPOM9W3LSntswv6f4wjzfUkWD0g==} + cpu: [x64] + os: [win32] + '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -584,6 +670,15 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@2.0.2': + resolution: {integrity: sha512-pR1DoD0h3HfF675QZx0xsyrsU8q70Z/plx7880NOhS02NuWLgBCOMDL787nUeQ7EWLkxv3bPQJaarjcPQb2Dwg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^8.40 || 9 || 10 + peerDependenciesMeta: + eslint: + optional: true + '@eslint/config-array@0.21.1': resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -596,6 +691,10 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.0': + resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/eslintrc@3.3.3': resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -612,23 +711,6 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@hey-api/codegen-core@0.5.2': - resolution: {integrity: sha512-88cqrrB2cLXN8nMOHidQTcVOnZsJ5kebEbBefjMCifaUCwTA30ouSSWvTZqrOX4O104zjJyu7M8Gcv/NNYQuaA==} - engines: {node: '>=20.19.0'} - peerDependencies: - typescript: '>=5.5.3' - - '@hey-api/json-schema-ref-parser@1.2.2': - resolution: {integrity: sha512-oS+5yAdwnK20lSeFO1d53Ku+yaGCsY8PcrmSq2GtSs3bsBfRnHAbpPKSVzQcaxAOrzj5NB+f34WhZglVrNayBA==} - engines: {node: '>= 16'} - - '@hey-api/openapi-ts@0.90.4': - resolution: {integrity: sha512-9l++kjcb0ui4JqPlueZ6OZ9zKn6eK/8//Z2jHcIXb5MRwDRgubOOSpTU5llEv3uvWfT10VzcMp99dySWq0AASw==} - engines: {node: '>=20.19.0'} - hasBin: true - peerDependencies: - typescript: '>=5.5.3' - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -684,9 +766,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@parcel/watcher-android-arm64@2.5.4': resolution: {integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==} engines: {node: '>= 10.0.0'} @@ -1127,6 +1206,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.54.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.53.0': resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1134,22 +1221,45 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.53.0': resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.53.0': resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.53.0': resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.53.0': resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1157,16 +1267,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.53.0': resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.53.0': resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.53.0': resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1174,10 +1301,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.53.0': resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitest/expect@4.0.17': resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} @@ -1231,10 +1369,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -1306,18 +1440,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - - c12@3.3.3: - resolution: {integrity: sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==} - peerDependencies: - magicast: '*' - peerDependenciesMeta: - magicast: - optional: true - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1367,9 +1489,6 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cliui@5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} @@ -1394,10 +1513,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1409,10 +1524,6 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} - engines: {node: '>=20'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1422,13 +1533,6 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -1501,28 +1605,10 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} - engines: {node: '>=18'} - - default-browser@5.4.0: - resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} - engines: {node: '>=18'} - - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1550,9 +1636,9 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv@17.2.3: - resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} - engines: {node: '>=12'} + dprint@0.51.1: + resolution: {integrity: sha512-CEx+wYARxLAe9o7RCZ77GKae6DF7qjn5Rd98xbWdA3hB4PFBr+kHwLANmNHscNumBAIrCg5ZJj/Kz+OYbJ+GBA==} + hasBin: true dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} @@ -1688,9 +1774,6 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1769,10 +1852,6 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - giget@2.0.0: - resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} - hasBin: true - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1789,6 +1868,10 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} + globals@17.3.0: + resolution: {integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==} + engines: {node: '>=18'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1859,11 +1942,6 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1876,15 +1954,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-in-ssh@1.0.0: - resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} - engines: {node: '>=20'} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -1898,10 +1967,6 @@ packages: is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2054,9 +2119,6 @@ packages: lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2149,9 +2211,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-fetch-native@1.6.7: - resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2162,21 +2221,9 @@ packages: nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - nypm@0.6.2: - resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - - open@11.0.0: - resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} - engines: {node: '>=20'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -2230,9 +2277,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - perfect-debounce@2.0.0: - resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2251,9 +2295,6 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -2286,10 +2327,6 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - powershell-utils@0.1.0: - resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} - engines: {node: '>=20'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2306,9 +2343,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2350,10 +2384,6 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} - engines: {node: '>=18'} - sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -2608,6 +2638,13 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + typescript-eslint@8.54.0: + resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -2799,10 +2836,6 @@ packages: utf-8-validate: optional: true - wsl-utils@0.3.1: - resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} - engines: {node: '>=20'} - xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -2903,6 +2936,39 @@ snapshots: '@dmsnell/diff-match-patch@1.1.0': {} + '@dprint/darwin-arm64@0.51.1': + optional: true + + '@dprint/darwin-x64@0.51.1': + optional: true + + '@dprint/linux-arm64-glibc@0.51.1': + optional: true + + '@dprint/linux-arm64-musl@0.51.1': + optional: true + + '@dprint/linux-loong64-glibc@0.51.1': + optional: true + + '@dprint/linux-loong64-musl@0.51.1': + optional: true + + '@dprint/linux-riscv64-glibc@0.51.1': + optional: true + + '@dprint/linux-x64-glibc@0.51.1': + optional: true + + '@dprint/linux-x64-musl@0.51.1': + optional: true + + '@dprint/win32-arm64@0.51.1': + optional: true + + '@dprint/win32-x64@0.51.1': + optional: true + '@esbuild/aix-ppc64@0.23.1': optional: true @@ -3060,6 +3126,12 @@ snapshots: '@eslint-community/regexpp@4.12.2': {} + '@eslint/compat@2.0.2(eslint@9.39.2(jiti@2.6.1))': + dependencies: + '@eslint/core': 1.1.0 + optionalDependencies: + eslint: 9.39.2(jiti@2.6.1) + '@eslint/config-array@0.21.1': dependencies: '@eslint/object-schema': 2.1.7 @@ -3076,6 +3148,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@1.1.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 @@ -3099,33 +3175,6 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@hey-api/codegen-core@0.5.2(typescript@5.9.3)': - dependencies: - ansi-colors: 4.1.3 - color-support: 1.1.3 - typescript: 5.9.3 - - '@hey-api/json-schema-ref-parser@1.2.2': - dependencies: - '@jsdevtools/ono': 7.1.3 - '@types/json-schema': 7.0.15 - js-yaml: 4.1.1 - lodash: 4.17.21 - - '@hey-api/openapi-ts@0.90.4(typescript@5.9.3)': - dependencies: - '@hey-api/codegen-core': 0.5.2(typescript@5.9.3) - '@hey-api/json-schema-ref-parser': 1.2.2 - ansi-colors: 4.1.3 - c12: 3.3.3 - color-support: 1.1.3 - commander: 14.0.2 - open: 11.0.0 - semver: 7.7.3 - typescript: 5.9.3 - transitivePeerDependencies: - - magicast - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -3197,8 +3246,6 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 optional: true - '@jsdevtools/ono@7.1.3': {} - '@parcel/watcher-android-arm64@2.5.4': optional: true @@ -3358,10 +3405,6 @@ snapshots: dependencies: '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))': - dependencies: - '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - '@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': dependencies: '@standard-schema/spec': 1.1.0 @@ -3383,27 +3426,6 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': - dependencies: - '@standard-schema/spec': 1.1.0 - '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - '@types/cookie': 0.6.0 - acorn: 8.15.0 - cookie: 0.6.0 - devalue: 5.6.2 - esm-env: 1.2.2 - kleur: 4.1.5 - magic-string: 0.30.21 - mrmime: 2.0.1 - sade: 1.8.1 - set-cookie-parser: 2.7.2 - sirv: 3.0.2 - svelte: 5.46.4 - vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) - optionalDependencies: - typescript: 5.9.3 - '@sveltejs/package@2.5.7(svelte@5.46.4)(typescript@5.9.3)': dependencies: chokidar: 5.0.0 @@ -3422,13 +3444,6 @@ snapshots: svelte: 5.46.4 vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': - dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - obug: 2.1.1 - svelte: 5.46.4 - vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) @@ -3439,16 +3454,6 @@ snapshots: vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) vitefu: 1.1.1(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)))(svelte@5.46.4)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - deepmerge: 4.3.1 - magic-string: 0.30.21 - obug: 2.1.1 - svelte: 5.46.4 - vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) - '@tailwindcss/node@4.1.18': dependencies: '@jridgewell/remapping': 2.3.5 @@ -3618,6 +3623,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 9.39.2(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.53.0 @@ -3630,6 +3651,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) @@ -3639,15 +3672,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.53.0': dependencies: '@typescript-eslint/types': 8.53.0 '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/scope-manager@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.53.0 @@ -3660,8 +3711,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.53.0': {} + '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) @@ -3677,6 +3742,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -3688,11 +3768,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.53.0': dependencies: '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + eslint-visitor-keys: 4.2.1 + '@vitest/expect@4.0.17': dependencies: '@standard-schema/spec': 1.1.0 @@ -3702,7 +3798,7 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': + '@vitest/mocker@4.0.17(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2))': dependencies: '@vitest/spy': 4.0.17 estree-walker: 3.0.3 @@ -3755,8 +3851,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-colors@4.1.3: {} - ansi-regex@4.1.1: {} ansi-regex@6.2.2: {} @@ -3816,25 +3910,6 @@ snapshots: buffer-from@1.1.2: optional: true - bundle-name@4.1.0: - dependencies: - run-applescript: 7.1.0 - - c12@3.3.3: - dependencies: - chokidar: 5.0.0 - confbox: 0.2.2 - defu: 6.1.4 - dotenv: 17.2.3 - exsolve: 1.0.8 - giget: 2.0.0 - jiti: 2.6.1 - ohash: 2.0.11 - pathe: 2.0.3 - perfect-debounce: 2.0.0 - pkg-types: 2.3.0 - rc9: 2.1.2 - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -3890,10 +3965,6 @@ snapshots: dependencies: readdirp: 5.0.0 - citty@0.1.6: - dependencies: - consola: 3.4.2 - cliui@5.0.0: dependencies: string-width: 3.1.0 @@ -3920,8 +3991,6 @@ snapshots: color-name@1.1.4: {} - color-support@1.1.3: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -3931,8 +4000,6 @@ snapshots: commander@11.1.0: {} - commander@14.0.2: {} - commander@2.20.3: optional: true @@ -3940,10 +4007,6 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.2: {} - - consola@3.4.2: {} - cookie@0.6.0: {} copy-anything@2.0.6: @@ -4013,22 +4076,9 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.1: {} - - default-browser@5.4.0: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.1 - - define-lazy-prop@3.0.0: {} - - defu@6.1.4: {} - delayed-stream@1.0.0: optional: true - destr@2.0.5: {} - detect-libc@2.1.2: {} devalue@5.6.2: {} @@ -4056,7 +4106,19 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv@17.2.3: {} + dprint@0.51.1: + optionalDependencies: + '@dprint/darwin-arm64': 0.51.1 + '@dprint/darwin-x64': 0.51.1 + '@dprint/linux-arm64-glibc': 0.51.1 + '@dprint/linux-arm64-musl': 0.51.1 + '@dprint/linux-loong64-glibc': 0.51.1 + '@dprint/linux-loong64-musl': 0.51.1 + '@dprint/linux-riscv64-glibc': 0.51.1 + '@dprint/linux-x64-glibc': 0.51.1 + '@dprint/linux-x64-musl': 0.51.1 + '@dprint/win32-arm64': 0.51.1 + '@dprint/win32-x64': 0.51.1 dunder-proto@1.0.1: dependencies: @@ -4269,8 +4331,6 @@ snapshots: expect-type@1.3.0: {} - exsolve@1.0.8: {} - fast-deep-equal@3.1.3: {} fast-json-stable-stringify@2.1.0: {} @@ -4353,15 +4413,6 @@ snapshots: resolve-pkg-maps: 1.0.0 optional: true - giget@2.0.0: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - node-fetch-native: 1.6.7 - nypm: 0.6.2 - pathe: 2.0.3 - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4374,6 +4425,8 @@ snapshots: globals@16.5.0: {} + globals@17.3.0: {} + gopd@1.2.0: optional: true @@ -4443,8 +4496,6 @@ snapshots: dependencies: binary-extensions: 2.3.0 - is-docker@3.0.0: {} - is-extglob@2.1.1: {} is-fullwidth-code-point@2.0.0: {} @@ -4453,12 +4504,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-in-ssh@1.0.0: {} - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-number@7.0.0: {} is-potential-custom-element-name@1.0.1: @@ -4471,10 +4516,6 @@ snapshots: is-what@3.14.1: optional: true - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - isexe@2.0.0: {} jiti@2.6.1: {} @@ -4620,8 +4661,6 @@ snapshots: lodash.throttle@4.1.1: {} - lodash@4.17.21: {} - lru-cache@10.4.3: optional: true @@ -4705,8 +4744,6 @@ snapshots: node-addon-api@7.1.1: optional: true - node-fetch-native@1.6.7: {} - normalize-path@3.0.0: {} nth-check@2.1.1: @@ -4716,27 +4753,8 @@ snapshots: nwsapi@2.2.23: optional: true - nypm@0.6.2: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - pathe: 2.0.3 - pkg-types: 2.3.0 - tinyexec: 1.0.2 - obug@2.1.1: {} - ohash@2.0.11: {} - - open@11.0.0: - dependencies: - default-browser: 5.4.0 - define-lazy-prop: 3.0.0 - is-in-ssh: 1.0.0 - is-inside-container: 1.0.0 - powershell-utils: 0.1.0 - wsl-utils: 0.3.1 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -4786,8 +4804,6 @@ snapshots: pathe@2.0.3: {} - perfect-debounce@2.0.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -4803,12 +4819,6 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 - pkg-types@2.3.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.8 - pathe: 2.0.3 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.8.6)(typescript@5.9.3)): dependencies: lilconfig: 2.1.0 @@ -4836,8 +4846,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - powershell-utils@0.1.0: {} - prelude-ls@1.2.1: {} prr@1.0.1: @@ -4852,11 +4860,6 @@ snapshots: punycode@2.3.1: {} - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.5 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -4913,8 +4916,6 @@ snapshots: rrweb-cssom@0.8.0: optional: true - run-applescript@7.1.0: {} - sade@1.8.1: dependencies: mri: 1.2.0 @@ -5188,6 +5189,17 @@ snapshots: dependencies: prelude-ls: 1.2.1 + typescript-eslint@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} ufo@1.6.3: {} @@ -5204,7 +5216,7 @@ snapshots: v8-compile-cache-lib@3.0.1: optional: true - vite-plugin-comlink@5.3.0(comlink@4.4.2)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)): + vite-plugin-comlink@5.3.0(comlink@4.4.2)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)): dependencies: comlink: 4.4.2 json5: 2.2.3 @@ -5212,14 +5224,14 @@ snapshots: source-map: 0.7.6 vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) - vite-plugin-glsl@1.5.5(@rollup/pluginutils@5.1.4(rollup@4.55.1))(esbuild@0.27.2)(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)): + vite-plugin-glsl@1.5.5(@rollup/pluginutils@5.1.4(rollup@4.55.1))(esbuild@0.27.2)(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)): dependencies: vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) optionalDependencies: '@rollup/pluginutils': 5.1.4(rollup@4.55.1) esbuild: 0.27.2 - vite-plugin-wasm@3.5.0(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)): + vite-plugin-wasm@3.5.0(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)): dependencies: vite: 7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2) @@ -5248,7 +5260,7 @@ snapshots: vitest@4.0.17(@types/node@22.8.6)(jiti@2.6.1)(jsdom@25.0.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2): dependencies: '@vitest/expect': 4.0.17 - '@vitest/mocker': 4.0.17(vite@7.3.1(@types/node@22.8.6)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) + '@vitest/mocker': 4.0.17(vite@7.3.1(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass@1.80.6)(terser@5.36.0)(tsx@4.19.2)) '@vitest/pretty-format': 4.0.17 '@vitest/runner': 4.0.17 '@vitest/snapshot': 4.0.17 @@ -5337,11 +5349,6 @@ snapshots: ws@8.19.0: optional: true - wsl-utils@0.3.1: - dependencies: - is-wsl: 3.1.0 - powershell-utils: 0.1.0 - xml-name-validator@5.0.0: optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5863e22..116160b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,9 +1,12 @@ packages: - - "app" - - "packages/*" - - "nodes/**" - - "!**/.template/**" - - "!**/pkg/**" + - app + - packages/* + - nodes/** + - '!**/.template/**' + - '!**/pkg/**' catalog: chokidar-cli: github:open-cli-tools/chokidar-cli#semver:v4.0.0 + +onlyBuiltDependencies: + - dprint -- 2.49.1 From 6f33cdf0664de82a864825a1cdaa77504c5c0595 Mon Sep 17 00:00:00 2001 From: Max Richter Date: Mon, 2 Feb 2026 16:28:08 +0100 Subject: [PATCH 2/2] feat(ci): run on every branch --- .gitea/workflows/deploy.yaml | 70 +++++++++++------------------------- 1 file changed, 21 insertions(+), 49 deletions(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index d2414b1..33e81d6 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -2,28 +2,31 @@ name: ๐Ÿ—๏ธ Build and Deploy on: push: - branches: "main" + branches: ["*"] env: PNPM_CACHE_FOLDER: .pnpm-store +x-templates: + setup-steps: &setup-steps + - name: ๐Ÿ“‘ Checkout Code + uses: actions/checkout@v4 + + - name: ๐Ÿ’พ Setup pnpm Cache + uses: actions/cache@v4 + with: + path: ${{ env.PNPM_CACHE_FOLDER }} + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: ๐Ÿ“ฆ Install Dependencies + run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} + jobs: lint: runs-on: ubuntu-latest container: jimfx/nodes:latest steps: - - name: ๐Ÿ“‘ Checkout Code - uses: actions/checkout@v4 - - - name: ๐Ÿ’พ Setup pnpm Cache - uses: actions/cache@v4 - with: - path: ${{ env.PNPM_CACHE_FOLDER }} - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} - - - name: ๐Ÿ“ฆ Install Dependencies - run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} - + - <<: *setup-steps - name: ๐Ÿงน Run Linter run: pnpm lint @@ -31,18 +34,7 @@ jobs: runs-on: ubuntu-latest container: jimfx/nodes:latest steps: - - name: ๐Ÿ“‘ Checkout Code - uses: actions/checkout@v4 - - - name: ๐Ÿ’พ Setup pnpm Cache - uses: actions/cache@v4 - with: - path: ${{ env.PNPM_CACHE_FOLDER }} - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} - - - name: ๐Ÿ“ฆ Install Dependencies - run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} - + - <<: *setup-steps - name: ๐ŸŽจ Check Formatting run: pnpm format:check @@ -50,38 +42,18 @@ jobs: runs-on: ubuntu-latest container: jimfx/nodes:latest steps: - - name: ๐Ÿ“‘ Checkout Code - uses: actions/checkout@v4 - - - name: ๐Ÿ’พ Setup pnpm Cache - uses: actions/cache@v4 - with: - path: ${{ env.PNPM_CACHE_FOLDER }} - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} - - - name: ๐Ÿ“ฆ Install Dependencies - run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} - + - <<: *setup-steps - name: ๐Ÿงฌ Type Check run: pnpm check build_and_deploy: + if: github.ref == 'refs/heads/main' needs: [lint, format, typecheck] runs-on: ubuntu-latest container: jimfx/nodes:latest steps: - - name: ๐Ÿ“‘ Checkout Code - uses: actions/checkout@v4 - - - name: ๐Ÿ’พ Setup pnpm Cache - uses: actions/cache@v4 - with: - path: ${{ env.PNPM_CACHE_FOLDER }} - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} - - - name: ๐Ÿ“ฆ Install Dependencies - run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }} - + - <<: *setup-steps + - name: ๐Ÿ› ๏ธ Build Site run: pnpm run build:deploy -- 2.49.1