feat: add validation to include_definition macro

This commit is contained in:
max_richter 2024-04-18 15:40:41 +02:00
parent c33e2642e1
commit e7f43020dc
27 changed files with 466 additions and 147 deletions

18
Cargo.lock generated
View File

@ -97,8 +97,10 @@ name = "macros"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"quote", "quote",
"serde",
"serde_json", "serde_json",
"syn 1.0.109", "syn 1.0.109",
"types",
] ]
[[package]] [[package]]
@ -224,9 +226,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.197" version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
@ -244,9 +246,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.197" version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -314,6 +316,14 @@ dependencies = [
"web-sys", "web-sys",
] ]
[[package]]
name = "types"
version = "0.1.0"
dependencies = [
"serde",
"serde_json",
]
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.12" version = "1.0.12"

View File

@ -1,6 +1,6 @@
[workspace] [workspace]
resolver = "2" resolver = "2"
members = ["nodes/max/plantarium/*", "packages/macros", "packages/utils"] members = ["nodes/max/plantarium/*", "packages/macros", "packages/types", "packages/utils"]
[profile.release] [profile.release]

View File

@ -37,7 +37,7 @@
"@zerodevx/svelte-json-view": "^1.0.9", "@zerodevx/svelte-json-view": "^1.0.9",
"histoire": "^0.17.17", "histoire": "^0.17.17",
"internal-ip": "^8.0.0", "internal-ip": "^8.0.0",
"svelte": "^4.2.14", "svelte": "^4.2.15",
"svelte-check": "^3.6.9", "svelte-check": "^3.6.9",
"tslib": "^2.6.2", "tslib": "^2.6.2",
"typescript": "^5.4.5", "typescript": "^5.4.5",

View File

@ -514,9 +514,7 @@
} }
function handleKeyDown(event: KeyboardEvent) { function handleKeyDown(event: KeyboardEvent) {
const bodyIsFocused = const bodyIsFocused = document?.activeElement?.nodeName !== "INPUT";
document.activeElement === document.body ||
document?.activeElement?.id === "graph";
if (event.key === "l") { if (event.key === "l") {
const activeNode = graph.getNode($activeNodeId); const activeNode = graph.getNode($activeNodeId);
@ -538,7 +536,7 @@
addMenuPosition = [mousePosition[0], mousePosition[1]]; addMenuPosition = [mousePosition[0], mousePosition[1]];
} }
if (event.key === ".") { if (event.key === "." && bodyIsFocused) {
const average = [0, 0]; const average = [0, 0];
for (const node of $nodes.values()) { for (const node of $nodes.values()) {
average[0] += node.position[0]; average[0] += node.position[0];

View File

@ -15,6 +15,8 @@
export let id: string; export let id: string;
export let isLast = false; export let isLast = false;
const inputType = node?.tmp?.type?.inputs?.[id]!;
const socketId = `${node.id}-${id}`; const socketId = `${node.id}-${id}`;
const graph = getGraphManager(); const graph = getGraphManager();
@ -75,8 +77,10 @@
> >
{#key id && graphId} {#key id && graphId}
<div class="content" class:disabled={$inputSockets.has(socketId)}> <div class="content" class:disabled={$inputSockets.has(socketId)}>
<label for={elementId}>{input.label || id}</label> {#if inputType.label !== false}
{#if node?.tmp?.type?.inputs?.[id]?.external !== true} <label for={elementId}>{input.label || id}</label>
{/if}
{#if inputType.external !== true}
<NodeInput {elementId} {node} {input} {id} /> <NodeInput {elementId} {node} {input} {id} />
{/if} {/if}
</div> </div>

View File

@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import "./app.css"; import "@nodes/ui/app.css";
</script> </script>
<slot /> <slot />

View File

@ -10,8 +10,10 @@ pub fn execute(args: &[i32]) -> Vec<i32> {
result.push(1); result.push(1);
result.push(0); // encoding the [ bracket result.push(0); // encoding the [ bracket
result.push(args[1] + 1); result.push(args[1] + 1);
result.push(0); // adding the node-type, math: 0 result.push(0); // adding the node-type, math: 0
result.extend_from_slice(&args[2..]); result.extend_from_slice(&args[2..]);
result.push(1); result.push(1);
result.push(1); // closing bracket result.push(1); // closing bracket
result.push(1); result.push(1);

View File

@ -4,13 +4,16 @@
], ],
"inputs": { "inputs": {
"0": { "0": {
"type": "float" "type": "float",
"label": false
}, },
"1": { "1": {
"type": "float" "type": "float",
"label": false
}, },
"2": { "2": {
"type": "float" "type": "float",
"label": false
} }
} }
} }

View File

@ -8,5 +8,7 @@ proc-macro = true
[dependencies] [dependencies]
syn = { version = "1.0", features = ["full"] } syn = { version = "1.0", features = ["full"] }
serde_json = "1.0" serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", default-features = false, features = ["alloc"] }
quote = "1.0" quote = "1.0"
types = { version = "0.1.0", path = "../types" }

View File

@ -1,18 +1,18 @@
extern crate proc_macro; extern crate proc_macro;
use proc_macro::TokenStream; use proc_macro::TokenStream;
use quote::quote; use quote::quote;
use serde_json::Value;
use std::env; use std::env;
use std::fs; use std::fs;
use std::path::Path; use std::path::Path;
use syn::{parse_macro_input, LitStr}; use syn::{parse_macro_input, LitStr};
use types::NodeType;
#[proc_macro] #[proc_macro]
pub fn define_node(input: TokenStream) -> TokenStream { pub fn define_node(input: TokenStream) -> TokenStream {
let input_string = parse_macro_input!(input as LitStr).value(); let input_string = parse_macro_input!(input as LitStr).value();
// Validate JSON format // Validate JSON format
let json: Value = match serde_json::from_str(&input_string) { let json: NodeType = match serde_json::from_str(&input_string) {
Ok(json) => json, Ok(json) => json,
Err(e) => panic!("Invalid JSON input: {}", e), Err(e) => panic!("Invalid JSON input: {}", e),
}; };
@ -49,8 +49,8 @@ pub fn include_definition_file(input: TokenStream) -> TokenStream {
}); });
// Optionally, validate that the content is valid JSON // Optionally, validate that the content is valid JSON
let _: Value = serde_json::from_str(&json_content) let _: NodeType = serde_json::from_str(&json_content)
.unwrap_or_else(|_| panic!("JSON file contains invalid JSON")); .unwrap_or_else(|err| panic!("JSON file contains invalid JSON: {}", err));
// Generate the function that returns the JSON string // Generate the function that returns the JSON string
let expanded = quote! { let expanded = quote! {

View File

@ -24,7 +24,7 @@
"eslint-plugin-svelte": "^2.37.0", "eslint-plugin-svelte": "^2.37.0",
"prettier": "^3.2.5", "prettier": "^3.2.5",
"prettier-plugin-svelte": "^3.2.3", "prettier-plugin-svelte": "^3.2.3",
"svelte": "^4.2.14", "svelte": "^4.2.15",
"svelte-check": "^3.6.9", "svelte-check": "^3.6.9",
"tslib": "^2.6.2", "tslib": "^2.6.2",
"typescript": "^5.4.5", "typescript": "^5.4.5",

View File

@ -0,0 +1,8 @@
[package]
name = "types"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", default-features = false, features = ["alloc"] }

View File

@ -2,7 +2,7 @@
"name": "@nodes/types", "name": "@nodes/types",
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "",
"main": "index.ts", "main": "src/index.ts",
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC" "license": "ISC"

View File

@ -35,7 +35,7 @@ type DefaultOptions = {
internal?: boolean; internal?: boolean;
external?: boolean; external?: boolean;
setting?: string; setting?: string;
label?: string; label?: string | false;
} }
type InputTypes = (NodeInputSeed | NodeInputBoolean | NodeInputFloat | NodeInputInteger | NodeInputSelect); type InputTypes = (NodeInputSeed | NodeInputBoolean | NodeInputFloat | NodeInputInteger | NodeInputSelect);

133
packages/types/src/lib.rs Normal file
View File

@ -0,0 +1,133 @@
use serde::{Deserialize, Deserializer, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Serialize, Deserialize, Debug)]
#[serde(tag = "type")]
#[allow(non_camel_case_types)]
pub enum InputTypes {
float(NodeInputFloat),
integer(NodeInputInteger),
boolean(NodeInputBoolean),
select(NodeInputSelect),
seed(NodeInputSeed),
model(NodeInputModel),
plant(NodeInputPlant),
vec3(NodeInputVec3),
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputVec3 {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<Vec<f64>>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputFloat {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub step: Option<f64>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputInteger {
#[serde(skip_serializing_if = "Option::is_none")]
pub element: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputBoolean {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputSelect {
pub labels: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<usize>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputSeed {
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<usize>,
}
// Assuming similar structure as other NodeInput types for Model and Plant
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputModel {
// Model-specific fields can be added here
}
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeInputPlant {
// Plant-specific fields can be added here
}
#[derive(Serialize, Deserialize, Debug)]
pub struct DefaultOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub internal: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub external: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub setting: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub label: Option<serde_json::Value>, // To handle both String and false
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum NodeTypeOrArray {
Single(InputTypes),
Multiple(Vec<String>),
}
#[derive(Debug, Serialize)]
pub struct NodeInput {
pub types: Vec<String>,
pub options: DefaultOptions,
}
impl<'de> Deserialize<'de> for NodeInput {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let raw_input: Value = Deserialize::deserialize(deserializer)?;
let options: DefaultOptions =
DefaultOptions::deserialize(&raw_input).map_err(serde::de::Error::custom)?; // Maps deserialization errors appropriately
let types: Vec<String> = match raw_input.get("type") {
Some(Value::String(single_type)) => vec![single_type.clone()],
Some(Value::Array(types)) => types
.iter()
.map(|t| t.as_str().unwrap_or("").to_owned())
.collect(),
_ => return Err(serde::de::Error::custom("Invalid or missing 'type' field")),
};
Ok(NodeInput { types, options })
}
}
#[derive(Deserialize, Debug, Serialize)]
pub struct NodeType {
#[serde(skip_serializing_if = "Option::is_none")]
pub inputs: Option<HashMap<String, NodeInput>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub outputs: Option<Vec<String>>,
}

View File

@ -16,7 +16,8 @@
".": { ".": {
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
"svelte": "./dist/index.js" "svelte": "./dist/index.js"
} },
"./app.css": "./dist/app.css"
}, },
"files": [ "files": [
"dist", "dist",
@ -37,7 +38,7 @@
"eslint": "^9.0.0", "eslint": "^9.0.0",
"eslint-plugin-svelte": "^2.37.0", "eslint-plugin-svelte": "^2.37.0",
"publint": "^0.2.7", "publint": "^0.2.7",
"svelte": "^4.2.14", "svelte": "^4.2.15",
"svelte-check": "^3.6.9", "svelte-check": "^3.6.9",
"tslib": "^2.6.2", "tslib": "^2.6.2",
"typescript": "^5.4.5", "typescript": "^5.4.5",

View File

@ -5,7 +5,6 @@
import Select from "$lib/elements/Select.svelte"; import Select from "$lib/elements/Select.svelte";
import type { NodeInput } from "@nodes/types"; import type { NodeInput } from "@nodes/types";
import Slider from "./elements/Slider.svelte";
export let input: NodeInput; export let input: NodeInput;
export let value: any; export let value: any;
@ -13,11 +12,7 @@
</script> </script>
{#if input.type === "float"} {#if input.type === "float"}
{#if input?.element === "slider"} <Float {id} bind:value />
<Slider {id} bind:value />
{:else}
<Float {id} bind:value />
{/if}
{:else if input.type === "integer"} {:else if input.type === "integer"}
<Integer {id} bind:value /> <Integer {id} bind:value />
{:else if input.type === "boolean"} {:else if input.type === "boolean"}

View File

@ -1,20 +1,172 @@
<script lang="ts"> <script lang="ts">
export let value: number = 0; import { createEventDispatcher } from 'svelte';
import { getBoundingValue } from '../helpers/getBoundingValue';
export let value = 0.5;
export let step = 0.01;
export let min = 0; export let min = 0;
export let max = 10; export let max = 1;
export let step = 0.1; export let id = "";
export let id: string;
function strip(input: number) {
return +parseFloat(input + '').toPrecision(2);
}
const dispatch = createEventDispatcher();
let inputEl: HTMLInputElement;
$: if ((value || 0).toString().length > 5) {
value = strip(value || 0);
}
$: value !== undefined && handleChange();
let oldValue: number;
function handleChange() {
if (value === oldValue) return;
oldValue = value;
dispatch('change', parseFloat(value + ''));
}
$: width = Number.isFinite(value)
? Math.max((value?.toString().length ?? 1) * 8, 50) + 'px'
: '20px';
let isMouseDown = false;
/* let downX = 0; */
/* let downY = 0; */
let downV = 0;
let vx = 0;
/* let vy = 0; */
let rect: DOMRect;
function handleMouseDown(ev: MouseEvent) {
ev.preventDefault();
isMouseDown = true;
downV = value;
/* downX = ev.clientX; */
/* downY = ev.clientY; */
rect = inputEl.getBoundingClientRect();
window.removeEventListener('mousemove', handleMouseMove);
window.addEventListener('mousemove', handleMouseMove);
window.addEventListener('mouseup', handleMouseUp);
document.body.style.cursor = 'ew-resize';
}
function handleMouseUp() {
isMouseDown = false;
if (downV === value) {
inputEl.focus();
}
setTimeout(() => {
if (value >= 0) {
max = getBoundingValue(value);
min = 0;
} else {
min = getBoundingValue(value);
max = 0;
}
}, 500);
document.body.style.cursor = 'unset';
window.removeEventListener('mouseup', handleMouseUp);
window.removeEventListener('mousemove', handleMouseMove);
}
function handleKeyDown(ev: KeyboardEvent) {
if (ev.key === 'Escape' || ev.key === 'Enter') {
handleMouseUp();
inputEl.blur();
}
}
function handleMouseMove(ev: MouseEvent) {
vx = (ev.clientX - rect.left) / rect.width;
/* vy = ev.clientY - downY; */
if (ev.ctrlKey) {
let v = min + (max - min) * vx;
value = v;
} else {
value = Math.max(Math.min(min + (max - min) * vx, max), min);
}
}
</script> </script>
<input {id} type="number" bind:value {min} {max} {step} /> <div class="component-wrapper" class:is-down={isMouseDown}>
<span class="overlay" style={`width: ${((value - min) / (max - min)) * 100}%`} />
<input
bind:value
bind:this={inputEl}
{step}
{max}
{min}
on:keydown={handleKeyDown}
on:mousedown={handleMouseDown}
on:mouseup={handleMouseUp}
type="number"
style={`width:${width};`}
/>
</div>
<style> <style>
input { .component-wrapper {
background: var(--background-color-lighter); position: relative;
color: var(--text-color); background-color: var(--background-color-lighter, #4b4b4b);
border-radius: 2px;
user-select: none;
transition: box-shadow 0.3s ease;
box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.2);
outline: none !important;
overflow: hidden;
border-radius: var(--border-radius, 2px);
}
input[type='number']::-webkit-inner-spin-button,
input[type='number']::-webkit-outer-spin-button {
-webkit-appearance: none;
}
input[type='number'] {
box-sizing: border-box;
-webkit-appearance: textfield;
-moz-appearance: textfield;
appearance: textfield;
font-family: var(--font-family); font-family: var(--font-family);
padding: 0.8em 1em; font-variant-numeric: tabular-nums;
border-radius: 5px; cursor: pointer;
color: var(--text-color);
background-color: transparent;
padding: var(--padding, 6px);
font-size: 1em;
padding-inline: 10px;
text-align: center;
border: none; border: none;
border-style: none;
min-width: 100%;
}
.is-down > input {
cursor: ew-resize !important;
}
.overlay {
position: absolute;
top: 0px;
left: 0px;
height: 100%;
max-width: 100%;
background-color: var(--text-color);
opacity: 0.3;
pointer-events: none;
transition: width 0.3s ease;
}
.is-down > .overlay {
transition: none !important;
} }
</style> </style>

View File

@ -1,9 +0,0 @@
<script lang="ts">
export let value: number = 0;
export let min = 0;
export let max = 10;
export let step = 0.1;
export let id: string;
</script>
<input type="range" {id} bind:value {min} {max} {step} />

View File

@ -0,0 +1,13 @@
export function getBoundingValue(_v: number) {
const v = Math.abs(_v);
let level = 1;
const levels = [1, 2, 4, 10, 20, 50, 100, 200, 300, 400, 500, 1000];
for (const l of levels) {
level = l;
if (l >= v) break;
}
return _v >= 0 ? level : -level;
}

View File

@ -1,3 +1,7 @@
<h1>Welcome to your library project</h1> <script lang="ts">
<p>Create your package using @sveltejs/package and preview/showcase your work with SvelteKit</p> import "$lib/app.css";
<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p> import Slider from "$lib/elements/Float.svelte";
</script>
<Slider id="asd" />

Binary file not shown.

Binary file not shown.

View File

@ -18,7 +18,7 @@ importers:
version: link:../packages/utils version: link:../packages/utils
'@sveltejs/kit': '@sveltejs/kit':
specifier: ^2.5.6 specifier: ^2.5.6
version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9)
'@tauri-apps/api': '@tauri-apps/api':
specifier: 2.0.0-beta.2 specifier: 2.0.0-beta.2
version: 2.0.0-beta.2 version: 2.0.0-beta.2
@ -27,13 +27,13 @@ importers:
version: 2.0.0-beta.2 version: 2.0.0-beta.2
'@threlte/core': '@threlte/core':
specifier: ^7.3.0 specifier: ^7.3.0
version: 7.3.0(svelte@4.2.14)(three@0.163.0) version: 7.3.0(svelte@4.2.15)(three@0.163.0)
'@threlte/extras': '@threlte/extras':
specifier: ^8.11.2 specifier: ^8.11.2
version: 8.11.2(@types/three@0.163.0)(svelte@4.2.14)(three@0.163.0) version: 8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0)
'@threlte/flex': '@threlte/flex':
specifier: ^1.0.2 specifier: ^1.0.2
version: 1.0.2(svelte@4.2.14)(three@0.163.0) version: 1.0.2(svelte@4.2.15)(three@0.163.0)
'@types/three': '@types/three':
specifier: ^0.163.0 specifier: ^0.163.0
version: 0.163.0 version: 0.163.0
@ -49,7 +49,7 @@ importers:
devDependencies: devDependencies:
'@histoire/plugin-svelte': '@histoire/plugin-svelte':
specifier: ^0.17.17 specifier: ^0.17.17
version: 0.17.17(histoire@0.17.17)(svelte@4.2.14)(vite@5.2.9) version: 0.17.17(histoire@0.17.17)(svelte@4.2.15)(vite@5.2.9)
'@nodes/types': '@nodes/types':
specifier: link:../packages/types specifier: link:../packages/types
version: link:../packages/types version: link:../packages/types
@ -58,7 +58,7 @@ importers:
version: 3.0.1(@sveltejs/kit@2.5.6) version: 3.0.1(@sveltejs/kit@2.5.6)
'@sveltejs/vite-plugin-svelte': '@sveltejs/vite-plugin-svelte':
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0(svelte@4.2.14)(vite@5.2.9) version: 3.1.0(svelte@4.2.15)(vite@5.2.9)
'@tauri-apps/cli': '@tauri-apps/cli':
specifier: 2.0.0-beta.3 specifier: 2.0.0-beta.3
version: 2.0.0-beta.3 version: 2.0.0-beta.3
@ -67,7 +67,7 @@ importers:
version: 5.0.4 version: 5.0.4
'@zerodevx/svelte-json-view': '@zerodevx/svelte-json-view':
specifier: ^1.0.9 specifier: ^1.0.9
version: 1.0.9(svelte@4.2.14) version: 1.0.9(svelte@4.2.15)
histoire: histoire:
specifier: ^0.17.17 specifier: ^0.17.17
version: 0.17.17(vite@5.2.9) version: 0.17.17(vite@5.2.9)
@ -75,11 +75,11 @@ importers:
specifier: ^8.0.0 specifier: ^8.0.0
version: 8.0.0 version: 8.0.0
svelte: svelte:
specifier: ^4.2.14 specifier: ^4.2.15
version: 4.2.14 version: 4.2.15
svelte-check: svelte-check:
specifier: ^3.6.9 specifier: ^3.6.9
version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) version: 3.6.9(postcss@8.4.38)(svelte@4.2.15)
tslib: tslib:
specifier: ^2.6.2 specifier: ^2.6.2
version: 2.6.2 version: 2.6.2
@ -138,6 +138,10 @@ importers:
nodes/max/plantarium/triangle/pkg: {} nodes/max/plantarium/triangle/pkg: {}
nodes/max/plantarium/vec3: {}
nodes/max/plantarium/vec3/pkg: {}
packages/node-registry: packages/node-registry:
dependencies: dependencies:
'@nodes/utils': '@nodes/utils':
@ -152,10 +156,10 @@ importers:
version: 3.2.0(@sveltejs/kit@2.5.6) version: 3.2.0(@sveltejs/kit@2.5.6)
'@sveltejs/kit': '@sveltejs/kit':
specifier: ^2.5.6 specifier: ^2.5.6
version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9)
'@sveltejs/vite-plugin-svelte': '@sveltejs/vite-plugin-svelte':
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0(svelte@4.2.14)(vite@5.2.9) version: 3.1.0(svelte@4.2.15)(vite@5.2.9)
'@types/eslint': '@types/eslint':
specifier: ^8.56.9 specifier: ^8.56.9
version: 8.56.9 version: 8.56.9
@ -173,19 +177,19 @@ importers:
version: 9.1.0(eslint@9.0.0) version: 9.1.0(eslint@9.0.0)
eslint-plugin-svelte: eslint-plugin-svelte:
specifier: ^2.37.0 specifier: ^2.37.0
version: 2.37.0(eslint@9.0.0)(svelte@4.2.14) version: 2.37.0(eslint@9.0.0)(svelte@4.2.15)
prettier: prettier:
specifier: ^3.2.5 specifier: ^3.2.5
version: 3.2.5 version: 3.2.5
prettier-plugin-svelte: prettier-plugin-svelte:
specifier: ^3.2.3 specifier: ^3.2.3
version: 3.2.3(prettier@3.2.5)(svelte@4.2.14) version: 3.2.3(prettier@3.2.5)(svelte@4.2.15)
svelte: svelte:
specifier: ^4.2.14 specifier: ^4.2.15
version: 4.2.14 version: 4.2.15
svelte-check: svelte-check:
specifier: ^3.6.9 specifier: ^3.6.9
version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) version: 3.6.9(postcss@8.4.38)(svelte@4.2.15)
tslib: tslib:
specifier: ^2.6.2 specifier: ^2.6.2
version: 2.6.2 version: 2.6.2
@ -215,13 +219,13 @@ importers:
version: 3.2.0(@sveltejs/kit@2.5.6) version: 3.2.0(@sveltejs/kit@2.5.6)
'@sveltejs/kit': '@sveltejs/kit':
specifier: ^2.5.6 specifier: ^2.5.6
version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9)
'@sveltejs/package': '@sveltejs/package':
specifier: ^2.3.1 specifier: ^2.3.1
version: 2.3.1(svelte@4.2.14)(typescript@5.4.5) version: 2.3.1(svelte@4.2.15)(typescript@5.4.5)
'@sveltejs/vite-plugin-svelte': '@sveltejs/vite-plugin-svelte':
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0(svelte@4.2.14)(vite@5.2.9) version: 3.1.0(svelte@4.2.15)(vite@5.2.9)
'@types/eslint': '@types/eslint':
specifier: ^8.56.9 specifier: ^8.56.9
version: 8.56.9 version: 8.56.9
@ -236,16 +240,16 @@ importers:
version: 9.0.0 version: 9.0.0
eslint-plugin-svelte: eslint-plugin-svelte:
specifier: ^2.37.0 specifier: ^2.37.0
version: 2.37.0(eslint@9.0.0)(svelte@4.2.14) version: 2.37.0(eslint@9.0.0)(svelte@4.2.15)
publint: publint:
specifier: ^0.2.7 specifier: ^0.2.7
version: 0.2.7 version: 0.2.7
svelte: svelte:
specifier: ^4.2.14 specifier: ^4.2.15
version: 4.2.14 version: 4.2.15
svelte-check: svelte-check:
specifier: ^3.6.9 specifier: ^3.6.9
version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) version: 3.6.9(postcss@8.4.38)(svelte@4.2.15)
tslib: tslib:
specifier: ^2.6.2 specifier: ^2.6.2
version: 2.6.2 version: 2.6.2
@ -291,8 +295,8 @@ packages:
'@jridgewell/gen-mapping': 0.3.5 '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25 '@jridgewell/trace-mapping': 0.3.25
/@codemirror/commands@6.3.3: /@codemirror/commands@6.4.0:
resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==} resolution: {integrity: sha512-HB3utD5GxCvEhSyj5EuG9KpuQQhFpxalh3lwrspyL/GeSNDe4c6JDxVzL12SJ+7gUknHjZzmq7OPCb9QPgiRmQ==}
dependencies: dependencies:
'@codemirror/language': 6.10.1 '@codemirror/language': 6.10.1
'@codemirror/state': 6.4.1 '@codemirror/state': 6.4.1
@ -584,7 +588,7 @@ packages:
/@histoire/controls@0.17.17(vite@5.2.9): /@histoire/controls@0.17.17(vite@5.2.9):
resolution: {integrity: sha512-W22HZ/X078IZmE09XEKj4Fq7LxQPP/w/aMYAzm94V2NIGhI0fkiSaBDvyTUl7NYrGT66Wq5+9Po1IWPMllk3cQ==} resolution: {integrity: sha512-W22HZ/X078IZmE09XEKj4Fq7LxQPP/w/aMYAzm94V2NIGhI0fkiSaBDvyTUl7NYrGT66Wq5+9Po1IWPMllk3cQ==}
dependencies: dependencies:
'@codemirror/commands': 6.3.3 '@codemirror/commands': 6.4.0
'@codemirror/lang-json': 6.0.1 '@codemirror/lang-json': 6.0.1
'@codemirror/language': 6.10.1 '@codemirror/language': 6.10.1
'@codemirror/lint': 6.5.0 '@codemirror/lint': 6.5.0
@ -597,7 +601,7 @@ packages:
- vite - vite
dev: true dev: true
/@histoire/plugin-svelte@0.17.17(histoire@0.17.17)(svelte@4.2.14)(vite@5.2.9): /@histoire/plugin-svelte@0.17.17(histoire@0.17.17)(svelte@4.2.15)(vite@5.2.9):
resolution: {integrity: sha512-PEBe7uiwLJgxprc7ha5lCkxe0UrcMqDE0Lv2oR/6EIPXINpWyR7L2MkVnbCQVZv/SpYOJbfqv5+9jiWef6cP2A==} resolution: {integrity: sha512-PEBe7uiwLJgxprc7ha5lCkxe0UrcMqDE0Lv2oR/6EIPXINpWyR7L2MkVnbCQVZv/SpYOJbfqv5+9jiWef6cP2A==}
peerDependencies: peerDependencies:
histoire: ^0.17.17 histoire: ^0.17.17
@ -611,7 +615,7 @@ packages:
histoire: 0.17.17(vite@5.2.9) histoire: 0.17.17(vite@5.2.9)
launch-editor: 2.6.1 launch-editor: 2.6.1
pathe: 1.1.2 pathe: 1.1.2
svelte: 4.2.14 svelte: 4.2.15
transitivePeerDependencies: transitivePeerDependencies:
- vite - vite
dev: true dev: true
@ -869,7 +873,7 @@ packages:
peerDependencies: peerDependencies:
'@sveltejs/kit': ^2.0.0 '@sveltejs/kit': ^2.0.0
dependencies: dependencies:
'@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9)
import-meta-resolve: 4.0.0 import-meta-resolve: 4.0.0
dev: true dev: true
@ -878,10 +882,10 @@ packages:
peerDependencies: peerDependencies:
'@sveltejs/kit': ^2.0.0 '@sveltejs/kit': ^2.0.0
dependencies: dependencies:
'@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9)
dev: true dev: true
/@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9): /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9):
resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==} resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==}
engines: {node: '>=18.13'} engines: {node: '>=18.13'}
hasBin: true hasBin: true
@ -891,23 +895,23 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0 svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.3 vite: ^5.0.3
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.9) '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.9)
'@types/cookie': 0.6.0 '@types/cookie': 0.6.0
cookie: 0.6.0 cookie: 0.6.0
devalue: 4.3.2 devalue: 4.3.2
esm-env: 1.0.0 esm-env: 1.0.0
import-meta-resolve: 4.0.0 import-meta-resolve: 4.0.0
kleur: 4.1.5 kleur: 4.1.5
magic-string: 0.30.9 magic-string: 0.30.10
mrmime: 2.0.0 mrmime: 2.0.0
sade: 1.8.1 sade: 1.8.1
set-cookie-parser: 2.6.0 set-cookie-parser: 2.6.0
sirv: 2.0.4 sirv: 2.0.4
svelte: 4.2.14 svelte: 4.2.15
tiny-glob: 0.2.9 tiny-glob: 0.2.9
vite: 5.2.9 vite: 5.2.9
/@sveltejs/package@2.3.1(svelte@4.2.14)(typescript@5.4.5): /@sveltejs/package@2.3.1(svelte@4.2.15)(typescript@5.4.5):
resolution: {integrity: sha512-JvR2J4ost1oCn1CSdqenYRwGX/1RX+7LN+VZ71aPnz3JAlIFaEKQd1pBxlb+OSQTfeugJO0W39gB9voAbBO5ow==} resolution: {integrity: sha512-JvR2J4ost1oCn1CSdqenYRwGX/1RX+7LN+VZ71aPnz3JAlIFaEKQd1pBxlb+OSQTfeugJO0W39gB9voAbBO5ow==}
engines: {node: ^16.14 || >=18} engines: {node: ^16.14 || >=18}
hasBin: true hasBin: true
@ -918,13 +922,13 @@ packages:
kleur: 4.1.5 kleur: 4.1.5
sade: 1.8.1 sade: 1.8.1
semver: 7.6.0 semver: 7.6.0
svelte: 4.2.14 svelte: 4.2.15
svelte2tsx: 0.7.6(svelte@4.2.14)(typescript@5.4.5) svelte2tsx: 0.7.6(svelte@4.2.15)(typescript@5.4.5)
transitivePeerDependencies: transitivePeerDependencies:
- typescript - typescript
dev: true dev: true
/@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9): /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9):
resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==}
engines: {node: ^18.0.0 || >=20} engines: {node: ^18.0.0 || >=20}
peerDependencies: peerDependencies:
@ -932,27 +936,27 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0 svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0 vite: ^5.0.0
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.9) '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.9)
debug: 4.3.4 debug: 4.3.4
svelte: 4.2.14 svelte: 4.2.15
vite: 5.2.9 vite: 5.2.9
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
/@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.9): /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.9):
resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==}
engines: {node: ^18.0.0 || >=20} engines: {node: ^18.0.0 || >=20}
peerDependencies: peerDependencies:
svelte: ^4.0.0 || ^5.0.0-next.0 svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0 vite: ^5.0.0
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9)
debug: 4.3.4 debug: 4.3.4
deepmerge: 4.3.1 deepmerge: 4.3.1
kleur: 4.1.5 kleur: 4.1.5
magic-string: 0.30.9 magic-string: 0.30.10
svelte: 4.2.14 svelte: 4.2.15
svelte-hmr: 0.16.0(svelte@4.2.14) svelte-hmr: 0.16.0(svelte@4.2.15)
vite: 5.2.9 vite: 5.2.9
vitefu: 0.2.5(vite@5.2.9) vitefu: 0.2.5(vite@5.2.9)
transitivePeerDependencies: transitivePeerDependencies:
@ -1096,25 +1100,25 @@ packages:
- '@types/three' - '@types/three'
dev: false dev: false
/@threlte/core@7.3.0(svelte@4.2.14)(three@0.163.0): /@threlte/core@7.3.0(svelte@4.2.15)(three@0.163.0):
resolution: {integrity: sha512-yedstu5kcjV1/V1W0xNjkFQmL8A+n57NzjxBK+cPC1fdUtOvBtmOPxvOZ0b/TlhTyZM8XkEv4BiKrGibOrBzyA==} resolution: {integrity: sha512-yedstu5kcjV1/V1W0xNjkFQmL8A+n57NzjxBK+cPC1fdUtOvBtmOPxvOZ0b/TlhTyZM8XkEv4BiKrGibOrBzyA==}
peerDependencies: peerDependencies:
svelte: '>=4' svelte: '>=4'
three: '>=0.152' three: '>=0.152'
dependencies: dependencies:
mitt: 3.0.1 mitt: 3.0.1
svelte: 4.2.14 svelte: 4.2.15
three: 0.163.0 three: 0.163.0
dev: false dev: false
/@threlte/extras@8.11.2(@types/three@0.163.0)(svelte@4.2.14)(three@0.163.0): /@threlte/extras@8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0):
resolution: {integrity: sha512-4wXIh47EoQbgjOrcbwiXFlQ3s4fPxW5x3OSfXEZgn8GGBdC8ZGdMhALyProe/6VeLhGa50uEn21vX7TcQYgn1w==} resolution: {integrity: sha512-4wXIh47EoQbgjOrcbwiXFlQ3s4fPxW5x3OSfXEZgn8GGBdC8ZGdMhALyProe/6VeLhGa50uEn21vX7TcQYgn1w==}
peerDependencies: peerDependencies:
svelte: '>=4' svelte: '>=4'
three: '>=0.152' three: '>=0.152'
dependencies: dependencies:
'@threejs-kit/instanced-sprite-mesh': 2.4.7(@types/three@0.163.0)(three@0.163.0) '@threejs-kit/instanced-sprite-mesh': 2.4.7(@types/three@0.163.0)(three@0.163.0)
svelte: 4.2.14 svelte: 4.2.15
three: 0.163.0 three: 0.163.0
three-mesh-bvh: 0.7.4(three@0.163.0) three-mesh-bvh: 0.7.4(three@0.163.0)
three-perf: 1.0.10(three@0.163.0) three-perf: 1.0.10(three@0.163.0)
@ -1123,14 +1127,14 @@ packages:
- '@types/three' - '@types/three'
dev: false dev: false
/@threlte/flex@1.0.2(svelte@4.2.14)(three@0.163.0): /@threlte/flex@1.0.2(svelte@4.2.15)(three@0.163.0):
resolution: {integrity: sha512-Y87chYdzqhjrWpXaRjmulJX5LXhMLdWjXpR0dIytHg72muvWAbX5csKrBnJFSSMyrxthy2ZUKNrsfvymTqK8Zw==} resolution: {integrity: sha512-Y87chYdzqhjrWpXaRjmulJX5LXhMLdWjXpR0dIytHg72muvWAbX5csKrBnJFSSMyrxthy2ZUKNrsfvymTqK8Zw==}
peerDependencies: peerDependencies:
svelte: '>=4' svelte: '>=4'
three: '>=0.152' three: '>=0.152'
dependencies: dependencies:
mitt: 3.0.1 mitt: 3.0.1
svelte: 4.2.14 svelte: 4.2.15
three: 0.163.0 three: 0.163.0
yoga-layout: 2.0.1 yoga-layout: 2.0.1
dev: false dev: false
@ -1377,7 +1381,7 @@ packages:
/@vitest/snapshot@1.5.0: /@vitest/snapshot@1.5.0:
resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==}
dependencies: dependencies:
magic-string: 0.30.9 magic-string: 0.30.10
pathe: 1.1.2 pathe: 1.1.2
pretty-format: 29.7.0 pretty-format: 29.7.0
dev: true dev: true
@ -1397,12 +1401,12 @@ packages:
pretty-format: 29.7.0 pretty-format: 29.7.0
dev: true dev: true
/@zerodevx/svelte-json-view@1.0.9(svelte@4.2.14): /@zerodevx/svelte-json-view@1.0.9(svelte@4.2.15):
resolution: {integrity: sha512-2KKxBfDxEo7lM/kJSy+m1PdLAp5Q9c5nB6OYVBg7oWPdCLXB9JVH1Ytxn2hkqTn77m9MobqGI1fz9FFOTPONfA==} resolution: {integrity: sha512-2KKxBfDxEo7lM/kJSy+m1PdLAp5Q9c5nB6OYVBg7oWPdCLXB9JVH1Ytxn2hkqTn77m9MobqGI1fz9FFOTPONfA==}
peerDependencies: peerDependencies:
svelte: ^3.57.0 || ^4.0.0 svelte: ^3.57.0 || ^4.0.0
dependencies: dependencies:
svelte: 4.2.14 svelte: 4.2.15
dev: true dev: true
/abab@2.0.6: /abab@2.0.6:
@ -1701,6 +1705,10 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true dev: true
/confbox@0.1.7:
resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
dev: true
/connect@3.7.0: /connect@3.7.0:
resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
engines: {node: '>= 0.10.0'} engines: {node: '>= 0.10.0'}
@ -1988,7 +1996,7 @@ packages:
eslint: 9.0.0 eslint: 9.0.0
dev: true dev: true
/eslint-plugin-svelte@2.37.0(eslint@9.0.0)(svelte@4.2.14): /eslint-plugin-svelte@2.37.0(eslint@9.0.0)(svelte@4.2.15):
resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==}
engines: {node: ^14.17.0 || >=16.0.0} engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -2010,8 +2018,8 @@ packages:
postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-safe-parser: 6.0.0(postcss@8.4.38)
postcss-selector-parser: 6.0.16 postcss-selector-parser: 6.0.16
semver: 7.6.0 semver: 7.6.0
svelte: 4.2.14 svelte: 4.2.15
svelte-eslint-parser: 0.34.1(svelte@4.2.14) svelte-eslint-parser: 0.34.1(svelte@4.2.15)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- ts-node - ts-node
@ -2721,10 +2729,6 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/jsonc-parser@3.2.1:
resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==}
dev: true
/jsondiffpatch@0.6.0: /jsondiffpatch@0.6.0:
resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
@ -2793,7 +2797,7 @@ packages:
engines: {node: '>=14'} engines: {node: '>=14'}
dependencies: dependencies:
mlly: 1.6.1 mlly: 1.6.1
pkg-types: 1.0.3 pkg-types: 1.1.0
dev: true dev: true
/locate-character@3.0.0: /locate-character@3.0.0:
@ -2839,6 +2843,11 @@ packages:
three: 0.163.0 three: 0.163.0
dev: false dev: false
/magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
/magic-string@0.30.5: /magic-string@0.30.5:
resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
engines: {node: '>=12'} engines: {node: '>=12'}
@ -2846,12 +2855,6 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/sourcemap-codec': 1.4.15
dev: true dev: true
/magic-string@0.30.9:
resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
/markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2):
resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==}
peerDependencies: peerDependencies:
@ -2976,7 +2979,7 @@ packages:
dependencies: dependencies:
acorn: 8.11.3 acorn: 8.11.3
pathe: 1.1.2 pathe: 1.1.2
pkg-types: 1.0.3 pkg-types: 1.1.0
ufo: 1.5.3 ufo: 1.5.3
dev: true dev: true
@ -3207,10 +3210,10 @@ packages:
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
dev: true dev: true
/pkg-types@1.0.3: /pkg-types@1.1.0:
resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==}
dependencies: dependencies:
jsonc-parser: 3.2.1 confbox: 0.1.7
mlly: 1.6.1 mlly: 1.6.1
pathe: 1.1.2 pathe: 1.1.2
dev: true dev: true
@ -3271,14 +3274,14 @@ packages:
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
dev: true dev: true
/prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.14): /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15):
resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==}
peerDependencies: peerDependencies:
prettier: ^3.0.0 prettier: ^3.0.0
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
dependencies: dependencies:
prettier: 3.2.5 prettier: 3.2.5
svelte: 4.2.14 svelte: 4.2.15
dev: true dev: true
/prettier@3.2.5: /prettier@3.2.5:
@ -3605,7 +3608,7 @@ packages:
has-flag: 4.0.0 has-flag: 4.0.0
dev: true dev: true
/svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.14): /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.15):
resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -3617,8 +3620,8 @@ packages:
import-fresh: 3.3.0 import-fresh: 3.3.0
picocolors: 1.0.0 picocolors: 1.0.0
sade: 1.8.1 sade: 1.8.1
svelte: 4.2.14 svelte: 4.2.15
svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) svelte-preprocess: 5.1.4(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5)
typescript: 5.4.5 typescript: 5.4.5
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
@ -3632,7 +3635,7 @@ packages:
- sugarss - sugarss
dev: true dev: true
/svelte-eslint-parser@0.34.1(svelte@4.2.14): /svelte-eslint-parser@0.34.1(svelte@4.2.15):
resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -3646,20 +3649,20 @@ packages:
espree: 9.6.1 espree: 9.6.1
postcss: 8.4.38 postcss: 8.4.38
postcss-scss: 4.0.9(postcss@8.4.38) postcss-scss: 4.0.9(postcss@8.4.38)
svelte: 4.2.14 svelte: 4.2.15
dev: true dev: true
/svelte-hmr@0.16.0(svelte@4.2.14): /svelte-hmr@0.16.0(svelte@4.2.15):
resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==}
engines: {node: ^12.20 || ^14.13.1 || >= 16} engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies: peerDependencies:
svelte: ^3.19.0 || ^4.0.0 svelte: ^3.19.0 || ^4.0.0
dependencies: dependencies:
svelte: 4.2.14 svelte: 4.2.15
/svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): /svelte-preprocess@5.1.4(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5):
resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==}
engines: {node: '>= 16.0.0', pnpm: ^8.0.0} engines: {node: '>= 16.0.0'}
requiresBuild: true requiresBuild: true
peerDependencies: peerDependencies:
'@babel/core': ^7.10.2 '@babel/core': ^7.10.2
@ -3697,15 +3700,15 @@ packages:
dependencies: dependencies:
'@types/pug': 2.0.10 '@types/pug': 2.0.10
detect-indent: 6.1.0 detect-indent: 6.1.0
magic-string: 0.30.9 magic-string: 0.30.10
postcss: 8.4.38 postcss: 8.4.38
sorcery: 0.11.0 sorcery: 0.11.0
strip-indent: 3.0.0 strip-indent: 3.0.0
svelte: 4.2.14 svelte: 4.2.15
typescript: 5.4.5 typescript: 5.4.5
dev: true dev: true
/svelte2tsx@0.7.6(svelte@4.2.14)(typescript@5.4.5): /svelte2tsx@0.7.6(svelte@4.2.15)(typescript@5.4.5):
resolution: {integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==} resolution: {integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==}
peerDependencies: peerDependencies:
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
@ -3713,12 +3716,12 @@ packages:
dependencies: dependencies:
dedent-js: 1.0.1 dedent-js: 1.0.1
pascal-case: 3.1.2 pascal-case: 3.1.2
svelte: 4.2.14 svelte: 4.2.15
typescript: 5.4.5 typescript: 5.4.5
dev: true dev: true
/svelte@4.2.14: /svelte@4.2.15:
resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==}
engines: {node: '>=16'} engines: {node: '>=16'}
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
@ -3733,7 +3736,7 @@ packages:
estree-walker: 3.0.3 estree-walker: 3.0.3
is-reference: 3.0.2 is-reference: 3.0.2
locate-character: 3.0.0 locate-character: 3.0.0
magic-string: 0.30.9 magic-string: 0.30.10
periscopic: 3.1.0 periscopic: 3.1.0
/symbol-tree@3.2.4: /symbol-tree@3.2.4:
@ -4129,7 +4132,7 @@ packages:
debug: 4.3.4 debug: 4.3.4
execa: 8.0.1 execa: 8.0.1
local-pkg: 0.5.0 local-pkg: 0.5.0
magic-string: 0.30.9 magic-string: 0.30.10
pathe: 1.1.2 pathe: 1.1.2
picocolors: 1.0.0 picocolors: 1.0.0
std-env: 3.7.0 std-env: 3.7.0