From 8ce291acf724d15b48dedb40c101998f07837502 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Tue, 30 Jul 2024 23:42:32 +0200 Subject: [PATCH 01/10] Fix all linting errors --- package.json | 3 +- src/args.ts | 75 ++++---- src/connectors.ts | 374 ++++++++++++++++++++-------------------- src/connectors/file.ts | 198 ++++++++++----------- src/connectors/http.ts | 189 ++++++++++---------- src/connectors/kafka.ts | 231 ++++++++++++------------- src/connectors/ws.ts | 151 ++++++++-------- src/index.ts | 188 ++++++++++---------- src/util.ts | 140 +++++++-------- 9 files changed, 773 insertions(+), 776 deletions(-) diff --git a/package.json b/package.json index bc412d0..ef75d53 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "build:recompose": "sed -z 's/var __require = (id) => {\\n return import.meta.require(id);\\n};/import Module from \"node:module\";\\nconst __require = Module.createRequire(import.meta.url);/' -i bin/bundle.mjs", "watch": "tsc -w", "test": "vitest run --coverage --coverage.include src", - "prepare": "husky" + "prepare": "husky", + "prepublishOnly": "npm run build" }, "keywords": [], "author": "", diff --git a/src/args.ts b/src/args.ts index 2a34f06..a8601f0 100644 --- a/src/args.ts +++ b/src/args.ts @@ -2,57 +2,56 @@ import commandLineArgs from "command-line-args"; import commandLineUsage from "command-line-usage"; const optionDefinitions = [ - { name: 'input', type: String, defaultOption: true, summary: "Specify what input file to start up" }, - { name: 'help', alias: 'h', type: Boolean, description: "Display this help message" }, + { name: "input", type: String, defaultOption: true, summary: "Specify what input file to start up" }, + { name: "help", alias: "h", type: Boolean, description: "Display this help message" }, ]; const sections = [ - { - header: "Js-runner", - content: "JS-runner is part of the {italic connector architecture}. Starting from an input file start up all JsProcessors that are defined. Please do not use blank nodes, skolemize your data somewhere else!" - }, - { - header: "Synopsis", - content: "$ js-runner " - }, - { - header: "Command List", - content: [{ name: "input", summary: "Specify what input file to start up" }], - }, - { - optionList: [optionDefinitions[1]] - } + { + header: "Js-runner", + content: "JS-runner is part of the {italic connector architecture}. Starting from an input file start up all JsProcessors that are defined. Please do not use blank nodes, skolemize your data somewhere else!" + }, + { + header: "Synopsis", + content: "$ js-runner " + }, + { + header: "Command List", + content: [{ name: "input", summary: "Specify what input file to start up" }], + }, + { + optionList: [optionDefinitions[1]] + } ]; export type Args = { - input: string, + input: string, + help?: boolean, }; -function validArgs(args: any): boolean { - if (!args.input) return false; - return true; +function validArgs(args: Args): boolean { + if (!args.input) return false; + return true; } function printUsage() { - const usage = commandLineUsage(sections); - console.log(usage); - process.exit(0); + const usage = commandLineUsage(sections); + console.log(usage); + process.exit(0); } -export function getArgs(): Args { - let args: any; - try { - args = commandLineArgs(optionDefinitions); - } catch (e) { - console.error(e); - printUsage(); - } - - if (args.help || !validArgs(args)) { - printUsage(); - } - - return args; +export function getArgs(): Args | undefined { + let args: Args; + try { + args = commandLineArgs(optionDefinitions); + if (args.help || !validArgs(args)) { + printUsage(); + } + return args; + } catch (e) { + console.error(e); + printUsage(); + } } diff --git a/src/connectors.ts b/src/connectors.ts index 495f50b..66c34e8 100644 --- a/src/connectors.ts +++ b/src/connectors.ts @@ -2,258 +2,260 @@ import { createTermNamespace } from "@treecg/types"; import { NamedNode, Term } from "@rdfjs/types"; import { - FileWriterConfig, - startFileStreamReader, - startFileStreamWriter, + FileReaderConfig, + FileWriterConfig, + startFileStreamReader, + startFileStreamWriter, } from "./connectors/file"; export * from "./connectors/file"; import { - startWsStreamReader, - startWsStreamWriter, - WsWriterConfig, + startWsStreamReader, + startWsStreamWriter, + WsReaderConfig, + WsWriterConfig, } from "./connectors/ws"; export * from "./connectors/ws"; import { - KafkaReaderConfig, - KafkaWriterConfig, - startKafkaStreamReader, - startKafkaStreamWriter, + KafkaReaderConfig, + KafkaWriterConfig, + startKafkaStreamReader, + startKafkaStreamWriter, } from "./connectors/kafka"; export * from "./connectors/kafka"; import { - HttpReaderConfig, - HttpWriterConfig, - startHttpStreamReader, - startHttpStreamWriter, + HttpReaderConfig, + HttpWriterConfig, + startHttpStreamReader, + startHttpStreamWriter, } from "./connectors/http"; import { LOG } from "./util"; export * from "./connectors/http"; export const Conn = createTermNamespace( - "https://w3id.org/conn#", - "FileReaderChannel", - "FileWriterChannel", - "HttpReaderChannel", - "HttpWriterChannel", - "KafkaReaderChannel", - "KafkaWriterChannel", - "WsReaderChannel", - "WsWriterChannel", - "WriterChannel", - "ReaderChannel", + "https://w3id.org/conn#", + "FileReaderChannel", + "FileWriterChannel", + "HttpReaderChannel", + "HttpWriterChannel", + "KafkaReaderChannel", + "KafkaWriterChannel", + "WsReaderChannel", + "WsWriterChannel", + "WriterChannel", + "ReaderChannel", ); export interface Config { - id: Term; - ty: NamedNode; - config: T; + id: Term; + ty: NamedNode; + config: T; } export type ReaderConstructor = (config: C) => { - reader: Stream; - init: () => Promise; + reader: Stream; + init: () => Promise; }; export type WriterConstructor = (config: C) => { - writer: Writer; - init: () => Promise; + writer: Writer; + init: () => Promise; }; export const JsOntology = createTermNamespace( - "https://w3id.org/conn/js#", - "JsProcess", - "JsChannel", - "JsReaderChannel", - "JsWriterChannel", + "https://w3id.org/conn/js#", + "JsProcess", + "JsChannel", + "JsReaderChannel", + "JsWriterChannel", ); type JsChannel = { - channel: { - id: Term; - }; + channel: { + id: Term; + }; }; export class ChannelFactory { - private inits: (() => Promise)[] = []; - private jsChannelsNamedNodes: { [label: string]: SimpleStream } = {}; - private jsChannelsBlankNodes: { [label: string]: SimpleStream } = {}; - - createReader(config: Config): Stream { - LOG.channel("Creating reader %s: a %s", config.id.value, config.ty.value); - if (config.ty.equals(Conn.FileReaderChannel)) { - const { reader, init } = startFileStreamReader(config.config); - this.inits.push(init); - - return reader; - } + private inits: (() => Promise)[] = []; + private jsChannelsNamedNodes: { [label: string]: SimpleStream } = {}; + private jsChannelsBlankNodes: { [label: string]: SimpleStream } = {}; - if (config.ty.equals(Conn.WsReaderChannel)) { - const { reader, init } = startWsStreamReader(config.config); - this.inits.push(init); + createReader(config: Config): Stream { + LOG.channel("Creating reader %s: a %s", config.id.value, config.ty.value); + if (config.ty.equals(Conn.FileReaderChannel)) { + const { reader, init } = startFileStreamReader(config.config); + this.inits.push(init); - return reader; - } + return reader; + } - if (config.ty.equals(Conn.KafkaReaderChannel)) { - const { reader, init } = startKafkaStreamReader( - config.config, - ); - this.inits.push(init); - return reader; - } + if (config.ty.equals(Conn.WsReaderChannel)) { + const { reader, init } = startWsStreamReader(config.config); + this.inits.push(init); - if (config.ty.equals(Conn.HttpReaderChannel)) { - const { reader, init } = startHttpStreamReader( - config.config, - ); - this.inits.push(init); - return reader; - } - - if (config.ty.equals(JsOntology.JsReaderChannel)) { - const c = config.config; - if (c.channel) { - const id = c.channel.id.value; - if (c.channel.id.termType === "NamedNode") { - if (!this.jsChannelsNamedNodes[id]) { - this.jsChannelsNamedNodes[id] = new SimpleStream(); - } + return reader; + } - return this.jsChannelsNamedNodes[id]; + if (config.ty.equals(Conn.KafkaReaderChannel)) { + const { reader, init } = startKafkaStreamReader( + config.config, + ); + this.inits.push(init); + return reader; } - if (c.channel.id.termType === "BlankNode") { - if (!this.jsChannelsBlankNodes[id]) { - this.jsChannelsBlankNodes[id] = new SimpleStream(); - } + if (config.ty.equals(Conn.HttpReaderChannel)) { + const { reader, init } = startHttpStreamReader( + config.config, + ); + this.inits.push(init); + return reader; + } - return this.jsChannelsBlankNodes[id]; + if (config.ty.equals(JsOntology.JsReaderChannel)) { + const c = config.config; + if (c.channel) { + const id = c.channel.id.value; + if (c.channel.id.termType === "NamedNode") { + if (!this.jsChannelsNamedNodes[id]) { + this.jsChannelsNamedNodes[id] = new SimpleStream(); + } + + return this.jsChannelsNamedNodes[id]; + } + + if (c.channel.id.termType === "BlankNode") { + if (!this.jsChannelsBlankNodes[id]) { + this.jsChannelsBlankNodes[id] = new SimpleStream(); + } + + return this.jsChannelsBlankNodes[id]; + } + throw "Should have found a thing"; + } } - throw "Should have found a thing"; - } - } - throw "Unknown reader channel " + config.ty.value; - } - - createWriter(config: Config): Writer { - LOG.channel("Creating writer %s: a %s", config.id.value, config.ty.value); - if (config.ty.equals(Conn.FileWriterChannel)) { - const { writer, init } = startFileStreamWriter( - config.config, - ); - this.inits.push(init); - - return writer; + throw "Unknown reader channel " + config.ty.value; } - if (config.ty.equals(Conn.WsWriterChannel)) { - const { writer, init } = startWsStreamWriter( - config.config, - ); - this.inits.push(init); + createWriter(config: Config): Writer { + LOG.channel("Creating writer %s: a %s", config.id.value, config.ty.value); + if (config.ty.equals(Conn.FileWriterChannel)) { + const { writer, init } = startFileStreamWriter( + config.config, + ); + this.inits.push(init); - return writer; - } - - if (config.ty.equals(Conn.KafkaWriterChannel)) { - const { writer, init } = startKafkaStreamWriter( - config.config, - ); - this.inits.push(init); - return writer; - } + return writer; + } - if (config.ty.equals(Conn.HttpWriterChannel)) { - const { writer, init } = startHttpStreamWriter( - config.config, - ); - this.inits.push(init); - return writer; - } + if (config.ty.equals(Conn.WsWriterChannel)) { + const { writer, init } = startWsStreamWriter( + config.config, + ); + this.inits.push(init); - if (config.ty.equals(JsOntology.JsWriterChannel)) { - const c = config.config; - if (c.channel) { - const id = c.channel.id.value; - if (c.channel.id.termType === "NamedNode") { - if (!this.jsChannelsNamedNodes[id]) { - this.jsChannelsNamedNodes[id] = new SimpleStream(); - } + return writer; + } - return this.jsChannelsNamedNodes[id]; + if (config.ty.equals(Conn.KafkaWriterChannel)) { + const { writer, init } = startKafkaStreamWriter( + config.config, + ); + this.inits.push(init); + return writer; } - if (c.channel.id.termType === "BlankNode") { - if (!this.jsChannelsBlankNodes[id]) { - this.jsChannelsBlankNodes[id] = new SimpleStream(); - } + if (config.ty.equals(Conn.HttpWriterChannel)) { + const { writer, init } = startHttpStreamWriter( + config.config, + ); + this.inits.push(init); + return writer; + } - return this.jsChannelsBlankNodes[id]; + if (config.ty.equals(JsOntology.JsWriterChannel)) { + const c = config.config; + if (c.channel) { + const id = c.channel.id.value; + if (c.channel.id.termType === "NamedNode") { + if (!this.jsChannelsNamedNodes[id]) { + this.jsChannelsNamedNodes[id] = new SimpleStream(); + } + + return this.jsChannelsNamedNodes[id]; + } + + if (c.channel.id.termType === "BlankNode") { + if (!this.jsChannelsBlankNodes[id]) { + this.jsChannelsBlankNodes[id] = new SimpleStream(); + } + + return this.jsChannelsBlankNodes[id]; + } + throw "Should have found a thing"; + } } - throw "Should have found a thing"; - } - } - throw "Unknown writer channel " + config.ty.value; - } + throw "Unknown writer channel " + config.ty.value; + } - async init(): Promise { - await Promise.all(this.inits.map((x) => x())); - } + async init(): Promise { + await Promise.all(this.inits.map((x) => x())); + } } export interface Writer { - push(item: T): Promise; - end(): Promise; + push(item: T): Promise; + end(): Promise; } export interface Stream { - lastElement?: T; - end(): Promise; - data(listener: (t: T) => PromiseLike | void): this; - on(event: "data", listener: (t: T) => PromiseLike | void): this; - on(event: "end", listener: () => PromiseLike | void): this; + lastElement?: T; + end(): Promise; + data(listener: (t: T) => PromiseLike | void): this; + on(event: "data", listener: (t: T) => PromiseLike | void): this; + on(event: "end", listener: () => PromiseLike | void): this; } export type Handler = (item: T) => Promise | void; export class SimpleStream implements Stream { - private readonly dataHandlers: Handler[] = []; - private readonly endHandlers: Handler[] = []; - - public readonly disconnect: () => Promise; - public lastElement?: T | undefined; - - public constructor(onDisconnect?: () => Promise) { - this.disconnect = onDisconnect || (async () => {}); - } - - public data(listener: Handler): this { - this.dataHandlers.push(listener); - return this; - } - - public async push(data: T): Promise { - this.lastElement = data; - await Promise.all(this.dataHandlers.map((handler) => handler(data))); - } - - public async end(): Promise { - await this.disconnect(); - await Promise.all(this.endHandlers.map((handler) => handler())); - } - - public on(event: "data", listener: Handler): this; - public on(event: "end", listener: Handler): this; - public on(event: "data" | "end", listener: Handler): this { - if (event === "data") { - this.dataHandlers.push(listener); + private readonly dataHandlers: Handler[] = []; + private readonly endHandlers: Handler[] = []; + + public readonly disconnect: () => Promise; + public lastElement?: T | undefined; + + public constructor(onDisconnect?: () => Promise) { + this.disconnect = onDisconnect || (async () => { }); } - if (event === "end") { - this.endHandlers.push(listener); + + public data(listener: Handler): this { + this.dataHandlers.push(listener); + return this; + } + + public async push(data: T): Promise { + this.lastElement = data; + await Promise.all(this.dataHandlers.map((handler) => handler(data))); + } + + public async end(): Promise { + await this.disconnect(); + await Promise.all(this.endHandlers.map((handler) => handler())); + } + + public on(event: "data", listener: Handler): this; + public on(event: "end", listener: Handler): this; + public on(event: "data" | "end", listener: Handler | Handler): this { + if (event === "data") { + this.dataHandlers.push(>listener); + } + if (event === "end") { + this.endHandlers.push(>listener); + } + return this; } - return this; - } } diff --git a/src/connectors/file.ts b/src/connectors/file.ts index 34bdef0..efa5b2e 100644 --- a/src/connectors/file.ts +++ b/src/connectors/file.ts @@ -3,134 +3,134 @@ import { appendFile, readFile, stat, writeFile } from "fs/promises"; import { isAbsolute } from "path"; import { watch } from "node:fs"; import { - ReaderConstructor, - SimpleStream, - WriterConstructor, + ReaderConstructor, + SimpleStream, + WriterConstructor, } from "../connectors"; interface FileError extends Error { - code: string; + code: string; } export interface FileReaderConfig { - path: string; - onReplace: boolean; - readFirstContent?: boolean; - encoding?: string; + path: string; + onReplace: boolean; + readFirstContent?: boolean; + encoding?: string; } export interface FileWriterConfig { - path: string; - onReplace: boolean; - readFirstContent?: boolean; - encoding?: string; + path: string; + onReplace: boolean; + readFirstContent?: boolean; + encoding?: string; } async function getFileSize(path: string): Promise { - return (await stat(path)).size; + return (await stat(path)).size; } function readPart( - path: string, - start: number, - end: number, - encoding: BufferEncoding, + path: string, + start: number, + end: number, + encoding: BufferEncoding, ): Promise { - return new Promise((res) => { - const stream = createReadStream(path, { encoding, start, end }); - let buffer = ""; - stream.on("data", (chunk) => { - buffer += chunk; + return new Promise((res) => { + const stream = createReadStream(path, { encoding, start, end }); + let buffer = ""; + stream.on("data", (chunk) => { + buffer += chunk; + }); + stream.on("close", () => res(buffer)); }); - stream.on("close", () => res(buffer)); - }); } function debounce(func: (t: A) => void, timeout = 100): (t: A) => void { - let timer: ReturnType; - return (...args) => { - clearTimeout(timer); - timer = setTimeout(() => { - func(...args); - }, timeout); - }; + let timer: ReturnType; + return (...args) => { + clearTimeout(timer); + timer = setTimeout(() => { + func(...args); + }, timeout); + }; } export const startFileStreamReader: ReaderConstructor = ( - config, + config, ) => { - const path = isAbsolute(config.path) - ? config.path - : `${process.cwd()}/${config.path}`; - openSync(path, "a+"); - const encoding: BufferEncoding = config.encoding || "utf-8"; - const reader = new SimpleStream(); - - const init = async () => { - let currentPos = await getFileSize(path); - const watcher = watch(path, { encoding: "utf-8" }); - watcher.on( - "change", - debounce(async () => { - try { - let content: string; - if (config.onReplace) { - content = await readFile(path, { encoding }); - } else { - const newSize = await getFileSize(path); - - if (newSize <= currentPos) { - currentPos = newSize; - return; - } - - content = await readPart(path, currentPos, newSize, encoding); - currentPos = newSize; - } - - await reader.push(content); - } catch (error: unknown) { - if ((error).code === "ENOENT") { - return; - } - throw error; + const path = isAbsolute(config.path) + ? config.path + : `${process.cwd()}/${config.path}`; + openSync(path, "a+"); + const encoding: BufferEncoding = config.encoding || "utf-8"; + const reader = new SimpleStream(); + + const init = async () => { + let currentPos = await getFileSize(path); + const watcher = watch(path, { encoding: "utf-8" }); + watcher.on( + "change", + debounce(async () => { + try { + let content: string; + if (config.onReplace) { + content = await readFile(path, { encoding }); + } else { + const newSize = await getFileSize(path); + + if (newSize <= currentPos) { + currentPos = newSize; + return; + } + + content = await readPart(path, currentPos, newSize, encoding); + currentPos = newSize; + } + + await reader.push(content); + } catch (error: unknown) { + if ((error).code === "ENOENT") { + return; + } + throw error; + } + }), + ); + + if (config.onReplace && config.readFirstContent) { + const content = await readFile(path, { encoding }); + await reader.push(content); } - }), - ); + }; - if (config.onReplace && config.readFirstContent) { - const content = await readFile(path, { encoding }); - await reader.push(content); - } - }; - - return { reader, init }; + return { reader, init }; }; // export interface FileWriterConfig extends FileReaderConfig {} export const startFileStreamWriter: WriterConstructor = ( - config, + config, ) => { - const path = isAbsolute(config.path) - ? config.path - : `${process.cwd()}/${config.path}`; - const encoding: BufferEncoding = config.encoding || "utf-8"; - - const init = async () => { - if (!config.onReplace) { - await writeFile(path, "", { encoding }); - } - }; - - const push = async (item: string): Promise => { - if (config.onReplace) { - await writeFile(path, item, { encoding }); - } else { - await appendFile(path, item, { encoding }); - } - }; - - const end = async (): Promise => {}; - - return { writer: { push, end }, init }; + const path = isAbsolute(config.path) + ? config.path + : `${process.cwd()}/${config.path}`; + const encoding: BufferEncoding = config.encoding || "utf-8"; + + const init = async () => { + if (!config.onReplace) { + await writeFile(path, "", { encoding }); + } + }; + + const push = async (item: string): Promise => { + if (config.onReplace) { + await writeFile(path, item, { encoding }); + } else { + await appendFile(path, item, { encoding }); + } + }; + + const end = async (): Promise => { }; + + return { writer: { push, end }, init }; }; diff --git a/src/connectors/http.ts b/src/connectors/http.ts index ac50aa7..fc46c97 100644 --- a/src/connectors/http.ts +++ b/src/connectors/http.ts @@ -1,131 +1,128 @@ import * as http from "http"; import type * as https from "https"; import type { - IncomingMessage, - RequestListener, - Server, - ServerResponse, + IncomingMessage, + Server, + ServerResponse, } from "http"; import { createServer } from "http"; import type { Readable } from "stream"; import { - Config, - ReaderConstructor, - SimpleStream, - WriterConstructor, + ReaderConstructor, + SimpleStream, + WriterConstructor, } from "../connectors"; function streamToString( - stream: Readable, - binary: boolean, + stream: Readable, + binary: boolean, ): Promise { - const datas = []; - return new Promise((res) => { - stream.on("data", (data) => { - datas.push(data); - }); - stream.on("end", () => { - const streamData = Buffer.concat(datas); - res(binary ? streamData : streamData.toString()); + const datas = []; + return new Promise((res) => { + stream.on("data", (data) => { + datas.push(data); + }); + stream.on("end", () => { + const streamData = Buffer.concat(datas); + res(binary ? streamData : streamData.toString()); + }); }); - }); } export interface HttpReaderConfig { - endpoint: string; - port: number; - binary: boolean; - waitHandled?: boolean; - responseCode?: number; + endpoint: string; + port: number; + binary: boolean; + waitHandled?: boolean; + responseCode?: number; } export const startHttpStreamReader: ReaderConstructor = ( - config, + config, ) => { - let server: Server; + const server: Server = createServer(async ( + req: IncomingMessage, + res: ServerResponse + ) => { + try { + const content = await streamToString(req, config.binary); - const stream = new SimpleStream( - () => - new Promise((res) => { - if (server !== undefined) { - server.close(() => { - res(); - }); - } else { - res(); + const promise = stream.push(content).catch((error) => { + throw error; + }); + if (config.waitHandled) { + await promise; + } + } catch (error: unknown) { + console.error("Failed", error); } - }), - ); - const requestListener: RequestListener = async function ( - req: IncomingMessage, - res: ServerResponse, - ) { - try { - const content = await streamToString(req, config.binary); - - const promise = stream.push(content).catch((error) => { - throw error; - }); - if (config.waitHandled) { - await promise; - } - } catch (error: unknown) { - console.error("Failed", error); - } + res.writeHead(config.responseCode || 200); + res.end("OK"); + }); - res.writeHead(config.responseCode || 200); - res.end("OK"); - }; + const stream = new SimpleStream( + () => + new Promise((res) => { + if (server !== undefined) { + server.close(() => { + res(); + }); + } else { + res(); + } + }), + ); - server = createServer(requestListener); - const init = () => { - return new Promise((res) => { - const cb = (): void => res(undefined); - if (server) { - server.listen(config.port, config.endpoint, cb); - } else { - cb(); - } - }); - }; - return { reader: stream, init }; + const init = () => { + return new Promise((res) => { + const cb = (): void => res(undefined); + if (server) { + server.listen(config.port, config.endpoint, cb); + } else { + cb(); + } + }); + }; + return { reader: stream, init }; }; export interface HttpWriterConfig { - endpoint: string; - method: string; + endpoint: string; + method: string; } -export const startHttpStreamWriter: WriterConstructor = ( - config, -) => { - const requestConfig = new URL(config.endpoint); +export const startHttpStreamWriter: WriterConstructor = (config) => { + const requestConfig = new URL(config.endpoint); - const push = async (item: string | Buffer): Promise => { - await new Promise(async (resolve) => { - const options = { - hostname: requestConfig.hostname, - path: requestConfig.path, - method: config.method, - port: requestConfig.port, - }; + const push = async (item: string | Buffer): Promise => { + await new Promise((resolve, reject) => { + const options = { + hostname: requestConfig.hostname, + path: requestConfig.path, + method: config.method, + port: requestConfig.port, + }; - const cb = (response: IncomingMessage): void => { - response.on("data", () => {}); - response.on("end", () => { - resolve(null); - }); - }; + const cb = (response: IncomingMessage): void => { + response.on("data", () => { }); + response.on("end", () => { + resolve(null); + }); + }; - const req = http.request(options, cb); - await new Promise((res) => req.write(item, res)); - await new Promise((res) => req.end(res)); - // res(null); - }); - }; + const req = http.request(options, cb); + req.write(item, async (err) => { + if (err) { + reject(err); + } + await new Promise((res) => req.end(res)); + }); + // res(null); + }); + }; - const end = async (): Promise => {}; + const end = async (): Promise => { }; - return { writer: { push, end }, init: async () => {} }; + return { writer: { push, end }, init: async () => { } }; }; diff --git a/src/connectors/kafka.ts b/src/connectors/kafka.ts index 1b2faa6..592fb22 100644 --- a/src/connectors/kafka.ts +++ b/src/connectors/kafka.ts @@ -2,148 +2,147 @@ import { readFileSync } from "node:fs"; import type { KafkaConfig, KafkaMessage, ProducerConfig } from "kafkajs"; import { Kafka } from "kafkajs"; import { - Config, - ReaderConstructor, - SimpleStream, - WriterConstructor, + ReaderConstructor, + SimpleStream, + WriterConstructor, } from "../connectors"; export interface SASLOptions { - mechanism: "plain"; - username: string; - password: string; + mechanism: "plain"; + username: string; + password: string; } export interface BrokerConfig { - hosts: string[]; - ssl?: boolean; - sasl?: SASLOptions; + hosts: string[]; + ssl?: boolean; + sasl?: SASLOptions; } export interface ConsumerConfig { - groupId: string; - metadataMaxAge?: number; - sessionTimeout?: number; - rebalanceTimeout?: number; - heartbeatInterval?: number; - maxBytesPerPartition?: number; - minBytes?: number; - maxBytes?: number; - maxWaitTimeInMs?: number; - allowAutoTopicCreation?: boolean; - maxInFlightRequests?: number; - readUncommitted?: boolean; - rackId?: string; + groupId: string; + metadataMaxAge?: number; + sessionTimeout?: number; + rebalanceTimeout?: number; + heartbeatInterval?: number; + maxBytesPerPartition?: number; + minBytes?: number; + maxBytes?: number; + maxWaitTimeInMs?: number; + allowAutoTopicCreation?: boolean; + maxInFlightRequests?: number; + readUncommitted?: boolean; + rackId?: string; } export interface CSTopic { - topic: string; - fromBeginning?: boolean; + topic: string; + fromBeginning?: boolean; } export interface KafkaReaderConfig { - topic: { - name: string; - fromBeginning?: boolean; - }; - consumer: ConsumerConfig; - broker: string | BrokerConfig; + topic: { + name: string; + fromBeginning?: boolean; + }; + consumer: ConsumerConfig; + broker: string | BrokerConfig; } export const startKafkaStreamReader: ReaderConstructor = ( - config, + config, ) => { - const brokerConfig: unknown = {}; - if (typeof config.broker === "string" || config.broker instanceof String) { - Object.assign( - brokerConfig, - JSON.parse(readFileSync(config.broker, "utf-8")), - ); - } else { - Object.assign(brokerConfig, config.broker); - } - if (brokerConfig && (brokerConfig).hosts) { - (brokerConfig).brokers = (brokerConfig).hosts; - } - - const kafka = new Kafka(brokerConfig); - - const consumer = kafka.consumer(config.consumer); - - const stream = new SimpleStream(async () => { - await consumer.disconnect(); - await consumer.stop(); - }); - - const init = async () => { - await consumer.connect(); - await consumer.subscribe({ - topic: config.topic.name, - fromBeginning: config.topic.fromBeginning, + const brokerConfig: unknown = {}; + if (typeof config.broker === "string" || config.broker instanceof String) { + Object.assign( + brokerConfig, + JSON.parse(readFileSync(config.broker, "utf-8")), + ); + } else { + Object.assign(brokerConfig, config.broker); + } + if (brokerConfig && (brokerConfig).hosts) { + (brokerConfig).brokers = (brokerConfig).hosts; + } + + const kafka = new Kafka(brokerConfig); + + const consumer = kafka.consumer(config.consumer); + + const stream = new SimpleStream(async () => { + await consumer.disconnect(); + await consumer.stop(); }); - consumer - .run({ - async eachMessage({ - topic, - message, - }: { - topic: string; - message: KafkaMessage; - }) { - if (topic === config.topic.name) { - const element = message.value?.toString() ?? ""; - stream.push(element).catch((error) => { - throw error; + const init = async () => { + await consumer.connect(); + await consumer.subscribe({ + topic: config.topic.name, + fromBeginning: config.topic.fromBeginning, + }); + + consumer + .run({ + async eachMessage({ + topic, + message, + }: { + topic: string; + message: KafkaMessage; + }) { + if (topic === config.topic.name) { + const element = message.value?.toString() ?? ""; + stream.push(element).catch((error) => { + throw error; + }); + } + }, + }) + .catch((error) => { + throw error; }); - } - }, - }) - .catch((error) => { - throw error; - }); - }; - - return { reader: stream, init }; + }; + + return { reader: stream, init }; }; export interface KafkaWriterConfig { - topic: { - name: string; - }; - producer: ProducerConfig; - broker: BrokerConfig | string; + topic: { + name: string; + }; + producer: ProducerConfig; + broker: BrokerConfig | string; } export const startKafkaStreamWriter: WriterConstructor = ( - config, + config, ) => { - const topic = config.topic.name; - - const brokerConfig: unknown = {}; - if (typeof config.broker === "string" || config.broker instanceof String) { - Object.assign( - brokerConfig, - JSON.parse(readFileSync(config.broker, "utf-8")), - ); - } else { - Object.assign(brokerConfig, config.broker); - } - if (brokerConfig && (brokerConfig).hosts) { - (brokerConfig).brokers = (brokerConfig).hosts; - } - - const kafka = new Kafka(brokerConfig); - - const producer = kafka.producer(config.producer); - const init = () => producer.connect(); - - const push = async (item: string): Promise => { - await producer.send({ topic, messages: [{ value: item }] }); - }; - - const end = async (): Promise => { - await producer.disconnect(); - }; - - return { writer: { push, end }, init }; + const topic = config.topic.name; + + const brokerConfig: unknown = {}; + if (typeof config.broker === "string" || config.broker instanceof String) { + Object.assign( + brokerConfig, + JSON.parse(readFileSync(config.broker, "utf-8")), + ); + } else { + Object.assign(brokerConfig, config.broker); + } + if (brokerConfig && (brokerConfig).hosts) { + (brokerConfig).brokers = (brokerConfig).hosts; + } + + const kafka = new Kafka(brokerConfig); + + const producer = kafka.producer(config.producer); + const init = () => producer.connect(); + + const push = async (item: string): Promise => { + await producer.send({ topic, messages: [{ value: item }] }); + }; + + const end = async (): Promise => { + await producer.disconnect(); + }; + + return { writer: { push, end }, init }; }; diff --git a/src/connectors/ws.ts b/src/connectors/ws.ts index 3c13d77..2821470 100644 --- a/src/connectors/ws.ts +++ b/src/connectors/ws.ts @@ -1,107 +1,106 @@ import { - Config, - ReaderConstructor, - SimpleStream, - WriterConstructor, + ReaderConstructor, + SimpleStream, + WriterConstructor, } from "../connectors"; import { RawData, WebSocket } from "ws"; import { WebSocketServer } from "ws"; export interface WsWriterConfig { - url: string; + url: string; } function _connectWs(url: string, res: (value: WebSocket) => void): void { - const ws = new WebSocket(url, {}); - ws.on("error", () => { - setTimeout(() => _connectWs(url, res), 300); - }); - - ws.on("ping", () => ws.pong()); - ws.on("open", () => { - res(ws); - }); + const ws = new WebSocket(url, {}); + ws.on("error", () => { + setTimeout(() => _connectWs(url, res), 300); + }); + + ws.on("ping", () => ws.pong()); + ws.on("open", () => { + res(ws); + }); } function connectWs(url: string): Promise { - return new Promise((res) => _connectWs(url, res)); + return new Promise((res) => _connectWs(url, res)); } export interface WsReaderConfig { - host: string; - port: number; + host: string; + port: number; } export const startWsStreamReader: ReaderConstructor = ( - config, + config, ) => { - const server = new WebSocketServer(config); - server.on("error", (error) => { - console.error("Ws server error:"); - console.error(error); - }); - - const connections: { socket: WebSocket; alive: boolean }[] = []; - - const interval = setInterval(() => { - connections.forEach((instance, i) => { - if (!instance) { - return; - } - if (!instance.alive) { - instance.socket.terminate(); - delete connections[i]; - - return; - } - - instance.socket.ping(); - instance.alive = false; - }); - }, 30_000); - - const reader = new SimpleStream( - () => - new Promise((res) => { - clearInterval(interval); - server.close(() => res()); - }), - ); - - server.on("connection", (ws) => { - const instance = { socket: ws, alive: true }; - connections.push(instance); - - ws.on("message", async (msg: RawData) => { - reader.push(msg.toString()).catch((error) => { - throw error; - }); + const server = new WebSocketServer(config); + server.on("error", (error) => { + console.error("Ws server error:"); + console.error(error); }); - ws.on("pong", () => { - instance.alive = true; + const connections: { socket: WebSocket; alive: boolean }[] = []; + + const interval = setInterval(() => { + connections.forEach((instance, i) => { + if (!instance) { + return; + } + if (!instance.alive) { + instance.socket.terminate(); + delete connections[i]; + + return; + } + + instance.socket.ping(); + instance.alive = false; + }); + }, 30_000); + + const reader = new SimpleStream( + () => + new Promise((res) => { + clearInterval(interval); + server.close(() => res()); + }), + ); + + server.on("connection", (ws) => { + const instance = { socket: ws, alive: true }; + connections.push(instance); + + ws.on("message", async (msg: RawData) => { + reader.push(msg.toString()).catch((error) => { + throw error; + }); + }); + + ws.on("pong", () => { + instance.alive = true; + }); }); - }); - return { reader, init: async () => {} }; + return { reader, init: async () => { } }; }; export const startWsStreamWriter: WriterConstructor = ( - config, + config, ) => { - let ws: WebSocket; - const init = async () => { - ws = await connectWs(config.url); - ws.on("open", () => console.log("open")); - }; + let ws: WebSocket; + const init = async () => { + ws = await connectWs(config.url); + ws.on("open", () => console.log("open")); + }; - const push = async (item: any): Promise => { - ws.send(item); - }; + const push = async (item: string | Buffer): Promise => { + ws.send(item); + }; - const end = async (): Promise => { - ws.close(); - }; + const end = async (): Promise => { + ws.close(); + }; - return { writer: { push, end }, init }; + return { writer: { push, end }, init }; }; diff --git a/src/index.ts b/src/index.ts index a0890f1..c14251d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,124 +12,124 @@ import { Quad, Term } from "@rdfjs/types"; import { extractShapes, Shapes } from "rdf-lens"; function safeJoin(a: string, b: string) { - if (b.startsWith("/")) { - return b; - } - return path.join(a, b); + if (b.startsWith("/")) { + return b; + } + return path.join(a, b); } type Processor = { - ty: Term; - file: string; - location: string; - func: string; - mapping: { parameters: { parameter: string; position: number }[] }; + ty: Term; + file: string; + location: string; + func: string; + mapping: { parameters: { parameter: string; position: number }[] }; }; export type Source = - | { type: "remote"; location: string } - | { - type: "memory"; - value: string; - baseIRI: string; + | { type: "remote"; location: string } + | { + type: "memory"; + value: string; + baseIRI: string; }; export type Extracted = { - processors: Processor[]; - quads: Quad[]; - shapes: Shapes; + processors: Processor[]; + quads: Quad[]; + shapes: Shapes; }; export async function extractProcessors( - source: Source, - apply?: { [label: string]: (item: any) => any }, + source: Source, + apply?: { [label: string]: (item: unknown) => unknown }, ): Promise { - const store = new Store(); - await load_store(source, store); - const quads = store.getQuads(null, null, null, null); - - const config = extractShapes(quads, apply); - const subjects = quads - .filter( - (x) => - x.predicate.equals(RDF.terms.type) && - x.object.equals(JsOntology.JsProcess), - ) - .map((x) => x.subject); - const processorLens = config.lenses[JsOntology.JsProcess.value]; - const processors = subjects.map((id) => processorLens.execute({ id, quads })); - return { processors, quads, shapes: config }; + const store = new Store(); + await load_store(source, store); + const quads = store.getQuads(null, null, null, null); + + const config = extractShapes(quads, apply); + const subjects = quads + .filter( + (x) => + x.predicate.equals(RDF.terms.type) && + x.object.equals(JsOntology.JsProcess), + ) + .map((x) => x.subject); + const processorLens = config.lenses[JsOntology.JsProcess.value]; + const processors = subjects.map((id) => processorLens.execute({ id, quads })); + return { processors, quads, shapes: config }; } export function extractSteps( - proc: Processor, - quads: Quad[], - config: Shapes, -): any[][] { - const out: any[][] = []; - - const subjects = quads - .filter( - (x) => x.predicate.equals(RDF.terms.type) && x.object.equals(proc.ty), - ) - .map((x) => x.subject); - const processorLens = config.lenses[proc.ty.value]; - - const fields = proc.mapping.parameters; - - for (let id of subjects) { - const obj = processorLens.execute({ id, quads }); - const functionArgs = new Array(fields.length); - - for (let field of fields) { - functionArgs[field.position] = obj[field.parameter]; + proc: Processor, + quads: Quad[], + config: Shapes, +): unknown[][] { + const out: unknown[][] = []; + + const subjects = quads + .filter( + (x) => x.predicate.equals(RDF.terms.type) && x.object.equals(proc.ty), + ) + .map((x) => x.subject); + const processorLens = config.lenses[proc.ty.value]; + + const fields = proc.mapping.parameters; + + for (const id of subjects) { + const obj = processorLens.execute({ id, quads }); + const functionArgs = new Array(fields.length); + + for (const field of fields) { + functionArgs[field.position] = obj[field.parameter]; + } + + out.push(functionArgs); } - out.push(functionArgs); - } - - return out; + return out; } export async function jsRunner() { - const args = getArgs(); - const cwd = process.cwd(); - - const source: Source = { - location: safeJoin(cwd, args.input).replaceAll("\\", "/"), - type: "remote", - }; - - const factory = new ChannelFactory(); - /// Small hack, if something is extracted from these types, that should be converted to a reader/writer - const apply: { [label: string]: (item: any) => any } = {}; - apply[Conn.ReaderChannel.value] = factory.createReader.bind(factory); - apply[Conn.WriterChannel.value] = factory.createWriter.bind(factory); - - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source, apply); - - LOG.main("Found %d processors", processors.length); - - const starts = []; - for (let proc of processors) { - const argss = extractSteps(proc, quads, config); - const jsProgram = await import("file://" + proc.file); - process.chdir(proc.location); - for (let args of argss) { - starts.push(await jsProgram[proc.func](...args)); + const args = getArgs(); + const cwd = process.cwd(); + + const source: Source = { + location: safeJoin(cwd, args!.input).replaceAll("\\", "/"), + type: "remote", + }; + + const factory = new ChannelFactory(); + /// Small hack, if something is extracted from these types, that should be converted to a reader/writer + const apply: { [label: string]: (item: unknown) => unknown } = {}; + apply[Conn.ReaderChannel.value] = factory.createReader.bind(factory); + apply[Conn.WriterChannel.value] = factory.createWriter.bind(factory); + + const { + processors, + quads, + shapes: config, + } = await extractProcessors(source, apply); + + LOG.main("Found %d processors", processors.length); + + const starts = []; + for (const proc of processors) { + const argss = extractSteps(proc, quads, config); + const jsProgram = await import("file://" + proc.file); + process.chdir(proc.location); + for (const args of argss) { + starts.push(await jsProgram[proc.func](...args)); + } } - } - await factory.init(); + await factory.init(); - for (let s of starts) { - if (s && typeof s === "function") { - s(); + for (const s of starts) { + if (s && typeof s === "function") { + s(); + } } - } } diff --git a/src/util.ts b/src/util.ts index dff7b44..25ae309 100644 --- a/src/util.ts +++ b/src/util.ts @@ -10,39 +10,39 @@ import { Quad, Term } from "@rdfjs/types"; import debug from "debug"; export const LOG = (function () { - const main = debug("js-runner"); - const channel = main.extend("channel"); - const util = main.extend("util"); + const main = debug("js-runner"); + const channel = main.extend("channel"); + const util = main.extend("util"); - return { main, channel, util }; + return { main, channel, util }; })(); export function toArray(stream: stream.Readable): Promise { - const output: T[] = []; - return new Promise((res, rej) => { - stream.on("data", (x) => output.push(x)); - stream.on("end", () => res(output)); - stream.on("close", () => res(output)); - stream.on("error", rej); - }); + const output: T[] = []; + return new Promise((res, rej) => { + stream.on("data", (x) => output.push(x)); + stream.on("end", () => res(output)); + stream.on("close", () => res(output)); + stream.on("error", rej); + }); } export const OWL = createUriAndTermNamespace( - "http://www.w3.org/2002/07/owl#", - "imports", + "http://www.w3.org/2002/07/owl#", + "imports", ); export const CONN2 = createUriAndTermNamespace( - "https://w3id.org/conn#", - "install", - "build", - "GitInstall", - "LocalInstall", - "url", - "procFile", - "path", - "EnvVariable", - "envKey", - "envDefault", + "https://w3id.org/conn#", + "install", + "build", + "GitInstall", + "LocalInstall", + "url", + "procFile", + "path", + "EnvVariable", + "envKey", + "envDefault", ); export const { namedNode, literal } = DataFactory; @@ -51,66 +51,66 @@ export type Keyed = { [Key in keyof T]: Term | undefined }; export type Map = (value: V, key: K, item: T) => O; async function get_readstream(location: string): Promise { - if (location.startsWith("https")) { - return new Promise((res) => { - https.get(location, res); - }); - } else if (location.startsWith("http")) { - return new Promise((res) => { - http.get(location, res); - }); - } else { - return createReadStream(location); - } + if (location.startsWith("https")) { + return new Promise((res) => { + https.get(location, res); + }); + } else if (location.startsWith("http")) { + return new Promise((res) => { + http.get(location, res); + }); + } else { + return createReadStream(location); + } } export async function load_quads(location: string, baseIRI?: string) { - try { - LOG.util("Loading quads %s", location); - const parser = new StreamParser({ baseIRI: baseIRI || location }); - const rdfStream = await get_readstream(location); - rdfStream.pipe(parser); + try { + LOG.util("Loading quads %s", location); + const parser = new StreamParser({ baseIRI: baseIRI || location }); + const rdfStream = await get_readstream(location); + rdfStream.pipe(parser); - const quads: Quad[] = await toArray(parser); - return quads; - } catch (ex) { - console.error("Failed to load_quads", location, baseIRI); - console.error(ex); - return []; - } + const quads: Quad[] = await toArray(parser); + return quads; + } catch (ex) { + console.error("Failed to load_quads", location, baseIRI); + console.error(ex); + return []; + } } function load_memory_quads(value: string, baseIRI: string) { - const parser = new Parser({ baseIRI }); - return parser.parse(value); + const parser = new Parser({ baseIRI }); + return parser.parse(value); } const loaded = new Set(); export async function load_store( - location: Source, - store: Store, - recursive = true, + location: Source, + store: Store, + recursive = true, ) { - if (loaded.has(location)) return; - loaded.add(location); + if (loaded.has(location)) return; + loaded.add(location); - const quads = - location.type === "remote" - ? await load_quads(location.location) - : load_memory_quads(location.value, location.baseIRI); + const quads = + location.type === "remote" + ? await load_quads(location.location) + : load_memory_quads(location.value, location.baseIRI); - store.addQuads(quads); + store.addQuads(quads); - if (recursive) { - const loc = - location.type === "remote" ? location.location : location.baseIRI; - const other_imports = store.getObjects( - namedNode(loc), - OWL.terms.imports, - null, - ); - for (let other of other_imports) { - await load_store({ location: other.value, type: "remote" }, store, true); + if (recursive) { + const loc = + location.type === "remote" ? location.location : location.baseIRI; + const other_imports = store.getObjects( + namedNode(loc), + OWL.terms.imports, + null, + ); + for (const other of other_imports) { + await load_store({ location: other.value, type: "remote" }, store, true); + } } - } } From 05d645207f0af14bfd77533a24e339b51c2ae08e Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Tue, 30 Jul 2024 23:43:01 +0200 Subject: [PATCH 02/10] Use new prefix on README --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c45578b..1770e03 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,12 @@ Typescript/Javascript executor for an [RDF-Connect](https://rdf-connect.github.i ## Process definition -Each js process must have `js:file`, `js:function` and `js:mapping` objects. +Each js process must have `rdfc-js:file`, `rdfc-js:function` and `rdfc-js:mapping` objects. -- `js:file` points to the location of the main javascript file, containing the function. -- `js:location` points to the starting location for `js:file` relative from the current file. -- `js:function` points to the function name in the file. -- `js:mapping` is a `fno:Mapping` object that links properties to function arguments. +- `rdfc-js:file` points to the location of the main javascript file, containing the function. +- `rdfc-js:location` points to the starting location for `js:file` relative from the current file. +- `rdfc-js:function` points to the function name in the file. +- `rdfc-js:mapping` is a `fno:Mapping` object that links properties to function arguments. When you declare a new js process, it is required to add a SHACL shape. Each `sh:property` is accounted for, noting the type `sh:class` or `sh:datatype`. @@ -22,9 +22,9 @@ Example definitions are available in `processor/configs/*.ttl`. In a js pipeline you can use all declared js processes, as defined in their SHACL shapes. -An example can be found in `input.ttl`, here a `js:Send` process and a `js:Resc` process are defined. -`js:Send` takes in a message to send, and a channel to send it to. -`js:Resc` only takes a channel to read from. +An example can be found in `input.ttl`, here a `rdfc-js:Send` process and a `rdfc-js:Resc` process are defined. +`rdfc-js:Send` takes in a message to send, and a channel to send it to. +`rdfc-js:Resc` only takes a channel to read from. (implementation can be found in `procossor/test.js`) @@ -37,4 +37,4 @@ tsc bun bin/js-runner.js input.ttl ``` -This example input configuration file uses `owl:imports` to specify additional configuration files. \ No newline at end of file +This example input configuration file uses `owl:imports` to specify additional configuration files. From 33480bf5b5e00314cfa8a6d9c37094f000c086cf Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sun, 4 Aug 2024 18:42:17 +0200 Subject: [PATCH 03/10] Changes include: - Update dependencies - Migrate to new RDF-Connect ontology https://w3id.org/rdf-connect --- bun.lockb | Bin 205128 -> 264890 bytes channels/file.ttl | 37 - channels/http.ttl | 59 - channels/kafka.ttl | 98 - channels/ws.ttl | 33 - input.ttl | 41 +- ontology.ttl | 190 +- package-lock.json | 8702 ++++++++++++++++++++++------------ package.json | 47 +- processor/echo.ttl | 71 +- processor/resc.ttl | 59 +- processor/send.ttl | 73 +- processor/test.js | 45 +- src/connectors.ts | 47 +- src/index.ts | 20 +- src/util.ts | 100 +- test/configuration.test.ts | 64 +- test/connectors/file.test.ts | 6 +- test/connectors/http.test.ts | 16 +- test/connectors/ws.test.ts | 6 +- test/models.test.ts | 54 +- test/processors.test.ts | 116 +- 22 files changed, 6051 insertions(+), 3833 deletions(-) delete mode 100644 channels/file.ttl delete mode 100644 channels/http.ttl delete mode 100644 channels/kafka.ttl delete mode 100644 channels/ws.ttl diff --git a/bun.lockb b/bun.lockb index 4717593cfe3a04ea09fd5cb62b38ae8028915281..c0edf6f4699a1150d3b455dc3b7e17735bc62226 100755 GIT binary patch literal 264890 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 Xr#pEt%Ip=}n2HkBDsKHQ{pbGyVEK@q delta 61055 zcmeFZcT^P3);`)ZGQbE(juJ(J3JNHahaf0fP@;;GhMa=}0s|rn`l?{74d$E^Vnh%T z6C&oEGm2u)3f#S?dpzU0XMOiuzx7+|{&RZ0%~Q{=s$IKw?Me;44NDcyo{+5?K4e*Y zDSLK=*=}}~{%+UEmyVlXXDV!N^^@wldAsC9^pf(!`uzxexYeP00)9WXkkCJr38G|1 zHl1!|5k!CBTqrOA@Bnbcd_Z|X6VM_9m=zmmp2APdo}QS)&(0x;ED3@@JsKQn0x&x< zJ~1sWorngx0`SWqm&1DesF)mqd1Cf(Nm`KsAZBy}Dgx?51zErnDS{XXm=Tqezz5rc zK#qo(0b=*{Au17lkOe}NW5d&UDU`?Z zqjTdyZz|(q@L2UzRl#BKiVkG21k?r;Fgy-W6Sya!F5qCm!GIEg`hYK>ZIqt`90a%t zP!Dhpg9%K&7sJf~QNI$P(4XnqIWgJU0-{unc34_eT6$tELGZJqa}!fy30Y`e2`c>1 zphxsMpbGG-fGBTf_)aE&IU}FL$TI*zb;%TldjP5fAHm4A0hI{>Q6kM0_zJnG_z563 zbRG~D90A0T+6br$SjFTQF!^x|4+6ycF;Ou%e#AS*@h=#(2Djlrq^6|gV}34#B|%*zeKr9`d6&1sW zC_K%`WrxvIXeuD)_d-4FPGYt>HbkhJ(e>Yg9HOrzE-E`G6S|ef&&^JZ%O{pYKDueL zIqjY;fY4n*$pfZBY+{yBQ}%GWfv;dDHn1Jc#s*^&(vuToqq1O8h=sBlaU*Dh-UH%V z@b3mkrRAqa<-{c9WSgg@$MT6~U<~TpWknm1p9TU5En++fFqAw1(QmPdadDVs103gm zR2I%if-nJ&JyT~;iotJ|wEPYrPSQ=*^rVy>O~-OZ7C$E^k)I_CB*wF@$14MH5C_A?!(-%c7xsSCbB z-*8Iuvr`h&atPwP3qcqGzXOPiQ6q!ifEW?$0CBN-??x{^`<-cR)EIg~`~pNbbOYje zR6u!Hc1khTm%d=dnaG?pHy^t2e9aKwzPs0>)k ziNv%7epX^mHtazuiSY?J)1Vx>1t#xwEGOYf^SG3#oE&~EG1P_Da}ng&fuwA6;g~|8 zWJF~NviYr$f&Tm9MdKSl^y6G_x@TxmR7y6%_MtgH8)5`ZDqwh2lCWJOH!IORDVrcN za?|o-AcpmQ>7GggYJomkFa(#3feiM7=LTRzeS`!W@Pffj{I<* zM;HHl#GPT}y94MRr|_qzfkTLmz_ENagDU`0FK&OhUlUDC#T|gcjP#hCti&`vKRY)k z5qch%m=j7`tM#hQ2um2j*yLkU6yPy!J53DIPI7xFjH2&02bKb)4|gM6%? z8kNj9hvg@mpE{kNMG$V2=nm#brQq}>+Cv2Na�bC_sgAlj)(@1007$6x~-rt|U|# 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 diff --git a/channels/file.ttl b/channels/file.ttl deleted file mode 100644 index 8f786c1..0000000 --- a/channels/file.ttl +++ /dev/null @@ -1,37 +0,0 @@ -@prefix : . -@prefix rdfs: . -@prefix sh: . -@prefix xsd: . - -:FileWriterChannel rdfs:subClassOf :WriterChannel. -:FileReaderChannel rdfs:subClassOf :ReaderChannel. -[ ] a sh:NodeShape; - sh:targetClass :FileReaderChannel, :FileWriterChannel; - sh:property [ - sh:path :filePath; - sh:name "path"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:string; - sh:description "Path of the used file"; - ], [ - sh:path :fileOnReplace; - sh:name "onReplace"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:boolean; - sh:description "Boolean indicating if the files is always replaced, or appended to"; - ], [ - sh:path :fileReadFirstContent; - sh:name "readFirstContent"; - sh:maxCount 1; - sh:datatype xsd:boolean; - sh:description "Boolean indicating whether or not the initial content is also a message"; - ], [ - sh:path :fileEncoding; - sh:name "encoding"; - sh:maxCount 1; - sh:datatype xsd:string; - sh:description "The encoding used for the file"; - ]. - diff --git a/channels/http.ttl b/channels/http.ttl deleted file mode 100644 index 3237be2..0000000 --- a/channels/http.ttl +++ /dev/null @@ -1,59 +0,0 @@ -@prefix : . -@prefix sh: . -@prefix xsd: . -@prefix rdfs: . - -:HttpReaderChannel rdfs:subClassOf :ReaderChannel. -:HttpWriterChannel rdfs:subClassOf :WriterChannel. -[ ] a sh:NodeShape; - sh:targetClass :HttpReaderChannel; - sh:property [ - sh:path :httpEndpoint; - sh:name "endpoint"; - sh:maxCount 1; - sh:datatype xsd:string; - sh:description "Used endpoint"; - ], [ - sh:path :httpPort; - sh:name "port"; - sh:maxCount 1; - sh:datatype xsd:integer; - sh:description "Used port"; - ], [ - sh:path :binary; - sh:name "binary"; - sh:maxCount 1; - sh:datatype xsd:boolean; - sh:description "Stream raw bytes if true"; - ], [ - sh:path :waitHandled; - sh:name "waitHandled"; - sh:maxCount 1; - sh:datatype xsd:boolean; - sh:description "Wait for handlers to be have handled the incoming message"; - ], [ - sh:path :responseCode; - sh:name "responseCode"; - sh:maxCount 1; - sh:datatype xsd:integer; - sh:description "Specify the expected response code (default 200)"; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :HttpWriterChannel; - sh:property [ - sh:path :httpEndpoint; - sh:name "endpoint"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:string; - sh:description "Used endpoint"; - ], [ - sh:path :httpMethod; - sh:name "method"; - sh:minCount 1; - sh:maxCount 1; - sh:datatype xsd:string; - sh:description "Used method"; - ]. - diff --git a/channels/kafka.ttl b/channels/kafka.ttl deleted file mode 100644 index 9082b83..0000000 --- a/channels/kafka.ttl +++ /dev/null @@ -1,98 +0,0 @@ -@prefix : . -@prefix sh: . -@prefix xsd: . -@prefix rdfs: . - -:KafkaReaderChannel rdfs:subClassOf :ReaderChannel. -:KafkaReaderChannelShape a sh:NodeShape; - sh:targetClass :KafkaReaderChannel; - sh:property [ - sh:path :kafkaTopic; - sh:name "topic"; - sh:minCount 1; - sh:maxCount 1; - sh:class :KafkaTopic; - sh:description "Information about the used topic"; - ], [ - sh:path :kafkaConsumer; - sh:name "consumer"; - sh:minCount 1; - sh:maxCount 1; - sh:class :KafkaConsumer; - sh:description "Information about the kafka consumer"; - ], [ - sh:path :kafkaBroker; - sh:name "broker"; - sh:minCount 1; - sh:maxCount 1; - sh:class :KafkaBroker; - sh:description "Information about the kafka broker"; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :KafkaTopic; - sh:property [ - sh:path :topicName; - sh:name "name"; - sh:minCount 1; - sh:maxCount 1; - sh:datatype xsd:string; - sh:description "Name of the topic"; - ], [ - sh:path :topicFromBeginning; - sh:name "fromBeginning"; - sh:maxCount 1; - sh:datatype xsd:boolean; - sh:description "Restart the topic from the beginning"; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :KafkaConsumer; - sh:property [ - sh:path :groupId; - sh:name "groupId"; - sh:minCount 1; - sh:maxCount 1; - sh:datatype xsd:string; - sh:description "Group identifier"; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :KafkaBroker; - sh:property [ - sh:path :brokerHost; - sh:name "hosts"; - sh:minCount 1; - sh:datatype xsd:string; - sh:description "Broker host to connect to"; - ]. - -:KafkaWriterChannel rdfs:subClassOf :WriterChannel. -[ ] a sh:NodeShape; - sh:targetClass :KafkaWriterChannel; - sh:property [ - sh:path :kafkaTopic; - sh:name "topic"; - sh:minCount 1; - sh:maxCount 1; - sh:class :KafkaTopic; - sh:description "Information about the used topic"; - ], [ - sh:path :kafkaBroker; - sh:name "broker"; - sh:minCount 1; - sh:maxCount 1; - sh:class :KafkaBroker; - sh:description "Information about the kafka broker"; - ], [ - sh:path :kafkaProducer; - sh:name "producer"; - sh:minCount 1; - sh:maxCount 1; - sh:class :KafkaProducer; - sh:description "Information about the kafka producer"; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :KafkaProducer. - diff --git a/channels/ws.ttl b/channels/ws.ttl deleted file mode 100644 index 590d37c..0000000 --- a/channels/ws.ttl +++ /dev/null @@ -1,33 +0,0 @@ -@prefix : . -@prefix sh: . -@prefix xsd: . -@prefix rdfs: . - -:WsReaderChannel rdfs:subClassOf :ReaderChannel. -:WsWriterChannel rdfs:subClassOf :WriterChannel. -[ ] a sh:NodeShape; - sh:targetClass :WsReaderChannel; - sh:property [ - sh:name "url"; - sh:path :wsUrl; - sh:datatype xsd:string; - sh:maxCount 1; - sh:minCount 1; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :WsWriterChannel; - sh:property [ - sh:name "port"; - sh:path :wsPort; - sh:datatype xsd:integer; - sh:maxCount 1; - sh:minCount 1; - ], [ - sh:name "host"; - sh:path :wsHost; - sh:datatype xsd:string; - sh:maxCount 1; - sh:minCount 1; - ]. - diff --git a/input.ttl b/input.ttl index 48668a5..2a26e91 100644 --- a/input.ttl +++ b/input.ttl @@ -1,27 +1,26 @@ -@prefix js: . -@prefix ws: . -@prefix : . -@prefix owl: . -@prefix rdfs: . -@prefix xsd: . -@prefix sh: . +@prefix rdfc-js: . +@prefix rdfc: . +@prefix owl: . +@prefix rdfs: . +@prefix xsd: . +@prefix sh: . -<> owl:imports <./channels/ws.ttl>. <> owl:imports <./processor/echo.ttl>, - <./processor/send.ttl>, - <./processor/resc.ttl>, - <./ontology.ttl>. + <./processor/send.ttl>, + <./processor/resc.ttl>, + <./ontology.ttl> . -[ ] a :Channel; - :reader ; - :writer . +[ ] a rdfc-js:JSChannel ; + rdfc:reader ; + rdfc:writer . - a js:JsReaderChannel. - a js:JsWriterChannel. -[ ] a js:Send; - js:msg "Hello"; - js:sendWriter . + a rdfc-js:JSReaderChannel . + a rdfc-js:JSWriterChannel . -[ ] a js:Resc; - js:rescReader . +[ ] a rdfc-js:Send ; + rdfc-js:msg "Hello" ; + rdfc-js:sendWriter . + +[ ] a rdfc-js:Resc ; + rdfc-js:rescReader . diff --git a/ontology.ttl b/ontology.ttl index 3b359e4..2fb18ae 100644 --- a/ontology.ttl +++ b/ontology.ttl @@ -1,169 +1,21 @@ -@prefix js: . -@prefix fno: . -@prefix fnom: . -@prefix xsd: . -@prefix : . -@prefix sh: . -@prefix rdfs: . -@prefix rdf: . -@prefix dc: . -@prefix rdfl: . - -[ ] a sh:NodeShape; - sh:targetClass :Channel; - sh:property [ - sh:path ( ); - sh:name "id"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:iri; - ], [ - sh:path :reader; - sh:name "reader"; - sh:maxCount 1; - sh:datatype xsd:iri; - ], [ - sh:path :writer; - sh:name "writer"; - sh:maxCount 1; - sh:datatype xsd:iri; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :ReaderChannel; - sh:property [ - sh:path ( ); - sh:name "id"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:iri; - ], [ - sh:path rdf:type; - sh:name "ty"; - sh:maxCount 1; - sh:datatype xsd:iri; - ], [ - sh:path ( ); - sh:name "config"; - sh:maxCount 1; - sh:minCount 1; - sh:class rdfl:TypedExtract; - ]. - -[ ] a sh:NodeShape; - sh:targetClass :WriterChannel; - sh:property [ - sh:path ( ); - sh:name "id"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:iri; - ], [ - sh:path rdf:type; - sh:name "ty"; - sh:maxCount 1; - sh:minCount 1; - sh:datatype xsd:iri; - ], [ - sh:path ( ); - sh:name "config"; - sh:maxCount 1; - sh:minCount 1; - sh:class rdfl:TypedExtract; - ]. - -js:JsChannel rdfs:subClassOf :Channel. -js:JsReaderChannel rdfs:subClassOf :ReaderChannel. -[ ] a sh:NodeShape; - sh:targetClass js:JsReaderChannel; - sh:property [ - sh:path [ sh:inversePath :reader ]; - sh:name "channel"; - sh:maxCount 1; - sh:minCount 1; - sh:class :Channel; - ]. - -js:JsWriterChannel rdfs:subClassOf :WriterChannel. -[ ] a sh:NodeShape; - sh:targetClass js:JsWriterChannel; - sh:property [ - sh:path [ sh:inversePath :writer ]; - sh:name "channel"; - sh:maxCount 1; - sh:minCount 1; - sh:class :Channel; - ]. - -# -js:JsChannel a :Channel; - dc:title "Javascript in memory channel"; - dc:description "Channel only used by the JsRunner, enabling fast in memory communication."; - :reader :JsReaderChannel; - :writer :JsWriterChannel. - -js:JsProcess a :ProcessClass; - dc:title "Javascript Runner"; - dc:description "The JSRunner is one of the most feature rich runners of the connector architecture. It enables lifting javascript functions to connector architecture components. It allows for fast in memory communication between these processors with the js:JsChannel. More information can be found at https://the-connector-architecture.github.io/site/."; - :supportsChannel :WsChannel, - :JsChannel, - :FileChannel, - :KafkaChannel, - :HttpChannel. - -[ ] a sh:NodeShape; - sh:targetClass fno:Mapping; - sh:property [ - sh:class fnom:PositionParameterMapping; - sh:path fno:parameterMapping; - sh:name "parameters"; - ]. - -[ ] a sh:NodeShape; - sh:targetClass fnom:PositionParameterMapping; - sh:property [ - sh:datatype xsd:string; - sh:path fnom:functionParameter; - sh:name "parameter"; - sh:maxCount 1; - ], [ - sh:datatype xsd:integer; - sh:path fnom:implementationParameterPosition; - sh:name "position"; - sh:maxCount 1; - ]. - -js:JsProcessorShape a sh:NodeShape; - sh:targetClass js:JsProcess; - sh:property [ - sh:datatype xsd:iri; - sh:path ( ); - sh:name "ty"; - sh:maxCount 1; - sh:minCount 1; - ], [ - sh:datatype xsd:string; - sh:path js:file; - sh:name "file"; - sh:maxCount 1; - sh:minCount 1; - ], [ - sh:datatype xsd:string; - sh:path js:location; - sh:name "location"; - sh:maxCount 1; - sh:minCount 1; - ], [ - sh:datatype xsd:string; - sh:path js:function; - sh:name "func"; - sh:maxCount 1; - sh:minCount 1; - ], [ - sh:class fno:Mapping; - sh:path js:mapping; - sh:name "mapping"; - sh:maxCount 1; - sh:minCount 1; - ]. - +@prefix owl: . +@prefix xsd: . +@prefix rdfc: . +@prefix rdfc-js: . +@prefix dc: . + +<> owl:imports rdfc: . + +rdfc-js:IDLab_JSRunner a rdfc-js:Runner ; + dc:title "JavaScript Runner instance" ; + dc:description """ + The JavaScript Runner is one of the most feature rich runners in the RDF-Connect framework. + It enables lifting javascript functions to RDF-Connect processors. + It allows for fast in-memory communication between these processors with the rdfc-js:Channel. + More information can be found at https://github.com/rdf-connect. + """; + rdfc:supportsChannel rdfc-js:Channel, + rdfc:FileChannel, + rdfc:HttpChannel, + rdfc:KafkaChannel, + rdfc:WebSocketChannel . diff --git a/package-lock.json b/package-lock.json index 0b40acc..6099ba7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,57 +1,59 @@ { - "name": "@ajuvercr/js-runner", + "name": "@rdfc/js-runner", "version": "0.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@ajuvercr/js-runner", + "name": "@rdfc/js-runner", "version": "0.2.1", "license": "MIT", "dependencies": { "@rdfjs/types": "^1.1.0", - "@treecg/types": "^0.4.5", - "command-line-args": "^5.2.1", - "command-line-usage": "^6.1.3", - "debug": "^4.3.4", + "@treecg/types": "^0.4.6", + "command-line-args": "^6.0.0", + "command-line-usage": "^7.0.3", + "debug": "^4.3.6", "kafkajs": "^2.2.4", - "n3": "^1.17.1", + "n3": "^1.20.4", + "rdf-dereference": "^3.0.0", "rdf-lens": "^1.2.8", "stream-to-array": "^2.3.0", - "ws": "^8.14.2" + "ws": "^8.18.0" }, "bin": { "js-runner": "bin/bundle.mjs" }, "devDependencies": { "@jest/globals": "^29.7.0", - "@knighted/duel": "^1.0.6", - "@types/command-line-args": "^5.2.2", - "@types/command-line-usage": "^5.0.3", + "@knighted/duel": "^1.0.8", + "@types/command-line-args": "^5.2.3", + "@types/command-line-usage": "^5.0.4", "@types/debug": "^4.1.12", - "@types/n3": "^1.16.3", - "@types/node": "^18.11.15", - "@types/ws": "^8.5.8", - "@typescript-eslint/eslint-plugin": "^7.5.0", - "@typescript-eslint/parser": "^7.4.0", - "@vitest/coverage-v8": "^1.4.0", + "@types/n3": "^1.16.4", + "@types/node": "^22.1.0", + "@types/ws": "^8.5.12", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "@vitest/coverage-v8": "^2.0.5", "dotenv": "^16.4.5", - "eslint": "^8.57.0", + "eslint": "^9.8.0", "eslint-config-prettier": "^9.1.0", - "husky": "^9.0.11", - "lint-staged": "^15.2.2", - "prettier": "^3.2.5", - "rollup": "^4.12.0", + "husky": "^9.1.4", + "lint-staged": "^15.2.8", + "prettier": "^3.3.3", + "rollup": "^4.20.0", "ts-node": "^10.9.2", - "tsc-alias": "^1.8.8", - "typescript": "^5.4.3", + "tsc-alias": "^1.8.10", + "typescript": "^5.5.4", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^1.4.0" + "vitest": "^2.0.5" } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -61,11 +63,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -73,28 +76,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.5", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -111,18 +116,20 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.24.5", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.25.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -132,13 +139,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -148,64 +156,36 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -215,76 +195,72 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "license": "MIT", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.5", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -295,8 +271,9 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -306,8 +283,9 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -319,37 +297,42 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -358,8 +341,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.5", - "license": "MIT", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dependencies": { + "@babel/types": "^7.25.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -369,8 +356,9 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -380,8 +368,9 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -391,8 +380,9 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -402,8 +392,9 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -413,8 +404,9 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -423,11 +415,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -438,8 +431,9 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -449,8 +443,9 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -460,8 +455,9 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -471,8 +467,9 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -482,8 +479,9 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -493,8 +491,9 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -504,8 +503,9 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -517,11 +517,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -531,31 +532,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -564,11 +564,12 @@ } }, "node_modules/@babel/types": { - "version": "7.24.5", - "license": "MIT", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -577,1404 +578,3483 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "license": "MIT", + "node_modules/@bergos/jsonparse": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.1.tgz", + "integrity": "sha512-vXIT0nzZGX/+yMD5bx2VhTzc92H55tPoehh1BW/FZHOndWGFddrH3MAfdx39FRc7irABirW6EQaGxIJYV6CGuA==", + "engines": [ + "node >= 0.2.0" + ], "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" + "buffer": "^6.0.3" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "license": "MIT", + "node_modules/@comunica/actor-abstract-mediatyped": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-mediatyped/-/actor-abstract-mediatyped-2.10.0.tgz", + "integrity": "sha512-0o6WBujsMnIVcwvRJv6Nj+kKPLZzqBS3On48rm01Rh9T1/My0E/buJMXwgcARKCfMonc2mJ9zxpPCh5ilGEU2A==", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@comunica/actor-abstract-parse": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-parse/-/actor-abstract-parse-2.10.0.tgz", + "integrity": "sha512-0puCWF+y24EDOOAUUVVbC+tOf4UV+LzEbqi8T5v25jcVGCXyTqfra+bDywfrcv3adrVp18jLCJ46ycaH5xhy9Q==", + "dependencies": { + "@comunica/core": "^2.10.0", + "readable-stream": "^4.4.2" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "license": "MIT", + "node_modules/@comunica/actor-dereference-fallback": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-fallback/-/actor-dereference-fallback-2.10.0.tgz", + "integrity": "sha512-RSc/ScPdC7l13aZjz/6r4niWA8WDETbzuESQKKSWXi/HAlFOyOxdrDADdayVY2oyeZHIQibeNRtSi2ItzU7OPQ==", "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "@comunica/bus-dereference": "^2.10.0", + "@comunica/core": "^2.10.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node_modules/@comunica/actor-dereference-file": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-file/-/actor-dereference-file-2.10.0.tgz", + "integrity": "sha512-WXfAyHm0M3+YbYEtLtasT6YHsrzTAevmH27ex8r51qKNj2LK74llpw4mSeea3xyjQR30jVnKBIJSxuSbN64Now==", + "dependencies": { + "@comunica/bus-dereference": "^2.10.0", + "@comunica/core": "^2.10.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "license": "MIT", + "node_modules/@comunica/actor-dereference-http": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-http/-/actor-dereference-http-2.10.2.tgz", + "integrity": "sha512-gdDo83W1TAgD2jx0kVbzZKzzt++L4Y4fbyTOH3duy6vx1EMGGZlNCp6I1uguepKEjNX4N0zhAcZzdJcv8A3XMA==", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "@comunica/bus-dereference": "^2.10.0", + "@comunica/bus-http": "^2.10.2", + "@comunica/core": "^2.10.0", + "cross-fetch": "^4.0.0", + "relative-to-absolute-iri": "^1.0.7", + "stream-to-string": "^1.2.0" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "node_modules/@comunica/actor-dereference-rdf-parse": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-rdf-parse/-/actor-dereference-rdf-parse-2.10.0.tgz", + "integrity": "sha512-ANWL6Bv+2WHUjVRS7hfkOfVBNJs8xYZ9KHlgBOQ94CKtQZB9uSMjdb1hLp/cQjiDmFIWLn0+GM5Xi0KFwBkVAw==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@comunica/bus-dereference": "^2.10.0", + "@comunica/bus-dereference-rdf": "^2.10.0", + "@comunica/bus-rdf-parse": "^2.10.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "license": "MIT", + "node_modules/@comunica/actor-http-fetch": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@comunica/actor-http-fetch/-/actor-http-fetch-2.10.2.tgz", + "integrity": "sha512-siHGx0TMVNb2gXvOroq0B3JE6uuS+4s+MsDkntqdBNVigwVYqLpNSKEaL5is8pputFfohJfDQY06lAHbfDNEcw==", "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@comunica/bus-http": "^2.10.2", + "@comunica/context-entries": "^2.10.0", + "@comunica/mediatortype-time": "^2.10.0", + "abort-controller": "^3.0.0", + "cross-fetch": "^4.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", + "node_modules/@comunica/actor-http-proxy": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@comunica/actor-http-proxy/-/actor-http-proxy-2.10.2.tgz", + "integrity": "sha512-3yUF8BCh4nwq8J6NRILEsyNrQNStkE9ggJ7hYwRfA1XcMgz1pANNaWJ2P2TEKH1jNinr23bL3JeuUZCm9Kz9dA==", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@comunica/bus-http": "^2.10.2", + "@comunica/context-entries": "^2.10.0", + "@comunica/mediatortype-time": "^2.10.0", + "@comunica/types": "^2.10.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@comunica/actor-rdf-parse-html": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html/-/actor-rdf-parse-html-2.10.0.tgz", + "integrity": "sha512-zgImXKpc+BN1i6lQiN1Qhlb1HbKdMIeJMOys6qbzRIijdK8GkGGChwhQp7Cso3lY1Nf4K7M3jPLZeQXeED2w7g==", + "dependencies": { + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/bus-rdf-parse-html": "^2.10.0", + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0", + "@rdfjs/types": "*", + "htmlparser2": "^9.0.0", + "readable-stream": "^4.4.2" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node_modules/@comunica/actor-rdf-parse-html-microdata": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-microdata/-/actor-rdf-parse-html-microdata-2.10.0.tgz", + "integrity": "sha512-JLfiDauq4SmpI6TDS4HaHzI6iJe1j8lSk5FRRYK6YVEu8eO28jPmxQJiOiwbQiYqsjsV7kON/WIZSoUELoI4Ig==", + "dependencies": { + "@comunica/bus-rdf-parse-html": "^2.10.0", + "@comunica/core": "^2.10.0", + "microdata-rdf-streaming-parser": "^2.0.1" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "license": "Apache-2.0", + "node_modules/@comunica/actor-rdf-parse-html-rdfa": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-rdfa/-/actor-rdf-parse-html-rdfa-2.10.0.tgz", + "integrity": "sha512-9K3iaws9+FGl50oZi53hqyzhwjNKZ3mIr2zg/TAJZoapKvc14cthH17zKSSJrqI/NgBStRmZhBBkXcwfu1CANw==", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" + "@comunica/bus-rdf-parse-html": "^2.10.0", + "@comunica/core": "^2.10.0", + "rdfa-streaming-parser": "^2.0.1" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "node_modules/@comunica/actor-rdf-parse-html-script": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-script/-/actor-rdf-parse-html-script-2.10.0.tgz", + "integrity": "sha512-7XYqWchDquWnBLjG7rmmY+tdE81UZ8fPCU0Hn+vI39/MikNOpaiyr/ZYFqhogWFa9SkjmH0a7idVUzmjiwKRZQ==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/bus-rdf-parse-html": "^2.10.0", + "@comunica/context-entries": "^2.10.0", + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0", + "@rdfjs/types": "*", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.7" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", + "node_modules/@comunica/actor-rdf-parse-jsonld": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-jsonld/-/actor-rdf-parse-jsonld-2.10.2.tgz", + "integrity": "sha512-K4fvD0zMU22KkQCqIFVT5Oy2FREEZ9CAo9u6kOcsMxEvg9aHGIM6hkaXR8I+1JCx1mDuEj3zQ8joR4tQh8fYCw==", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@comunica/bus-http": "^2.10.2", + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/context-entries": "^2.10.0", + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0", + "jsonld-context-parser": "^2.2.2", + "jsonld-streaming-parser": "^3.0.1", + "stream-to-string": "^1.2.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node_modules/@comunica/actor-rdf-parse-n3": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-n3/-/actor-rdf-parse-n3-2.10.0.tgz", + "integrity": "sha512-o1MAbwJxW4Br2WCZdhFoRmAiOP4mfogeQqJ4nqlsOkoMtQ45EvLHsotb3Kqhuk5V+vsTxyK5v/a4zylGtcU7VQ==", + "dependencies": { + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/types": "^2.10.0", + "n3": "^1.17.0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "license": "BSD-3-Clause" + "node_modules/@comunica/actor-rdf-parse-rdfxml": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-rdfxml/-/actor-rdf-parse-rdfxml-2.10.0.tgz", + "integrity": "sha512-HoJN52shXY3cvYtsS0cpin9KXpW3L7g1leebyCRSqnlnHdJv5D6G0Ep8vyt2xhquKNbOQ7LnP5VhiDiqz73XDg==", + "dependencies": { + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/types": "^2.10.0", + "rdfxml-streaming-parser": "^2.2.3" + } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "dev": true, - "license": "ISC", + "node_modules/@comunica/actor-rdf-parse-shaclc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-shaclc/-/actor-rdf-parse-shaclc-2.10.0.tgz", + "integrity": "sha512-i6tmuZuS+RtDiSXpQc3s/PxtCqwIguo4ANmVB20PK4VWgQgBwoPG7LlNcJ0xmuH/3Bv6C2Agn18PLF6dZX+fKw==", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/types": "^2.10.0", + "@rdfjs/types": "*", + "asynciterator": "^3.8.1", + "readable-stream": "^4.4.2", + "shaclc-parse": "^1.4.0", + "stream-to-string": "^1.2.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node_modules/@comunica/actor-rdf-parse-xml-rdfa": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-xml-rdfa/-/actor-rdf-parse-xml-rdfa-2.10.0.tgz", + "integrity": "sha512-68r/6B/fEyA1/OYleVuaPq47J+g4xJcJijpdL1wEj7CqjV+Xa+sDWRpNCyLcD/e1Y/g9UQmLz0ZnSpR00PFddA==", + "dependencies": { + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/types": "^2.10.0", + "rdfa-streaming-parser": "^2.0.1" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", + "node_modules/@comunica/bus-dereference": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-dereference/-/bus-dereference-2.10.0.tgz", + "integrity": "sha512-nWyQXiH7zbiPTVttWVKJHykhV4IuahfhfUwPx3Op+cVsK489Su84dnGeSmPkxTAFFuxe6wU6ZEH4i7PDu48YvQ==", "dependencies": { - "ansi-regex": "^6.0.1" - }, + "@comunica/actor-abstract-mediatyped": "^2.10.0", + "@comunica/actor-abstract-parse": "^2.10.0", + "@comunica/context-entries": "^2.10.0", + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0", + "readable-stream": "^4.4.2" + } + }, + "node_modules/@comunica/bus-dereference-rdf": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-dereference-rdf/-/bus-dereference-rdf-2.10.0.tgz", + "integrity": "sha512-WY/wPmFpO76wwJ2D5Aus43ZbYnBRLvQ0EOp4yywO0lBiq6F0JisjCVCM4EtWouOEAAfqEoIjHXGyC3gPWqm+SQ==", + "dependencies": { + "@comunica/bus-dereference": "^2.10.0", + "@comunica/bus-rdf-parse": "^2.10.0", + "@comunica/core": "^2.10.0", + "@rdfjs/types": "*" + } + }, + "node_modules/@comunica/bus-http": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@comunica/bus-http/-/bus-http-2.10.2.tgz", + "integrity": "sha512-MAYRF6uEBAuJ9dCPW2Uyne7w3lNwXFXKfa14XuPG5DFTDpgo/Z2pWupPrBsA1eIWMNJ6WOG6QyEv4rllSIBqlg==", + "dependencies": { + "@comunica/core": "^2.10.0", + "@smessie/readable-web-to-node-stream": "^3.0.3", + "is-stream": "^2.0.1", + "readable-stream-node-to-web": "^1.0.1", + "web-streams-ponyfill": "^1.4.2" + } + }, + "node_modules/@comunica/bus-http/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "license": "ISC", + "node_modules/@comunica/bus-init": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-init/-/bus-init-2.10.0.tgz", + "integrity": "sha512-hJejHa8sLVhQLFlduCVnhOd5aW3FCEz8wmWjyeLI3kiHFaQibnGVMhUuuNRX5f8bnnPuTdEiHc1nnYHuSi+j8A==", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" + "@comunica/core": "^2.10.0", + "readable-stream": "^4.4.2" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", + "node_modules/@comunica/bus-rdf-parse": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse/-/bus-rdf-parse-2.10.0.tgz", + "integrity": "sha512-EgCMZACfTG/+mayQpExWt0HoBT32BBVC1aS1lC43fXKBTxJ8kYrSrorVUuMACoh4dQVGTb+7j1j4K0hGNVzXGA==", "dependencies": { - "sprintf-js": "~1.0.2" + "@comunica/actor-abstract-mediatyped": "^2.10.0", + "@comunica/actor-abstract-parse": "^2.10.0", + "@comunica/core": "^2.10.0", + "@rdfjs/types": "*" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/@comunica/bus-rdf-parse-html": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse-html/-/bus-rdf-parse-html-2.10.0.tgz", + "integrity": "sha512-RZliz4TtKP63QggoohGuIkGb6lq0BoYJ4aztKtGldWtPAVP/pdEvlDpiZWLB/j19g7S2aDLNY/lJtZ5efM1tHQ==", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@comunica/core": "^2.10.0", + "@rdfjs/types": "*" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", + "node_modules/@comunica/config-query-sparql": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@comunica/config-query-sparql/-/config-query-sparql-2.7.0.tgz", + "integrity": "sha512-rMnFgT7cz9+0z7wV4OzIMY5qM9/Z0mTGrR8y2JokoHyyTcBGOSajFmy61XCSLMCsLLG8qDXsJ4ClCCky3TGfqA==" + }, + "node_modules/@comunica/context-entries": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/context-entries/-/context-entries-2.10.0.tgz", + "integrity": "sha512-lmCYCcXxW8C6ecFH2whZCt31NT1ejb0P/sbytK7f4ctyA06Q8iYFEcYE4eWOXMdpfkwkcnz31x9XL77OGeSC2Q==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0", + "@rdfjs/types": "*", + "jsonld-context-parser": "^2.2.2", + "sparqlalgebrajs": "^4.2.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", + "node_modules/@comunica/core": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/core/-/core-2.10.0.tgz", + "integrity": "sha512-onsGs2iKHUPRxxMOdx42vdxslk8q9FQZdRjQtHJ6SGiCpJwIL9ciBgPIOl2RL2YfzXHemr/0umeNOppRDcWhJA==", "dependencies": { - "p-locate": "^4.1.0" + "@comunica/types": "^2.10.0", + "immutable": "^4.1.0" }, "engines": { - "node": ">=8" + "node": ">=14.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", + "node_modules/@comunica/mediator-combine-pipeline": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-pipeline/-/mediator-combine-pipeline-2.10.0.tgz", + "integrity": "sha512-j7+/oUlbhKB4Rq6g9oNKU+e9cQL8U9z8tAUNhoXUSHajcr4huj0t1+riaOD109/DRWhV793ILhBDzgiZbHd7DA==", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/@comunica/mediator-combine-union": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-union/-/mediator-combine-union-2.10.0.tgz", + "integrity": "sha512-QbP4zP1i6nMDZ8teC0RoTz5E8pOpxDhWPBr1ylb2jzPUjPpMgrnbHYTondlN0Oau3SMEehItojg/LYDtPOP/GQ==", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "@comunica/core": "^2.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@comunica/mediator-number": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/mediator-number/-/mediator-number-2.10.0.tgz", + "integrity": "sha512-0T8D1HGTu5Sd8iKb2dBjc6VRc/U4A15TAN6m561ra9pFlP+w31kby0ZYP6WWBHBobbUsX1LCvnbRQaAC4uWwVw==", + "dependencies": { + "@comunica/core": "^2.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@comunica/mediator-race": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/mediator-race/-/mediator-race-2.10.0.tgz", + "integrity": "sha512-JiEtOLMkPnbjSLabVpE4VqDbu2ZKKnkUdATGBeWX+o+MjPw6c0hhw01RG4WY2rQhDyNl++nLQe3EowQh8xW9TA==", + "dependencies": { + "@comunica/core": "^2.10.0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@comunica/mediatortype-time": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/mediatortype-time/-/mediatortype-time-2.10.0.tgz", + "integrity": "sha512-nBz1exxrja1Tj8KSlSevG4Hw2u09tTh6gtNfVjI76i/e7muu4RUWVhi9b8PcwBNAfuUqRl+5OgOSa2X4W+6QlA==", + "dependencies": { + "@comunica/core": "^2.10.0" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "license": "MIT", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "license": "MIT", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@knighted/duel": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@knighted/specifier": "^1.0.1", - "find-up": "^6.3.0", - "glob": "^10.3.3", - "jsonc-parser": "^3.2.0", - "read-package-up": "^11.0.0" - }, - "bin": { - "duel": "dist/esm/duel.js" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16.19.0" - }, - "peerDependencies": { - "typescript": ">=4.0.0 || >=4.9.0-dev || >=5.3.0-dev || 5.4.0-dev || 5.5.0-dev" + "node": ">=12" } }, - "node_modules/@knighted/specifier": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.22.7", - "@babel/traverse": "^7.23.2", - "magic-string": "^0.30.1" - }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "license": "MIT", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "license": "MIT", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@rdfjs/types": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "@types/node": "*" + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.17.2", + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@treecg/types": { - "version": "0.4.6", - "license": "UNLICENSE", - "dependencies": { - "@rdfjs/types": "*", - "loglevel": "^1.8.1", - "loglevel-plugin-prefix": "^0.8.4", - "rdf-data-factory": "^1.1.0" + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "license": "MIT" + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "license": "MIT" + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@types/command-line-args": { - "version": "5.2.3", - "dev": true, - "license": "MIT" + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@types/command-line-usage": { - "version": "5.0.4", - "dev": true, - "license": "MIT" + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dependencies": { - "@types/ms": "*" + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "license": "MIT" + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "dev": true, - "license": "MIT", + "node_modules/@eslint/config-array": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", + "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", "dependencies": { - "@types/node": "*" + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "dev": true, - "license": "MIT", + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "dev": true, - "license": "MIT", + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "@types/istanbul-lib-report": "*" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, - "node_modules/@types/n3": { - "version": "1.16.4", - "dev": true, - "license": "MIT", + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dependencies": { - "@rdfjs/types": "^1.1.0", - "@types/node": "*" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@types/node": { - "version": "18.19.33", - "license": "MIT", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "undici-types": "~5.26.4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "dev": true, - "license": "MIT" + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@types/ws": { - "version": "8.5.10", - "dev": true, - "license": "MIT", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "@types/node": "*" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/@eslint/js": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", + "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "dev": true, - "license": "MIT" + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.9.0", - "license": "MIT", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.9.0", - "@typescript-eslint/type-utils": "7.9.0", - "@typescript-eslint/utils": "7.9.0", - "@typescript-eslint/visitor-keys": "7.9.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=10.10.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.9.0", - "license": "BSD-2-Clause", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "@typescript-eslint/scope-manager": "7.9.0", - "@typescript-eslint/types": "7.9.0", - "@typescript-eslint/typescript-estree": "7.9.0", - "@typescript-eslint/visitor-keys": "7.9.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.9.0", - "license": "MIT", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "@typescript-eslint/types": "7.9.0", - "@typescript-eslint/visitor-keys": "7.9.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "*" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.9.0", - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "7.9.0", - "@typescript-eslint/utils": "7.9.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=12.22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@typescript-eslint/types": { - "version": "7.9.0", - "license": "MIT", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead" + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=18.18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.9.0", - "license": "BSD-2-Clause", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { - "@typescript-eslint/types": "7.9.0", - "@typescript-eslint/visitor-keys": "7.9.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.9.0", - "license": "MIT", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.9.0", - "@typescript-eslint/types": "7.9.0", - "@typescript-eslint/typescript-estree": "7.9.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.9.0", - "license": "MIT", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "dependencies": { - "@typescript-eslint/types": "7.9.0", - "eslint-visitor-keys": "^3.4.3" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "license": "ISC" + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } }, - "node_modules/@vitest/coverage-v8": { - "version": "1.6.0", - "license": "MIT", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.4", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.4", - "istanbul-reports": "^3.1.6", - "magic-string": "^0.30.5", - "magicast": "^0.3.3", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "test-exclude": "^6.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "vitest": "1.6.0" + "engines": { + "node": ">=8" } }, - "node_modules/@vitest/expect": { - "version": "1.6.0", - "license": "MIT", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@vitest/runner": { - "version": "1.6.0", - "license": "MIT", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "p-locate": "^4.1.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=8" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "license": "MIT", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "yocto-queue": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=18" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "license": "MIT", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "p-limit": "^2.2.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=8" } }, - "node_modules/@vitest/spy": { - "version": "1.6.0", - "license": "MIT", - "dependencies": { - "tinyspy": "^2.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@vitest/utils": { - "version": "1.6.0", - "license": "MIT", - "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "license": "MIT", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "dependencies": { - "event-target-shim": "^5.0.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=6.5" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/acorn": { - "version": "8.11.3", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "license": "MIT", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "license": "MIT", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ansi-escapes": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=14.16" + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "license": "ISC", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/arg": { - "version": "4.1.3", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "license": "Python-2.0" - }, - "node_modules/array-back": { - "version": "3.1.0", - "license": "MIT", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { - "node": ">=6" + "node": ">=6.0.0" } }, - "node_modules/array-union": { + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@knighted/duel": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@knighted/duel/-/duel-1.0.8.tgz", + "integrity": "sha512-qOKDR0mbtH8tL6dgbX8ks8udBytF67TlD3k1QUO/Chj0NX/qXBlrWg7ox33IFwYJP7PDSHd6QjWNG2lYLlN4Rg==", + "dev": true, + "dependencies": { + "@knighted/specifier": "^1.0.1", + "find-up": "^6.3.0", + "glob": "^10.3.3", + "jsonc-parser": "^3.2.0", + "read-package-up": "^11.0.0" + }, + "bin": { + "duel": "dist/esm/duel.js" + }, + "engines": { + "node": ">=16.19.0" + }, + "peerDependencies": { + "typescript": ">=4.0.0 || >=4.9.0-dev || >=5.3.0-dev || >=5.4.0-dev || >=5.5.0-dev || next" + } + }, + "node_modules/@knighted/specifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@knighted/specifier/-/specifier-1.0.1.tgz", + "integrity": "sha512-LArFWJN7wGGLU1P3TeEHgO6wGKWEYq/o4/Yij7rnKk0ng1HbQn1wythI0E9Q7B3+7LRnposEtaeY9AZlE3Cg+Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.23.2", + "magic-string": "^0.30.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rdfjs/types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.0.tgz", + "integrity": "sha512-5zm8bN2/CC634dTcn/0AhTRLaQRjXDZs3QfcAsQKNturHT7XVWcKy/8p3P5gXl+YkZTAmy7T5M/LyiT/jbkENw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", + "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", + "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", + "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", + "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", + "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", + "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", + "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", + "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", + "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", + "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", + "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", + "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", + "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rubensworks/saxes": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", + "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.12" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@smessie/readable-web-to-node-stream": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smessie/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.3.tgz", + "integrity": "sha512-8FFE7psRtRWQT31/duqbmgnSf2++QLR2YH9kj5iwsHhnoqSvHdOY3SAN5e7dhc+60p2cNk7rv3HYOiXOapTEXQ==", + "dependencies": { + "process": "^0.11.10", + "readable-stream": "^4.5.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@treecg/types": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@treecg/types/-/types-0.4.6.tgz", + "integrity": "sha512-iL8rBhAX4INvfuHZzJ1RELh1i/fspviylENZTk6D2p/xDazY1pTkd+y/hxKYVWCC0jHNolDWRsH7ozwaFGNQKA==", + "dependencies": { + "@rdfjs/types": "*", + "loglevel": "^1.8.1", + "loglevel-plugin-prefix": "^0.8.4", + "rdf-data-factory": "^1.1.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, + "node_modules/@types/command-line-args": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", + "dev": true + }, + "node_modules/@types/command-line-usage": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz", + "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-link-header": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.7.tgz", + "integrity": "sha512-snm5oLckop0K3cTDAiBnZDy6ncx9DJ3mCRDvs42C884MbVYPP74Tiq2hFsSDRTyjK6RyDYDIulPiW23ge+g5Lw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, + "node_modules/@types/n3": { + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.4.tgz", + "integrity": "sha512-6PmHRYCCdjbbBV2UVC/HjtL6/5Orx9ku2CQjuojucuHvNvPmnm6+02B18YGhHfvU25qmX2jPXyYPHsMNkn+w2w==", + "dev": true, + "dependencies": { + "@rdfjs/types": "^1.1.0", + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", + "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "dependencies": { + "undici-types": "~6.13.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/sparqljs": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@types/sparqljs/-/sparqljs-3.1.11.tgz", + "integrity": "sha512-C6nWzeACV4owPvPvuFQU/m0MGiqhs8M56sm3okHOQz3DW593eZRU306xUIM/XvUIEPfc9Cn/AzaA1J5NpF1VpA==", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz", + "integrity": "sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.0.0", + "@typescript-eslint/type-utils": "8.0.0", + "@typescript-eslint/utils": "8.0.0", + "@typescript-eslint/visitor-keys": "8.0.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.0.0", + "@typescript-eslint/types": "8.0.0", + "@typescript-eslint/typescript-estree": "8.0.0", + "@typescript-eslint/visitor-keys": "8.0.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz", + "integrity": "sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.0", + "@typescript-eslint/visitor-keys": "8.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz", + "integrity": "sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.0.0", + "@typescript-eslint/utils": "8.0.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0.tgz", + "integrity": "sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz", + "integrity": "sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.0", + "@typescript-eslint/visitor-keys": "8.0.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0.tgz", + "integrity": "sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.0.0", + "@typescript-eslint/types": "8.0.0", + "@typescript-eslint/typescript-estree": "8.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz", + "integrity": "sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@vitest/coverage-v8": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.5.tgz", + "integrity": "sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.5", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.10", + "magicast": "^0.3.4", + "std-env": "^3.7.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "2.0.5" + } + }, + "node_modules/@vitest/expect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", + "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "dev": true, + "dependencies": { + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", + "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "dev": true, + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz", + "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", + "dev": true, + "dependencies": { + "@vitest/utils": "2.0.5", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz", + "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "2.0.5", + "magic-string": "^0.30.10", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", + "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "dev": true, + "dependencies": { + "tinyspy": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", + "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "2.0.5", + "estree-walker": "^3.0.3", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/array-union": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/asynciterator": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.9.0.tgz", + "integrity": "sha512-bwLLTAnoE6Ap6XdjK/j8vDk2Vi9p3ojk0PFwM0SwktAG1k8pfRJF9ng+mmkaRFKdZCQQlOxcWnvOmX2NQ1HV0g==" + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001647", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001647.tgz", + "integrity": "sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + }, + "node_modules/chai": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "dev": true, + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "engines": { + "node": ">= 16" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/command-line-args": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.0.tgz", + "integrity": "sha512-zDdHxHzlCp/gA1gy0VtPK3YL0Aob3ijJdwZ7H3HSl55hh8EziLtRlyj/od8EGRJfX8IjussC/mQkScl2Ms5Suw==", + "dependencies": { + "array-back": "^6.2.2", + "find-replace": "^5.0.1", + "lodash.camelcase": "^4.3.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/command-line-usage": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", + "dependencies": { + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", + "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz", + "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.17.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.8.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "license": "MIT", + "node_modules/eslint/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "engines": { - "node": "*" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-3-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "estraverse": "^5.2.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=4.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "license": "MIT", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" } }, - "node_modules/braces": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { - "node": ">=8" + "node": ">=0.8.x" } }, - "node_modules/browserslist": { - "version": "4.23.0", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/bser": { - "version": "2.1.1", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "node-int64": "^0.4.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/cac": { - "version": "6.7.14", - "license": "MIT", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "license": "MIT", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001618", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chai": { - "version": "4.4.1", - "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dependencies": { + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=16.0.0" } }, - "node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/check-error": { - "version": "1.0.3", - "license": "MIT", + "node_modules/find-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.1.tgz", + "integrity": "sha512-o5/Y8HrCNRuFF5rdNTkX8Vhv6kTFTV0t1zIoigwlCdbkA9qaapRzxvWPND2VvlFa9LBI05Q1i8ml/saMqkOJUQ==", "dependencies": { - "get-func-name": "^2.0.2" + "array-back": "^6.2.2" }, "engines": { - "node": "*" + "node": ">=14" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "license": "MIT", + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, + "engines": { + "node": ">=18" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dependencies": { - "is-glob": "^4.0.1" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">= 6" + "node": ">=16" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" }, - "node_modules/cli-cursor": { - "version": "4.0.0", - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, "dependencies": { - "restore-cursor": "^4.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "engines": { "node": ">=18" }, @@ -1982,829 +4062,954 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": "*" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.3.0", - "license": "MIT" + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "engines": { - "node": ">=18" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=12" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dependencies": { - "color-name": "~1.1.4" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.13.0" } }, - "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "license": "MIT" - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "license": "MIT", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, - "node_modules/command-line-usage": { - "version": "6.1.3", - "license": "MIT", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "license": "MIT", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/command-line-usage/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/command-line-usage/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/command-line-usage/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/command-line-usage/node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", + "lru-cache": "^10.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/command-line-usage/node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" }, - "node_modules/command-line-usage/node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "license": "MIT", + "node_modules/http-link-header": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", + "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/commander": { - "version": "11.1.0", - "license": "MIT", + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { - "node": ">=16" + "node": ">=16.17.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/confbox": { - "version": "0.1.7", - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/create-require": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "node_modules/husky": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.4.tgz", + "integrity": "sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==", + "bin": { + "husky": "bin.js" }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "license": "MIT", + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { - "type-detect": "^4.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "license": "MIT", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { - "node": ">=4.0.0" + "node": ">=0.8.19" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "license": "MIT" - }, - "node_modules/diff": { - "version": "4.0.2", - "license": "BSD-3-Clause", + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "license": "MIT", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { - "path-type": "^4.0.0" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "license": "BSD-2-Clause", + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "engines": { "node": ">=12" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.769", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.20.2", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "node": ">=0.10.0" } }, - "node_modules/escalade": { - "version": "3.1.2", - "dev": true, - "license": "MIT", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { - "node": ">=6" + "node": ">=0.12.0" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "license": "MIT", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "8.57.0", - "license": "MIT", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "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.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { - "eslint": "bin/eslint.js" + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=10" } }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "license": "BSD-2-Clause", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint-visitor-keys": { + "node_modules/jackspeak": { "version": "3.4.3", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "license": "MIT", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "license": "MIT", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "license": "MIT", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/path-exists": { - "version": "4.0.0", - "license": "MIT", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/yocto-queue": { - "version": "0.1.0", - "license": "MIT", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/espree": { - "version": "9.6.1", - "license": "BSD-2-Clause", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://opencollective.com/eslint" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/esprima": { - "version": "4.0.1", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "BSD-2-Clause", "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, - "node_modules/esquery": { - "version": "1.5.0", - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=0.10" + "node": ">=6" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "license": "BSD-2-Clause", + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true + }, + "node_modules/jsonld-context-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-2.4.0.tgz", + "integrity": "sha512-ZYOfvh525SdPd9ReYY58dxB3E2RUEU4DJ6ZibO8AitcowPeBH4L5rCAitE2om5G1P+HMEgYEYEr4EZKbVN4tpA==", "dependencies": { - "estraverse": "^5.2.0" + "@types/http-link-header": "^1.0.1", + "@types/node": "^18.0.0", + "cross-fetch": "^3.0.6", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" }, - "engines": { - "node": ">=4.0" + "bin": { + "jsonld-context-parse": "bin/jsonld-context-parse.js" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node_modules/jsonld-context-parser/node_modules/@types/node": { + "version": "18.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", + "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "license": "MIT", + "node_modules/jsonld-context-parser/node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dependencies": { - "@types/estree": "^1.0.0" + "node-fetch": "^2.6.12" } }, - "node_modules/esutils": { - "version": "2.0.3", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } + "node_modules/jsonld-context-parser/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/jsonld-streaming-parser": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-3.4.0.tgz", + "integrity": "sha512-897CloyQgQidfkB04dLM5XaAXVX/cN9A2hvgHJo4y4jRhIpvg3KLMBBfcrswepV2N3T8c/Rp2JeFdWfVsbVZ7g==", + "dependencies": { + "@bergos/jsonparse": "^1.4.0", + "@rdfjs/types": "*", + "@types/http-link-header": "^1.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^2.4.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.0.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "license": "MIT", + "node_modules/kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", "engines": { - "node": ">=0.8.x" + "node": ">=14.0.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "license": "MIT", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "json-buffer": "3.0.1" } }, - "node_modules/expect": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.8.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "engines": { - "node": ">=8.6.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "node_modules/lint-staged": { + "version": "15.2.8", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.8.tgz", + "integrity": "sha512-PUWFf2zQzsd9EFU+kM1d7UP+AZDbKFKuj+9JNVTBkhUFhbg4MAt6WfyMMwBfM4lYqd4D2Jwac5iuTu9rVj4zCQ==", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">= 6" + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.17.1", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "dev": true, - "license": "Apache-2.0", + "node_modules/listr2": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dependencies": { - "bser": "2.1.1" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/file-entry-cache": { + "node_modules/listr2/node_modules/ansi-regex": { "version": "6.0.1", - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/find-replace": { - "version": "3.0.0", - "license": "MIT", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dependencies": { - "array-back": "^3.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-up": { - "version": "6.3.0", - "dev": true, - "license": "MIT", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/find-up-simple": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "license": "MIT", + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/flatted": { - "version": "3.3.1", - "license": "ISC" - }, - "node_modules/foreground-child": { - "version": "3.1.1", + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "license": "MIT", + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, "engines": { "node": ">=18" }, @@ -2812,262 +5017,248 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "license": "MIT", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "dev": true, - "license": "MIT", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=8.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "license": "MIT", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "10.3.15", - "dev": true, - "license": "ISC", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "license": "ISC", + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dependencies": { - "is-glob": "^4.0.3" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/globby": { - "version": "11.1.0", - "license": "MIT", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/globrex": { - "version": "0.1.2", - "license": "MIT" - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "node_modules/loglevel": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "engines": { - "node": ">=8" + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, - "node_modules/hasown": { - "version": "2.0.2", + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==" + }, + "node_modules/loupe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "get-func-name": "^2.0.1" } }, - "node_modules/hosted-git-info": { - "version": "7.0.2", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "yallist": "^3.0.2" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "license": "MIT" - }, - "node_modules/human-signals": { - "version": "5.0.0", - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" + "node_modules/magicast": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", + "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@babel/types": "^7.24.0", + "source-map-js": "^1.2.0" } }, - "node_modules/husky": { - "version": "9.0.11", - "license": "MIT", - "bin": { - "husky": "bin.mjs" + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dependencies": { + "semver": "^7.5.3" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.1", - "license": "MIT", - "engines": { - "node": ">= 4" - } + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, - "node_modules/import-fresh": { - "version": "3.3.0", - "license": "MIT", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "tmpl": "1.0.5" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "node_modules/index-to-position": { - "version": "0.1.2", - "dev": true, - "license": "MIT", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", + "node_modules/microdata-rdf-streaming-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/microdata-rdf-streaming-parser/-/microdata-rdf-streaming-parser-2.0.1.tgz", + "integrity": "sha512-oEEYP3OwPGOtoE4eIyJvX1eJXI7VkGR4gKYqpEufaRXc2ele/Tkid/KMU3Los13wGrOq6woSxLEGOYSHzpRvwA==", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@rdfjs/types": "*", + "htmlparser2": "^8.0.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.1.0", + "relative-to-absolute-iri": "^1.0.2" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "license": "MIT", + "node_modules/microdata-rdf-streaming-parser/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "license": "MIT", + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dependencies": { - "hasown": "^2.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/is-fullwidth-code-point": { + "node_modules/mimic-fn": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { "node": ">=12" }, @@ -3075,1239 +5266,1500 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "license": "MIT", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dependencies": { - "is-extglob": "^2.1.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=0.12.0" + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "license": "MIT", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" } }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "license": "BSD-3-Clause", + "node_modules/mylas": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", + "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", "engines": { - "node": ">=8" + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/raouldeheer" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/n3": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.20.4.tgz", + "integrity": "sha512-tHeX1Q3/+ET38qYMOfErglmr5F2tzb+WCt82sZhCokzSZHe95CkHzyuzCMqcRB8hTpW+zn7HqamGXCWW/xXCHg==", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "buffer": "^6.0.3", + "queue-microtask": "^1.1.2", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { - "semver": "bin/semver.js" + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "license": "BSD-3-Clause", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.4", - "license": "BSD-3-Clause", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "path-key": "^4.0.0" }, "engines": { - "node": ">=14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "mimic-fn": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "yocto-queue": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-mock": { - "version": "29.7.0", + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "p-limit": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "callsites": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-util": { - "version": "29.7.0", + "node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-worker": { - "version": "29.7.0", + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.18" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, - "node_modules/js-yaml": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" } }, - "node_modules/jsesc": { - "version": "2.5.2", + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { - "node": ">=4" + "node": ">= 14.16" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { + "node_modules/picocolors": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "bin": { - "json5": "lib/cli.js" + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/jsonc-parser": { - "version": "3.2.1", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, - "license": "MIT" - }, - "node_modules/kafkajs": { - "version": "2.2.4", - "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">= 6" } }, - "node_modules/keyv": { - "version": "4.5.4", - "license": "MIT", + "node_modules/pkg-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", + "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", "dependencies": { - "json-buffer": "3.0.1" + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" } }, - "node_modules/levn": { - "version": "0.4.1", - "license": "MIT", + "node_modules/plimit-lit": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz", + "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "queue-lit": "^1.5.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/postcss": { + "version": "8.4.40", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", + "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "engines": { "node": ">= 0.8.0" } }, - "node_modules/lilconfig": { - "version": "3.0.0", - "license": "MIT", + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "bin": { + "prettier": "bin/prettier.cjs" + }, "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/lint-staged": { - "version": "15.2.2", - "license": "MIT", + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { - "chalk": "5.3.0", - "commander": "11.1.0", - "debug": "4.3.4", - "execa": "8.0.1", - "lilconfig": "3.0.0", - "listr2": "8.0.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.4" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "license": "MIT", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2": { - "version": "8.0.1", - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.0.0", - "rfdc": "^1.3.0", - "wrap-ansi": "^9.0.0" - }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "engines": { - "node": ">=18.0.0" + "node": ">= 0.6.0" } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", + "node_modules/promise-polyfill": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", + "integrity": "sha512-7rrONfyLkDEc7OJ5QBkqa4KI4EBhCd340xRuIUPGCfu13znS+vx+VDdrT9ODAJHlXm7w4lbxN3DRjyv58EuzDg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=6" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", + "node_modules/queue-lit": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.2.tgz", + "integrity": "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==", "engines": { "node": ">=12" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rdf-data-factory": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.2.tgz", + "integrity": "sha512-TfQD63Lokabd09ES1jAtKK8AA6rkr9rwyUBGo6olOt1CE0Um36CUQIqytyf0am2ouBPR0l7SaHxCiMcPGHkt1A==", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/rdf-dereference": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rdf-dereference/-/rdf-dereference-3.0.0.tgz", + "integrity": "sha512-LxB1dP357S/NuivEfNa2YMbnY+k+hPNrvAx/p6CUaHhKv5wuqJHtfmbm8ahqbo/98CizjoFew5xT4WlqedXWYA==", + "dependencies": { + "@comunica/actor-dereference-fallback": "^2.0.2", + "@comunica/actor-dereference-file": "^2.0.2", + "@comunica/actor-dereference-http": "^2.0.2", + "@comunica/actor-dereference-rdf-parse": "^2.6.0", + "@comunica/actor-http-fetch": "^2.0.1", + "@comunica/actor-http-proxy": "^2.0.1", + "@comunica/actor-rdf-parse-html": "^2.0.1", + "@comunica/actor-rdf-parse-html-microdata": "^2.0.1", + "@comunica/actor-rdf-parse-html-rdfa": "^2.0.1", + "@comunica/actor-rdf-parse-html-script": "^2.0.1", + "@comunica/actor-rdf-parse-jsonld": "^2.0.1", + "@comunica/actor-rdf-parse-n3": "^2.0.1", + "@comunica/actor-rdf-parse-rdfxml": "^2.0.1", + "@comunica/actor-rdf-parse-shaclc": "^2.6.0", + "@comunica/actor-rdf-parse-xml-rdfa": "^2.0.1", + "@comunica/bus-dereference": "^2.0.2", + "@comunica/bus-dereference-rdf": "^2.0.2", + "@comunica/bus-http": "^2.0.1", + "@comunica/bus-init": "^2.0.1", + "@comunica/bus-rdf-parse": "^2.0.1", + "@comunica/bus-rdf-parse-html": "^2.0.1", + "@comunica/config-query-sparql": "^2.0.1", + "@comunica/context-entries": "^2.8.1", + "@comunica/core": "^2.0.1", + "@comunica/mediator-combine-pipeline": "^2.0.1", + "@comunica/mediator-combine-union": "^2.0.1", + "@comunica/mediator-number": "^2.0.1", + "@comunica/mediator-race": "^2.0.1", + "@rdfjs/types": "*", + "process": "^0.11.10", + "rdf-string": "^1.6.0", + "stream-to-string": "^1.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "rdf-dereference": "bin/Runner.js" } }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.3.0", - "license": "MIT" + "node_modules/rdf-isomorphic": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rdf-isomorphic/-/rdf-isomorphic-1.3.1.tgz", + "integrity": "sha512-6uIhsXTVp2AtO6f41PdnRV5xZsa0zVZQDTBdn0br+DZuFf5M/YD+T6m8hKDUnALI6nFL/IujTMLgEs20MlNidQ==", + "dependencies": { + "@rdfjs/types": "*", + "hash.js": "^1.1.7", + "rdf-string": "^1.6.0", + "rdf-terms": "^1.7.0" + } }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.1.0", - "license": "MIT", + "node_modules/rdf-lens": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rdf-lens/-/rdf-lens-1.2.8.tgz", + "integrity": "sha512-Eq7zJZ6iS/GfUFTd4lERQzzQhkYEcvHAtn/1HKn2qCcaJHYSYWbS0ALXPFWAN7AJK0fBu4RvPPBUlWgNoyp8MA==", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "@rdfjs/types": "^1.1.0", + "@treecg/types": "^0.4.5", + "@typescript-eslint/eslint-plugin": "^7.5.0", + "@typescript-eslint/parser": "^7.4.0", + "@vitest/coverage-v8": "^1.4.0", + "dotenv": "^16.4.5", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "tsc-alias": "^1.8.8", + "typescript": "^5.4.3", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.4.0" + } + }, + "node_modules/rdf-lens/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "ansi-regex": "^6.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "*" } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/rdf-lens/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">=18" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/local-pkg": { - "version": "0.5.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/locate-path": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dependencies": { - "p-locate": "^6.0.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "license": "MIT" - }, - "node_modules/log-update": { - "version": "6.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dependencies": { - "ansi-escapes": "^6.2.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^7.0.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">=18" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "engines": { - "node": ">=12" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.3.0", - "license": "MIT" - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dependencies": { - "get-east-asian-width": "^1.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { - "node": ">=18" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=18" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.1.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@vitest/coverage-v8": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.0.tgz", + "integrity": "sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.4", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.3", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "test-exclude": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "1.6.0" } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dependencies": { - "ansi-regex": "^6.0.1" + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/rdf-lens/node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dependencies": { + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "yocto-queue": "^1.0.0" }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loglevel": { - "version": "1.9.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "engines": { - "node": ">= 0.6.0" + "node": ">=12.20" }, "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "license": "MIT" - }, - "node_modules/loupe": { - "version": "2.3.7", - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.10", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/magicast": { - "version": "0.3.4", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dependencies": { - "@babel/parser": "^7.24.4", - "@babel/types": "^7.24.0", - "source-map-js": "^1.2.0" + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/make-dir": { - "version": "4.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" + "tinyspy": "^2.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "node_modules/make-error": { - "version": "1.3.6", - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/rdf-lens/node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dependencies": { - "tmpl": "1.0.5" + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "engines": { - "node": ">= 8" + "node": "*" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "license": "MIT", + "node_modules/rdf-lens/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/rdf-lens/node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" } }, - "node_modules/minimatch": { - "version": "9.0.4", - "license": "ISC", + "node_modules/rdf-lens/node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dependencies": { - "brace-expansion": "^2.0.1" + "get-func-name": "^2.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, - "node_modules/minipass": { - "version": "7.1.1", - "dev": true, - "license": "ISC", + "node_modules/rdf-lens/node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "^4.0.0" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=6" } }, - "node_modules/mlly": { - "version": "1.7.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.1.0", - "ufo": "^1.5.3" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/mylas": { - "version": "2.1.13", - "license": "MIT", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "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.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/raouldeheer" + "url": "https://opencollective.com/eslint" } }, - "node_modules/n3": { - "version": "1.17.3", - "license": "MIT", + "node_modules/rdf-lens/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dependencies": { - "queue-microtask": "^1.1.2", - "readable-stream": "^4.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=12.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/node-int64": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "6.0.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/rdf-lens/node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "*" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dependencies": { - "path-key": "^4.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", + "node_modules/rdf-lens/node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dependencies": { - "wrappy": "1" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/onetime": { - "version": "6.0.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { - "mimic-fn": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/optionator": { - "version": "0.9.4", - "license": "MIT", + "node_modules/rdf-lens/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/p-limit": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/rdf-lens/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { - "yocto-queue": "^1.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { + "node_modules/rdf-lens/node_modules/locate-path": { "version": "6.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { - "p-limit": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" + "get-func-name": "^2.0.1" } }, - "node_modules/parse-json": { - "version": "8.1.0", - "dev": true, - "license": "MIT", + "node_modules/rdf-lens/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "index-to-position": "^0.1.2", - "type-fest": "^4.7.1" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-exists": { + "node_modules/rdf-lens/node_modules/p-locate": { "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "dev": true, - "license": "BlueOak-1.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-type": { + "node_modules/rdf-lens/node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, - "node_modules/pathe": { - "version": "1.1.2", - "license": "MIT" - }, - "node_modules/pathval": { + "node_modules/rdf-lens/node_modules/pathval": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "engines": { "node": "*" } }, - "node_modules/picocolors": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.6.0", - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" + "node_modules/rdf-lens/node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-types": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.7", - "mlly": "^1.7.0", - "pathe": "^1.1.2" + "node": ">=8" } }, - "node_modules/plimit-lit": { - "version": "1.6.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "queue-lit": "^1.5.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/postcss": { - "version": "8.4.38", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, + "node_modules/rdf-lens/node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=14.0.0" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "license": "MIT", + "node_modules/rdf-lens/node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "engines": { - "node": ">= 0.8.0" + "node": ">=14.0.0" } }, - "node_modules/prettier": { - "version": "3.2.5", - "license": "MIT", + "node_modules/rdf-lens/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/rdf-lens/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rdf-lens/node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, "bin": { - "prettier": "bin/prettier.cjs" + "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=14" + "node": "^18.0.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/vitest": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "license": "MIT", + "node_modules/rdf-lens/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process": { - "version": "0.11.10", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" + "node_modules/rdf-string": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/rdf-string/-/rdf-string-1.6.3.tgz", + "integrity": "sha512-HIVwQ2gOqf+ObsCLSUAGFZMIl3rh9uGcRf1KbM85UDhKqP+hy6qj7Vz8FKt3GA54RiThqK3mNcr66dm1LP0+6g==", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" } }, - "node_modules/punycode": { - "version": "2.3.1", - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/rdf-terms": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/rdf-terms/-/rdf-terms-1.11.0.tgz", + "integrity": "sha512-iKlVgnMopRKl9pHVNrQrax7PtZKRCT/uJIgYqvuw1VVQb88zDvurtDr1xp0rt7N9JtKtFwUXoIQoEsjyRo20qQ==", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0", + "rdf-string": "^1.6.0" } }, - "node_modules/queue-lit": { - "version": "1.5.2", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/rdfa-streaming-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rdfa-streaming-parser/-/rdfa-streaming-parser-2.0.1.tgz", + "integrity": "sha512-7Yyaj030LO7iQ38Wh/RNLVeYrVFJeyx3dpCK7C1nvX55eIN/gE4HWfbg4BYI9X7Bd+eUIUMVeiKYLmYjV6apow==", + "dependencies": { + "@rdfjs/types": "*", + "htmlparser2": "^8.0.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.0.0", + "relative-to-absolute-iri": "^1.0.2" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", + "node_modules/rdfa-streaming-parser/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT" - }, - "node_modules/rdf-data-factory": { - "version": "1.1.2", - "license": "MIT", "dependencies": { - "@rdfjs/types": "*" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/rdf-lens": { - "version": "1.2.8", - "license": "MIT", + "node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", + "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", "dependencies": { - "@rdfjs/types": "^1.1.0", - "@treecg/types": "^0.4.5", - "@typescript-eslint/eslint-plugin": "^7.5.0", - "@typescript-eslint/parser": "^7.4.0", - "@vitest/coverage-v8": "^1.4.0", - "dotenv": "^16.4.5", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "husky": "^9.0.11", - "lint-staged": "^15.2.2", - "prettier": "^3.2.5", - "ts-node": "^10.9.2", - "tsc-alias": "^1.8.8", - "typescript": "^5.4.3", - "vite-tsconfig-paths": "^4.3.2", - "vitest": "^1.4.0" + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" } }, "node_modules/react-is": { "version": "18.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/read-package-up": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", @@ -4322,8 +6774,9 @@ }, "node_modules/read-pkg": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", @@ -4340,7 +6793,8 @@ }, "node_modules/readable-stream": { "version": "4.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -4352,9 +6806,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/readable-stream-node-to-web": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readable-stream-node-to-web/-/readable-stream-node-to-web-1.0.1.tgz", + "integrity": "sha512-OGzi2VKLa8H259kAx7BIwuRrXHGcxeHj4RdASSgEGBP9Q2wowdPvBc65upF4Q9O05qWgKqBw1+9PiLTtObl7uQ==" + }, "node_modules/readdirp": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dependencies": { "picomatch": "^2.2.1" }, @@ -4362,73 +6822,67 @@ "node": ">=8.10.0" } }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/relative-to-absolute-iri": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.7.tgz", + "integrity": "sha512-Xjyl4HmIzg2jzK/Un2gELqbcE8Fxy85A/aLSHE6PE/3+OGsFwmKVA1vRyGaz6vLWSqLDMHA+5rjD/xbibSQN1Q==" }, "node_modules/resolve-from": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "engines": { "node": ">=4" } }, "node_modules/restore-cursor": { - "version": "4.0.0", - "license": "MIT", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "license": "MIT", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "license": "ISC" - }, "node_modules/reusify": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.1", - "license": "MIT" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, "node_modules/rimraf": { "version": "3.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -4441,7 +6895,8 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4449,7 +6904,9 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4467,7 +6924,8 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4476,8 +6934,9 @@ } }, "node_modules/rollup": { - "version": "4.17.2", - "license": "MIT", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", + "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", "dependencies": { "@types/estree": "1.0.5" }, @@ -4487,50 +6946,31 @@ "engines": { "node": ">=18.0.0", "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.17.2", - "@rollup/rollup-android-arm64": "4.17.2", - "@rollup/rollup-darwin-arm64": "4.17.2", - "@rollup/rollup-darwin-x64": "4.17.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", - "@rollup/rollup-linux-arm-musleabihf": "4.17.2", - "@rollup/rollup-linux-arm64-gnu": "4.17.2", - "@rollup/rollup-linux-arm64-musl": "4.17.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", - "@rollup/rollup-linux-riscv64-gnu": "4.17.2", - "@rollup/rollup-linux-s390x-gnu": "4.17.2", - "@rollup/rollup-linux-x64-gnu": "4.17.2", - "@rollup/rollup-linux-x64-musl": "4.17.2", - "@rollup/rollup-win32-arm64-msvc": "4.17.2", - "@rollup/rollup-win32-ia32-msvc": "4.17.2", - "@rollup/rollup-win32-x64-msvc": "4.17.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.20.0", + "@rollup/rollup-android-arm64": "4.20.0", + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-darwin-x64": "4.20.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", + "@rollup/rollup-linux-arm-musleabihf": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-arm64-musl": "4.20.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", + "@rollup/rollup-linux-riscv64-gnu": "4.20.0", + "@rollup/rollup-linux-s390x-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-musl": "4.20.0", + "@rollup/rollup-win32-arm64-msvc": "4.20.0", + "@rollup/rollup-win32-ia32-msvc": "4.20.0", + "@rollup/rollup-win32-x64-msvc": "4.20.0", + "fsevents": "~2.3.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -4545,11 +6985,19 @@ "url": "https://feross.org/support" } ], - "license": "MIT" + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/semver": { - "version": "7.6.2", - "license": "ISC", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -4557,9 +7005,19 @@ "node": ">=10" } }, + "node_modules/shaclc-parse": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/shaclc-parse/-/shaclc-parse-1.4.0.tgz", + "integrity": "sha512-zyxjIYQH2ghg/wtMvOp+4Nr6aK8j9bqFiVT3w47K8WHPYN+S3Zgnh2ybT+dGgMwo9KjiOoywxhjC7d8Z6GCmfA==", + "dependencies": { + "@rdfjs/types": "^1.1.0", + "n3": "^1.16.3" + } + }, "node_modules/shebang-command": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4569,18 +7027,21 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { "node": ">=8" } }, "node_modules/siginfo": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" }, "node_modules/signal-exit": { "version": "4.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { "node": ">=14" }, @@ -4590,14 +7051,16 @@ }, "node_modules/slash": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -4611,7 +7074,8 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { "node": ">=12" }, @@ -4621,15 +7085,50 @@ }, "node_modules/source-map-js": { "version": "1.2.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } }, + "node_modules/sparqlalgebrajs": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/sparqlalgebrajs/-/sparqlalgebrajs-4.3.8.tgz", + "integrity": "sha512-Xo1/5icRtVk2N38BrY9NXN8N/ZPjULlns7sDHv0nlcGOsOediBLWVy8LmV+Q90RHvb3atZZbrFy3VqrM4iXciA==", + "dependencies": { + "@rdfjs/types": "*", + "@types/sparqljs": "^3.1.3", + "fast-deep-equal": "^3.1.3", + "minimist": "^1.2.6", + "rdf-data-factory": "^1.1.0", + "rdf-isomorphic": "^1.3.0", + "rdf-string": "^1.6.0", + "rdf-terms": "^1.10.0", + "sparqljs": "^3.7.1" + }, + "bin": { + "sparqlalgebrajs": "bin/sparqlalgebrajs.js" + } + }, + "node_modules/sparqljs": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/sparqljs/-/sparqljs-3.7.1.tgz", + "integrity": "sha512-I1jYMtcwDkgCEqQ4eQuQIhB8hFAlRAJ6YDXDcV54XztaJaYRFqJlidHt77S3j8Mfh6kY6GK04dXPEIopxbEeuQ==", + "dependencies": { + "rdf-data-factory": "^1.1.2" + }, + "bin": { + "sparqljs": "bin/sparql-to-json" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -4637,32 +7136,37 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "dev": true, - "license": "CC0-1.0" + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/stack-utils": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -4672,45 +7176,79 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/stackback": { "version": "0.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" }, "node_modules/std-env": { "version": "3.7.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "node_modules/stream-to-array": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", "dependencies": { "any-promise": "^1.1.0" } }, + "node_modules/stream-to-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stream-to-string/-/stream-to-string-1.2.1.tgz", + "integrity": "sha512-WsvTDNF8UYs369Yko3pcdTducQtYpzEZeOV7cTuReyFvOoA9S/DLJ6sYK+xPafSPHhUMpaxiljKYnT6JSFztIA==", + "dependencies": { + "promise-polyfill": "^1.1.6" + } + }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/string-argv": { "version": "0.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "engines": { "node": ">=0.6.19" } }, "node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -4726,8 +7264,9 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4739,21 +7278,24 @@ }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -4763,8 +7305,9 @@ }, "node_modules/string-width/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4777,7 +7320,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4788,8 +7332,9 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4799,7 +7344,8 @@ }, "node_modules/strip-final-newline": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { "node": ">=12" }, @@ -4809,7 +7355,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "engines": { "node": ">=8" }, @@ -4819,7 +7366,8 @@ }, "node_modules/strip-literal": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dependencies": { "js-tokens": "^9.0.0" }, @@ -4829,11 +7377,13 @@ }, "node_modules/strip-literal/node_modules/js-tokens": { "version": "9.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" }, "node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -4842,117 +7392,86 @@ } }, "node_modules/table-layout": { - "version": "1.0.2", - "license": "MIT", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/test-exclude": { - "version": "6.0.0", - "license": "ISC", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "glob": "^10.4.1", + "minimatch": "^9.0.4" }, "engines": { - "node": "*" + "node": ">=18" } }, "node_modules/text-table": { "version": "0.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/tinybench": { - "version": "2.8.0", - "license": "MIT" + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" }, "node_modules/tinypool": { - "version": "0.8.4", - "license": "MIT", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", + "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "2.2.1", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", + "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", + "dev": true, "engines": { "node": ">=14.0.0" } }, "node_modules/tmpl": { "version": "1.0.5", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { "is-number": "^7.0.0" }, @@ -4960,9 +7479,15 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/ts-api-utils": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "engines": { "node": ">=16" }, @@ -4972,7 +7497,8 @@ }, "node_modules/ts-node": { "version": "10.9.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -5013,7 +7539,8 @@ }, "node_modules/tsc-alias": { "version": "1.8.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.10.tgz", + "integrity": "sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==", "dependencies": { "chokidar": "^3.5.3", "commander": "^9.0.0", @@ -5028,14 +7555,16 @@ }, "node_modules/tsc-alias/node_modules/commander": { "version": "9.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/tsconfck": { - "version": "3.0.3", - "license": "MIT", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -5053,7 +7582,8 @@ }, "node_modules/type-check": { "version": "0.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -5063,15 +7593,18 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "4.18.2", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.23.0.tgz", + "integrity": "sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -5080,8 +7613,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "license": "Apache-2.0", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5091,24 +7625,28 @@ } }, "node_modules/typical": { - "version": "4.0.0", - "license": "MIT", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/ufo": { - "version": "1.5.3", - "license": "MIT" + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" }, "node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT" + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==" }, "node_modules/unicorn-magic": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -5117,7 +7655,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -5133,7 +7673,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.2", "picocolors": "^1.0.1" @@ -5147,30 +7686,39 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, + "node_modules/validate-iri": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/validate-iri/-/validate-iri-1.0.1.tgz", + "integrity": "sha512-gLXi7351CoyVVQw8XE5sgpYawRKatxE7kj/xmCxXOZS1kMdtcqC0ILIqLuVEVnAUQSL/evOGG3eQ+8VgbdnstA==" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/vite": { - "version": "5.2.11", - "license": "MIT", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", + "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==", "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", + "esbuild": "^0.21.3", + "postcss": "^8.4.39", "rollup": "^4.13.0" }, "bin": { @@ -5219,13 +7767,15 @@ } }, "node_modules/vite-node": { - "version": "1.6.0", - "license": "MIT", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz", + "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", + "dev": true, "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", + "debug": "^4.3.5", + "pathe": "^1.1.2", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "bin": { @@ -5240,7 +7790,8 @@ }, "node_modules/vite-tsconfig-paths": { "version": "4.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", @@ -5256,29 +7807,30 @@ } }, "node_modules/vitest": { - "version": "1.6.0", - "license": "MIT", - "dependencies": { - "@vitest/expect": "1.6.0", - "@vitest/runner": "1.6.0", - "@vitest/snapshot": "1.6.0", - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz", + "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@vitest/expect": "2.0.5", + "@vitest/pretty-format": "^2.0.5", + "@vitest/runner": "2.0.5", + "@vitest/snapshot": "2.0.5", + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "debug": "^4.3.5", "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "tinybench": "^2.8.0", + "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "1.6.0", - "why-is-node-running": "^2.2.2" + "vite-node": "2.0.5", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" @@ -5292,8 +7844,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.0", - "@vitest/ui": "1.6.0", + "@vitest/browser": "2.0.5", + "@vitest/ui": "2.0.5", "happy-dom": "*", "jsdom": "*" }, @@ -5320,15 +7872,36 @@ }, "node_modules/walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, + "node_modules/web-streams-ponyfill": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/web-streams-ponyfill/-/web-streams-ponyfill-1.4.2.tgz", + "integrity": "sha512-LCHW+fE2UBJ2vjhqJujqmoxh1ytEDEr0dPO3CabMdMDJPKmsaxzS90V1Ar6LtNE5VHLqxR4YMEj1i4lzMAccIA==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -5340,8 +7913,9 @@ } }, "node_modules/why-is-node-running": { - "version": "2.2.2", - "license": "MIT", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -5355,33 +7929,25 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrapjs": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "license": "MIT", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/wrap-ansi": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -5397,8 +7963,9 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5413,21 +7980,24 @@ }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5439,8 +8009,9 @@ }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -5450,8 +8021,9 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -5461,8 +8033,9 @@ }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -5475,12 +8048,14 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -5491,12 +8066,14 @@ }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/ws": { - "version": "8.17.0", - "license": "MIT", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -5513,28 +8090,41 @@ } } }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, "node_modules/yallist": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yaml": { - "version": "2.3.4", - "license": "ISC", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } }, "node_modules/yn": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "engines": { "node": ">=6" } }, "node_modules/yocto-queue": { - "version": "1.0.0", - "license": "MIT", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, "engines": { "node": ">=12.20" }, diff --git a/package.json b/package.json index ef75d53..b078407 100644 --- a/package.json +++ b/package.json @@ -31,39 +31,40 @@ "license": "MIT", "dependencies": { "@rdfjs/types": "^1.1.0", - "@treecg/types": "^0.4.5", - "command-line-args": "^5.2.1", - "command-line-usage": "^6.1.3", - "debug": "^4.3.4", + "@treecg/types": "^0.4.6", + "command-line-args": "^6.0.0", + "command-line-usage": "^7.0.3", + "debug": "^4.3.6", "kafkajs": "^2.2.4", - "n3": "^1.17.1", + "n3": "^1.20.4", + "rdf-dereference": "^3.0.0", "rdf-lens": "^1.2.8", "stream-to-array": "^2.3.0", - "ws": "^8.14.2" + "ws": "^8.18.0" }, "devDependencies": { "@jest/globals": "^29.7.0", - "@knighted/duel": "^1.0.6", - "@types/command-line-args": "^5.2.2", - "@types/command-line-usage": "^5.0.3", + "@knighted/duel": "^1.0.8", + "@types/command-line-args": "^5.2.3", + "@types/command-line-usage": "^5.0.4", "@types/debug": "^4.1.12", - "@types/n3": "^1.16.3", - "@types/node": "^18.11.15", - "@types/ws": "^8.5.8", - "rollup": "^4.12.0", - "@typescript-eslint/eslint-plugin": "^7.5.0", - "@typescript-eslint/parser": "^7.4.0", - "@vitest/coverage-v8": "^1.4.0", + "@types/n3": "^1.16.4", + "@types/node": "^22.1.0", + "@types/ws": "^8.5.12", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "@vitest/coverage-v8": "^2.0.5", "dotenv": "^16.4.5", - "eslint": "^8.57.0", + "eslint": "^9.8.0", "eslint-config-prettier": "^9.1.0", - "husky": "^9.0.11", - "lint-staged": "^15.2.2", - "prettier": "^3.2.5", + "husky": "^9.1.4", + "lint-staged": "^15.2.8", + "prettier": "^3.3.3", + "rollup": "^4.20.0", "ts-node": "^10.9.2", - "tsc-alias": "^1.8.8", - "typescript": "^5.4.3", + "tsc-alias": "^1.8.10", + "typescript": "^5.5.4", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^1.4.0" + "vitest": "^2.0.5" } } diff --git a/processor/echo.ttl b/processor/echo.ttl index 0fb07d7..d954f6b 100644 --- a/processor/echo.ttl +++ b/processor/echo.ttl @@ -1,38 +1,39 @@ -@prefix js: . -@prefix fno: . -@prefix fnom: . -@prefix xsd: . -@prefix : . -@prefix sh: . +@prefix rdfc: . +@prefix rdfc-js: . +@prefix fno: . +@prefix fnom: . +@prefix xsd: . +@prefix sh: . -js:Echo a js:JsProcess; - js:file <./test.js>; - js:function "echo"; - js:location <./>; - js:mapping [ - a fno:Mapping; - fno:parameterMapping [ - a fnom:PositionParameterMapping; - fnom:functionParameter "Input Channel"; - fnom:implementationParameterPosition "0"^^xsd:int; - ], [ - a fnom:PositionParameterMapping; - fnom:functionParameter "Output Channel"; - fnom:implementationParameterPosition "1"^^xsd:int; - ]; - ]. +rdfc-js:Echo a rdfc-js:Processor ; + rdfc-js:file <./test.js> ; + rdfc-js:function "echo" ; + rdfc-js:location <./> ; + rdfc-js:mapping [ + a fno:Mapping ; + fno:parameterMapping [ + a fnom:PositionParameterMapping ; + fnom:functionParameter "Input Channel" ; + fnom:implementationParameterPosition "0"^^xsd:integer + ], [ + a fnom:PositionParameterMapping ; + fnom:functionParameter "Output Channel" ; + fnom:implementationParameterPosition "1"^^xsd:integer + ]; + ] ; + rdfc:executedBy rdfc-js:Runner . -[ ] a sh:NodeShape; - sh:targetClass js:Echo; - sh:property [ - sh:class :ReaderChannel; - sh:path js:input; - sh:name "Input Channel"; - sh:maxCount 1; - ], [ - sh:class :WriterChannel; - sh:path js:output; - sh:name "Output Channel"; - sh:maxCount 1; - ]. +[ ] a sh:NodeShape ; + sh:targetClass rdfc-js:Echo ; + sh:property [ + sh:class rdfc:ReaderChannel ; + sh:path rdfc-js:input ; + sh:name "Input Channel" ; + sh:maxCount 1 + ], [ + sh:class rdfc:WriterChannel ; + sh:path rdfc-js:output ; + sh:name "Output Channel" ; + sh:maxCount 1 + ] . diff --git a/processor/resc.ttl b/processor/resc.ttl index 2017fa4..1ffb8ef 100644 --- a/processor/resc.ttl +++ b/processor/resc.ttl @@ -1,34 +1,29 @@ -@prefix js: . -@prefix fno: . -@prefix fnom: . -@prefix xsd: . -@prefix : . -@prefix sh: . +@prefix rdfc: . +@prefix rdfc-js: . +@prefix sh: . +@prefix fno: . +@prefix fnom: . +@prefix xsd: . -<> :install [ - a :LocalInstall; - :path <./>; -]. - -js:Resc a js:JsProcess; - js:file <./test.js>; - js:function "resc"; - js:location <./>; - js:mapping [ - a fno:Mapping; - fno:parameterMapping [ - a fnom:PositionParameterMapping; - fnom:functionParameter "input"; - fnom:implementationParameterPosition "0"^^xsd:int; - ]; - ]. - -[ ] a sh:NodeShape; - sh:targetClass js:Resc; - sh:property [ - sh:class :ReaderChannel; - sh:path js:rescReader; - sh:name "input"; - sh:maxCount 1; - ]. +rdfc-js:Resc a rdfc-js:Processor ; + rdfc-js:file <./test.js> ; + rdfc-js:function "resc" ; + rdfc-js:location <./> ; + rdfc-js:mapping [ + a fno:Mapping ; + fno:parameterMapping [ + a fnom:PositionParameterMapping ; + fnom:functionParameter "input" ; + fnom:implementationParameterPosition "0"^^xsd:integer + ] + ] ; + rdfc:executedBy rdfc-js:Runner . +[ ] a sh:NodeShape ; + sh:targetClass rdfc-js:Resc ; + sh:property [ + sh:class rdfc:ReaderChannel ; + sh:path rdfc-js:rescReader ; + sh:name "input" ; + sh:maxCount 1 + ] . \ No newline at end of file diff --git a/processor/send.ttl b/processor/send.ttl index 9b953cf..54d5055 100644 --- a/processor/send.ttl +++ b/processor/send.ttl @@ -1,40 +1,41 @@ -@prefix js: . -@prefix fno: . -@prefix fnom: . -@prefix xsd: . -@prefix : . -@prefix sh: . +@prefix rdfc: . +@prefix rdfc-js: . +@prefix fno: . +@prefix fnom: . +@prefix xsd: . +@prefix sh: . -js:Send a js:JsProcess; - js:file <./test.js>; - js:function "send"; - js:location <./>; - js:mapping [ - a fno:Mapping; - fno:parameterMapping [ - a fnom:PositionParameterMapping; - fnom:functionParameter "msg"; - fnom:implementationParameterPosition "0"^^xsd:int; - ], [ - a fnom:PositionParameterMapping; - fnom:functionParameter "output"; - fnom:implementationParameterPosition "1"^^xsd:int; - ]; - ]. +rdfc-js:Send a rdfc-js:Processor ; + rdfc-js:file <./test.js> ; + rdfc-js:function "send" ; + rdfc-js:location <./> ; + rdfc-js:mapping [ + a fno:Mapping ; + fno:parameterMapping [ + a fnom:PositionParameterMapping ; + fnom:functionParameter "msg" ; + fnom:implementationParameterPosition "0"^^xsd:integer + ], [ + a fnom:PositionParameterMapping ; + fnom:functionParameter "output" ; + fnom:implementationParameterPosition "1"^^xsd:integer + ] + ] ; + rdfc:executedBy rdfc-js:Runner . [ ] a sh:NodeShape; - sh:targetClass js:Send; - sh:property [ - sh:datatype xsd:string; - sh:path js:msg; - sh:name "msg"; - sh:maxCount 1; - sh:minCount 1; - ], [ - sh:class :WriterChannel; - sh:path js:sendWriter; - sh:name "output"; - sh:maxCount 1; - sh:minCount 1; - ]. + sh:targetClass rdfc-js:Send ; + sh:property [ + sh:datatype xsd:string ; + sh:path rdfc-js:msg ; + sh:name "msg" ; + sh:maxCount 1 ; + sh:minCount 1 + ], [ + sh:class rdfc:WriterChannel ; + sh:path rdfc-js:sendWriter ; + sh:name "output" ; + sh:maxCount 1 ; + sh:minCount 1 + ] . diff --git a/processor/test.js b/processor/test.js index ade9720..19ec592 100644 --- a/processor/test.js +++ b/processor/test.js @@ -1,35 +1,36 @@ import http from "http"; +import { Buffer } from "buffer"; function streamToString(ev) { - const datas = []; - return new Promise((res) => { - ev.on("data", (d) => datas.push(d)); - ev.on("end", () => res(Buffer.concat(datas))); - }); + const datas = []; + return new Promise((res) => { + ev.on("data", (d) => datas.push(d)); + ev.on("end", () => res(Buffer.concat(datas))); + }); } export async function send(msg, writer) { - const host = "0.0.0.0"; - const port = 8000; - const requestListener = async function (req, res) { - const data = await streamToString(req); - const ret = `${msg} ${data}`; - await writer.push(ret); - res.writeHead(200); - res.end(ret); - }; - const server = http.createServer(requestListener); + const host = "0.0.0.0"; + const port = 8000; + const requestListener = async function (req, res) { + const data = await streamToString(req); + const ret = `${msg} ${data}`; + await writer.push(ret); + res.writeHead(200); + res.end(ret); + }; + const server = http.createServer(requestListener); - await new Promise((res) => { - server.listen(port, host, () => { - console.log(`Server is running on http://${host}:${port} prefix ${msg}`); - res(); + await new Promise((res) => { + server.listen(port, host, () => { + console.log(`Server is running on http://${host}:${port} prefix ${msg}`); + res(); + }); }); - }); - return () => writer.push("Hallo!"); + return () => writer.push("Hallo!"); } export function resc(reader) { - reader.data((x) => console.log("data", x)); + reader.data((x) => console.log("data", x)); } diff --git a/src/connectors.ts b/src/connectors.ts index 66c34e8..7cdc2d3 100644 --- a/src/connectors.ts +++ b/src/connectors.ts @@ -1,6 +1,5 @@ -import { createTermNamespace } from "@treecg/types"; - import { NamedNode, Term } from "@rdfjs/types"; + import { FileReaderConfig, FileWriterConfig, @@ -31,23 +30,9 @@ import { startHttpStreamReader, startHttpStreamWriter, } from "./connectors/http"; -import { LOG } from "./util"; +import { LOG, RDFC, RDFC_JS } from "./util"; export * from "./connectors/http"; -export const Conn = createTermNamespace( - "https://w3id.org/conn#", - "FileReaderChannel", - "FileWriterChannel", - "HttpReaderChannel", - "HttpWriterChannel", - "KafkaReaderChannel", - "KafkaWriterChannel", - "WsReaderChannel", - "WsWriterChannel", - "WriterChannel", - "ReaderChannel", -); - export interface Config { id: Term; ty: NamedNode; @@ -64,13 +49,7 @@ export type WriterConstructor = (config: C) => { init: () => Promise; }; -export const JsOntology = createTermNamespace( - "https://w3id.org/conn/js#", - "JsProcess", - "JsChannel", - "JsReaderChannel", - "JsWriterChannel", -); + type JsChannel = { channel: { id: Term; @@ -84,21 +63,21 @@ export class ChannelFactory { createReader(config: Config): Stream { LOG.channel("Creating reader %s: a %s", config.id.value, config.ty.value); - if (config.ty.equals(Conn.FileReaderChannel)) { + if (config.ty.equals(RDFC.FileReaderChannel)) { const { reader, init } = startFileStreamReader(config.config); this.inits.push(init); return reader; } - if (config.ty.equals(Conn.WsReaderChannel)) { + if (config.ty.equals(RDFC.WebSocketReaderChannel)) { const { reader, init } = startWsStreamReader(config.config); this.inits.push(init); return reader; } - if (config.ty.equals(Conn.KafkaReaderChannel)) { + if (config.ty.equals(RDFC.KafkaReaderChannel)) { const { reader, init } = startKafkaStreamReader( config.config, ); @@ -106,7 +85,7 @@ export class ChannelFactory { return reader; } - if (config.ty.equals(Conn.HttpReaderChannel)) { + if (config.ty.equals(RDFC.HttpReaderChannel)) { const { reader, init } = startHttpStreamReader( config.config, ); @@ -114,7 +93,7 @@ export class ChannelFactory { return reader; } - if (config.ty.equals(JsOntology.JsReaderChannel)) { + if (config.ty.equals(RDFC_JS.JSReaderChannel)) { const c = config.config; if (c.channel) { const id = c.channel.id.value; @@ -141,7 +120,7 @@ export class ChannelFactory { createWriter(config: Config): Writer { LOG.channel("Creating writer %s: a %s", config.id.value, config.ty.value); - if (config.ty.equals(Conn.FileWriterChannel)) { + if (config.ty.equals(RDFC.FileWriterChannel)) { const { writer, init } = startFileStreamWriter( config.config, ); @@ -150,7 +129,7 @@ export class ChannelFactory { return writer; } - if (config.ty.equals(Conn.WsWriterChannel)) { + if (config.ty.equals(RDFC.WebSocketWriterChannel)) { const { writer, init } = startWsStreamWriter( config.config, ); @@ -159,7 +138,7 @@ export class ChannelFactory { return writer; } - if (config.ty.equals(Conn.KafkaWriterChannel)) { + if (config.ty.equals(RDFC.KafkaWriterChannel)) { const { writer, init } = startKafkaStreamWriter( config.config, ); @@ -167,7 +146,7 @@ export class ChannelFactory { return writer; } - if (config.ty.equals(Conn.HttpWriterChannel)) { + if (config.ty.equals(RDFC.HttpWriterChannel)) { const { writer, init } = startHttpStreamWriter( config.config, ); @@ -175,7 +154,7 @@ export class ChannelFactory { return writer; } - if (config.ty.equals(JsOntology.JsWriterChannel)) { + if (config.ty.equals(RDFC_JS.JSWriterChannel)) { const c = config.config; if (c.channel) { const id = c.channel.id.value; diff --git a/src/index.ts b/src/index.ts index c14251d..ab4b320 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,23 +1,15 @@ import { Store } from "n3"; import { getArgs } from "./args"; -import { load_store, LOG } from "./util"; +import { load_store, safeJoin, LOG, RDFC, RDFC_JS } from "./util"; export * from "./connectors"; -import path from "path"; import { RDF } from "@treecg/types"; -import { ChannelFactory, Conn, JsOntology } from "./connectors"; +import { ChannelFactory } from "./connectors"; import { Quad, Term } from "@rdfjs/types"; import { extractShapes, Shapes } from "rdf-lens"; -function safeJoin(a: string, b: string) { - if (b.startsWith("/")) { - return b; - } - return path.join(a, b); -} - type Processor = { ty: Term; file: string; @@ -53,10 +45,10 @@ export async function extractProcessors( .filter( (x) => x.predicate.equals(RDF.terms.type) && - x.object.equals(JsOntology.JsProcess), + x.object.equals(RDFC_JS.Processor), ) .map((x) => x.subject); - const processorLens = config.lenses[JsOntology.JsProcess.value]; + const processorLens = config.lenses[RDFC_JS.Processor.value]; const processors = subjects.map((id) => processorLens.execute({ id, quads })); return { processors, quads, shapes: config }; } @@ -103,8 +95,8 @@ export async function jsRunner() { const factory = new ChannelFactory(); /// Small hack, if something is extracted from these types, that should be converted to a reader/writer const apply: { [label: string]: (item: unknown) => unknown } = {}; - apply[Conn.ReaderChannel.value] = factory.createReader.bind(factory); - apply[Conn.WriterChannel.value] = factory.createWriter.bind(factory); + apply[RDFC.ReaderChannel.value] = factory.createReader.bind(factory); + apply[RDFC.WriterChannel.value] = factory.createWriter.bind(factory); const { processors, diff --git a/src/util.ts b/src/util.ts index 25ae309..adc6b20 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,11 +1,10 @@ -import { createReadStream } from "fs"; -import http from "http"; -import https from "https"; +import { rdfDereferencer } from "rdf-dereference"; import stream from "stream"; -import { DataFactory, Parser, Store, StreamParser } from "n3"; -import { createUriAndTermNamespace } from "@treecg/types"; +import { DataFactory, Parser, Store } from "n3"; +import { createTermNamespace, createUriAndTermNamespace } from "@treecg/types"; import { Source } from "."; import { Quad, Term } from "@rdfjs/types"; +import path from "path"; import debug from "debug"; @@ -31,47 +30,51 @@ export const OWL = createUriAndTermNamespace( "http://www.w3.org/2002/07/owl#", "imports", ); -export const CONN2 = createUriAndTermNamespace( - "https://w3id.org/conn#", - "install", - "build", - "GitInstall", - "LocalInstall", - "url", - "procFile", - "path", - "EnvVariable", - "envKey", - "envDefault", + +export const RDFC = createTermNamespace( + "https://w3id.org/rdf-connect#", + "WriterChannel", + "ReaderChannel", + "FileReaderChannel", + "FileWriterChannel", + "HttpReaderChannel", + "HttpWriterChannel", + "KafkaReaderChannel", + "KafkaWriterChannel", + "WebSocketReaderChannel", + "WebSocketWriterChannel" +); + +export const RDFC_JS = createTermNamespace( + "https://w3id.org/rdf-connect/js#", + "Processor", + "JSChannel", + "JSReaderChannel", + "JSWriterChannel", ); + export const { namedNode, literal } = DataFactory; export type Keyed = { [Key in keyof T]: Term | undefined }; export type Map = (value: V, key: K, item: T) => O; -async function get_readstream(location: string): Promise { - if (location.startsWith("https")) { - return new Promise((res) => { - https.get(location, res); - }); - } else if (location.startsWith("http")) { - return new Promise((res) => { - http.get(location, res); - }); - } else { - return createReadStream(location); +export function safeJoin(a: string, b: string) { + if (b.startsWith("/")) { + return b; } + return path.join(a, b); } export async function load_quads(location: string, baseIRI?: string) { try { LOG.util("Loading quads %s", location); - const parser = new StreamParser({ baseIRI: baseIRI || location }); - const rdfStream = await get_readstream(location); - rdfStream.pipe(parser); + const { data } = await rdfDereferencer.dereference(location, { localFiles: true }); + const quads: Quad[] = []; - const quads: Quad[] = await toArray(parser); + for await (const quad of data) { + quads.push(quad); + } return quads; } catch (ex) { console.error("Failed to load_quads", location, baseIRI); @@ -102,15 +105,32 @@ export async function load_store( store.addQuads(quads); if (recursive) { - const loc = - location.type === "remote" ? location.location : location.baseIRI; - const other_imports = store.getObjects( - namedNode(loc), - OWL.terms.imports, - null, - ); + let other_imports = []; + let loc = ""; + + if (location.type === "remote") { + loc = location.location; + other_imports = store.getObjects( + namedNode(loc.startsWith("/") ? `file://${loc}` : loc), + OWL.terms.imports, + null, + ); + } else { + loc = location.baseIRI; + other_imports = store.getObjects( + namedNode(loc), + OWL.terms.imports, + null, + ); + } for (const other of other_imports) { - await load_store({ location: other.value, type: "remote" }, store, true); + await load_store( + { + location: other.value.startsWith("file://") ? other.value.slice(7) : other.value, + type: "remote" + }, + store, true + ); } } } diff --git a/test/configuration.test.ts b/test/configuration.test.ts index 105733b..c589750 100644 --- a/test/configuration.test.ts +++ b/test/configuration.test.ts @@ -1,30 +1,34 @@ import { describe, expect, test } from "vitest"; -import { Quad } from "@rdfjs/types"; +import { NamedNode, Quad } from "@rdfjs/types"; import { RDF } from "@treecg/types"; import { readFileSync } from "fs"; -import { DataFactory, Parser } from "n3"; +import { DataFactory, Parser, Store } from "n3"; import { extractShapes } from "rdf-lens"; +import { load_store, RDFC_JS, safeJoin } from "../src/util"; function parseQuads(inp: string): Quad[] { return new Parser().parse(inp); } -function parseConfig() { - const file = readFileSync("./ontology.ttl", { encoding: "utf8" }); - const quads = parseQuads(file); - return extractShapes(quads); +async function parseConfig() { + const store = new Store(); + await load_store({ + type: "remote", + location: safeJoin(process.cwd(), "ontology.ttl") + }, store); + return extractShapes(store.getQuads(null, null, null, null)); } -const JsProcessor = DataFactory.namedNode("https://w3id.org/conn/js#JsProcess"); +const JSProcessor = DataFactory.namedNode("https://w3id.org/rdf-connect/js#Processor"); describe("Input test", () => { - test("Parse configuration", () => { - const output = parseConfig(); - expect(output.shapes.length).toBe(8); - expect(output.lenses[JsProcessor.value]).toBeDefined(); + test("Parse configuration", async () => { + const output = await parseConfig(); + expect(output.shapes.length).toBe(25); + expect(output.lenses[JSProcessor.value]).toBeDefined(); }); - test("Parse processor config", () => { - const config = parseConfig(); + test("Parse processor config", async () => { + const config = await parseConfig(); const processorFile = readFileSync("./processor/send.ttl", { encoding: "utf8", }); @@ -33,7 +37,7 @@ describe("Input test", () => { const quad = quads.find( (x) => x.predicate.equals(RDF.terms.type) && - x.object.equals(JsProcessor), + x.object.equals(JSProcessor), )!; const object = config.lenses[quad.object.value].execute({ id: quad.subject, @@ -43,32 +47,32 @@ describe("Input test", () => { expect(object).toBeDefined(); }); - test("parse js-runner pipeline", () => { - const parse = (location: string) => - parseQuads(readFileSync(location, { encoding: "utf8" })); - const files = [ - "./ontology.ttl", - "./processor/send.ttl", - "./processor/resc.ttl", - "./input.ttl", - ]; - const quads = files.flatMap(parse); + test("parse js-runner pipeline", async () => { + const store = new Store(); + + await load_store({ + type: "remote", + location: safeJoin(process.cwd(), "input.ttl") + }, store); + + const quads = store.getQuads(null, null, null, null); const config = extractShapes(quads); const subjects = quads .filter( (x) => x.predicate.equals(RDF.terms.type) && - x.object.equals(JsProcessor), + x.object.equals(JSProcessor), ) .map((x) => x.subject); - const processorLens = config.lenses[JsProcessor.value]; + const processorLens = config.lenses[JSProcessor.value]; const processors = subjects.map((id) => processorLens.execute({ id, quads: quads }), ); const found: unknown[] = []; for (const proc of processors) { + const processorLens = config.lenses[proc.ty.value]; const subjects = quads .filter( (x) => @@ -76,13 +80,17 @@ describe("Input test", () => { x.object.equals(proc.ty), ) .map((x) => x.subject); - const processorLens = config.lenses[proc.ty.value]; - + found.push( ...subjects.map((id) => processorLens.execute({ id, quads: quads }), ), ); } + expect(found.length).toBe(2); + expect((<{ msg: string, output: { id: NamedNode, ty: NamedNode } }>found[0]).msg).toBe("Hello"); + expect((<{ msg: string, output: { id: NamedNode, ty: NamedNode } }>found[0]).output.id).toBeDefined(); + expect((<{ msg: string, output: { id: NamedNode, ty: NamedNode } }>found[0]).output.ty.value) + .toBe(RDFC_JS.JSWriterChannel.value); }); }); diff --git a/test/connectors/file.test.ts b/test/connectors/file.test.ts index 93fe95e..fde228b 100644 --- a/test/connectors/file.test.ts +++ b/test/connectors/file.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "vitest"; import { writeFile } from "fs/promises"; import { FileReaderConfig, FileWriterConfig } from "../../src/connectors/file"; import * as conn from "../../src/connectors"; -import { namedNode } from "../../src/util"; +import { namedNode, RDFC } from "../../src/util"; describe("File Channel", () => { test("Reader - Writer", async () => { @@ -25,7 +25,7 @@ describe("File Channel", () => { const reader = factory.createReader({ config, id: namedNode("reader"), - ty: conn.Conn.FileReaderChannel, + ty: RDFC.FileReaderChannel, }); expect(reader).toBeInstanceOf(conn.SimpleStream); @@ -36,7 +36,7 @@ describe("File Channel", () => { const writer = factory.createWriter({ config: writerConfig, id: namedNode("writer"), - ty: conn.Conn.FileWriterChannel, + ty: RDFC.FileWriterChannel, }); await factory.init(); await writer.push("Number 1 " + Math.random()); diff --git a/test/connectors/http.test.ts b/test/connectors/http.test.ts index fa4c864..f64529a 100644 --- a/test/connectors/http.test.ts +++ b/test/connectors/http.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "vitest"; import * as conn from "../../src/connectors"; import { HttpReaderConfig, HttpWriterConfig } from "../../src/connectors/http"; -import { namedNode } from "../../src/util"; +import { namedNode, RDFC } from "../../src/util"; describe("connector-http", () => { test("Should write -> HTTP -> read (string)", async () => { @@ -19,12 +19,12 @@ describe("connector-http", () => { const reader = factory.createReader({ config: readerConfig, id: namedNode("reader"), - ty: conn.Conn.HttpReaderChannel, + ty: RDFC.HttpReaderChannel, }); const writer = factory.createWriter({ config: writerConfig, id: namedNode("writer"), - ty: conn.Conn.HttpWriterChannel, + ty: RDFC.HttpWriterChannel, }); reader.data((data) => { @@ -61,12 +61,12 @@ describe("connector-http", () => { const reader = factory.createReader({ config: readerConfig, id: namedNode("reader"), - ty: conn.Conn.HttpReaderChannel, + ty: RDFC.HttpReaderChannel, }); const writer = factory.createWriter({ config: writerConfig, id: namedNode("writer"), - ty: conn.Conn.HttpWriterChannel, + ty: RDFC.HttpWriterChannel, }); reader.data((data) => { @@ -104,12 +104,12 @@ describe("connector-http", () => { const reader = factory.createReader({ config: readerConfig, id: namedNode("reader"), - ty: conn.Conn.HttpReaderChannel, + ty: RDFC.HttpReaderChannel, }); const writer = factory.createWriter({ config: writerConfig, id: namedNode("writer"), - ty: conn.Conn.HttpWriterChannel, + ty: RDFC.HttpWriterChannel, }); reader.data(async (data) => { @@ -145,7 +145,7 @@ describe("connector-http", () => { const reader = factory.createReader({ config: readerConfig, id: namedNode("reader"), - ty: conn.Conn.HttpReaderChannel, + ty: RDFC.HttpReaderChannel, }); reader.data((data) => { diff --git a/test/connectors/ws.test.ts b/test/connectors/ws.test.ts index 07bbbe9..9f79c63 100644 --- a/test/connectors/ws.test.ts +++ b/test/connectors/ws.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "vitest"; import * as conn from "../../src/connectors"; import { WsReaderConfig, WsWriterConfig } from "../../src/connectors/ws"; -import { namedNode } from "../../src/util"; +import { namedNode, RDFC } from "../../src/util"; describe("connector-ws", () => { test("Should write -> WebSocket -> read", async () => { @@ -18,12 +18,12 @@ describe("connector-ws", () => { const reader = factory.createReader({ config: readerConfig, id: namedNode("reader"), - ty: conn.Conn.WsReaderChannel, + ty: RDFC.WebSocketReaderChannel, }); const writer = factory.createWriter({ config: writerConfig, id: namedNode("writer"), - ty: conn.Conn.WsWriterChannel, + ty: RDFC.WebSocketWriterChannel, }); const items: unknown[] = []; reader.data((x) => { diff --git a/test/models.test.ts b/test/models.test.ts index 06c8027..1a207d3 100644 --- a/test/models.test.ts +++ b/test/models.test.ts @@ -1,11 +1,11 @@ import { describe, expect, test } from "vitest"; const prefixes = ` -@prefix js: . +@prefix rdfc-js: . @prefix fno: . @prefix fnom: . @prefix xsd: . -@prefix : . +@prefix rdfc: . @prefix sh: . `; @@ -14,34 +14,34 @@ describe("Processor Lens", () => { const turtle = ` ${prefixes} -js:Echo a js:JsProcess; - js:file <./test.js>; - js:function "echo"; - js:location <./>; - js:mapping [ - a fno:Mapping; - fno:parameterMapping [ - a fnom:PositionParameterMapping ; - fnom:functionParameter js:input ; - fnom:implementationParameterPosition "0"^^xsd:int - ], [ - a fnom:PositionParameterMapping ; - fnom:functionParameter js:output ; - fnom:implementationParameterPosition "1"^^xsd:int - ] +rdfc-js:Echo a rdfc-js:Processor; + rdfc-js:file <./test.js>; + rdfc-js:function "echo"; + rdfc-js:location <./>; + rdfc-js:mapping [ + a fno:Mapping; + fno:parameterMapping [ + a fnom:PositionParameterMapping ; + fnom:functionParameter js:input ; + fnom:implementationParameterPosition "0"^^xsd:integer + ], [ + a fnom:PositionParameterMapping ; + fnom:functionParameter js:output ; + fnom:implementationParameterPosition "1"^^xsd:integer + ] ]. [] a sh:NodeShape; - sh:targetClass js:Echo; - sh:property [ - sh:class :ReaderChannel; - sh:path js:input; - sh:name "Input Channel" - ], [ - sh:class :WriterChannel; - sh:path js:output; - sh:name "Output Channel" - ]. + sh:targetClass rdfc-js:Echo; + sh:property [ + sh:class rdfc:ReaderChannel; + sh:path rdfc-js:input; + sh:name "Input Channel" + ], [ + sh:class rdfc:WriterChannel; + sh:path rdfc-js:output; + sh:name "Output Channel" + ]. `; // const quads = new Parser().parse(turtle); // diff --git a/test/processors.test.ts b/test/processors.test.ts index 0aa89cb..606e57e 100644 --- a/test/processors.test.ts +++ b/test/processors.test.ts @@ -1,9 +1,15 @@ import { describe, expect, test } from "vitest"; import { extractProcessors, extractSteps, Source } from "../src/index"; + +type ChannelArg = { + config: { channel: { id: string } }; + ty: string; +}; + const prefixes = ` -@prefix js: . +@prefix rdfc-js: . @prefix ws: . -@prefix : . +@prefix rdfc: . @prefix owl: . @prefix rdfs: . @prefix xsd: . @@ -11,18 +17,18 @@ const prefixes = ` @prefix rdfl: . `; -const JS = "https://w3id.org/conn/js#"; +const JS = "https://w3id.org/rdf-connect/js#"; describe("test existing processors", () => { test("resc.ttl", async () => { const value = `${prefixes} <> owl:imports <./ontology.ttl>, <./processor/resc.ttl>. -[ ] a :Channel; - :reader ; - :writer . - a js:JsReaderChannel. -[ ] a js:Resc; - js:rescReader . +[ ] a rdfc-js:JSChannel; + rdfc:reader ; + rdfc:writer . + a rdfc-js:JSReaderChannel. +[ ] a rdfc-js:Resc; + rdfc-js:rescReader . `; const baseIRI = process.cwd() + "/config.ttl"; @@ -47,23 +53,23 @@ describe("test existing processors", () => { const [[arg]] = argss; expect(arg).toBeInstanceOf(Object); - expect(arg.config.channel).toBeDefined(); - expect(arg.config.channel.id).toBeDefined(); - expect(arg.ty).toBeDefined(); + expect((arg).config.channel).toBeDefined(); + expect((arg).config.channel.id).toBeDefined(); + expect((arg).ty).toBeDefined(); }); test("send.ttl", async () => { const value = `${prefixes} <> owl:imports <./ontology.ttl>, <./processor/send.ttl> . -[ ] a :Channel; - :reader ; - :writer . - a js:JsReaderChannel. - a js:JsWriterChannel. -[ ] a js:Send; - js:msg "Hello world!"; - js:sendWriter . +[ ] a rdfc-js:JSChannel; + rdfc:reader ; + rdfc:writer . + a rdfc-js:JSReaderChannel. + a rdfc-js:JSWriterChannel. +[ ] a rdfc-js:Send; + rdfc-js:msg "Hello world!"; + rdfc-js:sendWriter . `; const baseIRI = process.cwd() + "/config.ttl"; @@ -89,27 +95,27 @@ describe("test existing processors", () => { const [[msg, writer]] = argss; expect(msg).toBe("Hello world!"); expect(writer).toBeInstanceOf(Object); - expect(writer.config.channel).toBeDefined(); - expect(writer.config.channel.id).toBeDefined(); - expect(writer.ty).toBeDefined(); + expect((writer).config.channel).toBeDefined(); + expect((writer).config.channel.id).toBeDefined(); + expect((writer).ty).toBeDefined(); }); describe("send.ttl from env", async () => { const value = `${prefixes} <> owl:imports <./ontology.ttl>, <./processor/send.ttl> . -[ ] a :Channel; - :reader ; - :writer . - a js:JsReaderChannel. - a js:JsWriterChannel. -[ ] a js:Send; - js:msg [ - a rdfl:EnvVariable; - rdfl:envDefault "FromEnv"; - rdfl:envKey "msg" - ]; - js:sendWriter . +[ ] a rdfc-js:JSChannel; + rdfc:reader ; + rdfc:writer . + a rdfc-js:JSReaderChannel. + a rdfc-js:JSWriterChannel. +[ ] a rdfc-js:Send; + rdfc-js:msg [ + a rdfl:EnvVariable; + rdfl:envDefault "FromEnv"; + rdfl:envKey "msg" + ]; + rdfc-js:sendWriter . `; const baseIRI = process.cwd() + "/config.ttl"; @@ -136,9 +142,9 @@ describe("test existing processors", () => { const [[msg, writer]] = argss; expect(msg).toBe("FromEnv"); expect(writer).toBeInstanceOf(Object); - expect(writer.config.channel).toBeDefined(); - expect(writer.config.channel.id).toBeDefined(); - expect(writer.ty).toBeDefined(); + expect((writer).config.channel).toBeDefined(); + expect((writer).config.channel.id).toBeDefined(); + expect((writer).ty).toBeDefined(); }); test("Env value", () => { @@ -153,9 +159,9 @@ describe("test existing processors", () => { const [[msg, writer]] = argss; expect(msg).toBe("FROM ENV"); expect(writer).toBeInstanceOf(Object); - expect(writer.config.channel).toBeDefined(); - expect(writer.config.channel.id).toBeDefined(); - expect(writer.ty).toBeDefined(); + expect((<{ config: { channel: { id: string } }, ty: string }>writer).config.channel).toBeDefined(); + expect((<{ config: { channel: { id: string } }, ty: string }>writer).config.channel.id).toBeDefined(); + expect((<{ config: { channel: { id: string } }, ty: string }>writer).ty).toBeDefined(); }); }); @@ -163,16 +169,16 @@ describe("test existing processors", () => { const value = `${prefixes} <> owl:imports <./ontology.ttl>, <./processor/echo.ttl> . -[ ] a :Channel; - :reader ; - :writer . +[ ] a rdfc-js:JSChannel; + rdfc:reader ; + rdfc:writer . - a js:JsReaderChannel. - a js:JsWriterChannel. + a rdfc-js:JSReaderChannel. + a rdfc-js:JSWriterChannel. -[ ] a js:Echo; - js:input ; - js:output . +[ ] a rdfc-js:Echo; + rdfc-js:input ; + rdfc-js:output . `; const baseIRI = process.cwd() + "/config.ttl"; @@ -197,13 +203,13 @@ describe("test existing processors", () => { const [[reader, writer]] = argss; expect(reader).toBeInstanceOf(Object); - expect(reader.config.channel).toBeDefined(); - expect(reader.config.channel.id).toBeDefined(); - expect(reader.ty).toBeDefined(); + expect((reader).config.channel).toBeDefined(); + expect((reader).config.channel.id).toBeDefined(); + expect((reader).ty).toBeDefined(); expect(writer).toBeInstanceOf(Object); - expect(writer.config.channel).toBeDefined(); - expect(writer.config.channel.id).toBeDefined(); - expect(writer.ty).toBeDefined(); + expect((reader).config.channel).toBeDefined(); + expect((reader).config.channel.id).toBeDefined(); + expect((reader).ty).toBeDefined(); }); }); From 6df6f2e9b44d12f9563d0269aec4f56834438e33 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sun, 4 Aug 2024 18:43:11 +0200 Subject: [PATCH 04/10] 0.3.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6099ba7..f5dfb86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@rdfc/js-runner", - "version": "0.2.1", + "version": "0.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@rdfc/js-runner", - "version": "0.2.1", + "version": "0.3.0", "license": "MIT", "dependencies": { "@rdfjs/types": "^1.1.0", diff --git a/package.json b/package.json index b078407..c308cdd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rdfc/js-runner", - "version": "0.2.1", + "version": "0.3.0", "type": "module", "exports": { "import": "./dist/index.js", From 6140df9b5a7d1433254e62d8bbfb902cac41a5de Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sun, 4 Aug 2024 18:43:30 +0200 Subject: [PATCH 05/10] 1.0.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5dfb86..75e5e8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@rdfc/js-runner", - "version": "0.3.0", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@rdfc/js-runner", - "version": "0.3.0", + "version": "1.0.0", "license": "MIT", "dependencies": { "@rdfjs/types": "^1.1.0", diff --git a/package.json b/package.json index c308cdd..53419f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rdfc/js-runner", - "version": "0.3.0", + "version": "1.0.0", "type": "module", "exports": { "import": "./dist/index.js", From 830233261c4373ecbe37034bee4e7dae0672ae02 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sun, 4 Aug 2024 18:54:04 +0200 Subject: [PATCH 06/10] Updgrade bun version --- bun.lockb | Bin 258449 -> 248738 bytes package-lock.json | 723 ++++++++++++++-------------------------------- 2 files changed, 209 insertions(+), 514 deletions(-) diff --git a/bun.lockb b/bun.lockb index c3fd67dc33d5082145bcdadc2a5c064b532edf0a..b1bff24de0f73dab589a6e395b353fffc7143fa7 100755 GIT binary patch literal 248738 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
; + rdfc:writer . +
a rdfc:HttpReaderChannel ; + rdfc:httpPort 8081 . + a rdfc:HttpWriterChannel ; + rdfc:httpEndpoint "http://localhost:8081" ; + rdfc:httpMethod "POST" . + +# WebSocket channel +[ ] a rdfc:WebSocketChannel ; + rdfc:reader ; + rdfc:writer . + a rdfc:WebSocketReaderChannel ; + rdfc:wsPort 8083 ; + rdfc:wsHost "localhost" . + a rdfc:WebSocketWriterChannel ; + rdfc:wsUrl "ws://localhost:8083" . + +# File channel +[ ] a rdfc:FileChannel ; + rdfc:reader ; + rdfc:writer . + a rdfc:FileReaderChannel ; + rdfc:filePath "../examples/file.txt" ; + rdfc:fileOnReplace true . + a rdfc:FileWriterChannel ; + rdfc:filePath "../examples/file.txt" ; + rdfc:fileOnReplace true . + +################################# +## Processors +################################# + +# Send message +[ ] a rdfc-js:Send ; + rdfc-js:msg "RDF-Connect says: " ; + rdfc-js:sendWriter . + +# Echo 1 +[ ] a rdfc-js:Echo ; + rdfc-js:input ; + rdfc-js:output . + +# Echo 2 +[ ] a rdfc-js:Echo ; + rdfc-js:input
; + rdfc-js:output . + +# Echo 3 +[ ] a rdfc-js:Echo ; + rdfc-js:input ; + rdfc-js:output . + +# Write to console +[ ] a rdfc-js:Resc ; + rdfc-js:rescReader . \ No newline at end of file diff --git a/processor/test.js b/processor/test.js index 2fa2edd..06981e7 100644 --- a/processor/test.js +++ b/processor/test.js @@ -28,7 +28,7 @@ export async function send(msg, writer) { }); }); - return () => writer.push("Hallo!"); + return () => writer.push(`${msg} Hallo!`); } export function resc(reader) { From b5836b1f3d473fc18ac8cfd7945a6317437bb67f Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Mon, 5 Aug 2024 17:12:00 +0200 Subject: [PATCH 10/10] Reorganize examples --- input.ttl => examples/simple.ttl | 8 ++++---- test/configuration.test.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) rename input.ttl => examples/simple.ttl (82%) diff --git a/input.ttl b/examples/simple.ttl similarity index 82% rename from input.ttl rename to examples/simple.ttl index 2a26e91..ed9c632 100644 --- a/input.ttl +++ b/examples/simple.ttl @@ -5,10 +5,10 @@ @prefix xsd: . @prefix sh: . -<> owl:imports <./processor/echo.ttl>, - <./processor/send.ttl>, - <./processor/resc.ttl>, - <./ontology.ttl> . +<> owl:imports + <../processor/send.ttl>, + <../processor/resc.ttl>, + <../ontology.ttl> . [ ] a rdfc-js:JSChannel ; rdfc:reader ; diff --git a/test/configuration.test.ts b/test/configuration.test.ts index c589750..c4662c3 100644 --- a/test/configuration.test.ts +++ b/test/configuration.test.ts @@ -52,7 +52,7 @@ describe("Input test", () => { await load_store({ type: "remote", - location: safeJoin(process.cwd(), "input.ttl") + location: safeJoin(process.cwd(), "examples/simple.ttl") }, store); const quads = store.getQuads(null, null, null, null);

-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 diff --git a/package-lock.json b/package-lock.json index e8c69f8..35aef42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -957,24 +957,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/eslintrc": { "version": "3.1.0", "license": "MIT", @@ -996,34 +978,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/js": { "version": "9.8.0", "license": "MIT", @@ -1050,24 +1004,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "license": "Apache-2.0", @@ -1131,31 +1067,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@isaacs/cliui/node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "dev": true, @@ -1208,31 +1119,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "dev": true, @@ -2293,26 +2179,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/babel-plugin-istanbul/node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/test-exclude/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "dev": true, @@ -2367,6 +2233,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/braces": { "version": "3.0.3", "license": "MIT", @@ -2606,48 +2480,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.3.0", - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/color-convert": { "version": "2.0.1", "license": "MIT", @@ -2863,6 +2695,10 @@ "dev": true, "license": "ISC" }, + "node_modules/emoji-regex": { + "version": "10.3.0", + "license": "MIT" + }, "node_modules/entities": { "version": "4.5.0", "license": "BSD-2-Clause", @@ -3010,15 +2846,7 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { + "node_modules/eslint-visitor-keys": { "version": "4.0.0", "license": "Apache-2.0", "engines": { @@ -3098,16 +2926,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "10.1.0", "license": "BSD-2-Clause", @@ -3123,16 +2941,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "dev": true, @@ -3475,6 +3283,16 @@ "balanced-match": "^1.0.0" } }, + "node_modules/globals": { + "version": "14.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globby": { "version": "11.1.0", "license": "MIT", @@ -3532,11 +3350,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "license": "ISC" - }, "node_modules/html-escaper": { "version": "2.0.2", "license": "MIT" @@ -3976,6 +3789,10 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-tokens": { + "version": "9.0.0", + "license": "MIT" + }, "node_modules/js-yaml": { "version": "4.1.0", "license": "MIT", @@ -4158,37 +3975,51 @@ "node": ">=18.0.0" } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/local-pkg": { + "version": "0.5.0", "license": "MIT", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/locate-path": { + "version": "7.2.0", + "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.3.0", + "node_modules/lodash.camelcase": { + "version": "4.3.0", "license": "MIT" }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", + "node_modules/lodash.merge": { + "version": "4.6.2", + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { "node": ">=18" @@ -4197,96 +4028,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/strip-ansi": { + "node_modules/log-update/node_modules/slice-ansi": { "version": "7.1.0", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/local-pkg": { - "version": "0.5.0", - "license": "MIT", - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "license": "MIT" - }, - "node_modules/log-update": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -4338,50 +4088,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/wrap-ansi/node_modules/string-width/node_modules/emoji-regex": { - "version": "10.3.0", - "license": "MIT" - }, "node_modules/loglevel": { "version": "1.9.1", "license": "MIT", @@ -4405,6 +4111,11 @@ "get-func-name": "^2.0.1" } }, + "node_modules/lru-cache": { + "version": "10.4.3", + "dev": true, + "license": "ISC" + }, "node_modules/magic-string": { "version": "0.30.11", "license": "MIT", @@ -4520,6 +4231,16 @@ "version": "1.0.1", "license": "ISC" }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minimist": { "version": "1.2.8", "license": "MIT", @@ -4698,26 +4419,25 @@ "node": ">= 0.8.0" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "dev": true, + "node_modules/p-limit": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", + "node_modules/p-locate": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "p-limit": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -4726,12 +4446,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate/node_modules/p-limit/node_modules/yocto-queue": { - "version": "1.1.1", + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, "engines": { - "node": ">=12.20" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4813,11 +4536,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "license": "ISC" - }, "node_modules/path-type": { "version": "4.0.0", "license": "MIT", @@ -5509,42 +5227,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rdf-lens/node_modules/@vitest/coverage-v8/node_modules/test-exclude/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/rdf-lens/node_modules/@vitest/coverage-v8/node_modules/test-exclude/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rdf-lens/node_modules/@vitest/coverage-v8/node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/rdf-lens/node_modules/@vitest/coverage-v8/node_modules/test-exclude/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/rdf-lens/node_modules/eslint": { "version": "8.57.0", "license": "MIT", @@ -5619,24 +5301,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/rdf-lens/node_modules/eslint/node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/rdf-lens/node_modules/eslint/node_modules/@eslint/eslintrc/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/rdf-lens/node_modules/eslint/node_modules/@eslint/js": { "version": "8.57.0", "license": "MIT", @@ -5798,31 +5462,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rdf-lens/node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/rdf-lens/node_modules/eslint/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rdf-lens/node_modules/type-detect": { - "version": "4.1.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/rdf-lens/node_modules/vitest": { "version": "1.6.0", "license": "MIT", @@ -6016,20 +5655,6 @@ "node": "*" } }, - "node_modules/rdf-lens/node_modules/vitest/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rdf-lens/node_modules/vitest/node_modules/tinypool": { "version": "0.8.4", "license": "MIT", @@ -6057,17 +5682,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/rdf-lens/node_modules/vitest/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rdf-string": { "version": "1.6.3", "license": "MIT", @@ -6274,24 +5888,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/rollup": { "version": "4.20.0", "license": "MIT", @@ -6346,6 +5942,24 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/semver": { "version": "7.6.3", "license": "ISC", @@ -6545,24 +6159,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/string-argv": { "version": "0.3.2", "license": "MIT", @@ -6570,6 +6166,21 @@ "node": ">=0.6.19" } }, + "node_modules/string-width": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", @@ -6597,6 +6208,29 @@ "node": ">=8" } }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "license": "MIT", @@ -6649,10 +6283,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.0", - "license": "MIT" - }, "node_modules/supports-color": { "version": "7.2.0", "license": "MIT", @@ -6868,6 +6498,13 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "4.23.0", "dev": true, @@ -7188,6 +6825,21 @@ "node": ">=12.17" } }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -7231,6 +6883,39 @@ "node": ">=8" } }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "license": "ISC" @@ -7296,6 +6981,16 @@ "engines": { "node": ">=6" } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } From 8af11e0527835fe79dab4ecd50b4aebfe670b488 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Mon, 5 Aug 2024 00:47:43 +0200 Subject: [PATCH 07/10] Adjust JS channel and processor instantiation --- src/connectors.ts | 16 +++++++--------- src/index.ts | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/connectors.ts b/src/connectors.ts index 7cdc2d3..88f71c7 100644 --- a/src/connectors.ts +++ b/src/connectors.ts @@ -51,9 +51,7 @@ export type WriterConstructor = (config: C) => { type JsChannel = { - channel: { - id: Term; - }; + channel: Term; }; export class ChannelFactory { @@ -96,8 +94,8 @@ export class ChannelFactory { if (config.ty.equals(RDFC_JS.JSReaderChannel)) { const c = config.config; if (c.channel) { - const id = c.channel.id.value; - if (c.channel.id.termType === "NamedNode") { + const id = c.channel.value; + if (c.channel.termType === "NamedNode") { if (!this.jsChannelsNamedNodes[id]) { this.jsChannelsNamedNodes[id] = new SimpleStream(); } @@ -105,7 +103,7 @@ export class ChannelFactory { return this.jsChannelsNamedNodes[id]; } - if (c.channel.id.termType === "BlankNode") { + if (c.channel.termType === "BlankNode") { if (!this.jsChannelsBlankNodes[id]) { this.jsChannelsBlankNodes[id] = new SimpleStream(); } @@ -157,8 +155,8 @@ export class ChannelFactory { if (config.ty.equals(RDFC_JS.JSWriterChannel)) { const c = config.config; if (c.channel) { - const id = c.channel.id.value; - if (c.channel.id.termType === "NamedNode") { + const id = c.channel.value; + if (c.channel.termType === "NamedNode") { if (!this.jsChannelsNamedNodes[id]) { this.jsChannelsNamedNodes[id] = new SimpleStream(); } @@ -166,7 +164,7 @@ export class ChannelFactory { return this.jsChannelsNamedNodes[id]; } - if (c.channel.id.termType === "BlankNode") { + if (c.channel.termType === "BlankNode") { if (!this.jsChannelsBlankNodes[id]) { this.jsChannelsBlankNodes[id] = new SimpleStream(); } diff --git a/src/index.ts b/src/index.ts index ab4b320..a3d34ba 100644 --- a/src/index.ts +++ b/src/index.ts @@ -109,8 +109,8 @@ export async function jsRunner() { const starts = []; for (const proc of processors) { const argss = extractSteps(proc, quads, config); - const jsProgram = await import("file://" + proc.file); - process.chdir(proc.location); + const jsProgram = await import(proc.file.startsWith("file://") ? proc.file : "file://" + proc.file); + process.chdir(proc.location.startsWith("file://") ? proc.location.slice(7) : proc.location); for (const args of argss) { starts.push(await jsProgram[proc.func](...args)); } From d1f93415510744139161efeaff15ef62bfea69a3 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Mon, 5 Aug 2024 16:43:54 +0200 Subject: [PATCH 08/10] Implement rdfc-js:Echo processor --- processor/test.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/processor/test.js b/processor/test.js index 19ec592..2fa2edd 100644 --- a/processor/test.js +++ b/processor/test.js @@ -34,3 +34,13 @@ export async function send(msg, writer) { export function resc(reader) { reader.data((x) => console.log("data", x)); } + +export async function echo(inputChannel, outputChannel) { + inputChannel.data(async (x) => { + await outputChannel.push(x); + }); + inputChannel.on("end", async () => { await outputChannel.end(); }); + if (inputChannel.lastElement) { + await outputChannel.push(inputChannel.lastElement); + } +} From 616040cb606abb55b5175ec637b7ac920f80f236 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Mon, 5 Aug 2024 17:06:35 +0200 Subject: [PATCH 09/10] Add example of complex multi-channel pipeline --- .gitignore | 2 + examples/multiple-channels.ttl | 85 ++++++++++++++++++++++++++++++++++ processor/test.js | 2 +- 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 examples/multiple-channels.ttl diff --git a/.gitignore b/.gitignore index 15c871e..8676f18 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ +examples/file.txt + bin/bundle.mjs # Outputs lib diff --git a/examples/multiple-channels.ttl b/examples/multiple-channels.ttl new file mode 100644 index 0000000..5b94c1f --- /dev/null +++ b/examples/multiple-channels.ttl @@ -0,0 +1,85 @@ +@prefix owl: . +@prefix xsd: . +@prefix sh: . +@prefix rdfc: . +@prefix rdfc-js: . + +################################# +## Entity definitions +################################# + +<> owl:imports + <../processor/echo.ttl>, + <../processor/send.ttl>, + <../processor/resc.ttl>, + <../ontology.ttl> . + +################################# +## Channels +################################# + +# JS in-memory channel +[ ] a rdfc-js:JSChannel ; + rdfc:reader ; + rdfc:writer . + a rdfc-js:JSReaderChannel . + a rdfc-js:JSWriterChannel . + +# HTTP channel +[ ] a rdfc:HttpChannel ; + rdfc:reader