From 1332efd1bb65a193df14b977fa83e8f6e212f99a Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Thu, 4 Sep 2025 11:12:11 +0300 Subject: [PATCH 01/11] add float negate function --- .../src/database_functions/float_negate.rs | 132 ++++++++++++++++++ .../src/database_functions/mod.rs | 24 +++- 2 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 packages/sqlite-web-core/src/database_functions/float_negate.rs diff --git a/packages/sqlite-web-core/src/database_functions/float_negate.rs b/packages/sqlite-web-core/src/database_functions/float_negate.rs new file mode 100644 index 0000000..70cb74e --- /dev/null +++ b/packages/sqlite-web-core/src/database_functions/float_negate.rs @@ -0,0 +1,132 @@ +use super::*; + +// Helper to negate a Rain Float hex string by formatting to decimal, toggling sign, +// parsing back to Float, and returning the hex representation. +fn float_negate_hex_to_hex(input_hex: &str) -> Result { + let trimmed = input_hex.trim(); + + // Parse the input hex into a Float + let float_val = + Float::from_hex(trimmed).map_err(|e| format!("Failed to parse Float hex: {e}"))?; + + // Convert to human-readable decimal + let decimal = float_val + .format() + .map_err(|e| format!("Failed to format Float to decimal: {e}"))?; + + // Toggle sign on the decimal string + let neg_decimal = if decimal.starts_with('-') { + decimal.trim_start_matches('-').to_string() + } else { + format!("-{decimal}") + }; + + // Parse back to Float from decimal + let neg_float = Float::parse(neg_decimal) + .map_err(|e| format!("Failed to parse negated decimal to Float: {e}"))?; + + // Return as hex string + Ok(neg_float.as_hex()) +} + +// SQLite scalar function wrapper: FLOAT_NEGATE(hex_text) +pub unsafe extern "C" fn float_negate( + context: *mut sqlite3_context, + argc: c_int, + argv: *mut *mut sqlite3_value, +) { + if argc != 1 { + sqlite3_result_error( + context, + c"FLOAT_NEGATE() requires exactly 1 argument".as_ptr(), + -1, + ); + return; + } + + // Get the text value + let value_ptr = sqlite3_value_text(*argv); + if value_ptr.is_null() { + sqlite3_result_null(context); + return; + } + + let value_str = CStr::from_ptr(value_ptr as *const c_char).to_string_lossy(); + + match float_negate_hex_to_hex(&value_str) { + Ok(result_hex) => { + if let Ok(result_cstr) = CString::new(result_hex) { + sqlite3_result_text( + context, + result_cstr.as_ptr(), + result_cstr.as_bytes().len() as c_int, + Some(std::mem::transmute::< + isize, + unsafe extern "C" fn(*mut std::ffi::c_void), + >(-1isize)), // SQLITE_TRANSIENT + ); + } else { + sqlite3_result_error(context, c"Failed to create result string".as_ptr(), -1); + } + } + Err(e) => { + let error_msg = format!("{e}\0"); + sqlite3_result_error(context, error_msg.as_ptr() as *const c_char, -1); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use wasm_bindgen_test::*; + + #[wasm_bindgen_test] + fn test_float_negate_hex_to_hex_pos_to_neg() { + let pos_hex = Float::parse("1.5".to_string()).unwrap().as_hex(); + let expected_neg_hex = Float::parse("-1.5".to_string()).unwrap().as_hex(); + let out = float_negate_hex_to_hex(&pos_hex).unwrap(); + assert_eq!(out, expected_neg_hex); + } + + #[wasm_bindgen_test] + fn test_float_negate_hex_to_hex_neg_to_pos() { + let neg_hex = Float::parse("-2.25".to_string()).unwrap().as_hex(); + let expected_pos_hex = Float::parse("2.25".to_string()).unwrap().as_hex(); + let out = float_negate_hex_to_hex(&neg_hex).unwrap(); + assert_eq!(out, expected_pos_hex); + } + + #[wasm_bindgen_test] + fn test_float_negate_hex_to_hex_zero() { + let zero_hex = Float::parse("0".to_string()).unwrap().as_hex(); + let expected_zero_hex = Float::parse("0".to_string()).unwrap().as_hex(); + let out = float_negate_hex_to_hex(&zero_hex).unwrap(); + assert_eq!(out, expected_zero_hex); + } + + #[wasm_bindgen_test] + fn test_float_negate_hex_to_hex_high_precision() { + let input = "300.123456789012345678"; + let in_hex = Float::parse(input.to_string()).unwrap().as_hex(); + let expected_hex = Float::parse(format!("-{input}")).unwrap().as_hex(); + let out = float_negate_hex_to_hex(&in_hex).unwrap(); + assert_eq!(out, expected_hex); + } + + #[wasm_bindgen_test] + fn test_float_negate_hex_to_hex_whitespace() { + let in_hex = Float::parse("10".to_string()).unwrap().as_hex(); + let wrapped = format!(" {in_hex} "); + let expected_hex = Float::parse("-10".to_string()).unwrap().as_hex(); + let out = float_negate_hex_to_hex(&wrapped).unwrap(); + assert_eq!(out, expected_hex); + } + + #[wasm_bindgen_test] + fn test_float_negate_hex_to_hex_invalid() { + assert!(float_negate_hex_to_hex("0XBADHEX").is_err()); + assert!(float_negate_hex_to_hex("").is_err()); + assert!(float_negate_hex_to_hex("not_hex").is_err()); + } +} diff --git a/packages/sqlite-web-core/src/database_functions/mod.rs b/packages/sqlite-web-core/src/database_functions/mod.rs index b876498..042a7e0 100644 --- a/packages/sqlite-web-core/src/database_functions/mod.rs +++ b/packages/sqlite-web-core/src/database_functions/mod.rs @@ -8,11 +8,13 @@ use std::str::FromStr; // Import the individual function modules mod bigint_sum; +mod float_negate; mod float_sum; mod rain_math; // Re-export the functions pub use bigint_sum::*; +pub use float_negate::*; pub use float_sum::*; pub use rain_math::*; @@ -78,6 +80,26 @@ pub fn register_custom_functions(db: *mut sqlite3) -> Result<(), String> { return Err("Failed to register FLOAT_SUM function".to_string()); } + // Register FLOAT_NEGATE scalar function + let float_negate_name = CString::new("FLOAT_NEGATE").unwrap(); + let ret = unsafe { + sqlite3_create_function_v2( + db, + float_negate_name.as_ptr(), + 1, // 1 argument + SQLITE_UTF8, + std::ptr::null_mut(), + Some(float_negate), // xFunc for scalar + None, // No xStep + None, // No xFinal + None, // No destructor + ) + }; + + if ret != SQLITE_OK { + return Err("Failed to register FLOAT_NEGATE function".to_string()); + } + Ok(()) } @@ -86,8 +108,6 @@ mod tests { use super::*; use wasm_bindgen_test::*; - wasm_bindgen_test_configure!(run_in_browser); - #[wasm_bindgen_test] fn test_cstring_conversion() { let test_string = "test string with spaces and symbols!@#$%"; From 3361bae33ff2fa27c468dc6a83f6a9a424b4d8cc Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Thu, 4 Sep 2025 12:26:49 +0300 Subject: [PATCH 02/11] add UI test --- .../database-functions/float-negate.test.ts | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 svelte-test/tests/database-functions/float-negate.test.ts diff --git a/svelte-test/tests/database-functions/float-negate.test.ts b/svelte-test/tests/database-functions/float-negate.test.ts new file mode 100644 index 0000000..82e7bec --- /dev/null +++ b/svelte-test/tests/database-functions/float-negate.test.ts @@ -0,0 +1,134 @@ +import { describe, it, expect, beforeEach, afterEach } from "vitest"; +import { + createTestDatabase, + cleanupDatabase, + PerformanceTracker, +} from "../fixtures/test-helpers.js"; +import type { SQLiteWasmDatabase } from "sqlite-web"; + +describe("FLOAT_NEGATE Database Function", () => { + let db: SQLiteWasmDatabase; + let perf: PerformanceTracker; + + beforeEach(async () => { + db = await createTestDatabase(); + perf = new PerformanceTracker(); + + await db.query(` + CREATE TABLE float_negate_test ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + amount TEXT NOT NULL, + note TEXT + ) + `); + }); + + afterEach(async () => { + await cleanupDatabase(db); + }); + + describe("Function Availability", () => { + it("should have FLOAT_NEGATE function available", async () => { + try { + const pragmaResult = await db.query("PRAGMA function_list"); + const functions = JSON.parse(pragmaResult.value || "[]"); + const entry = functions.find((f: any) => f.name === "FLOAT_NEGATE"); + expect(entry).toBeDefined(); + } catch (e) {} + + const sampleHex = + "0xffffffff00000000000000000000000000000000000000000000000000000001"; + const neg = await db.query(`SELECT FLOAT_NEGATE('${sampleHex}') as neg`); + expect(neg).toBeDefined(); + expect(neg.value).toBeDefined(); + const row = JSON.parse(neg.value || "[]")[0]; + expect(typeof row.neg).toBe("string"); + expect(row.neg.startsWith("0x")).toBe(true); + expect(row.neg.length).toBe(66); + }); + }); + + describe("Basic FLOAT_NEGATE Functionality", () => { + const samples = [ + "0xffffffff00000000000000000000000000000000000000000000000000000001", + "0xffffffff00000000000000000000000000000000000000000000000000000005", + "ffffffff0000000000000000000000000000000000000000000000000000000f", + "0xfffffffe00000000000000000000000000000000000000000000000000002729", + "0x0000000000000000000000000000000000000000000000000000000000000000", + ]; + + it("should produce negation that sums to zero with original", async () => { + for (const hex of samples) { + const result = await db.query(` + SELECT FLOAT_SUM(amount) as total FROM ( + SELECT '${hex}' as amount + UNION ALL + SELECT FLOAT_NEGATE('${hex}') as amount + ) + `); + const data = JSON.parse(result.value || "[]"); + expect(data[0].total).toBe("0"); + } + }); + + it("should handle whitespace around input", async () => { + const hex = + "0xffffffff00000000000000000000000000000000000000000000000000000005"; + const wrapped = ` ${hex} `; + const result = await db.query(` + SELECT FLOAT_SUM(amount) as total FROM ( + SELECT '${wrapped}' as amount + UNION ALL + SELECT FLOAT_NEGATE('${wrapped}') as amount + ) + `); + const data = JSON.parse(result.value || "[]"); + expect(data[0].total).toBe("0"); + }); + + it("should accept mixed-case 0x prefix and characters", async () => { + await db.query("DELETE FROM float_negate_test"); + const mixed = + "0xFfFfFfFf0000000000000000000000000000000000000000000000000000000F"; + const result = await db.query(` + SELECT FLOAT_SUM(amount) as total FROM ( + SELECT '${mixed}' as amount + UNION ALL + SELECT FLOAT_NEGATE('${mixed}') as amount + ) + `); + const data = JSON.parse(result.value || "[]"); + expect(data[0].total).toBe("0"); + }); + }); + + describe("NULL and Error Handling", () => { + it("should return NULL when input is NULL", async () => { + const res = await db.query("SELECT FLOAT_NEGATE(NULL) as neg"); + const data = JSON.parse(res.value || "[]"); + expect(data[0].neg).toBeNull(); + }); + + it("should reject uppercase 0X prefix", async () => { + const bad = + "0XFFFFFFFF00000000000000000000000000000000000000000000000000000069"; + const result = await db.query(`SELECT FLOAT_NEGATE('${bad}') as neg`); + expect(result.error).toBeDefined(); + expect(result.error?.msg).toContain("Failed to parse Float hex"); + }); + + it("should reject invalid hex strings", async () => { + const bad = "not_hex"; + const result = await db.query(`SELECT FLOAT_NEGATE('${bad}') as neg`); + expect(result.error).toBeDefined(); + expect(result.error?.msg).toContain("Failed to parse Float hex"); + }); + + it("should reject empty string", async () => { + const bad = ""; + const result = await db.query(`SELECT FLOAT_NEGATE('${bad}') as neg`); + expect(result.error).toBeDefined(); + expect(result.error?.msg).toContain("Failed to parse Float hex"); + }); + }); +}); From 4edd2fc2163e72422396b82e6d195a141a9cb7ee Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 19:49:07 +0300 Subject: [PATCH 03/11] update rust logic --- .../src/database_functions/float_negate.rs | 21 +++---------- .../src/database_functions/float_sum.rs | 31 ++++++++++++------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/packages/sqlite-web-core/src/database_functions/float_negate.rs b/packages/sqlite-web-core/src/database_functions/float_negate.rs index 70cb74e..6575d8e 100644 --- a/packages/sqlite-web-core/src/database_functions/float_negate.rs +++ b/packages/sqlite-web-core/src/database_functions/float_negate.rs @@ -1,7 +1,7 @@ use super::*; -// Helper to negate a Rain Float hex string by formatting to decimal, toggling sign, -// parsing back to Float, and returning the hex representation. +// Helper to negate a Rain Float hex string while keeping full precision by +// operating on the binary representation directly. fn float_negate_hex_to_hex(input_hex: &str) -> Result { let trimmed = input_hex.trim(); @@ -9,21 +9,8 @@ fn float_negate_hex_to_hex(input_hex: &str) -> Result { let float_val = Float::from_hex(trimmed).map_err(|e| format!("Failed to parse Float hex: {e}"))?; - // Convert to human-readable decimal - let decimal = float_val - .format() - .map_err(|e| format!("Failed to format Float to decimal: {e}"))?; - - // Toggle sign on the decimal string - let neg_decimal = if decimal.starts_with('-') { - decimal.trim_start_matches('-').to_string() - } else { - format!("-{decimal}") - }; - - // Parse back to Float from decimal - let neg_float = Float::parse(neg_decimal) - .map_err(|e| format!("Failed to parse negated decimal to Float: {e}"))?; + // Negate the float directly to avoid any formatting or precision loss. + let neg_float = (-float_val).map_err(|e| format!("Failed to negate Float value: {e}"))?; // Return as hex string Ok(neg_float.as_hex()) diff --git a/packages/sqlite-web-core/src/database_functions/float_sum.rs b/packages/sqlite-web-core/src/database_functions/float_sum.rs index 0d22393..38f44b8 100644 --- a/packages/sqlite-web-core/src/database_functions/float_sum.rs +++ b/packages/sqlite-web-core/src/database_functions/float_sum.rs @@ -186,16 +186,18 @@ mod tests { fn test_float_sum_context_add_hex_without_prefix() { let mut context = FloatSumContext::new(); - assert!(context - .add_value("ffffffff0000000000000000000000000000000000000000000000000000000f") - .is_ok()); // 1.5 + let one_point_five = Float::parse("1.5".to_string()).unwrap().as_hex(); + let one_point_five_no_prefix = one_point_five.trim_start_matches("0x").to_string(); + + assert!(context.add_value(&one_point_five_no_prefix).is_ok()); // 1.5 let result_hex = context.get_total_as_hex().unwrap(); let result_decimal = Float::from_hex(&result_hex).unwrap().format().unwrap(); assert_eq!(result_decimal, "1.5"); - assert!(context - .add_value("fffffffe000000000000000000000000000000000000000000000000000000e1") - .is_ok()); // 2.25 + let two_point_two_five = Float::parse("2.25".to_string()).unwrap().as_hex(); + let two_point_two_five_no_prefix = two_point_two_five.trim_start_matches("0x").to_string(); + + assert!(context.add_value(&two_point_two_five_no_prefix).is_ok()); // 2.25 let result_hex = context.get_total_as_hex().unwrap(); let result_decimal = Float::from_hex(&result_hex).unwrap().format().unwrap(); assert_eq!(result_decimal, "3.75"); // 1.5 + 2.25 = 3.75 @@ -205,12 +207,17 @@ mod tests { fn test_float_sum_context_add_uppercase_hex() { let mut context = FloatSumContext::new(); - assert!(context - .add_value("0XFFFFFFFB0000000000000000000000000000000000000000000000000004CB2F") - .is_err()); // Should fail - uppercase 0X not supported - assert!(context - .add_value("0XFFFFFFFF00000000000000000000000000000000000000000000000000000069") - .is_err()); // Should fail - uppercase 0X not supported + let upper_case_bad = Float::parse("-12345.6789".to_string()) + .unwrap() + .as_hex() + .replacen("0x", "0X", 1); + assert!(context.add_value(&upper_case_bad).is_err()); // Should fail - uppercase 0X not supported + + let another_upper = Float::parse("1024.125".to_string()) + .unwrap() + .as_hex() + .replacen("0x", "0X", 1); + assert!(context.add_value(&another_upper).is_err()); // Should fail - uppercase 0X not supported } #[wasm_bindgen_test] From ee6cc3d0f24251fb56d6666aaebfeaa18d6af7b3 Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 19:49:14 +0300 Subject: [PATCH 04/11] add float helpers --- svelte-test/tests/fixtures/float-utils.ts | 56 +++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 svelte-test/tests/fixtures/float-utils.ts diff --git a/svelte-test/tests/fixtures/float-utils.ts b/svelte-test/tests/fixtures/float-utils.ts new file mode 100644 index 0000000..1ee1ac9 --- /dev/null +++ b/svelte-test/tests/fixtures/float-utils.ts @@ -0,0 +1,56 @@ +import { Float } from '@rainlanguage/float'; + +export type PrefixedHex = `0x${string}`; + +export function encodeFloatHex(decimal: string): PrefixedHex { + const parseRes = Float.parse(decimal); + if (parseRes.error) { + throw new Error(`Float.parse failed: ${String(parseRes.error.msg ?? parseRes.error)}`); + } + return parseRes.value.asHex() as PrefixedHex; +} + +function ensurePrefixedHex(hex: string): PrefixedHex { + if (!hex.startsWith('0x')) { + throw new Error(`Expected Float hex with 0x prefix, received: ${hex}`); + } + return hex as PrefixedHex; +} + +export function decodeFloatHex(hex: PrefixedHex | string): string { + const prefixed = ensurePrefixedHex(hex); + const fromHexRes = Float.fromHex(prefixed); + if (fromHexRes.error) { + throw new Error(`Float.fromHex failed: ${String(fromHexRes.error.msg ?? fromHexRes.error)}`); + } + const formatRes = fromHexRes.value.format(); + if (formatRes.error) { + throw new Error(`Float.format failed: ${String(formatRes.error.msg ?? formatRes.error)}`); + } + return formatRes.value as string; +} + +export function withoutPrefix(hex: PrefixedHex): string { + return hex.slice(2); +} + +export function toMixedCase(hex: PrefixedHex): string { + let result = ''; + for (let i = 0; i < hex.length; i++) { + const char = hex[i] ?? ''; + if (/[a-f]/.test(char)) { + result += i % 2 === 0 ? char.toUpperCase() : char.toLowerCase(); + } else { + result += char; + } + } + return result; +} + +export function createFloatHexMap>(decimals: T): { readonly [K in keyof T]: PrefixedHex } { + const result: Partial> = {}; + for (const [key, value] of Object.entries(decimals) as Array<[keyof T, string]>) { + result[key] = encodeFloatHex(value); + } + return result as { readonly [K in keyof T]: PrefixedHex }; +} From 190c0590034ee709bf6e9344549e1450dcddff5f Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 19:49:22 +0300 Subject: [PATCH 05/11] update tests --- .../database-functions/float-negate.test.ts | 50 +++++++++----- .../database-functions/float-sum.test.ts | 67 +++++-------------- 2 files changed, 51 insertions(+), 66 deletions(-) diff --git a/svelte-test/tests/database-functions/float-negate.test.ts b/svelte-test/tests/database-functions/float-negate.test.ts index 82e7bec..2fad85b 100644 --- a/svelte-test/tests/database-functions/float-negate.test.ts +++ b/svelte-test/tests/database-functions/float-negate.test.ts @@ -5,6 +5,20 @@ import { PerformanceTracker, } from "../fixtures/test-helpers.js"; import type { SQLiteWasmDatabase } from "sqlite-web"; +import { + createFloatHexMap, + decodeFloatHex, + toMixedCase, + withoutPrefix, +} from "../fixtures/float-utils"; + +const floatHex = createFloatHexMap({ + zero: "0", + smallPositive: "0.000000000000000123", + onePointFive: "1.5", + twoPointTwoFive: "2.25", + highPrecision: "300.123456789012345678", +} as const); describe("FLOAT_NEGATE Database Function", () => { let db: SQLiteWasmDatabase; @@ -36,8 +50,7 @@ describe("FLOAT_NEGATE Database Function", () => { expect(entry).toBeDefined(); } catch (e) {} - const sampleHex = - "0xffffffff00000000000000000000000000000000000000000000000000000001"; + const sampleHex = floatHex.onePointFive; const neg = await db.query(`SELECT FLOAT_NEGATE('${sampleHex}') as neg`); expect(neg).toBeDefined(); expect(neg.value).toBeDefined(); @@ -49,12 +62,12 @@ describe("FLOAT_NEGATE Database Function", () => { }); describe("Basic FLOAT_NEGATE Functionality", () => { - const samples = [ - "0xffffffff00000000000000000000000000000000000000000000000000000001", - "0xffffffff00000000000000000000000000000000000000000000000000000005", - "ffffffff0000000000000000000000000000000000000000000000000000000f", - "0xfffffffe00000000000000000000000000000000000000000000000000002729", - "0x0000000000000000000000000000000000000000000000000000000000000000", + const samples: string[] = [ + floatHex.smallPositive, + floatHex.onePointFive, + withoutPrefix(floatHex.twoPointTwoFive), + floatHex.highPrecision, + floatHex.zero, ]; it("should produce negation that sums to zero with original", async () => { @@ -67,13 +80,14 @@ describe("FLOAT_NEGATE Database Function", () => { ) `); const data = JSON.parse(result.value || "[]"); - expect(data[0].total).toBe("0"); + const total = data[0].total as string; + const decimalTotal = total === "0" ? total : decodeFloatHex(total); + expect(decimalTotal).toBe("0"); } }); it("should handle whitespace around input", async () => { - const hex = - "0xffffffff00000000000000000000000000000000000000000000000000000005"; + const hex = floatHex.twoPointTwoFive; const wrapped = ` ${hex} `; const result = await db.query(` SELECT FLOAT_SUM(amount) as total FROM ( @@ -83,13 +97,14 @@ describe("FLOAT_NEGATE Database Function", () => { ) `); const data = JSON.parse(result.value || "[]"); - expect(data[0].total).toBe("0"); + const total = data[0].total as string; + const decimalTotal = total === "0" ? total : decodeFloatHex(total); + expect(decimalTotal).toBe("0"); }); it("should accept mixed-case 0x prefix and characters", async () => { await db.query("DELETE FROM float_negate_test"); - const mixed = - "0xFfFfFfFf0000000000000000000000000000000000000000000000000000000F"; + const mixed = toMixedCase(floatHex.highPrecision); const result = await db.query(` SELECT FLOAT_SUM(amount) as total FROM ( SELECT '${mixed}' as amount @@ -98,7 +113,9 @@ describe("FLOAT_NEGATE Database Function", () => { ) `); const data = JSON.parse(result.value || "[]"); - expect(data[0].total).toBe("0"); + const total = data[0].total as string; + const decimalTotal = total === "0" ? total : decodeFloatHex(total); + expect(decimalTotal).toBe("0"); }); }); @@ -110,8 +127,7 @@ describe("FLOAT_NEGATE Database Function", () => { }); it("should reject uppercase 0X prefix", async () => { - const bad = - "0XFFFFFFFF00000000000000000000000000000000000000000000000000000069"; + const bad = floatHex.twoPointTwoFive.replace("0x", "0X"); const result = await db.query(`SELECT FLOAT_NEGATE('${bad}') as neg`); expect(result.error).toBeDefined(); expect(result.error?.msg).toContain("Failed to parse Float hex"); diff --git a/svelte-test/tests/database-functions/float-sum.test.ts b/svelte-test/tests/database-functions/float-sum.test.ts index 0098401..9dd474f 100644 --- a/svelte-test/tests/database-functions/float-sum.test.ts +++ b/svelte-test/tests/database-functions/float-sum.test.ts @@ -6,7 +6,13 @@ import { PerformanceTracker, } from "../fixtures/test-helpers.js"; import type { SQLiteWasmDatabase } from "sqlite-web"; -import { Float } from "@rainlanguage/float"; +import { + createFloatHexMap, + decodeFloatHex, + encodeFloatHex, + toMixedCase, + withoutPrefix, +} from "../fixtures/float-utils"; interface CategoryRow { category: string; @@ -22,54 +28,17 @@ describe("FLOAT_SUM Database Function", () => { let db: SQLiteWasmDatabase; let perf: PerformanceTracker; - function decodeFloatHex(hex: string): string { - const floatRes = Float.fromHex(hex as `0x${string}`); - if (floatRes.error) { - throw new Error(`fromHex failed: ${String(floatRes.error)}`); - } - const fmtRes = floatRes.value.format(); - if (fmtRes.error) { - throw new Error(`format failed: ${String(fmtRes.error)}`); - } - return fmtRes.value as string; - } - - function encodeFloatHex(decimal: string): `0x${string}` { - const parseRes = Float.parse(decimal); - if (parseRes.error) { - throw new Error(`Float.parse failed: ${String(parseRes.error.msg ?? parseRes.error)}`); - } - return parseRes.value.asHex(); - } - - function withoutPrefix(hex: `0x${string}`): string { - return hex.slice(2); - } - - function toMixedCase(hex: `0x${string}`): string { - let result = ""; - for (let i = 0; i < hex.length; i++) { - const char = hex[i]; - if (/[a-f]/.test(char)) { - result += i % 2 === 0 ? char.toUpperCase() : char.toLowerCase(); - } else { - result += char; - } - } - return result; - } - - const floatHex = { - zero: encodeFloatHex("0"), - zeroPointOne: encodeFloatHex("0.1"), - zeroPointFive: encodeFloatHex("0.5"), - onePointFive: encodeFloatHex("1.5"), - twoPointTwoFive: encodeFloatHex("2.25"), - ten: encodeFloatHex("10"), - twenty: encodeFloatHex("20"), - hundredPointTwentyFive: encodeFloatHex("100.25"), - oneHundredTwentyThreePointFourFiveSix: encodeFloatHex("123.456"), - } as const; + const floatHex = createFloatHexMap({ + zero: "0", + zeroPointOne: "0.1", + zeroPointFive: "0.5", + onePointFive: "1.5", + twoPointTwoFive: "2.25", + ten: "10", + twenty: "20", + hundredPointTwentyFive: "100.25", + oneHundredTwentyThreePointFourFiveSix: "123.456", + } as const); beforeEach(async () => { db = await createTestDatabase(); From f5c62e7ef3165ece0ead9d2a3dfc32985beb567e Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 20:16:59 +0300 Subject: [PATCH 06/11] update based on ai comments --- .../src/database_functions/float_negate.rs | 4 ++ .../src/database_functions/mod.rs | 2 +- ...have-FLOAT-NEGATE-function-available-1.png | Bin 0 -> 2900 bytes .../database-functions/float-negate.test.ts | 39 +++++++++++++----- 4 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 svelte-test/tests/database-functions/__screenshots__/float-negate.test.ts/FLOAT-NEGATE-Database-Function-Function-Availability-should-have-FLOAT-NEGATE-function-available-1.png diff --git a/packages/sqlite-web-core/src/database_functions/float_negate.rs b/packages/sqlite-web-core/src/database_functions/float_negate.rs index 6575d8e..542cb57 100644 --- a/packages/sqlite-web-core/src/database_functions/float_negate.rs +++ b/packages/sqlite-web-core/src/database_functions/float_negate.rs @@ -5,6 +5,10 @@ use super::*; fn float_negate_hex_to_hex(input_hex: &str) -> Result { let trimmed = input_hex.trim(); + if trimmed.is_empty() { + return Err("Empty string is not a valid hex number".to_string()); + } + // Parse the input hex into a Float let float_val = Float::from_hex(trimmed).map_err(|e| format!("Failed to parse Float hex: {e}"))?; diff --git a/packages/sqlite-web-core/src/database_functions/mod.rs b/packages/sqlite-web-core/src/database_functions/mod.rs index c83526d..200b8af 100644 --- a/packages/sqlite-web-core/src/database_functions/mod.rs +++ b/packages/sqlite-web-core/src/database_functions/mod.rs @@ -87,7 +87,7 @@ pub fn register_custom_functions(db: *mut sqlite3) -> Result<(), String> { db, float_negate_name.as_ptr(), 1, // 1 argument - SQLITE_UTF8, + SQLITE_UTF8 | SQLITE_DETERMINISTIC | SQLITE_INNOCUOUS, std::ptr::null_mut(), Some(float_negate), // xFunc for scalar None, // No xStep diff --git a/svelte-test/tests/database-functions/__screenshots__/float-negate.test.ts/FLOAT-NEGATE-Database-Function-Function-Availability-should-have-FLOAT-NEGATE-function-available-1.png b/svelte-test/tests/database-functions/__screenshots__/float-negate.test.ts/FLOAT-NEGATE-Database-Function-Function-Availability-should-have-FLOAT-NEGATE-function-available-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d37de02daabb253a52321432654065d53c4601 GIT binary patch literal 2900 zcmeAS@N?(olHy`uVBq!ia0y~yV4TOmz}&#W1QcnFZJNcvz|HCD;uumf=gk#EK?Vj6 z21WMY;n(Eq1)BEmX3V(Bcp^|*V2PQ6N3O$!TMY_Z86C5jo3602tmNeg8kHCglF`I4 znhi!vhS4%{v^E&6AV-@9qm81W+)k8ZVEF&PCRvsd*fwSZHHw)T-mek(_v3c3A5etB M)78&qol`;+0J6uJ!2kdN literal 0 HcmV?d00001 diff --git a/svelte-test/tests/database-functions/float-negate.test.ts b/svelte-test/tests/database-functions/float-negate.test.ts index 2fad85b..4cd2735 100644 --- a/svelte-test/tests/database-functions/float-negate.test.ts +++ b/svelte-test/tests/database-functions/float-negate.test.ts @@ -17,6 +17,7 @@ const floatHex = createFloatHexMap({ smallPositive: "0.000000000000000123", onePointFive: "1.5", twoPointTwoFive: "2.25", + negativeTwoPointTwoFive: "-2.25", highPrecision: "300.123456789012345678", } as const); @@ -27,14 +28,6 @@ describe("FLOAT_NEGATE Database Function", () => { beforeEach(async () => { db = await createTestDatabase(); perf = new PerformanceTracker(); - - await db.query(` - CREATE TABLE float_negate_test ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - amount TEXT NOT NULL, - note TEXT - ) - `); }); afterEach(async () => { @@ -52,6 +45,7 @@ describe("FLOAT_NEGATE Database Function", () => { const sampleHex = floatHex.onePointFive; const neg = await db.query(`SELECT FLOAT_NEGATE('${sampleHex}') as neg`); + expect(neg.error).toBeFalsy(); expect(neg).toBeDefined(); expect(neg.value).toBeDefined(); const row = JSON.parse(neg.value || "[]")[0]; @@ -79,6 +73,8 @@ describe("FLOAT_NEGATE Database Function", () => { SELECT FLOAT_NEGATE('${hex}') as amount ) `); + expect(result.error).toBeFalsy(); + expect(result.value).toBeDefined(); const data = JSON.parse(result.value || "[]"); const total = data[0].total as string; const decimalTotal = total === "0" ? total : decodeFloatHex(total); @@ -96,6 +92,8 @@ describe("FLOAT_NEGATE Database Function", () => { SELECT FLOAT_NEGATE('${wrapped}') as amount ) `); + expect(result.error).toBeFalsy(); + expect(result.value).toBeDefined(); const data = JSON.parse(result.value || "[]"); const total = data[0].total as string; const decimalTotal = total === "0" ? total : decodeFloatHex(total); @@ -103,7 +101,6 @@ describe("FLOAT_NEGATE Database Function", () => { }); it("should accept mixed-case 0x prefix and characters", async () => { - await db.query("DELETE FROM float_negate_test"); const mixed = toMixedCase(floatHex.highPrecision); const result = await db.query(` SELECT FLOAT_SUM(amount) as total FROM ( @@ -112,11 +109,33 @@ describe("FLOAT_NEGATE Database Function", () => { SELECT FLOAT_NEGATE('${mixed}') as amount ) `); + expect(result.error).toBeFalsy(); + expect(result.value).toBeDefined(); const data = JSON.parse(result.value || "[]"); const total = data[0].total as string; const decimalTotal = total === "0" ? total : decodeFloatHex(total); expect(decimalTotal).toBe("0"); }); + + it("should return original value after double negation", async () => { + const cases = [ + floatHex.onePointFive, + floatHex.negativeTwoPointTwoFive, + floatHex.zero, + floatHex.smallPositive, + ]; + + for (const original of cases) { + const result = await db.query(` + SELECT FLOAT_NEGATE(FLOAT_NEGATE('${original}')) as double_neg + `); + expect(result.error).toBeFalsy(); + expect(result.value).toBeDefined(); + const data = JSON.parse(result.value || "[]"); + const doubleNeg = data[0].double_neg as string; + expect(doubleNeg).toBe(original); + } + }); }); describe("NULL and Error Handling", () => { @@ -144,7 +163,7 @@ describe("FLOAT_NEGATE Database Function", () => { const bad = ""; const result = await db.query(`SELECT FLOAT_NEGATE('${bad}') as neg`); expect(result.error).toBeDefined(); - expect(result.error?.msg).toContain("Failed to parse Float hex"); + expect(result.error?.msg).toContain("Empty string is not a valid hex number"); }); }); }); From fb838e9f976a236f0934a2ae92e117749c1d24b7 Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 20:37:48 +0300 Subject: [PATCH 07/11] ai suggestions --- .../src/database_functions/float_negate.rs | 32 +++++++++++++------ .../database-functions/float-negate.test.ts | 3 -- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/packages/sqlite-web-core/src/database_functions/float_negate.rs b/packages/sqlite-web-core/src/database_functions/float_negate.rs index 542cb57..3d95e92 100644 --- a/packages/sqlite-web-core/src/database_functions/float_negate.rs +++ b/packages/sqlite-web-core/src/database_functions/float_negate.rs @@ -42,28 +42,40 @@ pub unsafe extern "C" fn float_negate( return; } - let value_str = CStr::from_ptr(value_ptr as *const c_char).to_string_lossy(); + let value_cstr = CStr::from_ptr(value_ptr as *const c_char); + let value_str = match value_cstr.to_str() { + Ok(value_str) => value_str, + Err(_) => { + sqlite3_result_error(context, c"invalid UTF-8".as_ptr(), -1); + return; + } + }; - match float_negate_hex_to_hex(&value_str) { + match float_negate_hex_to_hex(value_str) { Ok(result_hex) => { if let Ok(result_cstr) = CString::new(result_hex) { sqlite3_result_text( context, result_cstr.as_ptr(), result_cstr.as_bytes().len() as c_int, - Some(std::mem::transmute::< - isize, - unsafe extern "C" fn(*mut std::ffi::c_void), - >(-1isize)), // SQLITE_TRANSIENT + SQLITE_TRANSIENT(), ); } else { sqlite3_result_error(context, c"Failed to create result string".as_ptr(), -1); } } - Err(e) => { - let error_msg = format!("{e}\0"); - sqlite3_result_error(context, error_msg.as_ptr() as *const c_char, -1); - } + Err(e) => match CString::new(e) { + Ok(error_msg) => { + sqlite3_result_error(context, error_msg.as_ptr(), -1); + } + Err(_) => { + sqlite3_result_error( + context, + c"Error message contained interior NUL".as_ptr(), + -1, + ); + } + }, } } diff --git a/svelte-test/tests/database-functions/float-negate.test.ts b/svelte-test/tests/database-functions/float-negate.test.ts index 4cd2735..1cfdd2d 100644 --- a/svelte-test/tests/database-functions/float-negate.test.ts +++ b/svelte-test/tests/database-functions/float-negate.test.ts @@ -2,7 +2,6 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest"; import { createTestDatabase, cleanupDatabase, - PerformanceTracker, } from "../fixtures/test-helpers.js"; import type { SQLiteWasmDatabase } from "sqlite-web"; import { @@ -23,11 +22,9 @@ const floatHex = createFloatHexMap({ describe("FLOAT_NEGATE Database Function", () => { let db: SQLiteWasmDatabase; - let perf: PerformanceTracker; beforeEach(async () => { db = await createTestDatabase(); - perf = new PerformanceTracker(); }); afterEach(async () => { From 3a4eec6a240ce66e6010d5b7d065f63871ebe306 Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 20:56:17 +0300 Subject: [PATCH 08/11] ai update --- .../src/database_functions/float_negate.rs | 8 +- svelte-test/package-lock.json | 1349 +++++------------ 2 files changed, 400 insertions(+), 957 deletions(-) diff --git a/packages/sqlite-web-core/src/database_functions/float_negate.rs b/packages/sqlite-web-core/src/database_functions/float_negate.rs index 3d95e92..e79a223 100644 --- a/packages/sqlite-web-core/src/database_functions/float_negate.rs +++ b/packages/sqlite-web-core/src/database_functions/float_negate.rs @@ -35,13 +35,15 @@ pub unsafe extern "C" fn float_negate( return; } - // Get the text value - let value_ptr = sqlite3_value_text(*argv); - if value_ptr.is_null() { + // Return early for NULL inputs using the documented type check. + if sqlite3_value_type(*argv) == SQLITE_NULL { sqlite3_result_null(context); return; } + // Get the text value (now known to be non-NULL). + let value_ptr = sqlite3_value_text(*argv); + let value_cstr = CStr::from_ptr(value_ptr as *const c_char); let value_str = match value_cstr.to_str() { Ok(value_str) => value_str, diff --git a/svelte-test/package-lock.json b/svelte-test/package-lock.json index 05c4ff2..3ba4377 100644 --- a/svelte-test/package-lock.json +++ b/svelte-test/package-lock.json @@ -60,9 +60,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "dev": true, "license": "MIT", "engines": { @@ -100,9 +100,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", + "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", "cpu": [ "ppc64" ], @@ -117,9 +117,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", + "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", "cpu": [ "arm" ], @@ -134,9 +134,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", + "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", "cpu": [ "arm64" ], @@ -151,9 +151,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", + "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", "cpu": [ "x64" ], @@ -168,9 +168,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", + "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", "cpu": [ "arm64" ], @@ -185,9 +185,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", + "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", "cpu": [ "x64" ], @@ -202,9 +202,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", + "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", "cpu": [ "arm64" ], @@ -219,9 +219,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", + "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", "cpu": [ "x64" ], @@ -236,9 +236,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", + "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", "cpu": [ "arm" ], @@ -253,9 +253,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", + "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", "cpu": [ "arm64" ], @@ -270,9 +270,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", + "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", "cpu": [ "ia32" ], @@ -287,9 +287,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", + "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", "cpu": [ "loong64" ], @@ -304,9 +304,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", + "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", "cpu": [ "mips64el" ], @@ -321,9 +321,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", + "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", "cpu": [ "ppc64" ], @@ -338,9 +338,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", + "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", "cpu": [ "riscv64" ], @@ -355,9 +355,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", + "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", "cpu": [ "s390x" ], @@ -372,9 +372,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", + "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", "cpu": [ "x64" ], @@ -389,9 +389,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", + "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", "cpu": [ "arm64" ], @@ -406,9 +406,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", + "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", "cpu": [ "x64" ], @@ -423,9 +423,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", + "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", "cpu": [ "arm64" ], @@ -440,9 +440,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", + "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", "cpu": [ "x64" ], @@ -457,9 +457,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", + "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", "cpu": [ "arm64" ], @@ -474,9 +474,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", + "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", "cpu": [ "x64" ], @@ -491,9 +491,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", + "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", "cpu": [ "arm64" ], @@ -508,9 +508,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", + "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", "cpu": [ "ia32" ], @@ -525,9 +525,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", + "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", "cpu": [ "x64" ], @@ -542,9 +542,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.8.0.tgz", - "integrity": "sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -690,14 +690,24 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@inquirer/ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz", + "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@inquirer/confirm": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz", - "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==", + "version": "5.1.18", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz", + "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "engines": { @@ -713,15 +723,15 @@ } }, "node_modules/@inquirer/core": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz", - "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz", + "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==", "dev": true, "license": "MIT", "dependencies": { + "@inquirer/ansi": "^1.0.0", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", - "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", @@ -808,9 +818,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -920,9 +930,9 @@ "license": "MIT" }, "node_modules/@rainlanguage/float": { - "version": "0.0.0-alpha.22", - "resolved": "https://registry.npmjs.org/@rainlanguage/float/-/float-0.0.0-alpha.22.tgz", - "integrity": "sha512-j0+HBN/DhDGA6R4FuAi+xUkmZu4B61gTzMS6QXFc3Y5XPEiYwl6CRscP3BLnZovDaHIQ8ePXHVntWoETSJvz6w==", + "version": "0.0.0-alpha.26", + "resolved": "https://registry.npmjs.org/@rainlanguage/float/-/float-0.0.0-alpha.26.tgz", + "integrity": "sha512-1HTOs7bEncvSNC3UbA+W80ug450qdHBmz9f7IrusF0rJGK8hayXbsd/4vvSmo8iYY5Rhn2FXvt0jWEhJ2lrc5Q==", "license": "LicenseRef-DCL-1.0", "dependencies": { "buffer": "6.0.3" @@ -932,9 +942,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.0.tgz", - "integrity": "sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.2.tgz", + "integrity": "sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==", "cpu": [ "arm" ], @@ -946,9 +956,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.0.tgz", - "integrity": "sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.2.tgz", + "integrity": "sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==", "cpu": [ "arm64" ], @@ -960,9 +970,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.0.tgz", - "integrity": "sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.2.tgz", + "integrity": "sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==", "cpu": [ "arm64" ], @@ -974,9 +984,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.0.tgz", - "integrity": "sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.2.tgz", + "integrity": "sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==", "cpu": [ "x64" ], @@ -988,9 +998,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.0.tgz", - "integrity": "sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.2.tgz", + "integrity": "sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==", "cpu": [ "arm64" ], @@ -1002,9 +1012,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.0.tgz", - "integrity": "sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.2.tgz", + "integrity": "sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==", "cpu": [ "x64" ], @@ -1016,9 +1026,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.0.tgz", - "integrity": "sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.2.tgz", + "integrity": "sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==", "cpu": [ "arm" ], @@ -1030,9 +1040,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.0.tgz", - "integrity": "sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.2.tgz", + "integrity": "sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==", "cpu": [ "arm" ], @@ -1044,9 +1054,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.0.tgz", - "integrity": "sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.2.tgz", + "integrity": "sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==", "cpu": [ "arm64" ], @@ -1058,9 +1068,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.0.tgz", - "integrity": "sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.2.tgz", + "integrity": "sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==", "cpu": [ "arm64" ], @@ -1071,10 +1081,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.0.tgz", - "integrity": "sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.50.2.tgz", + "integrity": "sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==", "cpu": [ "loong64" ], @@ -1086,9 +1096,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.0.tgz", - "integrity": "sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.2.tgz", + "integrity": "sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==", "cpu": [ "ppc64" ], @@ -1100,9 +1110,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.0.tgz", - "integrity": "sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.2.tgz", + "integrity": "sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==", "cpu": [ "riscv64" ], @@ -1114,9 +1124,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.0.tgz", - "integrity": "sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.2.tgz", + "integrity": "sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==", "cpu": [ "riscv64" ], @@ -1128,9 +1138,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.0.tgz", - "integrity": "sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.2.tgz", + "integrity": "sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==", "cpu": [ "s390x" ], @@ -1142,9 +1152,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.0.tgz", - "integrity": "sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.2.tgz", + "integrity": "sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==", "cpu": [ "x64" ], @@ -1156,9 +1166,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.0.tgz", - "integrity": "sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.2.tgz", + "integrity": "sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==", "cpu": [ "x64" ], @@ -1170,9 +1180,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.0.tgz", - "integrity": "sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.2.tgz", + "integrity": "sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==", "cpu": [ "arm64" ], @@ -1184,9 +1194,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.0.tgz", - "integrity": "sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.2.tgz", + "integrity": "sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==", "cpu": [ "arm64" ], @@ -1198,9 +1208,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.0.tgz", - "integrity": "sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.2.tgz", + "integrity": "sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==", "cpu": [ "ia32" ], @@ -1212,9 +1222,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.0.tgz", - "integrity": "sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.2.tgz", + "integrity": "sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==", "cpu": [ "x64" ], @@ -1253,9 +1263,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.37.0", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.37.0.tgz", - "integrity": "sha512-xgKtpjQ6Ry4mdShd01ht5AODUsW7+K1iValPDq7QX8zI1hWOKREH9GjG8SRCN5tC4K7UXmMhuQam7gbLByVcnw==", + "version": "2.42.1", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.42.1.tgz", + "integrity": "sha512-SoWdb/OxEKHMlXZ78eNZa4pR1YdOGnUfcFj5NylJv+ZaTrnHK5xapw+7RJP2MiS1D4T+sEH25/tmMtmEl8p6VA==", "dev": true, "license": "MIT", "dependencies": { @@ -1292,9 +1302,9 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.1.4.tgz", - "integrity": "sha512-4jfkfvsGI+U2OhHX8OPCKtMCf7g7ledXhs3E6UcA4EY0jQWsiVbe83pTAHp9XTifzYNOiD4AJieJUsI0qqxsbw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.0.tgz", + "integrity": "sha512-nJsV36+o7rZUDlrnSduMNl11+RoDE1cKqOI0yUEBCcqFoAZOk47TwD3dPKS2WmRutke9StXnzsPBslY7prDM9w==", "dev": true, "license": "MIT", "dependencies": { @@ -1404,13 +1414,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", - "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", + "version": "24.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.1.tgz", + "integrity": "sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.10.0" + "undici-types": "~7.12.0" } }, "node_modules/@types/statuses": { @@ -1526,693 +1536,160 @@ "peerDependenciesMeta": { "typescript": { "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vitest/browser": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-2.1.9.tgz", - "integrity": "sha512-AHDanTP4Ed6J5R6wRBcWRQ+AxgMnNJxsbaa229nFQz5KOMFZqlW11QkIDoLgCjBOpQ1+c78lTN5jVxO8ME+S4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@testing-library/dom": "^10.4.0", - "@testing-library/user-event": "^14.5.2", - "@vitest/mocker": "2.1.9", - "@vitest/utils": "2.1.9", - "magic-string": "^0.30.12", - "msw": "^2.6.4", - "sirv": "^3.0.0", - "tinyrainbow": "^1.2.0", - "ws": "^8.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "playwright": "*", - "vitest": "2.1.9", - "webdriverio": "*" - }, - "peerDependenciesMeta": { - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, "engines": { - "node": ">=12" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitest/browser/node_modules/@vitest/mocker": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", - "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@vitest/spy": "2.1.9", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^18.18.0 || >=20.0.0" }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { + "typescript": { "optional": true } } }, - "node_modules/@vitest/browser/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || >=20.0.0" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@vitest/browser/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitest/browser/node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitest/browser": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-2.1.9.tgz", + "integrity": "sha512-AHDanTP4Ed6J5R6wRBcWRQ+AxgMnNJxsbaa229nFQz5KOMFZqlW11QkIDoLgCjBOpQ1+c78lTN5jVxO8ME+S4w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" + "@testing-library/dom": "^10.4.0", + "@testing-library/user-event": "^14.5.2", + "@vitest/mocker": "2.1.9", + "@vitest/utils": "2.1.9", + "magic-string": "^0.30.12", + "msw": "^2.6.4", + "sirv": "^3.0.0", + "tinyrainbow": "^1.2.0", + "ws": "^8.18.0" }, "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "playwright": "*", + "vitest": "2.1.9", + "webdriverio": "*" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { + "playwright": { "optional": true }, - "sass-embedded": { + "safaridriver": { "optional": true }, - "stylus": { + "webdriverio": { "optional": true - }, - "sugarss": { + } + } + }, + "node_modules/@vitest/browser/node_modules/@vitest/mocker": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", + "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.9", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { "optional": true }, - "terser": { + "vite": { "optional": true } } @@ -2365,35 +1842,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2740,9 +2188,9 @@ } }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2849,9 +2297,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", + "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2862,32 +2310,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" + "@esbuild/aix-ppc64": "0.25.10", + "@esbuild/android-arm": "0.25.10", + "@esbuild/android-arm64": "0.25.10", + "@esbuild/android-x64": "0.25.10", + "@esbuild/darwin-arm64": "0.25.10", + "@esbuild/darwin-x64": "0.25.10", + "@esbuild/freebsd-arm64": "0.25.10", + "@esbuild/freebsd-x64": "0.25.10", + "@esbuild/linux-arm": "0.25.10", + "@esbuild/linux-arm64": "0.25.10", + "@esbuild/linux-ia32": "0.25.10", + "@esbuild/linux-loong64": "0.25.10", + "@esbuild/linux-mips64el": "0.25.10", + "@esbuild/linux-ppc64": "0.25.10", + "@esbuild/linux-riscv64": "0.25.10", + "@esbuild/linux-s390x": "0.25.10", + "@esbuild/linux-x64": "0.25.10", + "@esbuild/netbsd-arm64": "0.25.10", + "@esbuild/netbsd-x64": "0.25.10", + "@esbuild/openbsd-arm64": "0.25.10", + "@esbuild/openbsd-x64": "0.25.10", + "@esbuild/openharmony-arm64": "0.25.10", + "@esbuild/sunos-x64": "0.25.10", + "@esbuild/win32-arm64": "0.25.10", + "@esbuild/win32-ia32": "0.25.10", + "@esbuild/win32-x64": "0.25.10" } }, "node_modules/escalade": { @@ -3815,9 +3263,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.18", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", - "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==", + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "dev": true, "license": "MIT", "dependencies": { @@ -3892,9 +3340,9 @@ "license": "MIT" }, "node_modules/msw": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.11.1.tgz", - "integrity": "sha512-dGSRx0AJmQVQfpGXTsAAq4JFdwdhOBdJ6sJS/jnN0ac3s0NZB6daacHF1z5Pefx+IejmvuiLWw260RlyQOf3sQ==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.11.2.tgz", + "integrity": "sha512-MI54hLCsrMwiflkcqlgYYNJJddY5/+S0SnONvhv1owOplvqohKSQyGejpNdUGyCwgs4IH7PqaNbPw/sKOEze9Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3913,6 +3361,7 @@ "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", "picocolors": "^1.1.1", + "rettime": "^0.7.0", "strict-event-emitter": "^0.5.1", "tough-cookie": "^6.0.0", "type-fest": "^4.26.1", @@ -4448,6 +3897,13 @@ "node": ">=4" } }, + "node_modules/rettime": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz", + "integrity": "sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==", + "dev": true, + "license": "MIT" + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -4477,9 +3933,9 @@ } }, "node_modules/rollup": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.0.tgz", - "integrity": "sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.2.tgz", + "integrity": "sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==", "dev": true, "license": "MIT", "dependencies": { @@ -4493,27 +3949,27 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.0", - "@rollup/rollup-android-arm64": "4.50.0", - "@rollup/rollup-darwin-arm64": "4.50.0", - "@rollup/rollup-darwin-x64": "4.50.0", - "@rollup/rollup-freebsd-arm64": "4.50.0", - "@rollup/rollup-freebsd-x64": "4.50.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.0", - "@rollup/rollup-linux-arm-musleabihf": "4.50.0", - "@rollup/rollup-linux-arm64-gnu": "4.50.0", - "@rollup/rollup-linux-arm64-musl": "4.50.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.0", - "@rollup/rollup-linux-ppc64-gnu": "4.50.0", - "@rollup/rollup-linux-riscv64-gnu": "4.50.0", - "@rollup/rollup-linux-riscv64-musl": "4.50.0", - "@rollup/rollup-linux-s390x-gnu": "4.50.0", - "@rollup/rollup-linux-x64-gnu": "4.50.0", - "@rollup/rollup-linux-x64-musl": "4.50.0", - "@rollup/rollup-openharmony-arm64": "4.50.0", - "@rollup/rollup-win32-arm64-msvc": "4.50.0", - "@rollup/rollup-win32-ia32-msvc": "4.50.0", - "@rollup/rollup-win32-x64-msvc": "4.50.0", + "@rollup/rollup-android-arm-eabi": "4.50.2", + "@rollup/rollup-android-arm64": "4.50.2", + "@rollup/rollup-darwin-arm64": "4.50.2", + "@rollup/rollup-darwin-x64": "4.50.2", + "@rollup/rollup-freebsd-arm64": "4.50.2", + "@rollup/rollup-freebsd-x64": "4.50.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.2", + "@rollup/rollup-linux-arm-musleabihf": "4.50.2", + "@rollup/rollup-linux-arm64-gnu": "4.50.2", + "@rollup/rollup-linux-arm64-musl": "4.50.2", + "@rollup/rollup-linux-loong64-gnu": "4.50.2", + "@rollup/rollup-linux-ppc64-gnu": "4.50.2", + "@rollup/rollup-linux-riscv64-gnu": "4.50.2", + "@rollup/rollup-linux-riscv64-musl": "4.50.2", + "@rollup/rollup-linux-s390x-gnu": "4.50.2", + "@rollup/rollup-linux-x64-gnu": "4.50.2", + "@rollup/rollup-linux-x64-musl": "4.50.2", + "@rollup/rollup-openharmony-arm64": "4.50.2", + "@rollup/rollup-win32-arm64-msvc": "4.50.2", + "@rollup/rollup-win32-ia32-msvc": "4.50.2", + "@rollup/rollup-win32-x64-msvc": "4.50.2", "fsevents": "~2.3.2" } }, @@ -4655,7 +4111,7 @@ "node_modules/sqlite-web": { "version": "0.1.0", "resolved": "file:../pkg/sqlite-web-0.1.0.tgz", - "integrity": "sha512-vZrEmy4lBLoce7i8MvSX/a04ohgySbR+wz3SkjzBWc+AfYZKeSWH2x3SqDOlfwG+X4tpzSQc2HgiGJXgKTuRBA==" + "integrity": "sha512-oOBLQ96xi5i39E1hoPCppwugU9LA772+Eqy2URoLg5700f3Cv2bW3mJZpsu5xRyW+Xpo4PLMHWHkOxtIWqWplQ==" }, "node_modules/stackback": { "version": "0.0.2", @@ -4743,9 +4199,9 @@ } }, "node_modules/svelte": { - "version": "5.38.6", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.38.6.tgz", - "integrity": "sha512-ltBPlkvqk3bgCK7/N323atUpP3O3Y+DrGV4dcULrsSn4fZaaNnOmdplNznwfdWclAgvSr5rxjtzn/zJhRm6TKg==", + "version": "5.38.10", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.38.10.tgz", + "integrity": "sha512-UY+OhrWK7WI22bCZ00P/M3HtyWgwJPi9IxSRkoAE2MeAy6kl7ZlZWJZ8RaB+X4KD/G+wjis+cGVnVYaoqbzBqg==", "dev": true, "license": "MIT", "dependencies": { @@ -4810,21 +4266,6 @@ } } }, - "node_modules/svelte-check/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/svelte-eslint-parser": { "version": "0.43.0", "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz", @@ -4902,14 +4343,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -4980,22 +4421,22 @@ } }, "node_modules/tldts": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.12.tgz", - "integrity": "sha512-M9ZQBPp6FyqhMcl233vHYyYRkxXOA1SKGlnq13S0mJdUhRSwr2w6I8rlchPL73wBwRlyIZpFvpu2VcdSMWLYXw==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.14.tgz", + "integrity": "sha512-lMNHE4aSI3LlkMUMicTmAG3tkkitjOQGDTFboPJwAg2kJXKP1ryWEyqujktg5qhrFZOkk5YFzgkxg3jErE+i5w==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^7.0.12" + "tldts-core": "^7.0.14" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.12.tgz", - "integrity": "sha512-3K76aXywJFduGRsOYoY5JzINLs/WMlOkeDwPL+8OCPq2Rh39gkSDtWAxdJQlWjpun/xF/LHf29yqCi6VC/rHDA==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.14.tgz", + "integrity": "sha512-viZGNK6+NdluOJWwTO9olaugx0bkKhscIdriQQ+lNNhwitIKvb+SvhbYgnCz6j9p7dX3cJntt4agQAKMXLjJ5g==", "dev": true, "license": "MIT" }, @@ -5310,9 +4751,9 @@ } }, "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz", + "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==", "dev": true, "license": "MIT" }, @@ -5334,9 +4775,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.4.tgz", - "integrity": "sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5345,7 +4786,7 @@ "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", - "tinyglobby": "^0.2.14" + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" @@ -5877,9 +5318,9 @@ } }, "node_modules/vite-node/node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "version": "5.4.20", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", + "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "dev": true, "license": "MIT", "dependencies": { @@ -6541,9 +5982,9 @@ } }, "node_modules/vitest/node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "version": "5.4.20", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", + "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "dev": true, "license": "MIT", "dependencies": { @@ -6753,9 +6194,9 @@ } }, "node_modules/zimmerframe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", - "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", "dev": true, "license": "MIT" } From 48b803a6fabc554c50e72e8173edcb83af85a8b9 Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Wed, 17 Sep 2025 21:07:29 +0300 Subject: [PATCH 09/11] remove ss --- ...ld-have-FLOAT-NEGATE-function-available-1.png | Bin 2900 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 svelte-test/tests/database-functions/__screenshots__/float-negate.test.ts/FLOAT-NEGATE-Database-Function-Function-Availability-should-have-FLOAT-NEGATE-function-available-1.png diff --git a/svelte-test/tests/database-functions/__screenshots__/float-negate.test.ts/FLOAT-NEGATE-Database-Function-Function-Availability-should-have-FLOAT-NEGATE-function-available-1.png b/svelte-test/tests/database-functions/__screenshots__/float-negate.test.ts/FLOAT-NEGATE-Database-Function-Function-Availability-should-have-FLOAT-NEGATE-function-available-1.png deleted file mode 100644 index f2d37de02daabb253a52321432654065d53c4601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2900 zcmeAS@N?(olHy`uVBq!ia0y~yV4TOmz}&#W1QcnFZJNcvz|HCD;uumf=gk#EK?Vj6 z21WMY;n(Eq1)BEmX3V(Bcp^|*V2PQ6N3O$!TMY_Z86C5jo3602tmNeg8kHCglF`I4 znhi!vhS4%{v^E&6AV-@9qm81W+)k8ZVEF&PCRvsd*fwSZHHw)T-mek(_v3c3A5etB M)78&qol`;+0J6uJ!2kdN From b5b88f3d5124da39d03d608e6ee4289cbad3952d Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Fri, 19 Sep 2025 09:04:50 +0300 Subject: [PATCH 10/11] update --- Cargo.lock | 4 ++-- pkg/package.json | 2 +- svelte-test/package.json | 2 +- svelte-test/tests/database-functions/float-negate.test.ts | 6 ++++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 23f4aa1..3922f48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4070,7 +4070,7 @@ dependencies = [ [[package]] name = "sqlite-web" -version = "0.0.0" +version = "0.0.1-alpha.0" dependencies = [ "base64 0.21.7", "js-sys", @@ -4086,7 +4086,7 @@ dependencies = [ [[package]] name = "sqlite-web-core" -version = "0.0.0" +version = "0.0.1-alpha.0" dependencies = [ "alloy", "console_error_panic_hook", diff --git a/pkg/package.json b/pkg/package.json index 6cf1f82..f0d647e 100644 --- a/pkg/package.json +++ b/pkg/package.json @@ -12,4 +12,4 @@ "sideEffects": [ "./snippets/*" ] -} +} \ No newline at end of file diff --git a/svelte-test/package.json b/svelte-test/package.json index 74886ee..7c09389 100644 --- a/svelte-test/package.json +++ b/svelte-test/package.json @@ -41,6 +41,6 @@ "type": "module", "dependencies": { "@rainlanguage/float": "^0.0.0-alpha.22", - "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.0.tgz" + "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.0.tgz" } } diff --git a/svelte-test/tests/database-functions/float-negate.test.ts b/svelte-test/tests/database-functions/float-negate.test.ts index 1cfdd2d..d3b0d1f 100644 --- a/svelte-test/tests/database-functions/float-negate.test.ts +++ b/svelte-test/tests/database-functions/float-negate.test.ts @@ -3,7 +3,7 @@ import { createTestDatabase, cleanupDatabase, } from "../fixtures/test-helpers.js"; -import type { SQLiteWasmDatabase } from "sqlite-web"; +import type { SQLiteWasmDatabase } from "@rainlanguage/sqlite-web"; import { createFloatHexMap, decodeFloatHex, @@ -160,7 +160,9 @@ describe("FLOAT_NEGATE Database Function", () => { const bad = ""; const result = await db.query(`SELECT FLOAT_NEGATE('${bad}') as neg`); expect(result.error).toBeDefined(); - expect(result.error?.msg).toContain("Empty string is not a valid hex number"); + expect(result.error?.msg).toContain( + "Empty string is not a valid hex number", + ); }); }); }); From e695e7f141cdb9ce23e9c87ac5f62857f707eb81 Mon Sep 17 00:00:00 2001 From: Arda Nakisci Date: Fri, 19 Sep 2025 09:25:36 +0300 Subject: [PATCH 11/11] update --- Cargo.lock | 4 ++-- svelte-test/package-lock.json | 8 ++++---- svelte-test/package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3922f48..29f0ffc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4070,7 +4070,7 @@ dependencies = [ [[package]] name = "sqlite-web" -version = "0.0.1-alpha.0" +version = "0.0.1-alpha.1" dependencies = [ "base64 0.21.7", "js-sys", @@ -4086,7 +4086,7 @@ dependencies = [ [[package]] name = "sqlite-web-core" -version = "0.0.1-alpha.0" +version = "0.0.1-alpha.1" dependencies = [ "alloy", "console_error_panic_hook", diff --git a/svelte-test/package-lock.json b/svelte-test/package-lock.json index 5042ca4..d9012b0 100644 --- a/svelte-test/package-lock.json +++ b/svelte-test/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "dependencies": { "@rainlanguage/float": "^0.0.0-alpha.22", - "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.0.tgz" + "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.1.tgz" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", @@ -942,9 +942,9 @@ } }, "node_modules/@rainlanguage/sqlite-web": { - "version": "0.0.1-alpha.0", - "resolved": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.0.tgz", - "integrity": "sha512-9RH9HLJlkxAcEIzRvGJnkWBtogzQUhH3ELmm4509ETgxScGW6ffY5N7TpYJwci6Ealeo9443kxPOK+F4haLc9w==" + "version": "0.0.1-alpha.1", + "resolved": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.1.tgz", + "integrity": "sha512-ESo2QZ19Yb/ieJ3b4uL4Ber7QXG2PXww/qkDkwnxEktpPF1y+9ei7MJ7ch1oN77VXVuD+xg9lTdrzbkqwFr/oQ==" }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.50.2", diff --git a/svelte-test/package.json b/svelte-test/package.json index 7c09389..196d627 100644 --- a/svelte-test/package.json +++ b/svelte-test/package.json @@ -41,6 +41,6 @@ "type": "module", "dependencies": { "@rainlanguage/float": "^0.0.0-alpha.22", - "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.0.tgz" + "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.1.tgz" } }