From bf0f8d8ca011e627821445a10bc38519510e5b9d Mon Sep 17 00:00:00 2001 From: Phroi <90913182+phroi@users.noreply.github.com> Date: Wed, 7 Jan 2026 07:35:53 +0100 Subject: [PATCH 01/42] feat(core): transform `Epoch` into a class and add utilities (#314) --- .changeset/crazy-hairs-greet.md | 5 + .changeset/fair-items-shout.md | 6 + packages/core/src/ckb/epoch.test.ts | 241 +++++++++ packages/core/src/ckb/epoch.ts | 488 ++++++++++++++++++ packages/core/src/ckb/index.ts | 1 + packages/core/src/ckb/transaction.ts | 96 +--- packages/core/src/client/clientTypes.ts | 3 +- .../core/src/client/jsonRpc/transformers.ts | 4 +- packages/core/src/molecule/codec.ts | 17 + packages/core/src/molecule/entity.ts | 12 +- packages/core/src/utils/index.ts | 21 +- 11 files changed, 818 insertions(+), 76 deletions(-) create mode 100644 .changeset/crazy-hairs-greet.md create mode 100644 .changeset/fair-items-shout.md create mode 100644 packages/core/src/ckb/epoch.test.ts create mode 100644 packages/core/src/ckb/epoch.ts diff --git a/.changeset/crazy-hairs-greet.md b/.changeset/crazy-hairs-greet.md new file mode 100644 index 000000000..5ba3e63e3 --- /dev/null +++ b/.changeset/crazy-hairs-greet.md @@ -0,0 +1,5 @@ +--- +"@ckb-ccc/core": minor +--- + +feat(Epoch): transform `Epoch` into a class and add utilities diff --git a/.changeset/fair-items-shout.md b/.changeset/fair-items-shout.md new file mode 100644 index 000000000..e0da4d468 --- /dev/null +++ b/.changeset/fair-items-shout.md @@ -0,0 +1,6 @@ +--- +"@ckb-ccc/core": minor +--- + +feat(core): `mol.padding` for padding codec + \ No newline at end of file diff --git a/packages/core/src/ckb/epoch.test.ts b/packages/core/src/ckb/epoch.test.ts new file mode 100644 index 000000000..e969db408 --- /dev/null +++ b/packages/core/src/ckb/epoch.test.ts @@ -0,0 +1,241 @@ +import { describe, expect, it } from "vitest"; +import type { ClientBlockHeader } from "../client/index.js"; +import { Epoch, epochFrom, epochFromHex, epochToHex } from "./epoch"; + +describe("Epoch", () => { + it("constructs from tuple and object via from()", () => { + const a = Epoch.from([1n, 2n, 3n]); + expect(a.integer).toBe(1n); + expect(a.numerator).toBe(2n); + expect(a.denominator).toBe(3n); + + const b = Epoch.from({ integer: 4n, numerator: 5n, denominator: 6n }); + expect(b.integer).toBe(4n); + expect(b.numerator).toBe(5n); + expect(b.denominator).toBe(6n); + + const c = new Epoch(7n, 8n, 9n); + expect(Epoch.from(c)).toBe(c); + }); + + it("packs and unpacks numeric layout (toNum/fromNum) and hex conversion", () => { + const e = new Epoch(0x010203n, 0x0405n, 0x0607n); // use values within bit widths + const packed1 = e.toNum(); + // integer in lower 24 bits, numerator next 16, denominator next 16 + expect(packed1 & 0xffffffn).toBe(0x010203n); + expect((packed1 >> 24n) & 0xffffn).toBe(0x0405n); + expect((packed1 >> 40n) & 0xffffn).toBe(0x0607n); + + const hex = e.toPackedHex(); + expect(typeof hex).toBe("string"); + expect(hex.startsWith("0x")).toBe(true); + + // round-trip + const decoded = Epoch.fromNum(packed1); + expect(decoded.integer).toBe(e.integer); + expect(decoded.numerator).toBe(e.numerator); + expect(decoded.denominator).toBe(e.denominator); + }); + + it("throws when packing negative components with toNum", () => { + const e = new Epoch(-1n, 0n, 1n); + expect(() => e.toNum()).toThrow(); + + const e2 = new Epoch(0n, -1n, 1n); + expect(() => e2.toNum()).toThrow(); + + const e3 = new Epoch(0n, 0n, -1n); + expect(() => e3.toNum()).toThrow(); + }); + + it("throws when packing components too big with toNum", () => { + const e = new Epoch(1n << 24n, 1n, 1n); // integer = 16777215 (24-bit limit + 1) + expect(() => e.toNum()).toThrow(); + + const e2 = new Epoch(1n, 1n << 16n, 1n); // numerator = 65536 (16-bit limit + 1) + expect(() => e2.toNum()).toThrow(); + + const e3 = new Epoch(1n, 1n, 1n << 16n); // denominator = 65536 (16-bit limit + 1) + expect(() => e3.toNum()).toThrow(); + }); + + it("normalizeBase fixes zero or negative denominators", () => { + const a = new Epoch(1n, 2n, 0n).normalizeBase(); + expect(a.denominator).toBe(1n); + expect(a.numerator).toBe(0n); + + const b = new Epoch(1n, 2n, -3n).normalizeBase(); + expect(b.denominator).toBe(3n); + expect(b.numerator).toBe(-2n); + }); + + it("normalizeCanonical reduces fractions and carries/borrows correctly", () => { + // reduction by gcd: 2/4 -> 1/2 + const a = new Epoch(1n, 2n, 4n).normalizeCanonical(); + expect(a.integer).toBe(1n); + expect(a.numerator).toBe(1n); + expect(a.denominator).toBe(2n); + + // carry: 5/2 -> +2 integer, remainder 1/2 + const b = new Epoch(0n, 5n, 2n).normalizeCanonical(); + expect(b.integer).toBe(2n); + expect(b.numerator).toBe(1n); + expect(b.denominator).toBe(2n); + + // borrow when numerator negative + const c = new Epoch(5n, -1n, 2n).normalizeCanonical(); + // -1/2 borrowed: integer 4, numerator becomes 1/2 + expect(c.integer).toBe(4n); + expect(c.numerator).toBe(1n); + expect(c.denominator).toBe(2n); + }); + + it("clone returns a deep copy", () => { + const e = new Epoch(1n, 1n, 1n); + const c = e.clone(); + expect(c).not.toBe(e); + expect(c.integer).toBe(e.integer); + expect(c.numerator).toBe(e.numerator); + expect(c.denominator).toBe(e.denominator); + }); + + it("Genesis and OneNervosDaoCycle helpers", () => { + const g = Epoch.Genesis; + expect(g.integer).toBe(0n); + expect(g.numerator).toBe(0n); + expect(g.denominator).toBe(0n); + + const o = Epoch.OneNervosDaoCycle; + expect(o.integer).toBe(180n); + expect(o.numerator).toBe(0n); + expect(o.denominator).toBe(1n); + }); + + it("comparison operations and compare()", () => { + const a = new Epoch(1n, 0n, 1n); + const b = new Epoch(1n, 1n, 2n); + const c = new Epoch(2n, 0n, 1n); + + expect(a.compare(b)).toBe(-1); + expect(b.compare(a)).toBe(1); + expect(a.compare(a)).toBe(0); + + expect(a.lt(b)).toBe(true); + expect(b.le(b)).toBe(true); + expect(b.eq(new Epoch(1n, 2n, 4n))).toBe(true); // 1 + 1/2 == 1 + 2/4 + expect(c.gt(b)).toBe(true); + expect(c.ge(b)).toBe(true); + }); + + it("add and sub arithmetic with differing denominators", () => { + const a = new Epoch(1n, 1n, 2n); // 1.5 + const b = new Epoch(2n, 1n, 3n); // 2 + 1/3 + const s = a.add(b); + // compute expected: whole = 3, fractional = 1/2 + 1/3 = 5/6 -> 3 + 5/6 + expect(s.integer).toBe(3n); + expect(s.numerator).toBe(5n); + expect(s.denominator).toBe(6n); + + const sub = s.sub(new Epoch(1n, 5n, 6n)); + expect(sub.integer).toBe(2n); + expect(sub.numerator).toBe(0n); + expect(sub.denominator).toBe(1n); + }); + + it("toUnix estimates timestamp using a reference header", () => { + const refEpoch = new Epoch(1n, 0n, 1n); + // Provide a minimal shaped header for toUnix without using `any`. + const refHeader = { + epoch: refEpoch, + timestamp: 1000n, + }; + + // target epoch is 2 + 1/2 + const target = new Epoch(2n, 1n, 2n); + const delta = target.sub(refEpoch); // should be 1 + 1/2 + + // Test default behavior (4 hours) + const expectedDefault = + refHeader.timestamp + + DEFAULT_EPOCH_IN_MILLISECONDS * delta.integer + + (DEFAULT_EPOCH_IN_MILLISECONDS * delta.numerator) / delta.denominator; + + expect(target.toUnix(refHeader)).toBe(expectedDefault); + + // Test custom epoch duration (10 minutes) + const customEpochMs = 10n * 60n * 1000n; + const expectedCustom = + refHeader.timestamp + + customEpochMs * delta.integer + + (customEpochMs * delta.numerator) / delta.denominator; + + expect(target.toUnix(refHeader, customEpochMs)).toBe(expectedCustom); + }); + + it("toUnix accepts full ClientBlockHeader", () => { + const refEpoch = new Epoch(1n, 0n, 1n); + // Simulate a full ClientBlockHeader object + const fullHeader: ClientBlockHeader = { + epoch: refEpoch, + timestamp: 1000n, + compactTarget: 0n, + hash: "0x1234567890abcdef", + number: 100n, + parentHash: "0xabcdef1234567890", + version: 0n, + nonce: 0n, + dao: { c: 0n, ar: 0n, s: 0n, u: 0n }, + extraHash: "0x0000000000000000", + proposalsHash: "0x0000000000000000", + transactionsRoot: "0x0000000000000000", + }; + + const target = new Epoch(2n, 1n, 2n); + const delta = target.sub(fullHeader.epoch); + const expected = + fullHeader.timestamp + + DEFAULT_EPOCH_IN_MILLISECONDS * delta.integer + + (DEFAULT_EPOCH_IN_MILLISECONDS * delta.numerator) / delta.denominator; + + // Full ClientBlockHeader should work due to structural typing + expect(target.toUnix(fullHeader)).toBe(expected); + }); + + it("toUnix accepts object literal with exact required properties", () => { + const target = new Epoch(2n, 1n, 2n); + const minimalRef = { + epoch: new Epoch(1n, 0n, 1n), + timestamp: 1000n, + }; + + const delta = target.sub(minimalRef.epoch); + const expected = + minimalRef.timestamp + + DEFAULT_EPOCH_IN_MILLISECONDS * delta.integer + + (DEFAULT_EPOCH_IN_MILLISECONDS * delta.numerator) / delta.denominator; + + expect(target.toUnix(minimalRef)).toBe(expected); + }); + + it("deprecated helpers epochFrom / epochFromHex / epochToHex", () => { + const e = new Epoch(3n, 4n, 5n); + expect(epochFrom(e)).toBe(e); + + const hex = epochToHex(e); + expect(typeof hex).toBe("string"); + expect(hex.startsWith("0x")).toBe(true); + + const decoded = epochFromHex(hex); + expect(decoded.integer).toBe(e.integer); + expect(decoded.numerator).toBe(e.numerator); + expect(decoded.denominator).toBe(e.denominator); + }); +}); + +/** + * DEFAULT_EPOCH_IN_MILLISECONDS + * + * Constant duration of a single standard ideal epoch expressed in milliseconds. + * Defined as 4 hours = 4 * 60 * 60 * 1000 ms. + */ +const DEFAULT_EPOCH_IN_MILLISECONDS = 4n * 60n * 60n * 1000n; diff --git a/packages/core/src/ckb/epoch.ts b/packages/core/src/ckb/epoch.ts new file mode 100644 index 000000000..36185a056 --- /dev/null +++ b/packages/core/src/ckb/epoch.ts @@ -0,0 +1,488 @@ +import type { ClientBlockHeader } from "../client/clientTypes.js"; +import { Zero } from "../fixedPoint/index.js"; +import { type Hex, type HexLike } from "../hex/index.js"; +import { mol } from "../molecule/index.js"; +import { numFrom, NumLike, numToHex, type Num } from "../num/index.js"; +import { gcd } from "../utils/index.js"; + +/** + * EpochLike + * + * Union type that represents any allowed input shapes that can be converted + * into an Epoch instance. + * + * Accepted shapes: + * - Tuple: [integer, numerator, denominator] where each element is NumLike + * - Object: { integer, numerator, denominator } where each field is NumLike + * - Packed numeric form: Num (bigint) or Hex (RPC-style packed hex) + * + * Notes: + * - When constructing an Epoch from a Num or Hex the packed numeric representation + * encodes integer (24 bits), numerator (16 bits) and denominator (16 bits). + * - Use Epoch.from() to convert any EpochLike into an Epoch instance. + * + * @example + * // From tuple + * Epoch.from([1n, 0n, 1n]); + */ +export type EpochLike = + | [NumLike, NumLike, NumLike] + | { + integer: NumLike; + numerator: NumLike; + denominator: NumLike; + } + | Num + | Hex; + +/** + * Epoch + * + * Represents a blockchain epoch consisting of a whole integer part and an + * optional fractional part represented as numerator/denominator. + * + * Behavior highlights: + * - Internally stores values as Num (bigint). + * - Provides normalization routines to canonicalize the fractional part: + * - normalizeBase(): fixes zero/negative denominators + * - normalizeCanonical(): reduces fraction, borrows/carries whole units + * - Supports arithmetic (add/sub), comparison and conversion utilities. + * + * @example + * const e = new Epoch(1n, 1n, 2n); // 1 + 1/2 + * + * @remarks + * This class is primarily a thin value-object; operations return new Epoch instances. + */ +@mol.codec( + mol.struct({ + padding: mol.padding(1), + denominator: mol.uint(2), + numerator: mol.uint(2), + integer: mol.uint(3), + }), +) +export class Epoch extends mol.Entity.Base() { + /** + * Construct a new Epoch instance. + * + * @param integer - Whole epoch units (Num/bigint) + * @param numerator - Fractional numerator (Num). + * @param denominator - Fractional denominator (Num). + */ + public constructor( + public readonly integer: Num, + public readonly numerator: Num, + public readonly denominator: Num, + ) { + super(); + } + + /** + * Normalize simpler base invariants: + * - If denominator === 0, set denominator to 1 and numerator to 0 for arithmetic convenience. + * - If denominator is negative flip signs of numerator and denominator to keep denominator positive. + * + * This is a minimal correction used before arithmetic or canonical normalization. + * + * @returns New Epoch with denominator corrected (but fraction not reduced). + */ + normalizeBase(): Epoch { + if (this.denominator === Zero) { + return new Epoch(this.integer, Zero, numFrom(1)); + } + + if (this.denominator < Zero) { + return new Epoch(this.integer, -this.numerator, -this.denominator); + } + + return this; + } + + /** + * Perform full canonical normalization of the epoch value. + * + * Steps: + * 1. Apply base normalization (normalizeBase). + * 2. If numerator is negative, borrow whole denominator(s) from the integer part + * so numerator becomes non-negative. This ensures 0 <= numerator < denominator whenever possible. + * 3. Reduce numerator/denominator by their greatest common divisor (gcd). + * 4. Carry any whole units from the reduced numerator into the integer part. + * 5. Ensure numerator is the strict remainder (numerator < denominator). + * + * @returns Canonicalized Epoch with a non-negative, reduced fractional part and integer adjusted accordingly. + */ + normalizeCanonical(): Epoch { + let { integer, numerator, denominator } = this.normalizeBase(); + + // If numerator is negative, borrow enough whole denominators from integer so numerator >= 0. + if (numerator < Zero) { + // n is the minimal non-negative integer such that numerator + n * denominator >= 0 + const n = (-numerator + denominator - 1n) / denominator; + integer -= n; + numerator += denominator * n; + } + + // Reduce the fractional part to lowest terms to keep canonical form and avoid unnecessarily large multiples. + const g = gcd(numerator, denominator); + numerator /= g; + denominator /= g; + + // Move any full units contained in the fraction into integer (e.g., 5/2 => +2 integer, remainder 1/2). + integer += numerator / denominator; + + // Remainder numerator after removing whole units; ensures numerator < denominator. + numerator %= denominator; + + return new Epoch(integer, numerator, denominator); + } + + /** + * Backwards-compatible array-style index 0 referencing the whole epoch integer. + * + * @returns integer portion (Num) + * @deprecated Use `.integer` property instead. + */ + get 0(): Num { + return this.integer; + } + + /** + * Backwards-compatible array-style index 1 referencing the epoch fractional numerator. + * + * @returns numerator portion (Num) + * @deprecated Use `.numerator` property instead. + */ + get 1(): Num { + return this.numerator; + } + + /** + * Backwards-compatible array-style index 2 referencing the epoch fractional denominator. + * + * @returns denominator portion (Num) + * @deprecated Use `.denominator` property instead. + */ + get 2(): Num { + return this.denominator; + } + + /** + * Convert this Epoch into its RPC-style packed numeric representation (Num). + * + * Packing layout (little-endian style fields): + * - integer: lower 24 bits + * - numerator: next 16 bits + * - denominator: next 16 bits + * + * Throws if any component is negative since packed representation assumes non-negative components. + * + * @throws {Error} If integer, numerator or denominator are negative. + * @throws {Error} If integer, numerator or denominator overflow the packing limits. + * @returns Packed numeric representation (Num) suitable for RPC packing. + */ + toNum(): Num { + if ( + this.integer < Zero || + this.numerator < Zero || + this.denominator < Zero + ) { + throw Error("Negative values in Epoch to Num conversion"); + } + + if ( + this.integer >= numFrom("0x1000000") || // 24-bit limit + this.numerator >= numFrom("0x10000") || // 16-bit limit + this.denominator >= numFrom("0x10000") // 16-bit limit + ) { + throw Error( + "Integer must be < 2^24, numerator and denominator must be < 2^16", + ); + } + + return ( + this.integer + + (this.numerator << numFrom(24)) + + (this.denominator << numFrom(40)) + ); + } + + /** + * Convert epoch to hex string representation of the RPC-style packed numeric form. + * + * Returns the same representation used by CKB RPC responses where the + * packed numeric bytes may be trimmed of leading zeros, see {@link numToHex} + * + * @returns Hex string corresponding to the packed epoch. + */ + toPackedHex(): Hex { + return numToHex(this.toNum()); + } + + /** + * Construct an Epoch by unpacking a RPC-style packed numeric form. + * + * @param v - NumLike packed epoch (like Num and Hex) + * @returns Epoch whose integer, numerator and denominator are extracted from the packed layout. + */ + static fromNum(v: NumLike): Epoch { + const num = numFrom(v); + + return new Epoch( + num & numFrom("0xffffff"), + (num >> numFrom(24)) & numFrom("0xffff"), + (num >> numFrom(40)) & numFrom("0xffff"), + ); + } + + /** + * Create an Epoch from an EpochLike value. + * + * Accepts: + * - an Epoch instance (returned as-is) + * - an array [integer, numerator, denominator] where each element is NumLike + * - an object { integer, numerator, denominator } where each field is NumLike + * - a packed numeric-like value handled by fromNum + * + * All numeric-like inputs are converted with numFrom() to produce internal Num values. + * + * @param e - Value convertible to Epoch + * @returns Epoch instance + */ + static override from(e: EpochLike): Epoch { + if (e instanceof Epoch) { + return e; + } + + if (Array.isArray(e)) { + return new Epoch(numFrom(e[0]), numFrom(e[1]), numFrom(e[2])); + } + + if (typeof e === "object") { + return new Epoch( + numFrom(e.integer), + numFrom(e.numerator), + numFrom(e.denominator), + ); + } + + return Epoch.fromNum(e); + } + + /** + * Return a deep copy of this Epoch. + * + * @returns New Epoch instance with identical components. + */ + override clone(): Epoch { + return new Epoch(this.integer, this.numerator, this.denominator); + } + + /** + * Return the genesis epoch. + * + * Note: for historical reasons the genesis epoch is represented with all-zero + * fields, no other epoch instance should use a zero denominator. + * + * @returns Epoch with integer = 0, numerator = 0, denominator = 0. + */ + static get Genesis(): Epoch { + return new Epoch(Zero, Zero, Zero); + } + + /** + * Return an Epoch representing one Nervos DAO cycle (180 epochs exactly). + * + * @returns Epoch equal to 180 with denominator set to 1 to represent an exact whole unit. + */ + static get OneNervosDaoCycle(): Epoch { + return new Epoch(numFrom(180), Zero, numFrom(1)); + } + + /** + * Compare this epoch to another EpochLike. + * + * The comparison computes scaled integer values so fractions are compared without precision loss: + * scaled = (integer * denominator + numerator) * other.denominator + * + * Special-case: identical object references return equality immediately. + * + * @param other - Epoch-like value to compare against. + * @returns 1 if this > other, 0 if equal, -1 if this < other. + * + * @example + * epochA.compare(epochB); // -1|0|1 + */ + compare(other: EpochLike): 1 | 0 | -1 { + if (this === other) { + return 0; + } + + const t = this.normalizeBase(); + const o = Epoch.from(other).normalizeBase(); + + // Compute scaled representations to compare fractions without floating-point arithmetic. + const a = (t.integer * t.denominator + t.numerator) * o.denominator; + const b = (o.integer * o.denominator + o.numerator) * t.denominator; + + return a > b ? 1 : a < b ? -1 : 0; + } + + /** + * Check whether this epoch is less than another EpochLike. + * + * @param other - EpochLike to compare against. + * @returns true if this < other. + */ + lt(other: EpochLike): boolean { + return this.compare(other) < 0; + } + + /** + * Check whether this epoch is less than or equal to another EpochLike. + * + * @param other - EpochLike to compare against. + * @returns true if this <= other. + */ + le(other: EpochLike): boolean { + return this.compare(other) <= 0; + } + + /** + * Check whether this epoch equals another EpochLike. + * + * @param other - EpochLike to compare against. + * @returns true if equal. + */ + eq(other: EpochLike): boolean { + return this.compare(other) === 0; + } + + /** + * Check whether this epoch is greater than or equal to another EpochLike. + * + * @param other - EpochLike to compare against. + * @returns true if this >= other. + */ + ge(other: EpochLike): boolean { + return this.compare(other) >= 0; + } + + /** + * Check whether this epoch is greater than another EpochLike. + * + * @param other - EpochLike to compare against. + * @returns true if this > other. + */ + gt(other: EpochLike): boolean { + return this.compare(other) > 0; + } + + /** + * Add another EpochLike to this epoch and return the normalized result. + * + * Rules and edge-cases: + * - Whole parts are added directly; fractional parts are aligned to a common denominator and added. + * - Final result is canonicalized to reduce the fraction and carry any overflow to the integer part. + * + * @param other - Epoch-like value to add. + * @returns Normalized Epoch representing the sum. + */ + add(other: EpochLike): Epoch { + const t = this.normalizeBase(); + const o = Epoch.from(other).normalizeBase(); + + // Sum whole integer parts. + const integer = t.integer + o.integer; + let numerator: Num; + let denominator: Num; + + // Align denominators if they differ; use multiplication to obtain a common denominator. + if (t.denominator !== o.denominator) { + // Numerators & Denominators are generally small (<= 2000n); multiplication produces a safe common denominator. + numerator = t.numerator * o.denominator + o.numerator * t.denominator; + denominator = t.denominator * o.denominator; + } else { + numerator = t.numerator + o.numerator; + denominator = t.denominator; + } + + // Normalize to reduce fraction and carry whole units into integer. + return new Epoch(integer, numerator, denominator).normalizeCanonical(); + } + + /** + * Subtract an EpochLike from this epoch and return the normalized result. + * + * Implementation notes: + * - Delegates to add by negating the other epoch's integer and numerator while preserving denominator. + * - normalizeCanonical will handle negative numerators by borrowing from integer as necessary. + * + * @param other - Epoch-like value to subtract. + * @returns Normalized Epoch representing this - other. + */ + sub(other: EpochLike): Epoch { + const { integer, numerator, denominator } = Epoch.from(other); + return this.add(new Epoch(-integer, -numerator, denominator)); + } + + /** + * Convert this epoch to an estimated Unix timestamp in milliseconds using a reference header. + * + * Note: This is an estimation that assumes a constant epoch duration. + * + * @param reference - Object providing `epoch` (Epoch) and `timestamp` (Num) fields, such as a ClientBlockHeader. + * @param epochInMilliseconds - Duration of a single epoch in milliseconds. Defaults to 4 hours. + * @returns Estimated Unix timestamp in milliseconds as bigint. + */ + toUnix( + reference: Pick, + epochInMilliseconds: Num = numFrom(4 * 60 * 60 * 1000), + ): bigint { + // Compute relative epoch difference against the reference header. + const { integer, numerator, denominator } = this.sub(reference.epoch); + + // Add whole epoch duration and fractional epoch duration to the reference timestamp. + return ( + reference.timestamp + + epochInMilliseconds * integer + + (epochInMilliseconds * numerator) / denominator + ); + } +} + +/** + * epochFrom + * + * @deprecated prefer using Epoch.from() directly. + * + * @param epochLike - Epoch-like value to convert. + * @returns Epoch instance corresponding to the input. + */ +export function epochFrom(epochLike: EpochLike): Epoch { + return Epoch.from(epochLike); +} + +/** + * epochFromHex + * + * @deprecated use Epoch.fromNum() with numeric input instead. + * + * @param hex - Hex-like or numeric-like value encoding a packed epoch. + * @returns Decoded Epoch instance. + */ +export function epochFromHex(hex: HexLike): Epoch { + return Epoch.fromNum(hex); +} + +/** + * epochToHex + * + * @deprecated use Epoch.from(epochLike).toPackedHex() instead. + * + * @param epochLike - Value convertible to an Epoch (object, tuple or Epoch). + * @returns Hex string representing the packed epoch encoding. + */ +export function epochToHex(epochLike: EpochLike): Hex { + return Epoch.from(epochLike).toPackedHex(); +} diff --git a/packages/core/src/ckb/index.ts b/packages/core/src/ckb/index.ts index 7d20b37d0..198c09299 100644 --- a/packages/core/src/ckb/index.ts +++ b/packages/core/src/ckb/index.ts @@ -1,3 +1,4 @@ +export * from "./epoch.js"; export * from "./hash.js"; export * from "./script.js"; export * from "./transaction.js"; diff --git a/packages/core/src/ckb/transaction.ts b/packages/core/src/ckb/transaction.ts index 9a5920bd9..afb901285 100644 --- a/packages/core/src/ckb/transaction.ts +++ b/packages/core/src/ckb/transaction.ts @@ -21,6 +21,7 @@ import { } from "../num/index.js"; import type { Signer } from "../signer/index.js"; import { apply, reduceAsync } from "../utils/index.js"; +import { Epoch } from "./epoch.js"; import { Script, ScriptLike, ScriptOpt } from "./script.js"; import { DEP_TYPE_TO_NUM, NUM_TO_DEP_TYPE } from "./transaction.advanced.js"; import { @@ -647,45 +648,6 @@ export class Cell extends CellAny { } } -/** - * @public - */ -export type EpochLike = [NumLike, NumLike, NumLike]; -/** - * @public - */ -export type Epoch = [Num, Num, Num]; -/** - * @public - */ -export function epochFrom(epochLike: EpochLike): Epoch { - return [numFrom(epochLike[0]), numFrom(epochLike[1]), numFrom(epochLike[2])]; -} -/** - * @public - */ -export function epochFromHex(hex: HexLike): Epoch { - const num = numFrom(hexFrom(hex)); - - return [ - num & numFrom("0xffffff"), - (num >> numFrom(24)) & numFrom("0xffff"), - (num >> numFrom(40)) & numFrom("0xffff"), - ]; -} -/** - * @public - */ -export function epochToHex(epochLike: EpochLike): Hex { - const epoch = epochFrom(epochLike); - - return numToHex( - numFrom(epoch[0]) + - (numFrom(epoch[1]) << numFrom(24)) + - (numFrom(epoch[2]) << numFrom(40)), - ); -} - /** * @public */ @@ -1887,7 +1849,7 @@ export class Transaction extends mol.Entity.Base< return reduceAsync( this.inputs, async (acc, input) => acc + (await input.getExtraCapacity(client)), - numFrom(0), + Zero, ); } @@ -1903,16 +1865,13 @@ export class Transaction extends mol.Entity.Base< return acc + capacity; }, - numFrom(0), + Zero, )) + (await this.getInputsCapacityExtra(client)) ); } getOutputsCapacity(): Num { - return this.outputs.reduce( - (acc, { capacity }) => acc + capacity, - numFrom(0), - ); + return this.outputs.reduce((acc, { capacity }) => acc + capacity, Zero); } async getInputsUdtBalance(client: Client, type: ScriptLike): Promise { @@ -1926,7 +1885,7 @@ export class Transaction extends mol.Entity.Base< return acc + udtBalanceFrom(outputData); }, - numFrom(0), + Zero, ); } @@ -1937,7 +1896,7 @@ export class Transaction extends mol.Entity.Base< } return acc + udtBalanceFrom(this.outputsData[i]); - }, numFrom(0)); + }, Zero); } async completeInputs( @@ -2059,7 +2018,7 @@ export class Transaction extends mol.Entity.Base< ): Promise { const expectedBalance = this.getOutputsUdtBalance(type) + numFrom(balanceTweak ?? 0); - if (expectedBalance === numFrom(0)) { + if (expectedBalance === Zero) { return 0; } @@ -2073,7 +2032,7 @@ export class Transaction extends mol.Entity.Base< return [balanceAcc + udtBalanceFrom(outputData), countAcc + 1]; }, - [numFrom(0), 0], + [Zero, 0], ); if ( @@ -2512,12 +2471,12 @@ export function calcDaoProfit( * * @param depositHeader - The block header when the DAO deposit was made. * @param withdrawHeader - The block header when the DAO withdrawal was initiated. - * @returns The epoch when the withdrawal can be claimed, represented as [number, index, length]. + * @returns The epoch when the withdrawal can be claimed, represented as an Epoch instance. * * @example * ```typescript - * const claimEpoch = calcDaoClaimEpoch(depositHeader, withdrawHeader); - * console.log(`Can claim at epoch: ${claimEpoch[0]}, index: ${claimEpoch[1]}, length: ${claimEpoch[2]}`); + * const epoch = calcDaoClaimEpoch(depositHeader, withdrawHeader); + * console.log(`Can claim at epoch: ${epoch.integer}, numerator: ${epoch.numerator}, denominator: ${epoch.denominator}`); * ``` * * @remarks @@ -2531,26 +2490,23 @@ export function calcDaoClaimEpoch( depositHeader: ClientBlockHeaderLike, withdrawHeader: ClientBlockHeaderLike, ): Epoch { - const depositEpoch = ClientBlockHeader.from(depositHeader).epoch; - const withdrawEpoch = ClientBlockHeader.from(withdrawHeader).epoch; - const intDiff = withdrawEpoch[0] - depositEpoch[0]; - // deposit[1] withdraw[1] - // ---------- <= ----------- - // deposit[2] withdraw[2] + const deposit = ClientBlockHeader.from(depositHeader).epoch.normalizeBase(); + const withdraw = ClientBlockHeader.from(withdrawHeader).epoch.normalizeBase(); + + const fullCycle = numFrom(180); + const partialCycle = (withdraw.integer - deposit.integer) % fullCycle; + let withdrawInteger = withdraw.integer; if ( - intDiff % numFrom(180) !== numFrom(0) || - depositEpoch[1] * withdrawEpoch[2] <= depositEpoch[2] * withdrawEpoch[1] + partialCycle !== Zero || + // deposit.numerator withdraw.numerator + // --------------------- <= ---------------------- + // deposit.denominator withdraw.denominator + deposit.numerator * withdraw.denominator <= + withdraw.numerator * deposit.denominator ) { - return [ - depositEpoch[0] + (intDiff / numFrom(180) + numFrom(1)) * numFrom(180), - depositEpoch[1], - depositEpoch[2], - ]; + // Need to wait for the next cycle + withdrawInteger += -partialCycle + fullCycle; } - return [ - depositEpoch[0] + (intDiff / numFrom(180)) * numFrom(180), - depositEpoch[1], - depositEpoch[2], - ]; + return new Epoch(withdrawInteger, deposit.numerator, deposit.denominator); } diff --git a/packages/core/src/client/clientTypes.ts b/packages/core/src/client/clientTypes.ts index f7331e8d2..ec57a1a12 100644 --- a/packages/core/src/client/clientTypes.ts +++ b/packages/core/src/client/clientTypes.ts @@ -12,7 +12,6 @@ import { ScriptLike, Transaction, TransactionLike, - epochFrom, hashTypeFrom, } from "../ckb/index.js"; import { Hex, HexLike, hexFrom } from "../hex/index.js"; @@ -398,7 +397,7 @@ export class ClientBlockHeader { s: numFrom(headerLike.dao.s), u: numFrom(headerLike.dao.u), }, - epochFrom(headerLike.epoch), + Epoch.from(headerLike.epoch), hexFrom(headerLike.extraHash), hexFrom(headerLike.hash), numFrom(headerLike.nonce), diff --git a/packages/core/src/client/jsonRpc/transformers.ts b/packages/core/src/client/jsonRpc/transformers.ts index ded06bd80..a571fa412 100644 --- a/packages/core/src/client/jsonRpc/transformers.ts +++ b/packages/core/src/client/jsonRpc/transformers.ts @@ -9,6 +9,7 @@ import { CellOutputLike, DepType, DepTypeLike, + Epoch, HashType, HashTypeLike, OutPoint, @@ -18,7 +19,6 @@ import { Transaction, TransactionLike, depTypeFrom, - epochFromHex, hashTypeFrom, } from "../../ckb/index.js"; import { Hex, HexLike, hexFrom } from "../../hex/index.js"; @@ -217,7 +217,7 @@ export class JsonRpcTransformers { s: numLeFromBytes(dao.slice(16, 24)), u: numLeFromBytes(dao.slice(24, 32)), }, - epoch: epochFromHex(header.epoch), + epoch: Epoch.fromNum(header.epoch), extraHash: header.extra_hash, hash: header.hash, nonce: numFrom(header.nonce), diff --git a/packages/core/src/molecule/codec.ts b/packages/core/src/molecule/codec.ts index 4e80d7a1d..70af71faa 100644 --- a/packages/core/src/molecule/codec.ts +++ b/packages/core/src/molecule/codec.ts @@ -718,3 +718,20 @@ export function uintNumber( outMap: (num) => Number(num), }); } + +/** + * Create a codec for padding bytes. + * The padding bytes are zero-filled when encoding and ignored when decoding. + * @param byteLength The length of the padding in bytes. + */ +export function padding( + byteLength: number, +): Codec { + return Codec.from({ + byteLength, + encode: () => { + return new Uint8Array(byteLength); + }, + decode: () => {}, + }); +} diff --git a/packages/core/src/molecule/entity.ts b/packages/core/src/molecule/entity.ts index 5e1771e8c..67d91b83c 100644 --- a/packages/core/src/molecule/entity.ts +++ b/packages/core/src/molecule/entity.ts @@ -1,6 +1,6 @@ import { Bytes, bytesEq, BytesLike } from "../bytes/index.js"; import { hashCkb } from "../hasher/index.js"; -import { Hex } from "../hex/index.js"; +import { Hex, hexFrom } from "../hex/index.js"; import { Constructor } from "../utils/index.js"; import { Codec } from "./codec.js"; @@ -126,6 +126,15 @@ export abstract class Entity { hash(): Hex { return hashCkb(this.toBytes()); } + + /** + * Convert the entity to a full-byte untrimmed Hex representation + * @public + * @returns The entity full-byte untrimmed hexadecimal representation + */ + toHex(): Hex { + return hexFrom(this.toBytes()); + } } return Impl; @@ -133,6 +142,7 @@ export abstract class Entity { abstract toBytes(): Bytes; abstract hash(): Hex; + abstract toHex(): Hex; abstract clone(): Entity; } diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index e9e73364b..f75bdb8ab 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -1,4 +1,5 @@ -import { NumLike, numFrom, numToHex } from "../num/index.js"; +import { Zero } from "../fixedPoint/index.js"; +import { NumLike, numFrom, numToHex, type Num } from "../num/index.js"; /** * A type safe way to apply a transformer on a value if it's not empty. @@ -196,3 +197,21 @@ export function stringify(val: unknown) { return value; }); } + +/** + * Calculate the greatest common divisor (GCD) of two NumLike values using the Euclidean algorithm. + * + * @param a - First operand. + * @param b - Second operand. + * @returns GCD(a, b) as a Num. + */ +export function gcd(a: NumLike, b: NumLike): Num { + a = numFrom(a); + b = numFrom(b); + a = a < Zero ? -a : a; + b = b < Zero ? -b : b; + while (b !== Zero) { + [a, b] = [b, a % b]; + } + return a; +} From 9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Thu, 8 Jan 2026 20:18:18 +0800 Subject: [PATCH 02/42] feat(core): auto complete cell capacity if it's not enough --- .changeset/weak-adults-rhyme.md | 6 +++ packages/core/src/ckb/transaction.test.ts | 55 ++++++++++------------- packages/core/src/ckb/transaction.ts | 8 ++-- packages/core/src/client/client.ts | 2 +- 4 files changed, 36 insertions(+), 35 deletions(-) create mode 100644 .changeset/weak-adults-rhyme.md diff --git a/.changeset/weak-adults-rhyme.md b/.changeset/weak-adults-rhyme.md new file mode 100644 index 000000000..54dca531b --- /dev/null +++ b/.changeset/weak-adults-rhyme.md @@ -0,0 +1,6 @@ +--- +"@ckb-ccc/core": minor +--- + +feat(core): auto complete cell capacity if it's not enough + \ No newline at end of file diff --git a/packages/core/src/ckb/transaction.test.ts b/packages/core/src/ckb/transaction.test.ts index 6271517d4..c6a3a9d46 100644 --- a/packages/core/src/ckb/transaction.test.ts +++ b/packages/core/src/ckb/transaction.test.ts @@ -385,6 +385,9 @@ describe("Transaction", () => { { previousOutput: mockCapacityCells[0].outPoint, }, + { + previousOutput: mockCapacityCells[1].outPoint, + }, ], outputs: [ { @@ -647,22 +650,13 @@ describe("Transaction", () => { describe("Automatic Capacity Completion", () => { describe("CellOutput.from", () => { - it("should use explicit capacity when provided", () => { - const cellOutput = ccc.CellOutput.from({ - capacity: 1000n, - lock, - }); - - expect(cellOutput.capacity).toBe(1000n); - }); - it("should not modify capacity when data is not provided", () => { const cellOutput = ccc.CellOutput.from({ - capacity: 0n, + capacity: 100n, lock, }); - expect(cellOutput.capacity).toBe(0n); + expect(cellOutput.capacity).toBe(100n); }); it("should calculate capacity automatically when capacity is 0", () => { @@ -679,6 +673,20 @@ describe("Transaction", () => { expect(cellOutput.capacity).toBe(ccc.fixedPointFrom(expectedCapacity)); }); + it("should calculate capacity automatically when capacity is less than min requirement", () => { + const outputData = "0x1234"; // 2 bytes + const cellOutput = ccc.CellOutput.from( + { + capacity: 1000n, + lock, + }, + outputData, + ); + + const expectedCapacity = cellOutput.occupiedSize + 2; // occupiedSize + outputData length + expect(cellOutput.capacity).toBe(ccc.fixedPointFrom(expectedCapacity)); + }); + it("should calculate capacity automatically when capacity is omitted", () => { const outputData = "0x5678"; // 2 bytes const cellOutput = ccc.CellOutput.from( @@ -732,9 +740,9 @@ describe("Transaction", () => { expect(cellOutput.capacity).toBe(ccc.fixedPointFrom(expectedCapacity)); }); - it("should not auto-calculate when capacity is explicitly provided even with outputData", () => { + it("should not auto-calculate when capacity is enough even with outputData", () => { const outputData = "0x1234"; // 2 bytes - const explicitCapacity = 5000n; + const explicitCapacity = ccc.fixedPointFrom(100); const cellOutput = ccc.CellOutput.from( { capacity: explicitCapacity, @@ -745,21 +753,6 @@ describe("Transaction", () => { expect(cellOutput.capacity).toBe(explicitCapacity); }); - - it("should handle the overloaded signature correctly", () => { - // Test the overloaded signature where capacity is omitted and outputData is required - const outputData = "0xabcd"; - const cellOutput = ccc.CellOutput.from( - { - lock, - type, - }, - outputData, - ); - - const expectedCapacity = cellOutput.occupiedSize + 2; - expect(cellOutput.capacity).toBe(ccc.fixedPointFrom(expectedCapacity)); - }); }); describe("Transaction.from", () => { @@ -798,7 +791,7 @@ describe("Transaction", () => { it("should handle mixed explicit and automatic capacity calculation", () => { const outputsData = ["0x12", "0x3456"]; - const explicitCapacity = 5000n; + const explicitCapacity = ccc.fixedPointFrom(100); const tx = ccc.Transaction.from({ outputs: [ { @@ -951,7 +944,7 @@ describe("Transaction", () => { it("should add output with explicit capacity", () => { const tx = ccc.Transaction.default(); const outputData = "0x12"; - const explicitCapacity = 10000n; + const explicitCapacity = ccc.fixedPointFrom(100); tx.addOutput( { @@ -1142,7 +1135,7 @@ describe("Transaction", () => { it("should calculate capacityFree correctly", () => { const outputData = "0x1234"; - const explicitCapacity = 1000n; + const explicitCapacity = ccc.fixedPointFrom(100); const cell = ccc.Cell.from({ outPoint: { txHash: "0x" + "0".repeat(64), diff --git a/packages/core/src/ckb/transaction.ts b/packages/core/src/ckb/transaction.ts index d6e8ae3f7..ad1d9d4d6 100644 --- a/packages/core/src/ckb/transaction.ts +++ b/packages/core/src/ckb/transaction.ts @@ -16,6 +16,7 @@ import { NumLike, numFrom, numFromBytes, + numMax, numToBytes, numToHex, } from "../num/index.js"; @@ -274,9 +275,10 @@ export class CellOutput extends mol.Entity.Base() { ); })(); - if (output.capacity === Zero && outputData != null) { - output.capacity = fixedPointFrom( - output.occupiedSize + bytesFrom(outputData).length, + if (outputData != null) { + output.capacity = numMax( + output.capacity, + fixedPointFrom(output.occupiedSize + bytesFrom(outputData).length), ); } diff --git a/packages/core/src/client/client.ts b/packages/core/src/client/client.ts index 8c0cec7a6..f8d8d5e2a 100644 --- a/packages/core/src/client/client.ts +++ b/packages/core/src/client/client.ts @@ -369,7 +369,7 @@ export abstract class Client { async findSingletonCellByType( type: ScriptLike, - withData = false, + withData = true, ): Promise { for await (const cell of this.findCellsByType( type, From a5268909ea9d61c4e2f5187a43e2318327b27cae Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Tue, 16 Dec 2025 21:49:19 +0800 Subject: [PATCH 03/42] feat(core): add known script did ckb --- .changeset/poor-days-guess.md | 6 +++++ .../client/clientPublicMainnet.advanced.ts | 23 +++++++++++++++++++ .../client/clientPublicTestnet.advanced.ts | 23 +++++++++++++++++++ packages/core/src/client/knownScript.ts | 1 + 4 files changed, 53 insertions(+) create mode 100644 .changeset/poor-days-guess.md diff --git a/.changeset/poor-days-guess.md b/.changeset/poor-days-guess.md new file mode 100644 index 000000000..d6269460c --- /dev/null +++ b/.changeset/poor-days-guess.md @@ -0,0 +1,6 @@ +--- +"@ckb-ccc/core": minor +--- + +feat(core): add known script did ckb + \ No newline at end of file diff --git a/packages/core/src/client/clientPublicMainnet.advanced.ts b/packages/core/src/client/clientPublicMainnet.advanced.ts index 979b0955c..bdcec4cc1 100644 --- a/packages/core/src/client/clientPublicMainnet.advanced.ts +++ b/packages/core/src/client/clientPublicMainnet.advanced.ts @@ -321,6 +321,29 @@ export const MAINNET_SCRIPTS: Record = }, ], }, + [KnownScript.DidCkb]: { + codeHash: + "0x4a06164dc34dccade5afe3e847a97b6db743e79f5477fa3295acf02849c5984a", + hashType: "type", + cellDeps: [ + { + cellDep: { + outPoint: { + txHash: + "0xe2f74c56cdc610d2b9fe898a96a80118845f5278605d7f9ad535dad69ae015bf", + index: 0, + }, + depType: "code", + }, + type: { + codeHash: + "0x00000000000000000000000000000000000000000000000000545950455f4944", + args: "0x55573ef6d78e3ca75170ff476176732309a8b31efe94320a954ded3d75c2cb18", + hashType: "type", + }, + }, + ], + }, [KnownScript.AlwaysSuccess]: { codeHash: "0x3b521cc4b552f109d092d8cc468a8048acb53c5952dbe769d2b2f9cf6e47f7f1", diff --git a/packages/core/src/client/clientPublicTestnet.advanced.ts b/packages/core/src/client/clientPublicTestnet.advanced.ts index be811c7eb..9453d2523 100644 --- a/packages/core/src/client/clientPublicTestnet.advanced.ts +++ b/packages/core/src/client/clientPublicTestnet.advanced.ts @@ -333,6 +333,29 @@ export const TESTNET_SCRIPTS: Record = }, ], }, + [KnownScript.DidCkb]: { + codeHash: + "0x510150477b10d6ab551a509b71265f3164e9fd4137fcb5a4322f49f03092c7c5", + hashType: "type", + cellDeps: [ + { + cellDep: { + outPoint: { + txHash: + "0x0e7a830e2d5ebd05cd45a55f93f94559edea0ef1237b7233f49f7facfb3d6a6c", + index: 0, + }, + depType: "code", + }, + type: { + codeHash: + "0x00000000000000000000000000000000000000000000000000545950455f4944", + args: "0x3c27695173b888ed44ddf36f901789014384ad6c05a9137f3db9a0779c141c35", + hashType: "type", + }, + }, + ], + }, [KnownScript.AlwaysSuccess]: { codeHash: "0x3b521cc4b552f109d092d8cc468a8048acb53c5952dbe769d2b2f9cf6e47f7f1", diff --git a/packages/core/src/client/knownScript.ts b/packages/core/src/client/knownScript.ts index 2171b90b4..90a1546fe 100644 --- a/packages/core/src/client/knownScript.ts +++ b/packages/core/src/client/knownScript.ts @@ -15,6 +15,7 @@ export enum KnownScript { OmniLock = "OmniLock", NostrLock = "NostrLock", UniqueType = "UniqueType", + DidCkb = "DidCkb", // ckb-proxy-locks https://github.com/ckb-devrel/ckb-proxy-locks AlwaysSuccess = "AlwaysSuccess", From 1148a5c403cde985fb4ba713ccfa0c163d287174 Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Thu, 8 Jan 2026 18:43:49 +0800 Subject: [PATCH 04/42] feat(core): extract a universal `Codec` from `mol.Codec` --- .changeset/calm-doors-poke.md | 6 + packages/core/src/barrel.ts | 1 + packages/core/src/ckb/epoch.ts | 13 +- packages/core/src/ckb/script.ts | 7 +- packages/core/src/ckb/transaction.ts | 37 ++-- packages/core/src/codec/codec.ts | 108 ++++++++++ .../core/src/{molecule => codec}/entity.ts | 12 +- packages/core/src/codec/index.ts | 3 + packages/core/src/codec/predefined.ts | 145 ++++++++++++++ packages/core/src/molecule/barrel.ts | 11 +- packages/core/src/molecule/codec.ts | 188 +++--------------- packages/core/src/molecule/predefined.ts | 113 ++++++----- packages/spore/src/cobuild/index.ts | 20 +- packages/spore/src/codec/cluster.ts | 4 +- packages/spore/src/codec/spore.ts | 2 +- packages/spore/src/spore/advanced.ts | 4 +- 16 files changed, 417 insertions(+), 257 deletions(-) create mode 100644 .changeset/calm-doors-poke.md create mode 100644 packages/core/src/codec/codec.ts rename packages/core/src/{molecule => codec}/entity.ts (94%) create mode 100644 packages/core/src/codec/index.ts create mode 100644 packages/core/src/codec/predefined.ts diff --git a/.changeset/calm-doors-poke.md b/.changeset/calm-doors-poke.md new file mode 100644 index 000000000..9809e521f --- /dev/null +++ b/.changeset/calm-doors-poke.md @@ -0,0 +1,6 @@ +--- +"@ckb-ccc/core": minor +--- + +feat(core): extract a universal `Codec` from `mol.Codec` + \ No newline at end of file diff --git a/packages/core/src/barrel.ts b/packages/core/src/barrel.ts index a92855072..85d942322 100644 --- a/packages/core/src/barrel.ts +++ b/packages/core/src/barrel.ts @@ -2,6 +2,7 @@ export * from "./address/index.js"; export * from "./bytes/index.js"; export * from "./ckb/index.js"; export * from "./client/index.js"; +export * from "./codec/index.js"; export * from "./fixedPoint/index.js"; export * from "./hasher/index.js"; export * from "./hex/index.js"; diff --git a/packages/core/src/ckb/epoch.ts b/packages/core/src/ckb/epoch.ts index 36185a056..8ee254ad5 100644 --- a/packages/core/src/ckb/epoch.ts +++ b/packages/core/src/ckb/epoch.ts @@ -1,4 +1,5 @@ import type { ClientBlockHeader } from "../client/clientTypes.js"; +import { codec, codecPadding, codecUint, Entity } from "../codec/index.js"; import { Zero } from "../fixedPoint/index.js"; import { type Hex, type HexLike } from "../hex/index.js"; import { mol } from "../molecule/index.js"; @@ -54,15 +55,15 @@ export type EpochLike = * @remarks * This class is primarily a thin value-object; operations return new Epoch instances. */ -@mol.codec( +@codec( mol.struct({ - padding: mol.padding(1), - denominator: mol.uint(2), - numerator: mol.uint(2), - integer: mol.uint(3), + padding: codecPadding(1), + denominator: codecUint(2), + numerator: codecUint(2), + integer: codecUint(3), }), ) -export class Epoch extends mol.Entity.Base() { +export class Epoch extends Entity.Base() { /** * Construct a new Epoch instance. * diff --git a/packages/core/src/ckb/script.ts b/packages/core/src/ckb/script.ts index 1de3c7ac0..21405c8a5 100644 --- a/packages/core/src/ckb/script.ts +++ b/packages/core/src/ckb/script.ts @@ -1,6 +1,7 @@ import { Bytes, BytesLike, bytesFrom } from "../bytes/index.js"; import type { Client } from "../client/index.js"; import { KnownScript } from "../client/knownScript.js"; +import { Codec, Entity, codec } from "../codec/index.js"; import { Hex, HexLike, hexFrom } from "../hex/index.js"; import { mol } from "../molecule/index.js"; import { @@ -9,7 +10,7 @@ import { NUM_TO_HASH_TYPE, } from "./script.advanced.js"; -export const HashTypeCodec: mol.Codec = mol.Codec.from({ +export const HashTypeCodec: Codec = Codec.from({ byteLength: 1, encode: hashTypeToBytes, decode: hashTypeFromBytes, @@ -108,14 +109,14 @@ export type ScriptLike = { /** * @public */ -@mol.codec( +@codec( mol.table({ codeHash: mol.Byte32, hashType: HashTypeCodec, args: mol.Bytes, }), ) -export class Script extends mol.Entity.Base() { +export class Script extends Entity.Base() { /** * Creates an instance of Script. * diff --git a/packages/core/src/ckb/transaction.ts b/packages/core/src/ckb/transaction.ts index ad1d9d4d6..2cb60e906 100644 --- a/packages/core/src/ckb/transaction.ts +++ b/packages/core/src/ckb/transaction.ts @@ -7,6 +7,7 @@ import { type ClientBlockHeaderLike, } from "../client/index.js"; import { KnownScript } from "../client/knownScript.js"; +import { Codec, Entity, codec } from "../codec/index.js"; import { Zero, fixedPointFrom } from "../fixedPoint/index.js"; import { Hasher, HasherCkb, hashCkb } from "../hasher/index.js"; import { Hex, HexLike, hexFrom } from "../hex/index.js"; @@ -31,7 +32,7 @@ import { } from "./transactionErrors.js"; import type { LumosTransactionSkeletonType } from "./transactionLumos.js"; -export const DepTypeCodec: mol.Codec = mol.Codec.from({ +export const DepTypeCodec: Codec = Codec.from({ byteLength: 1, encode: depTypeToBytes, decode: depTypeFromBytes, @@ -126,13 +127,13 @@ export type OutPointLike = { /** * @public */ -@mol.codec( +@codec( mol.struct({ txHash: mol.Byte32, index: mol.Uint32, }), ) -export class OutPoint extends mol.Entity.Base() { +export class OutPoint extends Entity.Base() { /** * Creates an instance of OutPoint. * @@ -207,14 +208,14 @@ export type CellOutputLike = { /** * @public */ -@mol.codec( +@codec( mol.table({ capacity: mol.Uint64, lock: Script, type: ScriptOpt, }), ) -export class CellOutput extends mol.Entity.Base() { +export class CellOutput extends Entity.Base() { /** * Creates an instance of CellOutput. * @@ -666,10 +667,10 @@ export type SinceLike = /** * @public */ -@mol.codec( +@codec( mol.Uint64.mapIn((encodable: SinceLike) => Since.from(encodable).toNum()), ) -export class Since extends mol.Entity.Base() { +export class Since extends Entity.Base() { /** * Creates an instance of Since. * @@ -787,7 +788,7 @@ export type CellInputLike = ( /** * @public */ -@mol.codec( +@codec( mol .struct({ since: Since, @@ -795,7 +796,7 @@ export type CellInputLike = ( }) .mapIn((encodable: CellInputLike) => CellInput.from(encodable)), ) -export class CellInput extends mol.Entity.Base() { +export class CellInput extends Entity.Base() { /** * Creates an instance of CellInput. * @@ -924,13 +925,13 @@ export type CellDepLike = { /** * @public */ -@mol.codec( +@codec( mol.struct({ outPoint: OutPoint, depType: DepTypeCodec, }), ) -export class CellDep extends mol.Entity.Base() { +export class CellDep extends Entity.Base() { /** * Creates an instance of CellDep. * @@ -998,17 +999,14 @@ export type WitnessArgsLike = { /** * @public */ -@mol.codec( +@codec( mol.table({ lock: mol.BytesOpt, inputType: mol.BytesOpt, outputType: mol.BytesOpt, }), ) -export class WitnessArgs extends mol.Entity.Base< - WitnessArgsLike, - WitnessArgs ->() { +export class WitnessArgs extends Entity.Base() { /** * Creates an instance of WitnessArgs. * @@ -1091,7 +1089,7 @@ export type TransactionLike = { /** * @public */ -@mol.codec( +@codec( mol .table({ raw: RawTransaction, @@ -1106,10 +1104,7 @@ export type TransactionLike = { }) .mapOut((tx) => Transaction.from({ ...tx.raw, witnesses: tx.witnesses })), ) -export class Transaction extends mol.Entity.Base< - TransactionLike, - Transaction ->() { +export class Transaction extends Entity.Base() { /** * Creates an instance of Transaction. * diff --git a/packages/core/src/codec/codec.ts b/packages/core/src/codec/codec.ts new file mode 100644 index 000000000..77a9c4e65 --- /dev/null +++ b/packages/core/src/codec/codec.ts @@ -0,0 +1,108 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import { Bytes, bytesFrom, BytesLike } from "../bytes/index.js"; + +export type CodecLike = { + readonly encode: (encodable: Encodable) => Bytes; + readonly decode: ( + decodable: BytesLike, + config?: { isExtraFieldIgnored?: boolean }, + ) => Decoded; + readonly byteLength?: number; +}; +export class Codec { + constructor( + public readonly encode: (encodable: Encodable) => Bytes, + public readonly decode: ( + decodable: BytesLike, + config?: { isExtraFieldIgnored?: boolean }, // This is equivalent to "compatible" in the Rust implementation of Molecule. + ) => Decoded, + public readonly byteLength?: number, // if provided, treat codec as fixed length + ) {} + + encodeOr(encodable: Encodable, fallback: T): Bytes | T { + try { + return this.encode(encodable); + } catch (_) { + return fallback; + } + } + + decodeOr( + decodable: BytesLike, + fallback: T, + config?: { isExtraFieldIgnored?: boolean }, // This is equivalent to "compatible" in the Rust implementation of Molecule. + ) { + try { + return this.decode(decodable, config); + } catch (_) { + return fallback; + } + } + + static from({ + encode, + decode, + byteLength, + }: CodecLike): Codec { + return new Codec( + (encodable: Encodable) => { + const encoded = encode(encodable); + if (byteLength !== undefined && encoded.byteLength !== byteLength) { + throw new Error( + `Codec.encode: expected byte length ${byteLength}, got ${encoded.byteLength}`, + ); + } + return encoded; + }, + (decodable, config) => { + const decodableBytes = bytesFrom(decodable); + if ( + byteLength !== undefined && + decodableBytes.byteLength !== byteLength + ) { + throw new Error( + `Codec.decode: expected byte length ${byteLength}, got ${decodableBytes.byteLength}`, + ); + } + return decode(decodable, config); + }, + byteLength, + ); + } + + map({ + inMap, + outMap, + }: { + inMap?: (encodable: NewEncodable) => Encodable; + outMap?: (decoded: Decoded) => NewDecoded; + }): Codec { + return new Codec( + (encodable) => + this.encode((inMap ? inMap(encodable) : encodable) as Encodable), + (buffer, config) => + (outMap + ? outMap(this.decode(buffer, config)) + : this.decode(buffer, config)) as NewDecoded, + this.byteLength, + ); + } + + mapIn( + map: (encodable: NewEncodable) => Encodable, + ): Codec { + return this.map({ inMap: map }); + } + + mapOut( + map: (decoded: Decoded) => NewDecoded, + ): Codec { + return this.map({ outMap: map }); + } +} + +export type EncodableType> = + T extends CodecLike ? Encodable : never; +export type DecodedType> = + T extends CodecLike ? Decoded : never; diff --git a/packages/core/src/molecule/entity.ts b/packages/core/src/codec/entity.ts similarity index 94% rename from packages/core/src/molecule/entity.ts rename to packages/core/src/codec/entity.ts index 4486aa5ef..d62a7a539 100644 --- a/packages/core/src/molecule/entity.ts +++ b/packages/core/src/codec/entity.ts @@ -32,7 +32,7 @@ export abstract class Entity { */ static encode(_: SubTypeLike): Bytes { throw new Error( - "encode not implemented, use @ccc.mol.codec to decorate your type", + "encode not implemented, use @ccc.codec to decorate your type", ); } /** @@ -45,7 +45,7 @@ export abstract class Entity { */ static decode(_: BytesLike): SubType { throw new Error( - "decode not implemented, use @ccc.mol.codec to decorate your type", + "decode not implemented, use @ccc.codec to decorate your type", ); } @@ -59,7 +59,7 @@ export abstract class Entity { */ static fromBytes(_bytes: BytesLike): SubType { throw new Error( - "fromBytes not implemented, use @ccc.mol.codec to decorate your type", + "fromBytes not implemented, use @ccc.codec to decorate your type", ); } @@ -156,14 +156,14 @@ export abstract class Entity { * A class decorator to add methods implementation on the {@link Entity.Base} class * @example * ```typescript - * @mol.codec( + * @codec( * mol.table({ * codeHash: mol.Byte32, * hashType: HashTypeCodec, * args: mol.Bytes, * }), * ) - * export class Script extends mol.Entity.Base() { + * export class Script extends Entity.Base() { * from(scriptLike: ScriptLike): Script {} * } * ``` @@ -186,7 +186,7 @@ export function codec< Constructor.byteLength = codec.byteLength; if (Constructor.encode === undefined) { Constructor.encode = function (encodable: TypeLike) { - return codec.encode(encodable); + return codec.encode(Constructor.from(encodable)); }; } if (Constructor.decode === undefined) { diff --git a/packages/core/src/codec/index.ts b/packages/core/src/codec/index.ts new file mode 100644 index 000000000..7688d8753 --- /dev/null +++ b/packages/core/src/codec/index.ts @@ -0,0 +1,3 @@ +export * from "./codec.js"; +export * from "./entity.js"; +export * from "./predefined.js"; diff --git a/packages/core/src/codec/predefined.ts b/packages/core/src/codec/predefined.ts new file mode 100644 index 000000000..b14b90dac --- /dev/null +++ b/packages/core/src/codec/predefined.ts @@ -0,0 +1,145 @@ +import { Bytes, bytesFrom, BytesLike } from "../bytes/index.js"; +import { Hex, hexFrom, HexLike } from "../hex/index.js"; +import { + Num, + numBeFromBytes, + numBeToBytes, + numFromBytes, + NumLike, + numToBytes, +} from "../num/index.js"; +import { Codec } from "./codec.js"; + +/** + * Create a codec to deal with fixed LE or BE bytes. + * @param byteLength + * @param littleEndian + */ +export function codecUint( + byteLength: number, + littleEndian = false, +): Codec { + return Codec.from({ + byteLength, + encode: (numLike) => { + if (littleEndian) { + return numToBytes(numLike, byteLength); + } else { + return numBeToBytes(numLike, byteLength); + } + }, + decode: (buffer) => { + if (littleEndian) { + return numFromBytes(buffer); + } else { + return numBeFromBytes(buffer); + } + }, + }); +} + +/** + * Create a codec to deal with fixed LE or BE bytes. + * @param byteLength + * @param littleEndian + */ +export function codecUintNumber( + byteLength: number, + littleEndian = false, +): Codec { + if (byteLength > 4) { + throw new Error("uintNumber: byteLength must be less than or equal to 4"); + } + return codecUint(byteLength, littleEndian).map({ + outMap: (num) => Number(num), + }); +} + +/** + * Create a codec for padding bytes. + * The padding bytes are zero-filled when encoding and ignored when decoding. + * @param byteLength The length of the padding in bytes. + */ +export function codecPadding( + byteLength: number, +): Codec { + return Codec.from({ + byteLength, + encode: () => { + return new Uint8Array(byteLength); + }, + decode: () => {}, + }); +} + +export const CodecRaw: Codec = Codec.from({ + encode: (value) => bytesFrom(value), + decode: (buffer) => bytesFrom(buffer), +}); + +export const CodecBytes: Codec = Codec.from({ + encode: (value) => bytesFrom(value), + decode: (buffer) => hexFrom(buffer), +}); + +export const CodecUint8 = codecUintNumber(1, true); + +export const CodecUint16LE = codecUintNumber(2, true); +export const CodecUint16BE = codecUintNumber(2); +export const CodecUint16 = CodecUint16LE; + +export const CodecUint32LE = codecUintNumber(4, true); +export const CodecUint32BE = codecUintNumber(4); +export const CodecUint32 = CodecUint32LE; + +export const CodecUint64LE = codecUint(8, true); +export const CodecUint64BE = codecUint(8); +export const CodecUint64 = CodecUint64LE; + +export const CodecUint128LE = codecUint(16, true); +export const CodecUint128BE = codecUint(16); +export const CodecUint128 = CodecUint128LE; + +export const CodecUint256LE = codecUint(32, true); +export const CodecUint256BE = codecUint(32); +export const CodecUint256 = CodecUint256LE; + +export const CodecUint512LE = codecUint(64, true); +export const CodecUint512BE = codecUint(64); +export const CodecUint512 = CodecUint512LE; + +export const CodecBool: Codec = Codec.from({ + byteLength: 1, + encode: (value) => bytesFrom(value ? [1] : [0]), + decode: (buffer) => bytesFrom(buffer)[0] !== 0, +}); + +export const CodecByte: Codec = Codec.from({ + byteLength: 1, + encode: (value) => bytesFrom(value), + decode: (buffer) => hexFrom(buffer), +}); + +export const CodecByte4: Codec = Codec.from({ + byteLength: 4, + encode: (value) => bytesFrom(value), + decode: (buffer) => hexFrom(buffer), +}); + +export const CodecByte8: Codec = Codec.from({ + byteLength: 8, + encode: (value) => bytesFrom(value), + decode: (buffer) => hexFrom(buffer), +}); + +export const CodecByte16: Codec = Codec.from({ + byteLength: 16, + encode: (value) => bytesFrom(value), + decode: (buffer) => hexFrom(buffer), +}); + +export const CodecByte32: Codec = Codec.from({ + byteLength: 32, + encode: (value) => bytesFrom(value), + decode: (buffer) => hexFrom(buffer), +}); diff --git a/packages/core/src/molecule/barrel.ts b/packages/core/src/molecule/barrel.ts index 7688d8753..98d88a3c3 100644 --- a/packages/core/src/molecule/barrel.ts +++ b/packages/core/src/molecule/barrel.ts @@ -1,3 +1,12 @@ +export { + /** + * @deprecated Use ccc.Entity instead + */ + Entity, + /** + * @deprecated Use ccc.codec instead + */ + codec, +} from "../codec/entity.js"; export * from "./codec.js"; -export * from "./entity.js"; export * from "./predefined.js"; diff --git a/packages/core/src/molecule/codec.ts b/packages/core/src/molecule/codec.ts index 70af71faa..ff09cab9a 100644 --- a/packages/core/src/molecule/codec.ts +++ b/packages/core/src/molecule/codec.ts @@ -1,105 +1,45 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { - Bytes, bytesConcat, bytesConcatTo, bytesFrom, BytesLike, } from "../bytes/index.js"; import { - Num, - numBeFromBytes, - numBeToBytes, - numFromBytes, - NumLike, - numToBytes, -} from "../num/index.js"; - -export type CodecLike = { - readonly encode: (encodable: Encodable) => Bytes; - readonly decode: ( - decodable: BytesLike, - config?: { isExtraFieldIgnored?: boolean }, - ) => Decoded; - readonly byteLength?: number; -}; -export class Codec { - constructor( - public readonly encode: (encodable: Encodable) => Bytes, - public readonly decode: ( - decodable: BytesLike, - config?: { isExtraFieldIgnored?: boolean }, // This is equivalent to "compatible" in the Rust implementation of Molecule. - ) => Decoded, - public readonly byteLength?: number, // if provided, treat codec as fixed length - ) {} - - static from({ - encode, - decode, - byteLength, - }: CodecLike): Codec { - return new Codec( - (encodable: Encodable) => { - const encoded = encode(encodable); - if (byteLength !== undefined && encoded.byteLength !== byteLength) { - throw new Error( - `Codec.encode: expected byte length ${byteLength}, got ${encoded.byteLength}`, - ); - } - return encoded; - }, - (decodable, config) => { - const decodableBytes = bytesFrom(decodable); - if ( - byteLength !== undefined && - decodableBytes.byteLength !== byteLength - ) { - throw new Error( - `Codec.decode: expected byte length ${byteLength}, got ${decodableBytes.byteLength}`, - ); - } - return decode(decodable, config); - }, - byteLength, - ); - } - - map({ - inMap, - outMap, - }: { - inMap?: (encodable: NewEncodable) => Encodable; - outMap?: (decoded: Decoded) => NewDecoded; - }): Codec { - return new Codec( - (encodable) => - this.encode((inMap ? inMap(encodable) : encodable) as Encodable), - (buffer, config) => - (outMap - ? outMap(this.decode(buffer, config)) - : this.decode(buffer, config)) as NewDecoded, - this.byteLength, - ); - } - - mapIn( - map: (encodable: NewEncodable) => Encodable, - ): Codec { - return this.map({ inMap: map }); - } - - mapOut( - map: (decoded: Decoded) => NewDecoded, - ): Codec { - return this.map({ outMap: map }); - } -} - -export type EncodableType> = - T extends CodecLike ? Encodable : never; -export type DecodedType> = - T extends CodecLike ? Decoded : never; + Codec, + CodecLike, + DecodedType, + EncodableType, +} from "../codec/index.js"; +import { numFromBytes, NumLike, numToBytes } from "../num/index.js"; + +export { + /** + * @deprecated Use ccc.Codec instead + */ + Codec, + /** + * @deprecated Use ccc.CodecLike instead + */ + CodecLike, + /** + * @deprecated Use ccc.DecodedType instead + */ + DecodedType, + /** + * @deprecated Use ccc.EncodableType instead + */ + EncodableType, + /** + * @deprecated Use ccc.codecUint instead + */ + codecUint as uint, + /** + * @deprecated Use ccc.codecUintNumber instead + */ + codecUintNumber as uintNumber, +} from "../codec/index.js"; function uint32To(numLike: NumLike) { return numToBytes(numLike, 4); @@ -673,65 +613,3 @@ export function array( }, }); } - -/** - * Create a codec to deal with fixed LE or BE bytes. - * @param byteLength - * @param littleEndian - */ -export function uint( - byteLength: number, - littleEndian = false, -): Codec { - return Codec.from({ - byteLength, - encode: (numLike) => { - if (littleEndian) { - return numToBytes(numLike, byteLength); - } else { - return numBeToBytes(numLike, byteLength); - } - }, - decode: (buffer) => { - if (littleEndian) { - return numFromBytes(buffer); - } else { - return numBeFromBytes(buffer); - } - }, - }); -} - -/** - * Create a codec to deal with fixed LE or BE bytes. - * @param byteLength - * @param littleEndian - */ -export function uintNumber( - byteLength: number, - littleEndian = false, -): Codec { - if (byteLength > 4) { - throw new Error("uintNumber: byteLength must be less than or equal to 4"); - } - return uint(byteLength, littleEndian).map({ - outMap: (num) => Number(num), - }); -} - -/** - * Create a codec for padding bytes. - * The padding bytes are zero-filled when encoding and ignored when decoding. - * @param byteLength The length of the padding in bytes. - */ -export function padding( - byteLength: number, -): Codec { - return Codec.from({ - byteLength, - encode: () => { - return new Uint8Array(byteLength); - }, - decode: () => {}, - }); -} diff --git a/packages/core/src/molecule/predefined.ts b/packages/core/src/molecule/predefined.ts index 176da41ca..7e13c3ff8 100644 --- a/packages/core/src/molecule/predefined.ts +++ b/packages/core/src/molecule/predefined.ts @@ -1,91 +1,104 @@ import { bytesFrom, bytesTo } from "../bytes/index.js"; -import { Hex, hexFrom, HexLike } from "../hex/index.js"; -import { byteVec, Codec, option, uint, uintNumber, vector } from "./codec.js"; +import { Codec, CodecBytes } from "../codec/index.js"; +import { Hex, HexLike } from "../hex/index.js"; +import { byteVec, option, vector } from "./codec.js"; + +import { + CodecBool as Bool, + CodecByte as Byte, + CodecByte16 as Byte16, + CodecByte32 as Byte32, + CodecByte4 as Byte4, + CodecByte8 as Byte8, + CodecUint128 as Uint128, + CodecUint128BE as Uint128BE, + CodecUint128LE as Uint128LE, + CodecUint16 as Uint16, + CodecUint16BE as Uint16BE, + CodecUint16LE as Uint16LE, + CodecUint256 as Uint256, + CodecUint256BE as Uint256BE, + CodecUint256LE as Uint256LE, + CodecUint32 as Uint32, + CodecUint32BE as Uint32BE, + CodecUint32LE as Uint32LE, + CodecUint512 as Uint512, + CodecUint512BE as Uint512BE, + CodecUint512LE as Uint512LE, + CodecUint64 as Uint64, + CodecUint64BE as Uint64BE, + CodecUint64LE as Uint64LE, + CodecUint8 as Uint8, +} from "../codec/index.js"; + +export { + Bool, + Byte, + Byte16, + Byte32, + Byte4, + Byte8, + Uint128, + Uint128BE, + Uint128LE, + Uint16, + Uint16BE, + Uint16LE, + Uint256, + Uint256BE, + Uint256LE, + Uint32, + Uint32BE, + Uint32LE, + Uint512, + Uint512BE, + Uint512LE, + Uint64, + Uint64BE, + Uint64LE, + Uint8, +}; -export const Uint8 = uintNumber(1, true); export const Uint8Opt = option(Uint8); export const Uint8Vec = vector(Uint8); -export const Uint16LE = uintNumber(2, true); -export const Uint16BE = uintNumber(2); -export const Uint16 = Uint16LE; export const Uint16Opt = option(Uint16); export const Uint16Vec = vector(Uint16); -export const Uint32LE = uintNumber(4, true); -export const Uint32BE = uintNumber(4); -export const Uint32 = Uint32LE; export const Uint32Opt = option(Uint32); export const Uint32Vec = vector(Uint32); -export const Uint64LE = uint(8, true); -export const Uint64BE = uint(8); -export const Uint64 = Uint64LE; export const Uint64Opt = option(Uint64); export const Uint64Vec = vector(Uint64); -export const Uint128LE = uint(16, true); -export const Uint128BE = uint(16); -export const Uint128 = Uint128LE; export const Uint128Opt = option(Uint128); export const Uint128Vec = vector(Uint128); -export const Uint256LE = uint(32, true); -export const Uint256BE = uint(32); -export const Uint256 = Uint256LE; export const Uint256Opt = option(Uint256); export const Uint256Vec = vector(Uint256); -export const Uint512LE = uint(64, true); -export const Uint512BE = uint(64); -export const Uint512 = Uint512LE; export const Uint512Opt = option(Uint512); export const Uint512Vec = vector(Uint512); -export const Bytes: Codec = byteVec({ - encode: (value) => bytesFrom(value), - decode: (buffer) => hexFrom(buffer), -}); +export const Bytes: Codec = byteVec(CodecBytes); export const BytesOpt = option(Bytes); export const BytesVec = vector(Bytes); -export const Bool: Codec = Codec.from({ - byteLength: 1, - encode: (value) => bytesFrom(value ? [1] : [0]), - decode: (buffer) => bytesFrom(buffer)[0] !== 0, -}); export const BoolOpt = option(Bool); export const BoolVec = vector(Bool); -export const Byte4: Codec = Codec.from({ - byteLength: 4, - encode: (value) => bytesFrom(value), - decode: (buffer) => hexFrom(buffer), -}); +export const ByteOpt = option(Byte); +export const ByteVec = vector(Byte); + export const Byte4Opt = option(Byte4); export const Byte4Vec = vector(Byte4); -export const Byte8: Codec = Codec.from({ - byteLength: 8, - encode: (value) => bytesFrom(value), - decode: (buffer) => hexFrom(buffer), -}); export const Byte8Opt = option(Byte8); export const Byte8Vec = vector(Byte8); -export const Byte16: Codec = Codec.from({ - byteLength: 16, - encode: (value) => bytesFrom(value), - decode: (buffer) => hexFrom(buffer), -}); export const Byte16Opt = option(Byte16); export const Byte16Vec = vector(Byte16); -export const Byte32: Codec = Codec.from({ - byteLength: 32, - encode: (value) => bytesFrom(value), - decode: (buffer) => hexFrom(buffer), -}); export const Byte32Opt = option(Byte32); export const Byte32Vec = vector(Byte32); diff --git a/packages/spore/src/cobuild/index.ts b/packages/spore/src/cobuild/index.ts index c1c5b52b8..4437f56d2 100644 --- a/packages/spore/src/cobuild/index.ts +++ b/packages/spore/src/cobuild/index.ts @@ -1,4 +1,4 @@ -import { ccc, mol } from "@ckb-ccc/core"; +import { ccc } from "@ckb-ccc/core"; import { Action, ActionVec, @@ -11,7 +11,7 @@ export function assembleCreateSporeAction( sporeOutput: ccc.CellOutputLike, sporeData: ccc.BytesLike, scriptInfoHash: ccc.HexLike = DEFAULT_COBUILD_INFO_HASH, -): mol.EncodableType { +): ccc.EncodableType { if (!sporeOutput.type) { throw new Error("Spore cell must have a type script"); } @@ -39,7 +39,7 @@ export function assembleTransferSporeAction( sporeInput: ccc.CellOutputLike, sporeOutput: ccc.CellOutputLike, scriptInfoHash: ccc.HexLike = DEFAULT_COBUILD_INFO_HASH, -): mol.EncodableType { +): ccc.EncodableType { if (!sporeInput.type || !sporeOutput.type) { throw new Error("Spore cell must have a type script"); } @@ -70,7 +70,7 @@ export function assembleTransferSporeAction( export function assembleMeltSporeAction( sporeInput: ccc.CellOutputLike, scriptInfoHash: ccc.HexLike = DEFAULT_COBUILD_INFO_HASH, -): mol.EncodableType { +): ccc.EncodableType { if (!sporeInput.type) { throw new Error("Spore cell must have a type script"); } @@ -97,7 +97,7 @@ export function assembleCreateClusterAction( clusterOutput: ccc.CellOutputLike, clusterData: ccc.BytesLike, scriptInfoHash: ccc.HexLike = DEFAULT_COBUILD_INFO_HASH, -): mol.EncodableType { +): ccc.EncodableType { if (!clusterOutput.type) { throw new Error("Cluster cell must have a type script"); } @@ -125,7 +125,7 @@ export function assembleTransferClusterAction( clusterInput: ccc.CellOutputLike, clusterOutput: ccc.CellOutputLike, scriptInfoHash: ccc.HexLike = DEFAULT_COBUILD_INFO_HASH, -): mol.EncodableType { +): ccc.EncodableType { if (!clusterInput.type || !clusterOutput.type) { throw new Error("Cluster cell must have a type script"); } @@ -155,7 +155,7 @@ export function assembleTransferClusterAction( export async function prepareSporeTransaction( signer: ccc.Signer, txLike: ccc.TransactionLike, - actions: mol.EncodableType, + actions: ccc.EncodableType, ): Promise { let tx = ccc.Transaction.from(txLike); @@ -171,7 +171,7 @@ export async function prepareSporeTransaction( export function unpackCommonCobuildProof( data: ccc.HexLike, -): mol.EncodableType | undefined { +): ccc.EncodableType | undefined { try { return WitnessLayout.decode(ccc.bytesFrom(data)); } catch { @@ -181,7 +181,7 @@ export function unpackCommonCobuildProof( export function extractCobuildActionsFromTx( tx: ccc.Transaction, -): mol.EncodableType { +): ccc.EncodableType { if (tx.witnesses.length === 0) { return []; } @@ -202,7 +202,7 @@ export function extractCobuildActionsFromTx( export function injectCobuild( tx: ccc.Transaction, - actions: mol.EncodableType, + actions: ccc.EncodableType, ): void { tx.setWitnessAt( Math.max(tx.witnesses.length, tx.inputs.length), diff --git a/packages/spore/src/codec/cluster.ts b/packages/spore/src/codec/cluster.ts index e8f7e6367..cc9dc7b44 100644 --- a/packages/spore/src/codec/cluster.ts +++ b/packages/spore/src/codec/cluster.ts @@ -5,7 +5,7 @@ export interface ClusterDataV1View { description: string; } -export const ClusterDataV1: mol.Codec = mol.table({ +export const ClusterDataV1: ccc.Codec = mol.table({ name: mol.String, description: mol.String, }); @@ -16,7 +16,7 @@ export interface ClusterDataV2View { mutantId?: ccc.HexLike; } -export const ClusterDataV2: mol.Codec = mol.table({ +export const ClusterDataV2: ccc.Codec = mol.table({ name: mol.String, description: mol.String, mutantId: mol.BytesOpt, diff --git a/packages/spore/src/codec/spore.ts b/packages/spore/src/codec/spore.ts index 4f41555cc..4f1ebef32 100644 --- a/packages/spore/src/codec/spore.ts +++ b/packages/spore/src/codec/spore.ts @@ -6,7 +6,7 @@ export interface SporeDataView { clusterId?: ccc.HexLike; } -export const SporeData: mol.Codec = mol.table({ +export const SporeData: ccc.Codec = mol.table({ contentType: mol.String, content: mol.Bytes, clusterId: mol.BytesOpt, diff --git a/packages/spore/src/spore/advanced.ts b/packages/spore/src/spore/advanced.ts index 23aa84aa1..e83c0dc84 100644 --- a/packages/spore/src/spore/advanced.ts +++ b/packages/spore/src/spore/advanced.ts @@ -1,4 +1,4 @@ -import { ccc, mol } from "@ckb-ccc/core"; +import { ccc } from "@ckb-ccc/core"; import { assembleTransferClusterAction } from "../advanced.js"; import { assertCluster } from "../cluster/index.js"; import { Action, SporeDataView } from "../codec/index.js"; @@ -9,7 +9,7 @@ export async function prepareCluster( data: SporeDataView, clusterMode?: "lockProxy" | "clusterCell" | "skip", scriptInfoHash?: ccc.HexLike, -): Promise | undefined> { +): Promise | undefined> { // skip if the spore is not belong to a cluster if (!data.clusterId || clusterMode === "skip") { return; From 3bd51300d9602482dd781752f618f6cfd642675c Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Wed, 7 Jan 2026 00:00:37 +0800 Subject: [PATCH 05/42] feat(type-id): add type-id package for Type ID operations --- .changeset/fifty-parks-dress.md | 7 + packages/shell/package.json | 1 + packages/shell/src/advancedBarrel.ts | 1 + packages/shell/src/barrel.ts | 1 + packages/type-id/.npmignore | 21 + packages/type-id/.prettierignore | 15 + packages/type-id/README.md | 41 ++ packages/type-id/eslint.config.mjs | 62 ++ .../misc/basedirs/dist.commonjs/package.json | 3 + .../type-id/misc/basedirs/dist/package.json | 3 + packages/type-id/package.json | 62 ++ packages/type-id/prettier.config.cjs | 11 + packages/type-id/src/advanced.ts | 2 + packages/type-id/src/advancedBarrel.test.ts | 493 ++++++++++++++++ packages/type-id/src/advancedBarrel.ts | 229 ++++++++ packages/type-id/src/barrel.ts | 12 + packages/type-id/src/index.ts | 2 + packages/type-id/tsconfig.base.json | 22 + packages/type-id/tsconfig.commonjs.json | 8 + packages/type-id/tsconfig.json | 8 + packages/type-id/tsdown.config.mts | 36 ++ packages/type-id/typedoc.json | 6 + packages/type-id/vitest.config.mts | 10 + pnpm-lock.yaml | 553 +++++++++++++++--- typedoc.config.mjs | 1 + vitest.config.mts | 4 +- 26 files changed, 1528 insertions(+), 86 deletions(-) create mode 100644 .changeset/fifty-parks-dress.md create mode 100644 packages/type-id/.npmignore create mode 100644 packages/type-id/.prettierignore create mode 100644 packages/type-id/README.md create mode 100644 packages/type-id/eslint.config.mjs create mode 100644 packages/type-id/misc/basedirs/dist.commonjs/package.json create mode 100644 packages/type-id/misc/basedirs/dist/package.json create mode 100644 packages/type-id/package.json create mode 100644 packages/type-id/prettier.config.cjs create mode 100644 packages/type-id/src/advanced.ts create mode 100644 packages/type-id/src/advancedBarrel.test.ts create mode 100644 packages/type-id/src/advancedBarrel.ts create mode 100644 packages/type-id/src/barrel.ts create mode 100644 packages/type-id/src/index.ts create mode 100644 packages/type-id/tsconfig.base.json create mode 100644 packages/type-id/tsconfig.commonjs.json create mode 100644 packages/type-id/tsconfig.json create mode 100644 packages/type-id/tsdown.config.mts create mode 100644 packages/type-id/typedoc.json create mode 100644 packages/type-id/vitest.config.mts diff --git a/.changeset/fifty-parks-dress.md b/.changeset/fifty-parks-dress.md new file mode 100644 index 000000000..384359158 --- /dev/null +++ b/.changeset/fifty-parks-dress.md @@ -0,0 +1,7 @@ +--- +"@ckb-ccc/shell": minor +"@ckb-ccc/type-id": patch +--- + +feat(type-id): add type-id package for Type ID operations + diff --git a/packages/shell/package.json b/packages/shell/package.json index d5aed9bbb..0f7efafca 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -59,6 +59,7 @@ "@ckb-ccc/core": "workspace:*", "@ckb-ccc/spore": "workspace:*", "@ckb-ccc/ssri": "workspace:*", + "@ckb-ccc/type-id": "workspace:*", "@ckb-ccc/udt": "workspace:*" }, "packageManager": "pnpm@10.8.1" diff --git a/packages/shell/src/advancedBarrel.ts b/packages/shell/src/advancedBarrel.ts index ec239348c..f2a60e5b7 100644 --- a/packages/shell/src/advancedBarrel.ts +++ b/packages/shell/src/advancedBarrel.ts @@ -1,2 +1,3 @@ export * from "@ckb-ccc/core/advancedBarrel"; export { sporeA } from "@ckb-ccc/spore/advanced"; +export { typeIdA } from "@ckb-ccc/type-id/advanced"; diff --git a/packages/shell/src/barrel.ts b/packages/shell/src/barrel.ts index 9cca15d65..3c7752a39 100644 --- a/packages/shell/src/barrel.ts +++ b/packages/shell/src/barrel.ts @@ -1,4 +1,5 @@ export * from "@ckb-ccc/core/barrel"; export { spore } from "@ckb-ccc/spore"; export { ssri } from "@ckb-ccc/ssri"; +export { typeId } from "@ckb-ccc/type-id"; export { udt } from "@ckb-ccc/udt"; diff --git a/packages/type-id/.npmignore b/packages/type-id/.npmignore new file mode 100644 index 000000000..7a88408aa --- /dev/null +++ b/packages/type-id/.npmignore @@ -0,0 +1,21 @@ +node_modules/ +misc/ + +*test.js +*test.ts +*test.d.ts +*test.d.ts.map +*spec.js +*spec.ts +*spec.d.ts +*spec.d.ts.map + +tsconfig.json +tsconfig.*.json +eslint.config.mjs +.prettierrc +.prettierignore + +tsconfig.tsbuildinfo +tsconfig.*.tsbuildinfo +.github/ diff --git a/packages/type-id/.prettierignore b/packages/type-id/.prettierignore new file mode 100644 index 000000000..aef5d239c --- /dev/null +++ b/packages/type-id/.prettierignore @@ -0,0 +1,15 @@ +node_modules/ + +dist/ +dist.commonjs/ + +.npmignore +.prettierrc +tsconfig.json +eslint.config.mjs +prettier.config.* + +tsconfig.tsbuildinfo +.github/ + +CHANGELOG.md diff --git a/packages/type-id/README.md b/packages/type-id/README.md new file mode 100644 index 000000000..a569c8126 --- /dev/null +++ b/packages/type-id/README.md @@ -0,0 +1,41 @@ +

+ + Logo + +

+ +

+ CCC's Support for Type ID +

+ +

+ NPM Version + GitHub commit activity + GitHub last commit + GitHub branch check runs + Playground + App + Docs +

+ +

+ CCC - CKBers' Codebase is a one-stop solution for your CKB JS/TS ecosystem development. +
+ Empower yourself with CCC to discover the unlimited potential of CKB. +
+ Interoperate with wallets from different chain ecosystems. +
+ Fully enabling CKB's Turing completeness and cryptographic freedom power. +

+ +

+ Read more about CCC on our website or GitHub Repo. +

diff --git a/packages/type-id/eslint.config.mjs b/packages/type-id/eslint.config.mjs new file mode 100644 index 000000000..b6132c277 --- /dev/null +++ b/packages/type-id/eslint.config.mjs @@ -0,0 +1,62 @@ +// @ts-check + +import eslint from "@eslint/js"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; +import tseslint from "typescript-eslint"; + +import { dirname } from "path"; +import { fileURLToPath } from "url"; + +export default [ + ...tseslint.config({ + files: ["**/*.ts"], + extends: [ + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + ], + rules: { + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "all", + argsIgnorePattern: "^_", + caughtErrors: "all", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + varsIgnorePattern: "^_", + ignoreRestSiblings: true, + }, + ], + "@typescript-eslint/unbound-method": ["error", { ignoreStatic: true }], + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/only-throw-error": [ + "error", + { + allowThrowingAny: true, + allowThrowingUnknown: true, + allowRethrowing: true, + }, + ], + "@typescript-eslint/prefer-promise-reject-errors": [ + "error", + { + allowThrowingAny: true, + allowThrowingUnknown: true, + }, + ], + "no-empty": "off", + "prefer-const": [ + "error", + { ignoreReadBeforeAssign: true, destructuring: "all" }, + ], + }, + languageOptions: { + parserOptions: { + project: true, + tsconfigRootDir: dirname(fileURLToPath(import.meta.url)), + }, + }, + }), + eslintPluginPrettierRecommended, +]; diff --git a/packages/type-id/misc/basedirs/dist.commonjs/package.json b/packages/type-id/misc/basedirs/dist.commonjs/package.json new file mode 100644 index 000000000..5bbefffba --- /dev/null +++ b/packages/type-id/misc/basedirs/dist.commonjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/packages/type-id/misc/basedirs/dist/package.json b/packages/type-id/misc/basedirs/dist/package.json new file mode 100644 index 000000000..3dbc1ca59 --- /dev/null +++ b/packages/type-id/misc/basedirs/dist/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/type-id/package.json b/packages/type-id/package.json new file mode 100644 index 000000000..dcdf82b3b --- /dev/null +++ b/packages/type-id/package.json @@ -0,0 +1,62 @@ +{ + "name": "@ckb-ccc/type-id", + "version": "0.0.0", + "description": "CCC - CKBer's Codebase. CCC's support for Type ID", + "author": "Hanssen0 ", + "license": "MIT", + "private": false, + "homepage": "https://github.com/ckb-devrel/ccc", + "repository": { + "type": "git", + "url": "git://github.com/ckb-devrel/ccc.git" + }, + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", + "exports": { + ".": { + "require": "./dist.commonjs/index.js", + "import": "./dist/index.mjs" + }, + "./advanced": { + "require": "./dist.commonjs/advanced.js", + "import": "./dist/advanced.mjs" + }, + "./advancedBarrel": { + "require": "./dist.commonjs/advancedBarrel.js", + "import": "./dist/advancedBarrel.mjs" + }, + "./barrel": { + "require": "./dist.commonjs/barrel.js", + "import": "./dist/barrel.mjs" + }, + "./package.json": "./package.json" + }, + "scripts": { + "test": "vitest", + "test:ci": "vitest run", + "build": "tsdown", + "lint": "eslint ./src", + "format": "prettier --write . && eslint --fix ./src" + }, + "devDependencies": { + "@eslint/js": "^9.34.0", + "@types/node": "^24.3.0", + "eslint": "^9.34.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "prettier": "^3.6.2", + "prettier-plugin-organize-imports": "^4.2.0", + "tsdown": "0.19.0-beta.3", + "typescript": "^5.9.2", + "typescript-eslint": "^8.41.0", + "vitest": "^3.2.4" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@ckb-ccc/core": "workspace:*" + }, + "packageManager": "pnpm@10.8.1", + "types": "./dist.commonjs/index.d.ts" +} diff --git a/packages/type-id/prettier.config.cjs b/packages/type-id/prettier.config.cjs new file mode 100644 index 000000000..5e1810363 --- /dev/null +++ b/packages/type-id/prettier.config.cjs @@ -0,0 +1,11 @@ +/** + * @see https://prettier.io/docs/configuration + * @type {import("prettier").Config} + */ +const config = { + singleQuote: false, + trailingComma: "all", + plugins: [require.resolve("prettier-plugin-organize-imports")], +}; + +module.exports = config; diff --git a/packages/type-id/src/advanced.ts b/packages/type-id/src/advanced.ts new file mode 100644 index 000000000..fa30ed271 --- /dev/null +++ b/packages/type-id/src/advanced.ts @@ -0,0 +1,2 @@ +export * from "./advancedBarrel.js"; +export * as typeIdA from "./advancedBarrel.js"; diff --git a/packages/type-id/src/advancedBarrel.test.ts b/packages/type-id/src/advancedBarrel.test.ts new file mode 100644 index 000000000..d7fad2376 --- /dev/null +++ b/packages/type-id/src/advancedBarrel.test.ts @@ -0,0 +1,493 @@ +import { ccc } from "@ckb-ccc/core"; +import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; +import { buildTypeIdOperations } from "./advancedBarrel.js"; + +describe("type-id", () => { + let client: ccc.Client; + let signer: ccc.Signer; + + const typeIdScript = { + codeHash: + "0x00000000000000000000000000000000000000000000000000545950455f4944", + hashType: "type" as const, + args: "0x", + }; + const typeIdCellDep = { + outPoint: { + txHash: + "0x1111111111111111111111111111111111111111111111111111111111111111", + index: 0, + }, + depType: "code" as const, + }; + + beforeEach(() => { + client = { + getKnownScript: vi.fn(), + getCellDeps: vi.fn(), + findSingletonCellByType: vi.fn(), + } as unknown as ccc.Client; + + signer = { + client, + getRecommendedAddressObj: vi.fn(), + findCells: vi.fn(), + } as unknown as ccc.Signer; + + (client.getKnownScript as Mock).mockResolvedValue({ + ...typeIdScript, + cellDeps: [{ cellDep: typeIdCellDep }], + }); + + (client.getCellDeps as Mock).mockImplementation( + async (deps: ccc.CellDepInfoLike[]) => + deps.map((d) => ccc.CellDep.from(d.cellDep)), + ); + + (signer.getRecommendedAddressObj as Mock).mockResolvedValue({ + script: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x1234", + }), + }); + }); + + describe("buildTypeIdOperations with custom options", () => { + it("should use custom codec", async () => { + const customCodec = { + encode: (data: number) => ccc.numLeToBytes(data, 4), + decode: (bytes: ccc.BytesLike) => Number(ccc.numLeFromBytes(bytes)), + }; + + const { create } = buildTypeIdOperations({ + getScriptInfo: async () => ({ + ...typeIdScript, + cellDeps: [{ cellDep: typeIdCellDep }], + }), + codec: customCodec, + }); + + const inputCell = ccc.Cell.from({ + outPoint: { txHash: "0x" + "2".repeat(64), index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + (signer.findCells as Mock).mockImplementation(async function* () { + yield inputCell; + }); + + const { tx } = await create({ + signer, + data: 123456, + }); + + expect(tx.outputsData[0]).toBe(ccc.hexFrom(ccc.numLeToBytes(123456, 4))); + }); + + it("should use custom calculateTypeId", async () => { + const customId = "0x" + "9".repeat(64); + const calculateTypeId = vi.fn().mockResolvedValue(customId); + + const { create } = buildTypeIdOperations({ + getScriptInfo: async () => ({ + ...typeIdScript, + cellDeps: [{ cellDep: typeIdCellDep }], + }), + calculateTypeId, + }); + + const inputCell = ccc.Cell.from({ + outPoint: { txHash: "0x" + "2".repeat(64), index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + (signer.findCells as Mock).mockImplementation(async function* () { + yield inputCell; + }); + + const { id, tx } = await create({ + signer, + data: "0x", + }); + + expect(calculateTypeId).toHaveBeenCalled(); + expect(id).toBe(customId); + expect(tx.outputs[0].type?.args).toBe(customId); + }); + + it("should use custom addCellDeps", async () => { + const customDep = ccc.CellDep.from({ + outPoint: { txHash: "0x" + "a".repeat(64), index: 0 }, + depType: "code", + }); + const addCellDeps = vi + .fn() + .mockImplementation(async (_: ccc.Client, tx: ccc.Transaction) => { + tx.addCellDeps(customDep); + return tx; + }); + + const { create } = buildTypeIdOperations({ + getScriptInfo: async () => ({ + ...typeIdScript, + cellDeps: [{ cellDep: typeIdCellDep }], + }), + addCellDeps, + }); + + const inputCell = ccc.Cell.from({ + outPoint: { txHash: "0x" + "2".repeat(64), index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + (signer.findCells as Mock).mockImplementation(async function* () { + yield inputCell; + }); + + const { tx } = await create({ + signer, + data: "0x", + }); + + expect(addCellDeps).toHaveBeenCalled(); + expect(tx.cellDeps).toContainEqual(customDep); + }); + }); + + describe("Type ID Operations", () => { + const { create, transfer, destroy } = buildTypeIdOperations({ + getScriptInfo: async () => ({ + ...typeIdScript, + cellDeps: [{ cellDep: typeIdCellDep }], + }), + }); + + describe("create", () => { + it("should create a transaction with correct type id", async () => { + const inputCell = ccc.Cell.from({ + outPoint: { + txHash: "0x" + "2".repeat(64), + index: 0, + }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + + (signer.findCells as Mock).mockImplementation(async function* () { + yield inputCell; + }); + + const data = "0x1234"; + const { tx, id, index } = await create({ + signer, + data, + }); + + expect(tx.inputs.length).toBe(1); + expect(tx.inputs[0].previousOutput).toEqual(inputCell.outPoint); + + expect(tx.outputs.length).toBe(1); + expect(index).toBe(0); + + const expectedId = ccc.hashTypeId(tx.inputs[0], 0); + expect(id).toBe(expectedId); + + const output = tx.outputs[0]; + expect(output.type).toBeDefined(); + expect(output.type?.codeHash).toBe(typeIdScript.codeHash); + expect(output.type?.hashType).toBe(typeIdScript.hashType); + expect(output.type?.args).toBe(id); + expect(tx.outputsData[0]).toBe(ccc.hexFrom(data)); + + expect(tx.cellDeps.length).toBeGreaterThan(0); + expect(tx.cellDeps[0].outPoint).toEqual( + ccc.OutPoint.from(typeIdCellDep.outPoint), + ); + }); + + it(" should append to existing tx", async () => { + const existingTx = ccc.Transaction.from({ + headerDeps: ["0x" + "e".repeat(64)], + }); + + const inputCell = ccc.Cell.from({ + outPoint: { txHash: "0x" + "2".repeat(64), index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + (signer.findCells as Mock).mockImplementation(async function* () { + yield inputCell; + }); + + const { tx } = await create({ + signer, + data: "0x", + tx: existingTx, + }); + + expect(tx.headerDeps).toContain("0x" + "e".repeat(64)); + }); + }); + + it("should accept explicit receiver", async () => { + const receiver = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xffee", + }); + + const inputCell = ccc.Cell.from({ + outPoint: { txHash: "0x" + "2".repeat(64), index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + (signer.findCells as Mock).mockImplementation(async function* () { + yield inputCell; + }); + + const { tx } = await create({ + signer, + data: "0x", + receiver, + }); + + expect(tx.outputs[0].lock).toEqual(receiver); + }); + + describe("transferTypeId", () => { + it("should transfer type id cell to new receiver", async () => { + const id = "0x" + "3".repeat(64); + const receiver = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xabcd", + }); + + const typeScript = ccc.Script.from({ + ...typeIdScript, + args: id, + }); + + const existingCell = ccc.Cell.from({ + outPoint: { + txHash: "0x" + "4".repeat(64), + index: 0, + }, + cellOutput: { + capacity: ccc.fixedPointFrom(2000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + type: typeScript, + }, + outputData: "0x5678", + }); + + (client.findSingletonCellByType as Mock).mockResolvedValue( + existingCell, + ); + + const newData = "0x9999"; + const { tx, inIndex, outIndex } = await transfer({ + client, + id, + receiver, + data: newData, + }); + + expect(tx.inputs[inIndex].previousOutput).toEqual( + existingCell.outPoint, + ); + + const output = tx.outputs[outIndex]; + expect(output.lock).toEqual(receiver); + expect(output.type).toEqual(typeScript); + expect(tx.outputsData[outIndex]).toBe(ccc.hexFrom(newData)); + }); + + it("transfer should preserve data if not provided", async () => { + const id = "0x" + "3".repeat(64); + const receiver = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xabcd", + }); + const typeScript = ccc.Script.from({ ...typeIdScript, args: id }); + const existingCell = ccc.Cell.from({ + outPoint: { txHash: "0x" + "4".repeat(64), index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(2000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + type: typeScript, + }, + outputData: "0x123456", + }); + + (client.findSingletonCellByType as Mock).mockResolvedValue( + existingCell, + ); + + const { tx, outIndex } = await transfer({ + client, + id, + receiver, + }); + + expect(tx.outputsData[outIndex]).toBe("0x123456"); + }); + + it("should transfer type id cell with data transformer", async () => { + const id = "0x" + "3".repeat(64); + const receiver = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xabcd", + }); + + const typeScript = ccc.Script.from({ + ...typeIdScript, + args: id, + }); + + const existingCell = ccc.Cell.from({ + outPoint: { + txHash: "0x" + "4".repeat(64), + index: 0, + }, + cellOutput: { + capacity: ccc.fixedPointFrom(2000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + type: typeScript, + }, + outputData: "0x1234", + }); + + (client.findSingletonCellByType as Mock).mockResolvedValue( + existingCell, + ); + + const { tx, outIndex } = await transfer({ + client, + id, + receiver, + data: (c, d) => ccc.bytesConcat(c.outputData, d ?? "0x", "0x5678"), + }); + + const output = tx.outputs[outIndex]; + expect(output.lock).toEqual(receiver); + expect(output.type).toEqual(typeScript); + expect(tx.outputsData[outIndex]).toBe(ccc.hexFrom("0x123412345678")); + }); + + it("should throw error if type id cell not found", async () => { + (client.findSingletonCellByType as Mock).mockResolvedValue(undefined); + + await expect( + transfer({ + client, + id: "0x" + "0".repeat(64), + receiver: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }), + ).rejects.toThrow("Type ID"); + }); + }); + + describe("destroyTypeId", () => { + it("should consume type id cell without creating new one", async () => { + const id = "0x" + "5".repeat(64); + const typeScript = ccc.Script.from({ + ...typeIdScript, + args: id, + }); + + const existingCell = ccc.Cell.from({ + outPoint: { + txHash: "0x" + "6".repeat(64), + index: 0, + }, + cellOutput: { + capacity: ccc.fixedPointFrom(3000), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + type: typeScript, + }, + outputData: "0x", + }); + + (client.findSingletonCellByType as Mock).mockResolvedValue( + existingCell, + ); + + const { tx, index } = await destroy({ + client, + id, + }); + + expect(tx.inputs[index].previousOutput).toEqual(existingCell.outPoint); + + const hasTypeOutput = tx.outputs.some((o) => o.type?.eq(typeScript)); + expect(hasTypeOutput).toBe(false); + }); + }); + }); +}); diff --git a/packages/type-id/src/advancedBarrel.ts b/packages/type-id/src/advancedBarrel.ts new file mode 100644 index 000000000..29a171d4c --- /dev/null +++ b/packages/type-id/src/advancedBarrel.ts @@ -0,0 +1,229 @@ +import { ccc } from "@ckb-ccc/core"; + +/** + * Build Type ID operations. + * + * @param props The properties to build the operations. + * @param props.getScriptInfo Function to get the script info. + * @param props.calculateTypeId Function to calculate the Type ID. + * @param props.addCellDeps Function to add cell dependencies. + */ + +export function buildTypeIdOperations< + Encodable = ccc.BytesLike, + Decoded = ccc.Bytes, +>(props: { + getScriptInfo: (client: ccc.Client) => Promise; + codec?: ccc.CodecLike | null; + calculateTypeId?: + | ((client: ccc.Client, tx: ccc.Transaction) => Promise) + | null; + addCellDeps?: + | (( + client: ccc.Client, + tx: ccc.Transaction, + scriptInfo: ccc.ScriptInfo, + ) => Promise) + | null; +}) { + async function getScriptInfo(client: ccc.Client): Promise { + return ccc.ScriptInfo.from(await props.getScriptInfo(client)); + } + + const codec = ( + props.codec ? ccc.Codec.from(props.codec) : ccc.CodecRaw + ) as ccc.Codec; + + function getTypeScript(scriptInfo: ccc.ScriptInfo, args: ccc.HexLike) { + return ccc.Script.from({ + ...scriptInfo, + args, + }); + } + + async function addCellDeps( + client: ccc.Client, + tx: ccc.Transaction, + scriptInfo: ccc.ScriptInfo, + ): Promise { + if (props.addCellDeps) { + return ccc.Transaction.from( + await props.addCellDeps(client, tx, scriptInfo), + ); + } + + tx.addCellDeps(...(await client.getCellDeps(scriptInfo.cellDeps))); + return tx; + } + + async function calculateTypeId( + client: ccc.Client, + tx: ccc.Transaction, + ): Promise { + if (props.calculateTypeId) { + return ccc.hexFrom(await props.calculateTypeId(client, tx)); + } + + return ccc.hashTypeId(tx.inputs[0], tx.outputs.length); + } + + return { + /** + * Create a Type ID cell. + * + * @param props The arguments for creating the cell. + * @param props.signer The signer to sign the transaction. + * @param props.receiver The receiver script (optional). + * @param props.data The output data. + * @param props.tx The transaction skeleton (optional). + */ + async create( + this: void, + props: { + signer: ccc.Signer; + data: Encodable; + receiver?: ccc.ScriptLike | null; + tx?: ccc.TransactionLike | null; + }, + ): Promise<{ + tx: ccc.Transaction; + id: ccc.Hex; + index: number; + }> { + const { signer, receiver, data, tx: txLike } = props; + const tx = ccc.Transaction.from(txLike ?? {}); + + await tx.completeInputsAtLeastOne(signer); + const id = await calculateTypeId(signer.client, tx); + + const scriptInfo = await getScriptInfo(signer.client); + const len = tx.addOutput({ + cellOutput: { + type: getTypeScript(scriptInfo, id), + lock: receiver + ? ccc.Script.from(receiver) + : (await signer.getRecommendedAddressObj()).script, + }, + outputData: codec.encode(data), + }); + + return { + tx: await addCellDeps(signer.client, tx, scriptInfo), + id, + index: len - 1, + }; + }, + + /** + * Transfer a Type ID cell. + * + * @param props The arguments for transferring the cell. + * @param props.client The client to communicate with CKB. + * @param props.id The Type ID to transfer. + * @param props.receiver The new receiver script. + * @param props.tx The transaction skeleton (optional). + * @param props.data The new output data or a transformer to update the data (optional). + */ + async transfer( + this: void, + props: { + client: ccc.Client; + id: ccc.HexLike; + receiver: ccc.ScriptLike; + tx?: ccc.TransactionLike | null; + data?: + | Encodable + | ((cell: ccc.Cell, data?: Decoded) => Encodable | Promise) + | null; + }, + ): Promise<{ + tx: ccc.Transaction; + inIndex: number; + outIndex: number; + }> { + const { client, id, receiver, tx: txLike, data } = props; + const tx = ccc.Transaction.from(txLike ?? {}); + + const scriptInfo = await getScriptInfo(client); + const type = getTypeScript(scriptInfo, id); + const inCell = await client.findSingletonCellByType(type); + if (!inCell) { + throw new Error(`Type ID ${ccc.stringify(type)} not found`); + } + + const outputData = await (async () => { + if (!data) { + return inCell.outputData; + } + + if (typeof data === "function") { + return codec.encode( + await ( + data as ( + cell: ccc.Cell, + data?: Decoded, + ) => Encodable | Promise + )(inCell, codec.decodeOr(inCell.outputData, undefined)), + ); + } + + return codec.encode(data); + })(); + + const outCell = ccc.CellAny.from({ + ...inCell, + cellOutput: { + ...inCell.cellOutput, + lock: ccc.Script.from(receiver), + }, + outputData, + }); + + const inLen = tx.addInput(inCell); + const outLen = tx.addOutput(outCell); + + return { + tx: await addCellDeps(client, tx, scriptInfo), + inIndex: inLen - 1, + outIndex: outLen - 1, + }; + }, + + /** + * Destroy a Type ID cell. + * + * @param props The arguments for destroying the cell. + * @param props.client The client to communicate with CKB. + * @param props.id The Type ID to destroy. + * @param props.tx The transaction skeleton (optional). + */ + async destroy( + this: void, + props: { + client: ccc.Client; + id: ccc.HexLike; + tx?: ccc.TransactionLike | null; + }, + ): Promise<{ + tx: ccc.Transaction; + index: number; + }> { + const { client, id, tx: txLike } = props; + const tx = ccc.Transaction.from(txLike ?? {}); + + const scriptInfo = await getScriptInfo(client); + const type = getTypeScript(scriptInfo, id); + const cell = await client.findSingletonCellByType(type); + if (!cell) { + throw new Error(`Type ID ${ccc.stringify(type)} not found`); + } + + const len = tx.addInput(cell); + + return { + tx: await addCellDeps(client, tx, scriptInfo), + index: len - 1, + }; + }, + }; +} diff --git a/packages/type-id/src/barrel.ts b/packages/type-id/src/barrel.ts new file mode 100644 index 000000000..f948bf58e --- /dev/null +++ b/packages/type-id/src/barrel.ts @@ -0,0 +1,12 @@ +import { ccc } from "@ckb-ccc/core"; +import { buildTypeIdOperations } from "./advancedBarrel"; + +export const { + create: createTypeId, + transfer: transferTypeId, + destroy: destroyTypeId, +} = buildTypeIdOperations({ + async getScriptInfo(client: ccc.Client) { + return client.getKnownScript(ccc.KnownScript.TypeId); + }, +}); diff --git a/packages/type-id/src/index.ts b/packages/type-id/src/index.ts new file mode 100644 index 000000000..6a528c1af --- /dev/null +++ b/packages/type-id/src/index.ts @@ -0,0 +1,2 @@ +export * from "./barrel.js"; +export * as typeId from "./barrel.js"; diff --git a/packages/type-id/tsconfig.base.json b/packages/type-id/tsconfig.base.json new file mode 100644 index 000000000..7e5ac952b --- /dev/null +++ b/packages/type-id/tsconfig.base.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true + }, + "include": ["src/**/*"] +} diff --git a/packages/type-id/tsconfig.commonjs.json b/packages/type-id/tsconfig.commonjs.json new file mode 100644 index 000000000..76a25e98b --- /dev/null +++ b/packages/type-id/tsconfig.commonjs.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist.commonjs" + } +} diff --git a/packages/type-id/tsconfig.json b/packages/type-id/tsconfig.json new file mode 100644 index 000000000..df22faeca --- /dev/null +++ b/packages/type-id/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "outDir": "./dist", + } +} diff --git a/packages/type-id/tsdown.config.mts b/packages/type-id/tsdown.config.mts new file mode 100644 index 000000000..9f79d88fe --- /dev/null +++ b/packages/type-id/tsdown.config.mts @@ -0,0 +1,36 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + exports: true, +}; + +export default defineConfig( + ( + [ + { + entry: { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry: { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/type-id/typedoc.json b/packages/type-id/typedoc.json new file mode 100644 index 000000000..2eb611e3e --- /dev/null +++ b/packages/type-id/typedoc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": ["./src/index.ts", "./src/advanced.ts"], + "extends": ["../../typedoc.base.json"], + "name": "@ckb-ccc type-id" +} diff --git a/packages/type-id/vitest.config.mts b/packages/type-id/vitest.config.mts new file mode 100644 index 000000000..dc6a58785 --- /dev/null +++ b/packages/type-id/vitest.config.mts @@ -0,0 +1,10 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["src/**/*.test.ts"], + coverage: { + include: ["src/**/*.ts"], + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d52d483a7..7a7acb140 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -378,7 +378,7 @@ importers: version: 9.34.0(jiti@2.5.1) eslint-config-next: specifier: 16.0.10 - version: 16.0.10(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + version: 16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.34.0(jiti@2.5.1)) @@ -965,6 +965,9 @@ importers: '@ckb-ccc/ssri': specifier: workspace:* version: link:../ssri + '@ckb-ccc/type-id': + specifier: workspace:* + version: link:../type-id '@ckb-ccc/udt': specifier: workspace:* version: link:../udt @@ -1122,6 +1125,46 @@ importers: specifier: ^8.41.0 version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + packages/type-id: + dependencies: + '@ckb-ccc/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@eslint/js': + specifier: ^9.34.0 + version: 9.34.0 + '@types/node': + specifier: ^24.3.0 + version: 24.3.0 + eslint: + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-prettier: + specifier: ^5.5.4 + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1))(prettier@3.6.2) + prettier: + specifier: ^3.6.2 + version: 3.6.2 + prettier-plugin-organize-imports: + specifier: ^4.2.0 + version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + tsdown: + specifier: 0.19.0-beta.3 + version: 0.19.0-beta.3(synckit@0.11.11)(typescript@5.9.2) + typescript: + specifier: ^5.9.2 + version: 5.9.2 + typescript-eslint: + specifier: ^8.41.0 + version: 8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + packages/udt: dependencies: '@ckb-ccc/core': @@ -1408,6 +1451,10 @@ packages: resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -1483,6 +1530,10 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -1504,6 +1555,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} engines: {node: '>=6.9.0'} @@ -2043,6 +2099,10 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2629,12 +2689,18 @@ packages: '@emnapi/core@1.4.5': resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + '@emnapi/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.0.4': resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@esbuild/aix-ppc64@0.25.9': resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} @@ -3414,6 +3480,9 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@nervina-labs/dob-render@0.2.5': resolution: {integrity: sha512-PZ5hcoTYfbdyI51xlHdK1j9VYTd6L1oYxEv9CzpYuu0AtkOqSNmrbn2FkI4noUJl+tqxqWSsJRju7JJiOApTpg==} peerDependencies: @@ -3612,6 +3681,9 @@ packages: engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} hasBin: true + '@oxc-project/types@0.106.0': + resolution: {integrity: sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==} + '@paralleldrive/cuid2@2.2.2': resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} @@ -3638,6 +3710,9 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + '@react-aria/focus@3.21.1': resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} peerDependencies: @@ -3675,6 +3750,86 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@rolldown/binding-android-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.58': + resolution: {integrity: sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': + resolution: {integrity: sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': + resolution: {integrity: sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': + resolution: {integrity: sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': + resolution: {integrity: sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': + resolution: {integrity: sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': + resolution: {integrity: sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': + resolution: {integrity: sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': + resolution: {integrity: sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': + resolution: {integrity: sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-beta.58': + resolution: {integrity: sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==} + '@rollup/rollup-android-arm-eabi@4.49.0': resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} cpu: [arm] @@ -4065,6 +4220,9 @@ packages: '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4799,6 +4957,10 @@ packages: resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} engines: {node: '>=14'} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -4871,6 +5033,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -4999,6 +5165,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -5721,6 +5890,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -5840,6 +6012,15 @@ packages: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} + dts-resolver@2.1.3: + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -5882,6 +6063,10 @@ packages: emoticon@4.1.0: resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -6517,6 +6702,9 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} @@ -6707,6 +6895,9 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hookable@6.0.1: + resolution: {integrity: sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -6843,6 +7034,10 @@ packages: engines: {node: '>=8'} hasBin: true + import-without-cache@0.2.5: + resolution: {integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==} + engines: {node: '>=20.19.0'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -8161,6 +8356,9 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -8967,6 +9165,9 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -9267,6 +9468,30 @@ packages: engines: {node: 20 || >=22} hasBin: true + rolldown-plugin-dts@0.20.0: + resolution: {integrity: sha512-cLAY1kN2ilTYMfZcFlGWbXnu6Nb+8uwUBsi+Mjbh4uIx7IN8uMOmJ7RxrrRgPsO4H7eSz3E+JwGoL1gyugiyUA==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' + rolldown: ^1.0.0-beta.57 + typescript: ^5.0.0 + vue-tsc: ~3.2.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.0-beta.58: + resolution: {integrity: sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.49.0: resolution: {integrity: sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -9837,6 +10062,10 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -9966,6 +10195,31 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tsdown@0.19.0-beta.3: + resolution: {integrity: sha512-Ud75SBmTap0kDf9hs31yBBlU0iAV17gtZgTJlW6nG/e4J6wXPXwQtUXt/Fck4XSmHXXgSuYRwGrjF6AxTLwk+Q==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@vitejs/devtools': '*' + publint: ^0.3.0 + typescript: ^5.0.0 + unplugin-lightningcss: ^0.4.0 + unplugin-unused: ^0.5.0 + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + typescript: + optional: true + unplugin-lightningcss: + optional: true + unplugin-unused: + optional: true + tslib@2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} @@ -10117,6 +10371,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + unconfig-core@7.4.2: + resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -10189,6 +10446,16 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + unrun@0.2.22: + resolution: {integrity: sha512-vlQce4gTLNyCZxGylEQXGG+fSrrEFWiM/L8aghtp+t6j8xXh+lmsBtQJknG7ZSvv7P+/MRgbQtHWHBWk981uTg==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true + untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -10830,6 +11097,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.28.2 @@ -10933,6 +11208,8 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.28.3': @@ -10959,6 +11236,10 @@ snapshots: dependencies: '@babel/types': 7.28.2 + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.3)': dependencies: '@babel/core': 7.28.3 @@ -11626,6 +11907,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@0.2.3': {} '@bcoe/v8-coverage@1.0.2': {} @@ -12962,6 +13248,12 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/core@1.8.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 @@ -12972,6 +13264,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.9': optional: true @@ -13833,6 +14130,13 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nervina-labs/dob-render@0.2.5(satori@0.10.14)': dependencies: satori: 0.10.14 @@ -14035,6 +14339,8 @@ snapshots: dependencies: consola: 3.4.2 + '@oxc-project/types@0.106.0': {} + '@paralleldrive/cuid2@2.2.2': dependencies: '@noble/hashes': 1.8.0 @@ -14058,6 +14364,10 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + '@react-aria/focus@3.21.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@react-aria/interactions': 3.25.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -14107,6 +14417,49 @@ snapshots: dependencies: react: 19.2.3 + '@rolldown/binding-android-arm64@1.0.0-beta.58': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.58': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.58': {} + '@rollup/rollup-android-arm-eabi@4.49.0': optional: true @@ -14476,6 +14829,11 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.3 @@ -15343,6 +15701,8 @@ snapshots: ansis@4.1.0: {} + ansis@4.2.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -15439,6 +15799,11 @@ snapshots: assertion-error@2.0.1: {} + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.28.5 + pathe: 2.0.3 + ast-types-flow@0.0.8: {} ast-v8-to-istanbul@0.3.4: @@ -15594,6 +15959,8 @@ snapshots: binary-extensions@2.3.0: {} + birpc@4.0.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -16374,6 +16741,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + delayed-stream@1.0.0: {} depd@1.1.2: {} @@ -16486,6 +16855,8 @@ snapshots: dotenv@8.6.0: {} + dts-resolver@2.1.3: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -16524,6 +16895,8 @@ snapshots: emoticon@4.1.0: {} + empathic@2.0.0: {} + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -16713,28 +17086,8 @@ snapshots: '@next/eslint-plugin-next': 16.0.10 eslint: 9.34.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.5.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.5.1)) - eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.5.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@9.34.0(jiti@2.5.1)) - globals: 16.4.0 - typescript-eslint: 8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - optionalDependencies: - typescript: 5.9.2 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - - eslint-config-next@16.0.10(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): - dependencies: - '@next/eslint-plugin-next': 16.0.10 - eslint: 9.34.0(jiti@2.5.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.34.0(jiti@2.5.1)) @@ -16769,7 +17122,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -16780,48 +17133,22 @@ snapshots: tinyglobby: 0.2.14 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.5.1)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) - get-tsconfig: 4.10.1 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.14 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.5.1)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint: 9.34.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.5.1)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.34.0(jiti@2.5.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -16832,7 +17159,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.34.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -16850,35 +17177,6 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.34.0(jiti@2.5.1) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.34.0(jiti@2.5.1)): dependencies: aria-query: 5.3.2 @@ -17564,6 +17862,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@1.5.0: {} glob-parent@5.1.2: @@ -17857,6 +18159,8 @@ snapshots: dependencies: react-is: 16.13.1 + hookable@6.0.1: {} + hosted-git-info@2.8.9: {} hpack.js@2.1.6: @@ -18002,6 +18306,8 @@ snapshots: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + import-without-cache@0.2.5: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -19697,6 +20003,8 @@ snapshots: obuf@1.1.2: {} + obug@2.1.1: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -20476,6 +20784,8 @@ snapshots: quansync@0.2.11: {} + quansync@1.0.0: {} + queue-microtask@1.2.3: {} quick-lru@5.1.1: {} @@ -20866,6 +21176,41 @@ snapshots: glob: 11.0.3 package-json-from-dist: 1.0.1 + rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.58)(typescript@5.9.2): + dependencies: + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + ast-kit: 2.2.0 + birpc: 4.0.0 + dts-resolver: 2.1.3 + get-tsconfig: 4.13.0 + obug: 2.1.1 + rolldown: 1.0.0-beta.58 + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.0.0-beta.58: + dependencies: + '@oxc-project/types': 0.106.0 + '@rolldown/pluginutils': 1.0.0-beta.58 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.58 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.58 + '@rolldown/binding-darwin-x64': 1.0.0-beta.58 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.58 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.58 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.58 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.58 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.58 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.58 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.58 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.58 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.58 + rollup@4.49.0: dependencies: '@types/estree': 1.0.8 @@ -21606,6 +21951,8 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.14: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -21726,6 +22073,33 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tsdown@0.19.0-beta.3(synckit@0.11.11)(typescript@5.9.2): + dependencies: + ansis: 4.2.0 + cac: 6.7.14 + defu: 6.1.4 + empathic: 2.0.0 + hookable: 6.0.1 + import-without-cache: 0.2.5 + obug: 2.1.1 + picomatch: 4.0.3 + rolldown: 1.0.0-beta.58 + rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.58)(typescript@5.9.2) + semver: 7.7.3 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + unconfig-core: 7.4.2 + unrun: 0.2.22(synckit@0.11.11) + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - synckit + - vue-tsc + tslib@2.3.1: {} tslib@2.7.0: {} @@ -21882,6 +22256,11 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + unconfig-core@7.4.2: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + uncrypto@0.1.3: {} undici-types@6.19.8: {} @@ -21977,6 +22356,12 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + unrun@0.2.22(synckit@0.11.11): + dependencies: + rolldown: 1.0.0-beta.58 + optionalDependencies: + synckit: 0.11.11 + untildify@4.0.0: {} update-browserslist-db@1.1.3(browserslist@4.25.3): diff --git a/typedoc.config.mjs b/typedoc.config.mjs index 515df9321..428dfce67 100644 --- a/typedoc.config.mjs +++ b/typedoc.config.mjs @@ -4,6 +4,7 @@ const config = { name: "CCC Docs", entryPoints: [ "packages/core", + "packages/type-id", "packages/ssri", "packages/udt", "packages/spore", diff --git a/vitest.config.mts b/vitest.config.mts index 7af3d4a84..5d03d85e3 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -2,9 +2,9 @@ import { defineConfig, coverageConfigDefaults } from "vitest/config"; export default defineConfig({ test: { - projects: ["packages/core"], + projects: ["packages/core", "packages/type-id"], coverage: { - include: ["packages/core"], + include: ["packages/core", "packages/type-id"], exclude: [ "**/dist/**", "**/dist.commonjs/**", From 03667865d1bc6d091d9144d39f6b434abe4ce18b Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Thu, 8 Jan 2026 19:08:27 +0800 Subject: [PATCH 06/42] feat(did-ckb): add did-ckb package for basic did operations --- .changeset/fruity-drinks-kick.md | 7 + packages/did-ckb/.npmignore | 21 +++ packages/did-ckb/.prettierignore | 15 ++ packages/did-ckb/README.md | 41 +++++ packages/did-ckb/eslint.config.mjs | 62 ++++++++ .../misc/basedirs/dist.commonjs/package.json | 3 + .../did-ckb/misc/basedirs/dist/package.json | 3 + packages/did-ckb/package.json | 56 +++++++ packages/did-ckb/prettier.config.cjs | 11 ++ packages/did-ckb/src/barrel.ts | 2 + packages/did-ckb/src/codec.ts | 146 ++++++++++++++++++ packages/did-ckb/src/didCkb.ts | 89 +++++++++++ packages/did-ckb/src/index.ts | 2 + packages/did-ckb/tsconfig.base.json | 22 +++ packages/did-ckb/tsconfig.commonjs.json | 8 + packages/did-ckb/tsconfig.json | 8 + packages/did-ckb/tsdown.config.mts | 33 ++++ packages/did-ckb/typedoc.json | 6 + packages/did-ckb/vitest.config.mts | 10 ++ packages/examples/package.json | 4 +- packages/examples/src/createDid.ts | 20 +++ packages/examples/src/createDidWithLocalId.ts | 63 ++++++++ packages/examples/src/destroyDid.ts | 31 ++++ packages/examples/src/transferDid.ts | 47 ++++++ packages/shell/package.json | 1 + packages/shell/src/barrel.ts | 1 + pnpm-lock.yaml | 84 +++++++++- typedoc.config.mjs | 1 + vitest.config.mts | 6 +- 29 files changed, 795 insertions(+), 8 deletions(-) create mode 100644 .changeset/fruity-drinks-kick.md create mode 100644 packages/did-ckb/.npmignore create mode 100644 packages/did-ckb/.prettierignore create mode 100644 packages/did-ckb/README.md create mode 100644 packages/did-ckb/eslint.config.mjs create mode 100644 packages/did-ckb/misc/basedirs/dist.commonjs/package.json create mode 100644 packages/did-ckb/misc/basedirs/dist/package.json create mode 100644 packages/did-ckb/package.json create mode 100644 packages/did-ckb/prettier.config.cjs create mode 100644 packages/did-ckb/src/barrel.ts create mode 100644 packages/did-ckb/src/codec.ts create mode 100644 packages/did-ckb/src/didCkb.ts create mode 100644 packages/did-ckb/src/index.ts create mode 100644 packages/did-ckb/tsconfig.base.json create mode 100644 packages/did-ckb/tsconfig.commonjs.json create mode 100644 packages/did-ckb/tsconfig.json create mode 100644 packages/did-ckb/tsdown.config.mts create mode 100644 packages/did-ckb/typedoc.json create mode 100644 packages/did-ckb/vitest.config.mts create mode 100644 packages/examples/src/createDid.ts create mode 100644 packages/examples/src/createDidWithLocalId.ts create mode 100644 packages/examples/src/destroyDid.ts create mode 100644 packages/examples/src/transferDid.ts diff --git a/.changeset/fruity-drinks-kick.md b/.changeset/fruity-drinks-kick.md new file mode 100644 index 000000000..abb409ec7 --- /dev/null +++ b/.changeset/fruity-drinks-kick.md @@ -0,0 +1,7 @@ +--- +"@ckb-ccc/shell": minor +"@ckb-ccc/did-ckb": patch +--- + +feat(did-ckb): add did-ckb package for basic did operations + \ No newline at end of file diff --git a/packages/did-ckb/.npmignore b/packages/did-ckb/.npmignore new file mode 100644 index 000000000..7a88408aa --- /dev/null +++ b/packages/did-ckb/.npmignore @@ -0,0 +1,21 @@ +node_modules/ +misc/ + +*test.js +*test.ts +*test.d.ts +*test.d.ts.map +*spec.js +*spec.ts +*spec.d.ts +*spec.d.ts.map + +tsconfig.json +tsconfig.*.json +eslint.config.mjs +.prettierrc +.prettierignore + +tsconfig.tsbuildinfo +tsconfig.*.tsbuildinfo +.github/ diff --git a/packages/did-ckb/.prettierignore b/packages/did-ckb/.prettierignore new file mode 100644 index 000000000..aef5d239c --- /dev/null +++ b/packages/did-ckb/.prettierignore @@ -0,0 +1,15 @@ +node_modules/ + +dist/ +dist.commonjs/ + +.npmignore +.prettierrc +tsconfig.json +eslint.config.mjs +prettier.config.* + +tsconfig.tsbuildinfo +.github/ + +CHANGELOG.md diff --git a/packages/did-ckb/README.md b/packages/did-ckb/README.md new file mode 100644 index 000000000..1423faaf1 --- /dev/null +++ b/packages/did-ckb/README.md @@ -0,0 +1,41 @@ +

+ + Logo + +

+ +

+ CCC's Support for DID CKB +

+ +

+ NPM Version + GitHub commit activity + GitHub last commit + GitHub branch check runs + Playground + App + Docs +

+ +

+ CCC - CKBers' Codebase is a one-stop solution for your CKB JS/TS ecosystem development. +
+ Empower yourself with CCC to discover the unlimited potential of CKB. +
+ Interoperate with wallets from different chain ecosystems. +
+ Fully enabling CKB's Turing completeness and cryptographic freedom power. +

+ +

+ Read more about CCC on our website or GitHub Repo. +

diff --git a/packages/did-ckb/eslint.config.mjs b/packages/did-ckb/eslint.config.mjs new file mode 100644 index 000000000..b6132c277 --- /dev/null +++ b/packages/did-ckb/eslint.config.mjs @@ -0,0 +1,62 @@ +// @ts-check + +import eslint from "@eslint/js"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; +import tseslint from "typescript-eslint"; + +import { dirname } from "path"; +import { fileURLToPath } from "url"; + +export default [ + ...tseslint.config({ + files: ["**/*.ts"], + extends: [ + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + ], + rules: { + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "all", + argsIgnorePattern: "^_", + caughtErrors: "all", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + varsIgnorePattern: "^_", + ignoreRestSiblings: true, + }, + ], + "@typescript-eslint/unbound-method": ["error", { ignoreStatic: true }], + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/only-throw-error": [ + "error", + { + allowThrowingAny: true, + allowThrowingUnknown: true, + allowRethrowing: true, + }, + ], + "@typescript-eslint/prefer-promise-reject-errors": [ + "error", + { + allowThrowingAny: true, + allowThrowingUnknown: true, + }, + ], + "no-empty": "off", + "prefer-const": [ + "error", + { ignoreReadBeforeAssign: true, destructuring: "all" }, + ], + }, + languageOptions: { + parserOptions: { + project: true, + tsconfigRootDir: dirname(fileURLToPath(import.meta.url)), + }, + }, + }), + eslintPluginPrettierRecommended, +]; diff --git a/packages/did-ckb/misc/basedirs/dist.commonjs/package.json b/packages/did-ckb/misc/basedirs/dist.commonjs/package.json new file mode 100644 index 000000000..5bbefffba --- /dev/null +++ b/packages/did-ckb/misc/basedirs/dist.commonjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/packages/did-ckb/misc/basedirs/dist/package.json b/packages/did-ckb/misc/basedirs/dist/package.json new file mode 100644 index 000000000..3dbc1ca59 --- /dev/null +++ b/packages/did-ckb/misc/basedirs/dist/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json new file mode 100644 index 000000000..e61651208 --- /dev/null +++ b/packages/did-ckb/package.json @@ -0,0 +1,56 @@ +{ + "name": "@ckb-ccc/did-ckb", + "version": "0.0.0", + "description": "CCC - CKBer's Codebase. CCC's support for DID on CKB", + "author": "Hanssen0 ", + "license": "MIT", + "private": false, + "homepage": "https://github.com/ckb-devrel/ccc", + "repository": { + "type": "git", + "url": "git://github.com/ckb-devrel/ccc.git" + }, + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", + "exports": { + ".": { + "require": "./dist.commonjs/index.js", + "import": "./dist/index.mjs" + }, + "./barrel": { + "require": "./dist.commonjs/barrel.js", + "import": "./dist/barrel.mjs" + }, + "./package.json": "./package.json" + }, + "scripts": { + "test": "vitest", + "test:ci": "vitest run", + "build": "tsdown", + "lint": "eslint ./src", + "format": "prettier --write . && eslint --fix ./src" + }, + "devDependencies": { + "@eslint/js": "^9.34.0", + "@types/node": "^24.3.0", + "eslint": "^9.34.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "prettier": "^3.6.2", + "prettier-plugin-organize-imports": "^4.2.0", + "tsdown": "0.19.0-beta.3", + "typescript": "^5.9.2", + "typescript-eslint": "^8.41.0", + "vitest": "^3.2.4" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@ckb-ccc/core": "workspace:*", + "@ckb-ccc/type-id": "workspace:*", + "@ipld/dag-cbor": "^9.2.5" + }, + "packageManager": "pnpm@10.8.1", + "types": "./dist.commonjs/index.d.ts" +} diff --git a/packages/did-ckb/prettier.config.cjs b/packages/did-ckb/prettier.config.cjs new file mode 100644 index 000000000..5e1810363 --- /dev/null +++ b/packages/did-ckb/prettier.config.cjs @@ -0,0 +1,11 @@ +/** + * @see https://prettier.io/docs/configuration + * @type {import("prettier").Config} + */ +const config = { + singleQuote: false, + trailingComma: "all", + plugins: [require.resolve("prettier-plugin-organize-imports")], +}; + +module.exports = config; diff --git a/packages/did-ckb/src/barrel.ts b/packages/did-ckb/src/barrel.ts new file mode 100644 index 000000000..6112c76ce --- /dev/null +++ b/packages/did-ckb/src/barrel.ts @@ -0,0 +1,2 @@ +export * from "./codec.js"; +export * from "./didCkb.js"; diff --git a/packages/did-ckb/src/codec.ts b/packages/did-ckb/src/codec.ts new file mode 100644 index 000000000..c89ba8e57 --- /dev/null +++ b/packages/did-ckb/src/codec.ts @@ -0,0 +1,146 @@ +import { ccc } from "@ckb-ccc/core"; +import { decode as cborDecode, encode as cborEncode } from "@ipld/dag-cbor"; + +export type DidCkbDataV1Like = { + document: unknown; + localId?: string | null; +}; +@ccc.codec( + ccc.mol + .table({ + document: ccc.mol.Bytes, + localId: ccc.mol.StringOpt, + }) + .map({ + inMap: (data: DidCkbDataV1Like) => ({ + ...data, + document: ccc.hexFrom(cborEncode(data.document)), + }), + outMap: (data) => ({ + ...data, + document: cborDecode(ccc.bytesFrom(data.document)), + }), + }), +) +export class DidCkbDataV1 extends ccc.Entity.Base< + DidCkbDataV1Like, + DidCkbDataV1 +>() { + constructor( + public document: unknown, + public localId?: string, + ) { + super(); + } + + static from(data: DidCkbDataV1Like): DidCkbDataV1 { + if (data instanceof DidCkbDataV1) { + return data; + } + + return new DidCkbDataV1(data.document, data.localId ?? undefined); + } +} + +export type DidCkbDataLike = { + type?: "v1" | null; + value: DidCkbDataV1Like; +}; +@ccc.codec( + ccc.mol.union({ + v1: DidCkbDataV1, + }), +) +export class DidCkbData extends ccc.Entity.Base() { + constructor( + public type: "v1", + public value: DidCkbDataV1, + ) { + super(); + } + + static from(data: DidCkbDataLike): DidCkbData { + if (data instanceof DidCkbData) { + return data; + } + return new DidCkbData(data.type ?? "v1", DidCkbDataV1.from(data.value)); + } + + static fromV1( + data: DidCkbDataV1Like, + ): DidCkbData & { type: "v1"; value: DidCkbDataV1 } { + return new DidCkbData("v1", DidCkbDataV1.from(data)); + } +} + +export type PlcAuthorizationLike = { + history: object[]; + sig: ccc.HexLike; + rotationKeyIndices: ccc.NumLike[]; +}; +@ccc.codec( + ccc.mol + .table({ + history: ccc.mol.BytesVec, + sig: ccc.mol.Bytes, + rotationKeyIndices: ccc.mol.Uint8Vec, + }) + + .map({ + inMap: (data: PlcAuthorizationLike) => ({ + ...data, + history: data.history.map((h) => ccc.hexFrom(cborEncode(h))), + }), + outMap: (data) => ({ + ...data, + history: data.history.map((h) => cborDecode(ccc.bytesFrom(h))), + }), + }), +) +export class PlcAuthorization extends ccc.Entity.Base< + PlcAuthorizationLike, + PlcAuthorization +>() { + constructor( + public history: object[], + public sig: ccc.Hex, + public rotationKeyIndices: ccc.Num[], + ) { + super(); + } + + static from(data: PlcAuthorizationLike): PlcAuthorization { + if (data instanceof PlcAuthorization) { + return data; + } + return new PlcAuthorization( + data.history, + ccc.hexFrom(data.sig), + data.rotationKeyIndices.map(ccc.numFrom), + ); + } +} + +export type DidCkbWitnessLike = { + localIdAuthorization: PlcAuthorizationLike; +}; +@ccc.codec( + ccc.mol.table({ + localIdAuthorization: PlcAuthorization, + }), +) +export class DidCkbWitness extends ccc.Entity.Base< + DidCkbWitnessLike, + DidCkbWitness +>() { + constructor(public localIdAuthorization: PlcAuthorization) { + super(); + } + + static from(data: DidCkbWitnessLike): DidCkbWitness { + if (data instanceof DidCkbWitness) { + return data; + } + return new DidCkbWitness(PlcAuthorization.from(data.localIdAuthorization)); + } +} diff --git a/packages/did-ckb/src/didCkb.ts b/packages/did-ckb/src/didCkb.ts new file mode 100644 index 000000000..0b3ede189 --- /dev/null +++ b/packages/did-ckb/src/didCkb.ts @@ -0,0 +1,89 @@ +import { ccc } from "@ckb-ccc/core"; +import { typeIdA } from "@ckb-ccc/type-id/advanced"; +import { DidCkbData, DidCkbDataLike } from "./codec"; + +const OPERATIONS = typeIdA.buildTypeIdOperations({ + async getScriptInfo(client: ccc.Client): Promise { + return client.getKnownScript(ccc.KnownScript.DidCkb); + }, + codec: DidCkbData, + async calculateTypeId( + _: ccc.Client, + tx: ccc.Transaction, + ): Promise { + return ccc + .bytesFrom(ccc.hashTypeId(tx.inputs[0], tx.outputs.length)) + .slice(0, 20); + }, +}); + +/** + * Create a DID CKB cell. + * + * @param props The arguments for creating the cell. + * @param props.signer The signer to sign the transaction. + * @param props.receiver The receiver script (optional). + * @param props.data The output data. + * @param props.tx The transaction skeleton (optional). + */ +export function createDidCkb(props: { + signer: ccc.Signer; + data: DidCkbDataLike; + receiver?: ccc.ScriptLike | null; + tx?: ccc.TransactionLike | null; +}): Promise<{ + tx: ccc.Transaction; + id: ccc.Hex; + index: number; +}> { + return OPERATIONS.create(props); +} + +/** + * Transfer a DID CKB cell. + * + * @param props The arguments for transferring the cell. + * @param props.client The client to communicate with CKB. + * @param props.id The Type ID to transfer. + * @param props.receiver The new receiver script. + * @param props.tx The transaction skeleton (optional). + * @param props.data The new output data or a transformer to update the data (optional). + */ +export async function transferDidCkb(props: { + client: ccc.Client; + id: ccc.HexLike; + receiver: ccc.ScriptLike; + tx?: ccc.TransactionLike | null; + data?: + | DidCkbDataLike + | (( + cell: ccc.Cell, + data?: DidCkbData, + ) => DidCkbDataLike | Promise) + | null; +}): Promise<{ + tx: ccc.Transaction; + inIndex: number; + outIndex: number; +}> { + return OPERATIONS.transfer(props); +} + +/** + * Destroy a DID CKB cell. + * + * @param props The arguments for destroying the cell. + * @param props.client The client to communicate with CKB. + * @param props.id The Type ID to destroy. + * @param props.tx The transaction skeleton (optional). + */ +export async function destroyDidCkb(props: { + client: ccc.Client; + id: ccc.HexLike; + tx?: ccc.TransactionLike | null; +}): Promise<{ + tx: ccc.Transaction; + index: number; +}> { + return OPERATIONS.destroy(props); +} diff --git a/packages/did-ckb/src/index.ts b/packages/did-ckb/src/index.ts new file mode 100644 index 000000000..580265645 --- /dev/null +++ b/packages/did-ckb/src/index.ts @@ -0,0 +1,2 @@ +export * from "./barrel.js"; +export * as didCkb from "./barrel.js"; diff --git a/packages/did-ckb/tsconfig.base.json b/packages/did-ckb/tsconfig.base.json new file mode 100644 index 000000000..7e5ac952b --- /dev/null +++ b/packages/did-ckb/tsconfig.base.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true + }, + "include": ["src/**/*"] +} diff --git a/packages/did-ckb/tsconfig.commonjs.json b/packages/did-ckb/tsconfig.commonjs.json new file mode 100644 index 000000000..76a25e98b --- /dev/null +++ b/packages/did-ckb/tsconfig.commonjs.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist.commonjs" + } +} diff --git a/packages/did-ckb/tsconfig.json b/packages/did-ckb/tsconfig.json new file mode 100644 index 000000000..df22faeca --- /dev/null +++ b/packages/did-ckb/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "outDir": "./dist", + } +} diff --git a/packages/did-ckb/tsdown.config.mts b/packages/did-ckb/tsdown.config.mts new file mode 100644 index 000000000..d952699a0 --- /dev/null +++ b/packages/did-ckb/tsdown.config.mts @@ -0,0 +1,33 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + exports: true, +}; + +export default defineConfig( + ( + [ + { + entry: { + index: "src/index.ts", + barrel: "src/barrel.ts", + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry: { + index: "src/index.ts", + barrel: "src/barrel.ts", + }, + noExternal: ["@ipld/dag-cbor"] as string[], + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/did-ckb/typedoc.json b/packages/did-ckb/typedoc.json new file mode 100644 index 000000000..5cdb8befe --- /dev/null +++ b/packages/did-ckb/typedoc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": ["./src/index.ts"], + "extends": ["../../typedoc.base.json"], + "name": "@ckb-ccc did-ckb" +} diff --git a/packages/did-ckb/vitest.config.mts b/packages/did-ckb/vitest.config.mts new file mode 100644 index 000000000..dc6a58785 --- /dev/null +++ b/packages/did-ckb/vitest.config.mts @@ -0,0 +1,10 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["src/**/*.test.ts"], + coverage: { + include: ["src/**/*.ts"], + }, + }, +}); diff --git a/packages/examples/package.json b/packages/examples/package.json index 756bf2d1d..bac19e45d 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -31,7 +31,9 @@ }, "dependencies": { "@ckb-ccc/ccc": "workspace:*", - "@ckb-ccc/playground": "file:src/playground" + "@ckb-ccc/playground": "file:src/playground", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0" }, "packageManager": "pnpm@10.8.1" } diff --git a/packages/examples/src/createDid.ts b/packages/examples/src/createDid.ts new file mode 100644 index 000000000..2d01a6866 --- /dev/null +++ b/packages/examples/src/createDid.ts @@ -0,0 +1,20 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { render, signer } from "@ckb-ccc/playground"; + +// Construct create did tx +const { tx } = await ccc.didCkb.createDidCkb({ + signer, + data: { value: { document: {} } }, +}); + +// Complete missing parts: Fill inputs +await tx.completeInputsByCapacity(signer); +await render(tx); + +// Complete missing parts: Pay fee +await tx.completeFeeBy(signer); +await render(tx); + +// Sign and send the transaction +const txHash = await signer.sendTransaction(tx); +console.log(`Transaction ${txHash} sent`); diff --git a/packages/examples/src/createDidWithLocalId.ts b/packages/examples/src/createDidWithLocalId.ts new file mode 100644 index 000000000..957e4b087 --- /dev/null +++ b/packages/examples/src/createDidWithLocalId.ts @@ -0,0 +1,63 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { render, signer } from "@ckb-ccc/playground"; +import { secp256k1 } from "@noble/curves/secp256k1"; +import { sha256 } from "@noble/hashes/sha2"; + +// From https://github.com/bluesky-social/atproto/blob/main/packages/crypto +function plcSign(key: ccc.BytesLike, msg: ccc.BytesLike): ccc.Bytes { + const msgHash = sha256(ccc.bytesFrom(msg)); + const sig = secp256k1.sign(msgHash, ccc.bytesFrom(key), { lowS: true }); + return sig.toBytes("compact"); +} + +// Construct create did tx +const { tx } = await ccc.didCkb.createDidCkb({ + signer, + data: { + value: { document: {}, localId: "did:plc:yunkr6vorfgzmvzeoofbkhq5" }, + }, +}); + +// Complete missing parts: Fill inputs +await tx.completeInputsByCapacity(signer); +await render(tx); + +// Complete missing parts: Pay fee +await tx.completeFeeBy(signer); +await render(tx); + +// Authorize the transaction with the rotation key +const rotationKey = + "0x806d1925698097c64bc70f629e25b91b48a15eee4e492bb239402cee85356a10"; +const witness = ccc.didCkb.DidCkbWitness.from({ + localIdAuthorization: { + history: [ + { + type: "plc_operation", + verificationMethods: { + atproto: "did:key:zQ3shn3qejTEyEiokszFc4MWEqbdAwyj2XR1oS2AuXKvEBTuN", + }, + rotationKeys: [ + "did:key:zQ3shqtXEdagupBhLzL2vFUACfdVjDEvciip79uY8iHBuu7FD", + "did:key:zDnaefn5fMKvoZ1n4vyxJ9npjWE5P3D8GkM9zNqaGbLqdDrtX", + ], + alsoKnownAs: ["at://alice.example.com"], + services: { + atproto_pds: { + type: "AtprotoPersonalDataServer", + endpoint: "https://example.com", + }, + }, + prev: null, + sig: "2ySrMKwAQ8j_7HlJlNdE9kXFXG6VAGzy0s4P5O12UuMQqUgDHlAe3PQza5zWxIi6TC9K3K8ghmypfhDyJm8LuQ", + }, + ], + rotationKeyIndices: [0n, 0n], + sig: plcSign(rotationKey, tx.hash()), + }, +}); +tx.setWitnessArgsAt(0, ccc.WitnessArgs.from({ outputType: witness.toBytes() })); + +// Sign and send the transaction +const txHash = await signer.sendTransaction(tx); +console.log(`Transaction ${txHash} sent`); diff --git a/packages/examples/src/destroyDid.ts b/packages/examples/src/destroyDid.ts new file mode 100644 index 000000000..55f38b189 --- /dev/null +++ b/packages/examples/src/destroyDid.ts @@ -0,0 +1,31 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { render, signer } from "@ckb-ccc/playground"; + +// === Create a did first === +// Check https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/createDid.ts for the full example +const { tx: createTx, id } = await ccc.didCkb.createDidCkb({ + signer, + data: { + value: { document: {} }, + }, +}); +await createTx.completeFeeBy(signer); +await render(createTx); +const createTxHash = await signer.sendTransaction(createTx); +console.log(`Transaction ${createTxHash} sent`); +// === Create a did first === + +// Construct destroy did tx +const { tx } = await ccc.didCkb.destroyDidCkb({ client: signer.client, id }); + +// Complete missing parts: Fill inputs +await tx.completeInputsByCapacity(signer); +await render(tx); + +// Complete missing parts: Pay fee +await tx.completeFeeBy(signer); +await render(tx); + +// Sign and send the transaction +const txHash = await signer.sendTransaction(tx); +console.log(`Transaction ${txHash} sent`); diff --git a/packages/examples/src/transferDid.ts b/packages/examples/src/transferDid.ts new file mode 100644 index 000000000..90af8e3c6 --- /dev/null +++ b/packages/examples/src/transferDid.ts @@ -0,0 +1,47 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { render, signer } from "@ckb-ccc/playground"; + +// === Create a did first === +// Check https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/createDid.ts for the full example +const { tx: createTx, id } = await ccc.didCkb.createDidCkb({ + signer, + data: { + value: { document: {} }, + }, +}); +await createTx.completeFeeBy(signer); +await render(createTx); +const createTxHash = await signer.sendTransaction(createTx); +console.log(`Transaction ${createTxHash} sent`); +// === Create a did first === + +// The receiver is the signer itself on mainnet +const receiver = (await signer.getRecommendedAddressObj()).script; +console.log(receiver); + +// Construct transfer did tx +const { tx } = await ccc.didCkb.transferDidCkb({ + client: signer.client, + id, + receiver, + data: (_, data) => { + if (!data) { + throw Error("Unknown error"); + } + + (data.value.document as Record)["foo"] = "bar"; + return data; + }, +}); + +// Complete missing parts: Fill inputs +await tx.completeInputsByCapacity(signer); +await render(tx); + +// Complete missing parts: Pay fee +await tx.completeFeeBy(signer); +await render(tx); + +// Sign and send the transaction +const txHash = await signer.sendTransaction(tx); +console.log(`Transaction ${txHash} sent`); diff --git a/packages/shell/package.json b/packages/shell/package.json index 0f7efafca..f20cbdf2c 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -57,6 +57,7 @@ }, "dependencies": { "@ckb-ccc/core": "workspace:*", + "@ckb-ccc/did-ckb": "workspace:*", "@ckb-ccc/spore": "workspace:*", "@ckb-ccc/ssri": "workspace:*", "@ckb-ccc/type-id": "workspace:*", diff --git a/packages/shell/src/barrel.ts b/packages/shell/src/barrel.ts index 3c7752a39..e9d7adb7a 100644 --- a/packages/shell/src/barrel.ts +++ b/packages/shell/src/barrel.ts @@ -1,4 +1,5 @@ export * from "@ckb-ccc/core/barrel"; +export { didCkb } from "@ckb-ccc/did-ckb"; export { spore } from "@ckb-ccc/spore"; export { ssri } from "@ckb-ccc/ssri"; export { typeId } from "@ckb-ccc/type-id"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a7acb140..33d5adee6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -404,6 +404,52 @@ importers: specifier: ^5.9.2 version: 5.9.2 + packages/did-ckb: + dependencies: + '@ckb-ccc/core': + specifier: workspace:* + version: link:../core + '@ckb-ccc/type-id': + specifier: workspace:* + version: link:../type-id + '@ipld/dag-cbor': + specifier: ^9.2.5 + version: 9.2.5 + devDependencies: + '@eslint/js': + specifier: ^9.34.0 + version: 9.34.0 + '@types/node': + specifier: ^24.3.0 + version: 24.3.0 + eslint: + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-prettier: + specifier: ^5.5.4 + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1))(prettier@3.6.2) + prettier: + specifier: ^3.6.2 + version: 3.6.2 + prettier-plugin-organize-imports: + specifier: ^4.2.0 + version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + tsdown: + specifier: 0.19.0-beta.3 + version: 0.19.0-beta.3(synckit@0.11.11)(typescript@5.9.2) + typescript: + specifier: ^5.9.2 + version: 5.9.2 + typescript-eslint: + specifier: ^8.41.0 + version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + packages/docs: dependencies: '@docusaurus/core': @@ -486,6 +532,12 @@ importers: '@ckb-ccc/playground': specifier: file:src/playground version: playground@file:packages/examples/src/playground + '@noble/curves': + specifier: ^1.9.7 + version: 1.9.7 + '@noble/hashes': + specifier: ^1.8.0 + version: 1.8.0 devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -959,6 +1011,9 @@ importers: '@ckb-ccc/core': specifier: workspace:* version: link:../core + '@ckb-ccc/did-ckb': + specifier: workspace:* + version: link:../did-ckb '@ckb-ccc/spore': specifier: workspace:* version: link:../spore @@ -3253,6 +3308,10 @@ packages: '@types/node': optional: true + '@ipld/dag-cbor@9.2.5': + resolution: {integrity: sha512-84wSr4jv30biui7endhobYhXBQzQE4c/wdoWlFrKcfiwH+ofaPg8fwsM8okX9cOzkkrsAsNdDyH3ou+kiLquwQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -5317,6 +5376,10 @@ packages: caniuse-lite@1.0.30001737: resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} + cborg@4.3.2: + resolution: {integrity: sha512-l+QzebEAG0vb09YKkaOrMi2zmm80UNjmbvocMIeW5hO7JOXWdrQ/H49yOKfYX0MBgrj/KWgatBnEgRXyNyKD+A==} + hasBin: true + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -8199,6 +8262,9 @@ packages: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true + multiformats@13.4.2: + resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} + mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -13739,6 +13805,11 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 + '@ipld/dag-cbor@9.2.5': + dependencies: + cborg: 4.3.2 + multiformats: 13.4.2 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -16163,6 +16234,8 @@ snapshots: caniuse-lite@1.0.30001737: {} + cborg@4.3.2: {} + ccount@2.0.1: {} chai@5.3.3: @@ -16757,8 +16830,7 @@ snapshots: detect-libc@2.0.4: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} detect-newline@3.1.0: {} @@ -17130,7 +17202,7 @@ snapshots: get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1)) @@ -19086,7 +19158,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -19856,6 +19928,8 @@ snapshots: dns-packet: 5.6.1 thunky: 1.1.0 + multiformats@13.4.2: {} + mute-stream@2.0.0: {} nanoassert@2.0.0: {} @@ -22109,7 +22183,7 @@ snapshots: tsx@4.20.5: dependencies: esbuild: 0.25.9 - get-tsconfig: 4.10.1 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 diff --git a/typedoc.config.mjs b/typedoc.config.mjs index 428dfce67..35f05db43 100644 --- a/typedoc.config.mjs +++ b/typedoc.config.mjs @@ -8,6 +8,7 @@ const config = { "packages/ssri", "packages/udt", "packages/spore", + "packages/did-ckb", "packages/shell", "packages/ccc", "packages/connector", diff --git a/vitest.config.mts b/vitest.config.mts index 5d03d85e3..9b64c1358 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -1,10 +1,12 @@ import { defineConfig, coverageConfigDefaults } from "vitest/config"; +const packages = ["packages/core", "packages/did-ckb", "packages/type-id"]; + export default defineConfig({ test: { - projects: ["packages/core", "packages/type-id"], + projects: packages, coverage: { - include: ["packages/core", "packages/type-id"], + include: packages, exclude: [ "**/dist/**", "**/dist.commonjs/**", From 5d2725fe012f9302bfd011770ce4de390b30ba07 Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 10 Dec 2025 00:11:23 -0500 Subject: [PATCH 07/42] feat(btc): add PSBT signing and broadcasting support --- packages/core/src/signer/btc/index.ts | 1 + packages/core/src/signer/btc/psbt.ts | 56 ++++++ packages/core/src/signer/btc/signerBtc.ts | 50 +++++ .../signer/btc/signerBtcPublicKeyReadonly.ts | 9 + packages/joy-id/src/btc/index.ts | 72 ++++++++ packages/okx/src/advancedBarrel.ts | 17 +- packages/okx/src/btc/index.ts | 27 +++ packages/uni-sat/src/advancedBarrel.ts | 15 ++ packages/uni-sat/src/signer.ts | 26 +++ packages/utxo-global/src/btc/index.ts | 25 +++ packages/xverse/package.json | 1 + packages/xverse/src/signer.ts | 171 ++++++++++++++++++ pnpm-lock.yaml | 59 ++++++ 13 files changed, 527 insertions(+), 2 deletions(-) create mode 100644 packages/core/src/signer/btc/psbt.ts diff --git a/packages/core/src/signer/btc/index.ts b/packages/core/src/signer/btc/index.ts index d0aa15884..694ff7250 100644 --- a/packages/core/src/signer/btc/index.ts +++ b/packages/core/src/signer/btc/index.ts @@ -1,3 +1,4 @@ +export * from "./psbt.js"; export * from "./signerBtc.js"; export * from "./signerBtcPublicKeyReadonly.js"; export * from "./verify.js"; diff --git a/packages/core/src/signer/btc/psbt.ts b/packages/core/src/signer/btc/psbt.ts new file mode 100644 index 000000000..77ac646f7 --- /dev/null +++ b/packages/core/src/signer/btc/psbt.ts @@ -0,0 +1,56 @@ +/** + * Options for signing a PSBT (Partially Signed Bitcoin Transaction) + */ +export type SignPsbtOptions = { + /** + * Whether to finalize the PSBT after signing. + * Default is true. + */ + autoFinalized?: boolean; + /** + * Array of inputs to sign + */ + toSignInputs?: ToSignInput[]; +}; + +/** + * Specification for an input to sign in a PSBT. + * Must specify at least one of: address or pubkey. + */ +export type ToSignInput = { + /** + * Which input to sign (index in the PSBT inputs array) + */ + index: number; + /** + * (Optional) Sighash types to use for signing. + */ + sighashTypes?: number[]; + /** + * (Optional) When signing and unlocking Taproot addresses, the tweakSigner is used by default + * for signature generation. Setting this to true allows for signing with the original private key. + * Default value is false. + */ + disableTweakSigner?: boolean; +} & ( + | { + /** + * The address whose corresponding private key to use for signing. + */ + address: string; + /** + * The public key whose corresponding private key to use for signing. + */ + publicKey?: string; + } + | { + /** + * The address whose corresponding private key to use for signing. + */ + address?: string; + /** + * The public key whose corresponding private key to use for signing. + */ + publicKey: string; + } +); diff --git a/packages/core/src/signer/btc/signerBtc.ts b/packages/core/src/signer/btc/signerBtc.ts index 64112a74a..6f31946cd 100644 --- a/packages/core/src/signer/btc/signerBtc.ts +++ b/packages/core/src/signer/btc/signerBtc.ts @@ -5,6 +5,7 @@ import { KnownScript } from "../../client/index.js"; import { HexLike, hexFrom } from "../../hex/index.js"; import { numToBytes } from "../../num/index.js"; import { Signer, SignerSignType, SignerType } from "../signer/index.js"; +import { SignPsbtOptions } from "./psbt.js"; import { btcEcdsaPublicKeyHash } from "./verify.js"; /** @@ -22,6 +23,32 @@ export abstract class SignerBtc extends Signer { return SignerSignType.BtcEcdsa; } + /** + * Whether the wallet supports a single call to sign + broadcast (combined flow). + * Default false; override in implementations like Xverse/JoyID. + */ + get supportsSingleCallSignAndBroadcast(): boolean { + return false; + } + + /** + * Sign and broadcast a PSBT in one call when supported, otherwise falls back + * to sign then push. Prefer this over manual sign+push to avoid double popups. + */ + async signAndPushPsbt( + psbtHex: string, + options?: SignPsbtOptions, + ): Promise { + if (this.supportsSingleCallSignAndBroadcast) { + // Wallet handles sign+broadcast internally (e.g., Xverse/JoyID) + return this.pushPsbt(psbtHex, options); + } + + // Split-mode wallets: sign first, then broadcast + const signedPsbt = await this.signPsbt(psbtHex, options); + return this.pushPsbt(signedPsbt, options); + } + /** * Gets the Bitcoin account associated with the signer. * @@ -123,4 +150,27 @@ export abstract class SignerBtc extends Signer { tx.setWitnessArgsAt(info.position, witness); return tx; } + + /** + * Signs a Partially Signed Bitcoin Transaction (PSBT). + * + * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT + * @returns A promise that resolves to the signed PSBT hex string + */ + abstract signPsbt( + psbtHex: string, + options?: SignPsbtOptions, + ): Promise; + + /** + * Broadcasts a signed PSBT to the Bitcoin network. + * + * @param psbtHex - The hex string of signed PSBT to broadcast + * @returns A promise that resolves to the transaction ID + */ + abstract pushPsbt( + psbtHex: string, + options?: SignPsbtOptions, + ): Promise; } diff --git a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts index 50096db7e..f5293a952 100644 --- a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts +++ b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts @@ -1,5 +1,6 @@ import { Client } from "../../client/index.js"; import { Hex, HexLike, hexFrom } from "../../hex/index.js"; +import { SignPsbtOptions } from "./psbt.js"; import { SignerBtc } from "./signerBtc.js"; /** @@ -70,4 +71,12 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc { async getBtcPublicKey(): Promise { return this.publicKey; } + + async signPsbt(_: string, __?: SignPsbtOptions): Promise { + throw new Error("Read-only signer does not support signPsbt"); + } + + async pushPsbt(_: string, __?: SignPsbtOptions): Promise { + throw new Error("Read-only signer does not support pushPsbt"); + } } diff --git a/packages/joy-id/src/btc/index.ts b/packages/joy-id/src/btc/index.ts index 4a1e92fad..885528659 100644 --- a/packages/joy-id/src/btc/index.ts +++ b/packages/joy-id/src/btc/index.ts @@ -60,6 +60,10 @@ export class BitcoinSigner extends ccc.SignerBtc { super(client); } + get supportsSingleCallSignAndBroadcast(): boolean { + return true; + } + /** * Gets the configuration for JoyID. * @returns The configuration object. @@ -198,4 +202,72 @@ export class BitcoinSigner extends ccc.SignerBtc { ); return signature; } + + /** + * Signs a PSBT using JoyID wallet. + * + * @param psbtHex - The hex string of PSBT to sign + * @returns A promise that resolves to the signed PSBT hex string + */ + async signPsbt( + psbtHex: string, + options?: ccc.SignPsbtOptions, + ): Promise { + const { address } = await this.assertConnection(); + + const config = this.getConfig(); + const { tx: signedPsbtHex } = await createPopup( + buildJoyIDURL( + { + ...config, + tx: psbtHex, + options, + signerAddress: address, + autoFinalized: options?.autoFinalized ?? true, + }, + "popup", + "/sign-psbt", + ), + { ...config, type: DappRequestType.SignPsbt }, + ); + + return signedPsbtHex; + } + + /** + * Signs and broadcasts a PSBT to the Bitcoin network using JoyID wallet. + * + * This method combines both signing and broadcasting in a single operation. + * + * @param psbtHex - The hex string of PSBT to sign and broadcast + * @returns A promise that resolves to the transaction ID + * + * @remarks + * Use this method directly for sign+broadcast operations to avoid double popups. + * While calling signPsbt() then pushPsbt() will still work, it triggers two popups and requires double signing. + */ + async pushPsbt( + psbtHex: string, + _options?: ccc.SignPsbtOptions, + ): Promise { + const { address } = await this.assertConnection(); + + const config = this.getConfig(); + const { tx: txid } = await createPopup( + buildJoyIDURL( + { + ...config, + tx: psbtHex, + signerAddress: address, + autoFinalized: true, // sendPsbt always finalizes + isSend: true, + }, + "popup", + "/sign-psbt", + ), + { ...config, type: DappRequestType.SignPsbt }, // Use SignPsbt type for both operations + ); + + return txid; + } } diff --git a/packages/okx/src/advancedBarrel.ts b/packages/okx/src/advancedBarrel.ts index 4704b662f..bdd6b3e04 100644 --- a/packages/okx/src/advancedBarrel.ts +++ b/packages/okx/src/advancedBarrel.ts @@ -2,8 +2,21 @@ import { Nip07A } from "@ckb-ccc/nip07/advanced"; import { UniSatA } from "@ckb-ccc/uni-sat/advanced"; export interface BitcoinProvider - extends Pick, - Partial> { + extends Pick< + UniSatA.Provider, + "on" | "removeListener" | "signMessage" | "signPsbt" | "pushPsbt" + >, + Partial< + Omit< + UniSatA.Provider, + | "on" + | "removeListener" + | "signMessage" + | "signPsbt" + | "pushPsbt" + | "pushTx" + > + > { connect?(): Promise<{ address: string; publicKey: string; diff --git a/packages/okx/src/btc/index.ts b/packages/okx/src/btc/index.ts index c35b9a480..7e3b20b65 100644 --- a/packages/okx/src/btc/index.ts +++ b/packages/okx/src/btc/index.ts @@ -176,4 +176,31 @@ export class BitcoinSigner extends ccc.SignerBtc { return this.provider.signMessage(challenge, "ecdsa"); } + + /** + * Signs a PSBT using OKX wallet. + * + * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT + * @returns A promise that resolves to the signed PSBT hex string + */ + async signPsbt( + psbtHex: string, + options?: ccc.SignPsbtOptions, + ): Promise { + return this.provider.signPsbt(psbtHex, options); + } + + /** + * Broadcasts a signed PSBT to the Bitcoin network. + * + * @param psbtHex - The hex string of signed PSBT to broadcast + * @returns A promise that resolves to the transaction ID + */ + async pushPsbt( + psbtHex: string, + _options?: ccc.SignPsbtOptions, + ): Promise { + return this.provider.pushPsbt(psbtHex); + } } diff --git a/packages/uni-sat/src/advancedBarrel.ts b/packages/uni-sat/src/advancedBarrel.ts index e6ae56b58..6a97061cf 100644 --- a/packages/uni-sat/src/advancedBarrel.ts +++ b/packages/uni-sat/src/advancedBarrel.ts @@ -1,7 +1,22 @@ +import { ccc } from "@ckb-ccc/core"; + /** * Interface representing a provider for interacting with accounts and signing messages. */ export interface Provider { + /** + * Signs a PSBT using UniSat wallet. + * + * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT + * @returns A promise that resolves to the signed PSBT hex string + */ + signPsbt(psbtHex: string, options?: ccc.SignPsbtOptions): Promise; + + pushPsbt(psbtHex: string): Promise; + + pushTx(tx: { rawtx: string }): Promise; + /** * Requests user accounts. * @returns A promise that resolves to an array of account addresses. diff --git a/packages/uni-sat/src/signer.ts b/packages/uni-sat/src/signer.ts index 653bba8ee..bf28c7de5 100644 --- a/packages/uni-sat/src/signer.ts +++ b/packages/uni-sat/src/signer.ts @@ -150,4 +150,30 @@ export class Signer extends ccc.SignerBtc { return this.provider.signMessage(challenge, "ecdsa"); } + + /** + * Signs a PSBT using UniSat wallet. + * + * @param psbtHex - The hex string of PSBT to sign + * @returns A promise that resolves to the signed PSBT hex string + */ + async signPsbt( + psbtHex: string, + options?: ccc.SignPsbtOptions, + ): Promise { + return this.provider.signPsbt(psbtHex, options); + } + + /** + * Broadcasts a signed PSBT to the Bitcoin network. + * + * @param psbtHex - The hex string of signed PSBT to broadcast + * @returns A promise that resolves to the transaction ID + */ + async pushPsbt( + psbtHex: string, + _options?: ccc.SignPsbtOptions, + ): Promise { + return this.provider.pushPsbt(psbtHex); + } } diff --git a/packages/utxo-global/src/btc/index.ts b/packages/utxo-global/src/btc/index.ts index 57e73594d..5cede753c 100644 --- a/packages/utxo-global/src/btc/index.ts +++ b/packages/utxo-global/src/btc/index.ts @@ -127,4 +127,29 @@ export class SignerBtc extends ccc.SignerBtc { this.accountCache ?? (await this.getBtcAccount()), ); } + + /** + * Signs a PSBT using UTXO Global wallet. + * + * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT + * @returns A promise that resolves to the signed PSBT hex string + */ + async signPsbt( + _psbtHex: string, + _options?: ccc.SignPsbtOptions, + ): Promise { + throw new Error("UTXO Global PSBT signing not implemented yet"); + } + + /** + * Broadcasts a signed PSBT to the Bitcoin network. + * + * @param psbtHex - The hex string of signed PSBT to broadcast + * @returns A promise that resolves to the transaction ID + * @todo Implement PSBT broadcasting with UTXO Global + */ + async pushPsbt(_: string, __?: ccc.SignPsbtOptions): Promise { + throw new Error("UTXO Global PSBT broadcasting not implemented yet"); + } } diff --git a/packages/xverse/package.json b/packages/xverse/package.json index 21055c506..360f87354 100644 --- a/packages/xverse/package.json +++ b/packages/xverse/package.json @@ -57,6 +57,7 @@ }, "dependencies": { "@ckb-ccc/core": "workspace:*", + "bitcoinjs-lib": "^7.0.0", "valibot": "^1.1.0" }, "packageManager": "pnpm@10.8.1" diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index af243a11a..5507e4006 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -1,4 +1,5 @@ import { ccc } from "@ckb-ccc/core"; +import { Psbt } from "bitcoinjs-lib"; import * as v from "valibot"; import { Address, @@ -65,6 +66,10 @@ export class Signer extends ccc.SignerBtc { super(client); } + get supportsSingleCallSignAndBroadcast(): boolean { + return true; + } + async assertAddress(): Promise
{ this.addressCache = this.addressCache ?? @@ -169,4 +174,170 @@ export class Signer extends ccc.SignerBtc { ) ).signature; } + + /** + * Build default toSignInputs for all unsigned inputs + */ + private buildDefaultToSignInputs( + psbtHex: string, + address: string, + ): ccc.ToSignInput[] { + const toSignInputs: ccc.ToSignInput[] = []; + + try { + const psbt = Psbt.fromHex(psbtHex); + + // Collect all unsigned inputs + psbt.data.inputs.forEach((input, index) => { + const isSigned = + input.finalScriptSig || + input.finalScriptWitness || + input.tapKeySig || + (input.partialSig && input.partialSig.length > 0) || + (input.tapScriptSig && input.tapScriptSig.length > 0); + + if (!isSigned) { + toSignInputs.push({ index, address } as ccc.ToSignInput); + } + }); + + // If no unsigned inputs found, assume we need to sign all inputs + if (toSignInputs.length === 0) { + for (let i = 0; i < psbt.data.inputs.length; i++) { + toSignInputs.push({ index: i, address } as ccc.ToSignInput); + } + } + } catch (error) { + // Fallback: if PSBT parsing fails, assume single input at index 0 + console.warn("Failed to parse PSBT, assuming single input:", error); + toSignInputs.push({ index: 0, address } as ccc.ToSignInput); + } + + return toSignInputs; + } + + private async prepareSignPsbtParams( + psbtHex: string, + options?: ccc.SignPsbtOptions, + ): Promise<{ + psbtBase64: string; + signInputs: Record; + }> { + let toSignInputs = options?.toSignInputs; + if (!toSignInputs || !toSignInputs.length) { + const address = await this.getBtcAccount(); + toSignInputs = this.buildDefaultToSignInputs(psbtHex, address); + } + + const psbtBytes = ccc.bytesFrom(psbtHex); + const psbtBase64 = ccc.bytesTo(psbtBytes, "base64"); + + const signInputs = toSignInputs.reduce( + (acc, input) => { + if (!input.address) { + throw new Error( + "Xverse only supports signing with address. Please provide 'address' in toSignInputs.", + ); + } + if (acc[input.address]) { + acc[input.address].push(input.index); + } else { + acc[input.address] = [input.index]; + } + return acc; + }, + {} as Record, + ); + + return { psbtBase64, signInputs }; + } + + /** + * Signs a PSBT using Xverse wallet. + * + * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT + * @returns A promise that resolves to the signed PSBT hex string + * + * @remarks + * Xverse accepts: + * - psbt: A string representing the PSBT to sign, encoded in base64 + * - signInputs: A Record where: + * - keys are the addresses to use for signing + * - values are the indexes of the inputs to sign with each address + * + * Xverse returns: + * - psbt: The base64 encoded signed PSBT + * + * @see https://docs.xverse.app/sats-connect/bitcoin-methods/signpsbt + */ + async signPsbt( + psbtHex: string, + options?: ccc.SignPsbtOptions, + ): Promise { + const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( + psbtHex, + options, + ); + + const signedPsbtBase64 = ( + await checkResponse( + this.provider.request("signPsbt", { + psbt: psbtBase64, + signInputs, + broadcast: false, + }), + ) + ).psbt; + + const signedPsbtBytes = ccc.bytesFrom(signedPsbtBase64, "base64"); + return ccc.hexFrom(signedPsbtBytes).slice(2); + } + + /** + * Signs and broadcasts a PSBT using Xverse wallet (single popup). + * + * @param psbtHex - The hex string of PSBT to sign and broadcast + * @param options - Options for signing the PSBT + * @returns A promise that resolves to SignPsbtResult: + * - psbt: base64 encoded signed PSBT + * - txid: transaction id (only when broadcast succeeds) + * + * @remarks + * Xverse accepts: + * - psbt: base64 encoded PSBT + * - signInputs: Record input indexes to sign + * - broadcast: set to true to broadcast + * + * @remarks + * Use this method directly for sign+broadcast operations to avoid double popups. + * While calling signPsbt() then pushPsbt() will still work, it triggers two popups and requires double signing. + * + * @see https://docs.xverse.app/sats-connect/bitcoin-methods/signpsbt + */ + async pushPsbt( + psbtHex: string, + options?: ccc.SignPsbtOptions, + ): Promise { + const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( + psbtHex, + options, + ); + + const result = await checkResponse( + this.provider.request("signPsbt", { + psbt: psbtBase64, + // Build signInputs: Record + // Multiple inputs with the same address should be grouped together + signInputs, + broadcast: true, + }), + ); + + if (!result.txid) { + throw new Error("Failed to broadcast PSBT"); + } + + return result.txid; + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33d5adee6..67b164b5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1342,6 +1342,9 @@ importers: '@ckb-ccc/core': specifier: workspace:* version: link:../core + bitcoinjs-lib: + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.2) valibot: specifier: ^1.1.0 version: 1.1.0(typescript@5.9.2) @@ -5224,9 +5227,17 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bip174@3.0.0: + resolution: {integrity: sha512-N3vz3rqikLEu0d6yQL8GTrSkpYb35NQKWMR7Hlza0lOj6ZOlvQ3Xr7N9Y+JPebaCVoEUHdBeBSuLxcHr71r+Lw==} + engines: {node: '>=18.0.0'} + birpc@4.0.0: resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + bitcoinjs-lib@7.0.0: + resolution: {integrity: sha512-2W6dGXFd1KG3Bs90Bzb5+ViCeSKNIYkCUWZ4cvUzUgwnneiNNZ6Sk8twGNcjlesmxC0JyLc/958QycfpvXLg7A==} + engines: {node: '>=18.0.0'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -10433,6 +10444,14 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} + uint8array-tools@0.0.8: + resolution: {integrity: sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==} + engines: {node: '>=14.0.0'} + + uint8array-tools@0.0.9: + resolution: {integrity: sha512-9vqDWmoSXOoi+K14zNaf6LBV51Q8MayF0/IiQs3GlygIKUYtog603e6virExkjjFosfJUBI4LhbQK1iq8IG11A==} + engines: {node: '>=14.0.0'} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -10579,6 +10598,14 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} + valibot@0.38.0: + resolution: {integrity: sha512-RCJa0fetnzp+h+KN9BdgYOgtsMAG9bfoJ9JSjIhFHobKWVWyzM3jjaeNTdpFK9tQtf3q1sguXeERJ/LcmdFE7w==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + valibot@1.1.0: resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==} peerDependencies: @@ -10597,6 +10624,9 @@ packages: value-equal@1.0.1: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + varuint-bitcoin@2.0.0: + resolution: {integrity: sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -16030,8 +16060,25 @@ snapshots: binary-extensions@2.3.0: {} + bip174@3.0.0: + dependencies: + uint8array-tools: 0.0.9 + varuint-bitcoin: 2.0.0 + birpc@4.0.0: {} + bitcoinjs-lib@7.0.0(typescript@5.9.2): + dependencies: + '@noble/hashes': 1.8.0 + bech32: 2.0.0 + bip174: 3.0.0 + bs58check: 4.0.0(patch_hash=0848a2e3956f24abf1dd8620cba2a3f468393e489185d9536ad109f7e5712d26) + uint8array-tools: 0.0.9 + valibot: 0.38.0(typescript@5.9.2) + varuint-bitcoin: 2.0.0 + transitivePeerDependencies: + - typescript + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -22323,6 +22370,10 @@ snapshots: uint8array-extras@1.5.0: {} + uint8array-tools@0.0.8: {} + + uint8array-tools@0.0.9: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -22496,6 +22547,10 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + valibot@0.38.0(typescript@5.9.2): + optionalDependencies: + typescript: 5.9.2 + valibot@1.1.0(typescript@5.9.2): optionalDependencies: typescript: 5.9.2 @@ -22509,6 +22564,10 @@ snapshots: value-equal@1.0.1: {} + varuint-bitcoin@2.0.0: + dependencies: + uint8array-tools: 0.0.8 + vary@1.1.2: {} vfile-location@5.0.3: From 6e1ff950c6b732a4093c3e73c13f00ff719ab2ec Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 10 Dec 2025 00:44:08 -0500 Subject: [PATCH 08/42] fix(btc): improve PSBT signing safety and error handling --- packages/core/src/signer/btc/signerBtc.ts | 11 ++++++++--- packages/xverse/src/signer.ts | 18 +++++------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/core/src/signer/btc/signerBtc.ts b/packages/core/src/signer/btc/signerBtc.ts index 6f31946cd..6dd8ba4c6 100644 --- a/packages/core/src/signer/btc/signerBtc.ts +++ b/packages/core/src/signer/btc/signerBtc.ts @@ -164,10 +164,15 @@ export abstract class SignerBtc extends Signer { ): Promise; /** - * Broadcasts a signed PSBT to the Bitcoin network. + * Pushes a PSBT to the Bitcoin network. * - * @param psbtHex - The hex string of signed PSBT to broadcast - * @returns A promise that resolves to the transaction ID + * For wallets that support a single call for signing and broadcasting (where `supportsSingleCallSignAndBroadcast` is true), + * this method takes an **unsigned** PSBT, signs it, and broadcasts it. + * For other wallets, this method takes a **signed** PSBT and only broadcasts it. + * + * @param psbtHex - The hex string of the PSBT to push. Can be signed or unsigned depending on the wallet's capabilities. + * @param options - Options for signing the PSBT. Only used by wallets that perform signing in this step. + * @returns A promise that resolves to the transaction ID. */ abstract pushPsbt( psbtHex: string, diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index 5507e4006..f28d798eb 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -201,16 +201,12 @@ export class Signer extends ccc.SignerBtc { } }); - // If no unsigned inputs found, assume we need to sign all inputs - if (toSignInputs.length === 0) { - for (let i = 0; i < psbt.data.inputs.length; i++) { - toSignInputs.push({ index: i, address } as ccc.ToSignInput); - } - } + // If no unsigned inputs found, the PSBT is already fully signed + // Let the wallet handle this case (likely a no-op or error) } catch (error) { - // Fallback: if PSBT parsing fails, assume single input at index 0 - console.warn("Failed to parse PSBT, assuming single input:", error); - toSignInputs.push({ index: 0, address } as ccc.ToSignInput); + throw new Error( + `Failed to parse PSBT hex. Please provide toSignInputs explicitly in options. Original error: ${String(error)}`, + ); } return toSignInputs; @@ -309,10 +305,6 @@ export class Signer extends ccc.SignerBtc { * - signInputs: Record input indexes to sign * - broadcast: set to true to broadcast * - * @remarks - * Use this method directly for sign+broadcast operations to avoid double popups. - * While calling signPsbt() then pushPsbt() will still work, it triggers two popups and requires double signing. - * * @see https://docs.xverse.app/sats-connect/bitcoin-methods/signpsbt */ async pushPsbt( From 014fcf2faff0dc37c1c82afdf7b3643ce8871f05 Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 10 Dec 2025 01:10:20 -0500 Subject: [PATCH 09/42] chore(btc): improve PSBT documentation and remove redundant code --- packages/uni-sat/src/advancedBarrel.ts | 8 ++++++-- packages/uni-sat/src/signer.ts | 1 + packages/xverse/src/signer.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/uni-sat/src/advancedBarrel.ts b/packages/uni-sat/src/advancedBarrel.ts index 6a97061cf..8ff7e0c04 100644 --- a/packages/uni-sat/src/advancedBarrel.ts +++ b/packages/uni-sat/src/advancedBarrel.ts @@ -13,10 +13,14 @@ export interface Provider { */ signPsbt(psbtHex: string, options?: ccc.SignPsbtOptions): Promise; + /** + * Broadcasts a signed PSBT to the Bitcoin network. + * + * @param psbtHex - The hex string of the signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID. + */ pushPsbt(psbtHex: string): Promise; - pushTx(tx: { rawtx: string }): Promise; - /** * Requests user accounts. * @returns A promise that resolves to an array of account addresses. diff --git a/packages/uni-sat/src/signer.ts b/packages/uni-sat/src/signer.ts index bf28c7de5..1c4461c49 100644 --- a/packages/uni-sat/src/signer.ts +++ b/packages/uni-sat/src/signer.ts @@ -155,6 +155,7 @@ export class Signer extends ccc.SignerBtc { * Signs a PSBT using UniSat wallet. * * @param psbtHex - The hex string of PSBT to sign + * @param options - Options for signing the PSBT * @returns A promise that resolves to the signed PSBT hex string */ async signPsbt( diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index f28d798eb..34d10c239 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -197,7 +197,7 @@ export class Signer extends ccc.SignerBtc { (input.tapScriptSig && input.tapScriptSig.length > 0); if (!isSigned) { - toSignInputs.push({ index, address } as ccc.ToSignInput); + toSignInputs.push({ index, address }); } }); From a27fb4834e6ad06403f48281f1ed1fdaadb5a9b9 Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 10 Dec 2025 01:28:05 -0500 Subject: [PATCH 10/42] refactor(xverse): use bytesTo instead of hexFrom+slice for PSBT conversion --- packages/xverse/src/signer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index 34d10c239..11344c12f 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -287,7 +287,7 @@ export class Signer extends ccc.SignerBtc { ).psbt; const signedPsbtBytes = ccc.bytesFrom(signedPsbtBase64, "base64"); - return ccc.hexFrom(signedPsbtBytes).slice(2); + return ccc.bytesTo(signedPsbtBytes, "hex"); // no leading "0x" } /** From 14decce6b1969f6fc0d7327c89846471c73ba637 Mon Sep 17 00:00:00 2001 From: fgh Date: Thu, 8 Jan 2026 00:06:19 -0500 Subject: [PATCH 11/42] fix(joy-id): pass options parameter to buildJoyIDURL in pushPsbt --- packages/joy-id/src/btc/index.ts | 3 ++- packages/xverse/src/signer.ts | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/joy-id/src/btc/index.ts b/packages/joy-id/src/btc/index.ts index 885528659..0cf634a79 100644 --- a/packages/joy-id/src/btc/index.ts +++ b/packages/joy-id/src/btc/index.ts @@ -248,7 +248,7 @@ export class BitcoinSigner extends ccc.SignerBtc { */ async pushPsbt( psbtHex: string, - _options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptions, ): Promise { const { address } = await this.assertConnection(); @@ -258,6 +258,7 @@ export class BitcoinSigner extends ccc.SignerBtc { { ...config, tx: psbtHex, + options, signerAddress: address, autoFinalized: true, // sendPsbt always finalizes isSend: true, diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index 11344c12f..c793d6a19 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -319,8 +319,6 @@ export class Signer extends ccc.SignerBtc { const result = await checkResponse( this.provider.request("signPsbt", { psbt: psbtBase64, - // Build signInputs: Record - // Multiple inputs with the same address should be grouped together signInputs, broadcast: true, }), From b133cc0014e480f8554b76d59893d8951ff7e774 Mon Sep 17 00:00:00 2001 From: fgh Date: Tue, 13 Jan 2026 13:16:04 -0500 Subject: [PATCH 12/42] refactor(SignerBtc): standardize BTC signer methods and types --- packages/core/src/signer/btc/signerBtc.ts | 58 ++++++++----------- .../signer/btc/signerBtcPublicKeyReadonly.ts | 6 +- packages/joy-id/src/btc/index.ts | 39 +++++++------ packages/okx/src/btc/index.ts | 18 +++--- packages/uni-sat/src/signer.ts | 18 +++--- packages/utxo-global/src/btc/index.ts | 15 +++-- packages/xverse/src/signer.ts | 58 +++++++++---------- 7 files changed, 100 insertions(+), 112 deletions(-) diff --git a/packages/core/src/signer/btc/signerBtc.ts b/packages/core/src/signer/btc/signerBtc.ts index 6dd8ba4c6..30c090c6d 100644 --- a/packages/core/src/signer/btc/signerBtc.ts +++ b/packages/core/src/signer/btc/signerBtc.ts @@ -24,29 +24,19 @@ export abstract class SignerBtc extends Signer { } /** - * Whether the wallet supports a single call to sign + broadcast (combined flow). - * Default false; override in implementations like Xverse/JoyID. - */ - get supportsSingleCallSignAndBroadcast(): boolean { - return false; - } - - /** - * Sign and broadcast a PSBT in one call when supported, otherwise falls back - * to sign then push. Prefer this over manual sign+push to avoid double popups. + * Sign and broadcast a PSBT. + * + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign and broadcast. + * @param options - Options for signing the PSBT. + * @returns A promise that resolves to the transaction ID (non-0x prefixed hex). */ - async signAndPushPsbt( - psbtHex: string, + async signAndBroadcastPsbt( + psbtHex: HexLike, options?: SignPsbtOptions, ): Promise { - if (this.supportsSingleCallSignAndBroadcast) { - // Wallet handles sign+broadcast internally (e.g., Xverse/JoyID) - return this.pushPsbt(psbtHex, options); - } - - // Split-mode wallets: sign first, then broadcast - const signedPsbt = await this.signPsbt(psbtHex, options); - return this.pushPsbt(signedPsbt, options); + // ccc.hexFrom adds 0x prefix, but BTC expects non-0x + const signedPsbt = await this.signPsbt(hexFrom(psbtHex).slice(2), options); + return this.broadcastPsbt(signedPsbt, options); } /** @@ -154,28 +144,26 @@ export abstract class SignerBtc extends Signer { /** * Signs a Partially Signed Bitcoin Transaction (PSBT). * - * @param psbtHex - The hex string of PSBT to sign + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string + * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) */ abstract signPsbt( - psbtHex: string, + psbtHex: HexLike, options?: SignPsbtOptions, ): Promise; /** - * Pushes a PSBT to the Bitcoin network. - * - * For wallets that support a single call for signing and broadcasting (where `supportsSingleCallSignAndBroadcast` is true), - * this method takes an **unsigned** PSBT, signs it, and broadcasts it. - * For other wallets, this method takes a **signed** PSBT and only broadcasts it. + * Broadcasts a PSBT to the Bitcoin network. * - * @param psbtHex - The hex string of the PSBT to push. Can be signed or unsigned depending on the wallet's capabilities. - * @param options - Options for signing the PSBT. Only used by wallets that perform signing in this step. - * @returns A promise that resolves to the transaction ID. + * @param psbtHex - The hex string (without 0x prefix) of the PSBT to broadcast. + * @param options - Options for broadcasting the PSBT. + * @returns A promise that resolves to the transaction ID (without 0x prefix). */ - abstract pushPsbt( - psbtHex: string, - options?: SignPsbtOptions, - ): Promise; + async broadcastPsbt( + _psbtHex: HexLike, + _options?: SignPsbtOptions, + ): Promise { + throw new Error("Not implemented"); + } } diff --git a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts index f5293a952..e35be4f9d 100644 --- a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts +++ b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts @@ -72,11 +72,11 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc { return this.publicKey; } - async signPsbt(_: string, __?: SignPsbtOptions): Promise { + async signPsbt(_: HexLike, __?: SignPsbtOptions): Promise { throw new Error("Read-only signer does not support signPsbt"); } - async pushPsbt(_: string, __?: SignPsbtOptions): Promise { - throw new Error("Read-only signer does not support pushPsbt"); + async broadcastPsbt(_: HexLike, __?: SignPsbtOptions): Promise { + throw new Error("Read-only signer does not support broadcastPsbt"); } } diff --git a/packages/joy-id/src/btc/index.ts b/packages/joy-id/src/btc/index.ts index 0cf634a79..8d5686fc2 100644 --- a/packages/joy-id/src/btc/index.ts +++ b/packages/joy-id/src/btc/index.ts @@ -60,10 +60,6 @@ export class BitcoinSigner extends ccc.SignerBtc { super(client); } - get supportsSingleCallSignAndBroadcast(): boolean { - return true; - } - /** * Gets the configuration for JoyID. * @returns The configuration object. @@ -206,11 +202,11 @@ export class BitcoinSigner extends ccc.SignerBtc { /** * Signs a PSBT using JoyID wallet. * - * @param psbtHex - The hex string of PSBT to sign - * @returns A promise that resolves to the signed PSBT hex string + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. + * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) */ async signPsbt( - psbtHex: string, + psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, ): Promise { const { address } = await this.assertConnection(); @@ -220,7 +216,7 @@ export class BitcoinSigner extends ccc.SignerBtc { buildJoyIDURL( { ...config, - tx: psbtHex, + tx: ccc.hexFrom(psbtHex).slice(2), options, signerAddress: address, autoFinalized: options?.autoFinalized ?? true, @@ -235,29 +231,34 @@ export class BitcoinSigner extends ccc.SignerBtc { } /** - * Signs and broadcasts a PSBT to the Bitcoin network using JoyID wallet. - * - * This method combines both signing and broadcasting in a single operation. - * - * @param psbtHex - The hex string of PSBT to sign and broadcast - * @returns A promise that resolves to the transaction ID + * Broadcasts a PSBT to the Bitcoin network. * * @remarks - * Use this method directly for sign+broadcast operations to avoid double popups. - * While calling signPsbt() then pushPsbt() will still work, it triggers two popups and requires double signing. + * JoyID does not support broadcasting a signed PSBT directly. + * It only supports "Sign and Broadcast" as a single atomic operation via `signAndBroadcastPsbt`. */ - async pushPsbt( - psbtHex: string, + async broadcastPsbt( + _psbtHex: ccc.HexLike, + _options?: ccc.SignPsbtOptions, + ): Promise { + throw new Error( + "JoyID does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.", + ); + } + + async signAndBroadcastPsbt( + psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, ): Promise { const { address } = await this.assertConnection(); const config = this.getConfig(); + // ccc.hexFrom adds 0x prefix, but BTC expects non-0x const { tx: txid } = await createPopup( buildJoyIDURL( { ...config, - tx: psbtHex, + tx: ccc.hexFrom(psbtHex).slice(2), options, signerAddress: address, autoFinalized: true, // sendPsbt always finalizes diff --git a/packages/okx/src/btc/index.ts b/packages/okx/src/btc/index.ts index 7e3b20b65..f9ff02512 100644 --- a/packages/okx/src/btc/index.ts +++ b/packages/okx/src/btc/index.ts @@ -180,27 +180,27 @@ export class BitcoinSigner extends ccc.SignerBtc { /** * Signs a PSBT using OKX wallet. * - * @param psbtHex - The hex string of PSBT to sign + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string + * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) */ async signPsbt( - psbtHex: string, + psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, ): Promise { - return this.provider.signPsbt(psbtHex, options); + return this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options); } /** * Broadcasts a signed PSBT to the Bitcoin network. * - * @param psbtHex - The hex string of signed PSBT to broadcast - * @returns A promise that resolves to the transaction ID + * @param psbtHex - The hex string (without 0x prefix) of signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID (without 0x prefix) */ - async pushPsbt( - psbtHex: string, + async broadcastPsbt( + psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, ): Promise { - return this.provider.pushPsbt(psbtHex); + return this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); } } diff --git a/packages/uni-sat/src/signer.ts b/packages/uni-sat/src/signer.ts index 1c4461c49..4eba70d5d 100644 --- a/packages/uni-sat/src/signer.ts +++ b/packages/uni-sat/src/signer.ts @@ -154,27 +154,27 @@ export class Signer extends ccc.SignerBtc { /** * Signs a PSBT using UniSat wallet. * - * @param psbtHex - The hex string of PSBT to sign + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string + * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) */ async signPsbt( - psbtHex: string, + psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, ): Promise { - return this.provider.signPsbt(psbtHex, options); + return this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options); } /** * Broadcasts a signed PSBT to the Bitcoin network. * - * @param psbtHex - The hex string of signed PSBT to broadcast - * @returns A promise that resolves to the transaction ID + * @param psbtHex - The hex string (without 0x prefix) of signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID (without 0x prefix) */ - async pushPsbt( - psbtHex: string, + async broadcastPsbt( + psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, ): Promise { - return this.provider.pushPsbt(psbtHex); + return this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); } } diff --git a/packages/utxo-global/src/btc/index.ts b/packages/utxo-global/src/btc/index.ts index 5cede753c..bfd74c499 100644 --- a/packages/utxo-global/src/btc/index.ts +++ b/packages/utxo-global/src/btc/index.ts @@ -131,12 +131,12 @@ export class SignerBtc extends ccc.SignerBtc { /** * Signs a PSBT using UTXO Global wallet. * - * @param psbtHex - The hex string of PSBT to sign + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string + * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) */ async signPsbt( - _psbtHex: string, + _psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, ): Promise { throw new Error("UTXO Global PSBT signing not implemented yet"); @@ -145,11 +145,14 @@ export class SignerBtc extends ccc.SignerBtc { /** * Broadcasts a signed PSBT to the Bitcoin network. * - * @param psbtHex - The hex string of signed PSBT to broadcast - * @returns A promise that resolves to the transaction ID + * @param psbtHex - The hex string (without 0x prefix) of signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID (without 0x prefix) * @todo Implement PSBT broadcasting with UTXO Global */ - async pushPsbt(_: string, __?: ccc.SignPsbtOptions): Promise { + async broadcastPsbt( + _: ccc.HexLike, + __?: ccc.SignPsbtOptions, + ): Promise { throw new Error("UTXO Global PSBT broadcasting not implemented yet"); } } diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index c793d6a19..f04df272d 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -66,10 +66,6 @@ export class Signer extends ccc.SignerBtc { super(client); } - get supportsSingleCallSignAndBroadcast(): boolean { - return true; - } - async assertAddress(): Promise
{ this.addressCache = this.addressCache ?? @@ -179,15 +175,14 @@ export class Signer extends ccc.SignerBtc { * Build default toSignInputs for all unsigned inputs */ private buildDefaultToSignInputs( - psbtHex: string, + psbtHex: ccc.Hex, address: string, ): ccc.ToSignInput[] { const toSignInputs: ccc.ToSignInput[] = []; try { - const psbt = Psbt.fromHex(psbtHex); - // Collect all unsigned inputs + const psbt = Psbt.fromHex(psbtHex.slice(2)); psbt.data.inputs.forEach((input, index) => { const isSigned = input.finalScriptSig || @@ -204,8 +199,10 @@ export class Signer extends ccc.SignerBtc { // If no unsigned inputs found, the PSBT is already fully signed // Let the wallet handle this case (likely a no-op or error) } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error); throw new Error( - `Failed to parse PSBT hex. Please provide toSignInputs explicitly in options. Original error: ${String(error)}`, + `Failed to parse PSBT hex. Please provide toSignInputs explicitly in options. Original error: ${errorMessage}`, ); } @@ -213,7 +210,7 @@ export class Signer extends ccc.SignerBtc { } private async prepareSignPsbtParams( - psbtHex: string, + psbtHex: ccc.Hex, options?: ccc.SignPsbtOptions, ): Promise<{ psbtBase64: string; @@ -225,8 +222,7 @@ export class Signer extends ccc.SignerBtc { toSignInputs = this.buildDefaultToSignInputs(psbtHex, address); } - const psbtBytes = ccc.bytesFrom(psbtHex); - const psbtBase64 = ccc.bytesTo(psbtBytes, "base64"); + const psbtBase64 = ccc.bytesTo(psbtHex, "base64"); const signInputs = toSignInputs.reduce( (acc, input) => { @@ -251,9 +247,9 @@ export class Signer extends ccc.SignerBtc { /** * Signs a PSBT using Xverse wallet. * - * @param psbtHex - The hex string of PSBT to sign + * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string + * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) * * @remarks * Xverse accepts: @@ -268,11 +264,11 @@ export class Signer extends ccc.SignerBtc { * @see https://docs.xverse.app/sats-connect/bitcoin-methods/signpsbt */ async signPsbt( - psbtHex: string, + psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, ): Promise { const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( - psbtHex, + ccc.hexFrom(psbtHex), options, ); @@ -291,28 +287,28 @@ export class Signer extends ccc.SignerBtc { } /** - * Signs and broadcasts a PSBT using Xverse wallet (single popup). - * - * @param psbtHex - The hex string of PSBT to sign and broadcast - * @param options - Options for signing the PSBT - * @returns A promise that resolves to SignPsbtResult: - * - psbt: base64 encoded signed PSBT - * - txid: transaction id (only when broadcast succeeds) + * Broadcasts a PSBT to the Bitcoin network. * * @remarks - * Xverse accepts: - * - psbt: base64 encoded PSBT - * - signInputs: Record input indexes to sign - * - broadcast: set to true to broadcast - * - * @see https://docs.xverse.app/sats-connect/bitcoin-methods/signpsbt + * Xverse does not support broadcasting a signed PSBT directly. + * It only supports "Sign and Broadcast" as a single atomic operation via `signAndBroadcastPsbt`. */ - async pushPsbt( - psbtHex: string, + async broadcastPsbt( + _psbtHex: ccc.HexLike, + _options?: ccc.SignPsbtOptions, + ): Promise { + throw new Error( + "Xverse does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.", + ); + } + + async signAndBroadcastPsbt( + psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, ): Promise { + // ccc.hexFrom adds 0x prefix, but BTC expects non-0x const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( - psbtHex, + ccc.hexFrom(psbtHex), options, ); From 870db0250f526c261db60b896c4bd11b7767a95b Mon Sep 17 00:00:00 2001 From: fgh Date: Tue, 13 Jan 2026 13:38:38 -0500 Subject: [PATCH 13/42] refactor: improve parameter naming in PSBT methods --- .../core/src/signer/btc/signerBtcPublicKeyReadonly.ts | 10 ++++++++-- packages/utxo-global/src/btc/index.ts | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts index e35be4f9d..5f2d7a729 100644 --- a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts +++ b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts @@ -72,11 +72,17 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc { return this.publicKey; } - async signPsbt(_: HexLike, __?: SignPsbtOptions): Promise { + async signPsbt( + _psbtHex: HexLike, + _options?: SignPsbtOptions, + ): Promise { throw new Error("Read-only signer does not support signPsbt"); } - async broadcastPsbt(_: HexLike, __?: SignPsbtOptions): Promise { + async broadcastPsbt( + _psbtHex: HexLike, + _options?: SignPsbtOptions, + ): Promise { throw new Error("Read-only signer does not support broadcastPsbt"); } } diff --git a/packages/utxo-global/src/btc/index.ts b/packages/utxo-global/src/btc/index.ts index bfd74c499..7c285453c 100644 --- a/packages/utxo-global/src/btc/index.ts +++ b/packages/utxo-global/src/btc/index.ts @@ -150,8 +150,8 @@ export class SignerBtc extends ccc.SignerBtc { * @todo Implement PSBT broadcasting with UTXO Global */ async broadcastPsbt( - _: ccc.HexLike, - __?: ccc.SignPsbtOptions, + _psbtHex: ccc.HexLike, + _options?: ccc.SignPsbtOptions, ): Promise { throw new Error("UTXO Global PSBT broadcasting not implemented yet"); } From 8c3a4a46de396cc3a899d70171be9f3e3aab8149 Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 14 Jan 2026 04:41:13 -0500 Subject: [PATCH 14/42] refactor(SignerBtc): standardize PSBT method signatures and return types --- packages/core/src/signer/btc/signerBtc.ts | 26 ++++++++----------- .../signer/btc/signerBtcPublicKeyReadonly.ts | 7 ++--- packages/joy-id/src/btc/index.ts | 14 +++++----- packages/okx/src/btc/index.ts | 15 ++++++----- packages/uni-sat/src/signer.ts | 15 ++++++----- packages/utxo-global/src/btc/index.ts | 12 ++++----- packages/xverse/src/signer.ts | 15 +++++------ 7 files changed, 51 insertions(+), 53 deletions(-) diff --git a/packages/core/src/signer/btc/signerBtc.ts b/packages/core/src/signer/btc/signerBtc.ts index 30c090c6d..b450feefb 100644 --- a/packages/core/src/signer/btc/signerBtc.ts +++ b/packages/core/src/signer/btc/signerBtc.ts @@ -2,7 +2,7 @@ import { Address } from "../../address/index.js"; import { bytesConcat, bytesFrom } from "../../bytes/index.js"; import { Transaction, TransactionLike, WitnessArgs } from "../../ckb/index.js"; import { KnownScript } from "../../client/index.js"; -import { HexLike, hexFrom } from "../../hex/index.js"; +import { Hex, HexLike, hexFrom } from "../../hex/index.js"; import { numToBytes } from "../../num/index.js"; import { Signer, SignerSignType, SignerType } from "../signer/index.js"; import { SignPsbtOptions } from "./psbt.js"; @@ -26,16 +26,15 @@ export abstract class SignerBtc extends Signer { /** * Sign and broadcast a PSBT. * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign and broadcast. + * @param psbtHex - The hex string of PSBT to sign and broadcast. * @param options - Options for signing the PSBT. - * @returns A promise that resolves to the transaction ID (non-0x prefixed hex). + * @returns A promise that resolves to the transaction ID as a Hex string. */ async signAndBroadcastPsbt( psbtHex: HexLike, options?: SignPsbtOptions, - ): Promise { - // ccc.hexFrom adds 0x prefix, but BTC expects non-0x - const signedPsbt = await this.signPsbt(hexFrom(psbtHex).slice(2), options); + ): Promise { + const signedPsbt = await this.signPsbt(psbtHex, options); return this.broadcastPsbt(signedPsbt, options); } @@ -144,26 +143,23 @@ export abstract class SignerBtc extends Signer { /** * Signs a Partially Signed Bitcoin Transaction (PSBT). * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. + * @param psbtHex - The hex string of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) + * @returns A promise that resolves to the signed PSBT as a Hex string. */ - abstract signPsbt( - psbtHex: HexLike, - options?: SignPsbtOptions, - ): Promise; + abstract signPsbt(psbtHex: HexLike, options?: SignPsbtOptions): Promise; /** * Broadcasts a PSBT to the Bitcoin network. * - * @param psbtHex - The hex string (without 0x prefix) of the PSBT to broadcast. + * @param psbtHex - The hex string of the PSBT to broadcast. * @param options - Options for broadcasting the PSBT. - * @returns A promise that resolves to the transaction ID (without 0x prefix). + * @returns A promise that resolves to the transaction ID as a Hex string. */ async broadcastPsbt( _psbtHex: HexLike, _options?: SignPsbtOptions, - ): Promise { + ): Promise { throw new Error("Not implemented"); } } diff --git a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts index 5f2d7a729..1b2a403d6 100644 --- a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts +++ b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts @@ -72,17 +72,14 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc { return this.publicKey; } - async signPsbt( - _psbtHex: HexLike, - _options?: SignPsbtOptions, - ): Promise { + async signPsbt(_psbtHex: HexLike, _options?: SignPsbtOptions): Promise { throw new Error("Read-only signer does not support signPsbt"); } async broadcastPsbt( _psbtHex: HexLike, _options?: SignPsbtOptions, - ): Promise { + ): Promise { throw new Error("Read-only signer does not support broadcastPsbt"); } } diff --git a/packages/joy-id/src/btc/index.ts b/packages/joy-id/src/btc/index.ts index 8d5686fc2..b4efe236b 100644 --- a/packages/joy-id/src/btc/index.ts +++ b/packages/joy-id/src/btc/index.ts @@ -202,13 +202,13 @@ export class BitcoinSigner extends ccc.SignerBtc { /** * Signs a PSBT using JoyID wallet. * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. - * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) + * @param psbtHex - The hex string of PSBT to sign. + * @returns A promise that resolves to the signed PSBT as a Hex string. */ async signPsbt( psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { const { address } = await this.assertConnection(); const config = this.getConfig(); @@ -227,7 +227,7 @@ export class BitcoinSigner extends ccc.SignerBtc { { ...config, type: DappRequestType.SignPsbt }, ); - return signedPsbtHex; + return ccc.hexFrom(signedPsbtHex); } /** @@ -240,7 +240,7 @@ export class BitcoinSigner extends ccc.SignerBtc { async broadcastPsbt( _psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { throw new Error( "JoyID does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.", ); @@ -249,7 +249,7 @@ export class BitcoinSigner extends ccc.SignerBtc { async signAndBroadcastPsbt( psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { const { address } = await this.assertConnection(); const config = this.getConfig(); @@ -270,6 +270,6 @@ export class BitcoinSigner extends ccc.SignerBtc { { ...config, type: DappRequestType.SignPsbt }, // Use SignPsbt type for both operations ); - return txid; + return ccc.hexFrom(txid); } } diff --git a/packages/okx/src/btc/index.ts b/packages/okx/src/btc/index.ts index f9ff02512..3497e79fd 100644 --- a/packages/okx/src/btc/index.ts +++ b/packages/okx/src/btc/index.ts @@ -180,15 +180,17 @@ export class BitcoinSigner extends ccc.SignerBtc { /** * Signs a PSBT using OKX wallet. * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. + * @param psbtHex - The hex string of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) + * @returns A promise that resolves to the signed PSBT as a Hex string */ async signPsbt( psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, - ): Promise { - return this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options); + ): Promise { + return ccc.hexFrom( + await this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options), + ); } /** @@ -200,7 +202,8 @@ export class BitcoinSigner extends ccc.SignerBtc { async broadcastPsbt( psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, - ): Promise { - return this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); + ): Promise { + const txid = await this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); + return ccc.hexFrom(txid); } } diff --git a/packages/uni-sat/src/signer.ts b/packages/uni-sat/src/signer.ts index 4eba70d5d..333683f58 100644 --- a/packages/uni-sat/src/signer.ts +++ b/packages/uni-sat/src/signer.ts @@ -154,15 +154,17 @@ export class Signer extends ccc.SignerBtc { /** * Signs a PSBT using UniSat wallet. * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. + * @param psbtHex - The hex string of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) + * @returns A promise that resolves to the signed PSBT as a Hex string */ async signPsbt( psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, - ): Promise { - return this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options); + ): Promise { + return ccc.hexFrom( + await this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options), + ); } /** @@ -174,7 +176,8 @@ export class Signer extends ccc.SignerBtc { async broadcastPsbt( psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, - ): Promise { - return this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); + ): Promise { + const txid = await this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); + return ccc.hexFrom(txid); } } diff --git a/packages/utxo-global/src/btc/index.ts b/packages/utxo-global/src/btc/index.ts index 7c285453c..7aee417cd 100644 --- a/packages/utxo-global/src/btc/index.ts +++ b/packages/utxo-global/src/btc/index.ts @@ -131,28 +131,28 @@ export class SignerBtc extends ccc.SignerBtc { /** * Signs a PSBT using UTXO Global wallet. * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. + * @param psbtHex - The hex string of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) + * @returns A promise that resolves to the signed PSBT as a Hex string */ async signPsbt( _psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { throw new Error("UTXO Global PSBT signing not implemented yet"); } /** * Broadcasts a signed PSBT to the Bitcoin network. * - * @param psbtHex - The hex string (without 0x prefix) of signed PSBT to broadcast. - * @returns A promise that resolves to the transaction ID (without 0x prefix) + * @param psbtHex - The hex string of signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID as a Hex string * @todo Implement PSBT broadcasting with UTXO Global */ async broadcastPsbt( _psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { throw new Error("UTXO Global PSBT broadcasting not implemented yet"); } } diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index f04df272d..441fdc0cc 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -247,9 +247,9 @@ export class Signer extends ccc.SignerBtc { /** * Signs a PSBT using Xverse wallet. * - * @param psbtHex - The hex string (without 0x prefix) of PSBT to sign. + * @param psbtHex - The hex string of PSBT to sign. * @param options - Options for signing the PSBT - * @returns A promise that resolves to the signed PSBT hex string (without 0x prefix) + * @returns A promise that resolves to the signed PSBT as a Hex string * * @remarks * Xverse accepts: @@ -266,7 +266,7 @@ export class Signer extends ccc.SignerBtc { async signPsbt( psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( ccc.hexFrom(psbtHex), options, @@ -282,8 +282,7 @@ export class Signer extends ccc.SignerBtc { ) ).psbt; - const signedPsbtBytes = ccc.bytesFrom(signedPsbtBase64, "base64"); - return ccc.bytesTo(signedPsbtBytes, "hex"); // no leading "0x" + return ccc.hexFrom(ccc.bytesFrom(signedPsbtBase64, "base64")); } /** @@ -296,7 +295,7 @@ export class Signer extends ccc.SignerBtc { async broadcastPsbt( _psbtHex: ccc.HexLike, _options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { throw new Error( "Xverse does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.", ); @@ -305,7 +304,7 @@ export class Signer extends ccc.SignerBtc { async signAndBroadcastPsbt( psbtHex: ccc.HexLike, options?: ccc.SignPsbtOptions, - ): Promise { + ): Promise { // ccc.hexFrom adds 0x prefix, but BTC expects non-0x const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( ccc.hexFrom(psbtHex), @@ -324,6 +323,6 @@ export class Signer extends ccc.SignerBtc { throw new Error("Failed to broadcast PSBT"); } - return result.txid; + return ccc.hexFrom(result.txid); } } From aca2112ca5f0d5b0f950b324ec136433b07bfc89 Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 21 Jan 2026 01:36:40 -0500 Subject: [PATCH 15/42] refactor(core): improve SignerBtc PSBT types with Like pattern --- packages/core/src/signer/btc/psbt.ts | 46 +++++++++++++++++-- packages/core/src/signer/btc/signerBtc.ts | 19 ++++---- .../signer/btc/signerBtcPublicKeyReadonly.ts | 9 ++-- packages/joy-id/src/btc/index.ts | 14 +++--- packages/okx/src/btc/index.ts | 4 +- packages/uni-sat/src/advancedBarrel.ts | 2 +- packages/uni-sat/src/signer.ts | 4 +- packages/utxo-global/src/btc/index.ts | 4 +- packages/xverse/src/signer.ts | 33 ++++++------- 9 files changed, 89 insertions(+), 46 deletions(-) diff --git a/packages/core/src/signer/btc/psbt.ts b/packages/core/src/signer/btc/psbt.ts index 77ac646f7..69dd6f595 100644 --- a/packages/core/src/signer/btc/psbt.ts +++ b/packages/core/src/signer/btc/psbt.ts @@ -1,7 +1,9 @@ +import { HexLike, hexFrom } from "../../hex/index.js"; + /** * Options for signing a PSBT (Partially Signed Bitcoin Transaction) */ -export type SignPsbtOptions = { +export type SignPsbtOptionsLike = { /** * Whether to finalize the PSBT after signing. * Default is true. @@ -10,14 +12,28 @@ export type SignPsbtOptions = { /** * Array of inputs to sign */ - toSignInputs?: ToSignInput[]; + inputsToSign?: InputToSignLike[]; }; +export class SignPsbtOptions { + constructor( + public autoFinalized: boolean, + public inputsToSign: InputToSign[], + ) {} + + static from(options?: SignPsbtOptionsLike): SignPsbtOptions { + return new SignPsbtOptions( + options?.autoFinalized ?? true, + options?.inputsToSign?.map((i) => InputToSign.from(i)) ?? [], + ); + } +} + /** * Specification for an input to sign in a PSBT. * Must specify at least one of: address or pubkey. */ -export type ToSignInput = { +export type InputToSignLike = { /** * Which input to sign (index in the PSBT inputs array) */ @@ -41,7 +57,7 @@ export type ToSignInput = { /** * The public key whose corresponding private key to use for signing. */ - publicKey?: string; + publicKey?: HexLike; } | { /** @@ -51,6 +67,26 @@ export type ToSignInput = { /** * The public key whose corresponding private key to use for signing. */ - publicKey: string; + publicKey: HexLike; } ); + +export class InputToSign { + constructor( + public index: number, + public sighashTypes?: number[], + public disableTweakSigner?: boolean, + public address?: string, + public publicKey?: string, + ) {} + + static from(input: InputToSignLike): InputToSign { + return new InputToSign( + input.index, + input.sighashTypes, + input.disableTweakSigner, + input.address, + input.publicKey ? hexFrom(input.publicKey).slice(2) : undefined, + ); + } +} diff --git a/packages/core/src/signer/btc/signerBtc.ts b/packages/core/src/signer/btc/signerBtc.ts index b450feefb..4c0d389ad 100644 --- a/packages/core/src/signer/btc/signerBtc.ts +++ b/packages/core/src/signer/btc/signerBtc.ts @@ -5,7 +5,7 @@ import { KnownScript } from "../../client/index.js"; import { Hex, HexLike, hexFrom } from "../../hex/index.js"; import { numToBytes } from "../../num/index.js"; import { Signer, SignerSignType, SignerType } from "../signer/index.js"; -import { SignPsbtOptions } from "./psbt.js"; +import { SignPsbtOptionsLike } from "./psbt.js"; import { btcEcdsaPublicKeyHash } from "./verify.js"; /** @@ -32,7 +32,7 @@ export abstract class SignerBtc extends Signer { */ async signAndBroadcastPsbt( psbtHex: HexLike, - options?: SignPsbtOptions, + options?: SignPsbtOptionsLike, ): Promise { const signedPsbt = await this.signPsbt(psbtHex, options); return this.broadcastPsbt(signedPsbt, options); @@ -147,7 +147,10 @@ export abstract class SignerBtc extends Signer { * @param options - Options for signing the PSBT * @returns A promise that resolves to the signed PSBT as a Hex string. */ - abstract signPsbt(psbtHex: HexLike, options?: SignPsbtOptions): Promise; + abstract signPsbt( + psbtHex: HexLike, + options?: SignPsbtOptionsLike, + ): Promise; /** * Broadcasts a PSBT to the Bitcoin network. @@ -156,10 +159,8 @@ export abstract class SignerBtc extends Signer { * @param options - Options for broadcasting the PSBT. * @returns A promise that resolves to the transaction ID as a Hex string. */ - async broadcastPsbt( - _psbtHex: HexLike, - _options?: SignPsbtOptions, - ): Promise { - throw new Error("Not implemented"); - } + abstract broadcastPsbt( + psbtHex: HexLike, + options?: SignPsbtOptionsLike, + ): Promise; } diff --git a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts index 1b2a403d6..25af50b6f 100644 --- a/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts +++ b/packages/core/src/signer/btc/signerBtcPublicKeyReadonly.ts @@ -1,6 +1,6 @@ import { Client } from "../../client/index.js"; import { Hex, HexLike, hexFrom } from "../../hex/index.js"; -import { SignPsbtOptions } from "./psbt.js"; +import { SignPsbtOptionsLike } from "./psbt.js"; import { SignerBtc } from "./signerBtc.js"; /** @@ -72,13 +72,16 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc { return this.publicKey; } - async signPsbt(_psbtHex: HexLike, _options?: SignPsbtOptions): Promise { + async signPsbt( + _psbtHex: HexLike, + _options?: SignPsbtOptionsLike, + ): Promise { throw new Error("Read-only signer does not support signPsbt"); } async broadcastPsbt( _psbtHex: HexLike, - _options?: SignPsbtOptions, + _options?: SignPsbtOptionsLike, ): Promise { throw new Error("Read-only signer does not support broadcastPsbt"); } diff --git a/packages/joy-id/src/btc/index.ts b/packages/joy-id/src/btc/index.ts index b4efe236b..629ea7dc8 100644 --- a/packages/joy-id/src/btc/index.ts +++ b/packages/joy-id/src/btc/index.ts @@ -207,9 +207,10 @@ export class BitcoinSigner extends ccc.SignerBtc { */ async signPsbt( psbtHex: ccc.HexLike, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise { const { address } = await this.assertConnection(); + const formattedOptions = ccc.SignPsbtOptions.from(options); const config = this.getConfig(); const { tx: signedPsbtHex } = await createPopup( @@ -217,9 +218,9 @@ export class BitcoinSigner extends ccc.SignerBtc { { ...config, tx: ccc.hexFrom(psbtHex).slice(2), - options, + options: formattedOptions, signerAddress: address, - autoFinalized: options?.autoFinalized ?? true, + autoFinalized: formattedOptions.autoFinalized, }, "popup", "/sign-psbt", @@ -239,7 +240,7 @@ export class BitcoinSigner extends ccc.SignerBtc { */ async broadcastPsbt( _psbtHex: ccc.HexLike, - _options?: ccc.SignPsbtOptions, + _options?: ccc.SignPsbtOptionsLike, ): Promise { throw new Error( "JoyID does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.", @@ -248,9 +249,10 @@ export class BitcoinSigner extends ccc.SignerBtc { async signAndBroadcastPsbt( psbtHex: ccc.HexLike, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise { const { address } = await this.assertConnection(); + const formattedOptions = ccc.SignPsbtOptions.from(options); const config = this.getConfig(); // ccc.hexFrom adds 0x prefix, but BTC expects non-0x @@ -259,7 +261,7 @@ export class BitcoinSigner extends ccc.SignerBtc { { ...config, tx: ccc.hexFrom(psbtHex).slice(2), - options, + options: formattedOptions, signerAddress: address, autoFinalized: true, // sendPsbt always finalizes isSend: true, diff --git a/packages/okx/src/btc/index.ts b/packages/okx/src/btc/index.ts index 3497e79fd..4048fbf44 100644 --- a/packages/okx/src/btc/index.ts +++ b/packages/okx/src/btc/index.ts @@ -186,7 +186,7 @@ export class BitcoinSigner extends ccc.SignerBtc { */ async signPsbt( psbtHex: ccc.HexLike, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise { return ccc.hexFrom( await this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options), @@ -201,7 +201,7 @@ export class BitcoinSigner extends ccc.SignerBtc { */ async broadcastPsbt( psbtHex: ccc.HexLike, - _options?: ccc.SignPsbtOptions, + _options?: ccc.SignPsbtOptionsLike, ): Promise { const txid = await this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); return ccc.hexFrom(txid); diff --git a/packages/uni-sat/src/advancedBarrel.ts b/packages/uni-sat/src/advancedBarrel.ts index 8ff7e0c04..d40e8d860 100644 --- a/packages/uni-sat/src/advancedBarrel.ts +++ b/packages/uni-sat/src/advancedBarrel.ts @@ -11,7 +11,7 @@ export interface Provider { * @param options - Options for signing the PSBT * @returns A promise that resolves to the signed PSBT hex string */ - signPsbt(psbtHex: string, options?: ccc.SignPsbtOptions): Promise; + signPsbt(psbtHex: string, options?: ccc.SignPsbtOptionsLike): Promise; /** * Broadcasts a signed PSBT to the Bitcoin network. diff --git a/packages/uni-sat/src/signer.ts b/packages/uni-sat/src/signer.ts index 333683f58..ec2fc6e23 100644 --- a/packages/uni-sat/src/signer.ts +++ b/packages/uni-sat/src/signer.ts @@ -160,7 +160,7 @@ export class Signer extends ccc.SignerBtc { */ async signPsbt( psbtHex: ccc.HexLike, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise { return ccc.hexFrom( await this.provider.signPsbt(ccc.hexFrom(psbtHex).slice(2), options), @@ -175,7 +175,7 @@ export class Signer extends ccc.SignerBtc { */ async broadcastPsbt( psbtHex: ccc.HexLike, - _options?: ccc.SignPsbtOptions, + _options?: ccc.SignPsbtOptionsLike, ): Promise { const txid = await this.provider.pushPsbt(ccc.hexFrom(psbtHex).slice(2)); return ccc.hexFrom(txid); diff --git a/packages/utxo-global/src/btc/index.ts b/packages/utxo-global/src/btc/index.ts index 7aee417cd..67771340b 100644 --- a/packages/utxo-global/src/btc/index.ts +++ b/packages/utxo-global/src/btc/index.ts @@ -137,7 +137,7 @@ export class SignerBtc extends ccc.SignerBtc { */ async signPsbt( _psbtHex: ccc.HexLike, - _options?: ccc.SignPsbtOptions, + _options?: ccc.SignPsbtOptionsLike, ): Promise { throw new Error("UTXO Global PSBT signing not implemented yet"); } @@ -151,7 +151,7 @@ export class SignerBtc extends ccc.SignerBtc { */ async broadcastPsbt( _psbtHex: ccc.HexLike, - _options?: ccc.SignPsbtOptions, + _options?: ccc.SignPsbtOptionsLike, ): Promise { throw new Error("UTXO Global PSBT broadcasting not implemented yet"); } diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index 441fdc0cc..2585ce771 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -172,13 +172,13 @@ export class Signer extends ccc.SignerBtc { } /** - * Build default toSignInputs for all unsigned inputs + * Build default inputsToSign for all unsigned inputs */ - private buildDefaultToSignInputs( + private buildDefaultinputsToSign( psbtHex: ccc.Hex, address: string, - ): ccc.ToSignInput[] { - const toSignInputs: ccc.ToSignInput[] = []; + ): ccc.InputToSignLike[] { + const inputsToSign: ccc.InputToSignLike[] = []; try { // Collect all unsigned inputs @@ -192,7 +192,7 @@ export class Signer extends ccc.SignerBtc { (input.tapScriptSig && input.tapScriptSig.length > 0); if (!isSigned) { - toSignInputs.push({ index, address }); + inputsToSign.push({ index, address }); } }); @@ -202,33 +202,34 @@ export class Signer extends ccc.SignerBtc { const errorMessage = error instanceof Error ? error.message : String(error); throw new Error( - `Failed to parse PSBT hex. Please provide toSignInputs explicitly in options. Original error: ${errorMessage}`, + `Failed to parse PSBT hex. Please provide inputsToSign explicitly in options. Original error: ${errorMessage}`, ); } - return toSignInputs; + return inputsToSign; } private async prepareSignPsbtParams( psbtHex: ccc.Hex, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise<{ psbtBase64: string; signInputs: Record; }> { - let toSignInputs = options?.toSignInputs; - if (!toSignInputs || !toSignInputs.length) { + let inputsToSign = options?.inputsToSign; + + if (!inputsToSign || !inputsToSign.length) { const address = await this.getBtcAccount(); - toSignInputs = this.buildDefaultToSignInputs(psbtHex, address); + inputsToSign = this.buildDefaultinputsToSign(psbtHex, address); } const psbtBase64 = ccc.bytesTo(psbtHex, "base64"); - const signInputs = toSignInputs.reduce( + const signInputs = inputsToSign.reduce( (acc, input) => { if (!input.address) { throw new Error( - "Xverse only supports signing with address. Please provide 'address' in toSignInputs.", + "Xverse only supports signing with address. Please provide 'address' in inputsToSign.", ); } if (acc[input.address]) { @@ -265,7 +266,7 @@ export class Signer extends ccc.SignerBtc { */ async signPsbt( psbtHex: ccc.HexLike, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise { const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( ccc.hexFrom(psbtHex), @@ -294,7 +295,7 @@ export class Signer extends ccc.SignerBtc { */ async broadcastPsbt( _psbtHex: ccc.HexLike, - _options?: ccc.SignPsbtOptions, + _options?: ccc.SignPsbtOptionsLike, ): Promise { throw new Error( "Xverse does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.", @@ -303,7 +304,7 @@ export class Signer extends ccc.SignerBtc { async signAndBroadcastPsbt( psbtHex: ccc.HexLike, - options?: ccc.SignPsbtOptions, + options?: ccc.SignPsbtOptionsLike, ): Promise { // ccc.hexFrom adds 0x prefix, but BTC expects non-0x const { psbtBase64, signInputs } = await this.prepareSignPsbtParams( From 979c1dcdb16a70c337cab64e9660fa17d2814253 Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 21 Jan 2026 02:03:48 -0500 Subject: [PATCH 16/42] docs: clarify broadcastPsbt documentation --- packages/okx/src/btc/index.ts | 4 ++-- packages/uni-sat/src/signer.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/okx/src/btc/index.ts b/packages/okx/src/btc/index.ts index 4048fbf44..3fe40bed9 100644 --- a/packages/okx/src/btc/index.ts +++ b/packages/okx/src/btc/index.ts @@ -196,8 +196,8 @@ export class BitcoinSigner extends ccc.SignerBtc { /** * Broadcasts a signed PSBT to the Bitcoin network. * - * @param psbtHex - The hex string (without 0x prefix) of signed PSBT to broadcast. - * @returns A promise that resolves to the transaction ID (without 0x prefix) + * @param psbtHex - The hex string of signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID as a Hex string */ async broadcastPsbt( psbtHex: ccc.HexLike, diff --git a/packages/uni-sat/src/signer.ts b/packages/uni-sat/src/signer.ts index ec2fc6e23..938c0b89f 100644 --- a/packages/uni-sat/src/signer.ts +++ b/packages/uni-sat/src/signer.ts @@ -170,8 +170,8 @@ export class Signer extends ccc.SignerBtc { /** * Broadcasts a signed PSBT to the Bitcoin network. * - * @param psbtHex - The hex string (without 0x prefix) of signed PSBT to broadcast. - * @returns A promise that resolves to the transaction ID (without 0x prefix) + * @param psbtHex - The hex string of signed PSBT to broadcast. + * @returns A promise that resolves to the transaction ID as a Hex string */ async broadcastPsbt( psbtHex: ccc.HexLike, From 1778940a60a1c6dd5f37529ed3af84313d712205 Mon Sep 17 00:00:00 2001 From: fgh Date: Tue, 27 Jan 2026 23:59:31 -0500 Subject: [PATCH 17/42] feat(playground): add bitcoin support for PSBT operations --- packages/playground/package.json | 2 ++ packages/playground/src/app/execute/index.tsx | 10 ++++++++++ pnpm-lock.yaml | 15 ++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/playground/package.json b/packages/playground/package.json index 1959e46a0..6bffe4f4f 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -11,6 +11,7 @@ "format": "prettier --write ./src" }, "dependencies": { + "@bitcoinerlab/secp256k1": "^1.2.0", "@ckb-ccc/ccc": "workspace:*", "@ckb-ccc/connector-react": "workspace:*", "@monaco-editor/react": "^4.7.0", @@ -21,6 +22,7 @@ "@shikijs/monaco": "^3.12.0", "axios": "^1.11.0", "bech32": "^2.0.0", + "bitcoinjs-lib": "^7.0.0", "isomorphic-ws": "^5.0.0", "lucide-react": "^0.542.0", "monaco-editor": "^0.52.2", diff --git a/packages/playground/src/app/execute/index.tsx b/packages/playground/src/app/execute/index.tsx index cd081999c..39148462e 100644 --- a/packages/playground/src/app/execute/index.tsx +++ b/packages/playground/src/app/execute/index.tsx @@ -1,5 +1,15 @@ +import * as ecc from "@bitcoinerlab/secp256k1"; +import * as cccLib from "@ckb-ccc/ccc"; +import * as cccAdvancedLib from "@ckb-ccc/ccc/advanced"; import { ccc } from "@ckb-ccc/connector-react"; +import * as dobRenderLib from "@nervina-labs/dob-render"; +import * as bitcoin from "bitcoinjs-lib"; import * as React from "react"; + +// Initialize the ECC library for bitcoinjs-lib to support Schnorr signatures (Taproot). +// This must be done once globally before any PSBT operations. +bitcoin.initEccLib(ecc); + import ts from "typescript"; import { formatTimestamp } from "../utils"; import { vlqDecode } from "./vlq"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67b164b5d..8b8b02927 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -865,6 +865,9 @@ importers: packages/playground: dependencies: + '@bitcoinerlab/secp256k1': + specifier: ^1.2.0 + version: 1.2.0 '@ckb-ccc/ccc': specifier: workspace:* version: link:../ccc @@ -895,6 +898,9 @@ importers: bech32: specifier: ^2.0.0 version: 2.0.0 + bitcoinjs-lib: + specifier: ^7.0.0 + version: 7.0.0(typescript@5.9.2) isomorphic-ws: specifier: ^5.0.0 version: 5.0.0(ws@8.18.3) @@ -2168,6 +2174,9 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@bitcoinerlab/secp256k1@1.2.0': + resolution: {integrity: sha512-jeujZSzb3JOZfmJYI0ph1PVpCRV5oaexCgy+RvCXV8XlY+XFB/2n3WOcvBsKLsOw78KYgnQrQWb2HrKE4be88Q==} + '@borewit/text-codec@0.1.1': resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==} @@ -12012,6 +12021,10 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@bitcoinerlab/secp256k1@1.2.0': + dependencies: + '@noble/curves': 1.9.7 + '@borewit/text-codec@0.1.1': {} '@changesets/apply-release-plan@7.0.12': @@ -18261,7 +18274,7 @@ snapshots: history@4.10.1: dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 From b810d80806820aa93603e3a6dbf7da8d64361f4f Mon Sep 17 00:00:00 2001 From: fgh Date: Wed, 28 Jan 2026 00:38:53 -0500 Subject: [PATCH 18/42] feat: add Bitcoin transfer example --- packages/docs/docs/code-examples.md | 7 +- packages/examples/src/playground/index.d.ts | 2 + packages/examples/src/transferBtc.ts | 104 ++++++++++++++++++ .../playground/src/app/components/Editor.tsx | 2 +- 4 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 packages/examples/src/transferBtc.ts diff --git a/packages/docs/docs/code-examples.md b/packages/docs/docs/code-examples.md index 850efdb55..735683820 100644 --- a/packages/docs/docs/code-examples.md +++ b/packages/docs/docs/code-examples.md @@ -28,4 +28,9 @@ That's it! The transaction is sent. - [Use all supported wallets in custom UI.](https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/customUiWithController.ts) - [Sign and verify any message.](https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/sign.ts) - [Transfer all native CKB token.](https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/transferAll.ts) -- [Transfer UDT token.](https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/transferUdt.ts) \ No newline at end of file +- [Transfer UDT token.](https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/transferUdt.ts) + + +CCC also supports Bitcoin! You can now build Bitcoin transactions and sign them using supported Bitcoin wallets. + +- [Transfer Bitcoin.](https://live.ckbccc.com/?src=https://raw.githubusercontent.com/ckb-devrel/ccc/refs/heads/master/packages/examples/src/transferBtc.ts) \ No newline at end of file diff --git a/packages/examples/src/playground/index.d.ts b/packages/examples/src/playground/index.d.ts index fefc0e139..7a7873c29 100644 --- a/packages/examples/src/playground/index.d.ts +++ b/packages/examples/src/playground/index.d.ts @@ -1,5 +1,7 @@ import { ccc } from "@ckb-ccc/ccc"; +import * as bitcoinLib from "bitcoinjs-lib"; export function render(tx: ccc.Transaction): Promise; export const signer: ccc.Signer; export const client: ccc.Client; +export const bitcoin: typeof bitcoinLib; diff --git a/packages/examples/src/transferBtc.ts b/packages/examples/src/transferBtc.ts new file mode 100644 index 000000000..c7b3b76a5 --- /dev/null +++ b/packages/examples/src/transferBtc.ts @@ -0,0 +1,104 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { bitcoin, signer } from "@ckb-ccc/playground"; + +// Supported wallets: Unisat, JoyID, Xverse +// Check if the current signer is also a Bitcoin signer +if (!(signer instanceof ccc.SignerBtc)) { + throw new Error("Signer is not a Bitcoin signer"); +} + +// Only support testnet for safety +if (signer.client.addressPrefix !== "ckt") { + throw new Error("Only supported on testnet"); +} + +// Xverse has deprecated Testnet3 support, so we default to Signet. Make sure to switch to Signet in Xverse's network settings. +const isXverse = signer instanceof ccc.Xverse.Signer; +const btcTestnetName = isXverse ? "signet" : "testnet"; + +const btcAddress = await signer.getBtcAccount(); +// Fetch UTXOs from mempool.space API +const utxos = (await fetch( + `https://mempool.space/${btcTestnetName}/api/address/${btcAddress}/utxo`, +).then((res) => { + if (!res.ok) { + throw new Error(`Failed to fetch UTXOs: ${res.status} ${res.statusText}`); + } + return res.json(); +})) as { value: number; txid: string; vout: number }[]; + +const DUST_LIMIT = 546; +const FEE_SATS = 200; + +// Select a UTXO above the 546 sat dust threshold +const selectedUtxo = utxos.find((utxo) => utxo.value > DUST_LIMIT + FEE_SATS); +if (!selectedUtxo) { + throw new Error("No UTXO available"); +} + +// Fetch the full transaction to get the scriptpubkey +const btcTx = (await fetch( + `https://mempool.space/${btcTestnetName}/api/tx/${selectedUtxo.txid}`, +).then((res) => { + if (!res.ok) { + throw new Error( + `Failed to fetch transaction: ${res.status} ${res.statusText}`, + ); + } + return res.json(); +})) as { + vout: { + value: number; + scriptpubkey: string; + scriptpubkey_type: string; + }[]; +}; +const vout = btcTx.vout[selectedUtxo.vout]; + +if (!vout || !vout.scriptpubkey) { + throw new Error("Invalid vout data"); +} + +// Build PSBT with the selected UTXO as input +const psbt = new bitcoin.Psbt({ + network: isXverse ? bitcoin.networks.testnet : bitcoin.networks.testnet, +}); +const input: { + hash: string; + index: number; + witnessUtxo: { + script: Uint8Array; + value: bigint; + }; + tapInternalKey?: Uint8Array; +} = { + hash: selectedUtxo.txid, + index: selectedUtxo.vout, + witnessUtxo: { + script: ccc.bytesFrom(vout.scriptpubkey), + value: BigInt(vout.value), + }, +}; + +// Handle Taproot (P2TR) specific input fields +if ( + vout.scriptpubkey_type === "v1_p2tr" || + vout.scriptpubkey_type === "witness_v1_taproot" +) { + const publicKey = await signer.getBtcPublicKey(); + input.tapInternalKey = ccc.bytesFrom(ccc.hexFrom(publicKey)).slice(1); +} + +psbt.addInput(input); + +// Add a single output back to the same address minus a hardcoded 200 sat fee +psbt.addOutput({ + address: btcAddress, + value: BigInt(vout.value) - BigInt(FEE_SATS), +}); + +// Sign and broadcast the transaction +const txId = await signer.signAndBroadcastPsbt(psbt.toHex()); +console.log( + `View transaction: https://mempool.space/${btcTestnetName}/tx/${txId.slice(2)}`, +); diff --git a/packages/playground/src/app/components/Editor.tsx b/packages/playground/src/app/components/Editor.tsx index 4bd227fb7..fc1416217 100644 --- a/packages/playground/src/app/components/Editor.tsx +++ b/packages/playground/src/app/components/Editor.tsx @@ -157,7 +157,7 @@ export function Editor({ }); monaco.languages.typescript.typescriptDefaults.addExtraLib( - "import { ccc } from '@ckb-ccc/core'; export function render(...msgs: unknown[]): Promise; export const signer: ccc.Signer; export const client: ccc.Client;", + "import { ccc } from '@ckb-ccc/core'; import * as bitcoin from 'bitcoinjs-lib'; export { bitcoin }; export function render(...msgs: unknown[]): Promise; export const signer: ccc.Signer; export const client: ccc.Client;", "file:///node_modules/@ckb-ccc/playground/index.d.ts", ); monaco.languages.typescript.typescriptDefaults.addExtraLib( From a21379b716e0f66d614fbf3e290a8707c3f75bfc Mon Sep 17 00:00:00 2001 From: fgh Date: Fri, 30 Jan 2026 13:37:48 -0500 Subject: [PATCH 19/42] feat(psbt): PSBT publicKey as Hex, instance guards in from() --- packages/core/src/signer/btc/psbt.ts | 12 +++++++++--- packages/examples/src/transferBtc.ts | 3 +-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/core/src/signer/btc/psbt.ts b/packages/core/src/signer/btc/psbt.ts index 69dd6f595..abbc47cd0 100644 --- a/packages/core/src/signer/btc/psbt.ts +++ b/packages/core/src/signer/btc/psbt.ts @@ -1,4 +1,4 @@ -import { HexLike, hexFrom } from "../../hex/index.js"; +import { Hex, HexLike, hexFrom } from "../../hex/index.js"; /** * Options for signing a PSBT (Partially Signed Bitcoin Transaction) @@ -22,6 +22,9 @@ export class SignPsbtOptions { ) {} static from(options?: SignPsbtOptionsLike): SignPsbtOptions { + if (options instanceof SignPsbtOptions) { + return options; + } return new SignPsbtOptions( options?.autoFinalized ?? true, options?.inputsToSign?.map((i) => InputToSign.from(i)) ?? [], @@ -77,16 +80,19 @@ export class InputToSign { public sighashTypes?: number[], public disableTweakSigner?: boolean, public address?: string, - public publicKey?: string, + public publicKey?: Hex, ) {} static from(input: InputToSignLike): InputToSign { + if (input instanceof InputToSign) { + return input; + } return new InputToSign( input.index, input.sighashTypes, input.disableTweakSigner, input.address, - input.publicKey ? hexFrom(input.publicKey).slice(2) : undefined, + input.publicKey ? hexFrom(input.publicKey) : undefined, ); } } diff --git a/packages/examples/src/transferBtc.ts b/packages/examples/src/transferBtc.ts index c7b3b76a5..d40af0e60 100644 --- a/packages/examples/src/transferBtc.ts +++ b/packages/examples/src/transferBtc.ts @@ -85,8 +85,7 @@ if ( vout.scriptpubkey_type === "v1_p2tr" || vout.scriptpubkey_type === "witness_v1_taproot" ) { - const publicKey = await signer.getBtcPublicKey(); - input.tapInternalKey = ccc.bytesFrom(ccc.hexFrom(publicKey)).slice(1); + input.tapInternalKey = ccc.bytesFrom(await signer.getBtcPublicKey()).slice(1); } psbt.addInput(input); From c63e538e184dc67992c318945b8e9ee693721427 Mon Sep 17 00:00:00 2001 From: fgh Date: Fri, 30 Jan 2026 14:48:24 -0500 Subject: [PATCH 20/42] fix: resolve errors after rebase --- packages/playground/src/app/execute/index.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/playground/src/app/execute/index.tsx b/packages/playground/src/app/execute/index.tsx index 39148462e..f913442eb 100644 --- a/packages/playground/src/app/execute/index.tsx +++ b/packages/playground/src/app/execute/index.tsx @@ -1,8 +1,5 @@ import * as ecc from "@bitcoinerlab/secp256k1"; -import * as cccLib from "@ckb-ccc/ccc"; -import * as cccAdvancedLib from "@ckb-ccc/ccc/advanced"; import { ccc } from "@ckb-ccc/connector-react"; -import * as dobRenderLib from "@nervina-labs/dob-render"; import * as bitcoin from "bitcoinjs-lib"; import * as React from "react"; @@ -117,6 +114,7 @@ export async function execute( }, signer, client: signer.client, + bitcoin, }; } From a803d5fba8d0e082c6aba14db156856025402e72 Mon Sep 17 00:00:00 2001 From: fgh Date: Fri, 30 Jan 2026 15:02:15 -0500 Subject: [PATCH 21/42] chore: add changeset for psbt feature --- .changeset/cuddly-lands-build.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .changeset/cuddly-lands-build.md diff --git a/.changeset/cuddly-lands-build.md b/.changeset/cuddly-lands-build.md new file mode 100644 index 000000000..b3a48766e --- /dev/null +++ b/.changeset/cuddly-lands-build.md @@ -0,0 +1,13 @@ +--- +"@ckb-ccc/core": minor +"@ckb-ccc/joy-id": patch +"@ckb-ccc/okx": patch +"@ckb-ccc/uni-sat": patch +"@ckb-ccc/utxo-global": patch +"@ckb-ccc/xverse": patch +--- + +feat(core): add BTC PSBT signing support + +- Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs +- Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing From 6727ffe05f60e6bfb2060a565c19acb0fd0f375e Mon Sep 17 00:00:00 2001 From: phroi <90913182+phroi@users.noreply.github.com> Date: Sat, 28 Feb 2026 11:26:22 +0000 Subject: [PATCH 22/42] feat(core): add isDaoOutputLimitExceeded for NervosDAO 64-output guard --- .changeset/fluffy-readers-warn.md | 5 ++++ packages/core/src/ckb/transaction.ts | 36 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 .changeset/fluffy-readers-warn.md diff --git a/.changeset/fluffy-readers-warn.md b/.changeset/fluffy-readers-warn.md new file mode 100644 index 000000000..f15370ac2 --- /dev/null +++ b/.changeset/fluffy-readers-warn.md @@ -0,0 +1,5 @@ +--- +"@ckb-ccc/core": minor +--- + +feat(core): add isDaoOutputLimitExceeded utility for NervosDAO 64-output guard diff --git a/packages/core/src/ckb/transaction.ts b/packages/core/src/ckb/transaction.ts index 2cb60e906..3d3bc325c 100644 --- a/packages/core/src/ckb/transaction.ts +++ b/packages/core/src/ckb/transaction.ts @@ -2426,6 +2426,42 @@ export class Transaction extends Entity.Base() { } } +/** + * Checks whether a NervosDAO transaction exceeds the 64-output limit. + * Returns true if the transaction is DAO-related and has more than 64 outputs. + * Short-circuits to false when outputs <= 64. + * + * @param tx - The transaction to check + * @param client - CKB client for resolving the NervosDAO script and input cell info + * @returns true if the DAO output limit is exceeded + */ +export async function isDaoOutputLimitExceeded( + tx: Transaction, + client: Client, +): Promise { + if (tx.outputs.length <= 64) { + return false; + } + + const { codeHash, hashType } = await client.getKnownScript( + KnownScript.NervosDao, + ); + const dao = Script.from({ codeHash, hashType, args: "0x" }); + + if (tx.outputs.some((o) => o.type?.eq(dao))) { + return true; + } + + for (const input of tx.inputs) { + await input.completeExtraInfos(client); + if (input.cellOutput?.type?.eq(dao)) { + return true; + } + } + + return false; +} + /** * Calculate Nervos DAO profit between two blocks. * This function computes the profit earned from a Nervos DAO deposit From cf000f3a319cac4ca4e5ae311b48792cde714f3c Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:11:01 +0100 Subject: [PATCH 23/42] feat(did-ckb): add did:ckb identifier helpers base32 (RFC 4648 lowercase no-padding) plus argsToDid, didToArgs, and isDidCkb for converting between the 20-byte Type ID args returned by createDidCkb and the human-readable did:ckb URI form per WIP-01. Vitest covers known vectors and edge cases. --- packages/did-ckb/src/barrel.ts | 1 + packages/did-ckb/src/identifier.test.ts | 76 +++++++++++++++++ packages/did-ckb/src/identifier.ts | 105 ++++++++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 packages/did-ckb/src/identifier.test.ts create mode 100644 packages/did-ckb/src/identifier.ts diff --git a/packages/did-ckb/src/barrel.ts b/packages/did-ckb/src/barrel.ts index 6112c76ce..42805ed59 100644 --- a/packages/did-ckb/src/barrel.ts +++ b/packages/did-ckb/src/barrel.ts @@ -1,2 +1,3 @@ export * from "./codec.js"; export * from "./didCkb.js"; +export * from "./identifier.js"; diff --git a/packages/did-ckb/src/identifier.test.ts b/packages/did-ckb/src/identifier.test.ts new file mode 100644 index 000000000..9bb0f6ccf --- /dev/null +++ b/packages/did-ckb/src/identifier.test.ts @@ -0,0 +1,76 @@ +import { ccc } from "@ckb-ccc/core"; +import { describe, expect, it } from "vitest"; +import { + argsToDid, + base32Decode, + base32Encode, + didToArgs, + isDidCkb, +} from "./identifier.js"; + +describe("base32", () => { + it("round-trips known vectors", () => { + const cases: [string, string][] = [ + ["", ""], + ["f", "my"], + ["fo", "mzxq"], + ["foo", "mzxw6"], + ["foob", "mzxw6yq"], + ["fooba", "mzxw6ytb"], + ["foobar", "mzxw6ytboi"], + ]; + for (const [input, expected] of cases) { + const bytes = new TextEncoder().encode(input); + expect(base32Encode(bytes)).toBe(expected); + expect(new TextDecoder().decode(base32Decode(expected))).toBe(input); + } + }); + + it("rejects invalid characters", () => { + expect(() => base32Decode("!!!")).toThrow(/Invalid base32 character/); + }); + + it("accepts hex input via ccc.bytesFrom", () => { + expect(base32Encode("0xdeadbeef")).toBe(base32Encode(ccc.bytesFrom("0xdeadbeef"))); + }); +}); + +describe("did:ckb identifier", () => { + // 20 zero bytes -> 32 'a's + const zeros = "0x" + "00".repeat(20); + const zerosDid = "did:ckb:" + "a".repeat(32); + + it("converts args <-> did", () => { + expect(argsToDid(zeros)).toBe(zerosDid); + expect(didToArgs(zerosDid)).toBe(zeros); + }); + + it("rejects args with wrong length", () => { + expect(() => argsToDid("0x" + "00".repeat(19))).toThrow(); + expect(() => argsToDid("0x" + "00".repeat(21))).toThrow(); + }); + + it("rejects did without prefix", () => { + expect(() => didToArgs("ckb:" + "a".repeat(32))).toThrow(); + }); + + it("rejects did with wrong body length", () => { + expect(() => didToArgs("did:ckb:" + "a".repeat(31))).toThrow(); + expect(() => didToArgs("did:ckb:" + "a".repeat(33))).toThrow(); + }); + + it("isDidCkb is true only for well-formed values", () => { + expect(isDidCkb(zerosDid)).toBe(true); + expect(isDidCkb("did:plc:xyz")).toBe(false); + expect(isDidCkb("did:ckb:tooShort")).toBe(false); + expect(isDidCkb("did:ckb:" + "!".repeat(32))).toBe(false); + }); + + it("round-trips a random-looking args vector", () => { + const args = "0x0123456789abcdef0123456789abcdef01234567"; + const did = argsToDid(args); + expect(did.startsWith("did:ckb:")).toBe(true); + expect(did.length).toBe("did:ckb:".length + 32); + expect(didToArgs(did)).toBe(args); + }); +}); diff --git a/packages/did-ckb/src/identifier.ts b/packages/did-ckb/src/identifier.ts new file mode 100644 index 000000000..67b8bce48 --- /dev/null +++ b/packages/did-ckb/src/identifier.ts @@ -0,0 +1,105 @@ +import { ccc } from "@ckb-ccc/core"; + +const DID_PREFIX = "did:ckb:"; +const ARGS_LEN_BYTES = 20; +const DID_BODY_LEN = 32; + +// RFC 4648 base32, lowercase, no padding (WIP-01 §2.2.3). +const ALPHABET = "abcdefghijklmnopqrstuvwxyz234567"; +const REVERSE = (() => { + const map: Record = {}; + for (let i = 0; i < ALPHABET.length; i++) { + map[ALPHABET[i]] = i; + } + return map; +})(); + +export function base32Encode(bytes: ccc.BytesLike): string { + const buf = ccc.bytesFrom(bytes); + let bits = 0; + let value = 0; + let output = ""; + for (let i = 0; i < buf.length; i++) { + value = (value << 8) | buf[i]; + bits += 8; + while (bits >= 5) { + output += ALPHABET[(value >>> (bits - 5)) & 31]; + bits -= 5; + } + } + if (bits > 0) { + output += ALPHABET[(value << (5 - bits)) & 31]; + } + return output; +} + +export function base32Decode(input: string): ccc.Bytes { + const cleaned = input.toLowerCase().replace(/=+$/g, ""); + let bits = 0; + let value = 0; + const output: number[] = []; + for (const char of cleaned) { + const v = REVERSE[char]; + if (v === undefined) { + throw new Error(`Invalid base32 character "${char}" in input`); + } + value = (value << 5) | v; + bits += 5; + if (bits >= 8) { + output.push((value >>> (bits - 8)) & 0xff); + bits -= 8; + } + } + return Uint8Array.from(output); +} + +/** + * Convert 20-byte Type ID args (the `id` returned from `createDidCkb`) to a + * `did:ckb:` identifier string per WIP-01 §2.2. + */ +export function argsToDid(args: ccc.HexLike): string { + const bytes = ccc.bytesFrom(args); + if (bytes.length !== ARGS_LEN_BYTES) { + throw new Error( + `did:ckb args must be ${ARGS_LEN_BYTES} bytes, got ${bytes.length}`, + ); + } + return DID_PREFIX + base32Encode(bytes); +} + +/** + * Reverse of `argsToDid`. Validates the prefix, base32 length, and decoded + * byte count. + */ +export function didToArgs(did: string): ccc.Hex { + if (!did.startsWith(DID_PREFIX)) { + throw new Error(`Expected did:ckb:..., got "${did}"`); + } + const body = did.slice(DID_PREFIX.length); + // 20 bytes encode to exactly 32 base32 chars without padding. Any other + // length silently truncates leftover bits, so reject it up front. + if (body.length !== DID_BODY_LEN) { + throw new Error( + `did:ckb identifier must be ${DID_BODY_LEN} base32 chars, got ${body.length}`, + ); + } + const bytes = base32Decode(body); + if (bytes.length !== ARGS_LEN_BYTES) { + throw new Error( + `did:ckb identifier must decode to ${ARGS_LEN_BYTES} bytes, got ${bytes.length}`, + ); + } + return ccc.hexFrom(bytes); +} + +export function isDidCkb(value: string): boolean { + if (!value.startsWith(DID_PREFIX)) { + return false; + } + try { + didToArgs(value); + return true; + } catch { + return false; + } +} From 833fcd8e4afa5031d6500b80ea70a7246836c5eb Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:11:09 +0100 Subject: [PATCH 24/42] feat(did-ckb): add resolver helpers (findDidCkbCell, resolveDidCkb, listDidCkbsByLock) findDidCkbCell wraps findSingletonCellByType and decodes DidCkbData. resolveDidCkb takes a did:ckb string instead of raw Type ID args. listDidCkbsByLock enumerates every live DID owned by a lock, useful for wallet/dashboard reverse lookup. Bad cells are skipped rather than fail the whole listing. --- packages/did-ckb/src/barrel.ts | 1 + packages/did-ckb/src/resolver.ts | 123 +++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 packages/did-ckb/src/resolver.ts diff --git a/packages/did-ckb/src/barrel.ts b/packages/did-ckb/src/barrel.ts index 42805ed59..c9a60772a 100644 --- a/packages/did-ckb/src/barrel.ts +++ b/packages/did-ckb/src/barrel.ts @@ -1,3 +1,4 @@ export * from "./codec.js"; export * from "./didCkb.js"; export * from "./identifier.js"; +export * from "./resolver.js"; diff --git a/packages/did-ckb/src/resolver.ts b/packages/did-ckb/src/resolver.ts new file mode 100644 index 000000000..16a41023b --- /dev/null +++ b/packages/did-ckb/src/resolver.ts @@ -0,0 +1,123 @@ +import { ccc } from "@ckb-ccc/core"; +import { DidCkbData } from "./codec"; +import { argsToDid, didToArgs, isDidCkb } from "./identifier"; + +export type DidCkbRecord = { + /** The `did:ckb:` string identifying this cell. */ + did: string; + /** 20-byte Type ID args (same value `createDidCkb` returned as `id`). */ + id: ccc.Hex; + /** Decoded DidCkbData; `.value.document` is the CBOR-decoded document. */ + data: DidCkbData; + /** The live DID Metadata Cell itself. */ + cell: ccc.Cell; +}; + +async function didCkbTypeScript( + client: ccc.Client, + id: ccc.HexLike, +): Promise { + const scriptInfo = await client.getKnownScript(ccc.KnownScript.DidCkb); + return ccc.Script.from({ + codeHash: scriptInfo.codeHash, + hashType: scriptInfo.hashType, + args: ccc.hexFrom(id), + }); +} + +function decodeRecord(cell: ccc.Cell, id: ccc.Hex): DidCkbRecord { + return { + did: argsToDid(id), + id, + data: DidCkbData.decode(cell.outputData), + cell, + }; +} + +/** + * Find the live DID Metadata Cell for a given Type ID and decode its data. + * + * Returns `undefined` when no live cell exists (the DID was never created or + * has been destroyed). + */ +export async function findDidCkbCell(props: { + client: ccc.Client; + id: ccc.HexLike; +}): Promise { + const id = ccc.hexFrom(props.id); + const type = await didCkbTypeScript(props.client, id); + const cell = await props.client.findSingletonCellByType(type, true); + if (!cell) { + return undefined; + } + return decodeRecord(cell, id); +} + +/** + * Resolve a `did:ckb:` string to its live cell + decoded document. + * + * Throws if `did` is not a syntactically valid did:ckb identifier. Returns + * `undefined` if the DID was created and then destroyed, or never existed. + */ +export async function resolveDidCkb(props: { + client: ccc.Client; + did: string; +}): Promise { + if (!isDidCkb(props.did)) { + throw new Error(`Not a did:ckb identifier: ${props.did}`); + } + return findDidCkbCell({ client: props.client, id: didToArgs(props.did) }); +} + +/** + * List every live DID Metadata Cell owned by the given lock. Useful for + * dashboards that want to enumerate the DIDs an address controls. + * + * Cells whose data fails to decode (e.g. a future on-chain schema version) are + * skipped, not thrown, so a single bad cell can't break the whole listing. + */ +export async function listDidCkbsByLock(props: { + client: ccc.Client; + lock: ccc.ScriptLike; + limit?: number; + order?: "asc" | "desc"; +}): Promise { + const scriptInfo = await props.client.getKnownScript(ccc.KnownScript.DidCkb); + const records: DidCkbRecord[] = []; + + // Filter by type.codeHash + hashType (args is prefix-matched against "0x", + // which matches any args). This is the standard indexer pattern for + // "any cell of this type, regardless of identifier". + for await (const cell of props.client.findCells( + { + script: ccc.Script.from(props.lock), + scriptType: "lock", + scriptSearchMode: "exact", + filter: { + script: ccc.Script.from({ + codeHash: scriptInfo.codeHash, + hashType: scriptInfo.hashType, + args: "0x", + }), + }, + withData: true, + }, + props.order, + props.limit, + )) { + const type = cell.cellOutput.type; + if (!type) { + continue; + } + const argsBytes = ccc.bytesFrom(type.args); + if (argsBytes.length !== 20) { + continue; + } + try { + records.push(decodeRecord(cell, ccc.hexFrom(type.args))); + } catch { + // Skip unparseable cells rather than fail the whole listing. + } + } + return records; +} From 3d8f587c311226e18d5eacb8f414f0683f9122d6 Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:11:41 +0100 Subject: [PATCH 25/42] feat(did-ckb): add getDidCkbHistory cell-chain walk Walks backward through the DID cell chain by reading each transferring tx and matching its inputs against the DID Type ID. Returns ordered entries with action (CREATE for fresh mint, MIGRATE for did:plc import, UPDATE for transfers), tx hash, output index, block number, capacity, and decoded DidCkbData. maxSteps caps the walk to prevent runaways. --- packages/did-ckb/src/barrel.ts | 1 + packages/did-ckb/src/history.ts | 146 ++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 packages/did-ckb/src/history.ts diff --git a/packages/did-ckb/src/barrel.ts b/packages/did-ckb/src/barrel.ts index c9a60772a..5312cc386 100644 --- a/packages/did-ckb/src/barrel.ts +++ b/packages/did-ckb/src/barrel.ts @@ -1,4 +1,5 @@ export * from "./codec.js"; export * from "./didCkb.js"; +export * from "./history.js"; export * from "./identifier.js"; export * from "./resolver.js"; diff --git a/packages/did-ckb/src/history.ts b/packages/did-ckb/src/history.ts new file mode 100644 index 000000000..fdacb0866 --- /dev/null +++ b/packages/did-ckb/src/history.ts @@ -0,0 +1,146 @@ +import { ccc } from "@ckb-ccc/core"; +import { DidCkbData } from "./codec"; +import { findDidCkbCell } from "./resolver"; + +export type HistoryAction = "CREATE" | "UPDATE" | "MIGRATE"; + +export type HistoryEntry = { + /** + * `CREATE` for a fresh mint, `MIGRATE` for a did:plc import (genesis cell + * with a `localId` set), `UPDATE` for every subsequent transfer. + */ + action: HistoryAction; + txHash: ccc.Hex; + outputIndex: ccc.Num; + blockNumber?: ccc.Num; + capacity: ccc.Num; + data: DidCkbData; +}; + +const DEFAULT_MAX_STEPS = 50; + +/** + * Walk the DID cell chain backwards to produce the ordered list of operations + * applied to a DID. + * + * Each `transferDidCkb` consumes the previous DID cell as an input and creates + * a new one with the same Type ID args; the genesis (`createDidCkb` / + * `createDidCkb` with localId) has no DID input. We start from the live cell, + * read its tx, look for the prior DID cell among the inputs, and repeat. The + * first entry returned is the newest (most recent transfer); the last is the + * genesis. + * + * Cost: roughly one `getTransaction` call per step, plus up to one call per + * non-DID input on each step to verify it isn't the prior DID cell. For typical + * DIDs with a handful of updates that's a small handful of RPC calls. + */ +export async function getDidCkbHistory(props: { + client: ccc.Client; + id: ccc.HexLike; + /** Pre-resolved live cell; if omitted, we fetch it. */ + liveCell?: ccc.Cell; + /** Safety bound to prevent runaway walks. Default 50. */ + maxSteps?: number; +}): Promise { + const id = ccc.hexFrom(props.id); + const scriptInfo = await props.client.getKnownScript(ccc.KnownScript.DidCkb); + const codeHash = scriptInfo.codeHash.toLowerCase(); + const normalizedId = id.toLowerCase(); + + let cell: ccc.Cell | undefined = + props.liveCell ?? + (await findDidCkbCell({ client: props.client, id }))?.cell; + if (!cell) { + return []; + } + + const history: HistoryEntry[] = []; + const maxSteps = props.maxSteps ?? DEFAULT_MAX_STEPS; + let steps = 0; + + while (cell && steps < maxSteps) { + steps++; + const tx = await props.client.getTransaction(cell.outPoint.txHash); + if (!tx) { + break; + } + + const entry = decodeEntry(cell, tx.blockNumber); + if (!entry) { + break; + } + + const prior = await findPriorDidCell( + props.client, + tx.transaction, + codeHash, + normalizedId, + ); + + if (!prior) { + // No DID input means this tx is the genesis. If the genesis carries a + // `localId` it's a did:plc migration; otherwise a plain CREATE. + entry.action = entry.data.value.localId ? "MIGRATE" : "CREATE"; + history.push(entry); + break; + } + + entry.action = "UPDATE"; + history.push(entry); + cell = prior; + } + + return history; +} + +async function findPriorDidCell( + client: ccc.Client, + tx: ccc.Transaction, + codeHash: string, + id: string, +): Promise { + for (const input of tx.inputs) { + const prevHash = input.previousOutput.txHash; + const prevIdx = input.previousOutput.index; + const prevTx = await client.getTransaction(prevHash); + if (!prevTx) { + continue; + } + const prevOutput = prevTx.transaction.outputs[Number(prevIdx)]; + if (!prevOutput?.type) { + continue; + } + if (prevOutput.type.codeHash.toLowerCase() !== codeHash) { + continue; + } + if (ccc.hexFrom(prevOutput.type.args).toLowerCase() !== id) { + continue; + } + const data = prevTx.transaction.outputsData[Number(prevIdx)]; + return ccc.Cell.from({ + outPoint: { txHash: prevHash, index: prevIdx }, + cellOutput: prevOutput, + outputData: data, + }); + } + return undefined; +} + +function decodeEntry( + cell: ccc.Cell, + blockNumber?: ccc.Num, +): HistoryEntry | undefined { + try { + const data = DidCkbData.decode(cell.outputData); + return { + action: "UPDATE", + txHash: cell.outPoint.txHash, + outputIndex: cell.outPoint.index, + blockNumber, + capacity: cell.cellOutput.capacity, + data, + }; + } catch { + return undefined; + } +} From b09f741a917856ae57ae81a2039ceb309434f11c Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:12:14 +0100 Subject: [PATCH 26/42] feat(did-ckb): add @ckb-ccc/did-ckb/plc subpath for did:plc helpers Minimal did:plc surface scoped to what a did:ckb migration needs. - fetchPlcLog: read the op log from the public PLC directory - getGenesisOperation / getRotationKeys: extract genesis and parse modern (rotationKeys) and legacy (signingKey + recoveryKey) shapes - parseDidKey: decode multicodec-tagged did:key (secp256k1 / p256) - signRotationHash: ECDSA sign a 32-byte CKB tx hash with prehash enabled so SHA-256 is applied internally, matching the on-chain k256/p256 Verifier - verifyPrivateKeyMatch: sanity check before sending Adds @noble/curves as a dependency. Exposed via the ./plc subpath so consumers who only need history or resolution don't pull the curve code into their bundle. --- packages/did-ckb/package.json | 7 +- packages/did-ckb/src/barrel.ts | 1 + packages/did-ckb/src/plc/index.ts | 225 +++++++++++++++++++++++++++ packages/did-ckb/src/plc/plc.test.ts | 98 ++++++++++++ packages/did-ckb/tsdown.config.mts | 2 + 5 files changed, 332 insertions(+), 1 deletion(-) create mode 100644 packages/did-ckb/src/plc/index.ts create mode 100644 packages/did-ckb/src/plc/plc.test.ts diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index e61651208..d8a210895 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -21,6 +21,10 @@ "require": "./dist.commonjs/barrel.js", "import": "./dist/barrel.mjs" }, + "./plc": { + "require": "./dist.commonjs/plc.js", + "import": "./dist/plc.mjs" + }, "./package.json": "./package.json" }, "scripts": { @@ -49,7 +53,8 @@ "dependencies": { "@ckb-ccc/core": "workspace:*", "@ckb-ccc/type-id": "workspace:*", - "@ipld/dag-cbor": "^9.2.5" + "@ipld/dag-cbor": "^9.2.5", + "@noble/curves": "^1.9.7" }, "packageManager": "pnpm@10.8.1", "types": "./dist.commonjs/index.d.ts" diff --git a/packages/did-ckb/src/barrel.ts b/packages/did-ckb/src/barrel.ts index 5312cc386..f4ba1edf1 100644 --- a/packages/did-ckb/src/barrel.ts +++ b/packages/did-ckb/src/barrel.ts @@ -2,4 +2,5 @@ export * from "./codec.js"; export * from "./didCkb.js"; export * from "./history.js"; export * from "./identifier.js"; +export * as plc from "./plc/index.js"; export * from "./resolver.js"; diff --git a/packages/did-ckb/src/plc/index.ts b/packages/did-ckb/src/plc/index.ts new file mode 100644 index 000000000..d5d86805f --- /dev/null +++ b/packages/did-ckb/src/plc/index.ts @@ -0,0 +1,225 @@ +import { ccc } from "@ckb-ccc/core"; +import { p256 } from "@noble/curves/p256"; +import { secp256k1 } from "@noble/curves/secp256k1"; + +/** + * Minimal did:plc helpers, scoped to what a did:ckb migration needs: + * fetch the op log from the public PLC directory, parse rotation keys, and + * sign a 32-byte CKB transaction hash with a rotation private key. + * + * The on-chain contract is happy with a history of length 1 (WIP-02 §3.1.1 + * RECOMMENDs the genesis-only form), so we don't walk the full op chain + * client-side. + */ + +const PLC_DIRECTORY = "https://plc.directory"; + +export type Curve = "secp256k1" | "p256"; + +export type PlcRotationKey = { + didKey: string; + curve: Curve; + compressedPubkey: ccc.Bytes; +}; + +export type PlcOperation = { + type: string; + rotationKeys?: string[]; + verificationMethods?: Record; + alsoKnownAs?: string[]; + services?: Record; + prev: string | null; + sig: string; + // Legacy `create` op fields: + signingKey?: string; + recoveryKey?: string; + handle?: string; + service?: string; + [key: string]: unknown; +}; + +/** + * Fetch the operation log for a did:plc identifier from the public directory. + * Pass a custom directory URL when targeting a staging environment. + */ +export async function fetchPlcLog( + did: string, + directory: string = PLC_DIRECTORY, +): Promise { + if (!did.startsWith("did:plc:")) { + throw new Error(`Expected did:plc identifier, got "${did}"`); + } + const res = await fetch(`${directory}/${did}/log`); + if (!res.ok) { + throw new Error(`PLC log fetch failed (${res.status} ${res.statusText})`); + } + const data: unknown = await res.json(); + if (!Array.isArray(data) || data.length === 0) { + throw new Error("PLC log empty or malformed"); + } + return data as PlcOperation[]; +} + +export function getGenesisOperation(log: PlcOperation[]): PlcOperation { + if (log.length === 0) { + throw new Error("Empty PLC log"); + } + return log[0]; +} + +/** + * Surface the rotation keys declared in a genesis op as a uniform list. PLC + * genesis comes in two shapes: the modern `plc_operation` (with + * `rotationKeys`) and the deprecated `create` (with `signingKey` + + * `recoveryKey`). The on-chain contract treats the legacy form as + * `[signingKey, recoveryKey]`, so we expose the same order. + */ +export function getRotationKeys(op: PlcOperation): PlcRotationKey[] { + const keys: string[] = []; + if (op.rotationKeys?.length) { + keys.push(...op.rotationKeys); + } else if (op.signingKey || op.recoveryKey) { + if (op.signingKey) { + keys.push(op.signingKey); + } + if (op.recoveryKey) { + keys.push(op.recoveryKey); + } + } + return keys.map((didKey) => { + const parsed = parseDidKey(didKey); + return { + didKey, + curve: parsed.curve, + compressedPubkey: parsed.compressedPubkey, + }; + }); +} + +export function parseDidKey(didKey: string): { + curve: Curve; + compressedPubkey: ccc.Bytes; +} { + if (!didKey.startsWith("did:key:z")) { + throw new Error(`Expected did:key:z..., got "${didKey}"`); + } + const raw = base58btcDecode(didKey.slice("did:key:z".length)); + if (raw.length !== 35) { + throw new Error( + `did:key payload must be 35 bytes (2-byte multicodec tag + 33-byte compressed pubkey), got ${raw.length}`, + ); + } + const tag1 = raw[0]; + const tag2 = raw[1]; + let curve: Curve; + if (tag1 === 0xe7 && tag2 === 0x01) { + curve = "secp256k1"; + } else if (tag1 === 0x80 && tag2 === 0x24) { + curve = "p256"; + } else { + throw new Error( + `Unrecognised did:key multicodec tag: 0x${tag1.toString(16).padStart(2, "0")} 0x${tag2.toString(16).padStart(2, "0")}`, + ); + } + return { curve, compressedPubkey: raw.slice(2) }; +} + +/** + * Sign a 32-byte CKB tx hash with a PLC rotation private key. + * + * The on-chain validator runs k256/p256's `Verifier::verify` which internally + * SHA-256 hashes the message before checking the ECDSA signature. Noble's + * default is the opposite (treat input as already-hashed), so we pass + * `prehash: true` to make noble apply SHA-256 internally and match the + * contract. Output is canonical low-s 64-byte compact form, identical to + * what @atproto/crypto's Keypair.sign produces. + */ +export function signRotationHash( + privateKey: ccc.BytesLike, + txHash: ccc.BytesLike, + curve: Curve, +): ccc.Bytes { + const hash = ccc.bytesFrom(txHash); + if (hash.length !== 32) { + throw new Error(`Expected 32-byte tx hash, got ${hash.length}`); + } + const priv = ccc.bytesFrom(privateKey); + if (priv.length !== 32) { + throw new Error(`Expected 32-byte private key, got ${priv.length}`); + } + if (curve === "secp256k1") { + return secp256k1 + .sign(hash, priv, { prehash: true, lowS: true }) + .toCompactRawBytes(); + } + return p256 + .sign(hash, priv, { prehash: true, lowS: true }) + .toCompactRawBytes(); +} + +/** + * Quick sanity check: derive the public key from `privateKey` and compare + * against `expectedPubkey`. Lets a UI tell the user "wrong key for this + * rotation slot" without waiting for an on-chain rejection. + */ +export function verifyPrivateKeyMatch( + privateKey: ccc.BytesLike, + expectedPubkey: ccc.BytesLike, + curve: Curve, +): boolean { + const priv = ccc.bytesFrom(privateKey); + if (priv.length !== 32) { + return false; + } + const expected = ccc.bytesFrom(expectedPubkey); + const pub = + curve === "secp256k1" + ? secp256k1.getPublicKey(priv, true) + : p256.getPublicKey(priv, true); + if (pub.length !== expected.length) { + return false; + } + for (let i = 0; i < pub.length; i++) { + if (pub[i] !== expected[i]) { + return false; + } + } + return true; +} + +// Inline base58btc decode (Bitcoin alphabet) so we don't pull in multiformats +// as a direct dependency. Audited by the multicodec tag round-trip tests. +const BASE58_ALPHABET = + "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; +const BASE58_REVERSE: Record = (() => { + const m: Record = {}; + for (let i = 0; i < BASE58_ALPHABET.length; i++) { + m[BASE58_ALPHABET[i]] = i; + } + return m; +})(); + +function base58btcDecode(input: string): ccc.Bytes { + if (input.length === 0) { + return new Uint8Array(0); + } + let leadingOnes = 0; + while (leadingOnes < input.length && input[leadingOnes] === "1") { + leadingOnes++; + } + let value = 0n; + for (let i = leadingOnes; i < input.length; i++) { + const c = input[i]; + const v = BASE58_REVERSE[c]; + if (v === undefined) { + throw new Error(`Invalid base58 character "${c}"`); + } + value = value * 58n + BigInt(v); + } + const tail: number[] = []; + while (value > 0n) { + tail.unshift(Number(value & 0xffn)); + value >>= 8n; + } + return Uint8Array.from([...Array(leadingOnes).fill(0), ...tail]); +} diff --git a/packages/did-ckb/src/plc/plc.test.ts b/packages/did-ckb/src/plc/plc.test.ts new file mode 100644 index 000000000..e061262fb --- /dev/null +++ b/packages/did-ckb/src/plc/plc.test.ts @@ -0,0 +1,98 @@ +import { secp256k1 } from "@noble/curves/secp256k1"; +import { describe, expect, it } from "vitest"; +import { + getGenesisOperation, + getRotationKeys, + parseDidKey, + signRotationHash, + verifyPrivateKeyMatch, + type PlcOperation, +} from "./index.js"; + +describe("parseDidKey", () => { + it("recognises secp256k1 multicodec tag (0xe7 0x01)", () => { + // Real did:key from the bluesky network — secp256k1 public key. + const didKey = "did:key:zQ3shqtXEdagupBhLzL2vFUACfdVjDEvciip79uY8iHBuu7FD"; + const { curve, compressedPubkey } = parseDidKey(didKey); + expect(curve).toBe("secp256k1"); + expect(compressedPubkey.length).toBe(33); + }); + + it("recognises p256 multicodec tag (0x80 0x24)", () => { + const didKey = "did:key:zDnaefn5fMKvoZ1n4vyxJ9npjWE5P3D8GkM9zNqaGbLqdDrtX"; + const { curve, compressedPubkey } = parseDidKey(didKey); + expect(curve).toBe("p256"); + expect(compressedPubkey.length).toBe(33); + }); + + it("rejects unknown prefixes", () => { + expect(() => parseDidKey("did:key:abc")).toThrow(); + expect(() => parseDidKey("did:plc:abc")).toThrow(); + }); +}); + +describe("getRotationKeys", () => { + it("returns rotationKeys from modern plc_operation", () => { + const op: PlcOperation = { + type: "plc_operation", + rotationKeys: [ + "did:key:zQ3shqtXEdagupBhLzL2vFUACfdVjDEvciip79uY8iHBuu7FD", + "did:key:zDnaefn5fMKvoZ1n4vyxJ9npjWE5P3D8GkM9zNqaGbLqdDrtX", + ], + prev: null, + sig: "x", + }; + const keys = getRotationKeys(op); + expect(keys.map((k) => k.curve)).toEqual(["secp256k1", "p256"]); + }); + + it("falls back to signingKey + recoveryKey from legacy create op", () => { + const op: PlcOperation = { + type: "create", + signingKey: "did:key:zQ3shqtXEdagupBhLzL2vFUACfdVjDEvciip79uY8iHBuu7FD", + recoveryKey: "did:key:zQ3shqtXEdagupBhLzL2vFUACfdVjDEvciip79uY8iHBuu7FD", + prev: null, + sig: "x", + }; + const keys = getRotationKeys(op); + expect(keys.length).toBe(2); + }); +}); + +describe("getGenesisOperation", () => { + it("returns the first op", () => { + const op: PlcOperation = { type: "x", prev: null, sig: "y" }; + expect(getGenesisOperation([op])).toBe(op); + }); + it("throws on empty log", () => { + expect(() => getGenesisOperation([])).toThrow(); + }); +}); + +describe("signRotationHash + verifyPrivateKeyMatch", () => { + it("round-trips: signature verifies, private key matches its public", () => { + const priv = secp256k1.utils.randomSecretKey(); + const pub = secp256k1.getPublicKey(priv, true); + expect(verifyPrivateKeyMatch(priv, pub, "secp256k1")).toBe(true); + + const txHash = new Uint8Array(32).fill(7); + const sig = signRotationHash(priv, txHash, "secp256k1"); + expect(sig.length).toBe(64); + expect( + secp256k1.verify(sig, txHash, pub, { prehash: true, lowS: true }), + ).toBe(true); + }); + + it("rejects a private key whose pubkey doesn't match", () => { + const a = secp256k1.utils.randomSecretKey(); + const b = secp256k1.utils.randomSecretKey(); + expect( + verifyPrivateKeyMatch(a, secp256k1.getPublicKey(b, true), "secp256k1"), + ).toBe(false); + }); + + it("throws on wrong tx hash length", () => { + const priv = secp256k1.utils.randomSecretKey(); + expect(() => signRotationHash(priv, new Uint8Array(31), "secp256k1")).toThrow(); + }); +}); diff --git a/packages/did-ckb/tsdown.config.mts b/packages/did-ckb/tsdown.config.mts index d952699a0..a8e2efae5 100644 --- a/packages/did-ckb/tsdown.config.mts +++ b/packages/did-ckb/tsdown.config.mts @@ -14,6 +14,7 @@ export default defineConfig( entry: { index: "src/index.ts", barrel: "src/barrel.ts", + plc: "src/plc/index.ts", }, format: "esm", copy: "./misc/basedirs/dist/*", @@ -22,6 +23,7 @@ export default defineConfig( entry: { index: "src/index.ts", barrel: "src/barrel.ts", + plc: "src/plc/index.ts", }, noExternal: ["@ipld/dag-cbor"] as string[], format: "cjs", From a45a5f31b7f5a0634437fe07d5bfa1ffcec7c734 Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:12:23 +0100 Subject: [PATCH 27/42] feat(did-ckb): add migrateDidCkb and buildMigrationWitness migrateDidCkb wraps createDidCkb and stamps the source did:plc into the DidCkbDataV1.localId field. Returns the same {tx, id, index} shape so callers can drop it in wherever createDidCkb fits. buildMigrationWitness is a pure helper: takes a tx hash, the genesis PLC operation, and the chosen rotation key, signs the hash via the PLC subpath, and returns a typed DidCkbWitness ready to be set on the first input. The curve is inferred from the genesis op's rotation key unless the caller overrides it. --- packages/did-ckb/src/barrel.ts | 1 + packages/did-ckb/src/migrate.ts | 96 +++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 packages/did-ckb/src/migrate.ts diff --git a/packages/did-ckb/src/barrel.ts b/packages/did-ckb/src/barrel.ts index f4ba1edf1..f3d44ae35 100644 --- a/packages/did-ckb/src/barrel.ts +++ b/packages/did-ckb/src/barrel.ts @@ -2,5 +2,6 @@ export * from "./codec.js"; export * from "./didCkb.js"; export * from "./history.js"; export * from "./identifier.js"; +export * from "./migrate.js"; export * as plc from "./plc/index.js"; export * from "./resolver.js"; diff --git a/packages/did-ckb/src/migrate.ts b/packages/did-ckb/src/migrate.ts new file mode 100644 index 000000000..9de59b1db --- /dev/null +++ b/packages/did-ckb/src/migrate.ts @@ -0,0 +1,96 @@ +import { ccc } from "@ckb-ccc/core"; +import { DidCkbDataLike, DidCkbWitness } from "./codec"; +import { createDidCkb } from "./didCkb"; +import { + getRotationKeys, + signRotationHash, + type Curve, + type PlcOperation, +} from "./plc"; + +/** + * Build the migration witness payload that authorizes a did:plc -> did:ckb + * import. Pure: takes a tx hash + signing material, returns a typed + * `DidCkbWitness` that the caller wraps in a `WitnessArgs.outputType` field. + * + * Per WIP-02 §3.1.1 we send only the genesis operation in `history`. The + * contract recomputes the genesis CID over the CBOR-encoded op, verifies the + * self-signature inside it, then verifies `sig` against + * `history[0].rotationKeys[rotationKeyIndex]`. + * + * `selfSigIndex` defaults to 0 because PLC genesis ops are conventionally + * self-signed by the first rotation key; override if the genesis you're + * migrating used a different one. + */ +export function buildMigrationWitness(props: { + txHash: ccc.HexLike; + genesisOperation: PlcOperation; + rotationKeyIndex: number; + rotationPrivateKey: ccc.BytesLike; + curve?: Curve; + selfSigIndex?: number; +}): DidCkbWitness { + const rotationKeys = getRotationKeys(props.genesisOperation); + if (!rotationKeys[props.rotationKeyIndex]) { + throw new Error( + `rotationKeyIndex ${props.rotationKeyIndex} out of range (genesis has ${rotationKeys.length} keys)`, + ); + } + const curve = props.curve ?? rotationKeys[props.rotationKeyIndex].curve; + const sig = signRotationHash( + props.rotationPrivateKey, + ccc.bytesFrom(props.txHash), + curve, + ); + return DidCkbWitness.from({ + localIdAuthorization: { + history: [props.genesisOperation as unknown as object], + sig: ccc.hexFrom(sig), + rotationKeyIndices: [props.selfSigIndex ?? 0, props.rotationKeyIndex], + }, + }); +} + +/** + * Build a create tx whose output declares an imported did:plc identifier in + * its `localId` field. Equivalent to calling `createDidCkb` with + * `data.value.localId = sourceDid`; provided as a named helper for symmetry + * with the other DID operations and so `did:plc:` migrations have an + * obvious entry point. + * + * The caller is responsible for: completing inputs + fee, building the + * migration witness with `buildMigrationWitness`, and setting it at the + * witness slot of input 0. See `packages/examples/src/migrateDid.ts` for the + * full flow. + */ +export async function migrateDidCkb(props: { + signer: ccc.Signer; + sourceDid: string; + data?: DidCkbDataLike | null; + receiver?: ccc.ScriptLike | null; + tx?: ccc.TransactionLike | null; +}): Promise<{ + tx: ccc.Transaction; + id: ccc.Hex; + index: number; +}> { + if (!props.sourceDid.startsWith("did:plc:")) { + throw new Error( + `sourceDid must be did:plc:..., got "${props.sourceDid}"`, + ); + } + const document = props.data?.value?.document ?? {}; + const data: DidCkbDataLike = { + type: props.data?.type ?? "v1", + value: { + document, + localId: props.sourceDid, + }, + }; + return createDidCkb({ + signer: props.signer, + data, + receiver: props.receiver, + tx: props.tx, + }); +} From c54c19678e13926c13895ea5d2126cad525076f0 Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:14:44 +0100 Subject: [PATCH 28/42] chore(did-ckb): prettier format and refresh lockfile after adding @noble/curves --- packages/did-ckb/src/identifier.test.ts | 4 +++- packages/did-ckb/src/migrate.ts | 4 +--- packages/did-ckb/src/plc/plc.test.ts | 4 +++- pnpm-lock.yaml | 3 +++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/did-ckb/src/identifier.test.ts b/packages/did-ckb/src/identifier.test.ts index 9bb0f6ccf..39ab24d71 100644 --- a/packages/did-ckb/src/identifier.test.ts +++ b/packages/did-ckb/src/identifier.test.ts @@ -31,7 +31,9 @@ describe("base32", () => { }); it("accepts hex input via ccc.bytesFrom", () => { - expect(base32Encode("0xdeadbeef")).toBe(base32Encode(ccc.bytesFrom("0xdeadbeef"))); + expect(base32Encode("0xdeadbeef")).toBe( + base32Encode(ccc.bytesFrom("0xdeadbeef")), + ); }); }); diff --git a/packages/did-ckb/src/migrate.ts b/packages/did-ckb/src/migrate.ts index 9de59b1db..5414d17c7 100644 --- a/packages/did-ckb/src/migrate.ts +++ b/packages/did-ckb/src/migrate.ts @@ -75,9 +75,7 @@ export async function migrateDidCkb(props: { index: number; }> { if (!props.sourceDid.startsWith("did:plc:")) { - throw new Error( - `sourceDid must be did:plc:..., got "${props.sourceDid}"`, - ); + throw new Error(`sourceDid must be did:plc:..., got "${props.sourceDid}"`); } const document = props.data?.value?.document ?? {}; const data: DidCkbDataLike = { diff --git a/packages/did-ckb/src/plc/plc.test.ts b/packages/did-ckb/src/plc/plc.test.ts index e061262fb..5614245cf 100644 --- a/packages/did-ckb/src/plc/plc.test.ts +++ b/packages/did-ckb/src/plc/plc.test.ts @@ -93,6 +93,8 @@ describe("signRotationHash + verifyPrivateKeyMatch", () => { it("throws on wrong tx hash length", () => { const priv = secp256k1.utils.randomSecretKey(); - expect(() => signRotationHash(priv, new Uint8Array(31), "secp256k1")).toThrow(); + expect(() => + signRotationHash(priv, new Uint8Array(31), "secp256k1"), + ).toThrow(); }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bab1068e1..1e7d89fec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -415,6 +415,9 @@ importers: '@ipld/dag-cbor': specifier: ^9.2.5 version: 9.2.5 + '@noble/curves': + specifier: ^1.9.7 + version: 1.9.7 devDependencies: '@eslint/js': specifier: ^9.34.0 From fc292d30c9152355d31207acf8d7d22f4a35d8cd Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:16:45 +0100 Subject: [PATCH 29/42] feat(examples): add resolveDid, didHistory, migrateDid playground samples Three runnable examples for the new did-ckb advanced surface. - resolveDid: resolveDidCkb on a known identifier and listDidCkbsByLock on the signer's address - didHistory: getDidCkbHistory walking the cell chain back to genesis - migrateDid: end-to-end did:plc import via fetchPlcLog, migrateDidCkb, and buildMigrationWitness, including the verifyPrivateKeyMatch sanity check before sending --- packages/examples/src/didHistory.ts | 26 +++++++++++++ packages/examples/src/migrateDid.ts | 58 +++++++++++++++++++++++++++++ packages/examples/src/resolveDid.ts | 33 ++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 packages/examples/src/didHistory.ts create mode 100644 packages/examples/src/migrateDid.ts create mode 100644 packages/examples/src/resolveDid.ts diff --git a/packages/examples/src/didHistory.ts b/packages/examples/src/didHistory.ts new file mode 100644 index 000000000..7a4cb0cd0 --- /dev/null +++ b/packages/examples/src/didHistory.ts @@ -0,0 +1,26 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { signer } from "@ckb-ccc/playground"; + +// Walk the cell chain for an existing did:ckb back to its genesis. Newest +// entry is first; the last entry is CREATE (fresh mint) or MIGRATE (did:plc +// import). +const did = "did:ckb:qq2m72a2vas4e5ovcpxoedscguuu4nba"; + +const history = await ccc.didCkb.getDidCkbHistory({ + client: signer.client, + id: ccc.didCkb.didToArgs(did), +}); + +if (history.length === 0) { + console.log(`No history for ${did}; DID does not exist on this network.`); +} else { + console.log(`History of ${did}:`); + for (const entry of history) { + console.log( + ` [${entry.action}] tx=${entry.txHash} out=${entry.outputIndex} block=${entry.blockNumber ?? "?"}`, + ); + if (entry.data.value.localId) { + console.log(` localId: ${entry.data.value.localId}`); + } + } +} diff --git a/packages/examples/src/migrateDid.ts b/packages/examples/src/migrateDid.ts new file mode 100644 index 000000000..65781e1da --- /dev/null +++ b/packages/examples/src/migrateDid.ts @@ -0,0 +1,58 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { render, signer } from "@ckb-ccc/playground"; + +// Import an existing did:plc into did:ckb. The on-chain contract requires a +// single PLC genesis operation in the witness plus a signature over the CKB +// transaction hash made by one of the genesis rotation keys. +const sourceDid = "did:plc:yunkr6vorfgzmvzeoofbkhq5"; +const rotationKeyIndex = 0; +const rotationPrivateKey = + "0x806d1925698097c64bc70f629e25b91b48a15eee4e492bb239402cee85356a10"; + +// Pull the genesis op from the public PLC directory. If you've already cached +// it locally, skip the fetch and pass the JSON object directly. +const log = await ccc.didCkb.plc.fetchPlcLog(sourceDid); +const genesisOperation = ccc.didCkb.plc.getGenesisOperation(log); + +// Quick sanity check before we burn capacity: does the private key match the +// rotation slot we intend to use? +const rotationKeys = ccc.didCkb.plc.getRotationKeys(genesisOperation); +const slot = rotationKeys[rotationKeyIndex]; +if ( + !ccc.didCkb.plc.verifyPrivateKeyMatch( + rotationPrivateKey, + slot.compressedPubkey, + slot.curve, + ) +) { + throw new Error( + `Private key does not match rotation key #${rotationKeyIndex} (${slot.curve})`, + ); +} + +// Build a create tx with localId stamped to sourceDid. +const { tx } = await ccc.didCkb.migrateDidCkb({ + signer, + sourceDid, + data: { value: { document: {} } }, +}); + +await tx.completeInputsByCapacity(signer); +await render(tx); +await tx.completeFeeBy(signer); +await render(tx); + +// Sign over the final tx hash and attach the migration witness on input 0. +const witness = ccc.didCkb.buildMigrationWitness({ + txHash: tx.hash(), + genesisOperation, + rotationKeyIndex, + rotationPrivateKey, +}); +tx.setWitnessArgsAt( + 0, + ccc.WitnessArgs.from({ outputType: ccc.hexFrom(witness.toBytes()) }), +); + +const txHash = await signer.sendTransaction(tx); +console.log(`Migration tx ${txHash} sent`); diff --git a/packages/examples/src/resolveDid.ts b/packages/examples/src/resolveDid.ts new file mode 100644 index 000000000..83190014b --- /dev/null +++ b/packages/examples/src/resolveDid.ts @@ -0,0 +1,33 @@ +import { ccc } from "@ckb-ccc/ccc"; +import { signer } from "@ckb-ccc/playground"; + +// Resolve a did:ckb identifier to its live cell + decoded document. +// Replace the value below with an existing identifier on whichever network +// the signer is configured for. +const did = "did:ckb:qq2m72a2vas4e5ovcpxoedscguuu4nba"; + +const record = await ccc.didCkb.resolveDidCkb({ + client: signer.client, + did, +}); +if (!record) { + console.log(`No live cell for ${did}`); +} else { + console.log(`Resolved ${record.did}`); + console.log(` Type ID args: ${record.id}`); + console.log(` Document:`, record.data.value.document); + if (record.data.value.localId) { + console.log(` Imported from: ${record.data.value.localId}`); + } +} + +// You can also enumerate every DID owned by an address. +const owner = (await signer.getRecommendedAddressObj()).script; +const owned = await ccc.didCkb.listDidCkbsByLock({ + client: signer.client, + lock: owner, +}); +console.log(`Address controls ${owned.length} DID(s):`); +for (const entry of owned) { + console.log(` ${entry.did}`); +} From ce2b005b2c20bdd8736f78e7f286b8acb40e80e5 Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:16:56 +0100 Subject: [PATCH 30/42] chore(changeset): record minor bump for did-ckb advanced features --- .changeset/did-ckb-advanced.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .changeset/did-ckb-advanced.md diff --git a/.changeset/did-ckb-advanced.md b/.changeset/did-ckb-advanced.md new file mode 100644 index 000000000..26c4d5eb6 --- /dev/null +++ b/.changeset/did-ckb-advanced.md @@ -0,0 +1,13 @@ +--- +"@ckb-ccc/did-ckb": minor +--- + +feat(did-ckb): identifier helpers, resolver, history walk, and did:plc migration + +Layered on top of the basic create/transfer/destroy operations: + +- `argsToDid`, `didToArgs`, `isDidCkb`, plus RFC 4648 base32 helpers for converting between Type ID args and the human readable `did:ckb:` URI form (WIP-01 §2.2) +- `findDidCkbCell`, `resolveDidCkb`, `listDidCkbsByLock` for resolving a DID by id or by owning lock +- `getDidCkbHistory` walks the cell chain backwards to produce an ordered list of CREATE / UPDATE / MIGRATE entries with tx hash, block number, capacity, and decoded data +- `migrateDidCkb` + `buildMigrationWitness` for importing a `did:plc` into `did:ckb` (WIP-02 §3.1.1) +- `@ckb-ccc/did-ckb/plc` subpath with `fetchPlcLog`, `parseDidKey`, `signRotationHash`, `verifyPrivateKeyMatch` so the curve code only ships to consumers that need it From 2a3ae10767a09f0dd5759fbcf8dc1508fbcbbc52 Mon Sep 17 00:00:00 2001 From: truthixify Date: Sun, 14 Jun 2026 00:18:36 +0100 Subject: [PATCH 31/42] test(did-ckb): mocked-client tests for resolver and history walk resolver.test covers findDidCkbCell hit/miss, resolveDidCkb rejecting non-did:ckb strings, and listDidCkbsByLock decoding the cells findCells yields (skipping any without a type script). history.test simulates a three-step cell chain (genesis + two transfers) and asserts the walk returns UPDATE, UPDATE, CREATE newest-first. A second case flips the genesis to MIGRATE when localId is set. --- packages/did-ckb/src/history.test.ts | 197 ++++++++++++++++++++++++++ packages/did-ckb/src/resolver.test.ts | 138 ++++++++++++++++++ 2 files changed, 335 insertions(+) create mode 100644 packages/did-ckb/src/history.test.ts create mode 100644 packages/did-ckb/src/resolver.test.ts diff --git a/packages/did-ckb/src/history.test.ts b/packages/did-ckb/src/history.test.ts new file mode 100644 index 000000000..499fa5ad6 --- /dev/null +++ b/packages/did-ckb/src/history.test.ts @@ -0,0 +1,197 @@ +import { ccc } from "@ckb-ccc/core"; +import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; +import { DidCkbData } from "./codec.js"; +import { getDidCkbHistory } from "./history.js"; + +describe("getDidCkbHistory", () => { + let client: ccc.Client; + + const codeHash = + "0x510150477b10d6ab551a509b71265f3164e9fd4137fcb5a4322f49f03092c7c5"; + const id = ("0x" + "ab".repeat(20)) as ccc.Hex; + + const fundingLock = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xdeadbeef", + }); + const didTypeScript = ccc.Script.from({ + codeHash, + hashType: "type", + args: id, + }); + + // Build a cell + the tx that produced it. Each transferDidCkb consumes the + // prior DID cell as an input and emits a new one with the same Type ID. + function didCell( + txHash: ccc.Hex, + document: object, + localId?: string, + ): ccc.Cell { + const data = DidCkbData.fromV1({ document, localId }); + return ccc.Cell.from({ + outPoint: { txHash, index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(300), + lock: fundingLock, + type: didTypeScript, + }, + outputData: ccc.hexFrom(data.toBytes()), + }); + } + + const txGenesis = ("0x" + "11".repeat(32)) as ccc.Hex; + const txUpdate1 = ("0x" + "22".repeat(32)) as ccc.Hex; + const txUpdate2 = ("0x" + "33".repeat(32)) as ccc.Hex; + const txFunding = ("0x" + "ff".repeat(32)) as ccc.Hex; + + const genesisCell = didCell(txGenesis, { v: 1 }); + const update1Cell = didCell(txUpdate1, { v: 2 }); + const update2Cell = didCell(txUpdate2, { v: 3 }); + + beforeEach(() => { + client = { + getKnownScript: vi.fn(), + findSingletonCellByType: vi.fn(), + getTransaction: vi.fn(), + } as unknown as ccc.Client; + + (client.getKnownScript as Mock).mockResolvedValue({ + codeHash, + hashType: "type", + cellDeps: [], + }); + }); + + function txResponse( + tx: ccc.TransactionLike, + blockNumber?: ccc.NumLike, + ): { transaction: ccc.Transaction; blockNumber?: ccc.Num } { + return { + transaction: ccc.Transaction.from(tx), + blockNumber: + blockNumber !== undefined ? ccc.numFrom(blockNumber) : undefined, + }; + } + + it("returns CREATE, UPDATE entries newest-first for a normal mint + two transfers", async () => { + // Funding tx that produced the input used to create the genesis. Not a + // DID cell, so the walk should stop at the genesis tx. + const fundingPrevOut = ccc.CellOutput.from({ + capacity: ccc.fixedPointFrom(1000), + lock: fundingLock, + }); + + (client.getTransaction as Mock).mockImplementation( + async (hash: ccc.HexLike) => { + const h = ccc.hexFrom(hash); + if (h === txUpdate2) { + return txResponse( + { + inputs: [ + { previousOutput: { txHash: txUpdate1, index: 0 }, since: 0 }, + ], + outputs: [update2Cell.cellOutput], + outputsData: [update2Cell.outputData], + }, + 300, + ); + } + if (h === txUpdate1) { + return txResponse( + { + inputs: [ + { previousOutput: { txHash: txGenesis, index: 0 }, since: 0 }, + ], + outputs: [update1Cell.cellOutput], + outputsData: [update1Cell.outputData], + }, + 200, + ); + } + if (h === txGenesis) { + return txResponse( + { + inputs: [ + { previousOutput: { txHash: txFunding, index: 0 }, since: 0 }, + ], + outputs: [genesisCell.cellOutput], + outputsData: [genesisCell.outputData], + }, + 100, + ); + } + if (h === txFunding) { + return txResponse({ + inputs: [], + outputs: [fundingPrevOut], + outputsData: ["0x"], + }); + } + return undefined; + }, + ); + + const history = await getDidCkbHistory({ + client, + id, + liveCell: update2Cell, + }); + + expect(history.map((h) => h.action)).toEqual([ + "UPDATE", + "UPDATE", + "CREATE", + ]); + expect(history[0].txHash).toBe(txUpdate2); + expect(history[0].blockNumber).toBe(300n); + expect(history[2].txHash).toBe(txGenesis); + expect(history[2].data.value.document).toEqual({ v: 1 }); + }); + + it("flags the genesis as MIGRATE when localId is set", async () => { + const migrated = didCell(txGenesis, { v: 1 }, "did:plc:abc"); + + (client.getTransaction as Mock).mockImplementation( + async (hash: ccc.HexLike) => { + const h = ccc.hexFrom(hash); + if (h === txGenesis) { + return txResponse( + { + inputs: [ + { previousOutput: { txHash: txFunding, index: 0 }, since: 0 }, + ], + outputs: [migrated.cellOutput], + outputsData: [migrated.outputData], + }, + 50, + ); + } + if (h === txFunding) { + return txResponse({ + inputs: [], + outputs: [ + ccc.CellOutput.from({ + capacity: ccc.fixedPointFrom(1000), + lock: fundingLock, + }), + ], + outputsData: ["0x"], + }); + } + return undefined; + }, + ); + + const history = await getDidCkbHistory({ client, id, liveCell: migrated }); + expect(history.length).toBe(1); + expect(history[0].action).toBe("MIGRATE"); + expect(history[0].data.value.localId).toBe("did:plc:abc"); + }); + + it("returns an empty array when no live cell exists", async () => { + (client.findSingletonCellByType as Mock).mockResolvedValue(undefined); + const history = await getDidCkbHistory({ client, id }); + expect(history).toEqual([]); + }); +}); diff --git a/packages/did-ckb/src/resolver.test.ts b/packages/did-ckb/src/resolver.test.ts new file mode 100644 index 000000000..0dff1bef5 --- /dev/null +++ b/packages/did-ckb/src/resolver.test.ts @@ -0,0 +1,138 @@ +import { ccc } from "@ckb-ccc/core"; +import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; +import { DidCkbData } from "./codec.js"; +import { argsToDid } from "./identifier.js"; +import { + findDidCkbCell, + listDidCkbsByLock, + resolveDidCkb, +} from "./resolver.js"; + +describe("resolver", () => { + let client: ccc.Client; + + const codeHash = + "0x510150477b10d6ab551a509b71265f3164e9fd4137fcb5a4322f49f03092c7c5"; + const id = ("0x" + "ab".repeat(20)) as ccc.Hex; + const did = argsToDid(id); + + const sampleData = DidCkbData.fromV1({ + document: { hello: "world" }, + localId: undefined, + }); + + function fakeCell(args: ccc.Hex = id, data = sampleData): ccc.Cell { + return ccc.Cell.from({ + outPoint: { + txHash: + "0x1111111111111111111111111111111111111111111111111111111111111111", + index: 0, + }, + cellOutput: { + capacity: ccc.fixedPointFrom(300), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xdeadbeef", + }), + type: ccc.Script.from({ + codeHash, + hashType: "type", + args, + }), + }, + outputData: ccc.hexFrom(data.toBytes()), + }); + } + + beforeEach(() => { + client = { + getKnownScript: vi.fn(), + findSingletonCellByType: vi.fn(), + findCells: vi.fn(), + } as unknown as ccc.Client; + + (client.getKnownScript as Mock).mockResolvedValue({ + codeHash, + hashType: "type", + cellDeps: [], + }); + }); + + it("findDidCkbCell returns a decoded record when a live cell exists", async () => { + (client.findSingletonCellByType as Mock).mockResolvedValue(fakeCell()); + + const record = await findDidCkbCell({ client, id }); + expect(record?.did).toBe(did); + expect(record?.id).toBe(id); + expect(record?.data.value.document).toEqual({ hello: "world" }); + }); + + it("findDidCkbCell returns undefined when no live cell exists", async () => { + (client.findSingletonCellByType as Mock).mockResolvedValue(undefined); + expect(await findDidCkbCell({ client, id })).toBeUndefined(); + }); + + it("resolveDidCkb rejects non-did:ckb strings", async () => { + await expect( + resolveDidCkb({ client, did: "did:plc:abc" }), + ).rejects.toThrow(); + }); + + it("resolveDidCkb resolves the same record as findDidCkbCell", async () => { + (client.findSingletonCellByType as Mock).mockResolvedValue(fakeCell()); + const record = await resolveDidCkb({ client, did }); + expect(record?.did).toBe(did); + }); + + it("listDidCkbsByLock decodes every cell yielded by findCells", async () => { + const other = ("0x" + "cd".repeat(20)) as ccc.Hex; + (client.findCells as Mock).mockImplementation(async function* () { + yield fakeCell(id); + yield fakeCell(other); + }); + + const lock = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xdeadbeef", + }); + + const records = await listDidCkbsByLock({ client, lock }); + expect(records.map((r) => r.id)).toEqual([id, other]); + expect(records.map((r) => r.did)).toEqual([did, argsToDid(other)]); + }); + + it("listDidCkbsByLock skips cells without a type script", async () => { + const cellWithoutType = ccc.Cell.from({ + outPoint: { + txHash: + "0x2222222222222222222222222222222222222222222222222222222222222222", + index: 0, + }, + cellOutput: { + capacity: ccc.fixedPointFrom(100), + lock: ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0x", + }), + }, + outputData: "0x", + }); + (client.findCells as Mock).mockImplementation(async function* () { + yield cellWithoutType; + yield fakeCell(id); + }); + + const lock = ccc.Script.from({ + codeHash: "0x" + "0".repeat(64), + hashType: "type", + args: "0xdeadbeef", + }); + + const records = await listDidCkbsByLock({ client, lock }); + expect(records.length).toBe(1); + expect(records[0].id).toBe(id); + }); +}); From f289acb3370d65fd64d07c2c145ab432f0ab2865 Mon Sep 17 00:00:00 2001 From: truthixify Date: Fri, 19 Jun 2026 08:42:50 +0100 Subject: [PATCH 32/42] fix(did-ckb): use input.getCell in history walk Per Hanssen0's review, switch findPriorDidCell to accept TransactionLike and fetch each input's previous output via input.getCell(client) instead of manually reading prevTx.transaction.outputs[idx]. input.getCell uses the client's cell cache, so repeat walks across the same chain reuse fetched cells instead of redoing getTransaction calls. Inputs whose previous output can't be fetched are skipped rather than aborting the walk. --- packages/did-ckb/src/history.test.ts | 57 +++++++++++++++------------- packages/did-ckb/src/history.ts | 36 +++++++++--------- 2 files changed, 48 insertions(+), 45 deletions(-) diff --git a/packages/did-ckb/src/history.test.ts b/packages/did-ckb/src/history.test.ts index 499fa5ad6..af6a5d368 100644 --- a/packages/did-ckb/src/history.test.ts +++ b/packages/did-ckb/src/history.test.ts @@ -54,6 +54,7 @@ describe("getDidCkbHistory", () => { getKnownScript: vi.fn(), findSingletonCellByType: vi.fn(), getTransaction: vi.fn(), + getCell: vi.fn(), } as unknown as ccc.Client; (client.getKnownScript as Mock).mockResolvedValue({ @@ -74,14 +75,31 @@ describe("getDidCkbHistory", () => { }; } - it("returns CREATE, UPDATE entries newest-first for a normal mint + two transfers", async () => { - // Funding tx that produced the input used to create the genesis. Not a - // DID cell, so the walk should stop at the genesis tx. - const fundingPrevOut = ccc.CellOutput.from({ - capacity: ccc.fixedPointFrom(1000), - lock: fundingLock, - }); + // Set up a getCell mock that resolves outPoints to the cells we expect the + // walk to visit. `input.getCell(client)` calls `client.getCell` internally, + // which we replace wholesale to bypass the cache. + function cellAt(outPoint: ccc.OutPointLike): ccc.Cell | undefined { + const op = ccc.OutPoint.from(outPoint); + const hash = op.txHash.toLowerCase(); + const index = Number(op.index); + if (hash === txUpdate1.toLowerCase() && index === 0) return update1Cell; + if (hash === txGenesis.toLowerCase() && index === 0) return genesisCell; + if (hash === txFunding.toLowerCase()) { + // Non-DID input that funded the genesis; getCell still works, but the + // type script doesn't match, so the walk treats this tx as the genesis. + return ccc.Cell.from({ + outPoint: { txHash: txFunding, index: 0 }, + cellOutput: { + capacity: ccc.fixedPointFrom(1000), + lock: fundingLock, + }, + outputData: "0x", + }); + } + return undefined; + } + it("returns CREATE, UPDATE entries newest-first for a normal mint + two transfers", async () => { (client.getTransaction as Mock).mockImplementation( async (hash: ccc.HexLike) => { const h = ccc.hexFrom(hash); @@ -121,16 +139,12 @@ describe("getDidCkbHistory", () => { 100, ); } - if (h === txFunding) { - return txResponse({ - inputs: [], - outputs: [fundingPrevOut], - outputsData: ["0x"], - }); - } return undefined; }, ); + (client.getCell as Mock).mockImplementation(async (op: ccc.OutPointLike) => + cellAt(op), + ); const history = await getDidCkbHistory({ client, @@ -167,21 +181,12 @@ describe("getDidCkbHistory", () => { 50, ); } - if (h === txFunding) { - return txResponse({ - inputs: [], - outputs: [ - ccc.CellOutput.from({ - capacity: ccc.fixedPointFrom(1000), - lock: fundingLock, - }), - ], - outputsData: ["0x"], - }); - } return undefined; }, ); + (client.getCell as Mock).mockImplementation(async (op: ccc.OutPointLike) => + cellAt(op), + ); const history = await getDidCkbHistory({ client, id, liveCell: migrated }); expect(history.length).toBe(1); diff --git a/packages/did-ckb/src/history.ts b/packages/did-ckb/src/history.ts index fdacb0866..e3eebb826 100644 --- a/packages/did-ckb/src/history.ts +++ b/packages/did-ckb/src/history.ts @@ -30,9 +30,9 @@ const DEFAULT_MAX_STEPS = 50; * first entry returned is the newest (most recent transfer); the last is the * genesis. * - * Cost: roughly one `getTransaction` call per step, plus up to one call per - * non-DID input on each step to verify it isn't the prior DID cell. For typical - * DIDs with a handful of updates that's a small handful of RPC calls. + * Cost: roughly one `getTransaction` call per step plus one `input.getCell` + * lookup per non-DID input on each step. `input.getCell` goes through the + * client's cell cache, so repeated walks over the same chain are cheap. */ export async function getDidCkbHistory(props: { client: ccc.Client; @@ -95,33 +95,31 @@ export async function getDidCkbHistory(props: { async function findPriorDidCell( client: ccc.Client, - tx: ccc.Transaction, + tx: ccc.TransactionLike, codeHash: string, id: string, ): Promise { - for (const input of tx.inputs) { - const prevHash = input.previousOutput.txHash; - const prevIdx = input.previousOutput.index; - const prevTx = await client.getTransaction(prevHash); - if (!prevTx) { + const { inputs } = ccc.Transaction.from(tx); + for (const input of inputs) { + let cell: ccc.Cell; + try { + cell = await input.getCell(client); + } catch { + // Skip inputs whose previous output we can't fetch; they can't be the + // prior DID cell anyway, so the walk should keep looking at siblings. continue; } - const prevOutput = prevTx.transaction.outputs[Number(prevIdx)]; - if (!prevOutput?.type) { + const type = cell.cellOutput.type; + if (!type) { continue; } - if (prevOutput.type.codeHash.toLowerCase() !== codeHash) { + if (type.codeHash.toLowerCase() !== codeHash) { continue; } - if (ccc.hexFrom(prevOutput.type.args).toLowerCase() !== id) { + if (ccc.hexFrom(type.args).toLowerCase() !== id) { continue; } - const data = prevTx.transaction.outputsData[Number(prevIdx)]; - return ccc.Cell.from({ - outPoint: { txHash: prevHash, index: prevIdx }, - cellOutput: prevOutput, - outputData: data, - }); + return cell; } return undefined; } From fb9a3473a456e00717e4a59e3000a1baa5a49777 Mon Sep 17 00:00:00 2001 From: truthixify Date: Fri, 19 Jun 2026 08:43:44 +0100 Subject: [PATCH 33/42] fix(did-ckb): accept did:ckb URI directly in getDidCkbHistory Per Hanssen0's review on the example, the id field now accepts either a 20-byte Type ID args hex (what createDidCkb returns) or a did:ckb string. Strings are sniffed via isDidCkb and converted with didToArgs; hex inputs go through ccc.hexFrom as before. Test covers the URI input path. Example calls getDidCkbHistory with the did variable directly instead of pre-converting via didToArgs. --- packages/did-ckb/src/history.test.ts | 33 ++++++++++++++++++++++++++++ packages/did-ckb/src/history.ts | 12 ++++++++-- packages/examples/src/didHistory.ts | 2 +- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/packages/did-ckb/src/history.test.ts b/packages/did-ckb/src/history.test.ts index af6a5d368..b3f8e0291 100644 --- a/packages/did-ckb/src/history.test.ts +++ b/packages/did-ckb/src/history.test.ts @@ -2,6 +2,7 @@ import { ccc } from "@ckb-ccc/core"; import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; import { DidCkbData } from "./codec.js"; import { getDidCkbHistory } from "./history.js"; +import { argsToDid } from "./identifier.js"; describe("getDidCkbHistory", () => { let client: ccc.Client; @@ -199,4 +200,36 @@ describe("getDidCkbHistory", () => { const history = await getDidCkbHistory({ client, id }); expect(history).toEqual([]); }); + + it("accepts a did:ckb URI in place of the Type ID args", async () => { + const migrated = didCell(txGenesis, { v: 1 }, "did:plc:abc"); + (client.getTransaction as Mock).mockImplementation( + async (hash: ccc.HexLike) => { + if (ccc.hexFrom(hash) === txGenesis) { + return txResponse( + { + inputs: [ + { previousOutput: { txHash: txFunding, index: 0 }, since: 0 }, + ], + outputs: [migrated.cellOutput], + outputsData: [migrated.outputData], + }, + 50, + ); + } + return undefined; + }, + ); + (client.getCell as Mock).mockImplementation(async (op: ccc.OutPointLike) => + cellAt(op), + ); + + const history = await getDidCkbHistory({ + client, + id: argsToDid(id), + liveCell: migrated, + }); + expect(history.length).toBe(1); + expect(history[0].action).toBe("MIGRATE"); + }); }); diff --git a/packages/did-ckb/src/history.ts b/packages/did-ckb/src/history.ts index e3eebb826..32d08d4f0 100644 --- a/packages/did-ckb/src/history.ts +++ b/packages/did-ckb/src/history.ts @@ -1,5 +1,6 @@ import { ccc } from "@ckb-ccc/core"; import { DidCkbData } from "./codec"; +import { didToArgs, isDidCkb } from "./identifier"; import { findDidCkbCell } from "./resolver"; export type HistoryAction = "CREATE" | "UPDATE" | "MIGRATE"; @@ -36,13 +37,20 @@ const DEFAULT_MAX_STEPS = 50; */ export async function getDidCkbHistory(props: { client: ccc.Client; - id: ccc.HexLike; + /** + * Either the 20-byte Type ID args hex returned by `createDidCkb`, or a + * `did:ckb:` URI. URIs are converted via `didToArgs`. + */ + id: ccc.HexLike | string; /** Pre-resolved live cell; if omitted, we fetch it. */ liveCell?: ccc.Cell; /** Safety bound to prevent runaway walks. Default 50. */ maxSteps?: number; }): Promise { - const id = ccc.hexFrom(props.id); + const id = + typeof props.id === "string" && isDidCkb(props.id) + ? didToArgs(props.id) + : ccc.hexFrom(props.id); const scriptInfo = await props.client.getKnownScript(ccc.KnownScript.DidCkb); const codeHash = scriptInfo.codeHash.toLowerCase(); const normalizedId = id.toLowerCase(); diff --git a/packages/examples/src/didHistory.ts b/packages/examples/src/didHistory.ts index 7a4cb0cd0..03132a1c9 100644 --- a/packages/examples/src/didHistory.ts +++ b/packages/examples/src/didHistory.ts @@ -8,7 +8,7 @@ const did = "did:ckb:qq2m72a2vas4e5ovcpxoedscguuu4nba"; const history = await ccc.didCkb.getDidCkbHistory({ client: signer.client, - id: ccc.didCkb.didToArgs(did), + id: did, }); if (history.length === 0) { From 79d9c4d8345a6f8a00189b1e762fc51ddaeb928c Mon Sep 17 00:00:00 2001 From: truthixify Date: Fri, 19 Jun 2026 08:44:23 +0100 Subject: [PATCH 34/42] fix(did-ckb): drop redundant hexFrom in resolver and migrate example Per Hanssen0's review: - resolver.didCkbTypeScript: Script.from already runs args through hexFrom, no need to do it ourselves - examples/migrateDid: WitnessArgs.from accepts a BytesLike for outputType, so witness.toBytes() can go in raw --- packages/did-ckb/src/resolver.ts | 2 +- packages/examples/src/migrateDid.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/did-ckb/src/resolver.ts b/packages/did-ckb/src/resolver.ts index 16a41023b..6a69a15ee 100644 --- a/packages/did-ckb/src/resolver.ts +++ b/packages/did-ckb/src/resolver.ts @@ -21,7 +21,7 @@ async function didCkbTypeScript( return ccc.Script.from({ codeHash: scriptInfo.codeHash, hashType: scriptInfo.hashType, - args: ccc.hexFrom(id), + args: id, }); } diff --git a/packages/examples/src/migrateDid.ts b/packages/examples/src/migrateDid.ts index 65781e1da..fa0852339 100644 --- a/packages/examples/src/migrateDid.ts +++ b/packages/examples/src/migrateDid.ts @@ -51,7 +51,7 @@ const witness = ccc.didCkb.buildMigrationWitness({ }); tx.setWitnessArgsAt( 0, - ccc.WitnessArgs.from({ outputType: ccc.hexFrom(witness.toBytes()) }), + ccc.WitnessArgs.from({ outputType: witness.toBytes() }), ); const txHash = await signer.sendTransaction(tx); From 846ebd64165e712edbe47b3723ef43df8545cafc Mon Sep 17 00:00:00 2001 From: truthixify Date: Fri, 19 Jun 2026 09:11:59 +0100 Subject: [PATCH 35/42] fix(examples): inline migrate witness setWitnessArgsAt call to satisfy prettier The hexFrom removal in the previous commit shrunk the expression enough that prettier wants the call on one line. --- packages/examples/src/migrateDid.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/examples/src/migrateDid.ts b/packages/examples/src/migrateDid.ts index fa0852339..9d1a6055c 100644 --- a/packages/examples/src/migrateDid.ts +++ b/packages/examples/src/migrateDid.ts @@ -49,10 +49,7 @@ const witness = ccc.didCkb.buildMigrationWitness({ rotationKeyIndex, rotationPrivateKey, }); -tx.setWitnessArgsAt( - 0, - ccc.WitnessArgs.from({ outputType: witness.toBytes() }), -); +tx.setWitnessArgsAt(0, ccc.WitnessArgs.from({ outputType: witness.toBytes() })); const txHash = await signer.sendTransaction(tx); console.log(`Migration tx ${txHash} sent`); From f01a05bab332d9f4e0cf7f84aecfd688f8e9f346 Mon Sep 17 00:00:00 2001 From: Hanssen0 <0@hanssen0.com> Date: Sun, 21 Jun 2026 01:10:22 +0800 Subject: [PATCH 36/42] chore: bump pnpm to v11.8.0 --- .changeset/late-ants-hide.md | 25 + .github/workflows/check.yaml | 2 +- .github/workflows/publish-canary.yaml | 2 +- .github/workflows/publish.yaml | 2 +- package.json | 17 +- packages/ccc/package.json | 2 +- packages/ckb-ccc/package.json | 2 +- packages/connector-react/package.json | 2 +- packages/connector/package.json | 2 +- packages/core/package.json | 37 +- packages/core/src/molecule/codec.ts | 20 +- packages/core/tsdown.config.mts | 44 ++ packages/demo/package.json | 2 +- packages/did-ckb/package.json | 2 +- packages/eip6963/package.json | 2 +- packages/examples/package.json | 2 +- packages/faucet/package.json | 2 +- packages/joy-id/package.json | 2 +- packages/lumos-patches/package.json | 2 +- packages/nip07/package.json | 2 +- packages/okx/package.json | 2 +- packages/playground/package.json | 2 +- packages/rei/package.json | 2 +- packages/shell/package.json | 2 +- packages/spore/package.json | 2 +- packages/ssri/package.json | 2 +- packages/tests/package.json | 2 +- packages/type-id/package.json | 2 +- packages/udt/package.json | 2 +- packages/uni-sat/package.json | 2 +- packages/utxo-global/package.json | 2 +- packages/xverse/package.json | 2 +- patches/bs58check@4.0.0.patch | 12 - pnpm-lock.yaml | 667 ++++++++++++++++++++++---- pnpm-workspace.yaml | 9 + 35 files changed, 714 insertions(+), 171 deletions(-) create mode 100644 .changeset/late-ants-hide.md create mode 100644 packages/core/tsdown.config.mts delete mode 100644 patches/bs58check@4.0.0.patch diff --git a/.changeset/late-ants-hide.md b/.changeset/late-ants-hide.md new file mode 100644 index 000000000..1df76880b --- /dev/null +++ b/.changeset/late-ants-hide.md @@ -0,0 +1,25 @@ +--- +"@ckb-ccc/connector-react": patch +"@ckb-ccc/lumos-patches": patch +"@ckb-ccc/utxo-global": patch +"@ckb-ccc/connector": patch +"ckb-ccc": patch +"@ckb-ccc/did-ckb": patch +"@ckb-ccc/eip6963": patch +"@ckb-ccc/type-id": patch +"@ckb-ccc/uni-sat": patch +"@ckb-ccc/joy-id": patch +"@ckb-ccc/xverse": patch +"@ckb-ccc/nip07": patch +"@ckb-ccc/shell": patch +"@ckb-ccc/spore": patch +"@ckb-ccc/core": patch +"@ckb-ccc/ssri": patch +"@ckb-ccc/ccc": patch +"@ckb-ccc/okx": patch +"@ckb-ccc/rei": patch +"@ckb-ccc/udt": patch +--- + +chore: bump pnpm to v11.8.0 + \ No newline at end of file diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 5680d7d35..05182d2d5 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -11,7 +11,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 22 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/publish-canary.yaml b/.github/workflows/publish-canary.yaml index cc68986f0..ca2616d21 100644 --- a/.github/workflows/publish-canary.yaml +++ b/.github/workflows/publish-canary.yaml @@ -43,7 +43,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 22 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - name: Install dependencies run: pnpm build:prepare diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 1b0dfbce5..71fad1cf7 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -21,7 +21,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 22 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - name: Install dependencies run: pnpm build:prepare diff --git a/package.json b/package.json index b615afd34..7a14f8552 100644 --- a/package.json +++ b/package.json @@ -32,20 +32,5 @@ "typescript": "^5.9.2", "vitest": "^3.2.4" }, - "pnpm": { - "patchedDependencies": { - "bs58check@4.0.0": "patches/bs58check@4.0.0.patch" - }, - "onlyBuiltDependencies": [ - "@nestjs/core", - "@tailwindcss/oxide", - "core-js", - "core-js-pure", - "esbuild", - "secp256k1", - "sharp", - "unrs-resolver" - ] - }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/ccc/package.json b/packages/ccc/package.json index 05efb0489..49397360a 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -66,5 +66,5 @@ "@ckb-ccc/utxo-global": "workspace:*", "@ckb-ccc/xverse": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/ckb-ccc/package.json b/packages/ckb-ccc/package.json index 71d74d547..7f7b7d8ee 100644 --- a/packages/ckb-ccc/package.json +++ b/packages/ckb-ccc/package.json @@ -35,5 +35,5 @@ "dependencies": { "@ckb-ccc/ccc": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/connector-react/package.json b/packages/connector-react/package.json index 629a90aa9..90030c481 100644 --- a/packages/connector-react/package.json +++ b/packages/connector-react/package.json @@ -45,5 +45,5 @@ "react": ">=16", "@types/react": ">=16" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/connector/package.json b/packages/connector/package.json index 577b11e7b..c69e3e478 100644 --- a/packages/connector/package.json +++ b/packages/connector/package.json @@ -41,5 +41,5 @@ "@ckb-ccc/ccc": "workspace:*", "lit": "^3.3.1" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/core/package.json b/packages/core/package.json index 40640b81d..f3ca4e1d9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -12,46 +12,42 @@ }, "sideEffects": false, "main": "./dist.commonjs/index.js", - "module": "./dist/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, - "./barrel": { - "import": "./dist/barrel.js", - "require": "./dist.commonjs/barrel.js", - "default": "./dist.commonjs/barrel.js" + "./advanced": { + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "import": "./dist/advancedBarrel.js", - "require": "./dist.commonjs/advancedBarrel.js", - "default": "./dist.commonjs/advancedBarrel.js" + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" }, - "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" - } + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { "test": "vitest", "test:ci": "vitest run", - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", "@types/ws": "^8.18.1", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", + "tsdown": "0.22.3", "typescript": "^5.9.2", "typescript-eslint": "^8.41.0", "vitest": "^3.2.4" @@ -71,5 +67,6 @@ "isomorphic-ws": "^5.0.0", "ws": "^8.18.3" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/core/src/molecule/codec.ts b/packages/core/src/molecule/codec.ts index ff09cab9a..8ae90fe6f 100644 --- a/packages/core/src/molecule/codec.ts +++ b/packages/core/src/molecule/codec.ts @@ -20,25 +20,25 @@ export { */ Codec, /** - * @deprecated Use ccc.CodecLike instead + * @deprecated Use ccc.codecUint instead */ - CodecLike, + codecUint as uint, /** - * @deprecated Use ccc.DecodedType instead + * @deprecated Use ccc.codecUintNumber instead */ - DecodedType, + codecUintNumber as uintNumber, /** - * @deprecated Use ccc.EncodableType instead + * @deprecated Use ccc.CodecLike instead */ - EncodableType, + type CodecLike, /** - * @deprecated Use ccc.codecUint instead + * @deprecated Use ccc.DecodedType instead */ - codecUint as uint, + type DecodedType, /** - * @deprecated Use ccc.codecUintNumber instead + * @deprecated Use ccc.EncodableType instead */ - codecUintNumber as uintNumber, + type EncodableType, } from "../codec/index.js"; function uint32To(numLike: NumLike) { diff --git a/packages/core/tsdown.config.mts b/packages/core/tsdown.config.mts new file mode 100644 index 000000000..4fec3d5b6 --- /dev/null +++ b/packages/core/tsdown.config.mts @@ -0,0 +1,44 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps = [ + "@noble/curves/*", + "@noble/hashes/*", + "@noble/ciphers/*", + "bs58check", +] as string[]; + +export default defineConfig( + ( + [ + { + entry, + onlyBundle: [], + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/demo/package.json b/packages/demo/package.json index 6266b2225..cd742ced5 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -53,5 +53,5 @@ "tailwindcss": "^4.1.12", "typescript": "^5.9.2" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index d8a210895..33ec4e10a 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -56,6 +56,6 @@ "@ipld/dag-cbor": "^9.2.5", "@noble/curves": "^1.9.7" }, - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@11.8.0", "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/eip6963/package.json b/packages/eip6963/package.json index 8e93e447d..43ecee14b 100644 --- a/packages/eip6963/package.json +++ b/packages/eip6963/package.json @@ -48,5 +48,5 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/examples/package.json b/packages/examples/package.json index bac19e45d..226167c12 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -35,5 +35,5 @@ "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/faucet/package.json b/packages/faucet/package.json index d35e420d2..5c012a93e 100644 --- a/packages/faucet/package.json +++ b/packages/faucet/package.json @@ -88,5 +88,5 @@ "^@app/commons(|/.*)$": "/libs/commons/src/$1" } }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/joy-id/package.json b/packages/joy-id/package.json index 2d60d5b2f..984405e59 100644 --- a/packages/joy-id/package.json +++ b/packages/joy-id/package.json @@ -45,5 +45,5 @@ "@joyid/ckb": "^1.1.2", "@joyid/common": "^0.2.1" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/lumos-patches/package.json b/packages/lumos-patches/package.json index add2ad7d1..3981412db 100644 --- a/packages/lumos-patches/package.json +++ b/packages/lumos-patches/package.json @@ -49,5 +49,5 @@ "@ckb-lumos/helpers": "0.24.0-next.2", "@joyid/ckb": "^1.1.2" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/nip07/package.json b/packages/nip07/package.json index 43ae15980..d4ae5c33b 100644 --- a/packages/nip07/package.json +++ b/packages/nip07/package.json @@ -48,5 +48,5 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/okx/package.json b/packages/okx/package.json index 0860b8d09..0facc6db8 100644 --- a/packages/okx/package.json +++ b/packages/okx/package.json @@ -50,5 +50,5 @@ "@ckb-ccc/nip07": "workspace:*", "@ckb-ccc/uni-sat": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/playground/package.json b/packages/playground/package.json index b1d741051..ab02b69d6 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -50,5 +50,5 @@ "raw-loader": "^4.0.2", "tailwindcss": "^4.1.12" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/rei/package.json b/packages/rei/package.json index 064154f9f..a791781b6 100644 --- a/packages/rei/package.json +++ b/packages/rei/package.json @@ -57,5 +57,5 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/shell/package.json b/packages/shell/package.json index 14ec4a779..4969af8a3 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -63,5 +63,5 @@ "@ckb-ccc/type-id": "workspace:*", "@ckb-ccc/udt": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/spore/package.json b/packages/spore/package.json index d5609aec4..d69db11f4 100644 --- a/packages/spore/package.json +++ b/packages/spore/package.json @@ -62,5 +62,5 @@ "@ckb-ccc/core": "workspace:*", "axios": "^1.11.0" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/ssri/package.json b/packages/ssri/package.json index fd004dba0..4bfbe54c7 100644 --- a/packages/ssri/package.json +++ b/packages/ssri/package.json @@ -47,5 +47,5 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/tests/package.json b/packages/tests/package.json index 3bbd4cf80..4f1b04aae 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -25,5 +25,5 @@ "typescript-eslint": "^8.41.0", "@ckb-ccc/ccc": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/type-id/package.json b/packages/type-id/package.json index dcdf82b3b..5afb9bc5f 100644 --- a/packages/type-id/package.json +++ b/packages/type-id/package.json @@ -57,6 +57,6 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@11.8.0", "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/udt/package.json b/packages/udt/package.json index b03cf6aa6..6f48e6346 100644 --- a/packages/udt/package.json +++ b/packages/udt/package.json @@ -48,5 +48,5 @@ "@ckb-ccc/core": "workspace:*", "@ckb-ccc/ssri": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/uni-sat/package.json b/packages/uni-sat/package.json index f25f73e67..a7013aed8 100644 --- a/packages/uni-sat/package.json +++ b/packages/uni-sat/package.json @@ -58,5 +58,5 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/utxo-global/package.json b/packages/utxo-global/package.json index a8b5d0b02..b1872d8c8 100644 --- a/packages/utxo-global/package.json +++ b/packages/utxo-global/package.json @@ -58,5 +58,5 @@ "dependencies": { "@ckb-ccc/core": "workspace:*" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/packages/xverse/package.json b/packages/xverse/package.json index 17569c2f2..00d6bd63a 100644 --- a/packages/xverse/package.json +++ b/packages/xverse/package.json @@ -60,5 +60,5 @@ "bitcoinjs-lib": "^7.0.0", "valibot": "^1.1.0" }, - "packageManager": "pnpm@10.8.1" + "packageManager": "pnpm@11.8.0" } diff --git a/patches/bs58check@4.0.0.patch b/patches/bs58check@4.0.0.patch deleted file mode 100644 index f57c69f50..000000000 --- a/patches/bs58check@4.0.0.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/package.json b/package.json -index 66d45a73078b2b149d19fa2280568bd6b8908d0b..32fe88fb7b22b340e513a9f9027e7a122b002389 100644 ---- a/package.json -+++ b/package.json -@@ -2,7 +2,6 @@ - "name": "bs58check", - "version": "4.0.0", - "description": "A straightforward implementation of base58-check encoding", -- "type": "module", - "keywords": [ - "base", - "base58", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e7d89fec..954a4ef0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,11 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - bs58check@4.0.0: - hash: 0848a2e3956f24abf1dd8620cba2a3f468393e489185d9536ad109f7e5712d26 - path: patches/bs58check@4.0.0.patch - importers: .: @@ -247,7 +242,7 @@ importers: version: 2.0.0 bs58check: specifier: ^4.0.0 - version: 4.0.0(patch_hash=0848a2e3956f24abf1dd8620cba2a3f468393e489185d9536ad109f7e5712d26) + version: 4.0.0 buffer: specifier: ^6.0.3 version: 6.0.3 @@ -267,9 +262,6 @@ importers: '@types/ws': specifier: ^8.18.1 version: 8.18.1 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -285,9 +277,9 @@ importers: prettier-plugin-organize-imports: specifier: ^4.2.0 version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + tsdown: + specifier: 0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)) typescript: specifier: ^5.9.2 version: 5.9.2 @@ -442,7 +434,7 @@ importers: version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) tsdown: specifier: 0.19.0-beta.3 - version: 0.19.0-beta.3(synckit@0.11.11)(typescript@5.9.2) + version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)(typescript@5.9.2) typescript: specifier: ^5.9.2 version: 5.9.2 @@ -561,7 +553,7 @@ importers: version: link:../ccc '@ckb-ccc/playground': specifier: file:src/playground - version: playground@file:packages/examples/src/playground + version: file:packages/examples/src/playground '@noble/curves': specifier: ^1.9.7 version: 1.9.7 @@ -1245,7 +1237,7 @@ importers: version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) tsdown: specifier: 0.19.0-beta.3 - version: 0.19.0-beta.3(synckit@0.11.11)(typescript@5.9.2) + version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)(typescript@5.9.2) typescript: specifier: ^5.9.2 version: 5.9.2 @@ -1529,6 +1521,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0': + resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -1555,6 +1551,10 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@8.0.0': + resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} @@ -1563,6 +1563,10 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.2': + resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -1585,6 +1589,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@8.0.0': + resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1700,6 +1709,10 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@8.0.0': + resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -1780,6 +1793,9 @@ packages: '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + '@ckb-ccc/playground@file:packages/examples/src/playground': + resolution: {directory: packages/examples/src/playground, type: directory} + '@ckb-lumos/base@0.24.0-next.2': resolution: {integrity: sha512-VCXYpykJ+OhjbcCp3imwt9rk3Ie2T8jyCjSXExkoyKY+QT+EI856p37KBbBdO4r7gguVtADnJS+WLIZoNm5Bvw==} engines: {node: '>=12.0.0'} @@ -1828,11 +1844,14 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.4.5': resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} - '@emnapi/core@1.8.1': - resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} '@emnapi/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} @@ -1840,8 +1859,8 @@ packages: '@emnapi/wasi-threads@1.0.4': resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} '@esbuild/aix-ppc64@0.25.9': resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} @@ -2316,89 +2335,105 @@ packages: resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} @@ -2743,8 +2778,11 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@napi-rs/wasm-runtime@1.1.5': + resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@nervina-labs/dob-render@0.2.5': resolution: {integrity: sha512-PZ5hcoTYfbdyI51xlHdK1j9VYTd6L1oYxEv9CzpYuu0AtkOqSNmrbn2FkI4noUJl+tqxqWSsJRju7JJiOApTpg==} @@ -2869,48 +2907,56 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-gnu@16.2.4': resolution: {integrity: sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-musl@16.0.10': resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-arm64-musl@16.2.4': resolution: {integrity: sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-x64-gnu@16.0.10': resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-gnu@16.2.4': resolution: {integrity: sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-musl@16.0.10': resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-linux-x64-musl@16.2.4': resolution: {integrity: sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-win32-arm64-msvc@16.0.10': resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==} @@ -3006,6 +3052,9 @@ packages: '@oxc-project/types@0.106.0': resolution: {integrity: sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==} + '@oxc-project/types@0.137.0': + resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + '@paralleldrive/cuid2@2.2.2': resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} @@ -3428,53 +3477,129 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.1.2': + resolution: {integrity: sha512-2cZ+7xRS+DBcuJBJKnfzsbleumJhBqSlJVpuzHC0nTqfd3QQ7Vx2/x5YR/D7cBamKSeWplwo82Fn9lqYUDEMfA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': resolution: {integrity: sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.1.2': + resolution: {integrity: sha512-RkPMJnygxsgOYdkfqgpwY0/Fzm8d0VQe6HGU2/B00Xa9eqdLbrII+DOKAodbJAn3ZL1AJxGHkZRPYazgGY6Ljw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-beta.58': resolution: {integrity: sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.1.2': + resolution: {integrity: sha512-Uiczh6vFhwyfd7WNe7Q7mCA4KxAiLdz7jPE/WGizfRpIieoyFuNVMmM8HqZ9HwudTkY6/AeMQwlNJ9NJijguWw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': resolution: {integrity: sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.1.2': + resolution: {integrity: sha512-+TpdtTRgHiJFjCVFbw311SuLk3KfytPOQQn+VlAEv+gBxYPtL7E6JS9e/tk+8CwxhIZvemJKo4rTKgfWNsKkkA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': resolution: {integrity: sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.1.2': + resolution: {integrity: sha512-4lv1/tkmi7ueIVHnyreaOeUpiZP26BH9rRy6hoYfR9310A2B9nUEVRDvBx69vx64Nr3eTPPRkyciqJJs+j9Jmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': resolution: {integrity: sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-gnu@1.1.2': + resolution: {integrity: sha512-gBSUVO0eaWgw1JMjK3gB8BMlX2Mk148s2lTiVT3e9vjVxbl7UDfMWWY8CfIaaqiXuM9fVTMxIpUz6CAo/B6Vlw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': resolution: {integrity: sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] + + '@rolldown/binding-linux-arm64-musl@1.1.2': + resolution: {integrity: sha512-LjQP/iZLBu8o8PjIfk4x3At0/mT6h282pvz8Z5LAyhGbu/kDezyO7ea62rF5uoqmgnIYqbN/MqJ3Si3Aymi7xQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.1.2': + resolution: {integrity: sha512-X/7bVLWelEsbyWDUSXt7zVsTniLLPIY2n1rH58qr78l9i7MNbbxBWD8gI2vRfBWf4NUXJCUuQnfZDsp32LqsfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.1.2': + resolution: {integrity: sha512-gb6dYKW/1KDorGXyy48glEBJs/sxVSC5pcVrox/pFGV4mvwSFeg2sK5L2tRkVsVlh7kueqOgg4GEcuipJcGuKg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': resolution: {integrity: sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.1.2': + resolution: {integrity: sha512-JY4w85pU3iAiJVMh5nuk4/Mh9GjMsupe8MrIN53rwxAZW64GKrWeJBuN6SxQg9QTU5uB1cxyhDzW8jqRn1EABw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': resolution: {integrity: sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] + + '@rolldown/binding-linux-x64-musl@1.1.2': + resolution: {integrity: sha512-xvpA7o5KCYLB0Rwscmuylb1/zHHSUx4g4xilm4prC5jP76pEUlzBmMbgpbh7bVDbId4NcfT96gN5i6mE6UDaiw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': resolution: {integrity: sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==} @@ -3482,26 +3607,52 @@ packages: cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.1.2': + resolution: {integrity: sha512-p/ts6KBLjuk49Bp21XH77poQGt02iNz7ChgHep7tudPOaLinR/De/RHdxF8w8Yj4r/bF/bqXwH6PZrB2sA+Nvw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': resolution: {integrity: sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.1.2': + resolution: {integrity: sha512-VMu/wmrZ9hJzYlRhbw7jK5PODlugyKZ5mOdX78+lS8OvuFkWNQdz1pFLrI2p3P0pjXOmUZ7B48o5VnMH9QOGtg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': resolution: {integrity: sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.1.2': + resolution: {integrity: sha512-xtUJqs8qEkuSviS0n1tsohaPuz3a1SPhZywOji4Oo+sgrJs8daEDMZ0QtqL0OS7dx8PoVpg2J/ZZycPY5I2+Zg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': resolution: {integrity: sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.1.2': + resolution: {integrity: sha512-85YiLQqjUKgSO/Zjnf9e0XIn5Ymrh1fLDWBeAkZqpuBR/3R8TpfoHXuyblqyQrftSSgWO9qpcHN8mkyKsLraoA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.58': resolution: {integrity: sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/rollup-android-arm-eabi@4.49.0': resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} cpu: [arm] @@ -3536,56 +3687,67 @@ packages: resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.49.0': resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.49.0': resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.49.0': resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.49.0': resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.49.0': resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.49.0': resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.49.0': resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.49.0': resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.49.0': resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.49.0': resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.49.0': resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==} @@ -3760,48 +3922,56 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.1.12': resolution: {integrity: sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-arm64-musl@4.3.0': resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.1.12': resolution: {integrity: sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-gnu@4.3.0': resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.1.12': resolution: {integrity: sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-musl@4.3.0': resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} engines: {node: '>= 20'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.1.12': resolution: {integrity: sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==} @@ -3896,8 +4066,8 @@ packages: '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4070,6 +4240,9 @@ packages: '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4353,6 +4526,7 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} @@ -4393,41 +4567,49 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -4657,6 +4839,10 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + engines: {node: '>=14'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -4731,6 +4917,10 @@ packages: resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} + ast-kit@3.0.0: + resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} + engines: {node: ^22.18.0 || >=24.11.0} + ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -4911,6 +5101,10 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -5437,6 +5631,9 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delaunator@5.1.0: resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} @@ -5521,6 +5718,15 @@ packages: oxc-resolver: optional: true + dts-resolver@3.0.0: + resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} + engines: {node: ^22.18.0 || >=24.0.0} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -5558,6 +5764,10 @@ packages: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} + encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -6244,6 +6454,10 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-tsconfig@5.0.0-beta.5: + resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + engines: {node: '>=20.20.0'} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -6260,16 +6474,18 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -6394,6 +6610,9 @@ packages: hookable@6.0.1: resolution: {integrity: sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==} + hookable@6.1.1: + resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -6449,6 +6668,10 @@ packages: resolution: {integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==} engines: {node: '>=20.19.0'} + import-without-cache@0.4.0: + resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} + engines: {node: ^22.18.0 || >=24.0.0} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -7009,48 +7232,56 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-gnu@1.32.0: resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.30.1: resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.30.1: resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.30.1: resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.30.1: resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} @@ -7671,6 +7902,10 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + engines: {node: '>=12.20.0'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -7842,9 +8077,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - playground@file:packages/examples/src/playground: - resolution: {directory: packages/examples/src/playground, type: directory} - pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -8263,11 +8495,35 @@ packages: vue-tsc: optional: true + rolldown-plugin-dts@0.26.0: + resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} + engines: {node: ^22.18.0 || >=24.11.0} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + rolldown: ^1.0.0 + typescript: ^5.0.0 || ^6.0.0 + vue-tsc: ~3.2.0 || ~3.3.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + rolldown@1.0.0-beta.58: resolution: {integrity: sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.1.2: + resolution: {integrity: sha512-x0CrQQqCXWGeI8dTvFfN/Dnv3yMKT9hv5jFjlOreKAx9wqLq9wz7VvLLHyaAXC90/CpggTu9SisSbsJJTPSjNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.49.0: resolution: {integrity: sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8349,6 +8605,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + send@1.2.0: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} @@ -8664,6 +8925,7 @@ packages: tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} @@ -8724,6 +8986,10 @@ packages: resolution: {integrity: sha512-g62dB+w1/OEFnPvmX0yd/HnetYITOL+1nJW7kitOycOeAvmbWC/nu0fwmmQ/kupNojqExzyC/T++pST/jRJ2mQ==} engines: {node: '>=18'} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -8736,6 +9002,10 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8876,6 +9146,40 @@ packages: unplugin-unused: optional: true + tsdown@0.22.3: + resolution: {integrity: sha512-louqbfA8Qf//B9jTTL0FPtXTNpjCWv1VPkbcmQMph2pTpzs+LnB1tbe4tDDRVpo2BjF5SgUXaTZe45SxB8pWHg==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@tsdown/css': 0.22.3 + '@tsdown/exe': 0.22.3 + '@vitejs/devtools': '*' + publint: ^0.3.8 + tsx: '*' + typescript: ^5.0.0 || ^6.0.0 + unplugin-unused: ^0.5.0 + unrun: '*' + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@tsdown/css': + optional: true + '@tsdown/exe': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + tsx: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + unrun: + optional: true + tslib@2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} @@ -9032,6 +9336,9 @@ packages: unconfig-core@7.4.2: resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -9068,9 +9375,6 @@ packages: unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} @@ -9608,7 +9912,7 @@ snapshots: '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -9618,14 +9922,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -9650,6 +9954,15 @@ snapshots: '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 + '@babel/generator@8.0.0': + dependencies: + '@babel/parser': 8.0.0 + '@babel/types': 8.0.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.28.0 @@ -9671,7 +9984,7 @@ snapshots: dependencies: '@babel/core': 7.28.3 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color @@ -9680,10 +9993,14 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@8.0.0': {} + '@babel/helper-validator-identifier@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@8.0.2': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helpers@7.28.3': @@ -9706,6 +10023,10 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/parser@8.0.0': + dependencies: + '@babel/types': 8.0.0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)': dependencies: '@babel/core': 7.28.3 @@ -9804,11 +10125,11 @@ snapshots: '@babel/traverse@7.28.3': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -9823,6 +10144,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@8.0.0': + dependencies: + '@babel/helper-string-parser': 8.0.0 + '@babel/helper-validator-identifier': 8.0.2 + '@bcoe/v8-coverage@0.2.3': {} '@bcoe/v8-coverage@1.0.2': {} @@ -9996,6 +10322,8 @@ snapshots: '@chevrotain/types@11.1.2': {} + '@ckb-ccc/playground@file:packages/examples/src/playground': {} + '@ckb-lumos/base@0.24.0-next.2': dependencies: '@ckb-lumos/bi': 0.24.0-next.2 @@ -10090,15 +10418,20 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.4.5': dependencies: '@emnapi/wasi-threads': 1.0.4 tslib: 2.8.1 optional: true - '@emnapi/core@1.8.1': + '@emnapi/runtime@1.11.1': dependencies: - '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true @@ -10112,7 +10445,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.1.0': + '@emnapi/wasi-threads@1.2.2': dependencies: tslib: 2.8.1 optional: true @@ -10793,7 +11126,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.9.1 jest-regex-util: 30.0.1 '@jest/reporters@30.1.1': @@ -10881,7 +11214,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.3.0 + '@types/node': 25.9.1 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -11015,11 +11348,11 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true - '@napi-rs/wasm-runtime@1.1.1': + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: - '@emnapi/core': 1.8.1 - '@emnapi/runtime': 1.7.1 - '@tybys/wasm-util': 0.10.1 + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.2 optional: true '@nervina-labs/dob-render@0.2.5(satori@0.10.14)': @@ -11258,6 +11591,8 @@ snapshots: '@oxc-project/types@0.106.0': {} + '@oxc-project/types@0.137.0': {} + '@paralleldrive/cuid2@2.2.2': dependencies: '@noble/hashes': 1.8.0 @@ -11679,46 +12014,100 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.58': optional: true + '@rolldown/binding-android-arm64@1.1.2': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': optional: true + '@rolldown/binding-darwin-arm64@1.1.2': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-beta.58': optional: true + '@rolldown/binding-darwin-x64@1.1.2': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': optional: true + '@rolldown/binding-freebsd-x64@1.1.2': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.1.2': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': optional: true + '@rolldown/binding-linux-arm64-gnu@1.1.2': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': optional: true + '@rolldown/binding-linux-arm64-musl@1.1.2': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.1.2': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.1.2': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': optional: true + '@rolldown/binding-linux-x64-gnu@1.1.2': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': optional: true + '@rolldown/binding-linux-x64-musl@1.1.2': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': + '@rolldown/binding-openharmony-arm64@1.1.2': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@rolldown/binding-wasm32-wasi@1.1.2': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': optional: true + '@rolldown/binding-win32-arm64-msvc@1.1.2': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': optional: true + '@rolldown/binding-win32-x64-msvc@1.1.2': + optional: true + '@rolldown/pluginutils@1.0.0-beta.58': {} + '@rolldown/pluginutils@1.0.1': {} + '@rollup/rollup-android-arm-eabi@4.49.0': optional: true @@ -12068,7 +12457,7 @@ snapshots: tslib: 2.8.1 optional: true - '@tybys/wasm-util@0.10.1': + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 optional: true @@ -12290,6 +12679,8 @@ snapshots: '@types/js-yaml@4.0.9': {} + '@types/jsesc@2.5.1': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -12974,6 +13365,8 @@ snapshots: ansis@4.2.0: {} + ansis@4.3.1: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -13075,6 +13468,12 @@ snapshots: '@babel/parser': 7.28.5 pathe: 2.0.3 + ast-kit@3.0.0: + dependencies: + '@babel/parser': 8.0.0 + estree-walker: 3.0.3 + pathe: 2.0.3 + ast-types-flow@0.0.8: {} ast-v8-to-istanbul@0.3.4: @@ -13195,7 +13594,7 @@ snapshots: '@noble/hashes': 1.8.0 bech32: 2.0.0 bip174: 3.0.0 - bs58check: 4.0.0(patch_hash=0848a2e3956f24abf1dd8620cba2a3f468393e489185d9536ad109f7e5712d26) + bs58check: 4.0.0 uint8array-tools: 0.0.9 valibot: 0.38.0(typescript@5.9.2) varuint-bitcoin: 2.0.0 @@ -13268,7 +13667,7 @@ snapshots: dependencies: base-x: 5.0.1 - bs58check@4.0.0(patch_hash=0848a2e3956f24abf1dd8620cba2a3f468393e489185d9536ad109f7e5712d26): + bs58check@4.0.0: dependencies: '@noble/hashes': 1.8.0 bs58: 6.0.0 @@ -13299,6 +13698,8 @@ snapshots: cac@6.7.14: {} + cac@7.0.0: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -13819,6 +14220,8 @@ snapshots: defu@6.1.4: {} + defu@6.1.7: {} + delaunator@5.1.0: dependencies: robust-predicates: 3.0.3 @@ -13878,6 +14281,8 @@ snapshots: dts-resolver@2.1.3: {} + dts-resolver@3.0.0: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -13912,6 +14317,8 @@ snapshots: empathic@2.0.0: {} + empathic@2.0.1: {} + encodeurl@2.0.0: {} enhanced-resolve@5.18.3: @@ -14132,7 +14539,7 @@ snapshots: eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-react-hooks: 7.0.1(eslint@9.34.0(jiti@2.7.0)) @@ -14178,7 +14585,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color @@ -14193,7 +14600,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14916,6 +15323,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@5.0.0-beta.5: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -15151,6 +15562,8 @@ snapshots: hookable@6.0.1: {} + hookable@6.1.1: {} + hosted-git-info@2.8.9: {} html-escaper@2.0.2: {} @@ -15195,6 +15608,8 @@ snapshots: import-without-cache@0.2.5: {} + import-without-cache@0.4.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -15392,7 +15807,7 @@ snapshots: '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.3 + semver: 7.8.5 transitivePeerDependencies: - supports-color @@ -15552,7 +15967,7 @@ snapshots: jest-haste-map@30.1.0: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -15701,11 +16116,11 @@ snapshots: jest-util@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 chalk: 4.1.2 ci-info: 4.3.0 graceful-fs: 4.2.11 - picomatch: 4.0.3 + picomatch: 4.0.4 jest-validate@30.1.0: dependencies: @@ -15729,13 +16144,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.3.0 + '@types/node': 25.9.1 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.1.0: dependencies: - '@types/node': 24.3.0 + '@types/node': 25.9.1 '@ungap/structured-clone': 1.3.0 jest-util: 30.0.5 merge-stream: 2.0.0 @@ -16241,7 +16656,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 mdast-util-to-markdown@2.1.2: @@ -16824,6 +17239,8 @@ snapshots: obug@2.1.1: {} + obug@2.1.3: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -16993,8 +17410,6 @@ snapshots: dependencies: find-up: 4.1.0 - playground@file:packages/examples/src/playground: {} - pluralize@8.0.0: {} points-on-curve@0.2.0: {} @@ -17384,7 +17799,7 @@ snapshots: robust-predicates@3.0.3: {} - rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.58)(typescript@5.9.2): + rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1))(typescript@5.9.2): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 @@ -17394,13 +17809,29 @@ snapshots: dts-resolver: 2.1.3 get-tsconfig: 4.13.0 obug: 2.1.1 - rolldown: 1.0.0-beta.58 + rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-beta.58: + rolldown-plugin-dts@0.26.0(rolldown@1.1.2)(typescript@5.9.2): + dependencies: + '@babel/generator': 8.0.0 + '@babel/helper-validator-identifier': 8.0.2 + '@babel/parser': 8.0.0 + ast-kit: 3.0.0 + birpc: 4.0.0 + dts-resolver: 3.0.0 + get-tsconfig: 5.0.0-beta.5 + obug: 2.1.3 + rolldown: 1.1.2 + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): dependencies: '@oxc-project/types': 0.106.0 '@rolldown/pluginutils': 1.0.0-beta.58 @@ -17415,9 +17846,33 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.58 '@rolldown/binding-linux-x64-musl': 1.0.0-beta.58 '@rolldown/binding-openharmony-arm64': 1.0.0-beta.58 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.58 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.58 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + rolldown@1.1.2: + dependencies: + '@oxc-project/types': 0.137.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.1.2 + '@rolldown/binding-darwin-arm64': 1.1.2 + '@rolldown/binding-darwin-x64': 1.1.2 + '@rolldown/binding-freebsd-x64': 1.1.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.2 + '@rolldown/binding-linux-arm64-gnu': 1.1.2 + '@rolldown/binding-linux-arm64-musl': 1.1.2 + '@rolldown/binding-linux-ppc64-gnu': 1.1.2 + '@rolldown/binding-linux-s390x-gnu': 1.1.2 + '@rolldown/binding-linux-x64-gnu': 1.1.2 + '@rolldown/binding-linux-x64-musl': 1.1.2 + '@rolldown/binding-openharmony-arm64': 1.1.2 + '@rolldown/binding-wasm32-wasi': 1.1.2 + '@rolldown/binding-win32-arm64-msvc': 1.1.2 + '@rolldown/binding-win32-x64-msvc': 1.1.2 rollup@4.49.0: dependencies: @@ -17541,6 +17996,8 @@ snapshots: semver@7.7.3: {} + semver@7.8.5: {} + send@1.2.0: dependencies: debug: 4.4.1 @@ -18015,6 +18472,8 @@ snapshots: tinyexec@1.2.3: {} + tinyexec@1.2.4: {} + tinyglobby@0.2.14: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -18030,6 +18489,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} @@ -18136,7 +18600,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.19.0-beta.3(synckit@0.11.11)(typescript@5.9.2): + tsdown@0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)(typescript@5.9.2): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -18146,23 +18610,52 @@ snapshots: import-without-cache: 0.2.5 obug: 2.1.1 picomatch: 4.0.3 - rolldown: 1.0.0-beta.58 - rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.58)(typescript@5.9.2) + rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1))(typescript@5.9.2) semver: 7.7.3 tinyexec: 1.0.2 tinyglobby: 0.2.15 tree-kill: 1.2.2 unconfig-core: 7.4.2 - unrun: 0.2.22(synckit@0.11.11) + unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@ts-macro/tsc' - '@typescript/native-preview' - oxc-resolver - synckit - vue-tsc + tsdown@0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)): + dependencies: + ansis: 4.3.1 + cac: 7.0.0 + defu: 6.1.7 + empathic: 2.0.1 + hookable: 6.1.1 + import-without-cache: 0.4.0 + obug: 2.1.3 + picomatch: 4.0.4 + rolldown: 1.1.2 + rolldown-plugin-dts: 0.26.0(rolldown@1.1.2)(typescript@5.9.2) + semver: 7.8.5 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tree-kill: 1.2.2 + unconfig-core: 7.5.0 + optionalDependencies: + tsx: 4.20.5 + typescript: 5.9.2 + unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11) + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - vue-tsc + tslib@2.3.1: {} tslib@2.7.0: {} @@ -18322,6 +18815,11 @@ snapshots: '@quansync/fs': 1.0.0 quansync: 1.0.0 + unconfig-core@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + uncrypto@0.1.3: {} undici-types@6.19.8: {} @@ -18371,12 +18869,6 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 @@ -18413,11 +18905,14 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - unrun@0.2.22(synckit@0.11.11): + unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11): dependencies: - rolldown: 1.0.0-beta.58 + rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optionalDependencies: synckit: 0.11.11 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' untildify@4.0.0: {} @@ -18543,11 +19038,11 @@ snapshots: vite@7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.9 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.15 rollup: 4.49.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 @@ -18560,11 +19055,11 @@ snapshots: vite@7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.9 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.15 rollup: 4.49.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.1 fsevents: 2.3.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index dee51e928..cadf8dc13 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,11 @@ packages: - "packages/*" +allowBuilds: + '@nestjs/core': true + '@tailwindcss/oxide': true + core-js: true + core-js-pure: true + esbuild: true + secp256k1: true + sharp: true + unrs-resolver: true From 4bb3d9d2ef36b3ee8820036625abd9befb1980c4 Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Sat, 10 Jan 2026 03:49:42 +0800 Subject: [PATCH 37/42] feat: bump @noble packages --- .changeset/vast-trees-film.md | 6 + packages/core/package.json | 6 +- packages/core/src/hasher/advanced.ts | 4 +- packages/core/src/hasher/hasherCkb.ts | 2 +- packages/core/src/hasher/hasherKeecak256.ts | 2 +- packages/core/src/keystore/index.ts | 8 +- packages/core/src/signer/btc/verify.ts | 3 +- .../src/signer/ckb/signerCkbPrivateKey.ts | 17 +- .../core/src/signer/ckb/verifyCkbSecp256k1.ts | 16 +- .../src/signer/doge/signerDogePrivateKey.ts | 9 +- packages/core/src/signer/doge/verify.ts | 15 +- .../src/signer/nostr/signerNostrPrivateKey.ts | 17 +- packages/core/src/signer/nostr/verify.ts | 4 +- packages/did-ckb/package.json | 2 +- packages/did-ckb/src/plc/index.ts | 22 +- packages/did-ckb/src/plc/plc.test.ts | 2 +- packages/examples/package.json | 4 +- packages/examples/src/createDidWithLocalId.ts | 11 +- packages/playground/next.config.mjs | 4 + packages/playground/package.json | 4 +- .../playground/src/app/components/Editor.tsx | 14 +- packages/playground/src/app/execute/index.tsx | 4 +- packages/tests/package.json | 4 +- packages/tests/tests/esm.test.mts | 3 +- pnpm-lock.yaml | 3301 +++++++++++------ 25 files changed, 2217 insertions(+), 1267 deletions(-) create mode 100644 .changeset/vast-trees-film.md diff --git a/.changeset/vast-trees-film.md b/.changeset/vast-trees-film.md new file mode 100644 index 000000000..6661db38c --- /dev/null +++ b/.changeset/vast-trees-film.md @@ -0,0 +1,6 @@ +--- +"@ckb-ccc/core": minor +--- + +feat: bump @noble packages + diff --git a/packages/core/package.json b/packages/core/package.json index f3ca4e1d9..1cf3e0624 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -57,9 +57,9 @@ }, "dependencies": { "@joyid/ckb": "^1.1.2", - "@noble/ciphers": "^0.5.3", - "@noble/curves": "^1.9.7", - "@noble/hashes": "^1.8.0", + "@noble/ciphers": "^2.2.0", + "@noble/curves": "^2.2.0", + "@noble/hashes": "^2.2.0", "bech32": "^2.0.0", "bs58check": "^4.0.0", "buffer": "^6.0.3", diff --git a/packages/core/src/hasher/advanced.ts b/packages/core/src/hasher/advanced.ts index f3f4359bc..73382a950 100644 --- a/packages/core/src/hasher/advanced.ts +++ b/packages/core/src/hasher/advanced.ts @@ -1 +1,3 @@ -export const CKB_BLAKE2B_PERSONAL = "ckb-default-hash"; +import { bytesFrom } from "../bytes/index.js"; + +export const CKB_BLAKE2B_PERSONAL = bytesFrom("ckb-default-hash", "utf8"); diff --git a/packages/core/src/hasher/hasherCkb.ts b/packages/core/src/hasher/hasherCkb.ts index c32ec569c..fbcddd7f8 100644 --- a/packages/core/src/hasher/hasherCkb.ts +++ b/packages/core/src/hasher/hasherCkb.ts @@ -1,4 +1,4 @@ -import { blake2b } from "@noble/hashes/blake2b"; +import { blake2b } from "@noble/hashes/blake2.js"; import { BytesLike, bytesFrom } from "../bytes/index.js"; import { Hex, hexFrom } from "../hex/index.js"; import { CKB_BLAKE2B_PERSONAL } from "./advanced.js"; diff --git a/packages/core/src/hasher/hasherKeecak256.ts b/packages/core/src/hasher/hasherKeecak256.ts index 88beef6ec..4660fbb3c 100644 --- a/packages/core/src/hasher/hasherKeecak256.ts +++ b/packages/core/src/hasher/hasherKeecak256.ts @@ -1,4 +1,4 @@ -import { keccak_256 } from "@noble/hashes/sha3"; +import { keccak_256 } from "@noble/hashes/sha3.js"; import { BytesLike, bytesFrom } from "../bytes/index.js"; import { Hex, hexFrom } from "../hex/index.js"; import { Hasher } from "./hasher.js"; diff --git a/packages/core/src/keystore/index.ts b/packages/core/src/keystore/index.ts index bd963af30..3ce3e042a 100644 --- a/packages/core/src/keystore/index.ts +++ b/packages/core/src/keystore/index.ts @@ -1,7 +1,7 @@ -import { ctr } from "@noble/ciphers/aes"; -import { scryptAsync } from "@noble/hashes/scrypt"; -import { keccak_256 } from "@noble/hashes/sha3"; -import { randomBytes } from "@noble/hashes/utils"; +import { ctr } from "@noble/ciphers/aes.js"; +import { scryptAsync } from "@noble/hashes/scrypt.js"; +import { keccak_256 } from "@noble/hashes/sha3.js"; +import { randomBytes } from "@noble/hashes/utils.js"; import { Bytes, BytesLike, bytesConcat, bytesFrom } from "../bytes/index.js"; import { hexFrom } from "../hex/index.js"; diff --git a/packages/core/src/signer/btc/verify.ts b/packages/core/src/signer/btc/verify.ts index 2d7f7fb10..2907560a7 100644 --- a/packages/core/src/signer/btc/verify.ts +++ b/packages/core/src/signer/btc/verify.ts @@ -1,4 +1,4 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; import { ripemd160 } from "@noble/hashes/legacy.js"; import { sha256 } from "@noble/hashes/sha2.js"; import bs58check from "bs58check"; @@ -98,5 +98,6 @@ export function verifyMessageBtcEcdsa( bytesFrom(rawSign), messageHashBtcEcdsa(challenge), bytesFrom(publicKey), + { prehash: false }, ); } diff --git a/packages/core/src/signer/ckb/signerCkbPrivateKey.ts b/packages/core/src/signer/ckb/signerCkbPrivateKey.ts index 31354a93c..41a507d38 100644 --- a/packages/core/src/signer/ckb/signerCkbPrivateKey.ts +++ b/packages/core/src/signer/ckb/signerCkbPrivateKey.ts @@ -1,9 +1,8 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; import { bytesConcat, bytesFrom, BytesLike } from "../../bytes/index.js"; import { Transaction, TransactionLike, WitnessArgs } from "../../ckb/index.js"; import { Client } from "../../client/index.js"; import { Hex, hexFrom, HexLike } from "../../hex/index.js"; -import { numBeToBytes } from "../../num/index.js"; import { SignerCkbPublicKey } from "./signerCkbPublicKey.js"; import { messageHashCkbSecp256k1 } from "./verifyCkbSecp256k1.js"; @@ -27,16 +26,12 @@ export class SignerCkbPrivateKey extends SignerCkbPublicKey { const signature = secp256k1.sign( bytesFrom(message), bytesFrom(this.privateKey), + { + format: "recovered", + prehash: false, + }, ); - const { r, s, recovery } = signature; - - return hexFrom( - bytesConcat( - numBeToBytes(r, 32), - numBeToBytes(s, 32), - numBeToBytes(recovery, 1), - ), - ); + return hexFrom(bytesConcat(signature.slice(1), signature.slice(0, 1))); } async signMessageRaw(message: string | BytesLike): Promise { diff --git a/packages/core/src/signer/ckb/verifyCkbSecp256k1.ts b/packages/core/src/signer/ckb/verifyCkbSecp256k1.ts index c5e268e5c..28244e1b6 100644 --- a/packages/core/src/signer/ckb/verifyCkbSecp256k1.ts +++ b/packages/core/src/signer/ckb/verifyCkbSecp256k1.ts @@ -1,8 +1,7 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; -import { BytesLike, bytesFrom } from "../../bytes/index.js"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; +import { bytesConcat, bytesFrom, BytesLike } from "../../bytes/index.js"; import { hashCkb } from "../../hasher/index.js"; import { Hex, hexFrom } from "../../hex/index.js"; -import { numFrom } from "../../num/index.js"; /** * @public @@ -21,15 +20,12 @@ export function verifyMessageCkbSecp256k1( signature: string, publicKey: string, ): boolean { - const signatureBytes = bytesFrom(signature); + const raw = bytesFrom(signature); + return secp256k1.verify( - new secp256k1.Signature( - numFrom(signatureBytes.slice(0, 32)), - numFrom(signatureBytes.slice(32, 64)), - ) - .addRecoveryBit(Number(numFrom(signatureBytes.slice(64, 65)))) - .toBytes(), + bytesConcat(raw.slice(64), raw.slice(0, 64)), bytesFrom(messageHashCkbSecp256k1(message)), bytesFrom(publicKey), + { format: "recovered", prehash: false }, ); } diff --git a/packages/core/src/signer/doge/signerDogePrivateKey.ts b/packages/core/src/signer/doge/signerDogePrivateKey.ts index ad5e36d00..b1c2988a8 100644 --- a/packages/core/src/signer/doge/signerDogePrivateKey.ts +++ b/packages/core/src/signer/doge/signerDogePrivateKey.ts @@ -1,4 +1,4 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; import { Bytes, bytesConcat, @@ -87,10 +87,13 @@ export class SignerDogePrivateKey extends SignerDoge { const signature = secp256k1.sign( messageHashDogeEcdsa(challenge), this.privateKey, + { + format: "recovered", + prehash: false, + }, ); - return bytesTo( - bytesConcat([31 + signature.recovery], signature.toCompactRawBytes()), + bytesConcat([31 + Number(signature[0])], signature.slice(1)), "base64", ); } diff --git a/packages/core/src/signer/doge/verify.ts b/packages/core/src/signer/doge/verify.ts index b9d586bfd..561be254f 100644 --- a/packages/core/src/signer/doge/verify.ts +++ b/packages/core/src/signer/doge/verify.ts @@ -1,4 +1,4 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; import { Bytes, bytesFrom, BytesLike } from "../../bytes/index.js"; import { hexFrom } from "../../hex/index.js"; import { @@ -38,18 +38,17 @@ export function verifyMessageDogeEcdsa( const challenge = typeof message === "string" ? message : hexFrom(message).slice(2); const signatureBytes = bytesFrom(signature, "base64"); - const recoveryBit = signatureBytes[0]; - const rawSign = signatureBytes.slice(1); - - const sig = secp256k1.Signature.fromCompact( - hexFrom(rawSign).slice(2), - ).addRecoveryBit(recoveryBit - 31); + signatureBytes[0] -= 31; return ( btcPublicKeyFromP2pkhAddress(address) === hexFrom( btcEcdsaPublicKeyHash( - sig.recoverPublicKey(messageHashDogeEcdsa(challenge)).toHex(), + secp256k1.recoverPublicKey( + signatureBytes, + messageHashDogeEcdsa(challenge), + { prehash: false }, + ), ), ) ); diff --git a/packages/core/src/signer/nostr/signerNostrPrivateKey.ts b/packages/core/src/signer/nostr/signerNostrPrivateKey.ts index b299596fe..97fe90603 100644 --- a/packages/core/src/signer/nostr/signerNostrPrivateKey.ts +++ b/packages/core/src/signer/nostr/signerNostrPrivateKey.ts @@ -1,7 +1,8 @@ -import { schnorr } from "@noble/curves/secp256k1"; +import { schnorr } from "@noble/curves/secp256k1.js"; import { bech32 } from "bech32"; +import { Bytes, bytesFrom, BytesLike } from "../../bytes/index.js"; import { Client } from "../../client/index.js"; -import { Hex, hexFrom, HexLike } from "../../hex/index.js"; +import { hexFrom } from "../../hex/index.js"; import { NostrEvent } from "./signerNostr.js"; import { SignerNostrPublicKeyReadonly } from "./signerNostrPublicKeyReadonly.js"; import { nostrEventHash } from "./verify.js"; @@ -11,22 +12,22 @@ import { nostrEventHash } from "./verify.js"; * Support nsec and hex format */ export class SignerNostrPrivateKey extends SignerNostrPublicKeyReadonly { - private readonly privateKey: Hex; + private readonly privateKey: Bytes; - constructor(client: Client, privateKeyLike: HexLike) { + constructor(client: Client, privateKeyLike: BytesLike) { const privateKey = (() => { if ( typeof privateKeyLike === "string" && privateKeyLike.startsWith("nsec") ) { const { words } = bech32.decode(privateKeyLike); - return hexFrom(bech32.fromWords(words)); + return bytesFrom(bech32.fromWords(words)); } - return hexFrom(privateKeyLike); + return bytesFrom(privateKeyLike); })(); - super(client, schnorr.getPublicKey(privateKey.slice(2))); + super(client, schnorr.getPublicKey(privateKey)); this.privateKey = privateKey; } @@ -34,7 +35,7 @@ export class SignerNostrPrivateKey extends SignerNostrPublicKeyReadonly { async signNostrEvent(event: NostrEvent): Promise> { const pubkey = (await this.getNostrPublicKey()).slice(2); const eventHash = nostrEventHash({ ...event, pubkey }); - const signature = schnorr.sign(eventHash, this.privateKey.slice(2)); + const signature = schnorr.sign(eventHash, this.privateKey); return { ...event, diff --git a/packages/core/src/signer/nostr/verify.ts b/packages/core/src/signer/nostr/verify.ts index 879de0a70..da2db9b7e 100644 --- a/packages/core/src/signer/nostr/verify.ts +++ b/packages/core/src/signer/nostr/verify.ts @@ -1,4 +1,4 @@ -import { schnorr } from "@noble/curves/secp256k1"; +import { schnorr } from "@noble/curves/secp256k1.js"; import { sha256 } from "@noble/hashes/sha2.js"; import { bech32 } from "bech32"; import { Bytes, BytesLike, bytesFrom } from "../../bytes/index.js"; @@ -65,7 +65,7 @@ export function verifyMessageNostrEvent( const eventHash = nostrEventHash({ ...event, pubkey }); try { - return schnorr.verify(hexFrom(signature).slice(2), eventHash, pubkey); + return schnorr.verify(bytesFrom(signature), eventHash, bytesFrom(pubkey)); } catch (_) { return false; } diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index 33ec4e10a..623275229 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -54,7 +54,7 @@ "@ckb-ccc/core": "workspace:*", "@ckb-ccc/type-id": "workspace:*", "@ipld/dag-cbor": "^9.2.5", - "@noble/curves": "^1.9.7" + "@noble/curves": "^2.2.0" }, "packageManager": "pnpm@11.8.0", "types": "./dist.commonjs/index.d.ts" diff --git a/packages/did-ckb/src/plc/index.ts b/packages/did-ckb/src/plc/index.ts index d5d86805f..076c67c56 100644 --- a/packages/did-ckb/src/plc/index.ts +++ b/packages/did-ckb/src/plc/index.ts @@ -1,6 +1,6 @@ import { ccc } from "@ckb-ccc/core"; -import { p256 } from "@noble/curves/p256"; -import { secp256k1 } from "@noble/curves/secp256k1"; +import { p256 } from "@noble/curves/nist.js"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; /** * Minimal did:plc helpers, scoped to what a did:ckb migration needs: @@ -148,13 +148,17 @@ export function signRotationHash( throw new Error(`Expected 32-byte private key, got ${priv.length}`); } if (curve === "secp256k1") { - return secp256k1 - .sign(hash, priv, { prehash: true, lowS: true }) - .toCompactRawBytes(); - } - return p256 - .sign(hash, priv, { prehash: true, lowS: true }) - .toCompactRawBytes(); + return secp256k1.sign(hash, priv, { + prehash: true, + lowS: true, + format: "compact", + }); + } + return p256.sign(hash, priv, { + prehash: true, + lowS: true, + format: "compact", + }); } /** diff --git a/packages/did-ckb/src/plc/plc.test.ts b/packages/did-ckb/src/plc/plc.test.ts index 5614245cf..64e28d49b 100644 --- a/packages/did-ckb/src/plc/plc.test.ts +++ b/packages/did-ckb/src/plc/plc.test.ts @@ -1,4 +1,4 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; import { describe, expect, it } from "vitest"; import { getGenesisOperation, diff --git a/packages/examples/package.json b/packages/examples/package.json index 226167c12..9883a97ad 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -32,8 +32,8 @@ "dependencies": { "@ckb-ccc/ccc": "workspace:*", "@ckb-ccc/playground": "file:src/playground", - "@noble/curves": "^1.9.7", - "@noble/hashes": "^1.8.0" + "@noble/curves": "^2.2.0", + "@noble/hashes": "^2.2.0" }, "packageManager": "pnpm@11.8.0" } diff --git a/packages/examples/src/createDidWithLocalId.ts b/packages/examples/src/createDidWithLocalId.ts index 957e4b087..bd1947119 100644 --- a/packages/examples/src/createDidWithLocalId.ts +++ b/packages/examples/src/createDidWithLocalId.ts @@ -1,13 +1,16 @@ import { ccc } from "@ckb-ccc/ccc"; import { render, signer } from "@ckb-ccc/playground"; -import { secp256k1 } from "@noble/curves/secp256k1"; -import { sha256 } from "@noble/hashes/sha2"; +import { secp256k1 } from "@noble/curves/secp256k1.js"; +import { sha256 } from "@noble/hashes/sha2.js"; // From https://github.com/bluesky-social/atproto/blob/main/packages/crypto function plcSign(key: ccc.BytesLike, msg: ccc.BytesLike): ccc.Bytes { const msgHash = sha256(ccc.bytesFrom(msg)); - const sig = secp256k1.sign(msgHash, ccc.bytesFrom(key), { lowS: true }); - return sig.toBytes("compact"); + return secp256k1.sign(msgHash, ccc.bytesFrom(key), { + lowS: true, + format: "compact", + prehash: false, + }); } // Construct create did tx diff --git a/packages/playground/next.config.mjs b/packages/playground/next.config.mjs index ea5cd9ba5..ded43ebc7 100644 --- a/packages/playground/next.config.mjs +++ b/packages/playground/next.config.mjs @@ -6,6 +6,10 @@ const nextConfig = { loaders: ["raw-loader"], as: "*.mjs", }, + "*.d.mts": { + loaders: ["raw-loader"], + as: "*.mjs", + }, }, }, }; diff --git a/packages/playground/package.json b/packages/playground/package.json index ab02b69d6..791aed56a 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -17,8 +17,8 @@ "@monaco-editor/react": "^4.7.0", "@nervina-labs/dob-render": "^0.2.5", "@next/third-parties": "^15.5.2", - "@noble/curves": "^1.9.7", - "@noble/hashes": "^1.8.0", + "@noble/curves": "^2.2.0", + "@noble/hashes": "^2.2.0", "@shikijs/monaco": "^3.12.0", "axios": "^1.11.0", "bech32": "^2.0.0", diff --git a/packages/playground/src/app/components/Editor.tsx b/packages/playground/src/app/components/Editor.tsx index fc1416217..5da1dbd9e 100644 --- a/packages/playground/src/app/components/Editor.tsx +++ b/packages/playground/src/app/components/Editor.tsx @@ -5,12 +5,14 @@ import { editor } from "monaco-editor"; import { useEffect, useRef, useState } from "react"; import { createHighlighter } from "shiki"; +const COMMON_REGEX = /^\.\/(.*\.d\.ts|.*\.d\.mts|package.json)$/; + const EXTRA_SOURCES = [ { files: require.context( "../../../node_modules/@types/react", true, - /^\.\/(.*\.d\.ts|package.json)$/, + COMMON_REGEX, ), name: "@types/react", }, @@ -18,7 +20,7 @@ const EXTRA_SOURCES = [ files: require.context( "../../../../", true, - /^\.\/[^\/]*\/(dist\.commonjs\/.*\.d\.ts|package.json)$/, + /^\.\/[^\/]*\/(dist\/(.*\.d\.ts|.*\.d\.mts)|package.json)$/, ), name: "@ckb-ccc", }, @@ -26,7 +28,7 @@ const EXTRA_SOURCES = [ files: require.context( "../../../node_modules/@nervina-labs/dob-render", true, - /^\.\/(.*\.d\.ts|package.json)$/, + COMMON_REGEX, ), name: "@nervina-labs/dob-render", }, @@ -34,7 +36,7 @@ const EXTRA_SOURCES = [ files: require.context( "../../../node_modules/@noble/hashes", true, - /^\.\/(.*\.d\.ts|package.json)$/, + COMMON_REGEX, ), name: "@noble/hashes", }, @@ -42,7 +44,7 @@ const EXTRA_SOURCES = [ files: require.context( "../../../node_modules/@noble/curves", true, - /^\.\/(.*\.d\.ts|package.json)$/, + COMMON_REGEX, ), name: "@noble/curves", }, @@ -129,7 +131,7 @@ export function Editor({ ...monaco.languages.typescript.typescriptDefaults.getCompilerOptions(), module: monaco.languages.typescript.ModuleKind.ESNext, // eslint-disable-next-line @typescript-eslint/no-explicit-any - moduleResolution: 99 as any, // NodeNext + moduleResolution: 100 as any, // Bundler noImplicitAny: true, strictNullChecks: true, jsx: monaco.languages.typescript.JsxEmit.ReactJSX, diff --git a/packages/playground/src/app/execute/index.tsx b/packages/playground/src/app/execute/index.tsx index f913442eb..7118da37d 100644 --- a/packages/playground/src/app/execute/index.tsx +++ b/packages/playground/src/app/execute/index.tsx @@ -15,8 +15,8 @@ const LIBS_MAP_ = new Map(); const LIBS = await Promise.all( ( [ - ["@noble/curves/secp256k1"], - ["@noble/hashes/sha2"], + ["@noble/curves/secp256k1.js"], + ["@noble/hashes/sha2.js"], ["@ckb-ccc/ccc", "@ckb-ccc/core"], ["@ckb-ccc/ccc/advanced", "@ckb-ccc/core/advanced"], ["@nervina-labs/dob-render"], diff --git a/packages/tests/package.json b/packages/tests/package.json index 4f1b04aae..41c4ac082 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -14,6 +14,7 @@ "test": "node ./tests/cjs.test.cjs && tsx ./tests/esm.test.mts" }, "devDependencies": { + "@ckb-ccc/ccc": "workspace:*", "@eslint/js": "^9.34.0", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", @@ -22,8 +23,7 @@ "prettier-plugin-organize-imports": "^4.2.0", "tsx": "^4.20.5", "typescript": "^5.9.2", - "typescript-eslint": "^8.41.0", - "@ckb-ccc/ccc": "workspace:*" + "typescript-eslint": "^8.41.0" }, "packageManager": "pnpm@11.8.0" } diff --git a/packages/tests/tests/esm.test.mts b/packages/tests/tests/esm.test.mts index 51f5b9bfd..59a4a6ebc 100644 --- a/packages/tests/tests/esm.test.mts +++ b/packages/tests/tests/esm.test.mts @@ -1,11 +1,12 @@ import { ccc } from "@ckb-ccc/ccc"; import assert from "node:assert/strict"; +import { fileURLToPath } from "url"; import path from "path"; assert.ok(ccc, "CCC package should be imported successfully in ESM"); assert.strictEqual( import.meta.resolve("@ckb-ccc/ccc"), - `file://${path.join(import.meta.dirname, "../../ccc/dist/index.js")}`, + `file://${path.join(path.dirname(fileURLToPath(import.meta.url)), "../../ccc/dist/index.js")}`, "CCC package should be imported from dist in ESM", ); console.log("ESM require test passed"); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 954a4ef0f..3da76add2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,37 +13,37 @@ importers: version: 0.5.1 '@changesets/cli': specifier: ^2.29.6 - version: 2.29.6(@types/node@24.3.0) + version: 2.31.0(@types/node@25.9.1) '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) jest: specifier: 30.1.1 - version: 30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) + version: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) ts-jest: specifier: ^29.4.1 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.1)(@jest/types@30.0.5)(babel-jest@30.1.1(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)))(typescript@5.9.2) typedoc: specifier: 0.28.7 version: 0.28.7(typescript@5.9.2) typedoc-material-theme: specifier: ^1.4.0 - version: 1.4.0(typedoc@0.28.7(typescript@5.9.2)) + version: 1.4.1(typedoc@0.28.7(typescript@5.9.2)) typedoc-plugin-extras: specifier: ^4.0.1 version: 4.0.1(typedoc@0.28.7(typescript@5.9.2)) typedoc-plugin-ga: specifier: ^1.0.5 - version: 1.0.5(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@5.9.2))(typescript@5.9.2) + version: 1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@5.9.2))(typescript@5.9.2) typescript: specifier: ^5.9.2 version: 5.9.2 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/ccc: dependencies: @@ -229,14 +229,14 @@ importers: specifier: ^1.1.2 version: 1.1.2(typescript@5.9.2) '@noble/ciphers': - specifier: ^0.5.3 - version: 0.5.3 + specifier: ^2.2.0 + version: 2.2.0 '@noble/curves': - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^2.2.0 + version: 2.2.0 '@noble/hashes': - specifier: ^1.8.0 - version: 1.8.0 + specifier: ^2.2.0 + version: 2.2.0 bech32: specifier: ^2.0.0 version: 2.0.0 @@ -270,25 +270,25 @@ importers: version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.8.4) prettier: specifier: ^3.6.2 - version: 3.6.2 + version: 3.8.4 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + version: 4.2.0(prettier@3.8.4)(typescript@5.9.2) tsdown: specifier: 0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)) + version: 0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: specifier: ^5.9.2 version: 5.9.2 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/demo: dependencies: @@ -297,16 +297,16 @@ importers: version: 1.0.8(@types/react@19.2.15) '@next/third-parties': specifier: ^16.0.10 - version: 16.0.10(next@16.0.10(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6) + version: 16.0.10(next@16.0.10(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6) '@uiw/react-json-view': specifier: 2.0.0-alpha.37 - version: 2.0.0-alpha.37(@babel/runtime@7.28.4)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 2.0.0-alpha.37(@babel/runtime@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) lucide-react: specifier: ^0.542.0 version: 0.542.0(react@19.2.6) next: specifier: 16.0.10 - version: 16.0.10(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 16.0.10(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: specifier: ^19.2.5 version: 19.2.6 @@ -408,8 +408,8 @@ importers: specifier: ^9.2.5 version: 9.2.5 '@noble/curves': - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^2.2.0 + version: 2.2.0 devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -434,7 +434,7 @@ importers: version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) tsdown: specifier: 0.19.0-beta.3 - version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)(typescript@5.9.2) + version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)(typescript@5.9.2) typescript: specifier: ^5.9.2 version: 5.9.2 @@ -443,7 +443,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/docs: dependencies: @@ -452,13 +452,13 @@ importers: version: 3.1.18 fumadocs-core: specifier: 16.8.5 - version: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) + version: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) fumadocs-mdx: specifier: 14.3.2 - version: 14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) fumadocs-ui: specifier: 16.8.5 - version: 16.8.5(@tailwindcss/oxide@4.3.0)(@types/mdx@2.0.13)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(tailwindcss@4.3.0) + version: 16.8.5(@tailwindcss/oxide@4.3.0)(@types/mdx@2.0.13)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(tailwindcss@4.3.0) lucide-react: specifier: ^1.11.0 version: 1.17.0(react@19.2.6) @@ -467,7 +467,7 @@ importers: version: 11.15.0 next: specifier: 16.2.4 - version: 16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -555,11 +555,11 @@ importers: specifier: file:src/playground version: file:packages/examples/src/playground '@noble/curves': - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^2.2.0 + version: 2.2.0 '@noble/hashes': - specifier: ^1.8.0 - version: 1.8.0 + specifier: ^2.2.0 + version: 2.2.0 devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -690,7 +690,7 @@ importers: version: 7.1.4 ts-jest: specifier: ^29.4.1 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.1)(@jest/types@30.0.5)(babel-jest@30.1.1(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)))(typescript@5.9.2) ts-loader: specifier: ^9.5.4 version: 9.5.4(typescript@5.9.2)(webpack@5.100.2) @@ -904,13 +904,13 @@ importers: version: 0.2.5(satori@0.10.14) '@next/third-parties': specifier: ^15.5.2 - version: 15.5.2(next@16.0.10(@babel/core@7.28.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 15.5.2(next@16.0.10(@babel/core@7.29.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) '@noble/curves': - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^2.2.0 + version: 2.2.0 '@noble/hashes': - specifier: ^1.8.0 - version: 1.8.0 + specifier: ^2.2.0 + version: 2.2.0 '@shikijs/monaco': specifier: ^3.12.0 version: 3.12.0 @@ -934,7 +934,7 @@ importers: version: 0.52.2 next: specifier: 16.0.10 - version: 16.0.10(@babel/core@7.28.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 16.0.10(@babel/core@7.29.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -1133,7 +1133,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/ssri: dependencies: @@ -1237,7 +1237,7 @@ importers: version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) tsdown: specifier: 0.19.0-beta.3 - version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)(typescript@5.9.2) + version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)(typescript@5.9.2) typescript: specifier: ^5.9.2 version: 5.9.2 @@ -1246,7 +1246,7 @@ importers: version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/udt: dependencies: @@ -1505,87 +1505,82 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.3': - resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} '@babel/generator@8.0.0': resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@8.0.0': resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.2': resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.3': - resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} '@babel/highlight@7.25.9': resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} hasBin: true @@ -1615,8 +1610,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1631,8 +1626,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1679,34 +1674,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.3': - resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.3': - resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} '@babel/types@8.0.0': @@ -1729,11 +1716,11 @@ packages: '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@changesets/apply-release-plan@7.1.1': + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + '@changesets/assemble-release-plan@6.0.10': + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} @@ -1741,24 +1728,24 @@ packages: '@changesets/changelog-github@0.5.1': resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} - '@changesets/cli@2.29.6': - resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==} + '@changesets/cli@2.31.0': + resolution: {integrity: sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==} hasBin: true - '@changesets/config@3.1.1': - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + '@changesets/config@3.1.4': + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + '@changesets/get-dependents-graph@2.1.4': + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.13': - resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} + '@changesets/get-release-plan@4.0.16': + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -1769,14 +1756,14 @@ packages: '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.1': - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} '@changesets/pre@2.0.2': resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - '@changesets/read@0.6.5': - resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} '@changesets/should-skip-package@0.1.2': resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} @@ -1844,11 +1831,14 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} @@ -1856,14 +1846,20 @@ packages: '@emnapi/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.25.9': - resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1874,8 +1870,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.9': - resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1886,8 +1888,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.9': - resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1898,8 +1906,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.9': - resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1910,8 +1924,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.9': - resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1922,8 +1942,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.9': - resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1934,8 +1960,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.9': - resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1946,8 +1978,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.9': - resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1958,8 +1996,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.9': - resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1970,8 +2014,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.9': - resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1982,8 +2032,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.9': - resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1994,8 +2050,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.9': - resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -2006,8 +2068,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.9': - resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -2018,8 +2086,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.9': - resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -2030,8 +2104,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.9': - resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -2042,8 +2122,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.9': - resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -2054,8 +2140,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.9': - resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -2066,8 +2158,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.9': - resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -2078,8 +2176,14 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -2090,8 +2194,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.9': - resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -2102,8 +2212,14 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.9': - resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -2114,8 +2230,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.9': - resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -2126,8 +2248,14 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.9': - resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -2138,8 +2266,14 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.9': - resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2150,8 +2284,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.9': - resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2162,8 +2302,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.9': - resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2180,10 +2326,20 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2255,8 +2411,8 @@ packages: tailwindcss: optional: true - '@gerrit0/mini-shiki@3.12.0': - resolution: {integrity: sha512-CF1vkfe2ViPtmoFEvtUWilEc4dOCiFzV8+J7/vEISSsslKQ97FjeTPNMCqUhZEiKySmKRgK3UO/CxtkyOp7DvA==} + '@gerrit0/mini-shiki@3.23.0': + resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} '@headlessui/react@2.2.7': resolution: {integrity: sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg==} @@ -2503,8 +2659,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@1.0.1': - resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2601,14 +2757,6 @@ packages: resolution: {integrity: sha512-84wSr4jv30biui7endhobYhXBQzQE4c/wdoWlFrKcfiwH+ofaPg8fwsM8okX9cOzkkrsAsNdDyH3ou+kiLquwQ==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2621,8 +2769,8 @@ packages: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} '@jest/console@30.1.1': @@ -2670,6 +2818,10 @@ packages: resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/pattern@30.4.0': + resolution: {integrity: sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/reporters@30.1.1': resolution: {integrity: sha512-Hb2Bq80kahOC6Sv2waEaH1rEU6VdFcM6WHaRBWQF9tf30+nJHxhl/Upbgo9+25f0mOgbphxvbwSMjSgy9gW/FA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2683,6 +2835,10 @@ packages: resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/schemas@30.4.1': + resolution: {integrity: sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/snapshot-utils@30.1.1': resolution: {integrity: sha512-TkVBc9wuN22TT8hESRFmjjg/xIMu7z0J3UDYtIRydzCqlLPTB7jK1DDBKdnTUZ4zL3z3rnPpzV6rL1Uzh87sXg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2703,10 +2859,18 @@ packages: resolution: {integrity: sha512-PHIA2AbAASBfk6evkNifvmx9lkOSkmvaQoO6VSpuL8+kQqDMHeDoJ7RU3YP1wWAMD7AyQn9UL5iheuFYCC4lqQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/transform@30.4.1': + resolution: {integrity: sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@30.0.5': resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@30.4.1': + resolution: {integrity: sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@joyid/ckb@1.1.2': resolution: {integrity: sha512-+e+ISF566zaKNhKNSSS5kBw8or4Kb5Xqxe/2jVkUXKkqVHSS02Trrqe0g4IjSyeN9bszzolr1XgStv2hz62tqA==} @@ -2729,8 +2893,8 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.30': - resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2775,9 +2939,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.1.5': resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} peerDependencies: @@ -2997,6 +3158,10 @@ packages: '@noble/ciphers@0.5.3': resolution: {integrity: sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==} + '@noble/ciphers@2.2.0': + resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==} + engines: {node: '>= 20.19.0'} + '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} @@ -3008,6 +3173,10 @@ packages: resolution: {integrity: sha512-RiwZZeJnsTnhT+/gg2KvITJZhK5oagQrpZo+yQyd3mv3D5NAG2qEeEHpw7IkXRlpkoD45wl2o4ydHAvY9wyEfw==} engines: {node: '>= 20.19.0'} + '@noble/curves@2.2.0': + resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} + engines: {node: '>= 20.19.0'} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -3020,6 +3189,10 @@ packages: resolution: {integrity: sha512-h8VUBlE8R42+XIDO229cgisD287im3kdY6nbNZJFjc6ZvKIXPYXe6Vc/t+kyjFdMFyt5JpapzTsEg8n63w5/lw==} engines: {node: '>= 20.19.0'} + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3066,6 +3239,10 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} @@ -3653,114 +3830,141 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@rollup/rollup-android-arm-eabi@4.49.0': - resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} + '@rollup/rollup-android-arm-eabi@4.62.2': + resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.49.0': - resolution: {integrity: sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==} + '@rollup/rollup-android-arm64@4.62.2': + resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.49.0': - resolution: {integrity: sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==} + '@rollup/rollup-darwin-arm64@4.62.2': + resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.49.0': - resolution: {integrity: sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==} + '@rollup/rollup-darwin-x64@4.62.2': + resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.49.0': - resolution: {integrity: sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==} + '@rollup/rollup-freebsd-arm64@4.62.2': + resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.49.0': - resolution: {integrity: sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==} + '@rollup/rollup-freebsd-x64@4.62.2': + resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': - resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==} + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.49.0': - resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==} + '@rollup/rollup-linux-arm-musleabihf@4.62.2': + resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.49.0': - resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==} + '@rollup/rollup-linux-arm64-gnu@4.62.2': + resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.49.0': - resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==} + '@rollup/rollup-linux-arm64-musl@4.62.2': + resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': - resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==} + '@rollup/rollup-linux-loong64-gnu@4.62.2': + resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.49.0': - resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==} + '@rollup/rollup-linux-loong64-musl@4.62.2': + resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.62.2': + resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.49.0': - resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==} + '@rollup/rollup-linux-ppc64-musl@4.62.2': + resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.62.2': + resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.49.0': - resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==} + '@rollup/rollup-linux-riscv64-musl@4.62.2': + resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.49.0': - resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==} + '@rollup/rollup-linux-s390x-gnu@4.62.2': + resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.49.0': - resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==} + '@rollup/rollup-linux-x64-gnu@4.62.2': + resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.49.0': - resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==} + '@rollup/rollup-linux-x64-musl@4.62.2': + resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.49.0': - resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==} + '@rollup/rollup-openbsd-x64@4.62.2': + resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.2': + resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.2': + resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.49.0': - resolution: {integrity: sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==} + '@rollup/rollup-win32-ia32-msvc@4.62.2': + resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.49.0': - resolution: {integrity: sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==} + '@rollup/rollup-win32-x64-gnu@4.62.2': + resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.2': + resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==} cpu: [x64] os: [win32] @@ -3793,6 +3997,9 @@ packages: '@shikijs/engine-oniguruma@3.12.0': resolution: {integrity: sha512-IfDl3oXPbJ/Jr2K8mLeQVpnF+FxjAc7ZPDkgr38uEw/Bg3u638neSrpwqOTnTHXt1aU0Fk1/J+/RBdst1kVqLg==} + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + '@shikijs/engine-oniguruma@4.1.0': resolution: {integrity: sha512-axLpjVs45YBvvINa+dJF+NPW+KtFkNXsFr4SDw2BMj9GdeMnGxVB9PQb2xXlJYovslt/nz6giedAyOANkfc7hg==} engines: {node: '>=20'} @@ -3800,6 +4007,9 @@ packages: '@shikijs/langs@3.12.0': resolution: {integrity: sha512-HIca0daEySJ8zuy9bdrtcBPhcYBo8wR1dyHk1vKrOuwDsITtZuQeGhEkcEfWc6IDyTcom7LRFCH6P7ljGSCEiQ==} + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + '@shikijs/langs@4.1.0': resolution: {integrity: sha512-nwOMruEkbgdZfQ/b8CgpNBVOpvG1k0N5tbmgiFeqsan401+x3ILqlzZJowSla4Agmq4hG2Uf2wh5jLTEhR8VSg==} engines: {node: '>=20'} @@ -3814,6 +4024,9 @@ packages: '@shikijs/themes@3.12.0': resolution: {integrity: sha512-/lxvQxSI5s4qZLV/AuFaA4Wt61t/0Oka/P9Lmpr1UV+HydNCczO3DMHOC/CsXCCpbv4Zq8sMD0cDa7mvaVoj0Q==} + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + '@shikijs/themes@4.1.0': resolution: {integrity: sha512-emCcTnUM7yO2wltYbaxm+yLvcCI4+h8XBKc4KmJ7EZUXoSGjcCHifkI//R4OFit9ewpg7H2/9tjOuXrT2v/Knw==} engines: {node: '>=20'} @@ -3821,6 +4034,9 @@ packages: '@shikijs/types@3.12.0': resolution: {integrity: sha512-jsFzm8hCeTINC3OCmTZdhR9DOl/foJWplH2Px0bTi4m8z59fnsueLsweX82oGcjRQ7mfQAluQYKGoH2VzsWY4A==} + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + '@shikijs/types@4.1.0': resolution: {integrity: sha512-3EQWX54fMpniOrDblzAhiwiJwpiTMW6+B9DWyUd9ska483tbayFYuw47UxwuPknI31bKnySfVQ/QW+jFL4rFdA==} engines: {node: '>=20'} @@ -3836,6 +4052,9 @@ packages: '@sinclair/typebox@0.34.40': resolution: {integrity: sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==} + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} + '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} @@ -4051,8 +4270,8 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -4063,9 +4282,6 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} - '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -4087,8 +4303,8 @@ packages: '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -4210,6 +4426,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/express-serve-static-core@5.0.7': resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} @@ -4282,6 +4501,9 @@ packages: '@types/node@25.9.1': resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} + '@types/node@26.0.0': + resolution: {integrity: sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4299,8 +4521,8 @@ packages: '@types/react@19.2.15': resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -4338,8 +4560,8 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -4528,106 +4750,126 @@ packages: resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} deprecated: Potential CWE-502 - Update to 1.3.1 or higher - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} cpu: [arm] os: [android] - '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} cpu: [arm64] os: [android] - '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} cpu: [arm64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} cpu: [arm64] os: [linux] libc: [musl] - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} cpu: [ppc64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} cpu: [riscv64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} cpu: [riscv64] os: [linux] libc: [musl] - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} cpu: [s390x] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} cpu: [x64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} cpu: [x64] os: [linux] libc: [musl] - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} cpu: [x64] os: [win32] @@ -4751,8 +4993,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} acorn@8.15.0: @@ -4760,6 +5002,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} @@ -4792,6 +5039,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -4835,10 +5085,6 @@ packages: resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} engines: {node: '>=14'} - ansis@4.2.0: - resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} - engines: {node: '>=14'} - ansis@4.3.1: resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} engines: {node: '>=14'} @@ -4962,14 +5208,24 @@ packages: peerDependencies: '@babel/core': ^7.11.0 - babel-plugin-istanbul@7.0.0: - resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==} + babel-jest@30.4.1: + resolution: {integrity: sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} engines: {node: '>=12'} babel-plugin-jest-hoist@30.0.1: resolution: {integrity: sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-jest-hoist@30.4.0: + resolution: {integrity: sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-preset-current-node-syntax@1.2.0: resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: @@ -4981,12 +5237,22 @@ packages: peerDependencies: '@babel/core': ^7.11.0 + babel-preset-jest@30.4.0: + resolution: {integrity: sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base-x@4.0.1: resolution: {integrity: sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==} @@ -5005,6 +5271,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + baseline-browser-mapping@2.10.38: + resolution: {integrity: sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==} + engines: {node: '>=6.0.0'} + hasBin: true + bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} @@ -5045,8 +5316,12 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -5060,6 +5335,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -5135,6 +5415,9 @@ packages: caniuse-lite@1.0.30001737: resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} + caniuse-lite@1.0.30001799: + resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==} + cborg@4.3.2: resolution: {integrity: sha512-l+QzebEAG0vb09YKkaOrMi2zmm80UNjmbvocMIeW5hO7JOXWdrQ/H49yOKfYX0MBgrj/KWgatBnEgRXyNyKD+A==} hasBin: true @@ -5170,8 +5453,8 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@2.1.0: - resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + chardet@2.2.0: + resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} @@ -5201,8 +5484,12 @@ packages: resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} engines: {node: '>=8'} - cjs-module-lexer@2.1.0: - resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + cjs-module-lexer@2.2.0: + resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} @@ -5258,8 +5545,8 @@ packages: collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -5588,11 +5875,20 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + dedent@1.7.2: + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -5628,9 +5924,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} @@ -5674,8 +5967,8 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + diff@4.0.4: + resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: @@ -5740,6 +6033,9 @@ packages: electron-to-chromium@1.5.211: resolution: {integrity: sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw==} + electron-to-chromium@1.5.376: + resolution: {integrity: sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==} + elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -5760,10 +6056,6 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - empathic@2.0.0: - resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} - engines: {node: '>=14'} - empathic@2.0.1: resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} engines: {node: '>=14'} @@ -5792,8 +6084,8 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-abstract@1.24.0: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} @@ -5839,8 +6131,13 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.9: - resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true @@ -5893,8 +6190,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-formatter-codeframe@7.32.1: - resolution: {integrity: sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==} + eslint-formatter-codeframe@7.32.2: + resolution: {integrity: sha512-0X5vEQeNniQRbGm+ec9Ow6LWj4RqZEcjPSfZ+t8qLPWqwyaBa67GrNetTxd0aYKoHrpbZeoRRlvA2gz9HujiEg==} engines: {node: ^10.12.0 || >=12.0.0} eslint-import-resolver-node@0.3.9: @@ -5970,6 +6267,20 @@ packages: eslint-config-prettier: optional: true + eslint-plugin-prettier@5.5.6: + resolution: {integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + eslint-plugin-react-hooks@7.0.1: resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} engines: {node: '>=18'} @@ -6051,6 +6362,10 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -6118,8 +6433,8 @@ packages: resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} expect@30.1.1: @@ -6162,8 +6477,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -6222,6 +6537,9 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -6448,11 +6766,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} - - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} get-tsconfig@5.0.0-beta.5: resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} @@ -6472,8 +6787,8 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true @@ -6524,8 +6839,8 @@ packages: hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + handlebars@4.7.9: + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} engines: {node: '>=0.4.7'} hasBin: true @@ -6567,6 +6882,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + hast-util-from-parse5@8.0.3: resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} @@ -6607,9 +6926,6 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hookable@6.0.1: - resolution: {integrity: sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==} - hookable@6.1.1: resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} @@ -6626,8 +6942,8 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - human-id@4.1.1: - resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} + human-id@4.2.0: + resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} hasBin: true human-signals@2.1.0: @@ -6638,6 +6954,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -6744,8 +7064,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} is-data-view@1.0.2: @@ -6974,6 +7294,10 @@ packages: resolution: {integrity: sha512-JLeM84kNjpRkggcGpQLsV7B8W4LNUWz7oDNVnY1Vjj22b5/fAb3kk3htiD+4Na8bmJmjJR7rBtS2Rmq/NEcADg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-haste-map@30.4.1: + resolution: {integrity: sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-leak-detector@30.1.0: resolution: {integrity: sha512-AoFvJzwxK+4KohH60vRuHaqXfWmeBATFZpzpmzNmYTtmRMiyGPVhkXpBqxUQunw+dQB48bDf4NpUs6ivVbRv1g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7003,6 +7327,10 @@ packages: resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-regex-util@30.4.0: + resolution: {integrity: sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-resolve-dependencies@30.1.1: resolution: {integrity: sha512-tRtaaoH8Ws1Gn1o/9pedt19dvVgr81WwdmvJSP9Ow3amOUOP2nN9j94u5jC9XlIfa2Q1FQKIWWQwL4ajqsjCGQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7027,6 +7355,10 @@ packages: resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@30.4.1: + resolution: {integrity: sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-validate@30.1.0: resolution: {integrity: sha512-7P3ZlCFW/vhfQ8pE7zW6Oi4EzvuB4sgR72Q1INfW9m0FGo0GADYlPwIkf4CyPq7wq85g+kPMtPOHNAdWHeBOaA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7043,6 +7375,10 @@ packages: resolution: {integrity: sha512-uvWcSjlwAAgIu133Tt77A05H7RIk3Ho8tZL50bQM2AkvLdluw9NG48lRCl3Dt+MOH719n/0nnb5YxUwcuJiKRA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-worker@30.4.1: + resolution: {integrity: sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest@30.1.1: resolution: {integrity: sha512-yC3JvpP/ZcAZX5rYCtXO/g9k6VTCQz0VFE2v1FpxytWzUqfDtu0XL/pwnNvptzYItvGwomh1ehomRNMOyhCJKw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7071,8 +7407,8 @@ packages: resolution: {integrity: sha512-S/6Oo7ruxx5k8m4qlMnbpwQdJjRsvvfcIhIk1dA9c5y5GNhYHKYKu9krEK3QgBax6CxJuf4gRL2opgLkdzWIKg==} engines: {node: '>=8.0.0'} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.0: @@ -7083,6 +7419,10 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + hasBin: true + jsbi@3.1.3: resolution: {integrity: sha512-nBJqA0C6Qns+ZxurbEoIR56wyjiUszpNy70FHvxO5ervMoCbZVE3z3kxr5nKGhlxr/9MhKTSUBs7cAwwuf3g9w==} @@ -7321,8 +7661,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + linkify-it@5.0.1: + resolution: {integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==} lit-element@4.2.1: resolution: {integrity: sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==} @@ -7408,9 +7748,6 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magic-string@0.30.18: - resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -7431,8 +7768,8 @@ packages: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + markdown-it@14.2.0: + resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==} hasBin: true markdown-table@3.0.4: @@ -7675,19 +8012,22 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} - engines: {node: 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -7697,6 +8037,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + minizlib@3.0.2: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} @@ -7769,8 +8113,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.3: - resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -7853,6 +8197,10 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.48: + resolution: {integrity: sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==} + engines: {node: '>=18'} + noms@0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} @@ -7899,9 +8247,6 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - obug@2.1.3: resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} @@ -8049,18 +8394,14 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} picomatch@4.0.2: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -8114,6 +8455,10 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} + prettier-plugin-organize-imports@4.2.0: resolution: {integrity: sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==} peerDependencies: @@ -8195,6 +8540,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.8.4: + resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==} + engines: {node: '>=14'} + hasBin: true + pretty-format@30.0.5: resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -8446,8 +8796,8 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true @@ -8524,8 +8874,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.49.0: - resolution: {integrity: sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==} + rollup@4.62.2: + resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -8600,11 +8950,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -8722,8 +9067,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.22: - resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -8902,6 +9247,10 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} @@ -8947,8 +9296,8 @@ packages: uglify-js: optional: true - terser@5.43.1: - resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + terser@5.48.0: + resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} hasBin: true @@ -8978,26 +9327,10 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} - - tinyexec@1.2.3: - resolution: {integrity: sha512-g62dB+w1/OEFnPvmX0yd/HnetYITOL+1nJW7kitOycOeAvmbWC/nu0fwmmQ/kupNojqExzyC/T++pST/jRJ2mQ==} - engines: {node: '>=18'} - tinyexec@1.2.4: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} - - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.16: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} @@ -9062,8 +9395,8 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-jest@29.4.1: - resolution: {integrity: sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==} + ts-jest@29.4.11: + resolution: {integrity: sha512-IrFl7l9AuB/qrNw5quqvAv/hmKMb8dhWOH4jQOGo0Oq8tCeo1O86/iTFG1FaRimgUkF13l4PcepO8ATFT6Ns4g==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -9074,7 +9407,7 @@ packages: esbuild: '*' jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: '>=4.3 <6' + typescript: '>=4.3 <7' peerDependenciesMeta: '@babel/core': optional: true @@ -9253,8 +9586,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typedoc-material-theme@1.4.0: - resolution: {integrity: sha512-TBoBpX/4zWO6l74/wBLivXHC2rIiD70KXMliYrw1KhcqdybyxkVBLP5z8KiJuNV8aQIeS+rK2QG6GSucQHJQDQ==} + typedoc-material-theme@1.4.1: + resolution: {integrity: sha512-/inKZw8SqZPt+pmawpMhDmXCJQyIm+fHFuGChioyJQICZcX2FyzpwZnyPWcZHmJ09upttWFhti4ZI3hESJNkSA==} engines: {node: '>=18.0.0', npm: '>=8.6.0'} peerDependencies: typedoc: ^0.25.13 || ^0.26.x || ^0.27.x || ^0.28.x @@ -9264,8 +9597,8 @@ packages: peerDependencies: typedoc: 0.27.x || 0.28.x - typedoc-plugin-ga@1.0.5: - resolution: {integrity: sha512-qXtCqjTA9mJmlqCNmdKMWS1HENzyBN+exgFW+0qCYTJ5kEatDlmo3/EUa/LvKkEsaqJgpqA43Jnq425bdRuNZQ==} + typedoc-plugin-ga@1.1.1: + resolution: {integrity: sha512-7p0an/76lFmK54QCPXMzVc54UAYVlzc6H7f1vx0esN6BLSswODyEu+LJqWVLIjltgj6kfnox49tYqlsKH1ep2A==} peerDependencies: typedoc: ^0.27.6 @@ -9333,9 +9666,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - unconfig-core@7.4.2: - resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} - unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} @@ -9351,6 +9681,9 @@ packages: undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} @@ -9390,8 +9723,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + unrs-resolver@1.12.2: + resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} unrun@0.2.22: resolution: {integrity: sha512-vlQce4gTLNyCZxGylEQXGG+fSrrEFWiM/L8aghtp+t6j8xXh+lmsBtQJknG7ZSvv7P+/MRgbQtHWHBWk981uTg==} @@ -9413,6 +9746,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -9499,8 +9838,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.1.3: - resolution: {integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==} + vite@7.3.5: + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -9711,8 +10050,8 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -9728,8 +10067,8 @@ packages: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} engines: {node: '>=12'} yn@3.1.1: @@ -9866,7 +10205,7 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@angular-devkit/core@19.2.15(chokidar@4.0.3)': dependencies: @@ -9904,7 +10243,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 - tinyexec: 1.0.2 + tinyexec: 1.2.4 '@babel/code-frame@7.12.11': dependencies: @@ -9916,42 +10255,40 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} - '@babel/core@7.28.3': + '@babel/core@7.29.7': dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) - '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.28.3': - dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 - jsesc: 3.1.0 - - '@babel/generator@7.28.5': + '@babel/generator@7.29.7': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/generator@8.0.0': @@ -9959,190 +10296,179 @@ snapshots: '@babel/parser': 8.0.0 '@babel/types': 8.0.0 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@types/jsesc': 2.5.1 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.29.7': dependencies: - '@babel/compat-data': 7.28.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.3 + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-globals@7.28.0': {} + '@babel/helper-globals@7.29.7': {} - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.29.7': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.5 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.3 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.29.7': {} - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} '@babel/helper-string-parser@8.0.0': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-identifier@8.0.2': {} - '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-validator-option@7.29.7': {} - '@babel/helpers@7.28.3': + '@babel/helpers@7.29.7': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 '@babel/highlight@7.25.9': dependencies: - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.28.3': + '@babel/parser@7.29.7': dependencies: - '@babel/types': 7.28.2 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.7 '@babel/parser@8.0.0': dependencies: '@babel/types': 8.0.0 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - '@babel/runtime@7.28.3': {} + '@babel/runtime@7.29.7': {} - '@babel/runtime@7.28.4': {} - - '@babel/template@7.27.2': + '@babel/template@7.29.7': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 - '@babel/traverse@7.28.3': + '@babel/traverse@7.29.7': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - debug: 4.4.1 + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.2': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@babel/types@7.28.5': + '@babel/types@7.29.7': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 '@babel/types@8.0.0': dependencies: @@ -10161,9 +10487,9 @@ snapshots: '@braintree/sanitize-url@7.1.2': {} - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.1.1': dependencies: - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.4 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.4 '@changesets/should-skip-package': 0.1.2 @@ -10175,16 +10501,16 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.8.5 - '@changesets/assemble-release-plan@6.0.9': + '@changesets/assemble-release-plan@6.0.10': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.4 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.2 + semver: 7.8.5 '@changesets/changelog-git@0.2.1': dependencies: @@ -10198,44 +10524,43 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.29.6(@types/node@24.3.0)': + '@changesets/cli@2.31.0(@types/node@25.9.1)': dependencies: - '@changesets/apply-release-plan': 7.0.12 - '@changesets/assemble-release-plan': 6.0.9 + '@changesets/apply-release-plan': 7.1.1 + '@changesets/assemble-release-plan': 6.0.10 '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.4 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.13 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/get-release-plan': 4.0.16 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.7 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.1(@types/node@24.3.0) + '@inquirer/external-editor': 1.0.3(@types/node@25.9.1) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 - ci-info: 3.9.0 enquirer: 2.4.1 fs-extra: 7.0.1 mri: 1.2.0 - p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.8.5 spawndamnit: 3.0.1 term-size: 2.2.1 transitivePeerDependencies: - '@types/node' - '@changesets/config@3.1.1': + '@changesets/config@3.1.4': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.4 '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 @@ -10245,12 +10570,12 @@ snapshots: dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.3': + '@changesets/get-dependents-graph@2.1.4': dependencies: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.2 + semver: 7.8.5 '@changesets/get-github-info@0.6.0': dependencies: @@ -10259,12 +10584,12 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.13': + '@changesets/get-release-plan@4.0.16': dependencies: - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.1 + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/config': 3.1.4 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.7 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -10282,10 +10607,10 @@ snapshots: dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.1': + '@changesets/parse@0.4.3': dependencies: '@changesets/types': 6.1.0 - js-yaml: 3.14.1 + js-yaml: 4.2.0 '@changesets/pre@2.0.2': dependencies: @@ -10294,11 +10619,11 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.5': + '@changesets/read@0.6.7': dependencies: '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.1 + '@changesets/parse': 0.4.3 '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 @@ -10317,7 +10642,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 fs-extra: 7.0.1 - human-id: 4.1.1 + human-id: 4.2.0 prettier: 2.8.8 '@chevrotain/types@11.1.2': {} @@ -10418,15 +10743,20 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 optional: true - '@emnapi/core@1.4.5': + '@emnapi/runtime@1.10.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 tslib: 2.8.1 optional: true @@ -10440,7 +10770,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true @@ -10450,179 +10780,264 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.9': + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/aix-ppc64@0.28.0': optional: true - '@esbuild/android-arm64@0.25.9': + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm64@0.28.0': optional: true - '@esbuild/android-arm@0.25.9': + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-arm@0.28.0': optional: true - '@esbuild/android-x64@0.25.9': + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.7': optional: true '@esbuild/android-x64@0.28.0': optional: true - '@esbuild/darwin-arm64@0.25.9': + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-arm64@0.28.0': optional: true - '@esbuild/darwin-x64@0.25.9': + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/darwin-x64@0.28.0': optional: true - '@esbuild/freebsd-arm64@0.25.9': + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.28.0': optional: true - '@esbuild/freebsd-x64@0.25.9': + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/freebsd-x64@0.28.0': optional: true - '@esbuild/linux-arm64@0.25.9': + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm64@0.28.0': optional: true - '@esbuild/linux-arm@0.25.9': + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-arm@0.28.0': optional: true - '@esbuild/linux-ia32@0.25.9': + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-ia32@0.28.0': optional: true - '@esbuild/linux-loong64@0.25.9': + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-loong64@0.28.0': optional: true - '@esbuild/linux-mips64el@0.25.9': + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-mips64el@0.28.0': optional: true - '@esbuild/linux-ppc64@0.25.9': + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-ppc64@0.28.0': optional: true - '@esbuild/linux-riscv64@0.25.9': + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-riscv64@0.28.0': optional: true - '@esbuild/linux-s390x@0.25.9': + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-s390x@0.28.0': optional: true - '@esbuild/linux-x64@0.25.9': + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/linux-x64@0.28.0': optional: true - '@esbuild/netbsd-arm64@0.25.9': + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.28.0': optional: true - '@esbuild/netbsd-x64@0.25.9': + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/netbsd-x64@0.28.0': optional: true - '@esbuild/openbsd-arm64@0.25.9': + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.28.0': optional: true - '@esbuild/openbsd-x64@0.25.9': + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.7': optional: true '@esbuild/openbsd-x64@0.28.0': optional: true - '@esbuild/openharmony-arm64@0.25.9': + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/openharmony-arm64@0.28.0': optional: true - '@esbuild/sunos-x64@0.25.9': + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/sunos-x64@0.28.0': optional: true - '@esbuild/win32-arm64@0.25.9': + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-arm64@0.28.0': optional: true - '@esbuild/win32-ia32@0.25.9': + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-ia32@0.28.0': optional: true - '@esbuild/win32-x64@0.25.9': + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.7': optional: true '@esbuild/win32-x64@0.28.0': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.7.0))': + dependencies: + eslint: 9.34.0(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.34.0(jiti@2.7.0))': dependencies: eslint: 9.34.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1 - minimatch: 3.1.2 + debug: 4.4.3 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -10634,14 +11049,14 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: - ajv: 6.12.6 - debug: 4.4.1 + ajv: 6.15.0 + debug: 4.4.3 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 + js-yaml: 4.2.0 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -10677,11 +11092,11 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-config-prettier: 9.1.2(eslint@8.57.1) - eslint-formatter-codeframe: 7.32.1 + eslint-formatter-codeframe: 7.32.2 eslint-plugin-mocha: 10.5.0(eslint@8.57.1) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) + eslint-plugin-prettier: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.4) eslint-plugin-unicorn: 49.0.0(eslint@8.57.1) - prettier: 3.6.2 + prettier: 3.8.4 transitivePeerDependencies: - '@types/eslint' - supports-color @@ -10717,12 +11132,12 @@ snapshots: '@tailwindcss/oxide': 4.3.0 tailwindcss: 4.3.0 - '@gerrit0/mini-shiki@3.12.0': + '@gerrit0/mini-shiki@3.23.0': dependencies: - '@shikijs/engine-oniguruma': 3.12.0 - '@shikijs/langs': 3.12.0 - '@shikijs/themes': 3.12.0 - '@shikijs/types': 3.12.0 + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 '@headlessui/react@2.2.7(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': @@ -10749,8 +11164,8 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1 - minimatch: 3.1.2 + debug: 4.4.3 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -10900,7 +11315,7 @@ snapshots: '@inquirer/editor@4.2.18(@types/node@24.3.0)': dependencies: '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/external-editor': 1.0.1(@types/node@24.3.0) + '@inquirer/external-editor': 1.0.3(@types/node@24.3.0) '@inquirer/type': 3.0.8(@types/node@24.3.0) optionalDependencies: '@types/node': 24.3.0 @@ -10913,13 +11328,20 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/external-editor@1.0.1(@types/node@24.3.0)': + '@inquirer/external-editor@1.0.3(@types/node@24.3.0)': dependencies: - chardet: 2.1.0 - iconv-lite: 0.6.3 + chardet: 2.2.0 + iconv-lite: 0.7.2 optionalDependencies: '@types/node': 24.3.0 + '@inquirer/external-editor@1.0.3(@types/node@25.9.1)': + dependencies: + chardet: 2.2.0 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 25.9.1 + '@inquirer/figures@1.0.13': {} '@inquirer/input@4.2.2(@types/node@24.3.0)': @@ -11010,12 +11432,6 @@ snapshots: cborg: 4.3.2 multiformats: 13.4.2 - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -11027,22 +11443,22 @@ snapshots: '@isaacs/fs-minipass@4.0.1': dependencies: - minipass: 7.1.2 + minipass: 7.1.3 '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 - '@istanbuljs/schema@0.1.3': {} + '@istanbuljs/schema@0.1.6': {} '@jest/console@30.1.1': dependencies: '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 chalk: 4.1.2 jest-message-util: 30.1.0 jest-util: 30.0.5 @@ -11056,14 +11472,50 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 4.3.0 + ci-info: 4.4.0 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.0.5 - jest-config: 30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) + jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) + jest-haste-map: 30.1.0 + jest-message-util: 30.1.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.1.0 + jest-resolve-dependencies: 30.1.1 + jest-runner: 30.1.1 + jest-runtime: 30.1.1 + jest-snapshot: 30.1.1 + jest-util: 30.0.5 + jest-validate: 30.1.0 + jest-watcher: 30.1.1 + micromatch: 4.0.8 + pretty-format: 30.0.5 + slash: 3.0.0 + transitivePeerDependencies: + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + '@jest/core@30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2))': + dependencies: + '@jest/console': 30.1.1 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.1.1 + '@jest/test-result': 30.1.1 + '@jest/transform': 30.1.1 + '@jest/types': 30.0.5 + '@types/node': 25.9.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 4.4.0 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-changed-files: 30.0.5 + jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) jest-haste-map: 30.1.0 jest-message-util: 30.1.0 jest-regex-util: 30.0.1 @@ -11090,7 +11542,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 jest-mock: 30.0.5 '@jest/expect-utils@30.1.1': @@ -11108,7 +11560,7 @@ snapshots: dependencies: '@jest/types': 30.0.5 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 jest-message-util: 30.1.0 jest-mock: 30.0.5 jest-util: 30.0.5 @@ -11129,6 +11581,12 @@ snapshots: '@types/node': 25.9.1 jest-regex-util: 30.0.1 + '@jest/pattern@30.4.0': + dependencies: + '@types/node': 25.9.1 + jest-regex-util: 30.4.0 + optional: true + '@jest/reporters@30.1.1': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -11136,12 +11594,12 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@jridgewell/trace-mapping': 0.3.30 - '@types/node': 24.3.0 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 25.9.1 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit-x: 0.2.2 - glob: 10.4.5 + glob: 10.5.0 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 @@ -11161,6 +11619,11 @@ snapshots: dependencies: '@sinclair/typebox': 0.34.40 + '@jest/schemas@30.4.1': + dependencies: + '@sinclair/typebox': 0.34.49 + optional: true + '@jest/snapshot-utils@30.1.1': dependencies: '@jest/types': 30.0.5 @@ -11170,7 +11633,7 @@ snapshots: '@jest/source-map@30.0.1': dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -11179,7 +11642,7 @@ snapshots: '@jest/console': 30.1.1 '@jest/types': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 '@jest/test-sequencer@30.1.1': dependencies: @@ -11190,10 +11653,10 @@ snapshots: '@jest/transform@30.1.1': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.29.7 '@jest/types': 30.0.5 - '@jridgewell/trace-mapping': 0.3.30 - babel-plugin-istanbul: 7.0.0 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -11208,6 +11671,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/transform@30.4.1': + dependencies: + '@babel/core': 7.29.7 + '@jest/types': 30.4.1 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-regex-util: 30.4.0 + jest-util: 30.4.1 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + optional: true + '@jest/types@30.0.5': dependencies: '@jest/pattern': 30.0.1 @@ -11215,8 +11698,19 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 25.9.1 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jest/types@30.4.1': + dependencies: + '@jest/pattern': 30.4.0 + '@jest/schemas': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.9.1 + '@types/yargs': 17.0.35 chalk: 4.1.2 + optional: true '@joyid/ckb@1.1.2(typescript@5.9.2)': dependencies: @@ -11240,23 +11734,23 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/source-map@0.3.11': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.30': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 @@ -11280,14 +11774,14 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.29.7 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.29.7 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -11298,11 +11792,11 @@ snapshots: '@mdx-js/mdx@3.1.1': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 - acorn: 8.15.0 + acorn: 8.17.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -11311,7 +11805,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.15.0) + recma-jsx: 1.0.1(acorn@8.17.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 @@ -11341,11 +11835,11 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@napi-rs/wasm-runtime@0.2.12': + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.7.1 - '@tybys/wasm-util': 0.10.0 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 optional: true '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': @@ -11533,20 +12027,22 @@ snapshots: '@next/swc-win32-x64-msvc@16.2.4': optional: true - '@next/third-parties@15.5.2(next@16.0.10(@babel/core@7.28.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + '@next/third-parties@15.5.2(next@16.0.10(@babel/core@7.29.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': dependencies: - next: 16.0.10(@babel/core@7.28.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.0.10(@babel/core@7.29.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 third-party-capital: 1.0.20 - '@next/third-parties@16.0.10(next@16.0.10(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)': + '@next/third-parties@16.0.10(next@16.0.10(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)': dependencies: - next: 16.0.10(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + next: 16.0.10(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 third-party-capital: 1.0.20 '@noble/ciphers@0.5.3': {} + '@noble/ciphers@2.2.0': {} + '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 @@ -11559,12 +12055,18 @@ snapshots: dependencies: '@noble/hashes': 2.0.0 + '@noble/curves@2.2.0': + dependencies: + '@noble/hashes': 2.2.0 + '@noble/hashes@1.3.2': {} '@noble/hashes@1.8.0': {} '@noble/hashes@2.0.0': {} + '@noble/hashes@2.2.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11575,7 +12077,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@nolyfill/is-core-module@1.0.39': {} @@ -11602,6 +12104,8 @@ snapshots: '@pkgr/core@0.2.9': {} + '@pkgr/core@0.3.6': {} + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 @@ -12108,64 +12612,79 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@rollup/rollup-android-arm-eabi@4.49.0': + '@rollup/rollup-android-arm-eabi@4.62.2': + optional: true + + '@rollup/rollup-android-arm64@4.62.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.62.2': + optional: true + + '@rollup/rollup-darwin-x64@4.62.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.62.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.62.2': optional: true - '@rollup/rollup-android-arm64@4.49.0': + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': optional: true - '@rollup/rollup-darwin-arm64@4.49.0': + '@rollup/rollup-linux-arm-musleabihf@4.62.2': optional: true - '@rollup/rollup-darwin-x64@4.49.0': + '@rollup/rollup-linux-arm64-gnu@4.62.2': optional: true - '@rollup/rollup-freebsd-arm64@4.49.0': + '@rollup/rollup-linux-arm64-musl@4.62.2': optional: true - '@rollup/rollup-freebsd-x64@4.49.0': + '@rollup/rollup-linux-loong64-gnu@4.62.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': + '@rollup/rollup-linux-loong64-musl@4.62.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.49.0': + '@rollup/rollup-linux-ppc64-gnu@4.62.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.49.0': + '@rollup/rollup-linux-ppc64-musl@4.62.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.49.0': + '@rollup/rollup-linux-riscv64-gnu@4.62.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': + '@rollup/rollup-linux-riscv64-musl@4.62.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.49.0': + '@rollup/rollup-linux-s390x-gnu@4.62.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.49.0': + '@rollup/rollup-linux-x64-gnu@4.62.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.49.0': + '@rollup/rollup-linux-x64-musl@4.62.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.49.0': + '@rollup/rollup-openbsd-x64@4.62.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.49.0': + '@rollup/rollup-openharmony-arm64@4.62.2': optional: true - '@rollup/rollup-linux-x64-musl@4.49.0': + '@rollup/rollup-win32-arm64-msvc@4.62.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.49.0': + '@rollup/rollup-win32-ia32-msvc@4.62.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.49.0': + '@rollup/rollup-win32-x64-gnu@4.62.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.49.0': + '@rollup/rollup-win32-x64-msvc@4.62.2': optional: true '@rtsao/scc@1.1.0': {} @@ -12215,7 +12734,12 @@ snapshots: '@shikijs/types': 3.12.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@4.1.0': + '@shikijs/engine-oniguruma@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/engine-oniguruma@4.1.0': dependencies: '@shikijs/types': 4.1.0 '@shikijs/vscode-textmate': 10.0.2 @@ -12224,6 +12748,10 @@ snapshots: dependencies: '@shikijs/types': 3.12.0 + '@shikijs/langs@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/langs@4.1.0': dependencies: '@shikijs/types': 4.1.0 @@ -12244,6 +12772,10 @@ snapshots: dependencies: '@shikijs/types': 3.12.0 + '@shikijs/themes@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/themes@4.1.0': dependencies: '@shikijs/types': 4.1.0 @@ -12253,6 +12785,11 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + '@shikijs/types@3.23.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/types@4.1.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 @@ -12267,6 +12804,9 @@ snapshots: '@sinclair/typebox@0.34.40': {} + '@sinclair/typebox@0.34.49': + optional: true + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -12291,7 +12831,7 @@ snapshots: enhanced-resolve: 5.18.3 jiti: 2.5.1 lightningcss: 1.30.1 - magic-string: 0.30.18 + magic-string: 0.30.21 source-map-js: 1.2.1 tailwindcss: 4.1.12 @@ -12436,7 +12976,7 @@ snapshots: '@tokenizer/inflate@0.2.7': dependencies: - debug: 4.4.1 + debug: 4.4.3 fflate: 0.8.2 token-types: 6.1.1 transitivePeerDependencies: @@ -12444,7 +12984,7 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -12452,11 +12992,6 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@tybys/wasm-util@0.10.0': - dependencies: - tslib: 2.8.1 - optional: true - '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 @@ -12464,39 +12999,40 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.7 '@types/blake2b@2.1.3': {} '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.3.0 + '@types/node': 25.9.1 - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/connect@3.4.38': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.9.1 '@types/cookiejar@2.1.5': {} @@ -12628,22 +13164,24 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} + '@types/express-serve-static-core@5.0.7': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.9.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -12717,6 +13255,11 @@ snapshots: dependencies: undici-types: 7.24.6 + '@types/node@26.0.0': + dependencies: + undici-types: 8.3.0 + optional: true + '@types/normalize-package-data@2.4.4': {} '@types/qs@6.14.0': {} @@ -12731,17 +13274,17 @@ snapshots: dependencies: csstype: 3.2.3 - '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 '@types/send': 0.17.5 '@types/stack-utils@2.0.3': {} @@ -12750,7 +13293,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.3.0 + '@types/node': 25.9.1 form-data: 4.0.4 '@types/supertest@6.0.3': @@ -12774,24 +13317,24 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.7.3 + semver: 7.8.5 ts-api-utils: 1.4.3(typescript@5.9.2) optionalDependencies: typescript: 5.9.2 @@ -12817,7 +13360,7 @@ snapshots: '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/type-utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) @@ -12837,7 +13380,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 optionalDependencies: typescript: 5.9.2 @@ -12862,7 +13405,7 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.49.0 - debug: 4.4.1 + debug: 4.4.3 eslint: 9.34.0(jiti@2.7.0) typescript: 5.9.2 transitivePeerDependencies: @@ -12872,7 +13415,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) '@typescript-eslint/types': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -12881,7 +13424,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.2) '@typescript-eslint/types': 8.49.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -12913,7 +13456,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.2) optionalDependencies: @@ -12926,7 +13469,7 @@ snapshots: '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.34.0(jiti@2.7.0) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -12938,7 +13481,7 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.2) '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.34.0(jiti@2.7.0) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -12955,11 +13498,11 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.7.3 + semver: 7.8.5 ts-api-utils: 1.4.3(typescript@5.9.2) optionalDependencies: typescript: 5.9.2 @@ -12972,11 +13515,11 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) '@typescript-eslint/types': 8.41.0 '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 + minimatch: 9.0.9 + semver: 7.8.5 ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -12988,10 +13531,10 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.2) '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - debug: 4.4.1 - minimatch: 9.0.5 - semver: 7.7.3 - tinyglobby: 0.2.15 + debug: 4.4.3 + minimatch: 9.0.9 + semver: 7.8.5 + tinyglobby: 0.2.17 ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -12999,14 +13542,14 @@ snapshots: '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) eslint: 8.57.1 - semver: 7.7.3 + semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript @@ -13024,7 +13567,7 @@ snapshots: '@typescript-eslint/utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.2) @@ -13048,71 +13591,84 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@uiw/react-json-view@2.0.0-alpha.37(@babel/runtime@7.28.4)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@uiw/react-json-view@2.0.0-alpha.37(@babel/runtime@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.7 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) '@ungap/structured-clone@1.3.0': {} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': + '@ungap/structured-clone@1.3.1': {} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true - '@unrs/resolver-binding-android-arm64@1.11.1': + '@unrs/resolver-binding-android-arm64@1.12.2': optional: true - '@unrs/resolver-binding-darwin-arm64@1.11.1': + '@unrs/resolver-binding-darwin-arm64@1.12.2': optional: true - '@unrs/resolver-binding-darwin-x64@1.11.1': + '@unrs/resolver-binding-darwin-x64@1.12.2': optional: true - '@unrs/resolver-binding-freebsd-x64@1.11.1': + '@unrs/resolver-binding-freebsd-x64@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.11.1': + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.11.1': + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': dependencies: - '@napi-rs/wasm-runtime': 0.2.12 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': optional: true '@upsetjs/venn.js@2.0.0': @@ -13120,40 +13676,40 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 ast-v8-to-istanbul: 0.3.4 - debug: 4.4.1 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.18 + magic-string: 0.30.21 magicast: 0.3.5 std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) transitivePeerDependencies: - supports-color '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.18 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -13168,7 +13724,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.18 + magic-string: 0.30.21 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -13278,16 +13834,26 @@ snapshots: dependencies: acorn: 8.15.0 + acorn-import-phases@1.0.4(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 - acorn-walk@8.3.4: + acorn-jsx@5.3.2(acorn@8.17.0): dependencies: - acorn: 8.15.0 + acorn: 8.17.0 + + acorn-walk@8.3.5: + dependencies: + acorn: 8.17.0 acorn@8.15.0: {} + acorn@8.17.0: {} + aes-js@4.0.0-beta.5: {} ajv-formats@2.1.1(ajv@8.17.1): @@ -13298,9 +13864,9 @@ snapshots: optionalDependencies: ajv: 8.17.1 - ajv-keywords@3.5.2(ajv@6.12.6): + ajv-keywords@3.5.2(ajv@6.15.0): dependencies: - ajv: 6.12.6 + ajv: 6.15.0 ajv-keywords@5.1.0(ajv@8.17.1): dependencies: @@ -13314,6 +13880,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -13363,14 +13936,12 @@ snapshots: ansis@4.1.0: {} - ansis@4.2.0: {} - ansis@4.3.1: {} anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 append-field@1.0.0: {} @@ -13465,7 +14036,7 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.7 pathe: 2.0.3 ast-kit@3.0.0: @@ -13478,7 +14049,7 @@ snapshots: ast-v8-to-istanbul@0.3.4: dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 js-tokens: 9.0.1 @@ -13506,24 +14077,38 @@ snapshots: b4a@1.6.7: {} - babel-jest@30.1.1(@babel/core@7.28.3): + babel-jest@30.1.1(@babel/core@7.29.7): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.29.7 '@jest/transform': 30.1.1 '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.0 - babel-preset-jest: 30.0.1(@babel/core@7.28.3) + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.0.1(@babel/core@7.29.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-jest@30.4.1(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@jest/transform': 30.4.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.4.0(@babel/core@7.29.7) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true - babel-plugin-istanbul@7.0.0: + babel-plugin-istanbul@7.0.1: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.29.7 '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-instrument: 6.0.3 test-exclude: 6.0.0 transitivePeerDependencies: @@ -13531,39 +14116,53 @@ snapshots: babel-plugin-jest-hoist@30.0.1: dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + '@types/babel__core': 7.20.5 + + babel-plugin-jest-hoist@30.4.0: + dependencies: '@types/babel__core': 7.20.5 + optional: true - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.3): - dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.3) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.3) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3) - - babel-preset-jest@30.0.1(@babel/core@7.28.3): - dependencies: - '@babel/core': 7.28.3 + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7) + + babel-preset-jest@30.0.1(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 babel-plugin-jest-hoist: 30.0.1 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + + babel-preset-jest@30.4.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + babel-plugin-jest-hoist: 30.4.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + optional: true bail@2.0.2: {} balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base-x@4.0.1: {} base-x@5.0.1: {} @@ -13574,6 +14173,8 @@ snapshots: baseline-browser-mapping@2.10.32: {} + baseline-browser-mapping@2.10.38: {} + bech32@2.0.0: {} better-path-resolve@1.0.0: @@ -13623,7 +14224,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1 + debug: 4.4.3 http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -13638,10 +14239,14 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@2.1.1: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -13655,6 +14260,14 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.3) + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.38 + caniuse-lite: 1.0.30001799 + electron-to-chromium: 1.5.376 + node-releases: 2.0.48 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 @@ -13727,6 +14340,8 @@ snapshots: caniuse-lite@1.0.30001737: {} + caniuse-lite@1.0.30001799: {} + cborg@4.3.2: {} ccount@2.0.1: {} @@ -13760,7 +14375,7 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@2.1.0: {} + chardet@2.2.0: {} check-error@2.1.1: {} @@ -13780,7 +14395,9 @@ snapshots: ci-info@4.3.0: {} - cjs-module-lexer@2.1.0: {} + ci-info@4.4.0: {} + + cjs-module-lexer@2.2.0: {} class-transformer@0.5.1: {} @@ -13834,7 +14451,7 @@ snapshots: collapse-white-space@2.1.0: {} - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} color-convert@1.9.3: dependencies: @@ -13927,7 +14544,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.8.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.2.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -14183,11 +14800,15 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 - dedent@1.6.0: {} + dedent@1.7.2: {} deep-eql@5.0.2: {} @@ -14218,8 +14839,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} - defu@6.1.7: {} delaunator@5.1.0: @@ -14251,7 +14870,7 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 - diff@4.0.2: {} + diff@4.0.4: {} dir-glob@3.0.1: dependencies: @@ -14295,6 +14914,8 @@ snapshots: electron-to-chromium@1.5.211: {} + electron-to-chromium@1.5.376: {} + elliptic@6.6.1: dependencies: bn.js: 4.12.2 @@ -14315,8 +14936,6 @@ snapshots: emojis-list@3.0.0: {} - empathic@2.0.0: {} - empathic@2.0.1: {} encodeurl@2.0.0: {} @@ -14340,7 +14959,7 @@ snapshots: entities@6.0.1: {} - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -14368,7 +14987,7 @@ snapshots: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 @@ -14439,7 +15058,7 @@ snapshots: es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 es-to-primitive@1.3.0: dependencies: @@ -14459,38 +15078,67 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.15.0 + acorn: 8.17.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.25.9: + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.7: 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.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 esbuild@0.28.0: optionalDependencies: @@ -14561,7 +15209,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-formatter-codeframe@7.32.1: + eslint-formatter-codeframe@7.32.2: dependencies: '@babel/code-frame': 7.12.11 chalk: 4.1.2 @@ -14569,21 +15217,21 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.10 + is-core-module: 2.16.2 + resolve: 1.22.12 transitivePeerDependencies: - supports-color eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.1 + debug: 4.4.3 eslint: 9.34.0(jiti@2.7.0) - get-tsconfig: 4.10.1 + get-tsconfig: 4.14.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.15 - unrs-resolver: 1.11.1 + tinyglobby: 0.2.17 + unrs-resolver: 1.12.2 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: @@ -14612,10 +15260,10 @@ snapshots: eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) - hasown: 2.0.2 - is-core-module: 2.16.1 + hasown: 2.0.4 + is-core-module: 2.16.2 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -14640,10 +15288,10 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 eslint: 9.34.0(jiti@2.7.0) - hasown: 2.0.2 + hasown: 2.0.4 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 @@ -14665,20 +15313,30 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.7.0)) - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): + eslint-plugin-prettier@5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.8.4): + dependencies: + eslint: 9.34.0(jiti@2.7.0) + prettier: 3.8.4 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.13 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + + eslint-plugin-prettier@5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.4): dependencies: eslint: 8.57.1 - prettier: 3.6.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + prettier: 3.8.4 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.13 optionalDependencies: '@types/eslint': 9.6.1 eslint-config-prettier: 9.1.2(eslint@8.57.1) eslint-plugin-react-hooks@7.0.1(eslint@9.34.0(jiti@2.7.0)): dependencies: - '@babel/core': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 eslint: 9.34.0(jiti@2.7.0) hermes-parser: 0.25.1 zod: 4.4.3 @@ -14696,9 +15354,9 @@ snapshots: es-iterator-helpers: 1.2.1 eslint: 9.34.0(jiti@2.7.0) estraverse: 5.3.0 - hasown: 2.0.2 + hasown: 2.0.4 jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 + minimatch: 3.1.5 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 @@ -14710,12 +15368,12 @@ snapshots: eslint-plugin-unicorn@49.0.0(eslint@8.57.1): dependencies: - '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@babel/helper-validator-identifier': 7.29.7 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) ci-info: 3.9.0 clean-regexp: 1.0.0 eslint: 8.57.1 - esquery: 1.6.0 + esquery: 1.7.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.1.0 @@ -14723,7 +15381,7 @@ snapshots: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.7.3 + semver: 7.8.5 strip-indent: 3.0.0 eslint-scope@5.1.1: @@ -14754,24 +15412,24 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 + '@ungap/structured-clone': 1.3.1 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -14783,11 +15441,11 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.2.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 strip-ansi: 6.0.1 @@ -14845,8 +15503,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -14855,6 +15513,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -14878,7 +15540,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -14898,7 +15560,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esutils@2.0.3: {} @@ -14937,7 +15599,7 @@ snapshots: exit-x@0.2.2: {} - expect-type@1.2.2: {} + expect-type@1.3.0: {} expect@30.1.1: dependencies: @@ -14956,7 +15618,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -15012,7 +15674,7 @@ snapshots: fast-uri@3.1.0: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -15020,10 +15682,6 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -15055,7 +15713,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -15076,7 +15734,7 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 rimraf: 3.0.2 @@ -15087,6 +15745,8 @@ snapshots: flatted@3.3.3: {} + flatted@3.4.2: {} + follow-redirects@1.15.11: {} for-each@0.3.5: @@ -15107,10 +15767,10 @@ snapshots: deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 - minimatch: 3.1.2 + minimatch: 3.1.5 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.2 + semver: 7.8.5 tapable: 2.2.3 typescript: 5.8.3 webpack: 5.100.2 @@ -15167,7 +15827,7 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3): + fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3): dependencies: '@orama/orama': 3.1.18 estree-util-value-to-estree: 3.5.0 @@ -15194,28 +15854,28 @@ snapshots: '@types/react': 19.2.15 algoliasearch: 5.46.0 lucide-react: 1.17.0(react@19.2.6) - next: 16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + next: 16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) zod: 4.4.3 transitivePeerDependencies: - supports-color - fumadocs-mdx@14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + fumadocs-mdx@14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 chokidar: 5.0.0 esbuild: 0.28.0 estree-util-value-to-estree: 3.5.0 - fumadocs-core: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) - js-yaml: 4.1.1 + fumadocs-core: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) + js-yaml: 4.2.0 mdast-util-mdx: 3.0.0 mdast-util-to-markdown: 2.1.2 picocolors: 1.1.1 picomatch: 4.0.4 - tinyexec: 1.2.3 - tinyglobby: 0.2.16 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -15226,13 +15886,13 @@ snapshots: '@types/mdx': 2.0.13 '@types/react': 19.2.15 mdast-util-directive: 3.1.0 - next: 16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + next: 16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 - vite: 7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) transitivePeerDependencies: - supports-color - fumadocs-ui@16.8.5(@tailwindcss/oxide@4.3.0)(@types/mdx@2.0.13)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(tailwindcss@4.3.0): + fumadocs-ui@16.8.5(@tailwindcss/oxide@4.3.0)(@types/mdx@2.0.13)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(tailwindcss@4.3.0): dependencies: '@fumadocs/tailwind': 0.0.5(@tailwindcss/oxide@4.3.0)(tailwindcss@4.3.0) '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -15246,7 +15906,7 @@ snapshots: '@radix-ui/react-slot': 1.2.4(@types/react@19.2.15)(react@19.2.6) '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) class-variance-authority: 0.7.1 - fumadocs-core: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) + fumadocs-core: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) lucide-react: 1.17.0(react@19.2.6) motion: 12.40.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) next-themes: 0.4.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -15261,7 +15921,7 @@ snapshots: optionalDependencies: '@types/mdx': 2.0.13 '@types/react': 19.2.15 - next: 16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + next: 16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) transitivePeerDependencies: - '@emotion/is-prop-valid' - '@tailwindcss/oxide' @@ -15276,7 +15936,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.2 + hasown: 2.0.4 is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -15295,7 +15955,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-nonce@1.0.1: {} @@ -15315,11 +15975,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.1: - dependencies: - resolve-pkg-maps: 1.0.0 - - get-tsconfig@4.13.0: + get-tsconfig@4.14.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -15339,12 +15995,12 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 + minimatch: 9.0.9 + minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 @@ -15352,7 +16008,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 - minimatch: 10.0.3 + minimatch: 10.2.5 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.0 @@ -15362,7 +16018,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -15398,7 +16054,7 @@ snapshots: hachure-fill@0.5.2: {} - handlebars@4.7.8: + handlebars@4.7.9: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -15438,6 +16094,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + hast-util-from-parse5@8.0.3: dependencies: '@types/hast': 3.0.4 @@ -15506,7 +16166,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -15560,8 +16220,6 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hookable@6.0.1: {} - hookable@6.1.1: {} hosted-git-info@2.8.9: {} @@ -15578,7 +16236,7 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - human-id@4.1.1: {} + human-id@4.2.0: {} human-signals@2.1.0: {} @@ -15586,6 +16244,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -15626,7 +16288,7 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.2 + hasown: 2.0.4 side-channel: 1.1.0 internmap@1.0.1: {} @@ -15675,13 +16337,13 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.3 + semver: 7.8.5 is-callable@1.2.7: {} - is-core-module@2.16.1: + is-core-module@2.16.2: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 is-data-view@1.0.2: dependencies: @@ -15743,7 +16405,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 is-set@2.0.3: {} @@ -15803,9 +16465,9 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.3 - '@babel/parser': 7.28.5 - '@istanbuljs/schema': 0.1.3 + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 semver: 7.8.5 transitivePeerDependencies: @@ -15819,8 +16481,8 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.30 - debug: 4.4.1 + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -15863,10 +16525,10 @@ snapshots: '@jest/expect': 30.1.1 '@jest/test-result': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 chalk: 4.1.2 co: 4.6.0 - dedent: 1.6.0 + dedent: 1.7.2 is-generator-fn: 2.1.0 jest-each: 30.1.0 jest-matcher-utils: 30.1.1 @@ -15894,7 +16556,26 @@ snapshots: jest-config: 30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) jest-util: 30.0.5 jest-validate: 30.1.0 - yargs: 17.7.2 + yargs: 17.7.3 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + jest-cli@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)): + dependencies: + '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + '@jest/test-result': 30.1.1 + '@jest/types': 30.0.5 + chalk: 4.1.2 + exit-x: 0.2.2 + import-local: 3.2.0 + jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + jest-util: 30.0.5 + jest-validate: 30.1.0 + yargs: 17.7.3 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -15904,16 +16585,16 @@ snapshots: jest-config@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 '@jest/test-sequencer': 30.1.1 '@jest/types': 30.0.5 - babel-jest: 30.1.1(@babel/core@7.28.3) + babel-jest: 30.1.1(@babel/core@7.29.7) chalk: 4.1.2 - ci-info: 4.3.0 + ci-info: 4.4.0 deepmerge: 4.3.1 - glob: 10.4.5 + glob: 10.5.0 graceful-fs: 4.2.11 jest-circus: 30.1.1 jest-docblock: 30.0.1 @@ -15935,6 +16616,72 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): + dependencies: + '@babel/core': 7.29.7 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.1.1 + '@jest/types': 30.0.5 + babel-jest: 30.1.1(@babel/core@7.29.7) + chalk: 4.1.2 + ci-info: 4.4.0 + deepmerge: 4.3.1 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-circus: 30.1.1 + jest-docblock: 30.0.1 + jest-environment-node: 30.1.1 + jest-regex-util: 30.0.1 + jest-resolve: 30.1.0 + jest-runner: 30.1.1 + jest-util: 30.0.5 + jest-validate: 30.1.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 30.0.5 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 25.9.1 + ts-node: 10.9.2(@types/node@24.3.0)(typescript@5.9.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)): + dependencies: + '@babel/core': 7.29.7 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.1.1 + '@jest/types': 30.0.5 + babel-jest: 30.1.1(@babel/core@7.29.7) + chalk: 4.1.2 + ci-info: 4.4.0 + deepmerge: 4.3.1 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-circus: 30.1.1 + jest-docblock: 30.0.1 + jest-environment-node: 30.1.1 + jest-regex-util: 30.0.1 + jest-resolve: 30.1.0 + jest-runner: 30.1.1 + jest-util: 30.0.5 + jest-validate: 30.1.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 30.0.5 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 25.9.1 + ts-node: 10.9.2(@types/node@25.9.1)(typescript@5.9.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-diff@30.1.1: dependencies: '@jest/diff-sequences': 30.0.1 @@ -15959,7 +16706,7 @@ snapshots: '@jest/environment': 30.1.1 '@jest/fake-timers': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 jest-mock: 30.0.5 jest-util: 30.0.5 jest-validate: 30.1.0 @@ -15979,6 +16726,22 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-haste-map@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.9.1 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 30.4.0 + jest-util: 30.4.1 + jest-worker: 30.4.1 + picomatch: 4.0.4 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + optional: true + jest-leak-detector@30.1.0: dependencies: '@jest/get-type': 30.1.0 @@ -16006,7 +16769,7 @@ snapshots: jest-mock@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 jest-util: 30.0.5 jest-pnp-resolver@1.2.3(jest-resolve@30.1.0): @@ -16015,6 +16778,9 @@ snapshots: jest-regex-util@30.0.1: {} + jest-regex-util@30.4.0: + optional: true + jest-resolve-dependencies@30.1.1: dependencies: jest-regex-util: 30.0.1 @@ -16031,7 +16797,7 @@ snapshots: jest-util: 30.0.5 jest-validate: 30.1.0 slash: 3.0.0 - unrs-resolver: 1.11.1 + unrs-resolver: 1.12.2 jest-runner@30.1.1: dependencies: @@ -16040,7 +16806,7 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -16069,11 +16835,11 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 chalk: 4.1.2 - cjs-module-lexer: 2.1.0 - collect-v8-coverage: 1.0.2 - glob: 10.4.5 + cjs-module-lexer: 2.2.0 + collect-v8-coverage: 1.0.3 + glob: 10.5.0 graceful-fs: 4.2.11 jest-haste-map: 30.1.0 jest-message-util: 30.1.0 @@ -16089,17 +16855,17 @@ snapshots: jest-snapshot@30.1.1: dependencies: - '@babel/core': 7.28.3 - '@babel/generator': 7.28.3 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) - '@babel/types': 7.28.2 + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/types': 7.29.7 '@jest/expect-utils': 30.1.1 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) chalk: 4.1.2 expect: 30.1.1 graceful-fs: 4.2.11 @@ -16108,8 +16874,8 @@ snapshots: jest-message-util: 30.1.0 jest-util: 30.0.5 pretty-format: 30.0.5 - semver: 7.7.3 - synckit: 0.11.11 + semver: 7.8.5 + synckit: 0.11.13 transitivePeerDependencies: - supports-color @@ -16122,6 +16888,16 @@ snapshots: graceful-fs: 4.2.11 picomatch: 4.0.4 + jest-util@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.9.1 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.4 + optional: true + jest-validate@30.1.0: dependencies: '@jest/get-type': 30.1.0 @@ -16135,7 +16911,7 @@ snapshots: dependencies: '@jest/test-result': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.9.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -16151,11 +16927,20 @@ snapshots: jest-worker@30.1.0: dependencies: '@types/node': 25.9.1 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.1 jest-util: 30.0.5 merge-stream: 2.0.0 supports-color: 8.1.1 + jest-worker@30.4.1: + dependencies: + '@types/node': 25.9.1 + '@ungap/structured-clone': 1.3.1 + jest-util: 30.4.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + optional: true + jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): dependencies: '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) @@ -16169,6 +16954,19 @@ snapshots: - supports-color - ts-node + jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)): + dependencies: + '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + '@jest/types': 30.0.5 + import-local: 3.2.0 + jest-cli: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + jiti@2.5.1: {} jiti@2.7.0: {} @@ -16179,7 +16977,7 @@ snapshots: js-xxhash@1.0.4: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -16192,6 +16990,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + jsbi@3.1.3: {} jsbi@4.3.2: {} @@ -16369,7 +17171,7 @@ snapshots: lines-and-columns@1.2.4: {} - linkify-it@5.0.0: + linkify-it@5.0.1: dependencies: uc.micro: 2.1.0 @@ -16456,23 +17258,19 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.18: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.7.3 + semver: 7.8.5 make-error@1.3.6: {} @@ -16482,11 +17280,11 @@ snapshots: markdown-extensions@2.0.0: {} - markdown-it@14.1.0: + markdown-it@14.2.0: dependencies: argparse: 2.0.1 entities: 4.5.0 - linkify-it: 5.0.0 + linkify-it: 5.0.1 mdurl: 2.0.0 punycode.js: 2.3.1 uc.micro: 2.1.0 @@ -16651,7 +17449,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.1 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -16796,7 +17594,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -16807,7 +17605,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -16824,7 +17622,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -16836,8 +17634,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -16860,7 +17658,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -16924,7 +17722,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -16962,7 +17760,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -16984,7 +17782,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.52.0: {} @@ -17008,29 +17806,35 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} - minimatch@10.0.3: + minimatch@10.2.5: dependencies: - '@isaacs/brace-expansion': 5.0.0 + brace-expansion: 5.0.6 minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.12 + minimatch@9.0.3: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.1.1 - minimatch@9.0.5: + minimatch@9.0.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.1.1 minimist@1.2.8: {} minipass@7.1.2: {} + minipass@7.1.3: {} + minizlib@3.0.2: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 mkdirp@0.5.6: dependencies: @@ -17080,7 +17884,7 @@ snapshots: nanoid@3.3.12: {} - napi-postinstall@0.3.3: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -17093,7 +17897,7 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - next@16.0.10(@babel/core@7.28.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@16.0.10(@babel/core@7.29.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@next/env': 16.0.10 '@swc/helpers': 0.5.15 @@ -17101,7 +17905,7 @@ snapshots: postcss: 8.4.31 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.3) optionalDependencies: '@next/swc-darwin-arm64': 16.0.10 '@next/swc-darwin-x64': 16.0.10 @@ -17116,7 +17920,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@16.0.10(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + next@16.0.10(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: '@next/env': 16.0.10 '@swc/helpers': 0.5.15 @@ -17124,7 +17928,7 @@ snapshots: postcss: 8.4.31 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.6) + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.6) optionalDependencies: '@next/swc-darwin-arm64': 16.0.10 '@next/swc-darwin-x64': 16.0.10 @@ -17139,7 +17943,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@16.2.4(@babel/core@7.28.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: '@next/env': 16.2.4 '@swc/helpers': 0.5.15 @@ -17148,7 +17952,7 @@ snapshots: postcss: 8.4.31 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.6) + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.6) optionalDependencies: '@next/swc-darwin-arm64': 16.2.4 '@next/swc-darwin-x64': 16.2.4 @@ -17177,6 +17981,8 @@ snapshots: node-releases@2.0.19: {} + node-releases@2.0.48: {} + noms@0.0.0: dependencies: inherits: 2.0.4 @@ -17185,7 +17991,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.10 + resolve: 1.22.12 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -17237,8 +18043,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - obug@2.1.1: {} - obug@2.1.3: {} on-finished@2.4.1: @@ -17353,8 +18157,8 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -17377,7 +18181,7 @@ snapshots: path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 - minipass: 7.1.2 + minipass: 7.1.3 path-scurry@2.0.0: dependencies: @@ -17394,12 +18198,10 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} picomatch@4.0.2: {} - picomatch@4.0.3: {} - picomatch@4.0.4: {} pify@4.0.1: {} @@ -17447,11 +18249,20 @@ snapshots: dependencies: fast-diff: 1.3.0 + prettier-linter-helpers@1.0.1: + dependencies: + fast-diff: 1.3.0 + prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2): dependencies: prettier: 3.6.2 typescript: 5.9.2 + prettier-plugin-organize-imports@4.2.0(prettier@3.8.4)(typescript@5.9.2): + dependencies: + prettier: 3.8.4 + typescript: 5.9.2 + prettier-plugin-tailwindcss@0.6.14(prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2))(prettier@3.6.2): dependencies: prettier: 3.6.2 @@ -17462,6 +18273,8 @@ snapshots: prettier@3.6.2: {} + prettier@3.8.4: {} + pretty-format@30.0.5: dependencies: '@jest/schemas': 30.0.5 @@ -17585,7 +18398,7 @@ snapshots: read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 - js-yaml: 3.14.1 + js-yaml: 3.14.2 pify: 4.0.1 strip-bom: 3.0.0 @@ -17618,14 +18431,14 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.1(acorn@8.15.0): + recma-jsx@1.0.1(acorn@8.17.0): dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -17633,14 +18446,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -17695,7 +18508,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -17769,15 +18582,16 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.10: + resolve@1.22.12: dependencies: - is-core-module: 2.16.1 + es-errors: 1.3.0 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.16.1 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -17801,14 +18615,14 @@ snapshots: rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1))(typescript@5.9.2): dependencies: - '@babel/generator': 7.28.5 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 ast-kit: 2.2.0 birpc: 4.0.0 dts-resolver: 2.1.3 - get-tsconfig: 4.13.0 - obug: 2.1.1 + get-tsconfig: 4.14.0 + obug: 2.1.3 rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optionalDependencies: typescript: 5.9.2 @@ -17874,30 +18688,35 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.2 '@rolldown/binding-win32-x64-msvc': 1.1.2 - rollup@4.49.0: + rollup@4.62.2: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.49.0 - '@rollup/rollup-android-arm64': 4.49.0 - '@rollup/rollup-darwin-arm64': 4.49.0 - '@rollup/rollup-darwin-x64': 4.49.0 - '@rollup/rollup-freebsd-arm64': 4.49.0 - '@rollup/rollup-freebsd-x64': 4.49.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.49.0 - '@rollup/rollup-linux-arm-musleabihf': 4.49.0 - '@rollup/rollup-linux-arm64-gnu': 4.49.0 - '@rollup/rollup-linux-arm64-musl': 4.49.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.49.0 - '@rollup/rollup-linux-ppc64-gnu': 4.49.0 - '@rollup/rollup-linux-riscv64-gnu': 4.49.0 - '@rollup/rollup-linux-riscv64-musl': 4.49.0 - '@rollup/rollup-linux-s390x-gnu': 4.49.0 - '@rollup/rollup-linux-x64-gnu': 4.49.0 - '@rollup/rollup-linux-x64-musl': 4.49.0 - '@rollup/rollup-win32-arm64-msvc': 4.49.0 - '@rollup/rollup-win32-ia32-msvc': 4.49.0 - '@rollup/rollup-win32-x64-msvc': 4.49.0 + '@rollup/rollup-android-arm-eabi': 4.62.2 + '@rollup/rollup-android-arm64': 4.62.2 + '@rollup/rollup-darwin-arm64': 4.62.2 + '@rollup/rollup-darwin-x64': 4.62.2 + '@rollup/rollup-freebsd-arm64': 4.62.2 + '@rollup/rollup-freebsd-x64': 4.62.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.2 + '@rollup/rollup-linux-arm-musleabihf': 4.62.2 + '@rollup/rollup-linux-arm64-gnu': 4.62.2 + '@rollup/rollup-linux-arm64-musl': 4.62.2 + '@rollup/rollup-linux-loong64-gnu': 4.62.2 + '@rollup/rollup-linux-loong64-musl': 4.62.2 + '@rollup/rollup-linux-ppc64-gnu': 4.62.2 + '@rollup/rollup-linux-ppc64-musl': 4.62.2 + '@rollup/rollup-linux-riscv64-gnu': 4.62.2 + '@rollup/rollup-linux-riscv64-musl': 4.62.2 + '@rollup/rollup-linux-s390x-gnu': 4.62.2 + '@rollup/rollup-linux-x64-gnu': 4.62.2 + '@rollup/rollup-linux-x64-musl': 4.62.2 + '@rollup/rollup-openbsd-x64': 4.62.2 + '@rollup/rollup-openharmony-arm64': 4.62.2 + '@rollup/rollup-win32-arm64-msvc': 4.62.2 + '@rollup/rollup-win32-ia32-msvc': 4.62.2 + '@rollup/rollup-win32-x64-gnu': 4.62.2 + '@rollup/rollup-win32-x64-msvc': 4.62.2 fsevents: 2.3.3 roughjs@4.6.6: @@ -17909,7 +18728,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -17974,8 +18793,8 @@ snapshots: schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) schema-utils@4.3.2: dependencies: @@ -17994,13 +18813,11 @@ snapshots: semver@7.7.2: {} - semver@7.7.3: {} - semver@7.8.5: {} send@1.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -18055,7 +18872,7 @@ snapshots: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.8.5 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -18175,16 +18992,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.22 + spdx-license-ids: 3.0.23 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.22 + spdx-license-ids: 3.0.23 - spdx-license-ids@3.0.22: {} + spdx-license-ids@3.0.23: {} sprintf-js@1.0.3: {} @@ -18331,19 +19148,19 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.2.3): + styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.3): dependencies: client-only: 0.0.1 react: 19.2.3 optionalDependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.29.7 - styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.2.6): + styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.6): dependencies: client-only: 0.0.1 react: 19.2.6 optionalDependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.29.7 stylis@4.4.0: {} @@ -18351,7 +19168,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.1 + debug: 4.4.3 fast-safe-stringify: 2.1.1 form-data: 4.0.4 formidable: 3.5.4 @@ -18393,6 +19210,10 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + tabbable@6.2.0: {} tailwind-merge@3.6.0: {} @@ -18418,40 +19239,40 @@ snapshots: terser-webpack-plugin@5.3.14(webpack@5.100.2): dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.43.1 + terser: 5.48.0 webpack: 5.100.2 terser-webpack-plugin@5.3.14(webpack@5.101.3): dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.43.1 + terser: 5.48.0 webpack: 5.101.3 - terser@5.43.1: + terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.17.0 commander: 2.20.3 source-map-support: 0.5.21 test-exclude@6.0.0: dependencies: - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 glob: 7.2.3 - minimatch: 3.1.2 + minimatch: 3.1.5 test-exclude@7.0.1: dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 + '@istanbuljs/schema': 0.1.6 + glob: 10.5.0 + minimatch: 9.0.9 text-table@0.2.0: {} @@ -18468,22 +19289,8 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.2: {} - - tinyexec@1.2.3: {} - tinyexec@1.2.4: {} - tinyglobby@0.2.14: - dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - tinyglobby@0.2.16: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -18532,25 +19339,45 @@ snapshots: ts-dedent@2.2.0: {} - ts-jest@29.4.1(@babel/core@7.28.3)(@jest/transform@30.1.1)(@jest/types@30.0.5)(babel-jest@30.1.1(@babel/core@7.28.3))(jest-util@30.0.5)(jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)))(typescript@5.9.2): + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)))(typescript@5.9.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.8 + handlebars: 4.7.9 jest: 30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.2 + semver: 7.8.5 type-fest: 4.41.0 typescript: 5.9.2 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.28.3 - '@jest/transform': 30.1.1 - '@jest/types': 30.0.5 - babel-jest: 30.1.1(@babel/core@7.28.3) - jest-util: 30.0.5 + '@babel/core': 7.29.7 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + babel-jest: 30.4.1(@babel/core@7.29.7) + jest-util: 30.4.1 + + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)))(typescript@5.9.2): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + handlebars: 4.7.9 + jest: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.8.5 + type-fest: 4.41.0 + typescript: 5.9.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.29.7 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + babel-jest: 30.4.1(@babel/core@7.29.7) + jest-util: 30.4.1 ts-loader@9.5.4(typescript@5.9.2)(webpack@5.100.2): dependencies: @@ -18565,21 +19392,40 @@ snapshots: ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 24.3.0 - acorn: 8.15.0 - acorn-walk: 8.3.4 + acorn: 8.17.0 + acorn-walk: 8.3.5 arg: 4.1.3 create-require: 1.1.1 - diff: 4.0.2 + diff: 4.0.4 make-error: 1.3.6 typescript: 5.9.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 25.9.1 + acorn: 8.17.0 + acorn-walk: 8.3.5 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.4 + make-error: 1.3.6 + typescript: 5.9.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 @@ -18600,24 +19446,24 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)(typescript@5.9.2): + tsdown@0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)(typescript@5.9.2): dependencies: - ansis: 4.2.0 + ansis: 4.3.1 cac: 6.7.14 - defu: 6.1.4 - empathic: 2.0.0 - hookable: 6.0.1 + defu: 6.1.7 + empathic: 2.0.1 + hookable: 6.1.1 import-without-cache: 0.2.5 - obug: 2.1.1 - picomatch: 4.0.3 + obug: 2.1.3 + picomatch: 4.0.4 rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1))(typescript@5.9.2) - semver: 7.7.3 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 + semver: 7.8.5 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tree-kill: 1.2.2 - unconfig-core: 7.4.2 - unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11) + unconfig-core: 7.5.0 + unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: @@ -18629,7 +19475,7 @@ snapshots: - synckit - vue-tsc - tsdown@0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11)): + tsdown@0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -18649,7 +19495,7 @@ snapshots: optionalDependencies: tsx: 4.20.5 typescript: 5.9.2 - unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11) + unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13) transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' @@ -18664,8 +19510,8 @@ snapshots: tsx@4.20.5: dependencies: - esbuild: 0.25.9 - get-tsconfig: 4.13.0 + esbuild: 0.25.12 + get-tsconfig: 4.14.0 optionalDependencies: fsevents: 2.3.3 @@ -18733,7 +19579,7 @@ snapshots: typedarray@0.0.6: {} - typedoc-material-theme@1.4.0(typedoc@0.28.7(typescript@5.9.2)): + typedoc-material-theme@1.4.1(typedoc@0.28.7(typescript@5.9.2)): dependencies: '@material/material-color-utilities': 0.3.0 typedoc: 0.28.7(typescript@5.9.2) @@ -18742,7 +19588,7 @@ snapshots: dependencies: typedoc: 0.28.7(typescript@5.9.2) - typedoc-plugin-ga@1.0.5(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@5.9.2))(typescript@5.9.2): + typedoc-plugin-ga@1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@5.9.2))(typescript@5.9.2): dependencies: '@euberdeveloper/eslint-plugin': 2.7.0(@types/eslint@9.6.1)(typescript@5.9.2) typedoc: 0.28.7(typescript@5.9.2) @@ -18753,12 +19599,12 @@ snapshots: typedoc@0.28.7(typescript@5.9.2): dependencies: - '@gerrit0/mini-shiki': 3.12.0 + '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 - markdown-it: 14.1.0 - minimatch: 9.0.5 + markdown-it: 14.2.0 + minimatch: 9.0.9 typescript: 5.9.2 - yaml: 2.8.1 + yaml: 2.9.0 typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): dependencies: @@ -18810,11 +19656,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - unconfig-core@7.4.2: - dependencies: - '@quansync/fs': 1.0.0 - quansync: 1.0.0 - unconfig-core@7.5.0: dependencies: '@quansync/fs': 1.0.0 @@ -18828,6 +19669,9 @@ snapshots: undici-types@7.24.6: {} + undici-types@8.3.0: + optional: true + unicode-trie@2.0.0: dependencies: pako: 0.2.9 @@ -18881,35 +19725,38 @@ snapshots: unpipe@1.0.0: {} - unrs-resolver@1.11.1: + unrs-resolver@1.12.2: dependencies: - napi-postinstall: 0.3.3 + napi-postinstall: 0.3.4 optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.1 - '@unrs/resolver-binding-android-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-x64': 1.11.1 - '@unrs/resolver-binding-freebsd-x64': 1.11.1 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-musl': 1.11.1 - '@unrs/resolver-binding-wasm32-wasi': 1.11.1 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - - unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.11): + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + + unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13): dependencies: rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optionalDependencies: - synckit: 0.11.11 + synckit: 0.11.13 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -18922,6 +19769,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -18953,7 +19806,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -18993,13 +19846,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.3.5(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -19014,13 +19867,34 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-node@3.2.4(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + dependencies: + cac: 6.7.14 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -19035,64 +19909,81 @@ snapshots: - tsx - yaml - vite@7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite@7.3.5(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: - esbuild: 0.25.9 + esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.15 - rollup: 4.49.0 + rollup: 4.62.2 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - terser: 5.43.1 + terser: 5.48.0 tsx: 4.20.5 - yaml: 2.8.1 + yaml: 2.9.0 - vite@7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: - esbuild: 0.25.9 + esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.15 - rollup: 4.49.0 + rollup: 4.62.2 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.1 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - terser: 5.43.1 + terser: 5.48.0 + tsx: 4.20.5 + yaml: 2.9.0 + + vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.62.2 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.0.0 + fsevents: 2.3.3 + jiti: 2.7.0 + lightningcss: 1.32.0 + terser: 5.48.0 tsx: 4.20.5 - yaml: 2.8.1 + yaml: 2.9.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 - debug: 4.4.1 - expect-type: 1.2.2 - magic-string: 0.30.18 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.3.5(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -19111,30 +20002,30 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 - debug: 4.4.1 - expect-type: 1.2.2 - magic-string: 0.30.18 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -19153,6 +20044,48 @@ snapshots: - tsx - yaml + vitest@3.2.4(@types/debug@4.1.12)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.17 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 26.0.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -19209,14 +20142,14 @@ snapshots: webpack@5.101.3: dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.3 + acorn: 8.17.0 + acorn-import-phases: 1.0.4(acorn@8.17.0) + browserslist: 4.28.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.22.1 es-module-lexer: 1.7.0 @@ -19343,7 +20276,7 @@ snapshots: yallist@5.0.0: {} - yaml@2.8.1: {} + yaml@2.9.0: {} yargs-parser@20.2.9: {} @@ -19359,7 +20292,7 @@ snapshots: y18n: 5.0.8 yargs-parser: 20.2.9 - yargs@17.7.2: + yargs@17.7.3: dependencies: cliui: 8.0.1 escalade: 3.2.0 From cbca6d38c528011492010056de756acb2f5508d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:40:30 +0000 Subject: [PATCH 38/42] chore(releases/next): bump packages version --- .changeset/calm-doors-poke.md | 6 ---- .changeset/crazy-hairs-greet.md | 5 --- .changeset/cuddly-lands-build.md | 13 -------- .changeset/did-ckb-advanced.md | 13 -------- .changeset/fair-items-shout.md | 6 ---- .changeset/fifty-parks-dress.md | 7 ----- .changeset/fluffy-readers-warn.md | 5 --- .changeset/fruity-drinks-kick.md | 7 ----- .changeset/late-ants-hide.md | 25 --------------- .changeset/poor-days-guess.md | 6 ---- .changeset/vast-trees-film.md | 6 ---- .changeset/weak-adults-rhyme.md | 6 ---- packages/ccc/CHANGELOG.md | 18 +++++++++++ packages/ccc/package.json | 2 +- packages/ckb-ccc/CHANGELOG.md | 10 ++++++ packages/ckb-ccc/package.json | 2 +- packages/connector-react/CHANGELOG.md | 10 ++++++ packages/connector-react/package.json | 2 +- packages/connector/CHANGELOG.md | 10 ++++++ packages/connector/package.json | 2 +- packages/core/CHANGELOG.md | 44 +++++++++++++++++++++++++++ packages/core/package.json | 2 +- packages/did-ckb/CHANGELOG.md | 30 ++++++++++++++++++ packages/did-ckb/package.json | 2 +- packages/eip6963/CHANGELOG.md | 10 ++++++ packages/eip6963/package.json | 2 +- packages/joy-id/CHANGELOG.md | 16 ++++++++++ packages/joy-id/package.json | 2 +- packages/lumos-patches/CHANGELOG.md | 10 ++++++ packages/lumos-patches/package.json | 2 +- packages/nip07/CHANGELOG.md | 10 ++++++ packages/nip07/package.json | 2 +- packages/okx/CHANGELOG.md | 18 +++++++++++ packages/okx/package.json | 2 +- packages/rei/CHANGELOG.md | 10 ++++++ packages/rei/package.json | 2 +- packages/shell/CHANGELOG.md | 26 ++++++++++++++++ packages/shell/package.json | 2 +- packages/spore/CHANGELOG.md | 10 ++++++ packages/spore/package.json | 2 +- packages/ssri/CHANGELOG.md | 10 ++++++ packages/ssri/package.json | 2 +- packages/type-id/CHANGELOG.md | 15 +++++++++ packages/type-id/package.json | 2 +- packages/udt/CHANGELOG.md | 11 +++++++ packages/udt/package.json | 2 +- packages/uni-sat/CHANGELOG.md | 16 ++++++++++ packages/uni-sat/package.json | 2 +- packages/utxo-global/CHANGELOG.md | 16 ++++++++++ packages/utxo-global/package.json | 2 +- packages/xverse/CHANGELOG.md | 16 ++++++++++ packages/xverse/package.json | 2 +- 52 files changed, 336 insertions(+), 125 deletions(-) delete mode 100644 .changeset/calm-doors-poke.md delete mode 100644 .changeset/crazy-hairs-greet.md delete mode 100644 .changeset/cuddly-lands-build.md delete mode 100644 .changeset/did-ckb-advanced.md delete mode 100644 .changeset/fair-items-shout.md delete mode 100644 .changeset/fifty-parks-dress.md delete mode 100644 .changeset/fluffy-readers-warn.md delete mode 100644 .changeset/fruity-drinks-kick.md delete mode 100644 .changeset/late-ants-hide.md delete mode 100644 .changeset/poor-days-guess.md delete mode 100644 .changeset/vast-trees-film.md delete mode 100644 .changeset/weak-adults-rhyme.md create mode 100644 packages/did-ckb/CHANGELOG.md create mode 100644 packages/type-id/CHANGELOG.md diff --git a/.changeset/calm-doors-poke.md b/.changeset/calm-doors-poke.md deleted file mode 100644 index 9809e521f..000000000 --- a/.changeset/calm-doors-poke.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat(core): extract a universal `Codec` from `mol.Codec` - \ No newline at end of file diff --git a/.changeset/crazy-hairs-greet.md b/.changeset/crazy-hairs-greet.md deleted file mode 100644 index 5ba3e63e3..000000000 --- a/.changeset/crazy-hairs-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat(Epoch): transform `Epoch` into a class and add utilities diff --git a/.changeset/cuddly-lands-build.md b/.changeset/cuddly-lands-build.md deleted file mode 100644 index b3a48766e..000000000 --- a/.changeset/cuddly-lands-build.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@ckb-ccc/core": minor -"@ckb-ccc/joy-id": patch -"@ckb-ccc/okx": patch -"@ckb-ccc/uni-sat": patch -"@ckb-ccc/utxo-global": patch -"@ckb-ccc/xverse": patch ---- - -feat(core): add BTC PSBT signing support - -- Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs -- Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing diff --git a/.changeset/did-ckb-advanced.md b/.changeset/did-ckb-advanced.md deleted file mode 100644 index 26c4d5eb6..000000000 --- a/.changeset/did-ckb-advanced.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@ckb-ccc/did-ckb": minor ---- - -feat(did-ckb): identifier helpers, resolver, history walk, and did:plc migration - -Layered on top of the basic create/transfer/destroy operations: - -- `argsToDid`, `didToArgs`, `isDidCkb`, plus RFC 4648 base32 helpers for converting between Type ID args and the human readable `did:ckb:` URI form (WIP-01 §2.2) -- `findDidCkbCell`, `resolveDidCkb`, `listDidCkbsByLock` for resolving a DID by id or by owning lock -- `getDidCkbHistory` walks the cell chain backwards to produce an ordered list of CREATE / UPDATE / MIGRATE entries with tx hash, block number, capacity, and decoded data -- `migrateDidCkb` + `buildMigrationWitness` for importing a `did:plc` into `did:ckb` (WIP-02 §3.1.1) -- `@ckb-ccc/did-ckb/plc` subpath with `fetchPlcLog`, `parseDidKey`, `signRotationHash`, `verifyPrivateKeyMatch` so the curve code only ships to consumers that need it diff --git a/.changeset/fair-items-shout.md b/.changeset/fair-items-shout.md deleted file mode 100644 index e0da4d468..000000000 --- a/.changeset/fair-items-shout.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat(core): `mol.padding` for padding codec - \ No newline at end of file diff --git a/.changeset/fifty-parks-dress.md b/.changeset/fifty-parks-dress.md deleted file mode 100644 index 384359158..000000000 --- a/.changeset/fifty-parks-dress.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@ckb-ccc/shell": minor -"@ckb-ccc/type-id": patch ---- - -feat(type-id): add type-id package for Type ID operations - diff --git a/.changeset/fluffy-readers-warn.md b/.changeset/fluffy-readers-warn.md deleted file mode 100644 index f15370ac2..000000000 --- a/.changeset/fluffy-readers-warn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat(core): add isDaoOutputLimitExceeded utility for NervosDAO 64-output guard diff --git a/.changeset/fruity-drinks-kick.md b/.changeset/fruity-drinks-kick.md deleted file mode 100644 index abb409ec7..000000000 --- a/.changeset/fruity-drinks-kick.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@ckb-ccc/shell": minor -"@ckb-ccc/did-ckb": patch ---- - -feat(did-ckb): add did-ckb package for basic did operations - \ No newline at end of file diff --git a/.changeset/late-ants-hide.md b/.changeset/late-ants-hide.md deleted file mode 100644 index 1df76880b..000000000 --- a/.changeset/late-ants-hide.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"@ckb-ccc/connector-react": patch -"@ckb-ccc/lumos-patches": patch -"@ckb-ccc/utxo-global": patch -"@ckb-ccc/connector": patch -"ckb-ccc": patch -"@ckb-ccc/did-ckb": patch -"@ckb-ccc/eip6963": patch -"@ckb-ccc/type-id": patch -"@ckb-ccc/uni-sat": patch -"@ckb-ccc/joy-id": patch -"@ckb-ccc/xverse": patch -"@ckb-ccc/nip07": patch -"@ckb-ccc/shell": patch -"@ckb-ccc/spore": patch -"@ckb-ccc/core": patch -"@ckb-ccc/ssri": patch -"@ckb-ccc/ccc": patch -"@ckb-ccc/okx": patch -"@ckb-ccc/rei": patch -"@ckb-ccc/udt": patch ---- - -chore: bump pnpm to v11.8.0 - \ No newline at end of file diff --git a/.changeset/poor-days-guess.md b/.changeset/poor-days-guess.md deleted file mode 100644 index d6269460c..000000000 --- a/.changeset/poor-days-guess.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat(core): add known script did ckb - \ No newline at end of file diff --git a/.changeset/vast-trees-film.md b/.changeset/vast-trees-film.md deleted file mode 100644 index 6661db38c..000000000 --- a/.changeset/vast-trees-film.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat: bump @noble packages - diff --git a/.changeset/weak-adults-rhyme.md b/.changeset/weak-adults-rhyme.md deleted file mode 100644 index 54dca531b..000000000 --- a/.changeset/weak-adults-rhyme.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ckb-ccc/core": minor ---- - -feat(core): auto complete cell capacity if it's not enough - \ No newline at end of file diff --git a/packages/ccc/CHANGELOG.md b/packages/ccc/CHANGELOG.md index 38ed5c9a8..0b6b249f5 100644 --- a/packages/ccc/CHANGELOG.md +++ b/packages/ccc/CHANGELOG.md @@ -1,5 +1,23 @@ # @ckb-ccc/ccc +## 1.1.26 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`3bd5130`](https://github.com/ckb-devrel/ccc/commit/3bd51300d9602482dd781752f618f6cfd642675c), [`0366786`](https://github.com/ckb-devrel/ccc/commit/03667865d1bc6d091d9144d39f6b434abe4ce18b), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346)]: + - @ckb-ccc/joy-id@1.0.33 + - @ckb-ccc/okx@1.0.33 + - @ckb-ccc/uni-sat@1.0.33 + - @ckb-ccc/utxo-global@1.0.33 + - @ckb-ccc/xverse@1.0.33 + - @ckb-ccc/shell@1.2.0 + - @ckb-ccc/eip6963@1.0.33 + - @ckb-ccc/nip07@1.0.33 + - @ckb-ccc/rei@1.0.33 + ## 1.1.25 ### Patch Changes diff --git a/packages/ccc/package.json b/packages/ccc/package.json index 49397360a..6feb2a8f2 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/ccc", - "version": "1.1.25", + "version": "1.1.26", "description": "CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/ckb-ccc/CHANGELOG.md b/packages/ckb-ccc/CHANGELOG.md index ee3bd1101..63fe8d52d 100644 --- a/packages/ckb-ccc/CHANGELOG.md +++ b/packages/ckb-ccc/CHANGELOG.md @@ -1,5 +1,15 @@ # ckb-ccc +## 1.0.34 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346)]: + - @ckb-ccc/ccc@1.1.26 + ## 1.0.33 ### Patch Changes diff --git a/packages/ckb-ccc/package.json b/packages/ckb-ccc/package.json index 7f7b7d8ee..6c40e7f87 100644 --- a/packages/ckb-ccc/package.json +++ b/packages/ckb-ccc/package.json @@ -1,6 +1,6 @@ { "name": "ckb-ccc", - "version": "1.0.33", + "version": "1.0.34", "description": "CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/connector-react/CHANGELOG.md b/packages/connector-react/CHANGELOG.md index edd53e02a..89e1547b2 100644 --- a/packages/connector-react/CHANGELOG.md +++ b/packages/connector-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/connector-react +## 1.0.36 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346)]: + - @ckb-ccc/connector@1.0.34 + ## 1.0.35 ### Patch Changes diff --git a/packages/connector-react/package.json b/packages/connector-react/package.json index 90030c481..cff118b81 100644 --- a/packages/connector-react/package.json +++ b/packages/connector-react/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/connector-react", - "version": "1.0.35", + "version": "1.0.36", "description": "CCC - CKBer's Codebase. Common Chains Connector UI Component for React", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/connector/CHANGELOG.md b/packages/connector/CHANGELOG.md index de88116f2..2331877da 100644 --- a/packages/connector/CHANGELOG.md +++ b/packages/connector/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/connector +## 1.0.34 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346)]: + - @ckb-ccc/ccc@1.1.26 + ## 1.0.33 ### Patch Changes diff --git a/packages/connector/package.json b/packages/connector/package.json index c69e3e478..aad84ae73 100644 --- a/packages/connector/package.json +++ b/packages/connector/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/connector", - "version": "1.0.33", + "version": "1.0.34", "description": "CCC - CKBer's Codebase. Common Chains Connector UI", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index d8b38dca3..2531b7028 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,49 @@ # @ckb-ccc/core +## 1.13.0 +### Minor Changes + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): extract a universal `Codec` from `mol.Codec` + + + +- [#314](https://github.com/ckb-devrel/ccc/pull/314) [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d) Thanks [@phroi](https://github.com/phroi)! - feat(Epoch): transform `Epoch` into a class and add utilities + + + +- [#346](https://github.com/ckb-devrel/ccc/pull/346) [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72) Thanks [@fghdotio](https://github.com/fghdotio)! - feat(core): add BTC PSBT signing support + + - Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs + - Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing + + +- [#314](https://github.com/ckb-devrel/ccc/pull/314) [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d) Thanks [@phroi](https://github.com/phroi)! - feat(core): `mol.padding` for padding codec + + + +- [#359](https://github.com/ckb-devrel/ccc/pull/359) [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e) Thanks [@phroi](https://github.com/phroi)! - feat(core): add isDaoOutputLimitExceeded utility for NervosDAO 64-output guard + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): add known script did ckb + + + +- [#380](https://github.com/ckb-devrel/ccc/pull/380) [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat: bump @noble packages + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): auto complete cell capacity if it's not enough + + +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + ## 1.12.5 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 1cf3e0624..df5b592be 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/core", - "version": "1.12.5", + "version": "1.13.0", "description": "Core of CCC - CKBer's Codebase", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/did-ckb/CHANGELOG.md b/packages/did-ckb/CHANGELOG.md new file mode 100644 index 000000000..33e73583a --- /dev/null +++ b/packages/did-ckb/CHANGELOG.md @@ -0,0 +1,30 @@ +# @ckb-ccc/did-ckb + +## 0.1.0 +### Minor Changes + + + +- [#376](https://github.com/ckb-devrel/ccc/pull/376) [`ce2b005`](https://github.com/ckb-devrel/ccc/commit/ce2b005b2c20bdd8736f78e7f286b8acb40e80e5) Thanks [@truthixify](https://github.com/truthixify)! - feat(did-ckb): identifier helpers, resolver, history walk, and did:plc migration + + Layered on top of the basic create/transfer/destroy operations: + + - `argsToDid`, `didToArgs`, `isDidCkb`, plus RFC 4648 base32 helpers for converting between Type ID args and the human readable `did:ckb:` URI form (WIP-01 §2.2) + - `findDidCkbCell`, `resolveDidCkb`, `listDidCkbsByLock` for resolving a DID by id or by owning lock + - `getDidCkbHistory` walks the cell chain backwards to produce an ordered list of CREATE / UPDATE / MIGRATE entries with tx hash, block number, capacity, and decoded data + - `migrateDidCkb` + `buildMigrationWitness` for importing a `did:plc` into `did:ckb` (WIP-02 §3.1.1) + - `@ckb-ccc/did-ckb/plc` subpath with `fetchPlcLog`, `parseDidKey`, `signRotationHash`, `verifyPrivateKeyMatch` so the curve code only ships to consumers that need it + +### Patch Changes + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`0366786`](https://github.com/ckb-devrel/ccc/commit/03667865d1bc6d091d9144d39f6b434abe4ce18b) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(did-ckb): add did-ckb package for basic did operations + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`3bd5130`](https://github.com/ckb-devrel/ccc/commit/3bd51300d9602482dd781752f618f6cfd642675c), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + - @ckb-ccc/type-id@0.0.1 diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index 623275229..6f060b351 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/did-ckb", - "version": "0.0.0", + "version": "0.1.0", "description": "CCC - CKBer's Codebase. CCC's support for DID on CKB", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/eip6963/CHANGELOG.md b/packages/eip6963/CHANGELOG.md index d24327fe2..13f50cc74 100644 --- a/packages/eip6963/CHANGELOG.md +++ b/packages/eip6963/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/eip6963 +## 1.0.33 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/eip6963/package.json b/packages/eip6963/package.json index 43ecee14b..3f1e0e606 100644 --- a/packages/eip6963/package.json +++ b/packages/eip6963/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/eip6963", - "version": "1.0.32", + "version": "1.0.33", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for EIP6963", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/joy-id/CHANGELOG.md b/packages/joy-id/CHANGELOG.md index 08e97fb14..7f4fafd34 100644 --- a/packages/joy-id/CHANGELOG.md +++ b/packages/joy-id/CHANGELOG.md @@ -1,5 +1,21 @@ # @ckb-ccc/joy-id +## 1.0.33 +### Patch Changes + + + +- [#346](https://github.com/ckb-devrel/ccc/pull/346) [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72) Thanks [@fghdotio](https://github.com/fghdotio)! - feat(core): add BTC PSBT signing support + + - Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs + - Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/joy-id/package.json b/packages/joy-id/package.json index 984405e59..dcecf366e 100644 --- a/packages/joy-id/package.json +++ b/packages/joy-id/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/joy-id", - "version": "1.0.32", + "version": "1.0.33", "description": "Connector's support for JoyID", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/lumos-patches/CHANGELOG.md b/packages/lumos-patches/CHANGELOG.md index be15c1dda..9da257740 100644 --- a/packages/lumos-patches/CHANGELOG.md +++ b/packages/lumos-patches/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/lumos-patches +## 1.0.33 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/lumos-patches/package.json b/packages/lumos-patches/package.json index 3981412db..b8e8bd90c 100644 --- a/packages/lumos-patches/package.json +++ b/packages/lumos-patches/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/lumos-patches", - "version": "1.0.32", + "version": "1.0.33", "description": "Patches for using Lumos with CCC", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/nip07/CHANGELOG.md b/packages/nip07/CHANGELOG.md index ed235f187..cc067fb09 100644 --- a/packages/nip07/CHANGELOG.md +++ b/packages/nip07/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/nip07 +## 1.0.33 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/nip07/package.json b/packages/nip07/package.json index d4ae5c33b..324b2e11c 100644 --- a/packages/nip07/package.json +++ b/packages/nip07/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/nip07", - "version": "1.0.32", + "version": "1.0.33", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for NIP07", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/okx/CHANGELOG.md b/packages/okx/CHANGELOG.md index 2bb5ea4b4..4ff45d568 100644 --- a/packages/okx/CHANGELOG.md +++ b/packages/okx/CHANGELOG.md @@ -1,5 +1,23 @@ # @ckb-ccc/okx +## 1.0.33 +### Patch Changes + + + +- [#346](https://github.com/ckb-devrel/ccc/pull/346) [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72) Thanks [@fghdotio](https://github.com/fghdotio)! - feat(core): add BTC PSBT signing support + + - Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs + - Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + - @ckb-ccc/uni-sat@1.0.33 + - @ckb-ccc/nip07@1.0.33 + ## 1.0.32 ### Patch Changes diff --git a/packages/okx/package.json b/packages/okx/package.json index 0facc6db8..51ba482a2 100644 --- a/packages/okx/package.json +++ b/packages/okx/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/okx", - "version": "1.0.32", + "version": "1.0.33", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for OKX", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/rei/CHANGELOG.md b/packages/rei/CHANGELOG.md index 06a0540c8..99d3e4eff 100644 --- a/packages/rei/CHANGELOG.md +++ b/packages/rei/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/rei +## 1.0.33 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/rei/package.json b/packages/rei/package.json index a791781b6..79c258f59 100644 --- a/packages/rei/package.json +++ b/packages/rei/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/rei", - "version": "1.0.32", + "version": "1.0.33", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for Rei", "license": "MIT", "private": false, diff --git a/packages/shell/CHANGELOG.md b/packages/shell/CHANGELOG.md index d852be1cb..190cc120d 100644 --- a/packages/shell/CHANGELOG.md +++ b/packages/shell/CHANGELOG.md @@ -1,5 +1,31 @@ # @ckb-ccc/shell +## 1.2.0 +### Minor Changes + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`3bd5130`](https://github.com/ckb-devrel/ccc/commit/3bd51300d9602482dd781752f618f6cfd642675c) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(type-id): add type-id package for Type ID operations + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`0366786`](https://github.com/ckb-devrel/ccc/commit/03667865d1bc6d091d9144d39f6b434abe4ce18b) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(did-ckb): add did-ckb package for basic did operations + + +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`ce2b005`](https://github.com/ckb-devrel/ccc/commit/ce2b005b2c20bdd8736f78e7f286b8acb40e80e5), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`3bd5130`](https://github.com/ckb-devrel/ccc/commit/3bd51300d9602482dd781752f618f6cfd642675c), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`0366786`](https://github.com/ckb-devrel/ccc/commit/03667865d1bc6d091d9144d39f6b434abe4ce18b), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + - @ckb-ccc/did-ckb@0.1.0 + - @ckb-ccc/type-id@0.0.1 + - @ckb-ccc/spore@1.5.18 + - @ckb-ccc/ssri@0.2.23 + - @ckb-ccc/udt@0.1.25 + ## 1.1.25 ### Patch Changes diff --git a/packages/shell/package.json b/packages/shell/package.json index 4969af8a3..b3704f48d 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/shell", - "version": "1.1.25", + "version": "1.2.0", "description": "Backend Shell of CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/spore/CHANGELOG.md b/packages/spore/CHANGELOG.md index a08014292..90bc7cfc2 100644 --- a/packages/spore/CHANGELOG.md +++ b/packages/spore/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/spore +## 1.5.18 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.5.17 ### Patch Changes diff --git a/packages/spore/package.json b/packages/spore/package.json index d69db11f4..0addd20c4 100644 --- a/packages/spore/package.json +++ b/packages/spore/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/spore", - "version": "1.5.17", + "version": "1.5.18", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for Spore protocol", "author": "ashuralyk ", "license": "MIT", diff --git a/packages/ssri/CHANGELOG.md b/packages/ssri/CHANGELOG.md index ea5124808..fec030931 100644 --- a/packages/ssri/CHANGELOG.md +++ b/packages/ssri/CHANGELOG.md @@ -1,5 +1,15 @@ # @ckb-ccc/ssri +## 0.2.23 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 0.2.22 ### Patch Changes diff --git a/packages/ssri/package.json b/packages/ssri/package.json index 4bfbe54c7..4684d53d8 100644 --- a/packages/ssri/package.json +++ b/packages/ssri/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/ssri", - "version": "0.2.22", + "version": "0.2.23", "description": "SSRI", "author": "Alive24 ", "license": "MIT", diff --git a/packages/type-id/CHANGELOG.md b/packages/type-id/CHANGELOG.md new file mode 100644 index 000000000..a69bf0a44 --- /dev/null +++ b/packages/type-id/CHANGELOG.md @@ -0,0 +1,15 @@ +# @ckb-ccc/type-id + +## 0.0.1 +### Patch Changes + + + +- [#337](https://github.com/ckb-devrel/ccc/pull/337) [`3bd5130`](https://github.com/ckb-devrel/ccc/commit/3bd51300d9602482dd781752f618f6cfd642675c) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(type-id): add type-id package for Type ID operations + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 diff --git a/packages/type-id/package.json b/packages/type-id/package.json index 5afb9bc5f..851b36a35 100644 --- a/packages/type-id/package.json +++ b/packages/type-id/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/type-id", - "version": "0.0.0", + "version": "0.0.1", "description": "CCC - CKBer's Codebase. CCC's support for Type ID", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/udt/CHANGELOG.md b/packages/udt/CHANGELOG.md index ce41eb66a..b0855ba1b 100644 --- a/packages/udt/CHANGELOG.md +++ b/packages/udt/CHANGELOG.md @@ -1,5 +1,16 @@ # @ckb-ccc/udt +## 0.1.25 +### Patch Changes + + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + - @ckb-ccc/ssri@0.2.23 + ## 0.1.24 ### Patch Changes diff --git a/packages/udt/package.json b/packages/udt/package.json index 6f48e6346..d9a6df939 100644 --- a/packages/udt/package.json +++ b/packages/udt/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/udt", - "version": "0.1.24", + "version": "0.1.25", "description": "UDT", "author": "Alive24 ", "license": "MIT", diff --git a/packages/uni-sat/CHANGELOG.md b/packages/uni-sat/CHANGELOG.md index 98fc5fea8..1e9f57b7c 100644 --- a/packages/uni-sat/CHANGELOG.md +++ b/packages/uni-sat/CHANGELOG.md @@ -1,5 +1,21 @@ # @ckb-ccc/uni-sat +## 1.0.33 +### Patch Changes + + + +- [#346](https://github.com/ckb-devrel/ccc/pull/346) [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72) Thanks [@fghdotio](https://github.com/fghdotio)! - feat(core): add BTC PSBT signing support + + - Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs + - Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/uni-sat/package.json b/packages/uni-sat/package.json index a7013aed8..2cda71e93 100644 --- a/packages/uni-sat/package.json +++ b/packages/uni-sat/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/uni-sat", - "version": "1.0.32", + "version": "1.0.33", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for UniSat", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/utxo-global/CHANGELOG.md b/packages/utxo-global/CHANGELOG.md index fd93bc7c5..9df9afbbd 100644 --- a/packages/utxo-global/CHANGELOG.md +++ b/packages/utxo-global/CHANGELOG.md @@ -1,5 +1,21 @@ # @ckb-ccc/utxo-global +## 1.0.33 +### Patch Changes + + + +- [#346](https://github.com/ckb-devrel/ccc/pull/346) [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72) Thanks [@fghdotio](https://github.com/fghdotio)! - feat(core): add BTC PSBT signing support + + - Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs + - Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/utxo-global/package.json b/packages/utxo-global/package.json index b1872d8c8..b667105bf 100644 --- a/packages/utxo-global/package.json +++ b/packages/utxo-global/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/utxo-global", - "version": "1.0.32", + "version": "1.0.33", "description": "Common Chains Connector's support for UTXO Global", "author": "Trong Dinh ", "license": "MIT", diff --git a/packages/xverse/CHANGELOG.md b/packages/xverse/CHANGELOG.md index acacf9317..e545ee1d3 100644 --- a/packages/xverse/CHANGELOG.md +++ b/packages/xverse/CHANGELOG.md @@ -1,5 +1,21 @@ # @ckb-ccc/xverse +## 1.0.33 +### Patch Changes + + + +- [#346](https://github.com/ckb-devrel/ccc/pull/346) [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72) Thanks [@fghdotio](https://github.com/fghdotio)! - feat(core): add BTC PSBT signing support + + - Add `SignerBtc.signPsbt()`, `signAndBroadcastPsbt()`, and `broadcastPsbt()` for signing and broadcasting PSBTs + - Add `SignPsbtOptions` and `InputToSign` for configuring PSBT signing + + +- [#379](https://github.com/ckb-devrel/ccc/pull/379) [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump pnpm to v11.8.0 + +- Updated dependencies [[`1148a5c`](https://github.com/ckb-devrel/ccc/commit/1148a5c403cde985fb4ba713ccfa0c163d287174), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`a803d5f`](https://github.com/ckb-devrel/ccc/commit/a803d5fba8d0e082c6aba14db156856025402e72), [`bf0f8d8`](https://github.com/ckb-devrel/ccc/commit/bf0f8d8ca011e627821445a10bc38519510e5b9d), [`6727ffe`](https://github.com/ckb-devrel/ccc/commit/6727ffe05f60e6bfb2060a565c19acb0fd0f375e), [`f01a05b`](https://github.com/ckb-devrel/ccc/commit/f01a05bab332d9f4e0cf7f84aecfd688f8e9f346), [`a526890`](https://github.com/ckb-devrel/ccc/commit/a5268909ea9d61c4e2f5187a43e2318327b27cae), [`4bb3d9d`](https://github.com/ckb-devrel/ccc/commit/4bb3d9d2ef36b3ee8820036625abd9befb1980c4), [`9f7ecb6`](https://github.com/ckb-devrel/ccc/commit/9f7ecb6ab8db9c6866dad029f2888e1e5cfcbe7d)]: + - @ckb-ccc/core@1.13.0 + ## 1.0.32 ### Patch Changes diff --git a/packages/xverse/package.json b/packages/xverse/package.json index 00d6bd63a..584a5c274 100644 --- a/packages/xverse/package.json +++ b/packages/xverse/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/xverse", - "version": "1.0.32", + "version": "1.0.33", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for Xverse", "author": "Hanssen0 ", "license": "MIT", From f4c557441c3ea66b8ef215390bcdf3d14c76b55c Mon Sep 17 00:00:00 2001 From: Hanssen0 <0@hanssen0.com> Date: Tue, 23 Jun 2026 00:49:46 +0800 Subject: [PATCH 39/42] chore: bump typescript to v6 --- .gitignore | 1 + config/tsconfig.base.json | 22 - config/tsconfig.commonjs.json | 8 - config/tsconfig.json | 23 +- config/tsdown.config.mts | 43 + package.json | 2 +- packages/ccc/package.json | 5 +- packages/ccc/tsconfig.base.json | 3 +- packages/ckb-ccc/package.json | 5 +- packages/ckb-ccc/tsconfig.base.json | 3 +- packages/connector-react/package.json | 9 +- packages/connector-react/tsconfig.base.json | 3 +- packages/connector/package.json | 5 +- packages/connector/tsconfig.base.json | 3 +- packages/core/package.json | 15 +- packages/core/tsconfig.base.json | 22 - packages/core/tsconfig.commonjs.json | 8 - packages/core/tsconfig.json | 23 +- packages/core/tsdown.config.mts | 15 +- packages/did-ckb/package.json | 23 +- packages/did-ckb/tsconfig.base.json | 22 - packages/did-ckb/tsconfig.commonjs.json | 8 - packages/did-ckb/tsconfig.json | 23 +- packages/did-ckb/tsdown.config.mts | 29 +- packages/eip6963/package.json | 33 +- packages/eip6963/tsconfig.base.json | 22 - packages/eip6963/tsconfig.commonjs.json | 8 - packages/eip6963/tsconfig.json | 23 +- packages/eip6963/tsdown.config.mts | 42 + packages/examples/package.json | 8 +- packages/examples/tsconfig.base.json | 22 - packages/examples/tsconfig.commonjs.json | 8 - packages/examples/tsconfig.json | 23 +- packages/examples/tsdown.config.mts | 21 + packages/joy-id/package.json | 36 +- packages/joy-id/tsconfig.base.json | 22 - packages/joy-id/tsconfig.commonjs.json | 8 - packages/joy-id/tsconfig.json | 23 +- packages/joy-id/tsdown.config.mts | 43 + packages/lumos-patches/package.json | 24 +- packages/lumos-patches/tsconfig.base.json | 22 - packages/lumos-patches/tsconfig.commonjs.json | 8 - packages/lumos-patches/tsconfig.json | 23 +- packages/lumos-patches/tsdown.config.mts | 40 + packages/nip07/package.json | 33 +- packages/nip07/tsconfig.base.json | 22 - packages/nip07/tsconfig.commonjs.json | 8 - packages/nip07/tsconfig.json | 23 +- packages/nip07/tsdown.config.mts | 42 + packages/okx/package.json | 37 +- packages/okx/tsconfig.base.json | 22 - packages/okx/tsconfig.commonjs.json | 8 - packages/okx/tsconfig.json | 23 +- packages/okx/tsdown.config.mts | 43 + packages/rei/package.json | 43 +- packages/rei/tsconfig.base.json | 22 - packages/rei/tsconfig.commonjs.json | 8 - packages/rei/tsconfig.json | 23 +- packages/rei/tsdown.config.mts | 43 + packages/shell/package.json | 5 +- packages/shell/tsconfig.base.json | 3 +- .../__examples__/createDobCluster.test.ts | 0 .../__examples__/createDobSpore.test.ts | 2 +- .../createSporeWithoutCluster.test.ts | 0 .../{src => }/__examples__/decodeDob.test.ts | 0 .../{src => }/__examples__/meltSpore.test.ts | 0 .../__examples__/meltThenCreateSpore.test.ts | 0 .../__examples__/searchClusters.test.ts | 0 .../__examples__/searchSpores.test.ts | 0 .../__examples__/transferCluster.test.ts | 0 .../__examples__/transferSpore.test.ts | 0 packages/spore/package.json | 43 +- packages/spore/tsconfig.base.json | 22 - packages/spore/tsconfig.commonjs.json | 8 - packages/spore/tsconfig.json | 23 +- packages/spore/tsdown.config.mts | 43 + packages/ssri/package.json | 25 +- packages/ssri/tsconfig.base.json | 22 - packages/ssri/tsconfig.commonjs.json | 8 - packages/ssri/tsconfig.json | 23 +- packages/ssri/tsdown.config.mts | 41 + packages/tests/package.json | 7 +- packages/tests/tsconfig.base.json | 22 - packages/tests/tsconfig.commonjs.json | 8 - packages/tests/tsconfig.json | 24 +- packages/tests/tsdown.config.mts | 43 + packages/type-id/package.json | 20 +- packages/type-id/tsconfig.base.json | 22 - packages/type-id/tsconfig.commonjs.json | 8 - packages/type-id/tsconfig.json | 23 +- packages/type-id/tsdown.config.mts | 27 +- packages/udt/package.json | 27 +- packages/udt/tsconfig.base.json | 22 - packages/udt/tsconfig.commonjs.json | 8 - packages/udt/tsconfig.json | 23 +- packages/udt/tsdown.config.mts | 41 + packages/uni-sat/package.json | 43 +- packages/uni-sat/tsconfig.base.json | 22 - packages/uni-sat/tsconfig.commonjs.json | 8 - packages/uni-sat/tsconfig.json | 23 +- packages/uni-sat/tsdown.config.mts | 43 + packages/utxo-global/package.json | 43 +- packages/utxo-global/tsconfig.base.json | 22 - packages/utxo-global/tsconfig.commonjs.json | 8 - packages/utxo-global/tsconfig.json | 23 +- packages/utxo-global/tsdown.config.mts | 43 + packages/xverse/package.json | 41 +- packages/xverse/tsconfig.base.json | 22 - packages/xverse/tsconfig.commonjs.json | 8 - packages/xverse/tsconfig.json | 23 +- packages/xverse/tsdown.config.mts | 43 + pnpm-lock.yaml | 1145 ++++++++++------- 112 files changed, 2009 insertions(+), 1326 deletions(-) delete mode 100644 config/tsconfig.base.json delete mode 100644 config/tsconfig.commonjs.json create mode 100644 config/tsdown.config.mts delete mode 100644 packages/core/tsconfig.base.json delete mode 100644 packages/core/tsconfig.commonjs.json delete mode 100644 packages/did-ckb/tsconfig.base.json delete mode 100644 packages/did-ckb/tsconfig.commonjs.json delete mode 100644 packages/eip6963/tsconfig.base.json delete mode 100644 packages/eip6963/tsconfig.commonjs.json create mode 100644 packages/eip6963/tsdown.config.mts delete mode 100644 packages/examples/tsconfig.base.json delete mode 100644 packages/examples/tsconfig.commonjs.json create mode 100644 packages/examples/tsdown.config.mts delete mode 100644 packages/joy-id/tsconfig.base.json delete mode 100644 packages/joy-id/tsconfig.commonjs.json create mode 100644 packages/joy-id/tsdown.config.mts delete mode 100644 packages/lumos-patches/tsconfig.base.json delete mode 100644 packages/lumos-patches/tsconfig.commonjs.json create mode 100644 packages/lumos-patches/tsdown.config.mts delete mode 100644 packages/nip07/tsconfig.base.json delete mode 100644 packages/nip07/tsconfig.commonjs.json create mode 100644 packages/nip07/tsdown.config.mts delete mode 100644 packages/okx/tsconfig.base.json delete mode 100644 packages/okx/tsconfig.commonjs.json create mode 100644 packages/okx/tsdown.config.mts delete mode 100644 packages/rei/tsconfig.base.json delete mode 100644 packages/rei/tsconfig.commonjs.json create mode 100644 packages/rei/tsdown.config.mts rename packages/spore/{src => }/__examples__/createDobCluster.test.ts (100%) rename packages/spore/{src => }/__examples__/createDobSpore.test.ts (97%) rename packages/spore/{src => }/__examples__/createSporeWithoutCluster.test.ts (100%) rename packages/spore/{src => }/__examples__/decodeDob.test.ts (100%) rename packages/spore/{src => }/__examples__/meltSpore.test.ts (100%) rename packages/spore/{src => }/__examples__/meltThenCreateSpore.test.ts (100%) rename packages/spore/{src => }/__examples__/searchClusters.test.ts (100%) rename packages/spore/{src => }/__examples__/searchSpores.test.ts (100%) rename packages/spore/{src => }/__examples__/transferCluster.test.ts (100%) rename packages/spore/{src => }/__examples__/transferSpore.test.ts (100%) delete mode 100644 packages/spore/tsconfig.base.json delete mode 100644 packages/spore/tsconfig.commonjs.json create mode 100644 packages/spore/tsdown.config.mts delete mode 100644 packages/ssri/tsconfig.base.json delete mode 100644 packages/ssri/tsconfig.commonjs.json create mode 100644 packages/ssri/tsdown.config.mts delete mode 100644 packages/tests/tsconfig.base.json delete mode 100644 packages/tests/tsconfig.commonjs.json create mode 100644 packages/tests/tsdown.config.mts delete mode 100644 packages/type-id/tsconfig.base.json delete mode 100644 packages/type-id/tsconfig.commonjs.json delete mode 100644 packages/udt/tsconfig.base.json delete mode 100644 packages/udt/tsconfig.commonjs.json create mode 100644 packages/udt/tsdown.config.mts delete mode 100644 packages/uni-sat/tsconfig.base.json delete mode 100644 packages/uni-sat/tsconfig.commonjs.json create mode 100644 packages/uni-sat/tsdown.config.mts delete mode 100644 packages/utxo-global/tsconfig.base.json delete mode 100644 packages/utxo-global/tsconfig.commonjs.json create mode 100644 packages/utxo-global/tsdown.config.mts delete mode 100644 packages/xverse/tsconfig.base.json delete mode 100644 packages/xverse/tsconfig.commonjs.json create mode 100644 packages/xverse/tsdown.config.mts diff --git a/.gitignore b/.gitignore index 2ae4b0725..95cb4ec71 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ lerna-debug.log coverage packages/*/dist* +*.tsbuildinfo .vscode .env* diff --git a/config/tsconfig.base.json b/config/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/config/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/config/tsconfig.commonjs.json b/config/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/config/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/config/tsconfig.json b/config/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/config/tsconfig.json +++ b/config/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/config/tsdown.config.mts b/config/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/config/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/package.json b/package.json index 7a14f8552..e9fc8201a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "typedoc-material-theme": "^1.4.0", "typedoc-plugin-extras": "^4.0.1", "typedoc-plugin-ga": "^1.0.5", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "vitest": "^3.2.4" }, "packageManager": "pnpm@11.8.0" diff --git a/packages/ccc/package.json b/packages/ccc/package.json index 49397360a..1ed909c59 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -36,7 +36,7 @@ } }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, @@ -48,8 +48,7 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { diff --git a/packages/ccc/tsconfig.base.json b/packages/ccc/tsconfig.base.json index 7e5ac952b..41af24499 100644 --- a/packages/ccc/tsconfig.base.json +++ b/packages/ccc/tsconfig.base.json @@ -16,7 +16,8 @@ "alwaysStrict": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, - "skipLibCheck": true + "skipLibCheck": true, + "rootDir": "./src" }, "include": ["src/**/*"] } diff --git a/packages/ckb-ccc/package.json b/packages/ckb-ccc/package.json index 7f7b7d8ee..2d0c9d16a 100644 --- a/packages/ckb-ccc/package.json +++ b/packages/ckb-ccc/package.json @@ -13,7 +13,7 @@ "main": "dist.commonjs/index.js", "module": "dist/index.js", "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, @@ -25,8 +25,7 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { diff --git a/packages/ckb-ccc/tsconfig.base.json b/packages/ckb-ccc/tsconfig.base.json index 7e5ac952b..41af24499 100644 --- a/packages/ckb-ccc/tsconfig.base.json +++ b/packages/ckb-ccc/tsconfig.base.json @@ -16,7 +16,8 @@ "alwaysStrict": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, - "skipLibCheck": true + "skipLibCheck": true, + "rootDir": "./src" }, "include": ["src/**/*"] } diff --git a/packages/connector-react/package.json b/packages/connector-react/package.json index 90030c481..4b3297c58 100644 --- a/packages/connector-react/package.json +++ b/packages/connector-react/package.json @@ -19,7 +19,7 @@ "./advanced": "./dist/advanced.js" }, "scripts": { - "build": "rimraf ./dist && tsc", + "build": "tsc", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, @@ -30,8 +30,7 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -42,8 +41,8 @@ "@lit/react": "^1.0.8" }, "peerDependencies": { - "react": ">=16", - "@types/react": ">=16" + "@types/react": ">=16", + "react": ">=16" }, "packageManager": "pnpm@11.8.0" } diff --git a/packages/connector-react/tsconfig.base.json b/packages/connector-react/tsconfig.base.json index 3e8ccc480..6c53450b0 100644 --- a/packages/connector-react/tsconfig.base.json +++ b/packages/connector-react/tsconfig.base.json @@ -17,7 +17,8 @@ "alwaysStrict": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, - "skipLibCheck": true + "skipLibCheck": true, + "rootDir": "./src" }, "include": ["src/**/*"] } diff --git a/packages/connector/package.json b/packages/connector/package.json index c69e3e478..49142cedd 100644 --- a/packages/connector/package.json +++ b/packages/connector/package.json @@ -19,7 +19,7 @@ "./advanced": "./dist/advanced.js" }, "scripts": { - "build": "rimraf ./dist && tsc", + "build": "tsc", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, @@ -30,8 +30,7 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { diff --git a/packages/connector/tsconfig.base.json b/packages/connector/tsconfig.base.json index 7e5ac952b..41af24499 100644 --- a/packages/connector/tsconfig.base.json +++ b/packages/connector/tsconfig.base.json @@ -16,7 +16,8 @@ "alwaysStrict": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, - "skipLibCheck": true + "skipLibCheck": true, + "rootDir": "./src" }, "include": ["src/**/*"] } diff --git a/packages/core/package.json b/packages/core/package.json index 1cf3e0624..1c194beb4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -48,7 +48,7 @@ "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", "tsdown": "0.22.3", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0", "vitest": "^3.2.4" }, @@ -68,5 +68,16 @@ "ws": "^8.18.3" }, "packageManager": "pnpm@11.8.0", - "types": "./dist.commonjs/index.d.ts" + "types": "./dist.commonjs/index.d.ts", + "inlinedDependencies": { + "@noble/ciphers": "2.2.0", + "@noble/curves": "2.2.0", + "@noble/hashes": [ + "1.8.0", + "2.2.0" + ], + "base-x": "5.0.1", + "bs58": "6.0.0", + "bs58check": "4.0.0" + } } diff --git a/packages/core/tsconfig.base.json b/packages/core/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/core/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/core/tsconfig.commonjs.json b/packages/core/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/core/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/core/tsdown.config.mts b/packages/core/tsdown.config.mts index 4fec3d5b6..6d0a39add 100644 --- a/packages/core/tsdown.config.mts +++ b/packages/core/tsdown.config.mts @@ -16,10 +16,15 @@ const entry = { } as const; const bundleDeps = [ + "@noble/curves", + "@noble/hashes", + "@noble/ciphers", "@noble/curves/*", "@noble/hashes/*", "@noble/ciphers/*", "bs58check", + "bs58", // By bs58check + "base-x", // By bs58 - bs58check ] as string[]; export default defineConfig( @@ -27,14 +32,18 @@ export default defineConfig( [ { entry, - onlyBundle: [], + deps: { + onlyBundle: [] as string[], + }, format: "esm", copy: "./misc/basedirs/dist/*", }, { entry, - alwaysBundle: bundleDeps, - onlyBundle: bundleDeps, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, format: "cjs", outDir: "dist.commonjs", copy: "./misc/basedirs/dist.commonjs/*", diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index 623275229..aa3f5499c 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -14,16 +14,16 @@ "module": "./dist/index.mjs", "exports": { ".": { - "require": "./dist.commonjs/index.js", - "import": "./dist/index.mjs" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./barrel": { - "require": "./dist.commonjs/barrel.js", - "import": "./dist/barrel.mjs" + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" }, "./plc": { - "require": "./dist.commonjs/plc.js", - "import": "./dist/plc.mjs" + "import": "./dist/plc.mjs", + "require": "./dist.commonjs/plc.js" }, "./package.json": "./package.json" }, @@ -42,8 +42,8 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "tsdown": "0.19.0-beta.3", - "typescript": "^5.9.2", + "tsdown": "^0.22.3", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0", "vitest": "^3.2.4" }, @@ -57,5 +57,10 @@ "@noble/curves": "^2.2.0" }, "packageManager": "pnpm@11.8.0", - "types": "./dist.commonjs/index.d.ts" + "types": "./dist.commonjs/index.d.ts", + "inlinedDependencies": { + "@ipld/dag-cbor": "9.2.5", + "cborg": "4.3.2", + "multiformats": "13.4.2" + } } diff --git a/packages/did-ckb/tsconfig.base.json b/packages/did-ckb/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/did-ckb/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/did-ckb/tsconfig.commonjs.json b/packages/did-ckb/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/did-ckb/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/did-ckb/tsconfig.json b/packages/did-ckb/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/did-ckb/tsconfig.json +++ b/packages/did-ckb/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/did-ckb/tsdown.config.mts b/packages/did-ckb/tsdown.config.mts index a8e2efae5..6739731bf 100644 --- a/packages/did-ckb/tsdown.config.mts +++ b/packages/did-ckb/tsdown.config.mts @@ -4,28 +4,39 @@ const common = { minify: true, dts: true, platform: "neutral" as const, + sourcemap: true, exports: true, }; +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + plc: "src/plc/index.ts", +} as const; + +const bundleDeps = [ + "@ipld/dag-cbor", + "cborg", // By @ipld/dag-cbor + "multiformats", // By @ipld/dag-cbor +] as string[]; + export default defineConfig( ( [ { - entry: { - index: "src/index.ts", - barrel: "src/barrel.ts", - plc: "src/plc/index.ts", + entry, + deps: { + onlyBundle: [] as string[], }, format: "esm", copy: "./misc/basedirs/dist/*", }, { - entry: { - index: "src/index.ts", - barrel: "src/barrel.ts", - plc: "src/plc/index.ts", + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, }, - noExternal: ["@ipld/dag-cbor"] as string[], format: "cjs", outDir: "dist.commonjs", copy: "./misc/basedirs/dist.commonjs/*", diff --git a/packages/eip6963/package.json b/packages/eip6963/package.json index 43ecee14b..aa7c81932 100644 --- a/packages/eip6963/package.json +++ b/packages/eip6963/package.json @@ -11,42 +11,45 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" - } + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*" + "@ckb-ccc/core": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/eip6963/tsconfig.base.json b/packages/eip6963/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/eip6963/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/eip6963/tsconfig.commonjs.json b/packages/eip6963/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/eip6963/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/eip6963/tsconfig.json b/packages/eip6963/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/eip6963/tsconfig.json +++ b/packages/eip6963/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/eip6963/tsdown.config.mts b/packages/eip6963/tsdown.config.mts new file mode 100644 index 000000000..c7a5622fb --- /dev/null +++ b/packages/eip6963/tsdown.config.mts @@ -0,0 +1,42 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/examples/package.json b/packages/examples/package.json index 9883a97ad..831145691 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -11,7 +11,7 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "scripts": { - "build": "rimraf ./dist && tsc", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, @@ -22,8 +22,7 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -33,7 +32,8 @@ "@ckb-ccc/ccc": "workspace:*", "@ckb-ccc/playground": "file:src/playground", "@noble/curves": "^2.2.0", - "@noble/hashes": "^2.2.0" + "@noble/hashes": "^2.2.0", + "tsdown": "^0.22.3" }, "packageManager": "pnpm@11.8.0" } diff --git a/packages/examples/tsconfig.base.json b/packages/examples/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/examples/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/examples/tsconfig.commonjs.json b/packages/examples/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/examples/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/examples/tsconfig.json b/packages/examples/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/examples/tsconfig.json +++ b/packages/examples/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/examples/tsdown.config.mts b/packages/examples/tsdown.config.mts new file mode 100644 index 000000000..f654b7890 --- /dev/null +++ b/packages/examples/tsdown.config.mts @@ -0,0 +1,21 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: false, + platform: "neutral" as const, + sourcemap: false, + exports: false, +}; + +const entry = "src/*.ts" as const; + +export default defineConfig({ + ...common, + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", +}); diff --git a/packages/joy-id/package.json b/packages/joy-id/package.json index 984405e59..49f860790 100644 --- a/packages/joy-id/package.json +++ b/packages/joy-id/package.json @@ -11,30 +11,40 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" - } + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" + }, + "./advanced": { + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" + }, + "./advancedBarrel": { + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -43,7 +53,9 @@ "dependencies": { "@ckb-ccc/core": "workspace:*", "@joyid/ckb": "^1.1.2", - "@joyid/common": "^0.2.1" + "@joyid/common": "^0.2.1", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/joy-id/tsconfig.base.json b/packages/joy-id/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/joy-id/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/joy-id/tsconfig.commonjs.json b/packages/joy-id/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/joy-id/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/joy-id/tsconfig.json b/packages/joy-id/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/joy-id/tsconfig.json +++ b/packages/joy-id/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/joy-id/tsdown.config.mts b/packages/joy-id/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/joy-id/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/lumos-patches/package.json b/packages/lumos-patches/package.json index 3981412db..0b50c4aee 100644 --- a/packages/lumos-patches/package.json +++ b/packages/lumos-patches/package.json @@ -11,30 +11,28 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" - } + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -47,7 +45,9 @@ "@ckb-lumos/common-scripts": "0.24.0-next.2", "@ckb-lumos/config-manager": "0.24.0-next.2", "@ckb-lumos/helpers": "0.24.0-next.2", - "@joyid/ckb": "^1.1.2" + "@joyid/ckb": "^1.1.2", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/lumos-patches/tsconfig.base.json b/packages/lumos-patches/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/lumos-patches/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/lumos-patches/tsconfig.commonjs.json b/packages/lumos-patches/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/lumos-patches/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/lumos-patches/tsconfig.json b/packages/lumos-patches/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/lumos-patches/tsconfig.json +++ b/packages/lumos-patches/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/lumos-patches/tsdown.config.mts b/packages/lumos-patches/tsdown.config.mts new file mode 100644 index 000000000..bc46723c0 --- /dev/null +++ b/packages/lumos-patches/tsdown.config.mts @@ -0,0 +1,40 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/nip07/package.json b/packages/nip07/package.json index d4ae5c33b..213f5cb6b 100644 --- a/packages/nip07/package.json +++ b/packages/nip07/package.json @@ -11,42 +11,45 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" - } + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*" + "@ckb-ccc/core": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/nip07/tsconfig.base.json b/packages/nip07/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/nip07/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/nip07/tsconfig.commonjs.json b/packages/nip07/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/nip07/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/nip07/tsconfig.json b/packages/nip07/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/nip07/tsconfig.json +++ b/packages/nip07/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/nip07/tsdown.config.mts b/packages/nip07/tsdown.config.mts new file mode 100644 index 000000000..c7a5622fb --- /dev/null +++ b/packages/nip07/tsdown.config.mts @@ -0,0 +1,42 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/okx/package.json b/packages/okx/package.json index 0facc6db8..03bee7c87 100644 --- a/packages/okx/package.json +++ b/packages/okx/package.json @@ -11,35 +11,40 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" - } + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" + }, + "./advancedBarrel": { + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -48,7 +53,9 @@ "dependencies": { "@ckb-ccc/core": "workspace:*", "@ckb-ccc/nip07": "workspace:*", - "@ckb-ccc/uni-sat": "workspace:*" + "@ckb-ccc/uni-sat": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/okx/tsconfig.base.json b/packages/okx/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/okx/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/okx/tsconfig.commonjs.json b/packages/okx/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/okx/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/okx/tsconfig.json b/packages/okx/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/okx/tsconfig.json +++ b/packages/okx/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/okx/tsdown.config.mts b/packages/okx/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/okx/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/rei/package.json b/packages/rei/package.json index a791781b6..1d45d26c0 100644 --- a/packages/rei/package.json +++ b/packages/rei/package.json @@ -10,52 +10,49 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" - }, - "./barrel": { - "import": "./dist/barrel.js", - "require": "./dist.commonjs/barrel.js", - "default": "./dist.commonjs/barrel.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "import": "./dist/advancedBarrel.js", - "require": "./dist.commonjs/advancedBarrel.js", - "default": "./dist.commonjs/advancedBarrel.js" - } + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*" + "@ckb-ccc/core": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/rei/tsconfig.base.json b/packages/rei/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/rei/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/rei/tsconfig.commonjs.json b/packages/rei/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/rei/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/rei/tsconfig.json b/packages/rei/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/rei/tsconfig.json +++ b/packages/rei/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/rei/tsdown.config.mts b/packages/rei/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/rei/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/shell/package.json b/packages/shell/package.json index 4969af8a3..d68c060d7 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -36,7 +36,7 @@ } }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, @@ -48,8 +48,7 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { diff --git a/packages/shell/tsconfig.base.json b/packages/shell/tsconfig.base.json index 7e5ac952b..41af24499 100644 --- a/packages/shell/tsconfig.base.json +++ b/packages/shell/tsconfig.base.json @@ -16,7 +16,8 @@ "alwaysStrict": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, - "skipLibCheck": true + "skipLibCheck": true, + "rootDir": "./src" }, "include": ["src/**/*"] } diff --git a/packages/spore/src/__examples__/createDobCluster.test.ts b/packages/spore/__examples__/createDobCluster.test.ts similarity index 100% rename from packages/spore/src/__examples__/createDobCluster.test.ts rename to packages/spore/__examples__/createDobCluster.test.ts diff --git a/packages/spore/src/__examples__/createDobSpore.test.ts b/packages/spore/__examples__/createDobSpore.test.ts similarity index 97% rename from packages/spore/src/__examples__/createDobSpore.test.ts rename to packages/spore/__examples__/createDobSpore.test.ts index 64f576c42..7855fe5cc 100644 --- a/packages/spore/src/__examples__/createDobSpore.test.ts +++ b/packages/spore/__examples__/createDobSpore.test.ts @@ -1,7 +1,7 @@ import { ccc } from "@ckb-ccc/core"; import { JsonRpcTransformers } from "@ckb-ccc/core/advanced"; import { describe, expect, it } from "vitest"; -import { createSpore } from "../index.js"; +import { createSpore } from "../src/index.js"; describe("createSpore [testnet]", () => { expect(process.env.PRIVATE_KEY).toBeDefined(); diff --git a/packages/spore/src/__examples__/createSporeWithoutCluster.test.ts b/packages/spore/__examples__/createSporeWithoutCluster.test.ts similarity index 100% rename from packages/spore/src/__examples__/createSporeWithoutCluster.test.ts rename to packages/spore/__examples__/createSporeWithoutCluster.test.ts diff --git a/packages/spore/src/__examples__/decodeDob.test.ts b/packages/spore/__examples__/decodeDob.test.ts similarity index 100% rename from packages/spore/src/__examples__/decodeDob.test.ts rename to packages/spore/__examples__/decodeDob.test.ts diff --git a/packages/spore/src/__examples__/meltSpore.test.ts b/packages/spore/__examples__/meltSpore.test.ts similarity index 100% rename from packages/spore/src/__examples__/meltSpore.test.ts rename to packages/spore/__examples__/meltSpore.test.ts diff --git a/packages/spore/src/__examples__/meltThenCreateSpore.test.ts b/packages/spore/__examples__/meltThenCreateSpore.test.ts similarity index 100% rename from packages/spore/src/__examples__/meltThenCreateSpore.test.ts rename to packages/spore/__examples__/meltThenCreateSpore.test.ts diff --git a/packages/spore/src/__examples__/searchClusters.test.ts b/packages/spore/__examples__/searchClusters.test.ts similarity index 100% rename from packages/spore/src/__examples__/searchClusters.test.ts rename to packages/spore/__examples__/searchClusters.test.ts diff --git a/packages/spore/src/__examples__/searchSpores.test.ts b/packages/spore/__examples__/searchSpores.test.ts similarity index 100% rename from packages/spore/src/__examples__/searchSpores.test.ts rename to packages/spore/__examples__/searchSpores.test.ts diff --git a/packages/spore/src/__examples__/transferCluster.test.ts b/packages/spore/__examples__/transferCluster.test.ts similarity index 100% rename from packages/spore/src/__examples__/transferCluster.test.ts rename to packages/spore/__examples__/transferCluster.test.ts diff --git a/packages/spore/src/__examples__/transferSpore.test.ts b/packages/spore/__examples__/transferSpore.test.ts similarity index 100% rename from packages/spore/src/__examples__/transferSpore.test.ts rename to packages/spore/__examples__/transferSpore.test.ts diff --git a/packages/spore/package.json b/packages/spore/package.json index d69db11f4..b780c104b 100644 --- a/packages/spore/package.json +++ b/packages/spore/package.json @@ -11,47 +11,42 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" - }, - "./barrel": { - "import": "./dist/barrel.js", - "require": "./dist.commonjs/barrel.js", - "default": "./dist.commonjs/barrel.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "import": "./dist/advancedBarrel.js", - "require": "./dist.commonjs/advancedBarrel.js", - "default": "./dist.commonjs/advancedBarrel.js" - } + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", "@types/node": "^24.3.0", - "copyfiles": "^2.4.1", "dotenv": "^17.2.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0", "vitest": "^3.2.4" }, @@ -60,7 +55,9 @@ }, "dependencies": { "@ckb-ccc/core": "workspace:*", - "axios": "^1.11.0" + "axios": "^1.11.0", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/spore/tsconfig.base.json b/packages/spore/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/spore/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/spore/tsconfig.commonjs.json b/packages/spore/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/spore/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/spore/tsconfig.json b/packages/spore/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/spore/tsconfig.json +++ b/packages/spore/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/spore/tsdown.config.mts b/packages/spore/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/spore/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/ssri/package.json b/packages/ssri/package.json index 4bfbe54c7..8890ece15 100644 --- a/packages/ssri/package.json +++ b/packages/ssri/package.json @@ -11,41 +11,42 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "main": "./dist.commonjs/index.js", - "module": "./dist/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./barrel": { - "import": "./dist/barrel.js", - "default": "./dist.commonjs/barrel.js" - } + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { "test": "jest", - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", "@types/node": "^24.3.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*" + "@ckb-ccc/core": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/ssri/tsconfig.base.json b/packages/ssri/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/ssri/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/ssri/tsconfig.commonjs.json b/packages/ssri/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/ssri/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/ssri/tsconfig.json b/packages/ssri/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/ssri/tsconfig.json +++ b/packages/ssri/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/ssri/tsdown.config.mts b/packages/ssri/tsdown.config.mts new file mode 100644 index 000000000..9453d8b6d --- /dev/null +++ b/packages/ssri/tsdown.config.mts @@ -0,0 +1,41 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/tests/package.json b/packages/tests/package.json index 41c4ac082..02710424e 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -22,8 +22,11 @@ "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", "tsx": "^4.20.5", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "dependencies": { + "tsdown": "^0.22.3" + } } diff --git a/packages/tests/tsconfig.base.json b/packages/tests/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/tests/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/tests/tsconfig.commonjs.json b/packages/tests/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/tests/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/tests/tsconfig.json b/packages/tests/tsconfig.json index df22faeca..71a858e56 100644 --- a/packages/tests/tsconfig.json +++ b/packages/tests/tsconfig.json @@ -1,8 +1,26 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./tests", + "outDir": "./dist" + }, + "include": ["tests/**/*"] } diff --git a/packages/tests/tsdown.config.mts b/packages/tests/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/tests/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/type-id/package.json b/packages/type-id/package.json index 5afb9bc5f..ac8acca54 100644 --- a/packages/type-id/package.json +++ b/packages/type-id/package.json @@ -14,20 +14,20 @@ "module": "./dist/index.mjs", "exports": { ".": { - "require": "./dist.commonjs/index.js", - "import": "./dist/index.mjs" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "require": "./dist.commonjs/advanced.js", - "import": "./dist/advanced.mjs" + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "require": "./dist.commonjs/advancedBarrel.js", - "import": "./dist/advancedBarrel.mjs" + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" }, "./barrel": { - "require": "./dist.commonjs/barrel.js", - "import": "./dist/barrel.mjs" + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" }, "./package.json": "./package.json" }, @@ -46,8 +46,8 @@ "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "tsdown": "0.19.0-beta.3", - "typescript": "^5.9.2", + "tsdown": "^0.22.3", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0", "vitest": "^3.2.4" }, diff --git a/packages/type-id/tsconfig.base.json b/packages/type-id/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/type-id/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/type-id/tsconfig.commonjs.json b/packages/type-id/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/type-id/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/type-id/tsconfig.json b/packages/type-id/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/type-id/tsconfig.json +++ b/packages/type-id/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/type-id/tsdown.config.mts b/packages/type-id/tsdown.config.mts index 9f79d88fe..4951574d0 100644 --- a/packages/type-id/tsdown.config.mts +++ b/packages/type-id/tsdown.config.mts @@ -4,28 +4,35 @@ const common = { minify: true, dts: true, platform: "neutral" as const, + sourcemap: true, exports: true, }; +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + export default defineConfig( ( [ { - entry: { - index: "src/index.ts", - barrel: "src/barrel.ts", - advanced: "src/advanced.ts", - advancedBarrel: "src/advancedBarrel.ts", + entry, + deps: { + onlyBundle: [] as string[], }, format: "esm", copy: "./misc/basedirs/dist/*", }, { - entry: { - index: "src/index.ts", - barrel: "src/barrel.ts", - advanced: "src/advanced.ts", - advancedBarrel: "src/advancedBarrel.ts", + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, }, format: "cjs", outDir: "dist.commonjs", diff --git a/packages/udt/package.json b/packages/udt/package.json index 6f48e6346..4893b9ea2 100644 --- a/packages/udt/package.json +++ b/packages/udt/package.json @@ -11,34 +11,33 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "main": "./dist.commonjs/index.js", - "module": "./dist/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, - "./advanced": { - "import": "./dist/advanced.js", - "default": "./dist.commonjs/advanced.js" - } + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { "test": "jest", - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", "@types/node": "^24.3.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -46,7 +45,9 @@ }, "dependencies": { "@ckb-ccc/core": "workspace:*", - "@ckb-ccc/ssri": "workspace:*" + "@ckb-ccc/ssri": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/udt/tsconfig.base.json b/packages/udt/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/udt/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/udt/tsconfig.commonjs.json b/packages/udt/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/udt/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/udt/tsconfig.json b/packages/udt/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/udt/tsconfig.json +++ b/packages/udt/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/udt/tsdown.config.mts b/packages/udt/tsdown.config.mts new file mode 100644 index 000000000..9453d8b6d --- /dev/null +++ b/packages/udt/tsdown.config.mts @@ -0,0 +1,41 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/uni-sat/package.json b/packages/uni-sat/package.json index a7013aed8..f46579af2 100644 --- a/packages/uni-sat/package.json +++ b/packages/uni-sat/package.json @@ -11,52 +11,49 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" - }, - "./barrel": { - "import": "./dist/barrel.js", - "require": "./dist.commonjs/barrel.js", - "default": "./dist.commonjs/barrel.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "import": "./dist/advancedBarrel.js", - "require": "./dist.commonjs/advancedBarrel.js", - "default": "./dist.commonjs/advancedBarrel.js" - } + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*" + "@ckb-ccc/core": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/uni-sat/tsconfig.base.json b/packages/uni-sat/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/uni-sat/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/uni-sat/tsconfig.commonjs.json b/packages/uni-sat/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/uni-sat/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/uni-sat/tsconfig.json b/packages/uni-sat/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/uni-sat/tsconfig.json +++ b/packages/uni-sat/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/uni-sat/tsdown.config.mts b/packages/uni-sat/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/uni-sat/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/utxo-global/package.json b/packages/utxo-global/package.json index b1872d8c8..5f579cc8e 100644 --- a/packages/utxo-global/package.json +++ b/packages/utxo-global/package.json @@ -11,52 +11,49 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, - "./barrel": { - "import": "./dist/barrel.js", - "require": "./dist.commonjs/barrel.js", - "default": "./dist.commonjs/barrel.js" + "./advanced": { + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "import": "./dist/advancedBarrel.js", - "require": "./dist.commonjs/advancedBarrel.js", - "default": "./dist.commonjs/advancedBarrel.js" + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" }, - "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" - } + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*" + "@ckb-ccc/core": "workspace:*", + "tsdown": "^0.22.3" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/utxo-global/tsconfig.base.json b/packages/utxo-global/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/utxo-global/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/utxo-global/tsconfig.commonjs.json b/packages/utxo-global/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/utxo-global/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/utxo-global/tsconfig.json b/packages/utxo-global/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/utxo-global/tsconfig.json +++ b/packages/utxo-global/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/utxo-global/tsdown.config.mts b/packages/utxo-global/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/utxo-global/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/packages/xverse/package.json b/packages/xverse/package.json index 00d6bd63a..128b056be 100644 --- a/packages/xverse/package.json +++ b/packages/xverse/package.json @@ -11,45 +11,40 @@ "url": "git://github.com/ckb-devrel/ccc.git" }, "sideEffects": false, - "main": "dist.commonjs/index.js", - "module": "dist/index.js", + "main": "./dist.commonjs/index.js", + "module": "./dist/index.mjs", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist.commonjs/index.js", - "default": "./dist.commonjs/index.js" - }, - "./barrel": { - "import": "./dist/barrel.js", - "require": "./dist.commonjs/barrel.js", - "default": "./dist.commonjs/barrel.js" + "import": "./dist/index.mjs", + "require": "./dist.commonjs/index.js" }, "./advanced": { - "import": "./dist/advanced.js", - "require": "./dist.commonjs/advanced.js", - "default": "./dist.commonjs/advanced.js" + "import": "./dist/advanced.mjs", + "require": "./dist.commonjs/advanced.js" }, "./advancedBarrel": { - "import": "./dist/advancedBarrel.js", - "require": "./dist.commonjs/advancedBarrel.js", - "default": "./dist.commonjs/advancedBarrel.js" - } + "import": "./dist/advancedBarrel.mjs", + "require": "./dist.commonjs/advancedBarrel.js" + }, + "./barrel": { + "import": "./dist/barrel.mjs", + "require": "./dist.commonjs/barrel.js" + }, + "./package.json": "./package.json" }, "scripts": { - "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "build": "tsdown", "lint": "eslint ./src", "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { "@eslint/js": "^9.34.0", - "copyfiles": "^2.4.1", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-plugin-organize-imports": "^4.2.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", + "typescript": "^6.0.3", "typescript-eslint": "^8.41.0" }, "publishConfig": { @@ -58,7 +53,9 @@ "dependencies": { "@ckb-ccc/core": "workspace:*", "bitcoinjs-lib": "^7.0.0", + "tsdown": "^0.22.3", "valibot": "^1.1.0" }, - "packageManager": "pnpm@11.8.0" + "packageManager": "pnpm@11.8.0", + "types": "./dist.commonjs/index.d.ts" } diff --git a/packages/xverse/tsconfig.base.json b/packages/xverse/tsconfig.base.json deleted file mode 100644 index 7e5ac952b..000000000 --- a/packages/xverse/tsconfig.base.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "incremental": true, - "allowJs": true, - "importHelpers": false, - "declaration": true, - "declarationMap": true, - "experimentalDecorators": true, - "useDefineForClassFields": false, - "esModuleInterop": true, - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictNullChecks": true, - "alwaysStrict": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - }, - "include": ["src/**/*"] -} diff --git a/packages/xverse/tsconfig.commonjs.json b/packages/xverse/tsconfig.commonjs.json deleted file mode 100644 index 76a25e98b..000000000 --- a/packages/xverse/tsconfig.commonjs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist.commonjs" - } -} diff --git a/packages/xverse/tsconfig.json b/packages/xverse/tsconfig.json index df22faeca..5c7bd2a42 100644 --- a/packages/xverse/tsconfig.json +++ b/packages/xverse/tsconfig.json @@ -1,8 +1,25 @@ { - "extends": "./tsconfig.base.json", "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, "module": "ESNext", "moduleResolution": "Bundler", - "outDir": "./dist", - } + "rootDir": "./src" + }, + "include": ["src/**/*"] } diff --git a/packages/xverse/tsdown.config.mts b/packages/xverse/tsdown.config.mts new file mode 100644 index 000000000..4951574d0 --- /dev/null +++ b/packages/xverse/tsdown.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "tsdown"; + +const common = { + minify: true, + dts: true, + platform: "neutral" as const, + sourcemap: true, + exports: true, +}; + +const entry = { + index: "src/index.ts", + barrel: "src/barrel.ts", + advanced: "src/advanced.ts", + advancedBarrel: "src/advancedBarrel.ts", +} as const; + +const bundleDeps: string[] = []; + +export default defineConfig( + ( + [ + { + entry, + deps: { + onlyBundle: [] as string[], + }, + format: "esm", + copy: "./misc/basedirs/dist/*", + }, + { + entry, + deps: { + alwaysBundle: bundleDeps, + onlyBundle: bundleDeps, + }, + format: "cjs", + outDir: "dist.commonjs", + copy: "./misc/basedirs/dist.commonjs/*", + }, + ] as const + ).map((c) => ({ ...c, ...common })), +); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3da76add2..25ac46ee0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,31 +19,31 @@ importers: version: 30.0.0 '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) jest: specifier: 30.1.1 - version: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + version: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) ts-jest: specifier: ^29.4.1 - version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)))(typescript@6.0.3) typedoc: specifier: 0.28.7 - version: 0.28.7(typescript@5.9.2) + version: 0.28.7(typescript@6.0.3) typedoc-material-theme: specifier: ^1.4.0 - version: 1.4.1(typedoc@0.28.7(typescript@5.9.2)) + version: 1.4.1(typedoc@0.28.7(typescript@6.0.3)) typedoc-plugin-extras: specifier: ^4.0.1 - version: 4.0.1(typedoc@0.28.7(typescript@5.9.2)) + version: 4.0.1(typedoc@0.28.7(typescript@6.0.3)) typedoc-plugin-ga: specifier: ^1.0.5 - version: 1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@5.9.2))(typescript@5.9.2) + version: 1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@6.0.3))(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + version: 3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/ccc: dependencies: @@ -95,16 +95,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/ckb-ccc: dependencies: @@ -132,16 +129,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/connector: dependencies: @@ -169,16 +163,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/connector-react: dependencies: @@ -212,22 +203,19 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/core: dependencies: '@joyid/ckb': specifier: ^1.1.2 - version: 1.1.2(typescript@5.9.2) + version: 1.1.2(typescript@6.0.3) '@noble/ciphers': specifier: ^2.2.0 version: 2.2.0 @@ -276,19 +264,19 @@ importers: version: 3.8.4 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.8.4)(typescript@5.9.2) + version: 4.2.0(prettier@3.8.4)(typescript@6.0.3) tsdown: specifier: 0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + version: 3.2.4(@types/debug@4.1.13)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/demo: dependencies: @@ -370,7 +358,7 @@ importers: version: 9.34.0(jiti@2.7.0) eslint-config-next: specifier: 16.0.10 - version: 16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) @@ -431,19 +419,19 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) tsdown: - specifier: 0.19.0-beta.3 - version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)(typescript@5.9.2) + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + version: 3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/docs: dependencies: @@ -514,13 +502,13 @@ importers: '@ckb-ccc/core': specifier: workspace:* version: link:../core + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -535,16 +523,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/examples: dependencies: @@ -560,6 +545,9 @@ importers: '@noble/hashes': specifier: ^2.2.0 version: 2.2.0 + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -578,16 +566,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/faucet: dependencies: @@ -714,17 +699,17 @@ importers: version: link:../core '@joyid/ckb': specifier: ^1.1.2 - version: 1.1.2(typescript@5.9.2) + version: 1.1.2(typescript@6.0.3) '@joyid/common': specifier: ^0.2.1 - version: 0.2.1(typescript@5.9.2) + version: 0.2.1(typescript@6.0.3) + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -739,16 +724,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/lumos-patches: dependencies: @@ -772,14 +754,14 @@ importers: version: 0.24.0-next.2 '@joyid/ckb': specifier: ^1.1.2 - version: 1.1.2(typescript@5.9.2) + version: 1.1.2(typescript@6.0.3) + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -794,29 +776,26 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/nip07: dependencies: '@ckb-ccc/core': specifier: workspace:* version: link:../core + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -831,16 +810,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/okx: dependencies: @@ -853,13 +829,13 @@ importers: '@ckb-ccc/uni-sat': specifier: workspace:* version: link:../uni-sat + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -874,16 +850,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/playground: dependencies: @@ -974,7 +947,7 @@ importers: version: 9.34.0(jiti@2.7.0) eslint-config-next: specifier: 16.0.10 - version: 16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) @@ -992,7 +965,7 @@ importers: version: 0.6.14(prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2))(prettier@3.6.2) raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.101.3) + version: 4.0.2(webpack@5.101.3(lightningcss@1.32.0)(postcss@8.5.6)) tailwindcss: specifier: ^4.1.12 version: 4.1.12 @@ -1002,13 +975,13 @@ importers: '@ckb-ccc/core': specifier: workspace:* version: link:../core + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -1023,16 +996,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/shell: dependencies: @@ -1075,16 +1045,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/spore: dependencies: @@ -1094,6 +1061,9 @@ importers: axios: specifier: ^1.11.0 version: 1.11.0 + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -1101,9 +1071,6 @@ importers: '@types/node': specifier: ^24.3.0 version: 24.3.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 dotenv: specifier: ^17.2.1 version: 17.2.1 @@ -1121,25 +1088,25 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + version: 3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/ssri: dependencies: '@ckb-ccc/core': specifier: workspace:* version: link:../core + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -1147,9 +1114,6 @@ importers: '@types/node': specifier: ^24.3.0 version: 24.3.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -1164,18 +1128,19 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/tests: + dependencies: + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@ckb-ccc/ccc': specifier: workspace:* @@ -1197,16 +1162,16 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) tsx: specifier: ^4.20.5 version: 4.20.5 typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/type-id: dependencies: @@ -1234,19 +1199,19 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) tsdown: - specifier: 0.19.0-beta.3 - version: 0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)(typescript@5.9.2) + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + version: 3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) packages/udt: dependencies: @@ -1256,6 +1221,9 @@ importers: '@ckb-ccc/ssri': specifier: workspace:* version: link:../ssri + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 @@ -1263,9 +1231,6 @@ importers: '@types/node': specifier: ^24.3.0 version: 24.3.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -1280,29 +1245,26 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/uni-sat: dependencies: '@ckb-ccc/core': specifier: workspace:* version: link:../core + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -1317,29 +1279,26 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/utxo-global: dependencies: '@ckb-ccc/core': specifier: workspace:* version: link:../core + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -1354,16 +1313,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages/xverse: dependencies: @@ -1372,17 +1328,17 @@ importers: version: link:../core bitcoinjs-lib: specifier: ^7.0.0 - version: 7.0.0(typescript@5.9.2) + version: 7.0.0(typescript@6.0.3) + tsdown: + specifier: ^0.22.3 + version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) valibot: specifier: ^1.1.0 - version: 1.1.0(typescript@5.9.2) + version: 1.1.0(typescript@6.0.3) devDependencies: '@eslint/js': specifier: ^9.34.0 version: 9.34.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 eslint: specifier: ^9.34.0 version: 9.34.0(jiti@2.7.0) @@ -1397,16 +1353,13 @@ importers: version: 3.6.2 prettier-plugin-organize-imports: specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 + version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) packages: @@ -4405,8 +4358,8 @@ packages: '@types/d3@7.4.3': resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -4480,6 +4433,9 @@ packages: '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/mdx@2.0.14': + resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} + '@types/methods@1.1.4': resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} @@ -5045,6 +5001,9 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + algoliasearch@5.46.0: resolution: {integrity: sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==} engines: {node: '>= 14.0.0'} @@ -5159,10 +5118,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@2.2.0: - resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} - engines: {node: '>=20.19.0'} - ast-kit@3.0.0: resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} engines: {node: ^22.18.0 || >=24.11.0} @@ -5887,6 +5842,9 @@ packages: decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + dedent@1.7.2: resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: @@ -6002,15 +5960,6 @@ packages: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} - dts-resolver@2.1.3: - resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} - engines: {node: '>=20.19.0'} - peerDependencies: - oxc-resolver: '>=11.0.0' - peerDependenciesMeta: - oxc-resolver: - optional: true - dts-resolver@3.0.0: resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} engines: {node: ^22.18.0 || >=24.0.0} @@ -6072,6 +6021,10 @@ packages: resolution: {integrity: sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.24.0: + resolution: {integrity: sha512-SkE2t82KlkkxQRVMVLAGKxLfORGQfrkx5dkj+vlgXRVNEdPc4eZcR+J/Fvj8C+yKSFH5L0q3NFlyufOVQnCcYQ==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -6477,6 +6430,9 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -6984,10 +6940,6 @@ packages: import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} - import-without-cache@0.2.5: - resolution: {integrity: sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==} - engines: {node: '>=20.19.0'} - import-without-cache@0.4.0: resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} engines: {node: ^22.18.0 || >=24.0.0} @@ -7010,6 +6962,9 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -7681,6 +7636,10 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + loader-runner@4.3.2: + resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} + engines: {node: '>=6.11.5'} + loader-utils@2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} @@ -7793,6 +7752,9 @@ packages: mdast-util-from-markdown@2.0.2: resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + mdast-util-gfm-autolink-literal@2.0.1: resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} @@ -7829,6 +7791,9 @@ packages: mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -8561,6 +8526,9 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -8750,8 +8718,8 @@ packages: remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -8818,33 +8786,9 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - robust-predicates@3.0.3: resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} - rolldown-plugin-dts@0.20.0: - resolution: {integrity: sha512-cLAY1kN2ilTYMfZcFlGWbXnu6Nb+8uwUBsi+Mjbh4uIx7IN8uMOmJ7RxrrRgPsO4H7eSz3E+JwGoL1gyugiyUA==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@ts-macro/tsc': ^0.3.6 - '@typescript/native-preview': '>=7.0.0-dev.20250601.1' - rolldown: ^1.0.0-beta.57 - typescript: ^5.0.0 - vue-tsc: ~3.2.0 - peerDependenciesMeta: - '@ts-macro/tsc': - optional: true - '@typescript/native-preview': - optional: true - typescript: - optional: true - vue-tsc: - optional: true - rolldown-plugin-dts@0.26.0: resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} engines: {node: ^22.18.0 || >=24.11.0} @@ -8934,6 +8878,10 @@ packages: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} @@ -9193,6 +9141,12 @@ packages: style-to-js@1.1.17: resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + style-to-object@1.0.9: resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} @@ -9296,6 +9250,49 @@ packages: uglify-js: optional: true + terser-webpack-plugin@5.6.1: + resolution: {integrity: sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@minify-html/node': '*' + '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' + esbuild: '*' + html-minifier-terser: '*' + lightningcss: '*' + postcss: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@minify-html/node': + optional: true + '@swc/core': + optional: true + '@swc/css': + optional: true + '@swc/html': + optional: true + clean-css: + optional: true + cssnano: + optional: true + csso: + optional: true + esbuild: + optional: true + html-minifier-terser: + optional: true + lightningcss: + optional: true + postcss: + optional: true + uglify-js: + optional: true + terser@5.48.0: resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} @@ -9454,31 +9451,6 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tsdown@0.19.0-beta.3: - resolution: {integrity: sha512-Ud75SBmTap0kDf9hs31yBBlU0iAV17gtZgTJlW6nG/e4J6wXPXwQtUXt/Fck4XSmHXXgSuYRwGrjF6AxTLwk+Q==} - engines: {node: '>=20.19.0'} - hasBin: true - peerDependencies: - '@arethetypeswrong/core': ^0.18.1 - '@vitejs/devtools': '*' - publint: ^0.3.0 - typescript: ^5.0.0 - unplugin-lightningcss: ^0.4.0 - unplugin-unused: ^0.5.0 - peerDependenciesMeta: - '@arethetypeswrong/core': - optional: true - '@vitejs/devtools': - optional: true - publint: - optional: true - typescript: - optional: true - unplugin-lightningcss: - optional: true - unplugin-unused: - optional: true - tsdown@0.22.3: resolution: {integrity: sha512-louqbfA8Qf//B9jTTL0FPtXTNpjCWv1VPkbcmQMph2pTpzs+LnB1tbe4tDDRVpo2BjF5SgUXaTZe45SxB8pWHg==} engines: {node: ^22.18.0 || >=24.11.0} @@ -9693,6 +9665,9 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} @@ -9708,6 +9683,9 @@ packages: unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} @@ -9913,6 +9891,10 @@ packages: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} + watchpack@2.5.2: + resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==} + engines: {node: '>=10.13.0'} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -9930,6 +9912,10 @@ packages: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} + webpack-sources@3.5.0: + resolution: {integrity: sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==} + engines: {node: '>=10.13.0'} + webpack@5.100.2: resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==} engines: {node: '>=10.13.0'} @@ -11086,10 +11072,10 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 - '@euberdeveloper/eslint-plugin@2.7.0(@types/eslint@9.6.1)(typescript@5.9.2)': + '@euberdeveloper/eslint-plugin@2.7.0(@types/eslint@9.6.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@8.57.1)(typescript@6.0.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@6.0.3) eslint: 8.57.1 eslint-config-prettier: 9.1.2(eslint@8.57.1) eslint-formatter-codeframe: 7.32.2 @@ -11500,7 +11486,7 @@ snapshots: - supports-color - ts-node - '@jest/core@30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2))': + '@jest/core@30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3))': dependencies: '@jest/console': 30.1.1 '@jest/pattern': 30.0.1 @@ -11515,7 +11501,7 @@ snapshots: exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.0.5 - jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) jest-haste-map: 30.1.0 jest-message-util: 30.1.0 jest-regex-util: 30.0.1 @@ -11712,9 +11698,9 @@ snapshots: chalk: 4.1.2 optional: true - '@joyid/ckb@1.1.2(typescript@5.9.2)': + '@joyid/ckb@1.1.2(typescript@6.0.3)': dependencies: - '@joyid/common': 0.2.1(typescript@5.9.2) + '@joyid/common': 0.2.1(typescript@6.0.3) '@nervosnetwork/ckb-sdk-utils': 0.109.5 cross-fetch: 4.0.0 uncrypto: 0.1.3 @@ -11723,9 +11709,9 @@ snapshots: - typescript - zod - '@joyid/common@0.2.1(typescript@5.9.2)': + '@joyid/common@0.2.1(typescript@6.0.3)': dependencies: - abitype: 0.8.7(typescript@5.9.2) + abitype: 0.8.7(typescript@6.0.3) type-fest: 4.6.0 transitivePeerDependencies: - typescript @@ -11795,7 +11781,7 @@ snapshots: '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 + '@types/mdx': 2.0.14 acorn: 8.17.0 collapse-white-space: 2.1.0 devlop: 1.1.0 @@ -11808,7 +11794,7 @@ snapshots: recma-jsx: 1.0.1(acorn@8.17.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 source-map: 0.7.6 @@ -12091,7 +12077,8 @@ snapshots: dependencies: '@orama/orama': 3.1.18 - '@oxc-project/types@0.106.0': {} + '@oxc-project/types@0.106.0': + optional: true '@oxc-project/types@0.137.0': {} @@ -12608,7 +12595,8 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.1.2': optional: true - '@rolldown/pluginutils@1.0.0-beta.58': {} + '@rolldown/pluginutils@1.0.0-beta.58': + optional: true '@rolldown/pluginutils@1.0.1': {} @@ -13153,7 +13141,7 @@ snapshots: '@types/d3-transition': 3.0.9 '@types/d3-zoom': 3.0.8 - '@types/debug@4.1.12': + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 @@ -13235,6 +13223,8 @@ snapshots: '@types/mdx@2.0.13': {} + '@types/mdx@2.0.14': {} + '@types/methods@1.1.4': {} '@types/mime@1.3.5': {} @@ -13321,13 +13311,13 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@8.57.1)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@6.0.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@6.0.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 eslint: 8.57.1 @@ -13335,9 +13325,9 @@ snapshots: ignore: 5.3.2 natural-compare: 1.4.0 semver: 7.8.5 - ts-api-utils: 1.4.3(typescript@5.9.2) + ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: - typescript: 5.9.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13358,6 +13348,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.41.0 + '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.41.0 + eslint: 9.34.0(jiti@2.7.0) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -13374,16 +13381,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/type-utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.49.0 + eslint: 9.34.0(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 eslint: 8.57.1 optionalDependencies: - typescript: 5.9.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13399,6 +13422,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.41.0 + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.41.0 + debug: 4.4.1 + eslint: 9.34.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.49.0 @@ -13411,6 +13446,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.49.0 + debug: 4.4.3 + eslint: 9.34.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.41.0(typescript@5.9.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) @@ -13420,6 +13467,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.41.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@6.0.3) + '@typescript-eslint/types': 8.41.0 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.49.0(typescript@5.9.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.2) @@ -13429,6 +13485,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.49.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@6.0.3) + '@typescript-eslint/types': 8.49.0 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@6.21.0': dependencies: '@typescript-eslint/types': 6.21.0 @@ -13448,19 +13513,27 @@ snapshots: dependencies: typescript: 5.9.2 + '@typescript-eslint/tsconfig-utils@8.41.0(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@6.0.3) debug: 4.4.3 eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.9.2) + ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: - typescript: 5.9.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13476,6 +13549,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + debug: 4.4.3 + eslint: 9.34.0(jiti@2.7.0) + ts-api-utils: 2.1.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.49.0 @@ -13488,13 +13573,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + debug: 4.4.3 + eslint: 9.34.0(jiti@2.7.0) + ts-api-utils: 2.1.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@6.21.0': {} '@typescript-eslint/types@8.41.0': {} '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -13503,9 +13600,9 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.8.5 - ts-api-utils: 1.4.3(typescript@5.9.2) + ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: - typescript: 5.9.2 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13525,6 +13622,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.41.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.41.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@6.0.3) + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/visitor-keys': 8.41.0 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.9 + semver: 7.8.5 + ts-api-utils: 2.1.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.49.0(typescript@5.9.2) @@ -13540,14 +13653,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.49.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.49.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@6.0.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 + debug: 4.4.3 + minimatch: 9.0.9 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.1.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) eslint: 8.57.1 semver: 7.8.5 transitivePeerDependencies: @@ -13565,6 +13693,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.41.0 + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) + eslint: 9.34.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0)) @@ -13576,6 +13715,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) + eslint: 9.34.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@6.21.0': dependencies: '@typescript-eslint/types': 6.21.0 @@ -13676,7 +13826,7 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -13691,7 +13841,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + vitest: 3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -13817,9 +13967,9 @@ snapshots: '@xtuc/long@4.2.2': {} - abitype@0.8.7(typescript@5.9.2): + abitype@0.8.7(typescript@6.0.3): dependencies: - typescript: 5.9.2 + typescript: 6.0.3 abort-controller@3.0.0: dependencies: @@ -13860,6 +14010,10 @@ snapshots: optionalDependencies: ajv: 8.17.1 + ajv-formats@2.1.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + ajv-formats@3.0.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -13873,6 +14027,11 @@ snapshots: ajv: 8.17.1 fast-deep-equal: 3.1.3 + ajv-keywords@5.1.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + fast-deep-equal: 3.1.3 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -13894,6 +14053,13 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + algoliasearch@5.46.0: dependencies: '@algolia/abtesting': 1.12.0 @@ -14034,11 +14200,6 @@ snapshots: assertion-error@2.0.1: {} - ast-kit@2.2.0: - dependencies: - '@babel/parser': 7.29.7 - pathe: 2.0.3 - ast-kit@3.0.0: dependencies: '@babel/parser': 8.0.0 @@ -14202,6 +14363,18 @@ snapshots: transitivePeerDependencies: - typescript + bitcoinjs-lib@7.0.0(typescript@6.0.3): + dependencies: + '@noble/hashes': 1.8.0 + bech32: 2.0.0 + bip174: 3.0.0 + bs58check: 4.0.0 + uint8array-tools: 0.0.9 + valibot: 0.38.0(typescript@6.0.3) + varuint-bitcoin: 2.0.0 + transitivePeerDependencies: + - typescript + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -14808,6 +14981,10 @@ snapshots: dependencies: character-entities: 2.0.2 + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + dedent@1.7.2: {} deep-eql@5.0.2: {} @@ -14898,8 +15075,6 @@ snapshots: dotenv@8.6.0: {} - dts-resolver@2.1.3: {} - dts-resolver@3.0.0: {} dunder-proto@1.0.1: @@ -14950,6 +15125,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.3 + enhanced-resolve@5.24.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -15181,13 +15361,13 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): + eslint-config-next@16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): dependencies: '@next/eslint-plugin-next': 16.0.10 eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-react-hooks: 7.0.1(eslint@9.34.0(jiti@2.7.0)) @@ -15222,7 +15402,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -15233,22 +15413,22 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@6.0.3) eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15259,7 +15439,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15271,7 +15451,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15674,6 +15854,8 @@ snapshots: fast-uri@3.1.0: {} + fast-uri@3.1.2: {} + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -16176,9 +16358,9 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.1.0 + property-information: 7.2.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: @@ -16268,8 +16450,6 @@ snapshots: import-meta-resolve@4.2.0: {} - import-without-cache@0.2.5: {} - import-without-cache@0.4.0: {} imurmurhash@0.1.4: {} @@ -16285,6 +16465,8 @@ snapshots: inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -16564,15 +16746,15 @@ snapshots: - supports-color - ts-node - jest-cli@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)): + jest-cli@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)): dependencies: - '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) '@jest/test-result': 30.1.1 '@jest/types': 30.0.5 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) jest-util: 30.0.5 jest-validate: 30.1.0 yargs: 17.7.3 @@ -16649,7 +16831,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)): + jest-config@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -16677,7 +16859,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 25.9.1 - ts-node: 10.9.2(@types/node@25.9.1)(typescript@5.9.2) + ts-node: 10.9.2(@types/node@25.9.1)(typescript@6.0.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -16954,12 +17136,12 @@ snapshots: - supports-color - ts-node - jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)): + jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)): dependencies: - '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) '@jest/types': 30.0.5 import-local: 3.2.0 - jest-cli: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + jest-cli: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17195,6 +17377,8 @@ snapshots: loader-runner@4.3.0: {} + loader-runner@4.3.2: {} + loader-utils@2.0.4: dependencies: big.js: 5.2.2 @@ -17301,11 +17485,11 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 transitivePeerDependencies: - supports-color optional: true @@ -17334,6 +17518,23 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-autolink-literal@2.0.1: dependencies: '@types/mdast': 4.0.4 @@ -17397,7 +17598,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -17410,7 +17611,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -17435,7 +17636,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -17457,6 +17658,18 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -17517,7 +17730,7 @@ snapshots: micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -17759,9 +17972,9 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 debug: 4.4.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -18150,7 +18363,7 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 @@ -18258,10 +18471,15 @@ snapshots: prettier: 3.6.2 typescript: 5.9.2 - prettier-plugin-organize-imports@4.2.0(prettier@3.8.4)(typescript@5.9.2): + prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@6.0.3): + dependencies: + prettier: 3.6.2 + typescript: 6.0.3 + + prettier-plugin-organize-imports@4.2.0(prettier@3.8.4)(typescript@6.0.3): dependencies: prettier: 3.8.4 - typescript: 5.9.2 + typescript: 6.0.3 prettier-plugin-tailwindcss@0.6.14(prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2))(prettier@3.6.2): dependencies: @@ -18293,6 +18511,8 @@ snapshots: property-information@7.1.0: {} + property-information@7.2.0: {} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -18331,11 +18551,11 @@ snapshots: iconv-lite: 0.6.3 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.101.3): + raw-loader@4.0.2(webpack@5.101.3(lightningcss@1.32.0)(postcss@8.5.6)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3 + webpack: 5.101.3(lightningcss@1.32.0)(postcss@8.5.6) react-dom@19.2.3(react@19.2.3): dependencies: @@ -18525,7 +18745,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@3.1.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -18535,7 +18755,7 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -18545,7 +18765,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -18606,30 +18826,9 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@6.0.1: - dependencies: - glob: 11.0.3 - package-json-from-dist: 1.0.1 - robust-predicates@3.0.3: {} - rolldown-plugin-dts@0.20.0(rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1))(typescript@5.9.2): - dependencies: - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - ast-kit: 2.2.0 - birpc: 4.0.0 - dts-resolver: 2.1.3 - get-tsconfig: 4.14.0 - obug: 2.1.3 - rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - optionalDependencies: - typescript: 5.9.2 - transitivePeerDependencies: - - oxc-resolver - - rolldown-plugin-dts@0.26.0(rolldown@1.1.2)(typescript@5.9.2): + rolldown-plugin-dts@0.26.0(rolldown@1.1.2)(typescript@6.0.3): dependencies: '@babel/generator': 8.0.0 '@babel/helper-validator-identifier': 8.0.2 @@ -18641,7 +18840,7 @@ snapshots: obug: 2.1.3 rolldown: 1.1.2 optionalDependencies: - typescript: 5.9.2 + typescript: 6.0.3 transitivePeerDependencies: - oxc-resolver @@ -18666,6 +18865,7 @@ snapshots: transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' + optional: true rolldown@1.1.2: dependencies: @@ -18803,6 +19003,13 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) + scroll-into-view-if-needed@3.1.0: dependencies: compute-scroll-into-view: 3.1.1 @@ -19144,6 +19351,14 @@ snapshots: dependencies: style-to-object: 1.0.9 + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + style-to-object@1.0.9: dependencies: inline-style-parser: 0.2.4 @@ -19246,14 +19461,16 @@ snapshots: terser: 5.48.0 webpack: 5.100.2 - terser-webpack-plugin@5.3.14(webpack@5.101.3): + terser-webpack-plugin@5.6.1(lightningcss@1.32.0)(postcss@8.5.6)(webpack@5.101.3(lightningcss@1.32.0)(postcss@8.5.6)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 + schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.101.3 + webpack: 5.101.3(lightningcss@1.32.0)(postcss@8.5.6) + optionalDependencies: + lightningcss: 1.32.0 + postcss: 8.5.6 terser@5.48.0: dependencies: @@ -19329,14 +19546,18 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.4.3(typescript@5.9.2): + ts-api-utils@1.4.3(typescript@6.0.3): dependencies: - typescript: 5.9.2 + typescript: 6.0.3 ts-api-utils@2.1.0(typescript@5.9.2): dependencies: typescript: 5.9.2 + ts-api-utils@2.1.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + ts-dedent@2.2.0: {} ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)))(typescript@5.9.2): @@ -19359,18 +19580,18 @@ snapshots: babel-jest: 30.4.1(@babel/core@7.29.7) jest-util: 30.4.1 - ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)))(typescript@5.9.2): + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)))(typescript@6.0.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2)) + jest: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.8.5 type-fest: 4.41.0 - typescript: 5.9.2 + typescript: 6.0.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.29.7 @@ -19407,7 +19628,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@25.9.1)(typescript@5.9.2): + ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -19421,7 +19642,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.4 make-error: 1.3.6 - typescript: 5.9.2 + typescript: 6.0.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optional: true @@ -19446,36 +19667,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.19.0-beta.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)(typescript@5.9.2): - dependencies: - ansis: 4.3.1 - cac: 6.7.14 - defu: 6.1.7 - empathic: 2.0.1 - hookable: 6.1.1 - import-without-cache: 0.2.5 - obug: 2.1.3 - picomatch: 4.0.4 - rolldown: 1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - rolldown-plugin-dts: 0.20.0(rolldown@1.0.0-beta.58(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1))(typescript@5.9.2) - semver: 7.8.5 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 - tree-kill: 1.2.2 - unconfig-core: 7.5.0 - unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13) - optionalDependencies: - typescript: 5.9.2 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - '@ts-macro/tsc' - - '@typescript/native-preview' - - oxc-resolver - - synckit - - vue-tsc - - tsdown@0.22.3(tsx@4.20.5)(typescript@5.9.2)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)): + tsdown@0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -19486,7 +19678,7 @@ snapshots: obug: 2.1.3 picomatch: 4.0.4 rolldown: 1.1.2 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.2)(typescript@5.9.2) + rolldown-plugin-dts: 0.26.0(rolldown@1.1.2)(typescript@6.0.3) semver: 7.8.5 tinyexec: 1.2.4 tinyglobby: 0.2.17 @@ -19494,7 +19686,7 @@ snapshots: unconfig-core: 7.5.0 optionalDependencies: tsx: 4.20.5 - typescript: 5.9.2 + typescript: 6.0.3 unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13) transitivePeerDependencies: - '@ts-macro/tsc' @@ -19579,31 +19771,31 @@ snapshots: typedarray@0.0.6: {} - typedoc-material-theme@1.4.1(typedoc@0.28.7(typescript@5.9.2)): + typedoc-material-theme@1.4.1(typedoc@0.28.7(typescript@6.0.3)): dependencies: '@material/material-color-utilities': 0.3.0 - typedoc: 0.28.7(typescript@5.9.2) + typedoc: 0.28.7(typescript@6.0.3) - typedoc-plugin-extras@4.0.1(typedoc@0.28.7(typescript@5.9.2)): + typedoc-plugin-extras@4.0.1(typedoc@0.28.7(typescript@6.0.3)): dependencies: - typedoc: 0.28.7(typescript@5.9.2) + typedoc: 0.28.7(typescript@6.0.3) - typedoc-plugin-ga@1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@5.9.2))(typescript@5.9.2): + typedoc-plugin-ga@1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@6.0.3))(typescript@6.0.3): dependencies: - '@euberdeveloper/eslint-plugin': 2.7.0(@types/eslint@9.6.1)(typescript@5.9.2) - typedoc: 0.28.7(typescript@5.9.2) + '@euberdeveloper/eslint-plugin': 2.7.0(@types/eslint@9.6.1)(typescript@6.0.3) + typedoc: 0.28.7(typescript@6.0.3) transitivePeerDependencies: - '@types/eslint' - supports-color - typescript - typedoc@0.28.7(typescript@5.9.2): + typedoc@0.28.7(typescript@6.0.3): dependencies: '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 markdown-it: 14.2.0 minimatch: 9.0.9 - typescript: 5.9.2 + typescript: 6.0.3 yaml: 2.9.0 typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): @@ -19617,6 +19809,17 @@ snapshots: transitivePeerDependencies: - supports-color + typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 9.34.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + typescript-eslint@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): dependencies: '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) @@ -19628,6 +19831,17 @@ snapshots: transitivePeerDependencies: - supports-color + typescript-eslint@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 9.34.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + typescript@5.8.3: {} typescript@5.9.2: {} @@ -19691,6 +19905,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-position-from-estree@2.0.0: dependencies: '@types/unist': 3.0.3 @@ -19713,11 +19931,16 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.0 + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 universalify@0.1.2: {} @@ -19760,6 +19983,7 @@ snapshots: transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' + optional: true untildify@4.0.0: {} @@ -19814,9 +20038,13 @@ snapshots: optionalDependencies: typescript: 5.9.2 - valibot@1.1.0(typescript@5.9.2): + valibot@0.38.0(typescript@6.0.3): optionalDependencies: - typescript: 5.9.2 + typescript: 6.0.3 + + valibot@1.1.0(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 validate-npm-package-license@3.0.4: dependencies: @@ -19960,7 +20188,7 @@ snapshots: tsx: 4.20.5 yaml: 2.9.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + vitest@3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -19986,7 +20214,7 @@ snapshots: vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 '@types/node': 24.3.0 transitivePeerDependencies: - jiti @@ -20002,7 +20230,7 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -20028,7 +20256,7 @@ snapshots: vite-node: 3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 '@types/node': 25.9.1 transitivePeerDependencies: - jiti @@ -20044,7 +20272,7 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + vitest@3.2.4(@types/debug@4.1.13)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -20070,7 +20298,7 @@ snapshots: vite-node: 3.2.4(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 '@types/node': 26.0.0 transitivePeerDependencies: - jiti @@ -20095,6 +20323,10 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + watchpack@2.5.2: + dependencies: + graceful-fs: 4.2.11 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -20107,6 +20339,8 @@ snapshots: webpack-sources@3.3.3: {} + webpack-sources@3.5.0: {} + webpack@5.100.2: dependencies: '@types/eslint-scope': 3.7.7 @@ -20139,7 +20373,7 @@ snapshots: - esbuild - uglify-js - webpack@5.101.3: + webpack@5.101.3(lightningcss@1.32.0)(postcss@8.5.6): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -20151,24 +20385,33 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.17.0) browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.22.1 + enhanced-resolve: 5.24.0 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.2 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 + schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.3.14(webpack@5.101.3) - watchpack: 2.4.4 - webpack-sources: 3.3.3 + terser-webpack-plugin: 5.6.1(lightningcss@1.32.0)(postcss@8.5.6)(webpack@5.101.3(lightningcss@1.32.0)(postcss@8.5.6)) + watchpack: 2.5.2 + webpack-sources: 3.5.0 transitivePeerDependencies: + - '@minify-html/node' - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso - esbuild + - html-minifier-terser + - lightningcss + - postcss - uglify-js whatwg-url@5.0.0: From 46cc045a3eefe9ba6625482dc7f740a0c59c99d4 Mon Sep 17 00:00:00 2001 From: Hanssen0 <0@hanssen0.com> Date: Tue, 23 Jun 2026 01:00:15 +0800 Subject: [PATCH 40/42] chore: bump packages --- .changeset/nine-eagles-dig.md | 25 + config/tsconfig.json | 2 +- package.json | 18 +- packages/ccc/package.json | 12 +- packages/ccc/tsconfig.base.json | 2 +- packages/ckb-ccc/package.json | 12 +- packages/ckb-ccc/tsconfig.base.json | 2 +- packages/connector-react/package.json | 12 +- packages/connector-react/tsconfig.base.json | 2 +- packages/connector/package.json | 14 +- packages/connector/tsconfig.base.json | 2 +- packages/core/package.json | 20 +- packages/core/src/address/address.advanced.ts | 6 +- packages/core/src/codec/entity.ts | 4 +- packages/core/src/molecule/codec.ts | 30 +- packages/core/tsconfig.json | 2 +- packages/did-ckb/package.json | 24 +- packages/did-ckb/src/migrate.ts | 2 +- packages/did-ckb/tsconfig.json | 2 +- packages/eip6963/package.json | 12 +- packages/eip6963/tsconfig.json | 2 +- packages/examples/package.json | 12 +- packages/examples/tsconfig.json | 2 +- packages/joy-id/package.json | 16 +- packages/joy-id/tsconfig.json | 2 +- packages/lumos-patches/package.json | 14 +- packages/lumos-patches/tsconfig.json | 2 +- packages/nip07/package.json | 12 +- packages/nip07/tsconfig.json | 2 +- packages/okx/package.json | 12 +- packages/okx/src/advancedBarrel.ts | 3 +- packages/okx/tsconfig.json | 2 +- packages/rei/package.json | 12 +- packages/rei/tsconfig.json | 2 +- packages/shell/package.json | 12 +- packages/shell/tsconfig.base.json | 2 +- packages/spore/package.json | 20 +- packages/spore/tsconfig.json | 2 +- packages/ssri/package.json | 14 +- packages/ssri/tsconfig.json | 2 +- packages/tests/package.json | 15 +- packages/tests/tests/esm.test.mts | 2 +- packages/tests/tsconfig.json | 3 +- packages/type-id/package.json | 16 +- packages/type-id/tsconfig.json | 2 +- packages/udt/package.json | 14 +- packages/udt/tsconfig.json | 2 +- packages/uni-sat/package.json | 12 +- packages/uni-sat/tsconfig.json | 2 +- packages/utxo-global/package.json | 12 +- packages/utxo-global/tsconfig.json | 2 +- packages/xverse/package.json | 16 +- .../src/sat-connect-core/types.advanced.ts | 10 +- packages/xverse/src/signer.ts | 3 +- packages/xverse/tsconfig.json | 2 +- pnpm-lock.yaml | 2980 +++++++++-------- tsconfig.base.json | 2 +- 57 files changed, 1852 insertions(+), 1595 deletions(-) create mode 100644 .changeset/nine-eagles-dig.md diff --git a/.changeset/nine-eagles-dig.md b/.changeset/nine-eagles-dig.md new file mode 100644 index 000000000..a174ae089 --- /dev/null +++ b/.changeset/nine-eagles-dig.md @@ -0,0 +1,25 @@ +--- +"@ckb-ccc/connector-react": minor +"@ckb-ccc/lumos-patches": minor +"@ckb-ccc/utxo-global": minor +"@ckb-ccc/connector": minor +"ckb-ccc": minor +"@ckb-ccc/did-ckb": minor +"@ckb-ccc/eip6963": minor +"@ckb-ccc/type-id": minor +"@ckb-ccc/uni-sat": minor +"@ckb-ccc/joy-id": minor +"@ckb-ccc/xverse": minor +"@ckb-ccc/nip07": minor +"@ckb-ccc/shell": minor +"@ckb-ccc/spore": minor +"@ckb-ccc/core": minor +"@ckb-ccc/ssri": minor +"@ckb-ccc/ccc": minor +"@ckb-ccc/okx": minor +"@ckb-ccc/rei": minor +"@ckb-ccc/udt": minor +--- + +chore: bump packages + \ No newline at end of file diff --git a/config/tsconfig.json b/config/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/config/tsconfig.json +++ b/config/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/package.json b/package.json index e9fc8201a..6ae274b4c 100644 --- a/package.json +++ b/package.json @@ -19,18 +19,18 @@ "docs": "typedoc" }, "devDependencies": { - "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.6", + "@changesets/changelog-github": "^0.7.0", + "@changesets/cli": "^2.31.0", "@types/jest": "^30.0.0", - "@vitest/coverage-v8": "3.2.4", - "jest": "30.1.1", - "ts-jest": "^29.4.1", - "typedoc": "0.28.7", - "typedoc-material-theme": "^1.4.0", + "@vitest/coverage-v8": "4.1.9", + "jest": "30.4.2", + "ts-jest": "^29.4.11", + "typedoc": "0.28.19", + "typedoc-material-theme": "^1.4.1", "typedoc-plugin-extras": "^4.0.1", - "typedoc-plugin-ga": "^1.0.5", + "typedoc-plugin-ga": "^1.1.1", "typescript": "^6.0.3", - "vitest": "^3.2.4" + "vitest": "^4.1.9" }, "packageManager": "pnpm@11.8.0" } diff --git a/packages/ccc/package.json b/packages/ccc/package.json index 1ed909c59..6d7d9ce9c 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -41,15 +41,15 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^10.0.1", "copyfiles": "^2.4.1", - "eslint": "^9.34.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/ccc/tsconfig.base.json b/packages/ccc/tsconfig.base.json index 41af24499..246eb012d 100644 --- a/packages/ccc/tsconfig.base.json +++ b/packages/ccc/tsconfig.base.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/ckb-ccc/package.json b/packages/ckb-ccc/package.json index 2d0c9d16a..336cc8dd4 100644 --- a/packages/ckb-ccc/package.json +++ b/packages/ckb-ccc/package.json @@ -18,15 +18,15 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^10.0.1", "copyfiles": "^2.4.1", - "eslint": "^9.34.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/ckb-ccc/tsconfig.base.json b/packages/ckb-ccc/tsconfig.base.json index 41af24499..246eb012d 100644 --- a/packages/ckb-ccc/tsconfig.base.json +++ b/packages/ckb-ccc/tsconfig.base.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/connector-react/package.json b/packages/connector-react/package.json index 4b3297c58..1dcfcc2bc 100644 --- a/packages/connector-react/package.json +++ b/packages/connector-react/package.json @@ -24,14 +24,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/connector-react/tsconfig.base.json b/packages/connector-react/tsconfig.base.json index 6c53450b0..2e7d253fd 100644 --- a/packages/connector-react/tsconfig.base.json +++ b/packages/connector-react/tsconfig.base.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "jsx": "react", "incremental": true, "allowJs": true, diff --git a/packages/connector/package.json b/packages/connector/package.json index 49142cedd..2a7393964 100644 --- a/packages/connector/package.json +++ b/packages/connector/package.json @@ -24,21 +24,21 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" }, "dependencies": { "@ckb-ccc/ccc": "workspace:*", - "lit": "^3.3.1" + "lit": "^3.3.3" }, "packageManager": "pnpm@11.8.0" } diff --git a/packages/connector/tsconfig.base.json b/packages/connector/tsconfig.base.json index 41af24499..246eb012d 100644 --- a/packages/connector/tsconfig.base.json +++ b/packages/connector/tsconfig.base.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/core/package.json b/packages/core/package.json index 1c194beb4..43b1f82ae 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -40,32 +40,32 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^10.0.1", "@types/ws": "^8.18.1", - "eslint": "^9.34.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "tsdown": "0.22.3", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0", - "vitest": "^3.2.4" + "typescript-eslint": "^8.61.1", + "vitest": "^4.1.9" }, "publishConfig": { "access": "public" }, "dependencies": { - "@joyid/ckb": "^1.1.2", + "@joyid/ckb": "^1.1.4", "@noble/ciphers": "^2.2.0", "@noble/curves": "^2.2.0", "@noble/hashes": "^2.2.0", "bech32": "^2.0.0", "bs58check": "^4.0.0", "buffer": "^6.0.3", - "ethers": "^6.15.0", + "ethers": "^6.17.0", "isomorphic-ws": "^5.0.0", - "ws": "^8.18.3" + "ws": "^8.21.0" }, "packageManager": "pnpm@11.8.0", "types": "./dist.commonjs/index.d.ts", diff --git a/packages/core/src/address/address.advanced.ts b/packages/core/src/address/address.advanced.ts index 69ca175eb..4622a1e2d 100644 --- a/packages/core/src/address/address.advanced.ts +++ b/packages/core/src/address/address.advanced.ts @@ -30,10 +30,10 @@ export function addressPayloadFromString(address: string): { try { const { words, prefix } = bech32m.decode(address, ADDRESS_BECH32_LIMIT); const decoded = bech32m.fromWords(words); - const formatType = decoded[0]; + const formatType: AddressFormat = decoded[0]; const payload = decoded.slice(1); - if (formatType === (AddressFormat.Full as number)) { + if (formatType === AddressFormat.Full) { return { prefix, format: AddressFormat.Full, payload }; } } catch (_) {} @@ -42,7 +42,7 @@ export function addressPayloadFromString(address: string): { try { const { prefix, words } = bech32.decode(address, ADDRESS_BECH32_LIMIT); const decoded = bech32.fromWords(words); - const formatType = decoded[0]; + const formatType: AddressFormat = decoded[0]; const payload = decoded.slice(1); if ( [ diff --git a/packages/core/src/codec/entity.ts b/packages/core/src/codec/entity.ts index d62a7a539..4186ae339 100644 --- a/packages/core/src/codec/entity.ts +++ b/packages/core/src/codec/entity.ts @@ -92,9 +92,7 @@ export abstract class Entity { * @returns A clone of the entity */ clone(): SubType { - return (this.constructor as typeof Impl).fromBytes( - this.toBytes(), - ) as unknown as SubType; + return (this.constructor as typeof Impl).fromBytes(this.toBytes()); } /** diff --git a/packages/core/src/molecule/codec.ts b/packages/core/src/molecule/codec.ts index 8ae90fe6f..51566596f 100644 --- a/packages/core/src/molecule/codec.ts +++ b/packages/core/src/molecule/codec.ts @@ -71,7 +71,7 @@ export function fixedItemVec( } return bytesFrom(concatted); } catch (e: unknown) { - throw new Error(`fixedItemVec(${e?.toString()})`); + throw new Error("fixedItemVec failed", { cause: e }); } }, decode(buffer, config) { @@ -101,7 +101,7 @@ export function fixedItemVec( } return decodedArray; } catch (e) { - throw new Error(`fixedItemVec(${e?.toString()})`); + throw new Error("fixedItemVec failed", { cause: e }); } }, }); @@ -131,7 +131,7 @@ export function dynItemVec( const packedTotalSize = uint32To(header.length + body.length + 4); return bytesConcat(packedTotalSize, header, body); } catch (e) { - throw new Error(`dynItemVec(${e?.toString()})`); + throw new Error("dynItemVec failed", { cause: e }); } }, decode(buffer, config) { @@ -168,7 +168,7 @@ export function dynItemVec( } return decodedArray; } catch (e) { - throw new Error(`dynItemVec(${e?.toString()})`); + throw new Error("dynItemVec failed", { cause: e }); } }, }); @@ -205,7 +205,7 @@ export function option( try { return innerCodec.encode(userDefinedOrNull); } catch (e) { - throw new Error(`option(${e?.toString()})`); + throw new Error("option failed", { cause: e }); } }, decode(buffer, config) { @@ -216,7 +216,7 @@ export function option( try { return innerCodec.decode(buffer, config); } catch (e) { - throw new Error(`option(${e?.toString()})`); + throw new Error("option failed", { cause: e }); } }, }); @@ -236,7 +236,7 @@ export function byteVec( const byteLength = uint32To(payload.byteLength); return bytesConcat(byteLength, payload); } catch (e) { - throw new Error(`byteVec(${e?.toString()})`); + throw new Error("byteVec failed", { cause: e }); } }, decode(buffer, config) { @@ -255,7 +255,7 @@ export function byteVec( try { return codec.decode(value.slice(4), config); } catch (e: unknown) { - throw new Error(`byteVec(${e?.toString()})`); + throw new Error("byteVec failed", { cause: e }); } }, }); @@ -313,7 +313,7 @@ export function table< bytesConcatTo(body, encoded); offset += encoded.byteLength; } catch (e: unknown) { - throw new Error(`table.${key}(${e?.toString()})`); + throw new Error(`table.${key} failed`, { cause: e }); } } @@ -371,7 +371,7 @@ export function table< // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment Object.assign(object, { [field]: codec.decode(payload, config) }); } catch (e: unknown) { - throw new Error(`table.${field}(${e?.toString()})`); + throw new Error(`table.${field} failed`, { cause: e }); } } return object as Decoded; @@ -472,7 +472,7 @@ export function union>>( const body = codec.encode(value); return bytesConcat(header, body); } catch (e: unknown) { - throw new Error(`union.(${typeStr})(${e?.toString()})`); + throw new Error(`union.${typeStr} failed`, { cause: e }); } }, decode(buffer, config) { @@ -538,7 +538,7 @@ export function struct< const encoded = codecLayout[key].encode((object as any)[key]); bytesConcatTo(bytes, encoded); } catch (e: unknown) { - throw new Error(`struct.${key}(${e?.toString()})`); + throw new Error(`struct.${key} failed`, { cause: e }); } } @@ -554,7 +554,7 @@ export function struct< // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment Object.assign(object, { [key]: codec.decode(payload, config) }); } catch (e: unknown) { - throw new Error(`struct.${key}(${(e as Error).toString()})`); + throw new Error(`struct.${key} failed`, { cause: e }); } offset = offset + codec.byteLength!; }); @@ -589,7 +589,7 @@ export function array( return bytesFrom(bytes); } catch (e: unknown) { - throw new Error(`array(${e?.toString()})`); + throw new Error("array failed", { cause: e }); } }, decode(buffer, config) { @@ -608,7 +608,7 @@ export function array( } return result; } catch (e: unknown) { - throw new Error(`array(${e?.toString()})`); + throw new Error("array failed", { cause: e }); } }, }); diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index aa3f5499c..ef3c9603c 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -35,17 +35,17 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "@types/node": "^24.3.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "@types/node": "^26.0.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "tsdown": "^0.22.3", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0", - "vitest": "^3.2.4" + "typescript-eslint": "^8.61.1", + "vitest": "^4.1.9" }, "publishConfig": { "access": "public" @@ -53,14 +53,14 @@ "dependencies": { "@ckb-ccc/core": "workspace:*", "@ckb-ccc/type-id": "workspace:*", - "@ipld/dag-cbor": "^9.2.5", + "@ipld/dag-cbor": "^10.0.1", "@noble/curves": "^2.2.0" }, "packageManager": "pnpm@11.8.0", "types": "./dist.commonjs/index.d.ts", "inlinedDependencies": { - "@ipld/dag-cbor": "9.2.5", - "cborg": "4.3.2", - "multiformats": "13.4.2" + "@ipld/dag-cbor": "10.0.1", + "cborg": "5.1.1", + "multiformats": "14.0.0" } } diff --git a/packages/did-ckb/src/migrate.ts b/packages/did-ckb/src/migrate.ts index 5414d17c7..fb153b021 100644 --- a/packages/did-ckb/src/migrate.ts +++ b/packages/did-ckb/src/migrate.ts @@ -44,7 +44,7 @@ export function buildMigrationWitness(props: { ); return DidCkbWitness.from({ localIdAuthorization: { - history: [props.genesisOperation as unknown as object], + history: [props.genesisOperation], sig: ccc.hexFrom(sig), rotationKeyIndices: [props.selfSigIndex ?? 0, props.rotationKeyIndex], }, diff --git a/packages/did-ckb/tsconfig.json b/packages/did-ckb/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/did-ckb/tsconfig.json +++ b/packages/did-ckb/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/eip6963/package.json b/packages/eip6963/package.json index aa7c81932..492bb1ae4 100644 --- a/packages/eip6963/package.json +++ b/packages/eip6963/package.json @@ -34,14 +34,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/eip6963/tsconfig.json b/packages/eip6963/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/eip6963/tsconfig.json +++ b/packages/eip6963/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/examples/package.json b/packages/examples/package.json index 831145691..cd11fa840 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -16,14 +16,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/examples/tsconfig.json b/packages/examples/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/examples/tsconfig.json +++ b/packages/examples/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/joy-id/package.json b/packages/joy-id/package.json index 49f860790..22811b446 100644 --- a/packages/joy-id/package.json +++ b/packages/joy-id/package.json @@ -38,22 +38,22 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" }, "dependencies": { "@ckb-ccc/core": "workspace:*", - "@joyid/ckb": "^1.1.2", - "@joyid/common": "^0.2.1", + "@joyid/ckb": "^1.1.4", + "@joyid/common": "^0.2.2", "tsdown": "^0.22.3" }, "packageManager": "pnpm@11.8.0", diff --git a/packages/joy-id/tsconfig.json b/packages/joy-id/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/joy-id/tsconfig.json +++ b/packages/joy-id/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/lumos-patches/package.json b/packages/lumos-patches/package.json index 0b50c4aee..882b10c4a 100644 --- a/packages/lumos-patches/package.json +++ b/packages/lumos-patches/package.json @@ -26,14 +26,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" @@ -45,7 +45,7 @@ "@ckb-lumos/common-scripts": "0.24.0-next.2", "@ckb-lumos/config-manager": "0.24.0-next.2", "@ckb-lumos/helpers": "0.24.0-next.2", - "@joyid/ckb": "^1.1.2", + "@joyid/ckb": "^1.1.4", "tsdown": "^0.22.3" }, "packageManager": "pnpm@11.8.0", diff --git a/packages/lumos-patches/tsconfig.json b/packages/lumos-patches/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/lumos-patches/tsconfig.json +++ b/packages/lumos-patches/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/nip07/package.json b/packages/nip07/package.json index 213f5cb6b..0d79b0bb6 100644 --- a/packages/nip07/package.json +++ b/packages/nip07/package.json @@ -34,14 +34,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/nip07/tsconfig.json b/packages/nip07/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/nip07/tsconfig.json +++ b/packages/nip07/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/okx/package.json b/packages/okx/package.json index 03bee7c87..3a3c28462 100644 --- a/packages/okx/package.json +++ b/packages/okx/package.json @@ -38,14 +38,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/okx/src/advancedBarrel.ts b/packages/okx/src/advancedBarrel.ts index bdd6b3e04..e572a1818 100644 --- a/packages/okx/src/advancedBarrel.ts +++ b/packages/okx/src/advancedBarrel.ts @@ -2,7 +2,8 @@ import { Nip07A } from "@ckb-ccc/nip07/advanced"; import { UniSatA } from "@ckb-ccc/uni-sat/advanced"; export interface BitcoinProvider - extends Pick< + extends + Pick< UniSatA.Provider, "on" | "removeListener" | "signMessage" | "signPsbt" | "pushPsbt" >, diff --git a/packages/okx/tsconfig.json b/packages/okx/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/okx/tsconfig.json +++ b/packages/okx/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/rei/package.json b/packages/rei/package.json index 1d45d26c0..2d3d5e11c 100644 --- a/packages/rei/package.json +++ b/packages/rei/package.json @@ -37,14 +37,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/rei/tsconfig.json b/packages/rei/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/rei/tsconfig.json +++ b/packages/rei/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/shell/package.json b/packages/shell/package.json index d68c060d7..fb9a1f1b8 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -41,15 +41,15 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^10.0.1", "copyfiles": "^2.4.1", - "eslint": "^9.34.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/shell/tsconfig.base.json b/packages/shell/tsconfig.base.json index 41af24499..246eb012d 100644 --- a/packages/shell/tsconfig.base.json +++ b/packages/shell/tsconfig.base.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/spore/package.json b/packages/spore/package.json index b780c104b..52d874cb6 100644 --- a/packages/spore/package.json +++ b/packages/spore/package.json @@ -38,24 +38,24 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "@types/node": "^24.3.0", - "dotenv": "^17.2.1", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "@types/node": "^26.0.0", + "dotenv": "^17.4.2", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0", - "vitest": "^3.2.4" + "typescript-eslint": "^8.61.1", + "vitest": "^4.1.9" }, "publishConfig": { "access": "public" }, "dependencies": { "@ckb-ccc/core": "workspace:*", - "axios": "^1.11.0", + "axios": "^1.18.0", "tsdown": "^0.22.3" }, "packageManager": "pnpm@11.8.0", diff --git a/packages/spore/tsconfig.json b/packages/spore/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/spore/tsconfig.json +++ b/packages/spore/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/ssri/package.json b/packages/ssri/package.json index 8890ece15..3edc63e5d 100644 --- a/packages/ssri/package.json +++ b/packages/ssri/package.json @@ -30,15 +30,15 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "@types/node": "^24.3.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "@types/node": "^26.0.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/ssri/tsconfig.json b/packages/ssri/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/ssri/tsconfig.json +++ b/packages/ssri/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/tests/package.json b/packages/tests/package.json index 02710424e..7026ae11a 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -15,18 +15,19 @@ }, "devDependencies": { "@ckb-ccc/ccc": "workspace:*", - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", - "tsx": "^4.20.5", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", + "tsx": "^4.22.4", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "packageManager": "pnpm@11.8.0", "dependencies": { + "@types/node": "^26.0.0", "tsdown": "^0.22.3" } } diff --git a/packages/tests/tests/esm.test.mts b/packages/tests/tests/esm.test.mts index 59a4a6ebc..8462a1295 100644 --- a/packages/tests/tests/esm.test.mts +++ b/packages/tests/tests/esm.test.mts @@ -1,7 +1,7 @@ import { ccc } from "@ckb-ccc/ccc"; import assert from "node:assert/strict"; -import { fileURLToPath } from "url"; import path from "path"; +import { fileURLToPath } from "url"; assert.ok(ccc, "CCC package should be imported successfully in ESM"); assert.strictEqual( diff --git a/packages/tests/tsconfig.json b/packages/tests/tsconfig.json index 71a858e56..6f288040c 100644 --- a/packages/tests/tsconfig.json +++ b/packages/tests/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", + "types": ["node"], "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/type-id/package.json b/packages/type-id/package.json index ac8acca54..25daec15f 100644 --- a/packages/type-id/package.json +++ b/packages/type-id/package.json @@ -39,17 +39,17 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "@types/node": "^24.3.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "@types/node": "^26.0.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "tsdown": "^0.22.3", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0", - "vitest": "^3.2.4" + "typescript-eslint": "^8.61.1", + "vitest": "^4.1.9" }, "publishConfig": { "access": "public" diff --git a/packages/type-id/tsconfig.json b/packages/type-id/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/type-id/tsconfig.json +++ b/packages/type-id/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/udt/package.json b/packages/udt/package.json index 4893b9ea2..92c0dbd2f 100644 --- a/packages/udt/package.json +++ b/packages/udt/package.json @@ -30,15 +30,15 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "@types/node": "^24.3.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "@types/node": "^26.0.0", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/udt/tsconfig.json b/packages/udt/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/udt/tsconfig.json +++ b/packages/udt/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/uni-sat/package.json b/packages/uni-sat/package.json index f46579af2..6ab6d5a61 100644 --- a/packages/uni-sat/package.json +++ b/packages/uni-sat/package.json @@ -38,14 +38,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/uni-sat/tsconfig.json b/packages/uni-sat/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/uni-sat/tsconfig.json +++ b/packages/uni-sat/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/utxo-global/package.json b/packages/utxo-global/package.json index 5f579cc8e..ad0ba92aa 100644 --- a/packages/utxo-global/package.json +++ b/packages/utxo-global/package.json @@ -38,14 +38,14 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" diff --git a/packages/utxo-global/tsconfig.json b/packages/utxo-global/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/utxo-global/tsconfig.json +++ b/packages/utxo-global/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/packages/xverse/package.json b/packages/xverse/package.json index 128b056be..aceb4eeab 100644 --- a/packages/xverse/package.json +++ b/packages/xverse/package.json @@ -38,23 +38,23 @@ "format": "prettier --write . && eslint --fix ./src" }, "devDependencies": { - "@eslint/js": "^9.34.0", - "eslint": "^9.34.0", + "@eslint/js": "^10.0.1", + "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", + "eslint-plugin-prettier": "^5.5.6", + "prettier": "^3.8.4", + "prettier-plugin-organize-imports": "^4.3.0", "typescript": "^6.0.3", - "typescript-eslint": "^8.41.0" + "typescript-eslint": "^8.61.1" }, "publishConfig": { "access": "public" }, "dependencies": { "@ckb-ccc/core": "workspace:*", - "bitcoinjs-lib": "^7.0.0", + "bitcoinjs-lib": "^7.0.1", "tsdown": "^0.22.3", - "valibot": "^1.1.0" + "valibot": "^1.4.1" }, "packageManager": "pnpm@11.8.0", "types": "./dist.commonjs/index.d.ts" diff --git a/packages/xverse/src/sat-connect-core/types.advanced.ts b/packages/xverse/src/sat-connect-core/types.advanced.ts index 57d4f3bf1..9469f1f3d 100644 --- a/packages/xverse/src/sat-connect-core/types.advanced.ts +++ b/packages/xverse/src/sat-connect-core/types.advanced.ts @@ -135,13 +135,15 @@ export interface RpcError { data?: any; } -export interface RpcErrorResponse - extends RpcBase { +export interface RpcErrorResponse< + TError extends RpcError = RpcError, +> extends RpcBase { error: TError; } -export interface RpcSuccessResponse - extends RpcBase { +export interface RpcSuccessResponse< + Method extends keyof Requests, +> extends RpcBase { result: Return; } diff --git a/packages/xverse/src/signer.ts b/packages/xverse/src/signer.ts index 2585ce771..7cbc5ab9d 100644 --- a/packages/xverse/src/signer.ts +++ b/packages/xverse/src/signer.ts @@ -24,7 +24,7 @@ async function checkResponse( } if (v.is(rpcSuccessResponseMessageSchema, res)) { - return res.result as Return; + return res.result; } // eslint-disable-next-line @typescript-eslint/only-throw-error @@ -203,6 +203,7 @@ export class Signer extends ccc.SignerBtc { error instanceof Error ? error.message : String(error); throw new Error( `Failed to parse PSBT hex. Please provide inputsToSign explicitly in options. Original error: ${errorMessage}`, + { cause: error }, ); } diff --git a/packages/xverse/tsconfig.json b/packages/xverse/tsconfig.json index 5c7bd2a42..3399c6f67 100644 --- a/packages/xverse/tsconfig.json +++ b/packages/xverse/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25ac46ee0..050f98894 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,41 +9,41 @@ importers: .: devDependencies: '@changesets/changelog-github': - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^0.7.0 + version: 0.7.0 '@changesets/cli': - specifier: ^2.29.6 - version: 2.31.0(@types/node@25.9.1) + specifier: ^2.31.0 + version: 2.31.0(@types/node@26.0.0) '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@vitest/coverage-v8': - specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) + specifier: 4.1.9 + version: 4.1.9(vitest@4.1.9) jest: - specifier: 30.1.1 - version: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) + specifier: 30.4.2 + version: 30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) ts-jest: - specifier: ^29.4.1 - version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)))(typescript@6.0.3) + specifier: ^29.4.11 + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)))(typescript@6.0.3) typedoc: - specifier: 0.28.7 - version: 0.28.7(typescript@6.0.3) + specifier: 0.28.19 + version: 0.28.19(typescript@6.0.3) typedoc-material-theme: - specifier: ^1.4.0 - version: 1.4.1(typedoc@0.28.7(typescript@6.0.3)) + specifier: ^1.4.1 + version: 1.4.1(typedoc@0.28.19(typescript@6.0.3)) typedoc-plugin-extras: specifier: ^4.0.1 - version: 4.0.1(typedoc@0.28.7(typescript@6.0.3)) + version: 4.0.1(typedoc@0.28.19(typescript@6.0.3)) typedoc-plugin-ga: - specifier: ^1.0.5 - version: 1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@6.0.3))(typescript@6.0.3) + specifier: ^1.1.1 + version: 1.1.1(@types/eslint@9.6.1)(typedoc@0.28.19(typescript@6.0.3))(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + specifier: ^4.1.9 + version: 4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) packages/ccc: dependencies: @@ -76,32 +76,32 @@ importers: version: link:../xverse devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/ckb-ccc: dependencies: @@ -110,32 +110,32 @@ importers: version: link:../ccc devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/connector: dependencies: @@ -143,33 +143,33 @@ importers: specifier: workspace:* version: link:../ccc lit: - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.3 + version: 3.3.3 devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/connector-react: dependencies: @@ -187,35 +187,35 @@ importers: version: 19.2.3 devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/core: dependencies: '@joyid/ckb': - specifier: ^1.1.2 - version: 1.1.2(typescript@6.0.3) + specifier: ^1.1.4 + version: 1.1.4(typescript@6.0.3) '@noble/ciphers': specifier: ^2.2.0 version: 2.2.0 @@ -235,48 +235,48 @@ importers: specifier: ^6.0.3 version: 6.0.3 ethers: - specifier: ^6.15.0 - version: 6.15.0 + specifier: ^6.17.0 + version: 6.17.0 isomorphic-ws: specifier: ^5.0.0 - version: 5.0.0(ws@8.18.3) + version: 5.0.0(ws@8.21.0) ws: - specifier: ^8.18.3 - version: 8.18.3 + specifier: ^8.21.0 + version: 8.21.0 devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) '@types/ws': specifier: ^8.18.1 version: 8.18.1 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.8.4) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 + specifier: ^3.8.4 version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.8.4)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) tsdown: specifier: 0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + specifier: ^4.1.9 + version: 4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) packages/demo: dependencies: @@ -358,7 +358,7 @@ importers: version: 9.34.0(jiti@2.7.0) eslint-config-next: specifier: 16.0.10 - version: 16.0.10(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + version: 16.0.10(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) @@ -393,45 +393,45 @@ importers: specifier: workspace:* version: link:../type-id '@ipld/dag-cbor': - specifier: ^9.2.5 - version: 9.2.5 + specifier: ^10.0.1 + version: 10.0.1 '@noble/curves': specifier: ^2.2.0 version: 2.2.0 devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^26.0.0 + version: 26.0.0 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + specifier: ^4.1.9 + version: 4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) packages/docs: dependencies: @@ -443,7 +443,7 @@ importers: version: 16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3) fumadocs-mdx: specifier: 14.3.2 - version: 14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) + version: 14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) fumadocs-ui: specifier: 16.8.5 version: 16.8.5(@tailwindcss/oxide@4.3.0)(@types/mdx@2.0.13)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(tailwindcss@4.3.0) @@ -504,32 +504,32 @@ importers: version: link:../core tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/examples: dependencies: @@ -547,32 +547,32 @@ importers: version: 2.2.0 tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/faucet: dependencies: @@ -698,39 +698,39 @@ importers: specifier: workspace:* version: link:../core '@joyid/ckb': - specifier: ^1.1.2 - version: 1.1.2(typescript@6.0.3) + specifier: ^1.1.4 + version: 1.1.4(typescript@6.0.3) '@joyid/common': - specifier: ^0.2.1 - version: 0.2.1(typescript@6.0.3) + specifier: ^0.2.2 + version: 0.2.2(typescript@6.0.3) tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/lumos-patches: dependencies: @@ -753,36 +753,36 @@ importers: specifier: 0.24.0-next.2 version: 0.24.0-next.2 '@joyid/ckb': - specifier: ^1.1.2 - version: 1.1.2(typescript@6.0.3) + specifier: ^1.1.4 + version: 1.1.4(typescript@6.0.3) tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/nip07: dependencies: @@ -791,32 +791,32 @@ importers: version: link:../core tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/okx: dependencies: @@ -831,32 +831,32 @@ importers: version: link:../uni-sat tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/playground: dependencies: @@ -898,7 +898,7 @@ importers: version: 7.0.0(typescript@5.9.2) isomorphic-ws: specifier: ^5.0.0 - version: 5.0.0(ws@8.18.3) + version: 5.0.0(ws@8.21.0) lucide-react: specifier: ^0.542.0 version: 0.542.0(react@19.2.3) @@ -977,32 +977,32 @@ importers: version: link:../core tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/shell: dependencies: @@ -1026,32 +1026,32 @@ importers: version: link:../udt devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/spore: dependencies: @@ -1059,45 +1059,45 @@ importers: specifier: workspace:* version: link:../core axios: - specifier: ^1.11.0 - version: 1.11.0 + specifier: ^1.18.0 + version: 1.18.0 tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^26.0.0 + version: 26.0.0 dotenv: - specifier: ^17.2.1 - version: 17.2.1 + specifier: ^17.4.2 + version: 17.4.2 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + specifier: ^4.1.9 + version: 4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) packages/ssri: dependencies: @@ -1106,72 +1106,75 @@ importers: version: link:../core tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^26.0.0 + version: 26.0.0 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/tests: dependencies: + '@types/node': + specifier: ^26.0.0 + version: 26.0.0 tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@ckb-ccc/ccc': specifier: workspace:* version: link:../ccc '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) tsx: - specifier: ^4.20.5 - version: 4.20.5 + specifier: ^4.22.4 + version: 4.22.4 typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/type-id: dependencies: @@ -1180,38 +1183,38 @@ importers: version: link:../core devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^26.0.0 + version: 26.0.0 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + specifier: ^4.1.9 + version: 4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) packages/udt: dependencies: @@ -1223,35 +1226,35 @@ importers: version: link:../ssri tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^26.0.0 + version: 26.0.0 eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/uni-sat: dependencies: @@ -1260,32 +1263,32 @@ importers: version: link:../core tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/utxo-global: dependencies: @@ -1294,32 +1297,32 @@ importers: version: link:../core tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages/xverse: dependencies: @@ -1327,44 +1330,44 @@ importers: specifier: workspace:* version: link:../core bitcoinjs-lib: - specifier: ^7.0.0 - version: 7.0.0(typescript@6.0.3) + specifier: ^7.0.1 + version: 7.0.1(typescript@6.0.3) tsdown: specifier: ^0.22.3 - version: 0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) + version: 0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)) valibot: - specifier: ^1.1.0 - version: 1.1.0(typescript@6.0.3) + specifier: ^1.4.1 + version: 1.4.1(typescript@6.0.3) devDependencies: '@eslint/js': - specifier: ^9.34.0 - version: 9.34.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.7.0) + specifier: ^10.5.0 + version: 10.5.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.6.2) + specifier: ^5.5.6 + version: 5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.4 + version: 3.8.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@6.0.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.4)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.61.1 + version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) packages: - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + '@adraffy/ens-normalize@1.11.1': + resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} '@algolia/abtesting@1.12.0': resolution: {integrity: sha512-EfW0bfxjPs+C7ANkJDw2TATntfBKsFiy7APh+KO0pQ8A6HYa5I0NjFuCGCXWfzzzLXNZta3QUl3n5Kmm6aJo9Q==} @@ -1426,10 +1429,6 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@angular-devkit/core@19.2.15': resolution: {integrity: sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1678,8 +1677,8 @@ packages: '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/changelog-github@0.5.1': - resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} + '@changesets/changelog-github@0.7.0': + resolution: {integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==} '@changesets/cli@2.31.0': resolution: {integrity: sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==} @@ -1694,8 +1693,8 @@ packages: '@changesets/get-dependents-graph@2.1.4': resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} - '@changesets/get-github-info@0.6.0': - resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + '@changesets/get-github-info@0.8.0': + resolution: {integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==} '@changesets/get-release-plan@4.0.16': resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} @@ -1805,12 +1804,6 @@ packages: '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.7': resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} @@ -1823,12 +1816,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.7': resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} @@ -1841,12 +1828,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.7': resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} @@ -1859,12 +1840,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.7': resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} @@ -1877,12 +1852,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.7': resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} @@ -1895,12 +1864,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.7': resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} @@ -1913,12 +1876,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.7': resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} @@ -1931,12 +1888,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.7': resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} @@ -1949,12 +1900,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.7': resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} @@ -1967,12 +1912,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.7': resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} @@ -1985,12 +1924,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.7': resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} @@ -2003,12 +1936,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.7': resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} @@ -2021,12 +1948,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.7': resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} @@ -2039,12 +1960,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.7': resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} @@ -2057,12 +1972,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.7': resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} @@ -2075,12 +1984,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.7': resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} @@ -2093,12 +1996,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.7': resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} @@ -2111,12 +2008,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.7': resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} @@ -2129,12 +2020,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.7': resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} @@ -2147,12 +2032,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.7': resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} @@ -2165,12 +2044,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.7': resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} @@ -2183,12 +2056,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.7': resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} @@ -2201,12 +2068,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.7': resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} @@ -2219,12 +2080,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.7': resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} @@ -2237,12 +2092,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.7': resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} @@ -2255,12 +2104,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.7': resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} @@ -2297,14 +2140,26 @@ packages: resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/config-helpers@0.3.1': resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.6.0': + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/core@0.15.2': resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2313,6 +2168,15 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2325,10 +2189,18 @@ packages: resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/plugin-kit@0.3.5': resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@euberdeveloper/eslint-plugin@2.7.0': resolution: {integrity: sha512-IyZfysHjYCSU6Ty86imkCZmZ5diTAOKn7DlEmEO1yHhFjvVk+xFr0ApjTD7TyIQolnBPixZNw477V7mq86llcw==} @@ -2706,9 +2578,8 @@ packages: '@types/node': optional: true - '@ipld/dag-cbor@9.2.5': - resolution: {integrity: sha512-84wSr4jv30biui7endhobYhXBQzQE4c/wdoWlFrKcfiwH+ofaPg8fwsM8okX9cOzkkrsAsNdDyH3ou+kiLquwQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-cbor@10.0.1': + resolution: {integrity: sha512-nF07iiZPqduSXyMxc0jGANArRHFa9hjMQpQlgLOV2O/3xI1CNb5sXhvbmigbMiz5owSGi0Oq10VtauupMojuiw==} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -2730,6 +2601,10 @@ packages: resolution: {integrity: sha512-f7TGqR1k4GtN5pyFrKmq+ZVndesiwLU33yDpJIGMS9aW+j6hKjue7ljeAdznBsH9kAnxUWe2Y+Y3fLV/FJt3gA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/console@30.4.1': + resolution: {integrity: sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/core@30.1.1': resolution: {integrity: sha512-3ncU9peZ3D2VdgRkdZtUceTrDgX5yiDRwAFjtxNfU22IiZrpVWlv/FogzDLYSJQptQGfFo3PcHK86a2oG6WUGg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2739,26 +2614,55 @@ packages: node-notifier: optional: true + '@jest/core@30.4.2': + resolution: {integrity: sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + '@jest/diff-sequences@30.0.1': resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/diff-sequences@30.4.0': + resolution: {integrity: sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/environment@30.1.1': resolution: {integrity: sha512-yWHbU+3j7ehQE+NRpnxRvHvpUhoohIjMePBbIr8lfe0cWVb0WeTf80DNux1GPJa18CDHiIU5DtksGUfxcDE+Rw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/environment@30.4.1': + resolution: {integrity: sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@30.1.1': resolution: {integrity: sha512-5YUHr27fpJ64dnvtu+tt11ewATynrHkGYD+uSFgRr8V2eFJis/vEXgToyLwccIwqBihVfz9jwio+Zr1ab1Zihw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@30.4.1': + resolution: {integrity: sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect@30.1.1': resolution: {integrity: sha512-3vHIHsF+qd3D8FU2c7U5l3rg1fhDwAYcGyHyZAi94YIlTwcJ+boNhRyJf373cl4wxbOX+0Q7dF40RTrTFTSuig==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect@30.4.1': + resolution: {integrity: sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@30.1.1': resolution: {integrity: sha512-fK/25dNgBNYPw3eLi2CRs57g1H04qBAFNMsUY3IRzkfx/m4THe0E1zF+yGQBOMKKc2XQVdc9EYbJ4hEm7/2UtA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@30.4.1': + resolution: {integrity: sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/get-type@30.1.0': resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2767,6 +2671,10 @@ packages: resolution: {integrity: sha512-NNUUkHT2TU/xztZl6r1UXvJL+zvCwmZsQDmK69fVHHcB9fBtlu3FInnzOve/ZoyKnWY8JXWJNT+Lkmu1+ubXUA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/globals@30.4.1': + resolution: {integrity: sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/pattern@30.0.1': resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2784,6 +2692,15 @@ packages: node-notifier: optional: true + '@jest/reporters@30.4.1': + resolution: {integrity: sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + '@jest/schemas@30.0.5': resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2796,6 +2713,10 @@ packages: resolution: {integrity: sha512-TkVBc9wuN22TT8hESRFmjjg/xIMu7z0J3UDYtIRydzCqlLPTB7jK1DDBKdnTUZ4zL3z3rnPpzV6rL1Uzh87sXg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/snapshot-utils@30.4.1': + resolution: {integrity: sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/source-map@30.0.1': resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2804,10 +2725,18 @@ packages: resolution: {integrity: sha512-bMdj7fNu8iZuBPSnbVir5ezvWmVo4jrw7xDE+A33Yb3ENCoiJK9XgOLgal+rJ9XSKjsL7aPUMIo87zhN7I5o2w==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/test-result@30.4.1': + resolution: {integrity: sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/test-sequencer@30.1.1': resolution: {integrity: sha512-yruRdLXSA3HYD/MTNykgJ6VYEacNcXDFRMqKVAwlYegmxICUiT/B++CNuhJnYJzKYks61iYnjVsMwbUqmmAYJg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/test-sequencer@30.4.1': + resolution: {integrity: sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/transform@30.1.1': resolution: {integrity: sha512-PHIA2AbAASBfk6evkNifvmx9lkOSkmvaQoO6VSpuL8+kQqDMHeDoJ7RU3YP1wWAMD7AyQn9UL5iheuFYCC4lqQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2824,11 +2753,11 @@ packages: resolution: {integrity: sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@joyid/ckb@1.1.2': - resolution: {integrity: sha512-+e+ISF566zaKNhKNSSS5kBw8or4Kb5Xqxe/2jVkUXKkqVHSS02Trrqe0g4IjSyeN9bszzolr1XgStv2hz62tqA==} + '@joyid/ckb@1.1.4': + resolution: {integrity: sha512-8WqcfFd/kfttuaIf2/XsRcmQkEwYLUnZc9UZRcGSVX6GkwzpOLVY5S6Hq+fDXY82lQo9upJGjjudrtcPKYPx3g==} - '@joyid/common@0.2.1': - resolution: {integrity: sha512-DjA+Cy0koTCmPzhkhHkPc0icRLE78ktZY46rXHXfkSqxwQIJ/ED/whPoeF5tkTrN+teIC/hfzVRVkEE4zh/ASQ==} + '@joyid/common@0.2.2': + resolution: {integrity: sha512-Sh9cBlbL+WgcKJ7jngELg5oY0qAO1trHm4iq1Ao0drWwi4biF8p3cb5mAEoO36UxXOy3CYSDbECWLGIP9lWNgg==} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -4014,6 +3943,9 @@ packages: '@sinonjs/fake-timers@13.0.5': resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@sinonjs/fake-timers@15.4.0': + resolution: {integrity: sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -4373,6 +4305,9 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -4546,6 +4481,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.61.1': + resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.61.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/parser@6.21.0': resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4570,6 +4513,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.61.1': + resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/project-service@8.41.0': resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4582,6 +4532,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.61.1': + resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@6.21.0': resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4594,6 +4550,10 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.61.1': + resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.41.0': resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4606,6 +4566,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.61.1': + resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/type-utils@6.21.0': resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4630,6 +4596,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.61.1': + resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/types@6.21.0': resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4642,6 +4615,10 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.61.1': + resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@6.21.0': resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4663,6 +4640,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.61.1': + resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@6.21.0': resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4683,6 +4666,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.61.1': + resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@6.21.0': resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4695,6 +4685,10 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.61.1': + resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@uiw/react-json-view@2.0.0-alpha.37': resolution: {integrity: sha512-y9G0Kz4O4gkTRWh0xoBj2G+QRsC4DQ18XZAF5Q5AdtSTZCM6HfifjiNgQBJIsg0nDndw3432wgpyW9ROV+1FVQ==} peerDependencies: @@ -4832,43 +4826,43 @@ packages: '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.1.9': + resolution: {integrity: sha512-G9/lgqibheLVBDRuya45EbsEXTYcWoSG+TLg7i2axuzx0Eq62eXn+aWXyaVdV5vKvFSWd6ywcX8hA7la9Pvu8g==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.1.9 + vitest: 4.1.9 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.1.9': + resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.1.9': + resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.9': + resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.1.9': + resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.1.9': + resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.1.9': + resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.1.9': + resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -4966,6 +4960,10 @@ packages: aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -5125,8 +5123,8 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - ast-v8-to-istanbul@0.3.4: - resolution: {integrity: sha512-cxrAnZNLBnQwBPByK4CeDaw5sWZtMilJE/Q3iDA0aamgaIVNDF9T6K2/8DfYDZEejZ2jNnDrG9m8MY72HFd0KA==} + ast-v8-to-istanbul@1.0.4: + resolution: {integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==} astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} @@ -5150,6 +5148,9 @@ packages: axios@1.11.0: resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} + axios@1.18.0: + resolution: {integrity: sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -5252,6 +5253,10 @@ packages: resolution: {integrity: sha512-2W6dGXFd1KG3Bs90Bzb5+ViCeSKNIYkCUWZ4cvUzUgwnneiNNZ6Sk8twGNcjlesmxC0JyLc/958QycfpvXLg7A==} engines: {node: '>=18.0.0'} + bitcoinjs-lib@7.0.1: + resolution: {integrity: sha512-vwEmpL5Tpj0I0RBdNkcDMXePoaYSTeKY6mL6/l5esbnTs+jGdPDuLp4NY1hSh6Zk5wSgePygZ4Wx5JJao30Pww==} + engines: {node: '>=18.0.0'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -5332,10 +5337,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - cac@7.0.0: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} @@ -5373,15 +5374,15 @@ packages: caniuse-lite@1.0.30001799: resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==} - cborg@4.3.2: - resolution: {integrity: sha512-l+QzebEAG0vb09YKkaOrMi2zmm80UNjmbvocMIeW5hO7JOXWdrQ/H49yOKfYX0MBgrj/KWgatBnEgRXyNyKD+A==} + cborg@5.1.1: + resolution: {integrity: sha512-BDbSRIp6XrQXkTc7g+DN0RB9RrDPTUfals2ecWUlt3juPLjbAvy/V72mJcXY0Ehu0Dq/3WpNCOCT68HUTbW+lw==} hasBin: true ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@2.4.2: @@ -5411,10 +5412,6 @@ packages: chardet@2.2.0: resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -5853,10 +5850,6 @@ packages: babel-plugin-macros: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-freeze-strict@1.1.1: resolution: {integrity: sha512-QemROZMM2IvhAcCFvahdX2Vbm4S/txeq5rFYU9fh4mQP79WTMW5c/HkQ2ICl1zuzcDZdPZ6zarDxQeQMsVYoNA==} @@ -5952,8 +5945,8 @@ packages: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} - dotenv@17.2.1: - resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} engines: {node: '>=12'} dotenv@8.6.0: @@ -6059,6 +6052,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -6084,11 +6080,6 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} @@ -6264,6 +6255,10 @@ packages: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint-utils@3.0.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -6282,6 +6277,20 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.5.0: + resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6302,6 +6311,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6363,8 +6376,8 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - ethers@6.15.0: - resolution: {integrity: sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==} + ethers@6.17.0: + resolution: {integrity: sha512-BpyrpIPJ3ydEVow8zGaz1DuPS7YU8DcWxuBnY9a0UA/lvAPwrMr+EPXsfrul628SRaekPNeIM4UFh/91GWZang==} engines: {node: '>=14.0.0'} event-target-shim@5.0.1: @@ -6394,6 +6407,10 @@ packages: resolution: {integrity: sha512-OKe7cdic4qbfWd/CcgwJvvCrNX2KWfuMZee9AfJHL1gTYmvqjBjZG1a2NwfhspBzxzlXwsN75WWpKTYfsJpBxg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + expect@30.4.1: + resolution: {integrity: sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + express@5.1.0: resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} engines: {node: '>= 18'} @@ -6490,9 +6507,6 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} @@ -6505,6 +6519,15 @@ packages: debug: optional: true + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -6524,6 +6547,10 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} + engines: {node: '>= 6'} + formidable@3.5.4: resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} engines: {node: '>=14.0.0'} @@ -6898,6 +6925,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + human-id@4.2.0: resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} hasBin: true @@ -7200,10 +7231,18 @@ packages: resolution: {integrity: sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-changed-files@30.4.1: + resolution: {integrity: sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-circus@30.1.1: resolution: {integrity: sha512-M3Vd4x5wD7eSJspuTvRF55AkOOBndRxgW3gqQBDlFvbH3X+ASdi8jc+EqXEeAFd/UHulVYIlC4XKJABOhLw6UA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-circus@30.4.2: + resolution: {integrity: sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-cli@30.1.1: resolution: {integrity: sha512-xm9llxuh5OoI5KZaYzlMhklryHBwg9LZy/gEaaMlXlxb+cZekGNzukU0iblbDo3XOBuN6N0CgK4ykgNRYSEb6g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7214,6 +7253,16 @@ packages: node-notifier: optional: true + jest-cli@30.4.2: + resolution: {integrity: sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jest-config@30.1.1: resolution: {integrity: sha512-xuPGUGDw+9fPPnGmddnLnHS/mhKUiJOW7K65vErYmglEPKq65NKwSRchkQ7iv6gqjs2l+YNEsAtbsplxozdOWg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7229,22 +7278,53 @@ packages: ts-node: optional: true + jest-config@30.4.2: + resolution: {integrity: sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@types/node': '*' + esbuild-register: '>=3.4.0' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + jest-diff@30.1.1: resolution: {integrity: sha512-LUU2Gx8EhYxpdzTR6BmjL1ifgOAQJQELTHOiPv9KITaKjZvJ9Jmgigx01tuZ49id37LorpGc9dPBPlXTboXScw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-diff@30.4.1: + resolution: {integrity: sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-docblock@30.0.1: resolution: {integrity: sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-docblock@30.4.0: + resolution: {integrity: sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-each@30.1.0: resolution: {integrity: sha512-A+9FKzxPluqogNahpCv04UJvcZ9B3HamqpDNWNKDjtxVRYB8xbZLFuCr8JAJFpNp83CA0anGQFlpQna9Me+/tQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-each@30.4.1: + resolution: {integrity: sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-environment-node@30.1.1: resolution: {integrity: sha512-IaMoaA6saxnJimqCppUDqKck+LKM0Jg+OxyMUIvs1yGd2neiC22o8zXo90k04+tO+49OmgMR4jTgM5e4B0S62Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-environment-node@30.4.1: + resolution: {integrity: sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-haste-map@30.1.0: resolution: {integrity: sha512-JLeM84kNjpRkggcGpQLsV7B8W4LNUWz7oDNVnY1Vjj22b5/fAb3kk3htiD+4Na8bmJmjJR7rBtS2Rmq/NEcADg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7257,18 +7337,34 @@ packages: resolution: {integrity: sha512-AoFvJzwxK+4KohH60vRuHaqXfWmeBATFZpzpmzNmYTtmRMiyGPVhkXpBqxUQunw+dQB48bDf4NpUs6ivVbRv1g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-leak-detector@30.4.1: + resolution: {integrity: sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matcher-utils@30.1.1: resolution: {integrity: sha512-SuH2QVemK48BNTqReti6FtjsMPFsSOD/ZzRxU1TttR7RiRsRSe78d03bb4Cx6D4bQC/80Q8U4VnaaAH9FlbZ9w==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matcher-utils@30.4.1: + resolution: {integrity: sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-message-util@30.1.0: resolution: {integrity: sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-message-util@30.4.1: + resolution: {integrity: sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@30.0.5: resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@30.4.1: + resolution: {integrity: sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-pnp-resolver@1.2.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -7290,22 +7386,42 @@ packages: resolution: {integrity: sha512-tRtaaoH8Ws1Gn1o/9pedt19dvVgr81WwdmvJSP9Ow3amOUOP2nN9j94u5jC9XlIfa2Q1FQKIWWQwL4ajqsjCGQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-resolve-dependencies@30.4.2: + resolution: {integrity: sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-resolve@30.1.0: resolution: {integrity: sha512-hASe7D/wRtZw8Cm607NrlF7fi3HWC5wmA5jCVc2QjQAB2pTwP9eVZILGEi6OeSLNUtE1zb04sXRowsdh5CUjwA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-resolve@30.4.1: + resolution: {integrity: sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-runner@30.1.1: resolution: {integrity: sha512-ATe6372SOfJvCRExtCAr06I4rGujwFdKg44b6i7/aOgFnULwjxzugJ0Y4AnG+jeSeQi8dU7R6oqLGmsxRUbErQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-runner@30.4.2: + resolution: {integrity: sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-runtime@30.1.1: resolution: {integrity: sha512-7sOyR0Oekw4OesQqqBHuYJRB52QtXiq0NNgLRzVogiMSxKCMiliUd6RrXHCnG5f12Age/ggidCBiQftzcA9XKw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-runtime@30.4.2: + resolution: {integrity: sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-snapshot@30.1.1: resolution: {integrity: sha512-7/iBEzoJqEt2TjkQY+mPLHP8cbPhLReZVkkxjTMzIzoTC4cZufg7HzKo/n9cIkXKj2LG0x3mmBHsZto+7TOmFg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-snapshot@30.4.1: + resolution: {integrity: sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@30.0.5: resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7318,10 +7434,18 @@ packages: resolution: {integrity: sha512-7P3ZlCFW/vhfQ8pE7zW6Oi4EzvuB4sgR72Q1INfW9m0FGo0GADYlPwIkf4CyPq7wq85g+kPMtPOHNAdWHeBOaA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-validate@30.4.1: + resolution: {integrity: sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-watcher@30.1.1: resolution: {integrity: sha512-CrAQ73LlaS6KGQQw6NBi71g7qvP7scy+4+2c0jKX6+CWaYg85lZiig5nQQVTsS5a5sffNPL3uxXnaE9d7v9eQg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-watcher@30.4.1: + resolution: {integrity: sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -7344,6 +7468,16 @@ packages: node-notifier: optional: true + jest@30.4.2: + resolution: {integrity: sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jiti@2.5.1: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true @@ -7352,12 +7486,12 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-xxhash@1.0.4: resolution: {integrity: sha512-S/6Oo7ruxx5k8m4qlMnbpwQdJjRsvvfcIhIk1dA9c5y5GNhYHKYKu9krEK3QgBax6CxJuf4gRL2opgLkdzWIKg==} engines: {node: '>=8.0.0'} @@ -7625,8 +7759,8 @@ packages: lit-html@3.3.1: resolution: {integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==} - lit@3.3.1: - resolution: {integrity: sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==} + lit@3.3.3: + resolution: {integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==} load-esm@1.0.2: resolution: {integrity: sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==} @@ -7678,9 +7812,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -7710,8 +7841,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.3: + resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -8058,8 +8189,8 @@ packages: resolution: {integrity: sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==} engines: {node: '>= 10.16.0'} - multiformats@13.4.2: - resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} + multiformats@14.0.0: + resolution: {integrity: sha512-iWK1RrAS58p2NDfeZFuSUSv3ZPewTIhsGbh/5NgeGGJwJmRljLxGtjRR3nkn+loG3zl+IrfR/W1590QnrSK+Gg==} mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} @@ -8352,10 +8483,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -8434,6 +8561,16 @@ packages: vue-tsc: optional: true + prettier-plugin-organize-imports@4.3.0: + resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==} + peerDependencies: + prettier: '>=2.0' + typescript: '>=2.9' + vue-tsc: ^2.1.0 || 3 + peerDependenciesMeta: + vue-tsc: + optional: true + prettier-plugin-tailwindcss@0.6.14: resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==} engines: {node: '>=14.21.3'} @@ -8514,6 +8651,10 @@ packages: resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-format@30.4.1: + resolution: {integrity: sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -8536,6 +8677,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -8596,6 +8741,9 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.2.7: + resolution: {integrity: sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==} + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -9042,8 +9190,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} @@ -9131,9 +9279,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - strtok3@10.3.4: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} @@ -9302,10 +9447,6 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -9321,9 +9462,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.2.4: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} @@ -9336,16 +9474,8 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} tmpl@1.0.5: @@ -9388,6 +9518,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -9494,8 +9630,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.20.5: - resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + tsx@4.22.4: + resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} engines: {node: '>=18.0.0'} hasBin: true @@ -9574,12 +9710,12 @@ packages: peerDependencies: typedoc: ^0.27.6 - typedoc@0.28.7: - resolution: {integrity: sha512-lpz0Oxl6aidFkmS90VQDQjk/Qf2iw0IUvFqirdONBdj7jPSN9mGXhy66BcGNDxx5ZMyKKiBVAREvPEzT6Uxipw==} + typedoc@0.28.19: + resolution: {integrity: sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x typescript-eslint@8.41.0: resolution: {integrity: sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==} @@ -9595,6 +9731,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + typescript-eslint@8.61.1: + resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -9780,8 +9923,8 @@ packages: typescript: optional: true - valibot@1.1.0: - resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==} + valibot@1.4.1: + resolution: {integrity: sha512-klCmFTz2jeDluy9RwX+F884TCiogtdBJ/YaxSx1EOBYXa3NXNWj8kR1jjN8rzluwojJVWWaHJ4r1U5LfICnM3g==} peerDependencies: typescript: '>=5' peerDependenciesMeta: @@ -9811,11 +9954,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - vite@7.3.5: resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9856,26 +9994,39 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.9: + resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.9 + '@vitest/browser-preview': 4.1.9 + '@vitest/browser-webdriverio': 4.1.9 + '@vitest/coverage-istanbul': 4.1.9 + '@vitest/coverage-v8': 4.1.9 + '@vitest/ui': 4.1.9 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': optional: true '@vitest/ui': optional: true @@ -9991,20 +10142,8 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10086,7 +10225,7 @@ packages: snapshots: - '@adraffy/ens-normalize@1.10.1': {} + '@adraffy/ens-normalize@1.11.1': {} '@algolia/abtesting@1.12.0': dependencies: @@ -10188,11 +10327,6 @@ snapshots: '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/core@19.2.15(chokidar@4.0.3)': dependencies: ajv: 8.17.1 @@ -10502,15 +10636,15 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/changelog-github@0.5.1': + '@changesets/changelog-github@0.7.0': dependencies: - '@changesets/get-github-info': 0.6.0 + '@changesets/get-github-info': 0.8.0 '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding - '@changesets/cli@2.31.0(@types/node@25.9.1)': + '@changesets/cli@2.31.0(@types/node@26.0.0)': dependencies: '@changesets/apply-release-plan': 7.1.1 '@changesets/assemble-release-plan': 6.0.10 @@ -10526,7 +10660,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@25.9.1) + '@inquirer/external-editor': 1.0.3(@types/node@26.0.0) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 enquirer: 2.4.1 @@ -10563,7 +10697,7 @@ snapshots: picocolors: 1.1.1 semver: 7.8.5 - '@changesets/get-github-info@0.6.0': + '@changesets/get-github-info@0.8.0': dependencies: dataloader: 1.4.0 node-fetch: 2.7.0 @@ -10766,243 +10900,170 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.12': - optional: true - '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/aix-ppc64@0.28.0': optional: true - '@esbuild/android-arm64@0.25.12': - optional: true - '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm64@0.28.0': optional: true - '@esbuild/android-arm@0.25.12': - optional: true - '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-arm@0.28.0': optional: true - '@esbuild/android-x64@0.25.12': - optional: true - '@esbuild/android-x64@0.27.7': optional: true '@esbuild/android-x64@0.28.0': optional: true - '@esbuild/darwin-arm64@0.25.12': - optional: true - '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-arm64@0.28.0': optional: true - '@esbuild/darwin-x64@0.25.12': - optional: true - '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/darwin-x64@0.28.0': optional: true - '@esbuild/freebsd-arm64@0.25.12': - optional: true - '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.28.0': optional: true - '@esbuild/freebsd-x64@0.25.12': - optional: true - '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/freebsd-x64@0.28.0': optional: true - '@esbuild/linux-arm64@0.25.12': - optional: true - '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm64@0.28.0': optional: true - '@esbuild/linux-arm@0.25.12': - optional: true - '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-arm@0.28.0': optional: true - '@esbuild/linux-ia32@0.25.12': - optional: true - '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-ia32@0.28.0': optional: true - '@esbuild/linux-loong64@0.25.12': - optional: true - '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-loong64@0.28.0': optional: true - '@esbuild/linux-mips64el@0.25.12': - optional: true - '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-mips64el@0.28.0': optional: true - '@esbuild/linux-ppc64@0.25.12': - optional: true - '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-ppc64@0.28.0': optional: true - '@esbuild/linux-riscv64@0.25.12': - optional: true - '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-riscv64@0.28.0': optional: true - '@esbuild/linux-s390x@0.25.12': - optional: true - '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-s390x@0.28.0': optional: true - '@esbuild/linux-x64@0.25.12': - optional: true - '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/linux-x64@0.28.0': optional: true - '@esbuild/netbsd-arm64@0.25.12': - optional: true - '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.28.0': optional: true - '@esbuild/netbsd-x64@0.25.12': - optional: true - '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/netbsd-x64@0.28.0': optional: true - '@esbuild/openbsd-arm64@0.25.12': - optional: true - '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.28.0': optional: true - '@esbuild/openbsd-x64@0.25.12': - optional: true - '@esbuild/openbsd-x64@0.27.7': optional: true '@esbuild/openbsd-x64@0.28.0': optional: true - '@esbuild/openharmony-arm64@0.25.12': - optional: true - '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/openharmony-arm64@0.28.0': optional: true - '@esbuild/sunos-x64@0.25.12': - optional: true - '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/sunos-x64@0.28.0': optional: true - '@esbuild/win32-arm64@0.25.12': - optional: true - '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-arm64@0.28.0': optional: true - '@esbuild/win32-ia32@0.25.12': - optional: true - '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-ia32@0.28.0': optional: true - '@esbuild/win32-x64@0.25.12': - optional: true - '@esbuild/win32-x64@0.27.7': optional: true '@esbuild/win32-x64@0.28.0': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.7.0))': + dependencies: + eslint: 9.34.0(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(jiti@2.7.0))': dependencies: - eslint: 9.34.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': @@ -11027,12 +11088,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color + '@eslint/config-helpers@0.3.1': {} + '@eslint/config-helpers@0.6.0': + dependencies: + '@eslint/core': 1.2.1 + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.15.0 @@ -11061,17 +11138,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@10.0.1(eslint@10.5.0(jiti@2.7.0))': + optionalDependencies: + eslint: 10.5.0(jiti@2.7.0) + '@eslint/js@8.57.1': {} '@eslint/js@9.34.0': {} '@eslint/object-schema@2.1.6': {} + '@eslint/object-schema@3.0.5': {} + '@eslint/plugin-kit@0.3.5': dependencies: '@eslint/core': 0.15.2 levn: 0.4.1 + '@eslint/plugin-kit@0.7.2': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + '@euberdeveloper/eslint-plugin@2.7.0(@types/eslint@9.6.1)(typescript@6.0.3)': dependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@8.57.1)(typescript@6.0.3) @@ -11321,12 +11409,12 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/external-editor@1.0.3(@types/node@25.9.1)': + '@inquirer/external-editor@1.0.3(@types/node@26.0.0)': dependencies: chardet: 2.2.0 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@inquirer/figures@1.0.13': {} @@ -11413,10 +11501,10 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@ipld/dag-cbor@9.2.5': + '@ipld/dag-cbor@10.0.1': dependencies: - cborg: 4.3.2 - multiformats: 13.4.2 + cborg: 5.1.1 + multiformats: 14.0.0 '@isaacs/cliui@8.0.2': dependencies: @@ -11444,12 +11532,21 @@ snapshots: '@jest/console@30.1.1': dependencies: '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 jest-message-util: 30.1.0 jest-util: 30.0.5 slash: 3.0.0 + '@jest/console@30.4.1': + dependencies: + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + chalk: 4.1.2 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + slash: 3.0.0 + '@jest/core@30.1.1(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2))': dependencies: '@jest/console': 30.1.1 @@ -11458,14 +11555,14 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.4.0 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.0.5 - jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) + jest-config: 30.1.1(@types/node@26.0.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) jest-haste-map: 30.1.0 jest-message-util: 30.1.0 jest-regex-util: 30.0.1 @@ -11486,35 +11583,35 @@ snapshots: - supports-color - ts-node - '@jest/core@30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3))': + '@jest/core@30.4.2(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3))': dependencies: - '@jest/console': 30.1.1 - '@jest/pattern': 30.0.1 - '@jest/reporters': 30.1.1 - '@jest/test-result': 30.1.1 - '@jest/transform': 30.1.1 - '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@jest/console': 30.4.1 + '@jest/pattern': 30.4.0 + '@jest/reporters': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.4.0 exit-x: 0.2.2 + fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-changed-files: 30.0.5 - jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) - jest-haste-map: 30.1.0 - jest-message-util: 30.1.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.1.0 - jest-resolve-dependencies: 30.1.1 - jest-runner: 30.1.1 - jest-runtime: 30.1.1 - jest-snapshot: 30.1.1 - jest-util: 30.0.5 - jest-validate: 30.1.0 - jest-watcher: 30.1.1 - micromatch: 4.0.8 - pretty-format: 30.0.5 + jest-changed-files: 30.4.1 + jest-config: 30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) + jest-haste-map: 30.4.1 + jest-message-util: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-resolve-dependencies: 30.4.2 + jest-runner: 30.4.2 + jest-runtime: 30.4.2 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + jest-validate: 30.4.1 + jest-watcher: 30.4.1 + pretty-format: 30.4.1 slash: 3.0.0 transitivePeerDependencies: - babel-plugin-macros @@ -11524,17 +11621,30 @@ snapshots: '@jest/diff-sequences@30.0.1': {} + '@jest/diff-sequences@30.4.0': {} + '@jest/environment@30.1.1': dependencies: '@jest/fake-timers': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 jest-mock: 30.0.5 + '@jest/environment@30.4.1': + dependencies: + '@jest/fake-timers': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + jest-mock: 30.4.1 + '@jest/expect-utils@30.1.1': dependencies: '@jest/get-type': 30.1.0 + '@jest/expect-utils@30.4.1': + dependencies: + '@jest/get-type': 30.1.0 + '@jest/expect@30.1.1': dependencies: expect: 30.1.1 @@ -11542,15 +11652,31 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/expect@30.4.1': + dependencies: + expect: 30.4.1 + jest-snapshot: 30.4.1 + transitivePeerDependencies: + - supports-color + '@jest/fake-timers@30.1.1': dependencies: '@jest/types': 30.0.5 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 jest-message-util: 30.1.0 jest-mock: 30.0.5 jest-util: 30.0.5 + '@jest/fake-timers@30.4.1': + dependencies: + '@jest/types': 30.4.1 + '@sinonjs/fake-timers': 15.4.0 + '@types/node': 26.0.0 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 + '@jest/get-type@30.1.0': {} '@jest/globals@30.1.1': @@ -11562,16 +11688,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/globals@30.4.1': + dependencies: + '@jest/environment': 30.4.1 + '@jest/expect': 30.4.1 + '@jest/types': 30.4.1 + jest-mock: 30.4.1 + transitivePeerDependencies: + - supports-color + '@jest/pattern@30.0.1': dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 jest-regex-util: 30.0.1 '@jest/pattern@30.4.0': dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 jest-regex-util: 30.4.0 - optional: true '@jest/reporters@30.1.1': dependencies: @@ -11581,7 +11715,7 @@ snapshots: '@jest/transform': 30.1.1 '@jest/types': 30.0.5 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -11601,6 +11735,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/reporters@30.4.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 26.0.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + exit-x: 0.2.2 + glob: 10.5.0 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + jest-worker: 30.4.1 + slash: 3.0.0 + string-length: 4.0.2 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + '@jest/schemas@30.0.5': dependencies: '@sinclair/typebox': 0.34.40 @@ -11608,7 +11770,6 @@ snapshots: '@jest/schemas@30.4.1': dependencies: '@sinclair/typebox': 0.34.49 - optional: true '@jest/snapshot-utils@30.1.1': dependencies: @@ -11617,6 +11778,13 @@ snapshots: graceful-fs: 4.2.11 natural-compare: 1.4.0 + '@jest/snapshot-utils@30.4.1': + dependencies: + '@jest/types': 30.4.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + '@jest/source-map@30.0.1': dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -11630,6 +11798,13 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.3 + '@jest/test-result@30.4.1': + dependencies: + '@jest/console': 30.4.1 + '@jest/types': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + '@jest/test-sequencer@30.1.1': dependencies: '@jest/test-result': 30.1.1 @@ -11637,6 +11812,13 @@ snapshots: jest-haste-map: 30.1.0 slash: 3.0.0 + '@jest/test-sequencer@30.4.1': + dependencies: + '@jest/test-result': 30.4.1 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + slash: 3.0.0 + '@jest/transform@30.1.1': dependencies: '@babel/core': 7.29.7 @@ -11675,7 +11857,6 @@ snapshots: write-file-atomic: 5.0.1 transitivePeerDependencies: - supports-color - optional: true '@jest/types@30.0.5': dependencies: @@ -11683,7 +11864,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -11693,14 +11874,13 @@ snapshots: '@jest/schemas': 30.4.1 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/yargs': 17.0.35 chalk: 4.1.2 - optional: true - '@joyid/ckb@1.1.2(typescript@6.0.3)': + '@joyid/ckb@1.1.4(typescript@6.0.3)': dependencies: - '@joyid/common': 0.2.1(typescript@6.0.3) + '@joyid/common': 0.2.2(typescript@6.0.3) '@nervosnetwork/ckb-sdk-utils': 0.109.5 cross-fetch: 4.0.0 uncrypto: 0.1.3 @@ -11709,7 +11889,7 @@ snapshots: - typescript - zod - '@joyid/common@0.2.1(typescript@6.0.3)': + '@joyid/common@0.2.2(typescript@6.0.3)': dependencies: abitype: 0.8.7(typescript@6.0.3) type-fest: 4.6.0 @@ -12792,8 +12972,7 @@ snapshots: '@sinclair/typebox@0.34.40': {} - '@sinclair/typebox@0.34.49': - optional: true + '@sinclair/typebox@0.34.49': {} '@sinonjs/commons@3.0.1': dependencies: @@ -12803,6 +12982,10 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers@15.4.0': + dependencies: + '@sinonjs/commons': 3.0.1 + '@standard-schema/spec@1.1.0': {} '@swc/helpers@0.5.15': @@ -13011,7 +13194,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/chai@5.2.3': dependencies: @@ -13020,7 +13203,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/cookiejar@2.1.5': {} @@ -13159,6 +13342,8 @@ snapshots: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 + '@types/esrecurse@4.3.1': {} + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.9 @@ -13169,7 +13354,7 @@ snapshots: '@types/express-serve-static-core@5.0.7': dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -13248,7 +13433,6 @@ snapshots: '@types/node@26.0.0': dependencies: undici-types: 8.3.0 - optional: true '@types/normalize-package-data@2.4.4': {} @@ -13269,12 +13453,12 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@types/send': 0.17.5 '@types/stack-utils@2.0.3': {} @@ -13283,7 +13467,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 25.9.1 + '@types/node': 26.0.0 form-data: 4.0.4 '@types/supertest@6.0.3': @@ -13303,7 +13487,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.3.0 + '@types/node': 26.0.0 '@types/yargs-parser@21.0.3': {} @@ -13348,23 +13532,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.41.0 - eslint: 9.34.0(jiti@2.7.0) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -13381,18 +13548,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.49.0 - eslint: 9.34.0(jiti@2.7.0) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 + eslint: 10.5.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@6.0.3) + ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13422,18 +13589,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 - eslint: 9.34.0(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.49.0 @@ -13446,14 +13601,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 debug: 4.4.3 - eslint: 9.34.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13467,15 +13622,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.41.0(typescript@6.0.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@6.0.3) - '@typescript-eslint/types': 8.41.0 - debug: 4.4.3 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.49.0(typescript@5.9.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.2) @@ -13485,10 +13631,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.49.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.61.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@6.0.3) - '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: @@ -13509,19 +13655,20 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)': + '@typescript-eslint/scope-manager@8.61.1': dependencies: - typescript: 5.9.2 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 - '@typescript-eslint/tsconfig-utils@8.41.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)': dependencies: - typescript: 6.0.3 + typescript: 5.9.2 '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 @@ -13549,18 +13696,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - debug: 4.4.3 - eslint: 9.34.0(jiti@2.7.0) - ts-api-utils: 2.1.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.49.0 @@ -13573,14 +13708,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3 - eslint: 9.34.0(jiti@2.7.0) - ts-api-utils: 2.1.0(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13591,6 +13726,8 @@ snapshots: '@typescript-eslint/types@8.49.0': {} + '@typescript-eslint/types@8.61.1': {} + '@typescript-eslint/typescript-estree@6.21.0(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 6.21.0 @@ -13622,22 +13759,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.41.0(typescript@6.0.3)': - dependencies: - '@typescript-eslint/project-service': 8.41.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@6.0.3) - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.9 - semver: 7.8.5 - ts-api-utils: 2.1.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.49.0(typescript@5.9.2) @@ -13653,17 +13774,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.49.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.49.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@6.0.3) - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/project-service': 8.61.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 debug: 4.4.3 - minimatch: 9.0.9 + minimatch: 10.2.5 semver: 7.8.5 tinyglobby: 0.2.17 - ts-api-utils: 2.1.0(typescript@6.0.3) + ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13684,7 +13805,7 @@ snapshots: '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.41.0 '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) @@ -13693,17 +13814,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) - eslint: 9.34.0(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0)) @@ -13715,13 +13825,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) - eslint: 9.34.0(jiti@2.7.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -13741,6 +13851,11 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + eslint-visitor-keys: 5.0.1 + '@uiw/react-json-view@2.0.0-alpha.37(@babel/runtime@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.7 @@ -13826,66 +13941,60 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0))': + '@vitest/coverage-v8@4.1.9(vitest@4.1.9)': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.4 - debug: 4.4.3 + '@vitest/utils': 4.1.9 + ast-v8-to-istanbul: 1.0.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.21 - magicast: 0.3.5 - std-env: 3.9.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - transitivePeerDependencies: - - supports-color + magicast: 0.5.3 + obug: 2.1.3 + std-env: 4.1.0 + tinyrainbow: 3.1.0 + vitest: 4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) - '@vitest/expect@3.2.4': + '@vitest/expect@4.1.9': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.9 + '@vitest/utils': 4.1.9 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vitest/mocker@3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0))': + '@vitest/mocker@4.1.9(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + vite: 7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.1.9': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.1.0 - '@vitest/runner@3.2.4': + '@vitest/runner@4.1.9': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.1.9 pathe: 2.0.3 - strip-literal: 3.0.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.1.9': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.1.9 + '@vitest/utils': 4.1.9 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.3 + '@vitest/spy@4.1.9': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.1.9': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.1.9 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 '@webassemblyjs/ast@1.14.1': dependencies: @@ -14006,9 +14115,11 @@ snapshots: aes-js@4.0.0-beta.5: {} - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: @@ -14022,11 +14133,6 @@ snapshots: dependencies: ajv: 6.15.0 - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - ajv-keywords@5.1.0(ajv@8.20.0): dependencies: ajv: 8.20.0 @@ -14208,11 +14314,11 @@ snapshots: ast-types-flow@0.0.8: {} - ast-v8-to-istanbul@0.3.4: + ast-v8-to-istanbul@1.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 - js-tokens: 9.0.1 + js-tokens: 10.0.0 astring@1.9.0: {} @@ -14234,6 +14340,16 @@ snapshots: transitivePeerDependencies: - debug + axios@1.18.0: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.6 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + - supports-color + axobject-query@4.1.0: {} b4a@1.6.7: {} @@ -14263,7 +14379,6 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color - optional: true babel-plugin-istanbul@7.0.1: dependencies: @@ -14284,7 +14399,6 @@ snapshots: babel-plugin-jest-hoist@30.4.0: dependencies: '@types/babel__core': 7.20.5 - optional: true babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.7): dependencies: @@ -14316,7 +14430,6 @@ snapshots: '@babel/core': 7.29.7 babel-plugin-jest-hoist: 30.4.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) - optional: true bail@2.0.2: {} @@ -14363,14 +14476,14 @@ snapshots: transitivePeerDependencies: - typescript - bitcoinjs-lib@7.0.0(typescript@6.0.3): + bitcoinjs-lib@7.0.1(typescript@6.0.3): dependencies: '@noble/hashes': 1.8.0 bech32: 2.0.0 bip174: 3.0.0 bs58check: 4.0.0 uint8array-tools: 0.0.9 - valibot: 0.38.0(typescript@6.0.3) + valibot: 1.4.1(typescript@6.0.3) varuint-bitcoin: 2.0.0 transitivePeerDependencies: - typescript @@ -14482,8 +14595,6 @@ snapshots: bytes@3.1.2: {} - cac@6.7.14: {} - cac@7.0.0: {} call-bind-apply-helpers@1.0.2: @@ -14515,17 +14626,11 @@ snapshots: caniuse-lite@1.0.30001799: {} - cborg@4.3.2: {} + cborg@5.1.1: {} ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.2: {} chalk@2.4.2: dependencies: @@ -14550,8 +14655,6 @@ snapshots: chardet@2.2.0: {} - check-error@2.1.1: {} - chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -14987,8 +15090,6 @@ snapshots: dedent@1.7.2: {} - deep-eql@5.0.2: {} - deep-freeze-strict@1.1.1: {} deep-is@0.1.4: {} @@ -15071,7 +15172,7 @@ snapshots: dotenv@16.4.7: {} - dotenv@17.2.1: {} + dotenv@17.4.2: {} dotenv@8.6.0: {} @@ -15225,6 +15326,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.1.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -15262,35 +15365,6 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.7: optionalDependencies: '@esbuild/aix-ppc64': 0.27.7 @@ -15366,7 +15440,7 @@ snapshots: '@next/eslint-plugin-next': 16.0.10 eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.7.0)) @@ -15381,6 +15455,30 @@ snapshots: - eslint-plugin-import-x - supports-color + eslint-config-next@16.0.10(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): + dependencies: + '@next/eslint-plugin-next': 16.0.10 + eslint: 9.34.0(jiti@2.7.0) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.34.0(jiti@2.7.0)) + globals: 16.4.0 + typescript-eslint: 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)): + dependencies: + eslint: 10.5.0(jiti@2.7.0) + eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)): dependencies: eslint: 9.34.0(jiti@2.7.0) @@ -15402,7 +15500,22 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.34.0(jiti@2.7.0) + get-tsconfig: 4.14.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.17 + unrs-resolver: 1.12.2 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -15417,14 +15530,25 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@6.0.3) eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.7.0) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color @@ -15439,7 +15563,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -15457,6 +15581,35 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.34.0(jiti@2.7.0) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0)) + hasown: 2.0.4 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-jsx-a11y@6.10.2(eslint@9.34.0(jiti@2.7.0)): dependencies: aria-query: 5.3.2 @@ -15493,15 +15646,15 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.7.0)) - eslint-plugin-prettier@5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.7.0)))(eslint@9.34.0(jiti@2.7.0))(prettier@3.8.4): + eslint-plugin-prettier@5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0))(prettier@3.8.4): dependencies: - eslint: 9.34.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0) prettier: 3.8.4 prettier-linter-helpers: 1.0.1 synckit: 0.11.13 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.7.0)) + eslint-config-prettier: 10.1.8(eslint@10.5.0(jiti@2.7.0)) eslint-plugin-prettier@5.5.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.4): dependencies: @@ -15579,6 +15732,13 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-utils@3.0.0(eslint@8.57.1): dependencies: eslint: 8.57.1 @@ -15590,6 +15750,45 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} + + eslint@10.5.0(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.6.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + eslint@8.57.1: dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) @@ -15681,6 +15880,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + espree@11.2.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 5.0.1 + espree@9.6.1: dependencies: acorn: 8.17.0 @@ -15707,7 +15912,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-build-jsx@3.0.1: dependencies: @@ -15731,7 +15936,7 @@ snapshots: estree-util-value-to-estree@3.5.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-visit@2.0.0: dependencies: @@ -15746,15 +15951,15 @@ snapshots: etag@1.8.1: {} - ethers@6.15.0: + ethers@6.17.0: dependencies: - '@adraffy/ens-normalize': 1.10.1 + '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@types/node': 22.7.5 aes-js: 4.0.0-beta.5 tslib: 2.7.0 - ws: 8.17.1 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -15790,6 +15995,15 @@ snapshots: jest-mock: 30.0.5 jest-util: 30.0.5 + expect@30.4.1: + dependencies: + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 + express@5.1.0: dependencies: accepts: 2.0.0 @@ -15922,15 +16136,15 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.3: {} - flatted@3.4.2: {} follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -15965,6 +16179,14 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + form-data@4.0.6: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + formidable@3.5.4: dependencies: '@paralleldrive/cuid2': 2.2.2 @@ -16043,7 +16265,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)): + fumadocs-mdx@14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.15)(fumadocs-core@16.8.5(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(algoliasearch@5.46.0)(lucide-react@1.17.0(react@19.2.6))(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3))(mdast-util-directive@3.1.0)(next@16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react@19.2.6)(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -16070,7 +16292,7 @@ snapshots: mdast-util-directive: 3.1.0 next: 16.2.4(@babel/core@7.29.7)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 - vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -16313,7 +16535,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -16418,6 +16640,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + human-id@4.2.0: {} human-signals@2.1.0: {} @@ -16639,9 +16868,9 @@ snapshots: isexe@2.0.0: {} - isomorphic-ws@5.0.0(ws@8.18.3): + isomorphic-ws@5.0.0(ws@8.21.0): dependencies: - ws: 8.18.3 + ws: 8.21.0 istanbul-lib-coverage@3.2.2: {} @@ -16701,13 +16930,19 @@ snapshots: jest-util: 30.0.5 p-limit: 3.1.0 + jest-changed-files@30.4.1: + dependencies: + execa: 5.1.1 + jest-util: 30.4.1 + p-limit: 3.1.0 + jest-circus@30.1.1: dependencies: '@jest/environment': 30.1.1 '@jest/expect': 30.1.1 '@jest/test-result': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 @@ -16727,6 +16962,32 @@ snapshots: - babel-plugin-macros - supports-color + jest-circus@30.4.2: + dependencies: + '@jest/environment': 30.4.1 + '@jest/expect': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.7.2 + is-generator-fn: 2.1.0 + jest-each: 30.4.1 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-runtime: 30.4.2 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + p-limit: 3.1.0 + pretty-format: 30.4.1 + pure-rand: 7.0.1 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-cli@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): dependencies: '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)) @@ -16746,17 +17007,17 @@ snapshots: - supports-color - ts-node - jest-cli@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)): + jest-cli@30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)): dependencies: - '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) - '@jest/test-result': 30.1.1 - '@jest/types': 30.0.5 + '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) - jest-util: 30.0.5 - jest-validate: 30.1.0 + jest-config: 30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) + jest-util: 30.4.1 + jest-validate: 30.4.1 yargs: 17.7.3 transitivePeerDependencies: - '@types/node' @@ -16798,7 +17059,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): + jest-config@30.1.1(@types/node@26.0.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -16825,41 +17086,40 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 ts-node: 10.9.2(@types/node@24.3.0)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)): + jest-config@30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.1.1 - '@jest/types': 30.0.5 - babel-jest: 30.1.1(@babel/core@7.29.7) + '@jest/pattern': 30.4.0 + '@jest/test-sequencer': 30.4.1 + '@jest/types': 30.4.1 + babel-jest: 30.4.1(@babel/core@7.29.7) chalk: 4.1.2 ci-info: 4.4.0 deepmerge: 4.3.1 glob: 10.5.0 graceful-fs: 4.2.11 - jest-circus: 30.1.1 - jest-docblock: 30.0.1 - jest-environment-node: 30.1.1 - jest-regex-util: 30.0.1 - jest-resolve: 30.1.0 - jest-runner: 30.1.1 - jest-util: 30.0.5 - jest-validate: 30.1.0 - micromatch: 4.0.8 + jest-circus: 30.4.2 + jest-docblock: 30.4.0 + jest-environment-node: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-runner: 30.4.2 + jest-util: 30.4.1 + jest-validate: 30.4.1 parse-json: 5.2.0 - pretty-format: 30.0.5 + pretty-format: 30.4.1 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 25.9.1 - ts-node: 10.9.2(@types/node@25.9.1)(typescript@6.0.3) + '@types/node': 26.0.0 + ts-node: 10.9.2(@types/node@26.0.0)(typescript@6.0.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -16871,10 +17131,21 @@ snapshots: chalk: 4.1.2 pretty-format: 30.0.5 + jest-diff@30.4.1: + dependencies: + '@jest/diff-sequences': 30.4.0 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.4.1 + jest-docblock@30.0.1: dependencies: detect-newline: 3.1.0 + jest-docblock@30.4.0: + dependencies: + detect-newline: 3.1.0 + jest-each@30.1.0: dependencies: '@jest/get-type': 30.1.0 @@ -16883,20 +17154,38 @@ snapshots: jest-util: 30.0.5 pretty-format: 30.0.5 + jest-each@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.4.1 + chalk: 4.1.2 + jest-util: 30.4.1 + pretty-format: 30.4.1 + jest-environment-node@30.1.1: dependencies: '@jest/environment': 30.1.1 '@jest/fake-timers': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 jest-mock: 30.0.5 jest-util: 30.0.5 jest-validate: 30.1.0 + jest-environment-node@30.4.1: + dependencies: + '@jest/environment': 30.4.1 + '@jest/fake-timers': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + jest-mock: 30.4.1 + jest-util: 30.4.1 + jest-validate: 30.4.1 + jest-haste-map@30.1.0: dependencies: '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -16911,7 +17200,7 @@ snapshots: jest-haste-map@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 25.9.1 + '@types/node': 26.0.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -16922,13 +17211,17 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - optional: true jest-leak-detector@30.1.0: dependencies: '@jest/get-type': 30.1.0 pretty-format: 30.0.5 + jest-leak-detector@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + pretty-format: 30.4.1 + jest-matcher-utils@30.1.1: dependencies: '@jest/get-type': 30.1.0 @@ -16936,32 +17229,61 @@ snapshots: jest-diff: 30.1.1 pretty-format: 30.0.5 - jest-message-util@30.1.0: + jest-matcher-utils@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.4.1 + pretty-format: 30.4.1 + + jest-message-util@30.1.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 30.0.5 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 30.0.5 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-message-util@30.4.1: dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 30.0.5 + '@babel/code-frame': 7.29.7 + '@jest/types': 30.4.1 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 30.0.5 + jest-util: 30.4.1 + picomatch: 4.0.4 + pretty-format: 30.4.1 slash: 3.0.0 stack-utils: 2.0.6 jest-mock@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 jest-util: 30.0.5 + jest-mock@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + jest-util: 30.4.1 + jest-pnp-resolver@1.2.3(jest-resolve@30.1.0): optionalDependencies: jest-resolve: 30.1.0 + jest-pnp-resolver@1.2.3(jest-resolve@30.4.1): + optionalDependencies: + jest-resolve: 30.4.1 + jest-regex-util@30.0.1: {} - jest-regex-util@30.4.0: - optional: true + jest-regex-util@30.4.0: {} jest-resolve-dependencies@30.1.1: dependencies: @@ -16970,6 +17292,13 @@ snapshots: transitivePeerDependencies: - supports-color + jest-resolve-dependencies@30.4.2: + dependencies: + jest-regex-util: 30.4.0 + jest-snapshot: 30.4.1 + transitivePeerDependencies: + - supports-color + jest-resolve@30.1.0: dependencies: chalk: 4.1.2 @@ -16981,6 +17310,17 @@ snapshots: slash: 3.0.0 unrs-resolver: 1.12.2 + jest-resolve@30.4.1: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-pnp-resolver: 1.2.3(jest-resolve@30.4.1) + jest-util: 30.4.1 + jest-validate: 30.4.1 + slash: 3.0.0 + unrs-resolver: 1.12.2 + jest-runner@30.1.1: dependencies: '@jest/console': 30.1.1 @@ -16988,7 +17328,7 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -17008,6 +17348,33 @@ snapshots: transitivePeerDependencies: - supports-color + jest-runner@30.4.2: + dependencies: + '@jest/console': 30.4.1 + '@jest/environment': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + chalk: 4.1.2 + emittery: 0.13.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-docblock: 30.4.0 + jest-environment-node: 30.4.1 + jest-haste-map: 30.4.1 + jest-leak-detector: 30.4.1 + jest-message-util: 30.4.1 + jest-resolve: 30.4.1 + jest-runtime: 30.4.2 + jest-util: 30.4.1 + jest-watcher: 30.4.1 + jest-worker: 30.4.1 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + jest-runtime@30.1.1: dependencies: '@jest/environment': 30.1.1 @@ -17017,7 +17384,7 @@ snapshots: '@jest/test-result': 30.1.1 '@jest/transform': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 cjs-module-lexer: 2.2.0 collect-v8-coverage: 1.0.3 @@ -17035,6 +17402,33 @@ snapshots: transitivePeerDependencies: - supports-color + jest-runtime@30.4.2: + dependencies: + '@jest/environment': 30.4.1 + '@jest/fake-timers': 30.4.1 + '@jest/globals': 30.4.1 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + chalk: 4.1.2 + cjs-module-lexer: 2.2.0 + collect-v8-coverage: 1.0.3 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + jest-snapshot@30.1.1: dependencies: '@babel/core': 7.29.7 @@ -17061,10 +17455,36 @@ snapshots: transitivePeerDependencies: - supports-color + jest-snapshot@30.4.1: + dependencies: + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/types': 7.29.7 + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + chalk: 4.1.2 + expect: 30.4.1 + graceful-fs: 4.2.11 + jest-diff: 30.4.1 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + pretty-format: 30.4.1 + semver: 7.8.5 + synckit: 0.11.13 + transitivePeerDependencies: + - supports-color + jest-util@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 ci-info: 4.3.0 graceful-fs: 4.2.11 @@ -17073,12 +17493,11 @@ snapshots: jest-util@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 25.9.1 + '@types/node': 26.0.0 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 picomatch: 4.0.4 - optional: true jest-validate@30.1.0: dependencies: @@ -17089,26 +17508,46 @@ snapshots: leven: 3.1.0 pretty-format: 30.0.5 + jest-validate@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.4.1 + camelcase: 6.3.0 + chalk: 4.1.2 + leven: 3.1.0 + pretty-format: 30.4.1 + jest-watcher@30.1.1: dependencies: '@jest/test-result': 30.1.1 '@jest/types': 30.0.5 - '@types/node': 25.9.1 + '@types/node': 26.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 jest-util: 30.0.5 string-length: 4.0.2 + jest-watcher@30.4.1: + dependencies: + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 26.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 30.4.1 + string-length: 4.0.2 + jest-worker@27.5.1: dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.1.0: dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@ungap/structured-clone': 1.3.1 jest-util: 30.0.5 merge-stream: 2.0.0 @@ -17116,12 +17555,11 @@ snapshots: jest-worker@30.4.1: dependencies: - '@types/node': 25.9.1 + '@types/node': 26.0.0 '@ungap/structured-clone': 1.3.1 jest-util: 30.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 - optional: true jest@30.1.1(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.9.2)): dependencies: @@ -17136,12 +17574,12 @@ snapshots: - supports-color - ts-node - jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)): + jest@30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)): dependencies: - '@jest/core': 30.1.1(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) - '@jest/types': 30.0.5 + '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) + '@jest/types': 30.4.1 import-local: 3.2.0 - jest-cli: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) + jest-cli: 30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17153,9 +17591,9 @@ snapshots: jiti@2.7.0: {} - js-tokens@4.0.0: {} + js-tokens@10.0.0: {} - js-tokens@9.0.1: {} + js-tokens@4.0.0: {} js-xxhash@1.0.4: {} @@ -17367,7 +17805,7 @@ snapshots: dependencies: '@types/trusted-types': 2.0.7 - lit@3.3.1: + lit@3.3.3: dependencies: '@lit/reactive-element': 2.1.1 lit-element: 4.2.1 @@ -17414,8 +17852,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.2.1: {} - lru-cache@10.4.3: {} lru-cache@11.1.0: {} @@ -17446,7 +17882,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.3: dependencies: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 @@ -18087,7 +18523,7 @@ snapshots: type-is: 1.6.18 xtend: 4.0.2 - multiformats@13.4.2: {} + multiformats@14.0.0: {} mute-stream@2.0.0: {} @@ -18407,8 +18843,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -18471,12 +18905,7 @@ snapshots: prettier: 3.6.2 typescript: 5.9.2 - prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@6.0.3): - dependencies: - prettier: 3.6.2 - typescript: 6.0.3 - - prettier-plugin-organize-imports@4.2.0(prettier@3.8.4)(typescript@6.0.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.8.4)(typescript@6.0.3): dependencies: prettier: 3.8.4 typescript: 6.0.3 @@ -18499,6 +18928,13 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-format@30.4.1: + dependencies: + '@jest/schemas': 30.4.1 + ansi-styles: 5.2.0 + react-is-18: react-is@18.3.1 + react-is-19: react-is@19.2.7 + process-nextick-args@2.0.1: {} prop-types@15.8.1: @@ -18520,6 +18956,8 @@ snapshots: proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + punycode.js@2.3.1: {} punycode@2.3.1: {} @@ -18571,6 +19009,8 @@ snapshots: react-is@18.3.1: {} + react-is@19.2.7: {} + react-remove-scroll-bar@2.3.8(@types/react@19.2.15)(react@19.2.6): dependencies: react: 19.2.6 @@ -18999,9 +19439,9 @@ snapshots: schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) schema-utils@4.3.3: dependencies: @@ -19226,7 +19666,7 @@ snapshots: statuses@2.0.2: {} - std-env@3.9.0: {} + std-env@4.1.0: {} stop-iteration-iterator@1.1.0: dependencies: @@ -19339,10 +19779,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.0.0: - dependencies: - js-tokens: 9.0.1 - strtok3@10.3.4: dependencies: '@tokenizer/token': 0.3.0 @@ -19485,12 +19921,6 @@ snapshots: glob: 7.2.3 minimatch: 3.1.5 - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.6 - glob: 10.5.0 - minimatch: 9.0.9 - text-table@0.2.0: {} third-party-capital@1.0.20: {} @@ -19504,8 +19934,6 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} - tinyexec@1.2.4: {} tinyglobby@0.2.16: @@ -19518,11 +19946,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.3: {} + tinyrainbow@3.1.0: {} tmpl@1.0.5: {} @@ -19554,7 +19978,7 @@ snapshots: dependencies: typescript: 5.9.2 - ts-api-utils@2.1.0(typescript@6.0.3): + ts-api-utils@2.5.0(typescript@6.0.3): dependencies: typescript: 6.0.3 @@ -19580,12 +20004,12 @@ snapshots: babel-jest: 30.4.1(@babel/core@7.29.7) jest-util: 30.4.1 - ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)))(typescript@6.0.3): + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)))(typescript@6.0.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 30.1.1(@types/node@25.9.1)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3)) + jest: 30.4.2(@types/node@26.0.0)(ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -19628,14 +20052,14 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.3): + ts-node@10.9.2(@types/node@26.0.0)(typescript@6.0.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 25.9.1 + '@types/node': 26.0.0 acorn: 8.17.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -19667,7 +20091,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.22.3(tsx@4.20.5)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)): + tsdown@0.22.3(tsx@4.22.4)(typescript@6.0.3)(unrun@0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13)): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -19685,7 +20109,7 @@ snapshots: tree-kill: 1.2.2 unconfig-core: 7.5.0 optionalDependencies: - tsx: 4.20.5 + tsx: 4.22.4 typescript: 6.0.3 unrun: 0.2.22(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13) transitivePeerDependencies: @@ -19700,10 +20124,9 @@ snapshots: tslib@2.8.1: {} - tsx@4.20.5: + tsx@4.22.4: dependencies: - esbuild: 0.25.12 - get-tsconfig: 4.14.0 + esbuild: 0.28.0 optionalDependencies: fsevents: 2.3.3 @@ -19771,30 +20194,30 @@ snapshots: typedarray@0.0.6: {} - typedoc-material-theme@1.4.1(typedoc@0.28.7(typescript@6.0.3)): + typedoc-material-theme@1.4.1(typedoc@0.28.19(typescript@6.0.3)): dependencies: '@material/material-color-utilities': 0.3.0 - typedoc: 0.28.7(typescript@6.0.3) + typedoc: 0.28.19(typescript@6.0.3) - typedoc-plugin-extras@4.0.1(typedoc@0.28.7(typescript@6.0.3)): + typedoc-plugin-extras@4.0.1(typedoc@0.28.19(typescript@6.0.3)): dependencies: - typedoc: 0.28.7(typescript@6.0.3) + typedoc: 0.28.19(typescript@6.0.3) - typedoc-plugin-ga@1.1.1(@types/eslint@9.6.1)(typedoc@0.28.7(typescript@6.0.3))(typescript@6.0.3): + typedoc-plugin-ga@1.1.1(@types/eslint@9.6.1)(typedoc@0.28.19(typescript@6.0.3))(typescript@6.0.3): dependencies: '@euberdeveloper/eslint-plugin': 2.7.0(@types/eslint@9.6.1)(typescript@6.0.3) - typedoc: 0.28.7(typescript@6.0.3) + typedoc: 0.28.19(typescript@6.0.3) transitivePeerDependencies: - '@types/eslint' - supports-color - typescript - typedoc@0.28.7(typescript@6.0.3): + typedoc@0.28.19(typescript@6.0.3): dependencies: '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 markdown-it: 14.2.0 - minimatch: 9.0.9 + minimatch: 10.2.5 typescript: 6.0.3 yaml: 2.9.0 @@ -19809,17 +20232,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.41.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.34.0(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - typescript-eslint@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): dependencies: '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) @@ -19831,13 +20243,13 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-eslint@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3): + typescript-eslint@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.49.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.34.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.34.0(jiti@2.7.0) + '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -19883,8 +20295,7 @@ snapshots: undici-types@7.24.6: {} - undici-types@8.3.0: - optional: true + undici-types@8.3.0: {} unicode-trie@2.0.0: dependencies: @@ -20038,11 +20449,7 @@ snapshots: optionalDependencies: typescript: 5.9.2 - valibot@0.38.0(typescript@6.0.3): - optionalDependencies: - typescript: 6.0.3 - - valibot@1.1.0(typescript@6.0.3): + valibot@1.4.1(typescript@6.0.3): optionalDependencies: typescript: 6.0.3 @@ -20074,87 +20481,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.5(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite-node@3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite-node@3.2.4(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite@7.3.5(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): - dependencies: - esbuild: 0.27.7 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.15 - rollup: 4.62.2 - tinyglobby: 0.2.17 - optionalDependencies: - '@types/node': 24.3.0 - fsevents: 2.3.3 - jiti: 2.7.0 - lightningcss: 1.32.0 - terser: 5.48.0 - tsx: 4.20.5 - yaml: 2.9.0 - - vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -20168,10 +20495,11 @@ snapshots: jiti: 2.7.0 lightningcss: 1.32.0 terser: 5.48.0 - tsx: 4.20.5 + tsx: 4.22.4 yaml: 2.9.0 + optional: true - vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -20185,134 +20513,36 @@ snapshots: jiti: 2.7.0 lightningcss: 1.32.0 terser: 5.48.0 - tsx: 4.20.5 + tsx: 4.22.4 yaml: 2.9.0 - vitest@3.2.4(@types/debug@4.1.13)(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): - dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 - expect-type: 1.3.0 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 3.9.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.17 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.5(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.13 - '@types/node': 24.3.0 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): - dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 - expect-type: 1.3.0 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 3.9.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.17 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.13 - '@types/node': 25.9.1 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vitest@3.2.4(@types/debug@4.1.13)(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0): + vitest@4.1.9(@types/node@26.0.0)(@vitest/coverage-v8@4.1.9)(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 + '@vitest/expect': 4.1.9 + '@vitest/mocker': 4.1.9(vite@7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.9 + '@vitest/runner': 4.1.9 + '@vitest/snapshot': 4.1.9 + '@vitest/spy': 4.1.9 + '@vitest/utils': 4.1.9 + es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 + obug: 2.1.3 pathe: 2.0.3 picomatch: 4.0.4 - std-env: 3.9.0 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.2.4 tinyglobby: 0.2.17 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.20.5)(yaml@2.9.0) + tinyrainbow: 3.1.0 + vite: 7.3.5(@types/node@26.0.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.13 '@types/node': 26.0.0 + '@vitest/coverage-v8': 4.1.9(vitest@4.1.9) transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml walker@1.0.8: dependencies: @@ -20344,7 +20574,7 @@ snapshots: webpack@5.100.2: dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 @@ -20498,9 +20728,7 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@8.17.1: {} - - ws@8.18.3: {} + ws@8.21.0: {} xml-lexer@0.2.2: dependencies: diff --git a/tsconfig.base.json b/tsconfig.base.json index 6ba0aecd0..2dfd2d284 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "incremental": true, "allowJs": true, "importHelpers": false, From 8825f774e2176c6c1810f3bc0bd5516d7be5eb74 Mon Sep 17 00:00:00 2001 From: Hanssen0 <0@hanssen0.com> Date: Tue, 23 Jun 2026 01:35:27 +0800 Subject: [PATCH 41/42] chore: upgrade github workflow actions --- .github/workflows/check.yaml | 6 +++--- .github/workflows/publish-canary.yaml | 12 ++++++------ .github/workflows/publish.yaml | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 05182d2d5..3af971177 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -7,10 +7,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@v7 + - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 26 - uses: pnpm/action-setup@v6 - name: Install dependencies diff --git a/.github/workflows/publish-canary.yaml b/.github/workflows/publish-canary.yaml index ca2616d21..639073dac 100644 --- a/.github/workflows/publish-canary.yaml +++ b/.github/workflows/publish-canary.yaml @@ -24,7 +24,7 @@ jobs: - name: Get PR head SHA for comment trigger if: github.event_name == 'issue_comment' id: get_pr_head_sha - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const { owner, repo } = context.repo; @@ -36,13 +36,13 @@ jobs: core.setOutput('sha', pr.head.sha); - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: ref: ${{ github.event_name == 'issue_comment' && steps.get_pr_head_sha.outputs.sha || github.ref }} - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 26 - uses: pnpm/action-setup@v6 - name: Install dependencies @@ -67,7 +67,7 @@ jobs: - name: Comment on PR with Success if: github.event_name == 'issue_comment' && steps.changesets.outputs.published == 'true' - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const { owner, repo } = context.repo; @@ -86,7 +86,7 @@ jobs: - name: Comment on PR on Failure if: failure() && github.event_name == 'issue_comment' - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const { owner, repo } = context.repo; diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 71fad1cf7..fea504198 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -17,10 +17,10 @@ jobs: name: Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@v7 + - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 26 - uses: pnpm/action-setup@v6 - name: Install dependencies From f565fb195e5ae8adabd025e588cf9b8d16d39dfd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 18:25:05 +0000 Subject: [PATCH 42/42] chore(releases/next): bump packages version --- .changeset/nine-eagles-dig.md | 25 ------------------------- packages/ccc/CHANGELOG.md | 21 +++++++++++++++++++++ packages/ccc/package.json | 2 +- packages/ckb-ccc/CHANGELOG.md | 13 +++++++++++++ packages/ckb-ccc/package.json | 2 +- packages/connector-react/CHANGELOG.md | 13 +++++++++++++ packages/connector-react/package.json | 2 +- packages/connector/CHANGELOG.md | 13 +++++++++++++ packages/connector/package.json | 2 +- packages/core/CHANGELOG.md | 7 +++++++ packages/core/package.json | 2 +- packages/did-ckb/CHANGELOG.md | 14 ++++++++++++++ packages/did-ckb/package.json | 2 +- packages/eip6963/CHANGELOG.md | 13 +++++++++++++ packages/eip6963/package.json | 2 +- packages/joy-id/CHANGELOG.md | 13 +++++++++++++ packages/joy-id/package.json | 2 +- packages/lumos-patches/CHANGELOG.md | 13 +++++++++++++ packages/lumos-patches/package.json | 2 +- packages/nip07/CHANGELOG.md | 13 +++++++++++++ packages/nip07/package.json | 2 +- packages/okx/CHANGELOG.md | 15 +++++++++++++++ packages/okx/package.json | 2 +- packages/rei/CHANGELOG.md | 13 +++++++++++++ packages/rei/package.json | 2 +- packages/shell/CHANGELOG.md | 18 ++++++++++++++++++ packages/shell/package.json | 2 +- packages/spore/CHANGELOG.md | 13 +++++++++++++ packages/spore/package.json | 2 +- packages/ssri/CHANGELOG.md | 13 +++++++++++++ packages/ssri/package.json | 2 +- packages/type-id/CHANGELOG.md | 13 +++++++++++++ packages/type-id/package.json | 2 +- packages/udt/CHANGELOG.md | 14 ++++++++++++++ packages/udt/package.json | 2 +- packages/uni-sat/CHANGELOG.md | 13 +++++++++++++ packages/uni-sat/package.json | 2 +- packages/utxo-global/CHANGELOG.md | 13 +++++++++++++ packages/utxo-global/package.json | 2 +- packages/xverse/CHANGELOG.md | 13 +++++++++++++ packages/xverse/package.json | 2 +- 41 files changed, 291 insertions(+), 45 deletions(-) delete mode 100644 .changeset/nine-eagles-dig.md diff --git a/.changeset/nine-eagles-dig.md b/.changeset/nine-eagles-dig.md deleted file mode 100644 index a174ae089..000000000 --- a/.changeset/nine-eagles-dig.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"@ckb-ccc/connector-react": minor -"@ckb-ccc/lumos-patches": minor -"@ckb-ccc/utxo-global": minor -"@ckb-ccc/connector": minor -"ckb-ccc": minor -"@ckb-ccc/did-ckb": minor -"@ckb-ccc/eip6963": minor -"@ckb-ccc/type-id": minor -"@ckb-ccc/uni-sat": minor -"@ckb-ccc/joy-id": minor -"@ckb-ccc/xverse": minor -"@ckb-ccc/nip07": minor -"@ckb-ccc/shell": minor -"@ckb-ccc/spore": minor -"@ckb-ccc/core": minor -"@ckb-ccc/ssri": minor -"@ckb-ccc/ccc": minor -"@ckb-ccc/okx": minor -"@ckb-ccc/rei": minor -"@ckb-ccc/udt": minor ---- - -chore: bump packages - \ No newline at end of file diff --git a/packages/ccc/CHANGELOG.md b/packages/ccc/CHANGELOG.md index 0b6b249f5..4e2474aca 100644 --- a/packages/ccc/CHANGELOG.md +++ b/packages/ccc/CHANGELOG.md @@ -1,5 +1,26 @@ # @ckb-ccc/ccc +## 1.2.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/utxo-global@1.1.0 + - @ckb-ccc/eip6963@1.1.0 + - @ckb-ccc/uni-sat@1.1.0 + - @ckb-ccc/joy-id@1.1.0 + - @ckb-ccc/xverse@1.1.0 + - @ckb-ccc/nip07@1.1.0 + - @ckb-ccc/shell@1.3.0 + - @ckb-ccc/okx@1.1.0 + - @ckb-ccc/rei@1.1.0 + ## 1.1.26 ### Patch Changes diff --git a/packages/ccc/package.json b/packages/ccc/package.json index c1b5e450e..ccd502e38 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/ccc", - "version": "1.1.26", + "version": "1.2.0", "description": "CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/ckb-ccc/CHANGELOG.md b/packages/ckb-ccc/CHANGELOG.md index 63fe8d52d..37765ac08 100644 --- a/packages/ckb-ccc/CHANGELOG.md +++ b/packages/ckb-ccc/CHANGELOG.md @@ -1,5 +1,18 @@ # ckb-ccc +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/ccc@1.2.0 + ## 1.0.34 ### Patch Changes diff --git a/packages/ckb-ccc/package.json b/packages/ckb-ccc/package.json index d78b42724..c91a18b6b 100644 --- a/packages/ckb-ccc/package.json +++ b/packages/ckb-ccc/package.json @@ -1,6 +1,6 @@ { "name": "ckb-ccc", - "version": "1.0.34", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/connector-react/CHANGELOG.md b/packages/connector-react/CHANGELOG.md index 89e1547b2..cabc8131a 100644 --- a/packages/connector-react/CHANGELOG.md +++ b/packages/connector-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/connector-react +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/connector@1.1.0 + ## 1.0.36 ### Patch Changes diff --git a/packages/connector-react/package.json b/packages/connector-react/package.json index 4ac97f23a..1e411ba46 100644 --- a/packages/connector-react/package.json +++ b/packages/connector-react/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/connector-react", - "version": "1.0.36", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector UI Component for React", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/connector/CHANGELOG.md b/packages/connector/CHANGELOG.md index 2331877da..9c71f456c 100644 --- a/packages/connector/CHANGELOG.md +++ b/packages/connector/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/connector +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/ccc@1.2.0 + ## 1.0.34 ### Patch Changes diff --git a/packages/connector/package.json b/packages/connector/package.json index c6df8e474..ef3c97d83 100644 --- a/packages/connector/package.json +++ b/packages/connector/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/connector", - "version": "1.0.34", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector UI", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 2531b7028..2783e131f 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,12 @@ # @ckb-ccc/core +## 1.14.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + ## 1.13.0 ### Minor Changes diff --git a/packages/core/package.json b/packages/core/package.json index f517cc73e..c4cbfe897 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/core", - "version": "1.13.0", + "version": "1.14.0", "description": "Core of CCC - CKBer's Codebase", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/did-ckb/CHANGELOG.md b/packages/did-ckb/CHANGELOG.md index 33e73583a..0e898396e 100644 --- a/packages/did-ckb/CHANGELOG.md +++ b/packages/did-ckb/CHANGELOG.md @@ -1,5 +1,19 @@ # @ckb-ccc/did-ckb +## 0.2.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/type-id@0.1.0 + - @ckb-ccc/core@1.14.0 + ## 0.1.0 ### Minor Changes diff --git a/packages/did-ckb/package.json b/packages/did-ckb/package.json index 267438451..a876ad843 100644 --- a/packages/did-ckb/package.json +++ b/packages/did-ckb/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/did-ckb", - "version": "0.1.0", + "version": "0.2.0", "description": "CCC - CKBer's Codebase. CCC's support for DID on CKB", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/eip6963/CHANGELOG.md b/packages/eip6963/CHANGELOG.md index 13f50cc74..f385f97d1 100644 --- a/packages/eip6963/CHANGELOG.md +++ b/packages/eip6963/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/eip6963 +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/eip6963/package.json b/packages/eip6963/package.json index 2187f5f9a..f8079583e 100644 --- a/packages/eip6963/package.json +++ b/packages/eip6963/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/eip6963", - "version": "1.0.33", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for EIP6963", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/joy-id/CHANGELOG.md b/packages/joy-id/CHANGELOG.md index 7f4fafd34..35b8ac46f 100644 --- a/packages/joy-id/CHANGELOG.md +++ b/packages/joy-id/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/joy-id +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/joy-id/package.json b/packages/joy-id/package.json index 16a8d838c..259117b40 100644 --- a/packages/joy-id/package.json +++ b/packages/joy-id/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/joy-id", - "version": "1.0.33", + "version": "1.1.0", "description": "Connector's support for JoyID", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/lumos-patches/CHANGELOG.md b/packages/lumos-patches/CHANGELOG.md index 9da257740..db89bfe3f 100644 --- a/packages/lumos-patches/CHANGELOG.md +++ b/packages/lumos-patches/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/lumos-patches +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/lumos-patches/package.json b/packages/lumos-patches/package.json index bdc41ad00..cc89cda72 100644 --- a/packages/lumos-patches/package.json +++ b/packages/lumos-patches/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/lumos-patches", - "version": "1.0.33", + "version": "1.1.0", "description": "Patches for using Lumos with CCC", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/nip07/CHANGELOG.md b/packages/nip07/CHANGELOG.md index cc067fb09..f99e8baf8 100644 --- a/packages/nip07/CHANGELOG.md +++ b/packages/nip07/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/nip07 +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/nip07/package.json b/packages/nip07/package.json index be4b9dca1..769581e0f 100644 --- a/packages/nip07/package.json +++ b/packages/nip07/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/nip07", - "version": "1.0.33", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for NIP07", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/okx/CHANGELOG.md b/packages/okx/CHANGELOG.md index 4ff45d568..e7d54c2b7 100644 --- a/packages/okx/CHANGELOG.md +++ b/packages/okx/CHANGELOG.md @@ -1,5 +1,20 @@ # @ckb-ccc/okx +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/uni-sat@1.1.0 + - @ckb-ccc/nip07@1.1.0 + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/okx/package.json b/packages/okx/package.json index 13f8c7f96..647d2b64c 100644 --- a/packages/okx/package.json +++ b/packages/okx/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/okx", - "version": "1.0.33", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for OKX", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/rei/CHANGELOG.md b/packages/rei/CHANGELOG.md index 99d3e4eff..1fe1921d9 100644 --- a/packages/rei/CHANGELOG.md +++ b/packages/rei/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/rei +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/rei/package.json b/packages/rei/package.json index 1dc289f31..4e814e25b 100644 --- a/packages/rei/package.json +++ b/packages/rei/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/rei", - "version": "1.0.33", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for Rei", "license": "MIT", "private": false, diff --git a/packages/shell/CHANGELOG.md b/packages/shell/CHANGELOG.md index 190cc120d..f1c5798cc 100644 --- a/packages/shell/CHANGELOG.md +++ b/packages/shell/CHANGELOG.md @@ -1,5 +1,23 @@ # @ckb-ccc/shell +## 1.3.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/did-ckb@0.2.0 + - @ckb-ccc/type-id@0.1.0 + - @ckb-ccc/spore@1.6.0 + - @ckb-ccc/core@1.14.0 + - @ckb-ccc/ssri@0.3.0 + - @ckb-ccc/udt@0.2.0 + ## 1.2.0 ### Minor Changes diff --git a/packages/shell/package.json b/packages/shell/package.json index 8438ebf59..f76740c7d 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/shell", - "version": "1.2.0", + "version": "1.3.0", "description": "Backend Shell of CCC - CKBer's Codebase. Common Chains Connector.", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/spore/CHANGELOG.md b/packages/spore/CHANGELOG.md index 90bc7cfc2..10e47891a 100644 --- a/packages/spore/CHANGELOG.md +++ b/packages/spore/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/spore +## 1.6.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.5.18 ### Patch Changes diff --git a/packages/spore/package.json b/packages/spore/package.json index 1338363a9..45d02efd2 100644 --- a/packages/spore/package.json +++ b/packages/spore/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/spore", - "version": "1.5.18", + "version": "1.6.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for Spore protocol", "author": "ashuralyk ", "license": "MIT", diff --git a/packages/ssri/CHANGELOG.md b/packages/ssri/CHANGELOG.md index fec030931..7a2f6080e 100644 --- a/packages/ssri/CHANGELOG.md +++ b/packages/ssri/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/ssri +## 0.3.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 0.2.23 ### Patch Changes diff --git a/packages/ssri/package.json b/packages/ssri/package.json index 6b9664754..894378c1d 100644 --- a/packages/ssri/package.json +++ b/packages/ssri/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/ssri", - "version": "0.2.23", + "version": "0.3.0", "description": "SSRI", "author": "Alive24 ", "license": "MIT", diff --git a/packages/type-id/CHANGELOG.md b/packages/type-id/CHANGELOG.md index a69bf0a44..8758ad72e 100644 --- a/packages/type-id/CHANGELOG.md +++ b/packages/type-id/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/type-id +## 0.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 0.0.1 ### Patch Changes diff --git a/packages/type-id/package.json b/packages/type-id/package.json index e594a5fb1..5480ac364 100644 --- a/packages/type-id/package.json +++ b/packages/type-id/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/type-id", - "version": "0.0.1", + "version": "0.1.0", "description": "CCC - CKBer's Codebase. CCC's support for Type ID", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/udt/CHANGELOG.md b/packages/udt/CHANGELOG.md index b0855ba1b..78698bfd5 100644 --- a/packages/udt/CHANGELOG.md +++ b/packages/udt/CHANGELOG.md @@ -1,5 +1,19 @@ # @ckb-ccc/udt +## 0.2.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + - @ckb-ccc/ssri@0.3.0 + ## 0.1.25 ### Patch Changes diff --git a/packages/udt/package.json b/packages/udt/package.json index dd8f200c9..37226a708 100644 --- a/packages/udt/package.json +++ b/packages/udt/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/udt", - "version": "0.1.25", + "version": "0.2.0", "description": "UDT", "author": "Alive24 ", "license": "MIT", diff --git a/packages/uni-sat/CHANGELOG.md b/packages/uni-sat/CHANGELOG.md index 1e9f57b7c..bf6065f21 100644 --- a/packages/uni-sat/CHANGELOG.md +++ b/packages/uni-sat/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/uni-sat +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/uni-sat/package.json b/packages/uni-sat/package.json index 7585cabd5..073041259 100644 --- a/packages/uni-sat/package.json +++ b/packages/uni-sat/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/uni-sat", - "version": "1.0.33", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for UniSat", "author": "Hanssen0 ", "license": "MIT", diff --git a/packages/utxo-global/CHANGELOG.md b/packages/utxo-global/CHANGELOG.md index 9df9afbbd..40f7a95d0 100644 --- a/packages/utxo-global/CHANGELOG.md +++ b/packages/utxo-global/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/utxo-global +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/utxo-global/package.json b/packages/utxo-global/package.json index 8988626fb..bafeeb97c 100644 --- a/packages/utxo-global/package.json +++ b/packages/utxo-global/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/utxo-global", - "version": "1.0.33", + "version": "1.1.0", "description": "Common Chains Connector's support for UTXO Global", "author": "Trong Dinh ", "license": "MIT", diff --git a/packages/xverse/CHANGELOG.md b/packages/xverse/CHANGELOG.md index e545ee1d3..eff798238 100644 --- a/packages/xverse/CHANGELOG.md +++ b/packages/xverse/CHANGELOG.md @@ -1,5 +1,18 @@ # @ckb-ccc/xverse +## 1.1.0 +### Minor Changes + + + +- [#381](https://github.com/ckb-devrel/ccc/pull/381) [`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4) Thanks [@Hanssen0](https://github.com/Hanssen0)! - chore: bump packages + + +### Patch Changes + +- Updated dependencies [[`46cc045`](https://github.com/ckb-devrel/ccc/commit/46cc045a3eefe9ba6625482dc7f740a0c59c99d4)]: + - @ckb-ccc/core@1.14.0 + ## 1.0.33 ### Patch Changes diff --git a/packages/xverse/package.json b/packages/xverse/package.json index a956dcb9b..7a166a736 100644 --- a/packages/xverse/package.json +++ b/packages/xverse/package.json @@ -1,6 +1,6 @@ { "name": "@ckb-ccc/xverse", - "version": "1.0.33", + "version": "1.1.0", "description": "CCC - CKBer's Codebase. Common Chains Connector's support for Xverse", "author": "Hanssen0 ", "license": "MIT",