diff --git a/AGENTS.md b/AGENTS.md index a5aa66c..c221edf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -40,7 +40,7 @@ src/ ├── constantes.ts # Constantes globais (enums, valores fixos) ├── situacoes.ts # Status/situações dos processos ├── tipagemRotas.ts # Tipagem forte de rotas da API -├── filtroDelta.ts # Sistema de filtros tipados (operadores PG) +├── tipoFiltro.26.ts # Sistema de filtros tipados (operadores PG) ├── uuid.ts # Geração e validação de UUIDs ├── dayjs26.ts # Wrapper do dayjs com locale e plugins ├── extensoes.ts # Extensões de tipos nativos diff --git a/Documentos/biome.json b/Documentos/biome.json index 6c65440..452bc19 100755 --- a/Documentos/biome.json +++ b/Documentos/biome.json @@ -45,7 +45,7 @@ "noExplicitAny": "off", "noApproximativeNumericConstant": "off", "noAsyncPromiseExecutor": "off", - "noEmptyBlockStatements": "off", + "noEmptyBlockStatements": "warn", "noConsole": "off", "noArrayIndexKey": "warn" }, @@ -57,13 +57,12 @@ "useArrowFunction": "error", "useDateNow": "off", "noUselessFragments": "off", - "noExcessiveCognitiveComplexity": "off", - "noImportantStyles": "off" + "noExcessiveCognitiveComplexity": "off" }, "performance": { "noAccumulatingSpread": "off", - "noDelete": "off" + "noDelete": "warn" }, "a11y": { diff --git a/README.md b/README.md index be02418..2c5cc88 100755 --- a/README.md +++ b/README.md @@ -118,9 +118,9 @@ pnpm add --save-dev --save-exact @biomejs/biome@2.4.0 --- -## ✅ Sistema de Filtros (filtroDelta) +## ✅ Sistema de Filtros (tipoFiltro26) -O sistema `filtroDelta` foi projetado para gerar automaticamente a tipagem de filtros compatíveis com operadores padrão do PostgreSQL, a partir de um tipo base `T`. +O sistema `tipoFiltro26` foi projetado para gerar automaticamente a tipagem de filtros compatíveis com operadores padrão do PostgreSQL, a partir de um tipo base `T`. **Principais características:** - Tipagem forte e segura (TypeScript) @@ -178,7 +178,7 @@ O sistema `filtroDelta` foi projetado para gerar automaticamente a tipagem de fi } ``` -### Operadores Suportados (`operadoresDelta`) +### Operadores Suportados (`operadores26`) - **Number**: `=`, `!=`, `>`, `>=`, `<`, `<=`, `in` - **String**: `=`, `!=`, `like`, `in` @@ -187,10 +187,10 @@ O sistema `filtroDelta` foi projetado para gerar automaticamente a tipagem de fi ### Validação em Tempo de Execução (Zod) ```typescript -import { zFiltroDelta } from "p-comuns" +import { zFiltro26 } from "p-comuns" // Valida a estrutura (não checa existência de colunas no DB) -zFiltroDelta.parse(objetoFiltro) +zFiltro26.parse(objetoFiltro) ``` --- diff --git a/dist-back/auditoria.js b/dist-back/auditoria.js deleted file mode 100644 index afc970d..0000000 --- a/dist-back/auditoria.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var auditoria_exports = {}; -module.exports = __toCommonJS(auditoria_exports); diff --git a/dist-back/consulta.js b/dist-back/consulta.js index 32efd58..5f4c424 100644 --- a/dist-back/consulta.js +++ b/dist-back/consulta.js @@ -44,21 +44,9 @@ var operadores = /* @__PURE__ */ ((operadores2) => { operadores2["like"] = "like"; operadores2["in"] = "in"; operadores2["isNull"] = "isNull"; - operadores2["notIn"] = "notIn"; return operadores2; })(operadores || {}); -const zOperadores = import_zod.default.enum([ - "=", - "!=", - ">", - ">=", - "<", - "<=", - "like", - "in", - "isNull", - "notIn" -]); +const zOperadores = import_zod.default.enum(["=", "!=", ">", ">=", "<", "<=", "like", "in", "isNull"]); const zFiltro = import_zod.default.object({ coluna: import_zod.default.string(), valor: import_zod.default.any(), diff --git a/dist-back/dayjs.js b/dist-back/dayjs.js deleted file mode 100644 index d88c318..0000000 --- a/dist-back/dayjs.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var dayjs_exports = {}; -__export(dayjs_exports, { - definirDayjsbr: () => definirDayjsbr -}); -module.exports = __toCommonJS(dayjs_exports); -var import_duration = __toESM(require("dayjs/plugin/duration")); -var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter")); -var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore")); -var import_minMax = __toESM(require("dayjs/plugin/minMax")); -var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime")); -var import_timezone = __toESM(require("dayjs/plugin/timezone")); -var import_utc = __toESM(require("dayjs/plugin/utc")); -var import_weekOfYear = __toESM(require("dayjs/plugin/weekOfYear")); -var import_pt_br = require("dayjs/locale/pt-br"); -const definirDayjsbr = (dayjsEntrada) => { - dayjsEntrada.locale("pt-br"); - dayjsEntrada.extend(import_utc.default); - dayjsEntrada.extend(import_timezone.default); - dayjsEntrada.extend(import_weekOfYear.default); - dayjsEntrada.extend(import_isSameOrBefore.default); - dayjsEntrada.extend(import_isSameOrAfter.default); - dayjsEntrada.extend(import_minMax.default); - dayjsEntrada.extend(import_relativeTime.default); - dayjsEntrada.extend(import_duration.default); - return dayjsEntrada; -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - definirDayjsbr -}); diff --git a/dist-back/dayjs26.js b/dist-back/dayjs26.js index c3606aa..da03329 100644 --- a/dist-back/dayjs26.js +++ b/dist-back/dayjs26.js @@ -18,11 +18,10 @@ var __copyProps = (to, from, except, desc) => { var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var dayjs26_exports = {}; __export(dayjs26_exports, { - defineDayjsBr: () => defineDayjsBr, - iniciarDayjsBr: () => iniciarDayjsBr + defineDayjsBr: () => defineDayjsBr }); module.exports = __toCommonJS(dayjs26_exports); -const iniciarDayjsBr = ({ +const defineDayjsBr = ({ dayjs, duration, isSameOrAfter, @@ -44,9 +43,7 @@ const iniciarDayjsBr = ({ dayjs.locale("pt-br"); return dayjs; }; -const defineDayjsBr = iniciarDayjsBr; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { - defineDayjsBr, - iniciarDayjsBr + defineDayjsBr }); diff --git a/dist-back/eLog.js b/dist-back/eLog.js deleted file mode 100644 index fadcb9e..0000000 --- a/dist-back/eLog.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var eLog_exports = {}; -__export(eLog_exports, { - NivelLog: () => NivelLog, - NivelLogDetalhes: () => NivelLogDetalhes, - iniciarELog: () => iniciarELog -}); -module.exports = __toCommonJS(eLog_exports); -var NivelLog = /* @__PURE__ */ ((NivelLog2) => { - NivelLog2["RASTREAMENTO"] = "RASTREAMENTO"; - NivelLog2["DEPURACAO"] = "DEPURACAO"; - NivelLog2["INFORMACAO"] = "INFORMACAO"; - NivelLog2["AVISO"] = "AVISO"; - NivelLog2["ERRO"] = "ERRO"; - NivelLog2["CRITICO"] = "CRITICO"; - return NivelLog2; -})(NivelLog || {}); -const NivelLogDetalhes = { - ["RASTREAMENTO" /* RASTREAMENTO */]: { peso: 1, rotulo: "Rastreamento", emoji: "\u{1F50D}", metodo: "debug" }, - ["DEPURACAO" /* DEPURACAO */]: { peso: 2, rotulo: "Depura\xE7\xE3o", emoji: "\u{1F41B}", metodo: "debug" }, - ["INFORMACAO" /* INFORMACAO */]: { peso: 3, rotulo: "Informa\xE7\xE3o", emoji: "\u2139\uFE0F", metodo: "info" }, - ["AVISO" /* AVISO */]: { peso: 4, rotulo: "Aviso", emoji: "\u26A0\uFE0F", metodo: "warn" }, - ["ERRO" /* ERRO */]: { peso: 5, rotulo: "Erro", emoji: "\u274C", metodo: "error" }, - ["CRITICO" /* CRITICO */]: { peso: 6, rotulo: "Cr\xEDtico", emoji: "\u{1F525}", metodo: "error" } -}; -const iniciarELog = (opcoes) => { - const nivel = opcoes.nivelMinimo ?? "INFORMACAO" /* INFORMACAO */; - const pesoMinimo = NivelLogDetalhes[nivel].peso; - const emitir = (nivelLog, pr) => { - const config = NivelLogDetalhes[nivelLog]; - if (config.peso < pesoMinimo) return; - const entrada = { - timestamp: (/* @__PURE__ */ new Date()).toISOString(), - nivel: nivelLog, - app: opcoes.app, - origem: pr.origem, - mensagem: pr.mensagem, - ...pr.dados !== void 0 ? { dados: pr.dados } : {} - }; - console[config.metodo]( - `${config.emoji} [${config.rotulo}] [${opcoes.app}] [${pr.origem}] ${pr.mensagem}`, - pr.dados !== void 0 ? pr.dados : "" - ); - if (opcoes.arquivamento) { - opcoes.arquivamento(entrada, { app: opcoes.app, nivelMinimo: nivel }); - } - }; - return { - rastreamento: (pr) => emitir("RASTREAMENTO" /* RASTREAMENTO */, pr), - depuracao: (pr) => emitir("DEPURACAO" /* DEPURACAO */, pr), - info: (pr) => emitir("INFORMACAO" /* INFORMACAO */, pr), - aviso: (pr) => emitir("AVISO" /* AVISO */, pr), - erro: (pr) => emitir("ERRO" /* ERRO */, pr), - critico: (pr) => emitir("CRITICO" /* CRITICO */, pr) - }; -}; -const _log = iniciarELog({ - app: "testando", - nivelMinimo: "INFORMACAO" /* INFORMACAO */, - arquivamento: () => { - } -}); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - NivelLog, - NivelLogDetalhes, - iniciarELog -}); diff --git a/dist-back/filtroDelta.js b/dist-back/filtroDelta.js deleted file mode 100644 index 9714ebc..0000000 --- a/dist-back/filtroDelta.js +++ /dev/null @@ -1,159 +0,0 @@ -"use strict"; -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var filtroDelta_exports = {}; -__export(filtroDelta_exports, { - criarFiltroDelta: () => criarFiltroDelta, - iniciarFiltroDelta: () => iniciarFiltroDelta, - operadorFiltroDeltaDetalhes: () => operadorFiltroDeltaDetalhes, - zColunaFiltroDelta: () => zColunaFiltroDelta, - zCondicaoFiltroDelta: () => zCondicaoFiltroDelta, - zFiltroDelta: () => zFiltroDelta, - zOperadorFiltroDelta: () => zOperadorFiltroDelta -}); -module.exports = __toCommonJS(filtroDelta_exports); -var import_zod = __toESM(require("zod")); -const zOperadorFiltroDelta = import_zod.default.enum([">", "<", ">=", "<=", "=", "!=", "in", "like", "\u2229"]); -const operadorFiltroDeltaDetalhes = { - ">": { - rotulo: "Maior que", - descricao: "O valor de A deve ser maior que o valor de B" - }, - "<": { - rotulo: "Menor que", - descricao: "O valor de A deve ser menor que o valor de B" - }, - ">=": { - rotulo: "Maior ou igual a", - descricao: "O valor de A deve ser maior ou igual ao valor de B" - }, - "<=": { - rotulo: "Menor ou igual a", - descricao: "O valor de A deve ser menor ou igual ao valor de B" - }, - "=": { - rotulo: "Igual a", - descricao: "O valor de A deve ser igual ao valor de B" - }, - "!=": { - rotulo: "Diferente de", - descricao: "O valor de A deve ser diferente do valor de B" - }, - in: { - rotulo: "Est\xE1 em", - descricao: "O valor de A deve estar presente na cole\xE7\xE3o ou lista definida em B" - }, - like: { - rotulo: "Cont\xE9m", - descricao: "O valor de A deve conter o texto informado em B" - }, - "\u2229": { - rotulo: "Interse\xE7\xE3o", - descricao: "A e B devem possuir pelo menos um elemento em comum" - } -}; -const regexIdCondicaoFiltroDelta = /^\{[\w:]+\}$/; -const regexColunaFiltroDelta = /^\w+(\.\w+)*$/; -const zColunaFiltroDelta = import_zod.default.string().regex(regexColunaFiltroDelta, "Coluna inv\xE1lida").describe("nome da coluna ou caminho aninhado do jsonb"); -const zCondicaoFiltroDelta = import_zod.default.object({ - /** - * Identificador único da condição. - * - * Exemplo: - * {1} - */ - id: import_zod.default.string().describe("id da condi\xE7\xE3o do filtro").regex(regexIdCondicaoFiltroDelta, "O id deve seguir o formato {identificador}"), - /** - * Nome da coluna ou caminho jsonb. - */ - coluna: zColunaFiltroDelta, - /** - * Operador da comparação. - */ - operador: zOperadorFiltroDelta, - /** - * Valor utilizado na comparação. - */ - valor: import_zod.default.any().describe("valor de compara\xE7\xE3o") -}); -const formulaFiltroDeltaValida = (formula) => { - const tokensPermitidos = formula.match(/\{[\w:]+\}|\bNAO\b|\bE\b|\bOU\b|\(|\)/g) || []; - const formulaReconstruida = tokensPermitidos.join(""); - const formulaOriginalSemEspacos = formula.replace(/\s+/g, ""); - const formulaReconstruidaSemEspacos = formulaReconstruida.replace(/\s+/g, ""); - if (formulaOriginalSemEspacos !== formulaReconstruidaSemEspacos) { - return false; - } - const expressaoLogica = formula.replace(/\{[\w:]+\}/g, "true").replace(/\bNAO\b/g, "!").replace(/\bE\b/g, "&&").replace(/\bOU\b/g, "||"); - try { - new Function(`return (${expressaoLogica})`)(); - return true; - } catch { - return false; - } -}; -const zFiltroDelta = import_zod.default.object({ - /** - * Lista de condições disponíveis. - */ - condicoes: import_zod.default.array(zCondicaoFiltroDelta), - /** - * Fórmula lógica que combina as condições. - */ - formula: import_zod.default.string().refine(formulaFiltroDeltaValida, { - message: "F\xF3rmula inv\xE1lida. Use apenas refer\xEAncias de condi\xE7\xF5es {id} ou {id:sufixo}, operadores E/OU/NAO e par\xEAnteses." - }) -}).superRefine((value, ctx) => { - const idsCondicoes = new Set(value.condicoes.map((condicao) => condicao.id)); - const referenciasFormula = value.formula.match(/\{[\w:]+\}/g) || []; - for (const referencia of referenciasFormula) { - if (!idsCondicoes.has(referencia)) { - ctx.addIssue({ - code: "custom", - path: ["formula"], - message: `A refer\xEAncia ${referencia} n\xE3o existe em condicoes.` - }); - } - } -}); -const criarFiltroDelta = (filtro) => zFiltroDelta.parse(filtro); -const iniciarFiltroDelta = () => { - return { - criarFiltroDelta - }; -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - criarFiltroDelta, - iniciarFiltroDelta, - operadorFiltroDeltaDetalhes, - zColunaFiltroDelta, - zCondicaoFiltroDelta, - zFiltroDelta, - zOperadorFiltroDelta -}); diff --git a/dist-back/index.js b/dist-back/index.js index 0526ae9..fa4757d 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -16,16 +16,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru var index_exports = {}; module.exports = __toCommonJS(index_exports); __reExport(index_exports, require("./aleatorio"), module.exports); -__reExport(index_exports, require("./auditoria"), module.exports); __reExport(index_exports, require("./cacheMemoria"), module.exports); __reExport(index_exports, require("./constantes"), module.exports); __reExport(index_exports, require("./consulta"), module.exports); __reExport(index_exports, require("./dayjs26"), module.exports); __reExport(index_exports, require("./ecosistema"), module.exports); -__reExport(index_exports, require("./eLog"), module.exports); __reExport(index_exports, require("./extensoes"), module.exports); __reExport(index_exports, require("./extensoes"), module.exports); -__reExport(index_exports, require("./filtroDelta"), module.exports); __reExport(index_exports, require("./local"), module.exports); __reExport(index_exports, require("./postgres"), module.exports); __reExport(index_exports, require("./produtos"), module.exports); @@ -34,25 +31,20 @@ __reExport(index_exports, require("./testes-de-variaveis"), module.exports); __reExport(index_exports, require("./texto_busca"), module.exports); __reExport(index_exports, require("./tipagemRotas"), module.exports); __reExport(index_exports, require("./tipagemRotas"), module.exports); +__reExport(index_exports, require("./tipoFiltro.26"), module.exports); __reExport(index_exports, require("./unidades_medida"), module.exports); __reExport(index_exports, require("./uuid"), module.exports); __reExport(index_exports, require("./variaveisComuns"), module.exports); -__reExport(index_exports, require("./zCoordenadas"), module.exports); -__reExport(index_exports, require("./zDocumento"), module.exports); -__reExport(index_exports, require("./zodCustomizados"), module.exports); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { ...require("./aleatorio"), - ...require("./auditoria"), ...require("./cacheMemoria"), ...require("./constantes"), ...require("./consulta"), ...require("./dayjs26"), ...require("./ecosistema"), - ...require("./eLog"), ...require("./extensoes"), ...require("./extensoes"), - ...require("./filtroDelta"), ...require("./local"), ...require("./postgres"), ...require("./produtos"), @@ -61,10 +53,8 @@ __reExport(index_exports, require("./zodCustomizados"), module.exports); ...require("./texto_busca"), ...require("./tipagemRotas"), ...require("./tipagemRotas"), + ...require("./tipoFiltro.26"), ...require("./unidades_medida"), ...require("./uuid"), - ...require("./variaveisComuns"), - ...require("./zCoordenadas"), - ...require("./zDocumento"), - ...require("./zodCustomizados") + ...require("./variaveisComuns") }); diff --git a/dist-back/tipoFiltro.26.js b/dist-back/tipoFiltro.26.js new file mode 100644 index 0000000..fe14814 --- /dev/null +++ b/dist-back/tipoFiltro.26.js @@ -0,0 +1,72 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var tipoFiltro_26_exports = {}; +__export(tipoFiltro_26_exports, { + agrupadores26: () => agrupadores26, + criarFiltro26: () => criarFiltro26, + operadores26: () => operadores26, + zFiltro26: () => zFiltro26 +}); +module.exports = __toCommonJS(tipoFiltro_26_exports); +var import_zod = require("zod"); +var operadores26 = /* @__PURE__ */ ((operadores262) => { + operadores262["="] = "="; + operadores262["!="] = "!="; + operadores262[">"] = ">"; + operadores262[">="] = ">="; + operadores262["<"] = "<"; + operadores262["<="] = "<="; + operadores262["like"] = "like"; + operadores262["in"] = "in"; + return operadores262; +})(operadores26 || {}); +var agrupadores26 = /* @__PURE__ */ ((agrupadores262) => { + agrupadores262["E"] = "E"; + agrupadores262["OU"] = "OU"; + return agrupadores262; +})(agrupadores26 || {}); +const zOperadores = import_zod.z.nativeEnum(operadores26); +const zValor = import_zod.z.any(); +const zCondicao = import_zod.z.record(zOperadores, zValor); +const zFiltro26 = import_zod.z.lazy( + () => import_zod.z.object({ + E: import_zod.z.array(zFiltro26).optional(), + OU: import_zod.z.array(zFiltro26).optional() + }).catchall(import_zod.z.union([zCondicao, zFiltro26])) +); +const criarFiltro26 = (filtro) => filtro; +const _filtro = criarFiltro26({ + idade: { [">=" /* >= */]: 18 }, + ["OU" /* OU */]: [ + { nome: { ["like" /* like */]: "%pa%" } }, + { + ["E" /* E */]: [ + { carro: { ano: { ["=" /* = */]: 2020 } } }, + { carro: { modelo: { ["in" /* in */]: ["Civic", "Corolla"] } } } + ] + } + ] +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + agrupadores26, + criarFiltro26, + operadores26, + zFiltro26 +}); diff --git a/dist-back/uuid.js b/dist-back/uuid.js index d87f43c..6d8dfc0 100644 --- a/dist-back/uuid.js +++ b/dist-back/uuid.js @@ -25,143 +25,22 @@ __export(uuid_exports, { validarUuid: () => validarUuid }); module.exports = __toCommonJS(uuid_exports); +var import_uuid = require("uuid"); const erUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; const validarUuid = (uuid2) => { - return erUuid.test(String(uuid2 || "")); -}; -const uuidV4 = () => globalThis.crypto.randomUUID(); -const uuid = uuidV4; -const NIL_UUID = "00000000-0000-0000-0000-000000000000"; -const rotL = (x, n) => x << n | x >>> 32 - n; -const md5 = (str) => { - const msg = new TextEncoder().encode(str); - const len = msg.length; - const bits = len * 8; - const padLen = len % 64 < 56 ? 56 - len % 64 : 120 - len % 64; - const padded = new Uint8Array(len + padLen + 8); - padded.set(msg); - padded[len] = 128; - const dv = new DataView(padded.buffer); - dv.setUint32(len + padLen, bits >>> 0, true); - dv.setUint32(len + padLen + 4, Math.floor(bits / 2 ** 32), true); - const T = Array.from( - { length: 64 }, - (_, i) => Math.abs(Math.sin(i + 1)) * 2 ** 32 >>> 0 - ); - const S = [ - 7, - 12, - 17, - 22, - 7, - 12, - 17, - 22, - 7, - 12, - 17, - 22, - 7, - 12, - 17, - 22, - 5, - 9, - 14, - 20, - 5, - 9, - 14, - 20, - 5, - 9, - 14, - 20, - 5, - 9, - 14, - 20, - 4, - 11, - 16, - 23, - 4, - 11, - 16, - 23, - 4, - 11, - 16, - 23, - 4, - 11, - 16, - 23, - 6, - 10, - 15, - 21, - 6, - 10, - 15, - 21, - 6, - 10, - 15, - 21, - 6, - 10, - 15, - 21 - ]; - let a0 = 1732584193, b0 = 4023233417, c0 = 2562383102, d0 = 271733878; - for (let off = 0; off < padded.length; off += 64) { - const M = []; - for (let j = 0; j < 16; j++) M[j] = dv.getUint32(off + j * 4, true); - let [A, B, C, D] = [a0, b0, c0, d0]; - for (let i = 0; i < 64; i++) { - let F, g; - if (i < 16) { - F = B & C | ~B & D; - g = i; - } else if (i < 32) { - F = D & B | ~D & C; - g = (5 * i + 1) % 16; - } else if (i < 48) { - F = B ^ C ^ D; - g = (3 * i + 5) % 16; - } else { - F = C ^ (B | ~D); - g = 7 * i % 16; - } - F = F + A + T[i] + M[g] >>> 0; - A = D; - D = C; - C = B; - B = B + rotL(F, S[i]) >>> 0; - } - a0 = a0 + A >>> 0; - b0 = b0 + B >>> 0; - c0 = c0 + C >>> 0; - d0 = d0 + D >>> 0; - } - const toHexLE = (n) => { - let s = ""; - for (let i = 0; i < 4; i++) s += (n >>> i * 8 & 255).toString(16).padStart(2, "0"); - return s; - }; - return toHexLE(a0) + toHexLE(b0) + toHexLE(c0) + toHexLE(d0); -}; -const formatarUuidV3 = (hash) => { - const c = hash.slice(0, 32); - const v = (Number.parseInt(c[16], 16) & 3 | 8).toString(16); - return `${c.slice(0, 8)}-${c.slice(8, 12)}-3${c.slice(13, 16)}-${v}${c.slice(17, 20)}-${c.slice(20, 32)}`; + const retorno = erUuid.test(String(uuid2 || "")); + return retorno; }; const uuidV3 = (chave, grupo) => { - const namespace = grupo ? uuidV3(grupo) : NIL_UUID; - const input = typeof chave === "string" ? chave : typeof chave === "number" ? String(chave) : JSON.stringify(chave); - return formatarUuidV3(md5(namespace + input)); + return (0, import_uuid.v3)( + // Converte a chave para string (de forma segura) + typeof chave === "string" ? chave : typeof chave === "number" ? String(chave) : JSON.stringify(chave), + // Se um grupo foi fornecido, gera um UUID v3 recursivamente com base nele, senão usa NIL + grupo ? uuidV3(grupo) : import_uuid.NIL + ); }; +const uuidV4 = import_uuid.v4; +const uuid = uuidV4; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { erUuid, diff --git a/dist-back/zCoordenadas.js b/dist-back/zCoordenadas.js deleted file mode 100644 index 38896c2..0000000 --- a/dist-back/zCoordenadas.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var zCoordenadas_exports = {}; -__export(zCoordenadas_exports, { - zCoordenadas: () => zCoordenadas -}); -module.exports = __toCommonJS(zCoordenadas_exports); -var import_zod = __toESM(require("zod")); -const zCoordenadas = import_zod.default.object({ - formato: import_zod.default.literal("decimal").default("decimal"), - datum: import_zod.default.literal("EPSG:4326").default("EPSG:4326"), - latitude: import_zod.default.number(), - longitude: import_zod.default.number() -}); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - zCoordenadas -}); diff --git a/dist-back/zDocumento.js b/dist-back/zDocumento.js deleted file mode 100644 index 2198ff0..0000000 --- a/dist-back/zDocumento.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var zDocumento_exports = {}; -__export(zDocumento_exports, { - zDocCnpj: () => zDocCnpj, - zDocCpf: () => zDocCpf, - zDocumento: () => zDocumento -}); -module.exports = __toCommonJS(zDocumento_exports); -var import_zod = __toESM(require("zod")); -const regexCnpjNumerico = /^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/; -const regexCnpjAlfanumerico = /^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/[A-Z0-9]{4}-\d{2}$/i; -const yyyymm = Number((/* @__PURE__ */ new Date()).toISOString().slice(0, 7).replace("-", "")); -const zDocCnpj = import_zod.default.string().regex(yyyymm < 202407 ? regexCnpjNumerico : regexCnpjAlfanumerico).describe("Documento (CNPJ) no formato XX.XXX.XXX/XXXX-XX"); -const zDocCpf = import_zod.default.string().regex(/^\d{3}\.\d{3}\.\d{3}-\d{2}$/).describe("Documento (CPF) no formato XXX.XXX.XXX-XX"); -const zDocumento = zDocCpf.or(zDocCnpj).describe("CPF ou CNPJ"); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - zDocCnpj, - zDocCpf, - zDocumento -}); diff --git a/dist-back/zodCustomizados.js b/dist-back/zodCustomizados.js deleted file mode 100644 index 56d1cdc..0000000 --- a/dist-back/zodCustomizados.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var zodCustomizados_exports = {}; -__export(zodCustomizados_exports, { - zNumero: () => zNumero, - zNumeroInteiro: () => zNumeroInteiro, - zNumeroPositivo: () => zNumeroPositivo -}); -module.exports = __toCommonJS(zodCustomizados_exports); -var import_zod = __toESM(require("zod")); -const zPreprocessarNumero = (p) => { - if (typeof p === "number") return p; - if (typeof p !== "string") return p; - let p2 = p; - if (p2.includes(",")) { - p2 = p2.replace(/\./g, "").replace(",", "."); - } - p2 = p2.replace(/[^0-9.]/g, ""); - if (p2 == "") return null; - return Number(p2); -}; -const zNumero = import_zod.default.preprocess(zPreprocessarNumero, import_zod.default.number()); -const zNumeroPositivo = import_zod.default.preprocess(zPreprocessarNumero, import_zod.default.number().positive()); -const zNumeroInteiro = import_zod.default.preprocess(zPreprocessarNumero, import_zod.default.number().int()); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - zNumero, - zNumeroInteiro, - zNumeroPositivo -}); diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts index 7850065..7a0301d 100644 --- a/dist-front/index.d.mts +++ b/dist-front/index.d.mts @@ -1,4 +1,4 @@ -import z from 'zod'; +import z, { z as z$1 } from 'zod'; import _dayjs from 'dayjs'; export { Dayjs, ManipulateType } from 'dayjs'; import _duration from 'dayjs/plugin/duration'; @@ -9,32 +9,10 @@ import _relativeTime from 'dayjs/plugin/relativeTime'; import _timezone from 'dayjs/plugin/timezone'; import _utc from 'dayjs/plugin/utc'; import _weekOfYear from 'dayjs/plugin/weekOfYear'; +import { v4 } from 'uuid'; declare const aleatorio: (tamanho?: number) => string; -type TipoPayloadAuditoria = { - /** UUID do registro de auditoria */ - codigo?: string | null; - /** UUID do usuario da acao (pode ser null se for processo do sistema que não registrou) */ - usuario_criacao: string | null; - /** Timestamp ou data de criacao / execucao */ - data_criacao: string | Date; - /** Nome exato da tabela no banco que originou o registro */ - tabela_origem: string; - /** Código único (UUID) do registro na tabela original */ - codigo_origem: string; - /** JSON contendo o snapshot das colunas novas / editadas */ - novo: Record; - /** JSON contendo o snapshot das colunas antes da edição */ - anterior: Record; - /** Hash ou controle de versao do item, usualmente preenchido por new.ver_seg */ - __versao: string; - /** Tipo de operação que gerou a auditoria */ - acao: "criar" | "atualizar" | "deletar" | string; - /** Versão do sistema no momento em que a ação ocorreu */ - versao_sistema: string; -}; - /** gerar uma função de cache para uso em memoria */ declare const cacheM: (chave: any, valor?: T, validadeSeg?: number) => T | undefined; declare const verCacheM: () => { @@ -77,8 +55,7 @@ declare enum operadores { "<=" = "<=", like = "like", in = "in", - isNull = "isNull", - notIn = "notIn" + isNull = "isNull" } type tipoFiltro = { coluna: string; @@ -106,7 +83,6 @@ declare const zOperadores: z.ZodEnum<{ like: "like"; in: "in"; isNull: "isNull"; - notIn: "notIn"; }>; declare const zFiltro: z.ZodObject<{ coluna: z.ZodString; @@ -121,7 +97,6 @@ declare const zFiltro: z.ZodObject<{ like: "like"; in: "in"; isNull: "isNull"; - notIn: "notIn"; }>; ou: z.ZodOptional; }, z.core.$strip>; @@ -162,10 +137,10 @@ declare const zFiltro: z.ZodObject<{ * import timezone from "dayjs/plugin/timezone" * import utc from "dayjs/plugin/utc" * import weekOfYear from "dayjs/plugin/weekOfYear" - * import { iniciarDayjsBr } from "p-comuns" + * import { defineDayjsBr } from "p-comuns" * import "dayjs/locale/pt-br" // Importante: importar o locale! - * export const dayjsbr = iniciarDayjsBr({ + * export const dayjsbr = defineDayjsBr({ * dayjs, * duration, * isSameOrAfter, @@ -178,20 +153,6 @@ declare const zFiltro: z.ZodObject<{ * }) * ``` */ -declare const iniciarDayjsBr: ({ dayjs, duration, isSameOrAfter, isSameOrBefore, minMax, relativeTime, timezone, utc, weekOfYear, }: { - dayjs: typeof _dayjs; - duration: typeof _duration; - isSameOrAfter: typeof _isSameOrAfter; - isSameOrBefore: typeof _isSameOrBefore; - minMax: typeof _minMax; - relativeTime: typeof _relativeTime; - timezone: typeof _timezone; - utc: typeof _utc; - weekOfYear: typeof _weekOfYear; -}) => typeof _dayjs; -/** - * @deprecated Use iniciarDayjsBr em vez de definirDayjsBr. O método defineDayjsBr está obsoleto e será removido em futuras versões. - */ declare const defineDayjsBr: ({ dayjs, duration, isSameOrAfter, isSameOrBefore, minMax, relativeTime, timezone, utc, weekOfYear, }: { dayjs: typeof _dayjs; duration: typeof _duration; @@ -206,101 +167,6 @@ declare const defineDayjsBr: ({ dayjs, duration, isSameOrAfter, isSameOrBefore, declare const link_paiol = "https://paiol.idz.one"; -/** Níveis de severidade para o sistema de log estruturado. */ -declare enum NivelLog { - /** O mais baixo nível, ideal para rastreamento detalhado de fluxo e execução. */ - RASTREAMENTO = "RASTREAMENTO", - /** Usado para informações que ajudam a entender o estado do sistema durante a execução. */ - DEPURACAO = "DEPURACAO", - /** Informações gerais e eventos do sistema. */ - INFORMACAO = "INFORMACAO", - /** Eventos inesperados, mas que não impedem o funcionamento do sistema. */ - AVISO = "AVISO", - /** Erros que impactam o funcionamento do sistema, mas que podem ser recuperados. */ - ERRO = "ERRO", - /** O nível mais alto de severidade, indicando falhas que requerem atenção imediata. */ - CRITICO = "CRITICO" -} -type DetalheNivel = { - peso: number; - rotulo: string; - emoji: string; - metodo: "debug" | "info" | "warn" | "error"; -}; -/** Detalhes de cada nível de log — peso para filtragem, emoji e método do console. */ -declare const NivelLogDetalhes: Record; -/** Estrutura de uma entrada de log emitida pelo sistema. */ -type EntradaLog = { - timestamp: string; - nivel: keyof typeof NivelLog; - /** Identificador da aplicação/instância (ex: "front:e-licencie:12345"). */ - app: string; - /** Local no código de onde o log foi emitido (ex: "criarUsuario()"). */ - origem: string; - mensagem: string; - dados?: unknown; -}; -/** Interface pública do logger retornado por `iniciarELog`. */ -type ELogger = { - rastreamento: (pr: { - origem: string; - mensagem: string; - dados?: unknown; - }) => void; - depuracao: (pr: { - origem: string; - mensagem: string; - dados?: unknown; - }) => void; - info: (pr: { - origem: string; - mensagem: string; - dados?: unknown; - }) => void; - aviso: (pr: { - origem: string; - mensagem: string; - dados?: unknown; - }) => void; - erro: (pr: { - origem: string; - mensagem: string; - dados?: unknown; - }) => void; - critico: (pr: { - origem: string; - mensagem: string; - dados?: unknown; - }) => void; -}; -/** Opções de configuração do logger, disponíveis no callback de arquivamento. */ -type OpoesELogger = { - app: string; - nivelMinimo: keyof typeof NivelLog; -}; -/** Tipo do callback de arquivamento de logs. */ -type ArquivamentoLog = (entrada: EntradaLog, opcoes: OpoesELogger) => void; -/** - * Inicializa o sistema de log estruturado. - * - * @param opcoes.app - Identificador da aplicação/instância (ex: `"front:e-licencie:12345"`) - * @param opcoes.nivelMinimo - Nível mínimo para exibição no console (padrão: INFORMACAO) - * @param opcoes.arquivamento - Callback opcional para persistir/enviar as entradas de log - * - * @example - * ```ts - * const log = iniciarELog({ app: "front:e-licencie:12345" }) - * - * log.info({ origem: "criarUsuario()", mensagem: "Usuário criado", dados: { id: "abc-123" } }) - * // → ℹ️ [Informação] [front:e-licencie:12345] [criarUsuario()] Usuário criado - * ``` - */ -declare const iniciarELog: (opcoes: { - app: string; - nivelMinimo?: keyof typeof NivelLog; - arquivamento?: ArquivamentoLog; -}) => ELogger; - type tiposArquivo = "imagem" | "documento" | "vídeo" | "outros"; declare const extensoes: { ext: string; @@ -314,141 +180,6 @@ declare const extensoes: { */ declare const tipoArquivo: (nomeArquivo: string | null | undefined) => tiposArquivo; -/** - * ============================================================================= - * FILTRO DELTA (zFiltroDelta) - * ============================================================================= - * - * OBJETIVO - * ----------------------------------------------------------------------------- - * Novo sistema de filtros projetado para maior flexibilidade e geração segura - * de instruções SQL dinâmicas (WHERE). - * - * REGRAS IMPORTANTES (PARA IA) - * ----------------------------------------------------------------------------- - * - O filtro é composto de duas partes obrigatórias: `condicoes` e `formula`. - * - Apenas referências aos `id`s das `condicoes` podem ser usadas na `formula`. - * - Não use sintaxe baseada em objetos aninhados para agrupamento (ex: { E: [], OU: [] }). Use fórmulas em string. - * - * 1) CONDIÇÕES (`condicoes`): - * Array de objetos contendo as definições isoladas de cada comparação. - * Exemplo: - * [ - * { id: "{1}", coluna: "idade", operador: ">=", valor: 18 }, - * { id: "{2}", coluna: "nome", operador: "like", valor: "%pa%" } - * ] - * - `id`: Deve SEMPRE seguir o formato {identificador}. Ex: `{c1}`, `{idade_min}`. - * - `coluna`: O nome da coluna ou um path JSONB válido (ex: `veiculo.ano`). - * - `operador`: Um dos valores do tipo `tipoOperadorFiltroDelta` (veja a constante). - * - * 2) FÓRMULA (`formula`): - * String que define a expressão lógica relacionando as condições através de seus `id`s. - * Operadores Lógicos Suportados (EM MAIÚSCULO): - * - `E` (AND) - * - `OU` (OR) - * - `NAO` (NOT) - * Suporta o agrupamento lógico usando parênteses `()` - * Exemplo válido: "({1} E NAO({2})) OU {3}" - * - * ============================================================================= - */ -/** - * Operadores permitidos para comparação. - */ -declare const zOperadorFiltroDelta: z.ZodEnum<{ - "=": "="; - "!=": "!="; - ">": ">"; - ">=": ">="; - "<": "<"; - "<=": "<="; - like: "like"; - in: "in"; - "\u2229": "∩"; -}>; -declare const operadorFiltroDeltaDetalhes: Record, { - rotulo: string; - descricao: string; -}>; -/** - * Coluna simples ou caminho aninhado de jsonb. - */ -declare const zColunaFiltroDelta: z.ZodString; -/** - * Estrutura individual de uma condição do filtro. - */ -declare const zCondicaoFiltroDelta: z.ZodObject<{ - id: z.ZodString; - coluna: z.ZodString; - operador: z.ZodEnum<{ - "=": "="; - "!=": "!="; - ">": ">"; - ">=": ">="; - "<": "<"; - "<=": "<="; - like: "like"; - in: "in"; - "\u2229": "∩"; - }>; - valor: z.ZodAny; -}, z.core.$strip>; -/** - * Estrutura principal do filtro delta. - */ -declare const zFiltroDelta: z.ZodObject<{ - condicoes: z.ZodArray": ">"; - ">=": ">="; - "<": "<"; - "<=": "<="; - like: "like"; - in: "in"; - "\u2229": "∩"; - }>; - valor: z.ZodAny; - }, z.core.$strip>>; - formula: z.ZodString; -}, z.core.$strip>; -type tipoOperadorFiltroDelta = z.infer; -type tipoColunaFiltroDelta = z.infer; -type tipoCondicaoFiltroDelta = z.infer; -type tipoFiltroDelta = z.infer; -type tipoCondicaoFiltroDeltaTipado = tipoCondicaoFiltroDelta & { - coluna: T; -}; -type tipoFiltroDeltaColunaTipada = { - condicoes: tipoCondicaoFiltroDeltaTipado[]; - formula: string; -}; -declare const criarFiltroDelta: (filtro: tipoFiltroDeltaColunaTipada) => tipoFiltroDeltaColunaTipada; -/** - * Fábrica para criar filtros com colunas estritamente tipadas. - * Útil para autocompletar os nomes das colunas e garantir a estrutura no TypeScript. - * - * @example - * ```ts - * const { criarFiltroDelta } = iniciarFiltroDelta<"nome" | "idade" | "jsonb.propriedade">() - * - * const filtro = criarFiltroDelta({ - * condicoes: [ - * { id: "{c1}", coluna: "idade", operador: ">", valor: 18 }, - * { id: "{c2}", coluna: "nome", operador: "=", valor: "luiz" }, - * { id: "{c3}", coluna: "jsonb.propriedade", operador: "=", valor: "valor" }, - * ], - * formula: "({c1} E {c2}) OU {c3}", - * }) - * ``` - */ -declare const iniciarFiltroDelta: () => { - criarFiltroDelta: (filtro: tipoFiltroDeltaColunaTipada) => tipoFiltroDeltaColunaTipada; -}; - /** * LocalStorage Tipado * Lê ou grava um valor no localStorage, mantendo o tipo genérico . @@ -593,6 +324,151 @@ declare class TipagemRotas; } +/** + * ============================================================================= + * tipoFiltro26 + * ============================================================================= + * + * OBJETIVO + * ----------------------------------------------------------------------------- + * Gerar automaticamente a tipagem de filtros compatíveis com operadores + * padrão do PostgreSQL, a partir de um tipo base T. + * + * Este tipo foi projetado para: + * - Construção de filtros dinâmicos + * - Geração posterior de WHERE (Knex / SQL) + * - Uso seguro por IA (evita filtros inválidos em nível de tipo) + * + * + * FORMATO DO FILTRO + * ----------------------------------------------------------------------------- + * 1) Campos simples: + * + * { + * idade: { ">=": 18 } + * } + * + * 2) Campos aninhados: + * + * { + * carro: { + * ano: { "=": 2020 } + * } + * } + * + * 3) Operador E (AND): + * + * { + * E: [ + * { idade: { ">=": 18 } }, + * { nome: { like: "%pa%" } } + * ] + * } + * + * 4) Operador OU (OR): + * + * { + * OU: [ + * { idade: { "<": 18 } }, + * { idade: { ">=": 60 } } + * ] + * } + * + * 5) Combinação complexa: + * + * { + * idade: { ">=": 18 }, + * OU: [ + * { nome: { like: "%pa%" } }, + * { + * E: [ + * { carro: { ano: { "=": 2020 } } }, + * { carro: { modelo: { in: ["Civic"] } } } + * ] + * } + * ] + * } + * + * + * REGRAS IMPORTANTES (PARA IA) + * ----------------------------------------------------------------------------- + * - Apenas campos existentes em T podem ser usados. + * - Operadores são restritos por tipo do campo. + * - Objetos são tratados recursivamente. + * - Arrays NÃO são tratados como objeto recursivo. + * - Funções NÃO são consideradas campos filtráveis. + * + * + * OPERADORES SUPORTADOS + * ----------------------------------------------------------------------------- + * number: + * =, !=, >, >=, <, <=, in + * + * string: + * =, !=, like, in + * + * boolean: + * =, !=, in + * + * Não há suporte automático a: + * - null + * - date + * - jsonb + * - arrays + * + * Essas extensões devem ser adicionadas explicitamente. + * + * ============================================================================= + */ +declare enum operadores26 { + "=" = "=", + "!=" = "!=", + ">" = ">", + ">=" = ">=", + "<" = "<", + "<=" = "<=", + like = "like", + in = "in" +} +declare enum agrupadores26 { + E = "E", + OU = "OU" +} +type PgOpsNumber = { + [K in Extract" | ">=" | "<" | "<=">]?: number; +} & { + [K in Extract]?: number[]; +}; +type PgOpsString = { + [K in Extract]?: string; +} & { + [K in Extract]?: string[]; +}; +type PgOpsBoolean = { + [K in Extract]?: boolean[]; +}; +type PgOpsFor = V extends number ? PgOpsNumber : V extends string ? PgOpsString : V extends boolean ? PgOpsBoolean : never; +type IsPlainObject = T extends object ? T extends Function ? false : T extends readonly any[] ? false : true : false; +type FiltroCampos = { + [K in keyof T]?: IsPlainObject extends true ? tipoFiltro26 : PgOpsFor; +}; +type tipoFiltro26 = FiltroCampos & { + /** + * E => AND lógico + * Todos os filtros dentro do array devem ser verdadeiros. + */ + E?: tipoFiltro26[]; + /** + * OU => OR lógico + * Pelo menos um filtro dentro do array deve ser verdadeiro. + */ + OU?: tipoFiltro26[]; +}; +declare const zFiltro26: z$1.ZodType; +declare const criarFiltro26: (filtro: tipoFiltro26) => tipoFiltro26; + /** * Essa variável se conecta a tabela_lidades * @@ -619,26 +495,35 @@ declare const unidades_medida: { /** * Valida se uma string é um UUID válido (qualquer versão). + * + * @param valor - A string que será validada. + * @returns booleano indicando se é um UUID válido. */ declare const erUuid: RegExp; declare const validarUuid: (uuid: string | number | undefined | null) => boolean; -/** - * Gera um UUID v4 (aleatório, não determinístico). - * Usa `globalThis.crypto.randomUUID()` — disponível em Node 19+, Bun e browsers modernos. - */ -declare const uuidV4: () => string; -/** - * @deprecated Use uuidV4() diretamente. - */ -declare const uuid: () => string; /** * Gera um UUID determinístico (versão 3) com base em uma chave e um grupo (namespace). - * Implementação pura JS (MD5), sem dependência de Node.js — funciona em browser e server. * - * @param chave - Valor a serializar (string, number ou objeto). - * @param grupo - Namespace opcional; se omitido, usa UUID nil. + * - Usa o algoritmo MD5 (RFC 4122). + * - Sempre retorna o mesmo UUID para a mesma combinação chave + grupo. + * - Caso o grupo não seja informado, usa o UUID "nil" como namespace. + * + * @param chave - Qualquer valor que será convertido em string para gerar o UUID (ex: número, string ou objeto). + * @param grupo - Opcional. Namespace para separar domínios diferentes de UUIDs. + * @returns UUID v3 (determinístico) */ -declare const uuidV3: (chave: unknown, grupo?: unknown) => string; +declare const uuidV3: (chave: any, grupo?: any) => string; +/** + * Gera um UUID v4 (aleatório, não determinístico). + * + * - Usado quando unicidade é necessária, mas não se exige que seja previsível. + */ +declare const uuidV4: typeof v4; +/** + * @deprecated Esta variável será descontinuada em versões futuras. + * Use a função `uuidV4()` diretamente. + */ +declare const uuid: typeof v4; declare const esperar: (ms: number) => Promise; /** @@ -652,37 +537,4 @@ declare const nomeVariavel: (v: { [key: string]: any; }) => string; -/** - * No futuro podemos melhorar este Zod para incluir mais formatos de coordenadas. - * - */ - -declare const zCoordenadas: z.ZodObject<{ - formato: z.ZodDefault>; - datum: z.ZodDefault>; - latitude: z.ZodNumber; - longitude: z.ZodNumber; -}, z.core.$strip>; - -declare const zDocCnpj: z.ZodString; -declare const zDocCpf: z.ZodString; -declare const zDocumento: z.ZodUnion<[z.ZodString, z.ZodString]>; - -/** - * Schema numérico que aceita strings legadas e normaliza para `number`. - * - * O campo **é** um número. O `preprocess` resolve compatibilidade com dados - * antigos onde o frontend enviava strings formatadas (BR ou monetária). - * - * Formatos de entrada aceitos: - * - `10` → number direto - * - `10.1` → ponto decimal - * - `10,1` → vírgula decimal (BR) - * - `1.000,1` → milhar com ponto + vírgula decimal (BR) - * - `R$ 10,01` → prefixo monetário legado - */ -declare const zNumero: z.ZodPreprocess; -declare const zNumeroPositivo: z.ZodPreprocess; -declare const zNumeroInteiro: z.ZodPreprocess; - -export { type ArquivamentoLog, type ELogger, type EntradaLog, NivelLog, NivelLogDetalhes, type OpoesELogger, Produtos, TipagemRotas, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, criarFiltroDelta, defineDayjsBr, erUuid, esperar, extensoes, iniciarDayjsBr, iniciarELog, iniciarFiltroDelta, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadorFiltroDeltaDetalhes, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoColunaFiltroDelta, type tipoCondicaoFiltroDelta, type tipoCondicaoFiltroDeltaTipado, type tipoFiltro, type tipoFiltroDelta, type tipoFiltroDeltaColunaTipada, type tipoOperadorFiltroDelta, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zColunaFiltroDelta, zCondicaoFiltroDelta, zCoordenadas, zDocCnpj, zDocCpf, zDocumento, zFiltro, zFiltroDelta, zNumero, zNumeroInteiro, zNumeroPositivo, zOperadorFiltroDelta, zOperadores }; +export { Produtos, TipagemRotas, agrupadores26, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, criarFiltro26, defineDayjsBr, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadores, operadores26, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoFiltro26, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zFiltro26, zOperadores }; diff --git a/dist-front/index.mjs b/dist-front/index.mjs index cc762c2..3dd0ffe 100644 --- a/dist-front/index.mjs +++ b/dist-front/index.mjs @@ -1 +1 @@ -var j="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),ce=e=>`eli-${Array.from({length:e||8}).map(()=>j[(999*Math.random()|0)%j.length]).join("")}`;var z={};globalThis.cacheMemoria_cache=z;var F=(e,o,t)=>{let i=typeof e=="string"?e:typeof e=="number"?String(e):encodeURIComponent(JSON.stringify(e)),r=t&&new Date().getTime()+t*1e3;o!==void 0&&(z[i]={valor:o,validade:r});let n=z[i];if(!(n?.validade&&n.validadez,ve=F,ye=e=>o=>F(e,o);var be="00000000-0000-0000-0000-000000000000",R=(s=>(s.codigo="codigo",s.excluido="excluido",s.data_hora_criacao="data_hora_criacao",s.data_hora_atualizacao="data_hora_atualizacao",s.codigo_usuario_criacao="codigo_usuario_criacao",s.codigo_usuario_atualizacao="codigo_usuario_atualizacao",s.versao="versao",s))(R||{}),U=(o=>(o.token="token",o))(U||{}),X=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))(X||{});import b from"zod";var $=(r=>(r["="]="=",r["!="]="!=",r[">"]=">",r[">="]=">=",r["<"]="<",r["<="]="<=",r.like="like",r.in="in",r.isNull="isNull",r.notIn="notIn",r))($||{}),q=b.enum(["=","!=",">",">=","<","<=","like","in","isNull","notIn"]),Ae=b.object({coluna:b.string(),valor:b.any(),operador:q,ou:b.boolean().optional()});var P=({dayjs:e,duration:o,isSameOrAfter:t,isSameOrBefore:i,minMax:r,relativeTime:n,timezone:m,utc:s,weekOfYear:C})=>(e.extend(s),e.extend(m),e.extend(C),e.extend(i),e.extend(t),e.extend(r),e.extend(n),e.extend(o),e.locale("pt-br"),e),we=P;var ze="https://paiol.idz.one";var B=(m=>(m.RASTREAMENTO="RASTREAMENTO",m.DEPURACAO="DEPURACAO",m.INFORMACAO="INFORMACAO",m.AVISO="AVISO",m.ERRO="ERRO",m.CRITICO="CRITICO",m))(B||{}),k={RASTREAMENTO:{peso:1,rotulo:"Rastreamento",emoji:"\u{1F50D}",metodo:"debug"},DEPURACAO:{peso:2,rotulo:"Depura\xE7\xE3o",emoji:"\u{1F41B}",metodo:"debug"},INFORMACAO:{peso:3,rotulo:"Informa\xE7\xE3o",emoji:"\u2139\uFE0F",metodo:"info"},AVISO:{peso:4,rotulo:"Aviso",emoji:"\u26A0\uFE0F",metodo:"warn"},ERRO:{peso:5,rotulo:"Erro",emoji:"\u274C",metodo:"error"},CRITICO:{peso:6,rotulo:"Cr\xEDtico",emoji:"\u{1F525}",metodo:"error"}},V=e=>{let o=e.nivelMinimo??"INFORMACAO",t=k[o].peso,i=(r,n)=>{let m=k[r];if(m.pesoi("RASTREAMENTO",r),depuracao:r=>i("DEPURACAO",r),info:r=>i("INFORMACAO",r),aviso:r=>i("AVISO",r),erro:r=>i("ERRO",r),critico:r=>i("CRITICO",r)}},Fe=V({app:"testando",nivelMinimo:"INFORMACAO",arquivamento:()=>{}});var J=[{ext:"gif",tipo:"imagem",mime:"image/gif"},{ext:"jpg",tipo:"imagem",mime:"image/jpeg"},{ext:"jpeg",tipo:"imagem",mime:"image/jpeg"},{ext:"png",tipo:"imagem",mime:"image/png"},{ext:"bmp",tipo:"imagem",mime:"image/bmp"},{ext:"webp",tipo:"imagem",mime:"image/webp"},{ext:"tiff",tipo:"imagem",mime:"image/tiff"},{ext:"svg",tipo:"imagem",mime:"image/svg+xml"},{ext:"ico",tipo:"imagem",mime:"image/x-icon"},{ext:"pdf",tipo:"documento",mime:"application/pdf"},{ext:"doc",tipo:"documento",mime:"application/msword"},{ext:"docx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},{ext:"xls",tipo:"documento",mime:"application/vnd.ms-excel"},{ext:"xlsx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},{ext:"ppt",tipo:"documento",mime:"application/vnd.ms-powerpoint"},{ext:"pptx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"},{ext:"txt",tipo:"documento",mime:"text/plain"},{ext:"odt",tipo:"documento",mime:"application/vnd.oasis.opendocument.text"},{ext:"ods",tipo:"documento",mime:"application/vnd.oasis.opendocument.spreadsheet"},{ext:"rtf",tipo:"documento",mime:"application/rtf"},{ext:"csv",tipo:"documento",mime:"text/csv"},{ext:"mp4",tipo:"v\xEDdeo",mime:"video/mp4"},{ext:"avi",tipo:"v\xEDdeo",mime:"video/x-msvideo"},{ext:"mkv",tipo:"v\xEDdeo",mime:"video/x-matroska"},{ext:"mov",tipo:"v\xEDdeo",mime:"video/quicktime"},{ext:"wmv",tipo:"v\xEDdeo",mime:"video/x-ms-wmv"},{ext:"flv",tipo:"v\xEDdeo",mime:"video/x-flv"},{ext:"webm",tipo:"v\xEDdeo",mime:"video/webm"},{ext:"3gp",tipo:"v\xEDdeo",mime:"video/3gpp"},{ext:"mpeg",tipo:"v\xEDdeo",mime:"video/mpeg"}],Ie=e=>{let o=String(e||"").toLocaleLowerCase().split(".").pop();return J.find(i=>i.ext===o)?.tipo||"outros"};import u from"zod";var G=u.enum([">","<",">=","<=","=","!=","in","like","\u2229"]),Re={">":{rotulo:"Maior que",descricao:"O valor de A deve ser maior que o valor de B"},"<":{rotulo:"Menor que",descricao:"O valor de A deve ser menor que o valor de B"},">=":{rotulo:"Maior ou igual a",descricao:"O valor de A deve ser maior ou igual ao valor de B"},"<=":{rotulo:"Menor ou igual a",descricao:"O valor de A deve ser menor ou igual ao valor de B"},"=":{rotulo:"Igual a",descricao:"O valor de A deve ser igual ao valor de B"},"!=":{rotulo:"Diferente de",descricao:"O valor de A deve ser diferente do valor de B"},in:{rotulo:"Est\xE1 em",descricao:"O valor de A deve estar presente na cole\xE7\xE3o ou lista definida em B"},like:{rotulo:"Cont\xE9m",descricao:"O valor de A deve conter o texto informado em B"},"\u2229":{rotulo:"Interse\xE7\xE3o",descricao:"A e B devem possuir pelo menos um elemento em comum"}},K=/^\{[\w:]+\}$/,Y=/^\w+(\.\w+)*$/,Z=u.string().regex(Y,"Coluna inv\xE1lida").describe("nome da coluna ou caminho aninhado do jsonb"),H=u.object({id:u.string().describe("id da condi\xE7\xE3o do filtro").regex(K,"O id deve seguir o formato {identificador}"),coluna:Z,operador:G,valor:u.any().describe("valor de compara\xE7\xE3o")}),Q=e=>{let t=(e.match(/\{[\w:]+\}|\bNAO\b|\bE\b|\bOU\b|\(|\)/g)||[]).join(""),i=e.replace(/\s+/g,""),r=t.replace(/\s+/g,"");if(i!==r)return!1;let n=e.replace(/\{[\w:]+\}/g,"true").replace(/\bNAO\b/g,"!").replace(/\bE\b/g,"&&").replace(/\bOU\b/g,"||");try{return new Function(`return (${n})`)(),!0}catch{return!1}},S=u.object({condicoes:u.array(H),formula:u.string().refine(Q,{message:"F\xF3rmula inv\xE1lida. Use apenas refer\xEAncias de condi\xE7\xF5es {id} ou {id:sufixo}, operadores E/OU/NAO e par\xEAnteses."})}).superRefine((e,o)=>{let t=new Set(e.condicoes.map(r=>r.id)),i=e.formula.match(/\{[\w:]+\}/g)||[];for(let r of i)t.has(r)||o.addIssue({code:"custom",path:["formula"],message:`A refer\xEAncia ${r} n\xE3o existe em condicoes.`})}),W=e=>S.parse(e),Ue=()=>({criarFiltroDelta:W});var $e=(e,o)=>{let t="localStorage"in globalThis?globalThis.localStorage:void 0;if(typeof t>"u")return null;let i=typeof e=="string"?e:encodeURIComponent(JSON.stringify(e));try{o!==void 0&&t.setItem(i,JSON.stringify(o));let r=t.getItem(i);if(r===null)return null;try{return JSON.parse(r)}catch{return r}}catch{return null}};var I=e=>{try{return Object.fromEntries(Object.entries(e).map(([o,t])=>[o,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(o){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${o.message} ${o.stack}`)}},Pe=I,Be=I;var E=(e=>(e["e-licencie"]="e-licencie",e["gov.e-licencie"]="gov.e-licencie",e))(E||{});var ee=(a=>(a.modelo="000_modelo",a.vencida="100_vencida",a.expirado="200_expirado",a.alerta="300_alerta",a.protocoladafora="350_protocoladafora",a.protocolada="400_protocolada",a.protocoladaApenas="430_protocolada",a.protocolada_alteracao="450_protocolada",a.prazo="500_prazo",a.emitida="515_emitida",a.valida="518_valida",a.novo="520_novo",a.recebido="521_recebido",a.em_andamento="530_em_andamento",a.aguardando="530_aguardando",a.aguardandoresposta="540_aguardandoresposta",a.suspensaotemporaria="540_suspensaotemporaria",a.cancelada="550_cancelada",a.execucao="560_execucao",a.pendente="570_pendente",a.executadafora="600_executadafora",a.executada="700_executada",a.naoexecutada="701_naoexecutada",a.concluida="730_concluida",a.respondido_negado="740_respondido_negado",a.respondido_aceito="741_respondido_aceito",a.atendidoparcial="742_atendidoparcial",a.naoatendido="743_naoatendido",a.atendido="744_atendido",a.renovada="760_renovada",a.finalizada="800_finalizada",a.emitirnota="101_emitirnota",a.faturaatrasada="301_faturaatrasada",a.pagarfatura="302_pagarfatura",a.aguardandoconfirmacao="531_aguardandoconfirmacao",a.agendado="701_agendado",a.faturapaga="801_faturapaga",a.excluida="999_excluida",a.requerida="401_requerida",a.vigente="516_vigente",a.emrenovacao="402_emrenovacao",a.arquivada="801_arquivada",a.aguardando_sincronizacao="999_aguardando_sincronizacao",a.nao_conforme="710_nao_conforme",a.conforme="720_conforme",a.nao_aplicavel="730_nao_aplicavel",a.parcial="715_parcial",a))(ee||{});var Ke=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Ze="Ol\xE1 Mundo! (vari\xE1vel)";var Ee=(...e)=>e.map(o=>o==null?"":String(o).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var L=class{constructor({caminho:o,acaoIr:t,rotulo:i}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(o)?o:[o]).filter(Boolean).map(r=>String(r)).flatMap(r=>r.split("/")).filter(Boolean),this.rotulo=i}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(o){this._partesCaminho=o.split("/").filter(t=>t)}endereco(o,t){let i=typeof globalThis<"u"&&globalThis.window||void 0,r=new URL(i?i.location.href:"http://localhost");r.pathname=this.caminho,r.search="";let n=Object.entries(o);for(let[m,s]of n)r.searchParams.set(String(m),JSON.stringify(s));return r.hash="",t&&(r.hash=`#${r.search}`,r.search=""),r.href}ir(o){if(this._acaoIr)this._acaoIr(this.endereco({...o}));else{let t=typeof globalThis<"u"&&globalThis.window||void 0;t&&(t.location.href=this.endereco({...o}))}}parametros(o){let t=o?new URL(o):new URL(typeof globalThis<"u"&&globalThis.window?globalThis.window.location.href:"http://localhost"),i=t.searchParams,r=Object.fromEntries(i.entries()),n=t.hash;if(n){let m=Object.fromEntries(new URLSearchParams(n.slice(1)).entries());r={...r,...m}}for(let m in r)try{r[m]=JSON.parse(r[m])}catch{console.log(`[${m}|${r[m]}] n\xE3o \xE9 um json v\xE1lido.`)}return r}};var oe=(n=>(n.UN="UN",n.KG="KG",n.TON="TON",n.g="g",n["M\xB3"]="M\xB3",n.Lt="Lt",n))(oe||{}),ro=[{sigla_unidade:"KG",nome:"Quilograma",sigla_normalizada:"KG",normalizar:e=>e,tipo:"massa"},{sigla_unidade:"g",nome:"Grama",sigla_normalizada:"KG",normalizar:e=>e/1e3,tipo:"massa"},{sigla_unidade:"TON",nome:"Tonelada",sigla_normalizada:"KG",normalizar:e=>e*1e3,tipo:"massa"},{sigla_unidade:"Lt",nome:"Litro",sigla_normalizada:"Lt",normalizar:e=>e,tipo:"volume"},{sigla_unidade:"M\xB3",nome:"Metro C\xFAbico",sigla_normalizada:"Lt",normalizar:e=>e*1e3,tipo:"volume"},{sigla_unidade:"UN",nome:"Unidade",sigla_normalizada:"UN",normalizar:e=>e,tipo:"unidade"}];var re=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ao=e=>re.test(String(e||"")),te=()=>globalThis.crypto.randomUUID(),no=te,ae="00000000-0000-0000-0000-000000000000",ne=(e,o)=>e<>>32-o,ie=e=>{let o=new TextEncoder().encode(e),t=o.length,i=t*8,r=t%64<56?56-t%64:120-t%64,n=new Uint8Array(t+r+8);n.set(o),n[t]=128;let m=new DataView(n.buffer);m.setUint32(t+r,i>>>0,!0),m.setUint32(t+r+4,Math.floor(i/2**32),!0);let s=Array.from({length:64},(v,g)=>Math.abs(Math.sin(g+1))*2**32>>>0),C=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],h=1732584193,A=4023233417,T=2562383102,w=271733878;for(let v=0;v>>0,c=p,p=f,f=l,l=l+ne(x,C[d])>>>0}h=h+c>>>0,A=A+l>>>0,T=T+f>>>0,w=w+p>>>0}let N=v=>{let g="";for(let c=0;c<4;c++)g+=(v>>>c*8&255).toString(16).padStart(2,"0");return g};return N(h)+N(A)+N(T)+N(w)},me=e=>{let o=e.slice(0,32),t=(Number.parseInt(o[16],16)&3|8).toString(16);return`${o.slice(0,8)}-${o.slice(8,12)}-3${o.slice(13,16)}-${t}${o.slice(17,20)}-${o.slice(20,32)}`},de=(e,o)=>{let t=o?de(o):ae,i=typeof e=="string"?e:typeof e=="number"?String(e):JSON.stringify(e);return me(ie(t+i))};var mo=e=>new Promise(o=>setTimeout(()=>o(!0),e)),so=e=>Object.keys(e).join("/");import O from"zod";var uo=O.object({formato:O.literal("decimal").default("decimal"),datum:O.literal("EPSG:4326").default("EPSG:4326"),latitude:O.number(),longitude:O.number()});import M from"zod";var se=/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/,le=/^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/[A-Z0-9]{4}-\d{2}$/i,pe=Number(new Date().toISOString().slice(0,7).replace("-","")),ue=M.string().regex(pe<202407?se:le).describe("Documento (CNPJ) no formato XX.XXX.XXX/XXXX-XX"),ge=M.string().regex(/^\d{3}\.\d{3}\.\d{3}-\d{2}$/).describe("Documento (CPF) no formato XXX.XXX.XXX-XX"),fo=ge.or(ue).describe("CPF ou CNPJ");import y from"zod";var D=e=>{if(typeof e=="number"||typeof e!="string")return e;let o=e;return o.includes(",")&&(o=o.replace(/\./g,"").replace(",",".")),o=o.replace(/[^0-9.]/g,""),o==""?null:Number(o)},yo=y.preprocess(D,y.number()),_o=y.preprocess(D,y.number().positive()),bo=y.preprocess(D,y.number().int());export{B as NivelLog,k as NivelLogDetalhes,E as Produtos,L as TipagemRotas,ce as aleatorio,F as cacheM,ye as cacheMFixo,ve as cacheMemoria,R as camposComuns,W as criarFiltroDelta,we as defineDayjsBr,re as erUuid,mo as esperar,J as extensoes,P as iniciarDayjsBr,V as iniciarELog,Ue as iniciarFiltroDelta,ze as link_paiol,$e as localValor,so as nomeVariavel,Be as objetoPg,Re as operadorFiltroDeltaDetalhes,$ as operadores,I as paraObjetoRegistroPg,Pe as pgObjeto,oe as siglas_unidades_medida,Ee as texto_busca,Ie as tipoArquivo,X as tipoUsuarioResiduos,ee as tiposSituacoesElicencie,U as tx,Ke as umaFuncao,Ze as umaVariavel,ro as unidades_medida,no as uuid,de as uuidV3,te as uuidV4,be as uuid_null,ao as validarUuid,xe as verCacheM,Z as zColunaFiltroDelta,H as zCondicaoFiltroDelta,uo as zCoordenadas,ue as zDocCnpj,ge as zDocCpf,fo as zDocumento,Ae as zFiltro,S as zFiltroDelta,yo as zNumero,bo as zNumeroInteiro,_o as zNumeroPositivo,G as zOperadorFiltroDelta,q as zOperadores}; +var u="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),V=e=>`eli-${Array.from({length:e||8}).map(()=>u[(999*Math.random()|0)%u.length]).join("")}`;var s={};globalThis.cacheMemoria_cache=s;var g=(e,r,a)=>{let n=typeof e=="string"?e:typeof e=="number"?String(e):encodeURIComponent(JSON.stringify(e)),t=a&&new Date().getTime()+a*1e3;r!==void 0&&(s[n]={valor:r,validade:t});let i=s[n];if(!(i?.validade&&i.validades,G=g,$=e=>r=>g(e,r);var R="00000000-0000-0000-0000-000000000000",v=(m=>(m.codigo="codigo",m.excluido="excluido",m.data_hora_criacao="data_hora_criacao",m.data_hora_atualizacao="data_hora_atualizacao",m.codigo_usuario_criacao="codigo_usuario_criacao",m.codigo_usuario_atualizacao="codigo_usuario_atualizacao",m.versao="versao",m))(v||{}),b=(r=>(r.token="token",r))(b||{}),h=(a=>(a.Usuario="usuario",a.Fornecedor="fornecedor",a))(h||{});import l from"zod";var O=(n=>(n["="]="=",n["!="]="!=",n[">"]=">",n[">="]=">=",n["<"]="<",n["<="]="<=",n.like="like",n.in="in",n.isNull="isNull",n))(O||{}),T=l.enum(["=","!=",">",">=","<","<=","like","in","isNull"]),Z=l.object({coluna:l.string(),valor:l.any(),operador:T,ou:l.boolean().optional()});var W=({dayjs:e,duration:r,isSameOrAfter:a,isSameOrBefore:n,minMax:t,relativeTime:i,timezone:d,utc:m,weekOfYear:y})=>(e.extend(m),e.extend(d),e.extend(y),e.extend(n),e.extend(a),e.extend(t),e.extend(i),e.extend(r),e.locale("pt-br"),e);var S="https://paiol.idz.one";var z=[{ext:"gif",tipo:"imagem",mime:"image/gif"},{ext:"jpg",tipo:"imagem",mime:"image/jpeg"},{ext:"jpeg",tipo:"imagem",mime:"image/jpeg"},{ext:"png",tipo:"imagem",mime:"image/png"},{ext:"bmp",tipo:"imagem",mime:"image/bmp"},{ext:"webp",tipo:"imagem",mime:"image/webp"},{ext:"tiff",tipo:"imagem",mime:"image/tiff"},{ext:"svg",tipo:"imagem",mime:"image/svg+xml"},{ext:"ico",tipo:"imagem",mime:"image/x-icon"},{ext:"pdf",tipo:"documento",mime:"application/pdf"},{ext:"doc",tipo:"documento",mime:"application/msword"},{ext:"docx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},{ext:"xls",tipo:"documento",mime:"application/vnd.ms-excel"},{ext:"xlsx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},{ext:"ppt",tipo:"documento",mime:"application/vnd.ms-powerpoint"},{ext:"pptx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"},{ext:"txt",tipo:"documento",mime:"text/plain"},{ext:"odt",tipo:"documento",mime:"application/vnd.oasis.opendocument.text"},{ext:"ods",tipo:"documento",mime:"application/vnd.oasis.opendocument.spreadsheet"},{ext:"rtf",tipo:"documento",mime:"application/rtf"},{ext:"csv",tipo:"documento",mime:"text/csv"},{ext:"mp4",tipo:"v\xEDdeo",mime:"video/mp4"},{ext:"avi",tipo:"v\xEDdeo",mime:"video/x-msvideo"},{ext:"mkv",tipo:"v\xEDdeo",mime:"video/x-matroska"},{ext:"mov",tipo:"v\xEDdeo",mime:"video/quicktime"},{ext:"wmv",tipo:"v\xEDdeo",mime:"video/x-ms-wmv"},{ext:"flv",tipo:"v\xEDdeo",mime:"video/x-flv"},{ext:"webm",tipo:"v\xEDdeo",mime:"video/webm"},{ext:"3gp",tipo:"v\xEDdeo",mime:"video/3gpp"},{ext:"mpeg",tipo:"v\xEDdeo",mime:"video/mpeg"}],ae=e=>{let r=String(e||"").toLocaleLowerCase().split(".").pop();return z.find(n=>n.ext===r)?.tipo||"outros"};var te=(e,r)=>{let a="localStorage"in globalThis?globalThis.localStorage:void 0;if(typeof a>"u")return null;let n=typeof e=="string"?e:encodeURIComponent(JSON.stringify(e));try{r!==void 0&&a.setItem(n,JSON.stringify(r));let t=a.getItem(n);if(t===null)return null;try{return JSON.parse(t)}catch{return t}}catch{return null}};var x=e=>{try{return Object.fromEntries(Object.entries(e).map(([r,a])=>[r,a===void 0||a==null||typeof a=="string"||typeof a=="number"||typeof a=="boolean"?a:JSON.stringify(a,null,2)]))}catch(r){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${r.message} ${r.stack}`)}},ie=x,me=x;var w=(e=>(e["e-licencie"]="e-licencie",e["gov.e-licencie"]="gov.e-licencie",e))(w||{});var j=(o=>(o.modelo="000_modelo",o.vencida="100_vencida",o.expirado="200_expirado",o.alerta="300_alerta",o.protocoladafora="350_protocoladafora",o.protocolada="400_protocolada",o.protocoladaApenas="430_protocolada",o.protocolada_alteracao="450_protocolada",o.prazo="500_prazo",o.emitida="515_emitida",o.valida="518_valida",o.novo="520_novo",o.recebido="521_recebido",o.em_andamento="530_em_andamento",o.aguardando="530_aguardando",o.aguardandoresposta="540_aguardandoresposta",o.suspensaotemporaria="540_suspensaotemporaria",o.cancelada="550_cancelada",o.execucao="560_execucao",o.pendente="570_pendente",o.executadafora="600_executadafora",o.executada="700_executada",o.naoexecutada="701_naoexecutada",o.concluida="730_concluida",o.respondido_negado="740_respondido_negado",o.respondido_aceito="741_respondido_aceito",o.atendidoparcial="742_atendidoparcial",o.naoatendido="743_naoatendido",o.atendido="744_atendido",o.renovada="760_renovada",o.finalizada="800_finalizada",o.emitirnota="101_emitirnota",o.faturaatrasada="301_faturaatrasada",o.pagarfatura="302_pagarfatura",o.aguardandoconfirmacao="531_aguardandoconfirmacao",o.agendado="701_agendado",o.faturapaga="801_faturapaga",o.excluida="999_excluida",o.requerida="401_requerida",o.vigente="516_vigente",o.emrenovacao="402_emrenovacao",o.arquivada="801_arquivada",o.aguardando_sincronizacao="999_aguardando_sincronizacao",o.nao_conforme="710_nao_conforme",o.conforme="720_conforme",o.nao_aplicavel="730_nao_aplicavel",o.parcial="715_parcial",o))(j||{});var se=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var ue="Ol\xE1 Mundo! (vari\xE1vel)";var ye=(...e)=>e.map(r=>r==null?"":String(r).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var c=class{constructor({caminho:r,acaoIr:a,rotulo:n}){this._partesCaminho=[];this._acaoIr=a,this._partesCaminho=(Array.isArray(r)?r:[r]).filter(Boolean).map(t=>String(t)).flatMap(t=>t.split("/")).filter(Boolean),this.rotulo=n}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(r){this._partesCaminho=r.split("/").filter(a=>a)}endereco(r,a){let n=typeof globalThis<"u"&&globalThis.window||void 0,t=new URL(n?n.location.href:"http://localhost");t.pathname=this.caminho,t.search="";let i=Object.entries(r);for(let[d,m]of i)t.searchParams.set(String(d),JSON.stringify(m));return t.hash="",a&&(t.hash=`#${t.search}`,t.search=""),t.href}ir(r){if(this._acaoIr)this._acaoIr(this.endereco({...r}));else{let a=typeof globalThis<"u"&&globalThis.window||void 0;a&&(a.location.href=this.endereco({...r}))}}parametros(r){let a=r?new URL(r):new URL(typeof globalThis<"u"&&globalThis.window?globalThis.window.location.href:"http://localhost"),n=a.searchParams,t=Object.fromEntries(n.entries()),i=a.hash;if(i){let d=Object.fromEntries(new URLSearchParams(i.slice(1)).entries());t={...t,...d}}for(let d in t)try{t[d]=JSON.parse(t[d])}catch{console.log(`[${d}|${t[d]}] n\xE3o \xE9 um json v\xE1lido.`)}return t}};import{z as p}from"zod";var _=(a=>(a["="]="=",a["!="]="!=",a[">"]=">",a[">="]=">=",a["<"]="<",a["<="]="<=",a.like="like",a.in="in",a))(_||{}),k=(a=>(a.E="E",a.OU="OU",a))(k||{}),N=p.nativeEnum(_),F=p.any(),P=p.record(N,F),f=p.lazy(()=>p.object({E:p.array(f).optional(),OU:p.array(f).optional()}).catchall(p.union([P,f]))),M=e=>e,Oe=M({idade:{">=":18},OU:[{nome:{like:"%pa%"}},{E:[{carro:{ano:{"=":2020}}},{carro:{modelo:{in:["Civic","Corolla"]}}}]}]});var K=(i=>(i.UN="UN",i.KG="KG",i.TON="TON",i.g="g",i["M\xB3"]="M\xB3",i.Lt="Lt",i))(K||{}),ze=[{sigla_unidade:"KG",nome:"Quilograma",sigla_normalizada:"KG",normalizar:e=>e,tipo:"massa"},{sigla_unidade:"g",nome:"Grama",sigla_normalizada:"KG",normalizar:e=>e/1e3,tipo:"massa"},{sigla_unidade:"TON",nome:"Tonelada",sigla_normalizada:"KG",normalizar:e=>e*1e3,tipo:"massa"},{sigla_unidade:"Lt",nome:"Litro",sigla_normalizada:"Lt",normalizar:e=>e,tipo:"volume"},{sigla_unidade:"M\xB3",nome:"Metro C\xFAbico",sigla_normalizada:"Lt",normalizar:e=>e*1e3,tipo:"volume"},{sigla_unidade:"UN",nome:"Unidade",sigla_normalizada:"UN",normalizar:e=>e,tipo:"unidade"}];import{NIL as U,v3 as L,v4 as A}from"uuid";var q=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ke=e=>q.test(String(e||"")),C=(e,r)=>L(typeof e=="string"?e:typeof e=="number"?String(e):JSON.stringify(e),r?C(r):U),I=A,Ne=I;var Pe=e=>new Promise(r=>setTimeout(()=>r(!0),e)),Me=e=>Object.keys(e).join("/");export{w as Produtos,c as TipagemRotas,k as agrupadores26,V as aleatorio,g as cacheM,$ as cacheMFixo,G as cacheMemoria,v as camposComuns,M as criarFiltro26,W as defineDayjsBr,q as erUuid,Pe as esperar,z as extensoes,S as link_paiol,te as localValor,Me as nomeVariavel,me as objetoPg,O as operadores,_ as operadores26,x as paraObjetoRegistroPg,ie as pgObjeto,K as siglas_unidades_medida,ye as texto_busca,ae as tipoArquivo,h as tipoUsuarioResiduos,j as tiposSituacoesElicencie,b as tx,se as umaFuncao,ue as umaVariavel,ze as unidades_medida,Ne as uuid,C as uuidV3,I as uuidV4,R as uuid_null,ke as validarUuid,J as verCacheM,Z as zFiltro,f as zFiltro26,T as zOperadores}; diff --git a/package.json b/package.json index b691e01..b473c57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-comuns", - "version": "0.355.0", + "version": "0.323.0", "description": "", "main": "./dist-front/index.mjs", "module": "./dist-front/index.mjs", @@ -17,8 +17,7 @@ "check": "pnpm run biome && npx tsc --noEmit", "build": "npm --no-git-tag-version version minor && pnpm run biome && tsup --config ./tsup/tsup.config.ts && pnpm run pacote", "teste": "npx vitest run src/testes/TipagemRotas.test.ts", - "pacote": "npm pack && npm pack && mv $(npm pack --silent) pacote.tgz", - "postinstall": "node ./scripts/atualizar-biome.js" + "pacote": "npm pack && npm pack && mv $(npm pack --silent) pacote.tgz" }, "author": { "name": "AZTECA SOFTWARE LTDA", @@ -28,10 +27,11 @@ "license": "ISC", "dependencies": {}, "devDependencies": { + "cross-fetch": "4.1.0", "uuid": "^11.1.0", - "zod": "4.4.3", + "zod": "4.3.6", "dayjs": "^1.11.18", - "@biomejs/biome": "2.4.12", + "@biomejs/biome": "2.4.0", "@types/node": "^22", "tsup": "8.5.1", "typescript": "^6", @@ -39,8 +39,9 @@ "vitest": "^3.2.4" }, "peerDependencies": { + "cross-fetch": "4.1.0", "dayjs": "^1.11.18", "uuid": "^11.1.0", - "zod": "4.4.3" + "zod": "4.3.6" } } diff --git a/pacote.tgz b/pacote.tgz index 9505f93..7fc0fcd 100644 Binary files a/pacote.tgz and b/pacote.tgz differ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f809977..6f65240 100755 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,417 +9,418 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: 2.4.12 - version: 2.4.12 + specifier: 2.4.0 + version: 2.4.0 '@types/node': specifier: ^22 - version: 22.20.1 + version: 22.19.15 + cross-fetch: + specifier: 4.1.0 + version: 4.1.0 dayjs: specifier: ^1.11.18 - version: 1.11.20 + version: 1.11.19 tsup: specifier: 8.5.1 - version: 8.5.1(jiti@2.6.1)(postcss@8.5.9)(typescript@6.0.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@6.0.2) typescript: specifier: ^6 - version: 6.0.3 + version: 6.0.2 unbuild: specifier: ^3.6.1 - version: 3.6.1(typescript@6.0.3) + version: 3.6.1(typescript@6.0.2) uuid: specifier: ^11.1.0 version: 11.1.0 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@22.20.1)(jiti@2.6.1) + version: 3.2.4(@types/node@22.19.15)(jiti@2.6.1) zod: - specifier: 4.4.3 - version: 4.4.3 + specifier: 4.3.6 + version: 4.3.6 packages: - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.4.12': - resolution: {integrity: sha512-Rro7adQl3NLq/zJCIL98eElXKI8eEiBtoeu5TbXF/U3qbjuSc7Jb5rjUbeHHcquDWeSf3HnGP7XI5qGrlRk/pA==} + '@biomejs/biome@2.4.0': + resolution: {integrity: sha512-iluT61cORUDIC5i/y42ljyQraCemmmcgbMLLCnYO+yh+2hjTmcMFcwY8G0zTzWCsPb3t3AyKc+0t/VuhPZULUg==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.4.12': - resolution: {integrity: sha512-BnMU4Pc3ciEVteVpZ0BK33MLr7X57F5w1dwDLDn+/iy/yTrA4Q/N2yftidFtsA4vrDh0FMXDpacNV/Tl3fbmng==} + '@biomejs/cli-darwin-arm64@2.4.0': + resolution: {integrity: sha512-L+YpOtPSuU0etomfvFTPWRsa7+8ejaJL3yaROEoT/96HDJbR6OsvZQk0C8JUYou+XFdP+JcGxqZknkp4n934RA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.4.12': - resolution: {integrity: sha512-x9uJ0bI1rJsWICp3VH8w/5PnAVD3A7SqzDpbrfoUQX1QyWrK5jSU4fRLo/wSgGeplCivbxBRKmt5Xq4/nWvq8A==} + '@biomejs/cli-darwin-x64@2.4.0': + resolution: {integrity: sha512-Aq+S7ffpb5ynTyLgtnEjG+W6xuTd2F7FdC7J6ShpvRhZwJhjzwITGF9vrqoOnw0sv1XWkt2Q1Rpg+hleg/Xg7Q==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.4.12': - resolution: {integrity: sha512-FhfpkAAlKL6kwvcVap0Hgp4AhZmtd3YImg0kK1jd7C/aSoh4SfsB2f++yG1rU0lr8Y5MCFJrcSkmssiL9Xnnig==} + '@biomejs/cli-linux-arm64-musl@2.4.0': + resolution: {integrity: sha512-1rhDUq8sf7xX3tg7vbnU3WVfanKCKi40OXc4VleBMzRStmQHdeBY46aFP6VdwEomcVjyNiu+Zcr3LZtAdrZrjQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@2.4.12': - resolution: {integrity: sha512-tOwuCuZZtKi1jVzbk/5nXmIsziOB6yqN8c9r9QM0EJYPU6DpQWf11uBOSCfFKKM4H3d9ZoarvlgMfbcuD051Pw==} + '@biomejs/cli-linux-arm64@2.4.0': + resolution: {integrity: sha512-u2p54IhvNAWB+h7+rxCZe3reNfQYFK+ppDw+q0yegrGclFYnDPZAntv/PqgUacpC3uxTeuWFgWW7RFe3lHuxOA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@2.4.12': - resolution: {integrity: sha512-dwTIgZrGutzhkQCuvHynCkyW6hJxUuyZqKKO0YNfaS2GUoRO+tOvxXZqZB6SkWAOdfZTzwaw8IEdUnIkHKHoew==} + '@biomejs/cli-linux-x64-musl@2.4.0': + resolution: {integrity: sha512-Omo0xhl63z47X+CrE5viEWKJhejJyndl577VoXg763U/aoATrK3r5+8DPh02GokWPeODX1Hek00OtjjooGan9w==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@2.4.12': - resolution: {integrity: sha512-8pFeAnLU9QdW9jCIslB/v82bI0lhBmz2ZAKc8pVMFPO0t0wAHsoEkrUQUbMkIorTRIjbqyNZHA3lEXavsPWYSw==} + '@biomejs/cli-linux-x64@2.4.0': + resolution: {integrity: sha512-WVFOhsnzhrbMGOSIcB9yFdRV2oG2KkRRhIZiunI9gJqSU3ax9ErdnTxRfJUxZUI9NbzVxC60OCXNcu+mXfF/Tw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@2.4.12': - resolution: {integrity: sha512-B0DLnx0vA9ya/3v7XyCaP+/lCpnbWbMOfUFFve+xb5OxyYvdHaS55YsSddr228Y+JAFk58agCuZTsqNiw2a6ig==} + '@biomejs/cli-win32-arm64@2.4.0': + resolution: {integrity: sha512-aqRwW0LJLV1v1NzyLvLWQhdLmDSAV1vUh+OBdYJaa8f28XBn5BZavo+WTfqgEzALZxlNfBmu6NGO6Al3MbCULw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.4.12': - resolution: {integrity: sha512-yMckRzTyZ83hkk8iDFWswqSdU8tvZxspJKnYNh7JZr/zhZNOlzH13k4ecboU6MurKExCe2HUkH75pGI/O2JwGA==} + '@biomejs/cli-win32-x64@2.4.0': + resolution: {integrity: sha512-g47s+V+OqsGxbSZN3lpav6WYOk0PIc3aCBAq+p6dwSynL3K5MA6Cg6nkzDOlu28GEHwbakW+BllzHCJCxnfK5Q==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@colordx/core@5.0.3': - resolution: {integrity: sha512-xBQ0MYRTNNxW3mS2sJtlQTT7C3Sasqgh1/PsHva7fyDb5uqYY+gv9V0utDdX8X80mqzbGz3u/IDJdn2d/uW09g==} - - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + '@esbuild/aix-ppc64@0.25.11': + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.7': - resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + '@esbuild/aix-ppc64@0.27.5': + resolution: {integrity: sha512-nGsF/4C7uzUj+Nj/4J+Zt0bYQ6bz33Phz8Lb2N80Mti1HjGclTJdXZ+9APC4kLvONbjxN1zfvYNd8FEcbBK/MQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/android-arm64@0.25.11': + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.7': - resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + '@esbuild/android-arm64@0.27.5': + resolution: {integrity: sha512-Oeghq+XFgh1pUGd1YKs4DDoxzxkoUkvko+T/IVKwlghKLvvjbGFB3ek8VEDBmNvqhwuL0CQS3cExdzpmUyIrgA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/android-arm@0.25.11': + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.7': - resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + '@esbuild/android-arm@0.27.5': + resolution: {integrity: sha512-Cv781jd0Rfj/paoNrul1/r4G0HLvuFKYh7C9uHZ2Pl8YXstzvCyyeWENTFR9qFnRzNMCjXmsulZuvosDg10Mog==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + '@esbuild/android-x64@0.25.11': + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.7': - resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + '@esbuild/android-x64@0.27.5': + resolution: {integrity: sha512-nQD7lspbzerlmtNOxYMFAGmhxgzn8Z7m9jgFkh6kpkjsAhZee1w8tJW3ZlW+N9iRePz0oPUDrYrXidCPSImD0Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + '@esbuild/darwin-arm64@0.25.11': + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.7': - resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + '@esbuild/darwin-arm64@0.27.5': + resolution: {integrity: sha512-I+Ya/MgC6rr8oRWGRDF3BXDfP8K1BVUggHqN6VI2lUZLdDi1IM1v2cy0e3lCPbP+pVcK3Tv8cgUhHse1kaNZZw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + '@esbuild/darwin-x64@0.25.11': + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.7': - resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + '@esbuild/darwin-x64@0.27.5': + resolution: {integrity: sha512-MCjQUtC8wWJn/pIPM7vQaO69BFgwPD1jriEdqwTCKzWjGgkMbcg+M5HzrOhPhuYe1AJjXlHmD142KQf+jnYj8A==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + '@esbuild/freebsd-arm64@0.25.11': + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.7': - resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + '@esbuild/freebsd-arm64@0.27.5': + resolution: {integrity: sha512-X6xVS+goSH0UelYXnuf4GHLwpOdc8rgK/zai+dKzBMnncw7BTQIwquOodE7EKvY2UVUetSqyAfyZC1D+oqLQtg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + '@esbuild/freebsd-x64@0.25.11': + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.7': - resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + '@esbuild/freebsd-x64@0.27.5': + resolution: {integrity: sha512-233X1FGo3a8x1ekLB6XT69LfZ83vqz+9z3TSEQCTYfMNY880A97nr81KbPcAMl9rmOFp11wO0dP+eB18KU/Ucg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + '@esbuild/linux-arm64@0.25.11': + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.7': - resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + '@esbuild/linux-arm64@0.27.5': + resolution: {integrity: sha512-euKkilsNOv7x/M1NKsx5znyprbpsRFIzTV6lWziqJch7yWYayfLtZzDxDTl+LSQDJYAjd9TVb/Kt5UKIrj2e4A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + '@esbuild/linux-arm@0.25.11': + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.7': - resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + '@esbuild/linux-arm@0.27.5': + resolution: {integrity: sha512-0wkVrYHG4sdCCN/bcwQ7yYMXACkaHc3UFeaEOwSVW6e5RycMageYAFv+JS2bKLwHyeKVUvtoVH+5/RHq0fgeFw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + '@esbuild/linux-ia32@0.25.11': + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.7': - resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + '@esbuild/linux-ia32@0.27.5': + resolution: {integrity: sha512-hVRQX4+P3MS36NxOy24v/Cdsimy/5HYePw+tmPqnNN1fxV0bPrFWR6TMqwXPwoTM2VzbkA+4lbHWUKDd5ZDA/w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + '@esbuild/linux-loong64@0.25.11': + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.7': - resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + '@esbuild/linux-loong64@0.27.5': + resolution: {integrity: sha512-mKqqRuOPALI8nDzhOBmIS0INvZOOFGGg5n1osGIXAx8oersceEbKd4t1ACNTHM3sJBXGFAlEgqM+svzjPot+ZQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + '@esbuild/linux-mips64el@0.25.11': + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.7': - resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + '@esbuild/linux-mips64el@0.27.5': + resolution: {integrity: sha512-EE/QXH9IyaAj1qeuIV5+/GZkBTipgGO782Ff7Um3vPS9cvLhJJeATy4Ggxikz2inZ46KByamMn6GqtqyVjhenA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + '@esbuild/linux-ppc64@0.25.11': + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.7': - resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + '@esbuild/linux-ppc64@0.27.5': + resolution: {integrity: sha512-0V2iF1RGxBf1b7/BjurA5jfkl7PtySjom1r6xOK2q9KWw/XCpAdtB6KNMO+9xx69yYfSCRR9FE0TyKfHA2eQMw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + '@esbuild/linux-riscv64@0.25.11': + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.7': - resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + '@esbuild/linux-riscv64@0.27.5': + resolution: {integrity: sha512-rYxThBx6G9HN6tFNuvB/vykeLi4VDsm5hE5pVwzqbAjZEARQrWu3noZSfbEnPZ/CRXP3271GyFk/49up2W190g==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + '@esbuild/linux-s390x@0.25.11': + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.7': - resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + '@esbuild/linux-s390x@0.27.5': + resolution: {integrity: sha512-uEP2q/4qgd8goEUc4QIdU/1P2NmEtZ/zX5u3OpLlCGhJIuBIv0s0wr7TB2nBrd3/A5XIdEkkS5ZLF0ULuvaaYQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + '@esbuild/linux-x64@0.25.11': + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.7': - resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + '@esbuild/linux-x64@0.27.5': + resolution: {integrity: sha512-+Gq47Wqq6PLOOZuBzVSII2//9yyHNKZLuwfzCemqexqOQCSz0zy0O26kIzyp9EMNMK+nZ0tFHBZrCeVUuMs/ew==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + '@esbuild/netbsd-arm64@0.25.11': + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.7': - resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + '@esbuild/netbsd-arm64@0.27.5': + resolution: {integrity: sha512-3F/5EG8VHfN/I+W5cO1/SV2H9Q/5r7vcHabMnBqhHK2lTWOh3F8vixNzo8lqxrlmBtZVFpW8pmITHnq54+Tq4g==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + '@esbuild/netbsd-x64@0.25.11': + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.7': - resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + '@esbuild/netbsd-x64@0.27.5': + resolution: {integrity: sha512-28t+Sj3CPN8vkMOlZotOmDgilQwVvxWZl7b8rxpn73Tt/gCnvrHxQUMng4uu3itdFvrtba/1nHejvxqz8xgEMA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + '@esbuild/openbsd-arm64@0.25.11': + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.7': - resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + '@esbuild/openbsd-arm64@0.27.5': + resolution: {integrity: sha512-Doz/hKtiuVAi9hMsBMpwBANhIZc8l238U2Onko3t2xUp8xtM0ZKdDYHMnm/qPFVthY8KtxkXaocwmMh6VolzMA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + '@esbuild/openbsd-x64@0.25.11': + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.7': - resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + '@esbuild/openbsd-x64@0.27.5': + resolution: {integrity: sha512-WfGVaa1oz5A7+ZFPkERIbIhKT4olvGl1tyzTRaB5yoZRLqC0KwaO95FeZtOdQj/oKkjW57KcVF944m62/0GYtA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + '@esbuild/openharmony-arm64@0.25.11': + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.7': - resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + '@esbuild/openharmony-arm64@0.27.5': + resolution: {integrity: sha512-Xh+VRuh6OMh3uJ0JkCjI57l+DVe7VRGBYymen8rFPnTVgATBwA6nmToxM2OwTlSvrnWpPKkrQUj93+K9huYC6A==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + '@esbuild/sunos-x64@0.25.11': + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.7': - resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + '@esbuild/sunos-x64@0.27.5': + resolution: {integrity: sha512-aC1gpJkkaUADHuAdQfuVTnqVUTLqqUNhAvEwHwVWcnVVZvNlDPGA0UveZsfXJJ9T6k9Po4eHi3c02gbdwO3g6w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + '@esbuild/win32-arm64@0.25.11': + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.7': - resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + '@esbuild/win32-arm64@0.27.5': + resolution: {integrity: sha512-0UNx2aavV0fk6UpZcwXFLztA2r/k9jTUa7OW7SAea1VYUhkug99MW1uZeXEnPn5+cHOd0n8myQay6TlFnBR07w==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + '@esbuild/win32-ia32@0.25.11': + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.7': - resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + '@esbuild/win32-ia32@0.27.5': + resolution: {integrity: sha512-5nlJ3AeJWCTSzR7AEqVjT/faWyqKU86kCi1lLmxVqmNR+j4HrYdns+eTGjS/vmrzCIe8inGQckUadvS0+JkKdQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + '@esbuild/win32-x64@0.25.11': + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.7': - resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + '@esbuild/win32-x64@0.27.5': + resolution: {integrity: sha512-PWypQR+d4FLfkhBIV+/kHsUELAnMpx1bRvvsn3p+/sAERbnCzFrtDRG2Xw5n+2zPxBK2+iaP+vetsRl4Ti7WgA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -430,6 +431,10 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -466,8 +471,8 @@ packages: rollup: optional: true - '@rollup/plugin-replace@6.0.3': - resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + '@rollup/plugin-replace@6.0.2': + resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -484,133 +489,118 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.60.1': - resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + '@rollup/rollup-android-arm-eabi@4.52.5': + resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.60.1': - resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + '@rollup/rollup-android-arm64@4.52.5': + resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.60.1': - resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + '@rollup/rollup-darwin-arm64@4.52.5': + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.60.1': - resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + '@rollup/rollup-darwin-x64@4.52.5': + resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.60.1': - resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + '@rollup/rollup-freebsd-arm64@4.52.5': + resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.60.1': - resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + '@rollup/rollup-freebsd-x64@4.52.5': + resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': - resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.60.1': - resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.60.1': - resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + '@rollup/rollup-linux-arm64-gnu@4.52.5': + resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.60.1': - resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + '@rollup/rollup-linux-arm64-musl@4.52.5': + resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.60.1': - resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + '@rollup/rollup-linux-loong64-gnu@4.52.5': + resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.60.1': - resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.60.1': - resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.60.1': - resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.60.1': - resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.60.1': - resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + '@rollup/rollup-linux-riscv64-musl@4.52.5': + resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.60.1': - resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + '@rollup/rollup-linux-s390x-gnu@4.52.5': + resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.60.1': - resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + '@rollup/rollup-linux-x64-gnu@4.52.5': + resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.60.1': - resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + '@rollup/rollup-linux-x64-musl@4.52.5': + resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.60.1': - resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.60.1': - resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + '@rollup/rollup-openharmony-arm64@4.52.5': + resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.60.1': - resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + '@rollup/rollup-win32-arm64-msvc@4.52.5': + resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.60.1': - resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + '@rollup/rollup-win32-ia32-msvc@4.52.5': + resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.60.1': - resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + '@rollup/rollup-win32-x64-gnu@4.52.5': + resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.60.1': - resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + '@rollup/rollup-win32-x64-msvc@4.52.5': + resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] os: [win32] - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -618,8 +608,8 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/node@22.20.1': - resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} + '@types/node@22.19.15': + resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -653,11 +643,27 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -665,23 +671,28 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - autoprefixer@10.5.0: - resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 - baseline-browser-mapping@2.10.19: - resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} - engines: {node: '>=6.0.0'} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.8.20: + resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} hasBin: true boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - browserslist@4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + browserslist@4.27.0: + resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -698,15 +709,15 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001788: - resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} + caniuse-lite@1.0.30001751: + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} chai@5.3.3: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} - check-error@2.1.3: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} chokidar@4.0.3: @@ -716,6 +727,16 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -730,18 +751,22 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} - css-declaration-sorter@7.4.0: - resolution: {integrity: sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-declaration-sorter@7.3.0: + resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 @@ -753,8 +778,8 @@ packages: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - css-tree@3.2.1: - resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-what@6.2.2: @@ -766,8 +791,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.13: - resolution: {integrity: sha512-/XvjNeb+oitOT9ks3Tg0UAsnXeHR1dh3wBMK/D/zN8gqvAHOp25FZGiLoQbvBBU203WXVNITkaqyFp4O/Rns4w==} + cssnano-preset-default@7.0.9: + resolution: {integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -778,8 +803,8 @@ packages: peerDependencies: postcss: ^8.4.32 - cssnano@7.1.5: - resolution: {integrity: sha512-4yEvjF2zcoAOWfNq6X687ORJc5SvM5xbg6EGuLSBmGoWZbsL69wpmw1tA3fZt7OwIG+G4ndjF95RSS4luvim7A==} + cssnano@7.1.1: + resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -788,8 +813,8 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dayjs@1.11.20: - resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -808,8 +833,8 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defu@6.1.7: - resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -824,27 +849,32 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - electron-to-chromium@1.5.336: - resolution: {integrity: sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.240: + resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + esbuild@0.25.11: + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.7: - resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + esbuild@0.27.5: + resolution: {integrity: sha512-zdQoHBjuDqKsvV5OPaWansOwfSQ0Js+Uj9J85TBvj3bFW1JjWTSULMRwdQAc8qMeIScbClxeMK0jlrtB9linhA==} engines: {node: '>=18'} hasBin: true @@ -858,12 +888,12 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -877,8 +907,12 @@ packages: fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - fraction.js@5.3.4: - resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -888,6 +922,11 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -899,12 +938,22 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true @@ -923,8 +972,8 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - knitwork@1.3.0: - resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} + knitwork@1.2.0: + resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} @@ -946,14 +995,25 @@ packages: loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - mdn-data@2.27.1: - resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} mkdist@2.4.1: resolution: {integrity: sha512-Ezk0gi04GJBkqMfsksICU5Rjoemc4biIekwgrONWVPor2EO/N9nBgN6MZXAf7Yw4mDDhrNyKbdETaHNevfumKg==} @@ -976,8 +1036,8 @@ packages: vue-tsc: optional: true - mlly@1.8.2: - resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -990,8 +1050,21 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - node-releases@2.0.37: - resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.26: + resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -1000,9 +1073,20 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -1013,8 +1097,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} pirates@4.0.7: @@ -1033,20 +1117,20 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.8: - resolution: {integrity: sha512-VX0JOZx0jECwGK0GZejIKvXIU+80S1zkjet31FVUYPZ4O+IPU3ZlntrPdPKT2HnKRMOkc0wy3m/v+c4UNta02g==} + postcss-colormin@7.0.4: + resolution: {integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-convert-values@7.0.10: - resolution: {integrity: sha512-hVqVH3cDkPyxL4Q0xpCquRAXjJDZ6hbpjC+PNWn8ZgHmNX3RZxLtruC3U2LY9EuNe+tp4QkcsZxg0htokmjydg==} + postcss-convert-values@7.0.7: + resolution: {integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-discard-comments@7.0.6: - resolution: {integrity: sha512-Sq+Fzj1Eg5/CPf1ERb0wS1Im5cvE2gDXCE+si4HCn1sf+jpQZxDI4DXEp8t77B/ImzDceWE2ebJQFXdqZ6GRJw==} + postcss-discard-comments@7.0.4: + resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1093,8 +1177,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-merge-rules@7.0.9: - resolution: {integrity: sha512-XKMXkHAegyLeIymVylg1Ro4NNHITInHPvmvybsIUximYfsg5fRw2b5TeqLTQwwg5cXEDVa556AAxvMve1MJuJA==} + postcss-merge-rules@7.0.6: + resolution: {integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1105,20 +1189,20 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-minify-gradients@7.0.3: - resolution: {integrity: sha512-2znRFq3Pg+Zo0ttzQxO7qIJdY2er1TOZbclHW2qMqBcHMmz+i6nn3roAyG3kuEDQTzbzd3gn24TAIifEfth1PQ==} + postcss-minify-gradients@7.0.1: + resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-minify-params@7.0.7: - resolution: {integrity: sha512-OPmvW/9sjPEPQYnS2Sh6jvMW54wqk1IjjEMB8k/7V8SUIie71yMy3HQ9+w/ZHoL1YvgDGBQ/mCxP3n0Y/RxgqA==} + postcss-minify-params@7.0.4: + resolution: {integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-minify-selectors@7.0.6: - resolution: {integrity: sha512-lIbC0jy3AAwDxEgciZlBullDiMBeBCT+fz5G8RcA9MWqh/hfUkpOI3vNDUNEZHgokaoiv0juB9Y8fGcON7rU/A==} + postcss-minify-selectors@7.0.5: + resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1165,8 +1249,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-normalize-unicode@7.0.7: - resolution: {integrity: sha512-Kfm0mC3gTnOC+SsLgxQqNEZStRxJgBaYrMpBe9fDVB0/MjC1G++FAeDW2YxYc5Mbvav12/7mOBSOTW7HK9Knwg==} + postcss-normalize-unicode@7.0.4: + resolution: {integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1189,8 +1273,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-reduce-initial@7.0.7: - resolution: {integrity: sha512-evetDQPqkgrzHoP8g3HjE3KgH0j2W0je2Vt1pfTaO2KvmjulStxGC2IGeI2y0pdLi6ryEGc4nD08zpDRP9ge8w==} + postcss-reduce-initial@7.0.4: + resolution: {integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1201,18 +1285,18 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} - postcss-svgo@7.1.1: - resolution: {integrity: sha512-zU9H9oEDrUFKa0JB7w+IYL7Qs9ey1mZyjhbf0KLxwJDdDRtoPvCmaEfknzqfHj44QS9VD6c5sJnBAVYTLRg/Sg==} + postcss-svgo@7.1.0: + resolution: {integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==} engines: {node: ^18.12.0 || ^20.9.0 || >= 18} peerDependencies: postcss: ^8.4.32 - postcss-unique-selectors@7.0.5: - resolution: {integrity: sha512-3QoYmEt4qg/rUWDn6Tc8+ZVPmbp4G1hXDtCNWDx0st8SjtCbRcxRXDDM1QrEiXGG3A45zscSJFb4QH90LViyxg==} + postcss-unique-selectors@7.0.4: + resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1220,8 +1304,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.9: - resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} pretty-bytes@7.1.0: @@ -1236,38 +1320,49 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true - rollup-plugin-dts@6.4.1: - resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} - engines: {node: '>=20'} + rollup-plugin-dts@6.2.3: + resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} + engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 || ^6.0 + typescript: ^4.5 || ^5.0 - rollup@4.60.1: - resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + rollup@4.52.5: + resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} - engines: {node: '>=11.0.0'} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1282,17 +1377,33 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + strip-literal@3.1.0: resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - stylehacks@7.0.9: - resolution: {integrity: sha512-dgipCLBa16sZDoQ8BmXdRwV4SmFAxZ4KtbMhV0buow62M/2l6Jq6AkVsKUY/QFr8+VjgzXO5UVHx1f+vvY9DXw==} + stylehacks@7.0.6: + resolution: {integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - sucrase@3.35.1: - resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -1300,8 +1411,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@4.0.1: - resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} + svgo@4.0.0: + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} engines: {node: '>=16'} hasBin: true @@ -1318,8 +1429,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -1334,6 +1445,9 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -1360,13 +1474,13 @@ packages: typescript: optional: true - typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} unbuild@3.6.1: resolution: {integrity: sha512-+U5CdtrdjfWkZhuO4N9l5UhyiccoeMEXIc2Lbs30Haxb+tRwB3VwB8AoZRxlAzORXunenSo+j6lh45jx+xkKgg==} @@ -1384,8 +1498,8 @@ packages: resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} hasBin: true - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -1402,8 +1516,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.3.2: - resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} + vite@7.1.10: + resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1470,17 +1584,36 @@ packages: jsdom: optional: true + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} snapshots: - '@babel/code-frame@7.29.0': + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 @@ -1490,209 +1623,211 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': optional: true - '@biomejs/biome@2.4.12': + '@biomejs/biome@2.4.0': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.4.12 - '@biomejs/cli-darwin-x64': 2.4.12 - '@biomejs/cli-linux-arm64': 2.4.12 - '@biomejs/cli-linux-arm64-musl': 2.4.12 - '@biomejs/cli-linux-x64': 2.4.12 - '@biomejs/cli-linux-x64-musl': 2.4.12 - '@biomejs/cli-win32-arm64': 2.4.12 - '@biomejs/cli-win32-x64': 2.4.12 + '@biomejs/cli-darwin-arm64': 2.4.0 + '@biomejs/cli-darwin-x64': 2.4.0 + '@biomejs/cli-linux-arm64': 2.4.0 + '@biomejs/cli-linux-arm64-musl': 2.4.0 + '@biomejs/cli-linux-x64': 2.4.0 + '@biomejs/cli-linux-x64-musl': 2.4.0 + '@biomejs/cli-win32-arm64': 2.4.0 + '@biomejs/cli-win32-x64': 2.4.0 - '@biomejs/cli-darwin-arm64@2.4.12': + '@biomejs/cli-darwin-arm64@2.4.0': optional: true - '@biomejs/cli-darwin-x64@2.4.12': + '@biomejs/cli-darwin-x64@2.4.0': optional: true - '@biomejs/cli-linux-arm64-musl@2.4.12': + '@biomejs/cli-linux-arm64-musl@2.4.0': optional: true - '@biomejs/cli-linux-arm64@2.4.12': + '@biomejs/cli-linux-arm64@2.4.0': optional: true - '@biomejs/cli-linux-x64-musl@2.4.12': + '@biomejs/cli-linux-x64-musl@2.4.0': optional: true - '@biomejs/cli-linux-x64@2.4.12': + '@biomejs/cli-linux-x64@2.4.0': optional: true - '@biomejs/cli-win32-arm64@2.4.12': + '@biomejs/cli-win32-arm64@2.4.0': optional: true - '@biomejs/cli-win32-x64@2.4.12': + '@biomejs/cli-win32-x64@2.4.0': optional: true - '@colordx/core@5.0.3': {} - - '@esbuild/aix-ppc64@0.25.12': + '@esbuild/aix-ppc64@0.25.11': optional: true - '@esbuild/aix-ppc64@0.27.7': + '@esbuild/aix-ppc64@0.27.5': optional: true - '@esbuild/android-arm64@0.25.12': + '@esbuild/android-arm64@0.25.11': optional: true - '@esbuild/android-arm64@0.27.7': + '@esbuild/android-arm64@0.27.5': optional: true - '@esbuild/android-arm@0.25.12': + '@esbuild/android-arm@0.25.11': optional: true - '@esbuild/android-arm@0.27.7': + '@esbuild/android-arm@0.27.5': optional: true - '@esbuild/android-x64@0.25.12': + '@esbuild/android-x64@0.25.11': optional: true - '@esbuild/android-x64@0.27.7': + '@esbuild/android-x64@0.27.5': optional: true - '@esbuild/darwin-arm64@0.25.12': + '@esbuild/darwin-arm64@0.25.11': optional: true - '@esbuild/darwin-arm64@0.27.7': + '@esbuild/darwin-arm64@0.27.5': optional: true - '@esbuild/darwin-x64@0.25.12': + '@esbuild/darwin-x64@0.25.11': optional: true - '@esbuild/darwin-x64@0.27.7': + '@esbuild/darwin-x64@0.27.5': optional: true - '@esbuild/freebsd-arm64@0.25.12': + '@esbuild/freebsd-arm64@0.25.11': optional: true - '@esbuild/freebsd-arm64@0.27.7': + '@esbuild/freebsd-arm64@0.27.5': optional: true - '@esbuild/freebsd-x64@0.25.12': + '@esbuild/freebsd-x64@0.25.11': optional: true - '@esbuild/freebsd-x64@0.27.7': + '@esbuild/freebsd-x64@0.27.5': optional: true - '@esbuild/linux-arm64@0.25.12': + '@esbuild/linux-arm64@0.25.11': optional: true - '@esbuild/linux-arm64@0.27.7': + '@esbuild/linux-arm64@0.27.5': optional: true - '@esbuild/linux-arm@0.25.12': + '@esbuild/linux-arm@0.25.11': optional: true - '@esbuild/linux-arm@0.27.7': + '@esbuild/linux-arm@0.27.5': optional: true - '@esbuild/linux-ia32@0.25.12': + '@esbuild/linux-ia32@0.25.11': optional: true - '@esbuild/linux-ia32@0.27.7': + '@esbuild/linux-ia32@0.27.5': optional: true - '@esbuild/linux-loong64@0.25.12': + '@esbuild/linux-loong64@0.25.11': optional: true - '@esbuild/linux-loong64@0.27.7': + '@esbuild/linux-loong64@0.27.5': optional: true - '@esbuild/linux-mips64el@0.25.12': + '@esbuild/linux-mips64el@0.25.11': optional: true - '@esbuild/linux-mips64el@0.27.7': + '@esbuild/linux-mips64el@0.27.5': optional: true - '@esbuild/linux-ppc64@0.25.12': + '@esbuild/linux-ppc64@0.25.11': optional: true - '@esbuild/linux-ppc64@0.27.7': + '@esbuild/linux-ppc64@0.27.5': optional: true - '@esbuild/linux-riscv64@0.25.12': + '@esbuild/linux-riscv64@0.25.11': optional: true - '@esbuild/linux-riscv64@0.27.7': + '@esbuild/linux-riscv64@0.27.5': optional: true - '@esbuild/linux-s390x@0.25.12': + '@esbuild/linux-s390x@0.25.11': optional: true - '@esbuild/linux-s390x@0.27.7': + '@esbuild/linux-s390x@0.27.5': optional: true - '@esbuild/linux-x64@0.25.12': + '@esbuild/linux-x64@0.25.11': optional: true - '@esbuild/linux-x64@0.27.7': + '@esbuild/linux-x64@0.27.5': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@esbuild/netbsd-arm64@0.25.11': optional: true - '@esbuild/netbsd-arm64@0.27.7': + '@esbuild/netbsd-arm64@0.27.5': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@esbuild/netbsd-x64@0.25.11': optional: true - '@esbuild/netbsd-x64@0.27.7': + '@esbuild/netbsd-x64@0.27.5': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@esbuild/openbsd-arm64@0.25.11': optional: true - '@esbuild/openbsd-arm64@0.27.7': + '@esbuild/openbsd-arm64@0.27.5': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@esbuild/openbsd-x64@0.25.11': optional: true - '@esbuild/openbsd-x64@0.27.7': + '@esbuild/openbsd-x64@0.27.5': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@esbuild/openharmony-arm64@0.25.11': optional: true - '@esbuild/openharmony-arm64@0.27.7': + '@esbuild/openharmony-arm64@0.27.5': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/sunos-x64@0.25.11': optional: true - '@esbuild/sunos-x64@0.27.7': + '@esbuild/sunos-x64@0.27.5': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/win32-arm64@0.25.11': optional: true - '@esbuild/win32-arm64@0.27.7': + '@esbuild/win32-arm64@0.27.5': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/win32-ia32@0.25.11': optional: true - '@esbuild/win32-ia32@0.27.7': + '@esbuild/win32-ia32@0.27.5': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-x64@0.25.11': optional: true - '@esbuild/win32-x64@0.27.7': + '@esbuild/win32-x64@0.27.5': optional: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -1702,138 +1837,131 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@rollup/plugin-alias@5.1.1(rollup@4.60.1)': - optionalDependencies: - rollup: 4.60.1 + '@pkgjs/parseargs@0.11.0': + optional: true - '@rollup/plugin-commonjs@28.0.9(rollup@4.60.1)': + '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': + optionalDependencies: + rollup: 4.52.5 + + '@rollup/plugin-commonjs@28.0.9(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.21 - picomatch: 4.0.4 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.60.1 + rollup: 4.52.5 - '@rollup/plugin-json@6.1.0(rollup@4.60.1)': + '@rollup/plugin-json@6.1.0(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) optionalDependencies: - rollup: 4.60.1 + rollup: 4.52.5 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.1)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.12 + resolve: 1.22.11 optionalDependencies: - rollup: 4.60.1 + rollup: 4.52.5 - '@rollup/plugin-replace@6.0.3(rollup@4.60.1)': + '@rollup/plugin-replace@6.0.2(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) - magic-string: 0.30.21 + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + magic-string: 0.30.19 optionalDependencies: - rollup: 4.60.1 + rollup: 4.52.5 - '@rollup/pluginutils@5.3.0(rollup@4.60.1)': + '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.60.1 + rollup: 4.52.5 - '@rollup/rollup-android-arm-eabi@4.60.1': + '@rollup/rollup-android-arm-eabi@4.52.5': optional: true - '@rollup/rollup-android-arm64@4.60.1': + '@rollup/rollup-android-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-arm64@4.60.1': + '@rollup/rollup-darwin-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-x64@4.60.1': + '@rollup/rollup-darwin-x64@4.52.5': optional: true - '@rollup/rollup-freebsd-arm64@4.60.1': + '@rollup/rollup-freebsd-arm64@4.52.5': optional: true - '@rollup/rollup-freebsd-x64@4.60.1': + '@rollup/rollup-freebsd-x64@4.52.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.1': + '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.60.1': + '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.60.1': + '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true - '@rollup/rollup-linux-loong64-gnu@4.60.1': + '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-loong64-musl@4.60.1': + '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.60.1': + '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-ppc64-musl@4.60.1': + '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.60.1': + '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-musl@4.60.1': + '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.60.1': + '@rollup/rollup-linux-x64-musl@4.52.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.60.1': + '@rollup/rollup-openharmony-arm64@4.52.5': optional: true - '@rollup/rollup-linux-x64-musl@4.60.1': + '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true - '@rollup/rollup-openbsd-x64@4.60.1': + '@rollup/rollup-win32-ia32-msvc@4.52.5': optional: true - '@rollup/rollup-openharmony-arm64@4.60.1': + '@rollup/rollup-win32-x64-gnu@4.52.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.60.1': + '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.60.1': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.60.1': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.60.1': - optional: true - - '@types/chai@5.2.3': + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 '@types/deep-eql@4.0.2': {} '@types/estree@1.0.8': {} - '@types/node@22.20.1': + '@types/node@22.19.15': dependencies: undici-types: 6.21.0 @@ -1841,19 +1969,19 @@ snapshots: '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.3 + '@types/chai': 5.2.2 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.3.2(@types/node@22.20.1)(jiti@2.6.1))': + '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@22.19.15)(jiti@2.6.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 0.30.19 optionalDependencies: - vite: 7.3.2(@types/node@22.20.1)(jiti@2.6.1) + vite: 7.1.10(@types/node@22.19.15)(jiti@2.6.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -1868,7 +1996,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.21 + magic-string: 0.30.19 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -1881,58 +2009,75 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - acorn@8.16.0: {} + acorn@8.15.0: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} any-promise@1.3.0: {} assertion-error@2.0.1: {} - autoprefixer@10.5.0(postcss@8.5.9): + autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001788 - fraction.js: 5.3.4 + browserslist: 4.27.0 + caniuse-lite: 1.0.30001751 + fraction.js: 4.3.7 + normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - baseline-browser-mapping@2.10.19: {} + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.8.20: {} boolbase@1.0.0: {} - browserslist@4.28.2: + brace-expansion@2.0.2: dependencies: - baseline-browser-mapping: 2.10.19 - caniuse-lite: 1.0.30001788 - electron-to-chromium: 1.5.336 - node-releases: 2.0.37 - update-browserslist-db: 1.2.3(browserslist@4.28.2) + balanced-match: 1.0.2 - bundle-require@5.1.0(esbuild@0.27.7): + browserslist@4.27.0: dependencies: - esbuild: 0.27.7 + baseline-browser-mapping: 2.8.20 + caniuse-lite: 1.0.30001751 + electron-to-chromium: 1.5.240 + node-releases: 2.0.26 + update-browserslist-db: 1.1.4(browserslist@4.27.0) + + bundle-require@5.1.0(esbuild@0.27.5): + dependencies: + esbuild: 0.27.5 load-tsconfig: 0.2.5 cac@6.7.14: {} caniuse-api@3.0.0: dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001788 + browserslist: 4.27.0 + caniuse-lite: 1.0.30001751 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001788: {} + caniuse-lite@1.0.30001751: {} chai@5.3.3: dependencies: assertion-error: 2.0.1 - check-error: 2.1.3 + check-error: 2.1.1 deep-eql: 5.0.2 loupe: 3.2.1 pathval: 2.0.1 - check-error@2.1.3: {} + check-error@2.1.1: {} chokidar@4.0.3: dependencies: @@ -1942,6 +2087,14 @@ snapshots: dependencies: consola: 3.4.2 + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colord@2.9.3: {} + commander@11.1.0: {} commander@4.1.1: {} @@ -1950,15 +2103,25 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.4: {} + confbox@0.2.2: {} consola@3.4.2: {} - convert-source-map@2.0.0: {} - - css-declaration-sorter@7.4.0(postcss@8.5.9): + cross-fetch@4.1.0: dependencies: - postcss: 8.5.9 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-declaration-sorter@7.3.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 css-select@5.2.2: dependencies: @@ -1973,64 +2136,64 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@3.2.1: + css-tree@3.1.0: dependencies: - mdn-data: 2.27.1 + mdn-data: 2.12.2 source-map-js: 1.2.1 css-what@6.2.2: {} cssesc@3.0.0: {} - cssnano-preset-default@7.0.13(postcss@8.5.9): + cssnano-preset-default@7.0.9(postcss@8.5.6): dependencies: - browserslist: 4.28.2 - css-declaration-sorter: 7.4.0(postcss@8.5.9) - cssnano-utils: 5.0.1(postcss@8.5.9) - postcss: 8.5.9 - postcss-calc: 10.1.1(postcss@8.5.9) - postcss-colormin: 7.0.8(postcss@8.5.9) - postcss-convert-values: 7.0.10(postcss@8.5.9) - postcss-discard-comments: 7.0.6(postcss@8.5.9) - postcss-discard-duplicates: 7.0.2(postcss@8.5.9) - postcss-discard-empty: 7.0.1(postcss@8.5.9) - postcss-discard-overridden: 7.0.1(postcss@8.5.9) - postcss-merge-longhand: 7.0.5(postcss@8.5.9) - postcss-merge-rules: 7.0.9(postcss@8.5.9) - postcss-minify-font-values: 7.0.1(postcss@8.5.9) - postcss-minify-gradients: 7.0.3(postcss@8.5.9) - postcss-minify-params: 7.0.7(postcss@8.5.9) - postcss-minify-selectors: 7.0.6(postcss@8.5.9) - postcss-normalize-charset: 7.0.1(postcss@8.5.9) - postcss-normalize-display-values: 7.0.1(postcss@8.5.9) - postcss-normalize-positions: 7.0.1(postcss@8.5.9) - postcss-normalize-repeat-style: 7.0.1(postcss@8.5.9) - postcss-normalize-string: 7.0.1(postcss@8.5.9) - postcss-normalize-timing-functions: 7.0.1(postcss@8.5.9) - postcss-normalize-unicode: 7.0.7(postcss@8.5.9) - postcss-normalize-url: 7.0.1(postcss@8.5.9) - postcss-normalize-whitespace: 7.0.1(postcss@8.5.9) - postcss-ordered-values: 7.0.2(postcss@8.5.9) - postcss-reduce-initial: 7.0.7(postcss@8.5.9) - postcss-reduce-transforms: 7.0.1(postcss@8.5.9) - postcss-svgo: 7.1.1(postcss@8.5.9) - postcss-unique-selectors: 7.0.5(postcss@8.5.9) + browserslist: 4.27.0 + css-declaration-sorter: 7.3.0(postcss@8.5.6) + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 10.1.1(postcss@8.5.6) + postcss-colormin: 7.0.4(postcss@8.5.6) + postcss-convert-values: 7.0.7(postcss@8.5.6) + postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-discard-duplicates: 7.0.2(postcss@8.5.6) + postcss-discard-empty: 7.0.1(postcss@8.5.6) + postcss-discard-overridden: 7.0.1(postcss@8.5.6) + postcss-merge-longhand: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.6(postcss@8.5.6) + postcss-minify-font-values: 7.0.1(postcss@8.5.6) + postcss-minify-gradients: 7.0.1(postcss@8.5.6) + postcss-minify-params: 7.0.4(postcss@8.5.6) + postcss-minify-selectors: 7.0.5(postcss@8.5.6) + postcss-normalize-charset: 7.0.1(postcss@8.5.6) + postcss-normalize-display-values: 7.0.1(postcss@8.5.6) + postcss-normalize-positions: 7.0.1(postcss@8.5.6) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) + postcss-normalize-string: 7.0.1(postcss@8.5.6) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) + postcss-normalize-unicode: 7.0.4(postcss@8.5.6) + postcss-normalize-url: 7.0.1(postcss@8.5.6) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) + postcss-ordered-values: 7.0.2(postcss@8.5.6) + postcss-reduce-initial: 7.0.4(postcss@8.5.6) + postcss-reduce-transforms: 7.0.1(postcss@8.5.6) + postcss-svgo: 7.1.0(postcss@8.5.6) + postcss-unique-selectors: 7.0.4(postcss@8.5.6) - cssnano-utils@5.0.1(postcss@8.5.9): + cssnano-utils@5.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 - cssnano@7.1.5(postcss@8.5.9): + cssnano@7.1.1(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.13(postcss@8.5.9) + cssnano-preset-default: 7.0.9(postcss@8.5.6) lilconfig: 3.1.3 - postcss: 8.5.9 + postcss: 8.5.6 csso@5.0.5: dependencies: css-tree: 2.2.1 - dayjs@1.11.20: {} + dayjs@1.11.19: {} debug@4.4.3: dependencies: @@ -2040,7 +2203,7 @@ snapshots: deepmerge@4.3.1: {} - defu@6.1.7: {} + defu@6.1.4: {} dom-serializer@2.0.0: dependencies: @@ -2060,71 +2223,75 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - electron-to-chromium@1.5.336: {} + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.240: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} entities@4.5.0: {} - es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} - esbuild@0.25.12: + esbuild@0.25.11: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 + '@esbuild/aix-ppc64': 0.25.11 + '@esbuild/android-arm': 0.25.11 + '@esbuild/android-arm64': 0.25.11 + '@esbuild/android-x64': 0.25.11 + '@esbuild/darwin-arm64': 0.25.11 + '@esbuild/darwin-x64': 0.25.11 + '@esbuild/freebsd-arm64': 0.25.11 + '@esbuild/freebsd-x64': 0.25.11 + '@esbuild/linux-arm': 0.25.11 + '@esbuild/linux-arm64': 0.25.11 + '@esbuild/linux-ia32': 0.25.11 + '@esbuild/linux-loong64': 0.25.11 + '@esbuild/linux-mips64el': 0.25.11 + '@esbuild/linux-ppc64': 0.25.11 + '@esbuild/linux-riscv64': 0.25.11 + '@esbuild/linux-s390x': 0.25.11 + '@esbuild/linux-x64': 0.25.11 + '@esbuild/netbsd-arm64': 0.25.11 + '@esbuild/netbsd-x64': 0.25.11 + '@esbuild/openbsd-arm64': 0.25.11 + '@esbuild/openbsd-x64': 0.25.11 + '@esbuild/openharmony-arm64': 0.25.11 + '@esbuild/sunos-x64': 0.25.11 + '@esbuild/win32-arm64': 0.25.11 + '@esbuild/win32-ia32': 0.25.11 + '@esbuild/win32-x64': 0.25.11 - esbuild@0.27.7: + esbuild@0.27.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.7 - '@esbuild/android-arm': 0.27.7 - '@esbuild/android-arm64': 0.27.7 - '@esbuild/android-x64': 0.27.7 - '@esbuild/darwin-arm64': 0.27.7 - '@esbuild/darwin-x64': 0.27.7 - '@esbuild/freebsd-arm64': 0.27.7 - '@esbuild/freebsd-x64': 0.27.7 - '@esbuild/linux-arm': 0.27.7 - '@esbuild/linux-arm64': 0.27.7 - '@esbuild/linux-ia32': 0.27.7 - '@esbuild/linux-loong64': 0.27.7 - '@esbuild/linux-mips64el': 0.27.7 - '@esbuild/linux-ppc64': 0.27.7 - '@esbuild/linux-riscv64': 0.27.7 - '@esbuild/linux-s390x': 0.27.7 - '@esbuild/linux-x64': 0.27.7 - '@esbuild/netbsd-arm64': 0.27.7 - '@esbuild/netbsd-x64': 0.27.7 - '@esbuild/openbsd-arm64': 0.27.7 - '@esbuild/openbsd-x64': 0.27.7 - '@esbuild/openharmony-arm64': 0.27.7 - '@esbuild/sunos-x64': 0.27.7 - '@esbuild/win32-arm64': 0.27.7 - '@esbuild/win32-ia32': 0.27.7 - '@esbuild/win32-x64': 0.27.7 + '@esbuild/aix-ppc64': 0.27.5 + '@esbuild/android-arm': 0.27.5 + '@esbuild/android-arm64': 0.27.5 + '@esbuild/android-x64': 0.27.5 + '@esbuild/darwin-arm64': 0.27.5 + '@esbuild/darwin-x64': 0.27.5 + '@esbuild/freebsd-arm64': 0.27.5 + '@esbuild/freebsd-x64': 0.27.5 + '@esbuild/linux-arm': 0.27.5 + '@esbuild/linux-arm64': 0.27.5 + '@esbuild/linux-ia32': 0.27.5 + '@esbuild/linux-loong64': 0.27.5 + '@esbuild/linux-mips64el': 0.27.5 + '@esbuild/linux-ppc64': 0.27.5 + '@esbuild/linux-riscv64': 0.27.5 + '@esbuild/linux-s390x': 0.27.5 + '@esbuild/linux-x64': 0.27.5 + '@esbuild/netbsd-arm64': 0.27.5 + '@esbuild/netbsd-x64': 0.27.5 + '@esbuild/openbsd-arm64': 0.27.5 + '@esbuild/openbsd-x64': 0.27.5 + '@esbuild/openharmony-arm64': 0.27.5 + '@esbuild/sunos-x64': 0.27.5 + '@esbuild/win32-arm64': 0.27.5 + '@esbuild/win32-ia32': 0.27.5 + '@esbuild/win32-x64': 0.27.5 escalade@3.2.0: {} @@ -2134,27 +2301,41 @@ snapshots: dependencies: '@types/estree': 1.0.8 - expect-type@1.3.0: {} + expect-type@1.2.2: {} - exsolve@1.0.8: {} + exsolve@1.0.7: {} - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.3 fix-dts-default-cjs-exports@1.0.1: dependencies: - magic-string: 0.30.21 - mlly: 1.8.2 - rollup: 4.60.1 + magic-string: 0.30.19 + mlly: 1.8.0 + rollup: 4.52.5 - fraction.js@5.3.4: {} + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fraction.js@4.3.7: {} fsevents@2.3.3: optional: true function-bind@1.1.2: {} + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -2165,12 +2346,22 @@ snapshots: dependencies: hasown: 2.0.2 + is-fullwidth-code-point@3.0.0: {} + is-module@1.0.0: {} is-reference@1.2.1: dependencies: '@types/estree': 1.0.8 + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jiti@1.21.7: {} jiti@2.6.1: {} @@ -2182,7 +2373,7 @@ snapshots: js-tokens@9.0.1: {} - knitwork@1.3.0: {} + knitwork@1.2.0: {} lilconfig@3.1.3: {} @@ -2196,38 +2387,46 @@ snapshots: loupe@3.2.1: {} - magic-string@0.30.21: + lru-cache@10.4.3: {} + + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 mdn-data@2.0.28: {} - mdn-data@2.27.1: {} + mdn-data@2.12.2: {} - mkdist@2.4.1(typescript@6.0.3): + minimatch@9.0.5: dependencies: - autoprefixer: 10.5.0(postcss@8.5.9) + brace-expansion: 2.0.2 + + minipass@7.1.2: {} + + mkdist@2.4.1(typescript@6.0.2): + dependencies: + autoprefixer: 10.4.21(postcss@8.5.6) citty: 0.1.6 - cssnano: 7.1.5(postcss@8.5.9) - defu: 6.1.7 - esbuild: 0.25.12 + cssnano: 7.1.1(postcss@8.5.6) + defu: 6.1.4 + esbuild: 0.25.11 jiti: 1.21.7 - mlly: 1.8.2 + mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 - postcss: 8.5.9 - postcss-nested: 7.0.2(postcss@8.5.9) - semver: 7.7.4 - tinyglobby: 0.2.16 + postcss: 8.5.6 + postcss-nested: 7.0.2(postcss@8.5.6) + semver: 7.7.3 + tinyglobby: 0.2.15 optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 - mlly@1.8.2: + mlly@1.8.0: dependencies: - acorn: 8.16.0 + acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.3 + ufo: 1.6.1 ms@2.1.3: {} @@ -2239,7 +2438,13 @@ snapshots: nanoid@3.3.11: {} - node-releases@2.0.37: {} + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.26: {} + + normalize-range@0.1.2: {} nth-check@2.1.1: dependencies: @@ -2247,199 +2452,208 @@ snapshots: object-assign@4.1.1: {} + package-json-from-dist@1.0.1: {} + + path-key@3.1.1: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + pathe@2.0.3: {} pathval@2.0.1: {} picocolors@1.1.1: {} - picomatch@4.0.4: {} + picomatch@4.0.3: {} pirates@4.0.7: {} pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.2 + mlly: 1.8.0 pathe: 2.0.3 pkg-types@2.3.0: dependencies: - confbox: 0.2.4 - exsolve: 1.0.8 + confbox: 0.2.2 + exsolve: 1.0.7 pathe: 2.0.3 - postcss-calc@10.1.1(postcss@8.5.9): + postcss-calc@10.1.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.8(postcss@8.5.9): + postcss-colormin@7.0.4(postcss@8.5.6): dependencies: - '@colordx/core': 5.0.3 - browserslist: 4.28.2 + browserslist: 4.27.0 caniuse-api: 3.0.0 - postcss: 8.5.9 + colord: 2.9.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.10(postcss@8.5.9): + postcss-convert-values@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.28.2 - postcss: 8.5.9 + browserslist: 4.27.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.6(postcss@8.5.9): + postcss-discard-comments@7.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-discard-duplicates@7.0.2(postcss@8.5.9): + postcss-discard-duplicates@7.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 - postcss-discard-empty@7.0.1(postcss@8.5.9): + postcss-discard-empty@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 - postcss-discard-overridden@7.0.1(postcss@8.5.9): + postcss-discard-overridden@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.9): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.6.1 - postcss: 8.5.9 + postcss: 8.5.6 - postcss-merge-longhand@7.0.5(postcss@8.5.9): + postcss-merge-longhand@7.0.5(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 7.0.9(postcss@8.5.9) + stylehacks: 7.0.6(postcss@8.5.6) - postcss-merge-rules@7.0.9(postcss@8.5.9): + postcss-merge-rules@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.28.2 + browserslist: 4.27.0 caniuse-api: 3.0.0 - cssnano-utils: 5.0.1(postcss@8.5.9) - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-minify-font-values@7.0.1(postcss@8.5.9): + postcss-minify-font-values@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.3(postcss@8.5.9): + postcss-minify-gradients@7.0.1(postcss@8.5.6): dependencies: - '@colordx/core': 5.0.3 - cssnano-utils: 5.0.1(postcss@8.5.9) - postcss: 8.5.9 + colord: 2.9.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.7(postcss@8.5.9): + postcss-minify-params@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.28.2 - cssnano-utils: 5.0.1(postcss@8.5.9) - postcss: 8.5.9 + browserslist: 4.27.0 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.6(postcss@8.5.9): + postcss-minify-selectors@7.0.5(postcss@8.5.6): dependencies: cssesc: 3.0.0 - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-nested@7.0.2(postcss@8.5.9): + postcss-nested@7.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-normalize-charset@7.0.1(postcss@8.5.9): + postcss-normalize-charset@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 - postcss-normalize-display-values@7.0.1(postcss@8.5.9): + postcss-normalize-display-values@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.1(postcss@8.5.9): + postcss-normalize-positions@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.1(postcss@8.5.9): + postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.1(postcss@8.5.9): + postcss-normalize-string@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.1(postcss@8.5.9): + postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.7(postcss@8.5.9): + postcss-normalize-unicode@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.28.2 - postcss: 8.5.9 + browserslist: 4.27.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.1(postcss@8.5.9): + postcss-normalize-url@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.1(postcss@8.5.9): + postcss-normalize-whitespace@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.2(postcss@8.5.9): + postcss-ordered-values@7.0.2(postcss@8.5.6): dependencies: - cssnano-utils: 5.0.1(postcss@8.5.9) - postcss: 8.5.9 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.7(postcss@8.5.9): + postcss-reduce-initial@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.28.2 + browserslist: 4.27.0 caniuse-api: 3.0.0 - postcss: 8.5.9 + postcss: 8.5.6 - postcss-reduce-transforms@7.0.1(postcss@8.5.9): + postcss-reduce-transforms@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-selector-parser@7.1.1: + postcss-selector-parser@7.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.1.1(postcss@8.5.9): + postcss-svgo@7.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.9 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - svgo: 4.0.1 + svgo: 4.0.0 - postcss-unique-selectors@7.0.5(postcss@8.5.9): + postcss-unique-selectors@7.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser@4.2.0: {} - postcss@8.5.9: + postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -2451,63 +2665,64 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.12: + resolve@1.22.11: dependencies: - es-errors: 1.3.0 is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - rollup-plugin-dts@6.4.1(rollup@4.60.1)(typescript@6.0.3): + rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@6.0.2): dependencies: - '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 - convert-source-map: 2.0.0 - magic-string: 0.30.21 - rollup: 4.60.1 - typescript: 6.0.3 + magic-string: 0.30.19 + rollup: 4.52.5 + typescript: 6.0.2 optionalDependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.27.1 - rollup@4.60.1: + rollup@4.52.5: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.1 - '@rollup/rollup-android-arm64': 4.60.1 - '@rollup/rollup-darwin-arm64': 4.60.1 - '@rollup/rollup-darwin-x64': 4.60.1 - '@rollup/rollup-freebsd-arm64': 4.60.1 - '@rollup/rollup-freebsd-x64': 4.60.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 - '@rollup/rollup-linux-arm-musleabihf': 4.60.1 - '@rollup/rollup-linux-arm64-gnu': 4.60.1 - '@rollup/rollup-linux-arm64-musl': 4.60.1 - '@rollup/rollup-linux-loong64-gnu': 4.60.1 - '@rollup/rollup-linux-loong64-musl': 4.60.1 - '@rollup/rollup-linux-ppc64-gnu': 4.60.1 - '@rollup/rollup-linux-ppc64-musl': 4.60.1 - '@rollup/rollup-linux-riscv64-gnu': 4.60.1 - '@rollup/rollup-linux-riscv64-musl': 4.60.1 - '@rollup/rollup-linux-s390x-gnu': 4.60.1 - '@rollup/rollup-linux-x64-gnu': 4.60.1 - '@rollup/rollup-linux-x64-musl': 4.60.1 - '@rollup/rollup-openbsd-x64': 4.60.1 - '@rollup/rollup-openharmony-arm64': 4.60.1 - '@rollup/rollup-win32-arm64-msvc': 4.60.1 - '@rollup/rollup-win32-ia32-msvc': 4.60.1 - '@rollup/rollup-win32-x64-gnu': 4.60.1 - '@rollup/rollup-win32-x64-msvc': 4.60.1 + '@rollup/rollup-android-arm-eabi': 4.52.5 + '@rollup/rollup-android-arm64': 4.52.5 + '@rollup/rollup-darwin-arm64': 4.52.5 + '@rollup/rollup-darwin-x64': 4.52.5 + '@rollup/rollup-freebsd-arm64': 4.52.5 + '@rollup/rollup-freebsd-x64': 4.52.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 + '@rollup/rollup-linux-arm-musleabihf': 4.52.5 + '@rollup/rollup-linux-arm64-gnu': 4.52.5 + '@rollup/rollup-linux-arm64-musl': 4.52.5 + '@rollup/rollup-linux-loong64-gnu': 4.52.5 + '@rollup/rollup-linux-ppc64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-musl': 4.52.5 + '@rollup/rollup-linux-s390x-gnu': 4.52.5 + '@rollup/rollup-linux-x64-gnu': 4.52.5 + '@rollup/rollup-linux-x64-musl': 4.52.5 + '@rollup/rollup-openharmony-arm64': 4.52.5 + '@rollup/rollup-win32-arm64-msvc': 4.52.5 + '@rollup/rollup-win32-ia32-msvc': 4.52.5 + '@rollup/rollup-win32-x64-gnu': 4.52.5 + '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 - sax@1.6.0: {} + sax@1.4.1: {} scule@1.3.0: {} - semver@7.7.4: {} + semver@7.7.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} siginfo@2.0.0: {} + signal-exit@4.1.0: {} + source-map-js@1.2.1: {} source-map@0.7.6: {} @@ -2516,37 +2731,57 @@ snapshots: std-env@3.10.0: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + strip-literal@3.1.0: dependencies: js-tokens: 9.0.1 - stylehacks@7.0.9(postcss@8.5.9): + stylehacks@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.28.2 - postcss: 8.5.9 - postcss-selector-parser: 7.1.1 + browserslist: 4.27.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - sucrase@3.35.1: + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.16 ts-interface-checker: 0.1.13 supports-preserve-symlinks-flag@1.0.0: {} - svgo@4.0.1: + svgo@4.0.0: dependencies: commander: 11.1.0 css-select: 5.2.2 - css-tree: 3.2.1 + css-tree: 3.1.0 css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.0 + sax: 1.4.1 thenify-all@1.6.0: dependencies: @@ -2560,10 +2795,10 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.16: + tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tinypool@1.1.1: {} @@ -2571,70 +2806,72 @@ snapshots: tinyspy@4.0.4: {} + tr46@0.0.3: {} + tree-kill@1.2.2: {} ts-interface-checker@0.1.13: {} - tsup@8.5.1(jiti@2.6.1)(postcss@8.5.9)(typescript@6.0.3): + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@6.0.2): dependencies: - bundle-require: 5.1.0(esbuild@0.27.7) + bundle-require: 5.1.0(esbuild@0.27.5) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.3 - esbuild: 0.27.7 + esbuild: 0.27.5 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.9) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6) resolve-from: 5.0.0 - rollup: 4.60.1 + rollup: 4.52.5 source-map: 0.7.6 - sucrase: 3.35.1 + sucrase: 3.35.0 tinyexec: 0.3.2 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.9 - typescript: 6.0.3 + postcss: 8.5.6 + typescript: 6.0.2 transitivePeerDependencies: - jiti - supports-color - tsx - yaml - typescript@6.0.3: {} + typescript@6.0.2: {} - ufo@1.6.3: {} + ufo@1.6.1: {} - unbuild@3.6.1(typescript@6.0.3): + unbuild@3.6.1(typescript@6.0.2): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.60.1) - '@rollup/plugin-commonjs': 28.0.9(rollup@4.60.1) - '@rollup/plugin-json': 6.1.0(rollup@4.60.1) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.1) - '@rollup/plugin-replace': 6.0.3(rollup@4.60.1) - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + '@rollup/plugin-alias': 5.1.1(rollup@4.52.5) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.52.5) + '@rollup/plugin-json': 6.1.0(rollup@4.52.5) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.52.5) + '@rollup/plugin-replace': 6.0.2(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) citty: 0.1.6 consola: 3.4.2 - defu: 6.1.7 - esbuild: 0.25.12 + defu: 6.1.4 + esbuild: 0.25.11 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.6.1 - magic-string: 0.30.21 - mkdist: 2.4.1(typescript@6.0.3) - mlly: 1.8.2 + magic-string: 0.30.19 + mkdist: 2.4.1(typescript@6.0.2) + mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 pretty-bytes: 7.1.0 - rollup: 4.60.1 - rollup-plugin-dts: 6.4.1(rollup@4.60.1)(typescript@6.0.3) + rollup: 4.52.5 + rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@6.0.2) scule: 1.3.0 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 untyped: 2.0.0 optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - sass - vue @@ -2646,14 +2883,14 @@ snapshots: untyped@2.0.0: dependencies: citty: 0.1.6 - defu: 6.1.7 + defu: 6.1.4 jiti: 2.6.1 - knitwork: 1.3.0 + knitwork: 1.2.0 scule: 1.3.0 - update-browserslist-db@1.2.3(browserslist@4.28.2): + update-browserslist-db@1.1.4(browserslist@4.27.0): dependencies: - browserslist: 4.28.2 + browserslist: 4.27.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -2661,13 +2898,13 @@ snapshots: uuid@11.1.0: {} - vite-node@3.2.4(@types/node@22.20.1)(jiti@2.6.1): + vite-node@3.2.4(@types/node@22.19.15)(jiti@2.6.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.2(@types/node@22.20.1)(jiti@2.6.1) + vite: 7.1.10(@types/node@22.19.15)(jiti@2.6.1) transitivePeerDependencies: - '@types/node' - jiti @@ -2682,24 +2919,24 @@ snapshots: - tsx - yaml - vite@7.3.2(@types/node@22.20.1)(jiti@2.6.1): + vite@7.1.10(@types/node@22.19.15)(jiti@2.6.1): dependencies: - esbuild: 0.27.7 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.9 - rollup: 4.60.1 - tinyglobby: 0.2.16 + esbuild: 0.25.11 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.5 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.20.1 + '@types/node': 22.19.15 fsevents: 2.3.3 jiti: 2.6.1 - vitest@3.2.4(@types/node@22.20.1)(jiti@2.6.1): + vitest@3.2.4(@types/node@22.19.15)(jiti@2.6.1): dependencies: - '@types/chai': 5.2.3 + '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.2(@types/node@22.20.1)(jiti@2.6.1)) + '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@22.19.15)(jiti@2.6.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -2707,21 +2944,21 @@ snapshots: '@vitest/utils': 3.2.4 chai: 5.3.3 debug: 4.4.3 - expect-type: 1.3.0 - magic-string: 0.30.21 + expect-type: 1.2.2 + magic-string: 0.30.19 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.2(@types/node@22.20.1)(jiti@2.6.1) - vite-node: 3.2.4(@types/node@22.20.1)(jiti@2.6.1) + vite: 7.1.10(@types/node@22.19.15)(jiti@2.6.1) + vite-node: 3.2.4(@types/node@22.19.15)(jiti@2.6.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.20.1 + '@types/node': 22.19.15 transitivePeerDependencies: - jiti - less @@ -2736,9 +2973,32 @@ snapshots: - tsx - yaml + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - zod@4.4.3: {} + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + zod@4.3.6: {} diff --git a/scripts/atualizar-biome.js b/scripts/atualizar-biome.js deleted file mode 100644 index 73659f1..0000000 --- a/scripts/atualizar-biome.js +++ /dev/null @@ -1,96 +0,0 @@ -const fs = require('node:fs'); -const path = require('node:path'); - -const initCwd = process.env.INIT_CWD; - -// Se não tiver INIT_CWD, não foi chamado pelo npm/pnpm install -if (!initCwd) { - process.exit(0); -} - -// O próprio p-comuns não precisa se atualizar na sua pasta interna -if (initCwd === process.cwd()) { - process.exit(0); -} - -const me = require('../package.json'); -const biomeVersion = me.devDependencies && me.devDependencies['@biomejs/biome']; - -if (!biomeVersion) { - process.exit(0); -} - -/** - * Lê os arquivos do diretório em busca de package.json - */ -function findPackageJson(dir) { - let results = []; - try { - const list = fs.readdirSync(dir); - for (const file of list) { - const filePath = path.join(dir, file); - const stat = fs.statSync(filePath); - if (stat && stat.isDirectory()) { - // Ignora pastas que não devemos varrer - if ( - ![ - 'node_modules', - '.git', - 'dist', - 'build', - '.nuxt', - '.output', - '.vscode', - '.idea', - ].includes(file) - ) { - results = results.concat(findPackageJson(filePath)); - } - } else if (file === 'package.json') { - results.push(filePath); - } - } - } catch (err) { - // ignora pastas sem acesso - } - return results; -} - -const files = findPackageJson(initCwd); -let updated = 0; - -for (const file of files) { - try { - const content = fs.readFileSync(file, 'utf8'); - // Detecta se usa tab ou espaço - const indent = content.match(/^[ \t]+/m) ? content.match(/^[ \t]+/m)[0] : '\t'; - - const json = JSON.parse(content); - let changed = false; - - const updateDeps = (tipo) => { - if (json[tipo] && json[tipo]['@biomejs/biome']) { - if (json[tipo]['@biomejs/biome'] !== biomeVersion) { - json[tipo]['@biomejs/biome'] = biomeVersion; - changed = true; - } - } - }; - - updateDeps('dependencies'); - updateDeps('devDependencies'); - updateDeps('peerDependencies'); - - if (changed) { - fs.writeFileSync(file, JSON.stringify(json, null, indent) + '\n', 'utf8'); - updated++; - console.log(`[p-comuns] @biomejs/biome atualizado para ${biomeVersion} em: ${path.relative(initCwd, file)}`); - } - } catch (e) { - console.error(`[p-comuns] Erro ao atualizar ${file}: ${e.message}`); - } -} - -if (updated > 0) { - console.log(`[p-comuns] Total de package.json atualizados: ${updated}`); -} diff --git a/src/auditoria.ts b/src/auditoria.ts deleted file mode 100644 index 25591da..0000000 --- a/src/auditoria.ts +++ /dev/null @@ -1,31 +0,0 @@ -export type TipoPayloadAuditoria = { - /** UUID do registro de auditoria */ - codigo?: string | null - - /** UUID do usuario da acao (pode ser null se for processo do sistema que não registrou) */ - usuario_criacao: string | null - - /** Timestamp ou data de criacao / execucao */ - data_criacao: string | Date - - /** Nome exato da tabela no banco que originou o registro */ - tabela_origem: string - - /** Código único (UUID) do registro na tabela original */ - codigo_origem: string - - /** JSON contendo o snapshot das colunas novas / editadas */ - novo: Record - - /** JSON contendo o snapshot das colunas antes da edição */ - anterior: Record - - /** Hash ou controle de versao do item, usualmente preenchido por new.ver_seg */ - __versao: string - - /** Tipo de operação que gerou a auditoria */ - acao: "criar" | "atualizar" | "deletar" | string - - /** Versão do sistema no momento em que a ação ocorreu */ - versao_sistema: string -} diff --git a/src/consulta.ts b/src/consulta.ts index 6caa2f8..5faf5f8 100755 --- a/src/consulta.ts +++ b/src/consulta.ts @@ -10,7 +10,6 @@ export enum operadores { like = "like", in = "in", isNull = "isNull", - notIn = "notIn", } export type tipoFiltro = { @@ -31,18 +30,7 @@ export type interfaceConsulta = { apenasContagem?: boolean } -export const zOperadores = z.enum([ - "=", - "!=", - ">", - ">=", - "<", - "<=", - "like", - "in", - "isNull", - "notIn", -]) +export const zOperadores = z.enum(["=", "!=", ">", ">=", "<", "<=", "like", "in", "isNull"]) export const zFiltro = z.object({ coluna: z.string(), diff --git a/src/dayjs.ts b/src/dayjs.ts deleted file mode 100755 index 44c3bfd..0000000 --- a/src/dayjs.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type dayjs from "dayjs" -import type { Dayjs } from "dayjs" - -export type { ManipulateType } from "dayjs" - -import duration from "dayjs/plugin/duration" -import isSameOrAfter from "dayjs/plugin/isSameOrAfter" -import isSameOrBefore from "dayjs/plugin/isSameOrBefore" -import minMax from "dayjs/plugin/minMax" -import relativeTime from "dayjs/plugin/relativeTime" -import timezone from "dayjs/plugin/timezone" -import utc from "dayjs/plugin/utc" -import weekOfYear from "dayjs/plugin/weekOfYear" -import "dayjs/locale/pt-br" - -export const definirDayjsbr = (dayjsEntrada: typeof dayjs) => { - dayjsEntrada.locale("pt-br") - dayjsEntrada.extend(utc) - dayjsEntrada.extend(timezone) - dayjsEntrada.extend(weekOfYear) - dayjsEntrada.extend(isSameOrBefore) - dayjsEntrada.extend(isSameOrAfter) - dayjsEntrada.extend(minMax) - dayjsEntrada.extend(relativeTime) - dayjsEntrada.extend(duration) - return dayjsEntrada -} - -export type { Dayjs } diff --git a/src/dayjs26.ts b/src/dayjs26.ts index 7ff3337..e3c5ab0 100755 --- a/src/dayjs26.ts +++ b/src/dayjs26.ts @@ -49,10 +49,10 @@ import type _weekOfYear from "dayjs/plugin/weekOfYear" * import timezone from "dayjs/plugin/timezone" * import utc from "dayjs/plugin/utc" * import weekOfYear from "dayjs/plugin/weekOfYear" - * import { iniciarDayjsBr } from "p-comuns" + * import { defineDayjsBr } from "p-comuns" * import "dayjs/locale/pt-br" // Importante: importar o locale! - * export const dayjsbr = iniciarDayjsBr({ + * export const dayjsbr = defineDayjsBr({ * dayjs, * duration, * isSameOrAfter, @@ -65,7 +65,7 @@ import type _weekOfYear from "dayjs/plugin/weekOfYear" * }) * ``` */ -const iniciarDayjsBr = ({ +const defineDayjsBr = ({ dayjs, duration, isSameOrAfter, @@ -101,10 +101,7 @@ const iniciarDayjsBr = ({ return dayjs } -/** - * @deprecated Use iniciarDayjsBr em vez de definirDayjsBr. O método defineDayjsBr está obsoleto e será removido em futuras versões. - */ -const defineDayjsBr = iniciarDayjsBr + +export { defineDayjsBr } export type { Dayjs } -export { defineDayjsBr, iniciarDayjsBr } diff --git a/src/eLog.ts b/src/eLog.ts deleted file mode 100644 index 563a031..0000000 --- a/src/eLog.ts +++ /dev/null @@ -1,132 +0,0 @@ -/** Níveis de severidade para o sistema de log estruturado. */ -export enum NivelLog { - /** O mais baixo nível, ideal para rastreamento detalhado de fluxo e execução. */ - RASTREAMENTO = "RASTREAMENTO", - /** Usado para informações que ajudam a entender o estado do sistema durante a execução. */ - DEPURACAO = "DEPURACAO", - /** Informações gerais e eventos do sistema. */ - INFORMACAO = "INFORMACAO", - /** Eventos inesperados, mas que não impedem o funcionamento do sistema. */ - AVISO = "AVISO", - /** Erros que impactam o funcionamento do sistema, mas que podem ser recuperados. */ - ERRO = "ERRO", - /** O nível mais alto de severidade, indicando falhas que requerem atenção imediata. */ - CRITICO = "CRITICO", -} - -type DetalheNivel = { - peso: number - rotulo: string - emoji: string - metodo: "debug" | "info" | "warn" | "error" -} - -/** Detalhes de cada nível de log — peso para filtragem, emoji e método do console. */ -export const NivelLogDetalhes: Record = { - [NivelLog.RASTREAMENTO]: { peso: 1, rotulo: "Rastreamento", emoji: "🔍", metodo: "debug" }, - [NivelLog.DEPURACAO]: { peso: 2, rotulo: "Depuração", emoji: "🐛", metodo: "debug" }, - [NivelLog.INFORMACAO]: { peso: 3, rotulo: "Informação", emoji: "ℹ️", metodo: "info" }, - [NivelLog.AVISO]: { peso: 4, rotulo: "Aviso", emoji: "⚠️", metodo: "warn" }, - [NivelLog.ERRO]: { peso: 5, rotulo: "Erro", emoji: "❌", metodo: "error" }, - [NivelLog.CRITICO]: { peso: 6, rotulo: "Crítico", emoji: "🔥", metodo: "error" }, -} - -/** Estrutura de uma entrada de log emitida pelo sistema. */ -export type EntradaLog = { - timestamp: string - nivel: keyof typeof NivelLog - /** Identificador da aplicação/instância (ex: "front:e-licencie:12345"). */ - app: string - /** Local no código de onde o log foi emitido (ex: "criarUsuario()"). */ - origem: string - mensagem: string - dados?: unknown -} - -/** Interface pública do logger retornado por `iniciarELog`. */ -export type ELogger = { - rastreamento: (pr: { origem: string; mensagem: string; dados?: unknown }) => void - depuracao: (pr: { origem: string; mensagem: string; dados?: unknown }) => void - info: (pr: { origem: string; mensagem: string; dados?: unknown }) => void - aviso: (pr: { origem: string; mensagem: string; dados?: unknown }) => void - erro: (pr: { origem: string; mensagem: string; dados?: unknown }) => void - critico: (pr: { origem: string; mensagem: string; dados?: unknown }) => void -} - -/** Opções de configuração do logger, disponíveis no callback de arquivamento. */ -export type OpoesELogger = { - app: string - nivelMinimo: keyof typeof NivelLog -} - -/** Tipo do callback de arquivamento de logs. */ -export type ArquivamentoLog = (entrada: EntradaLog, opcoes: OpoesELogger) => void - -/** - * Inicializa o sistema de log estruturado. - * - * @param opcoes.app - Identificador da aplicação/instância (ex: `"front:e-licencie:12345"`) - * @param opcoes.nivelMinimo - Nível mínimo para exibição no console (padrão: INFORMACAO) - * @param opcoes.arquivamento - Callback opcional para persistir/enviar as entradas de log - * - * @example - * ```ts - * const log = iniciarELog({ app: "front:e-licencie:12345" }) - * - * log.info({ origem: "criarUsuario()", mensagem: "Usuário criado", dados: { id: "abc-123" } }) - * // → ℹ️ [Informação] [front:e-licencie:12345] [criarUsuario()] Usuário criado - * ``` - */ -export const iniciarELog = (opcoes: { - app: string - nivelMinimo?: keyof typeof NivelLog - arquivamento?: ArquivamentoLog -}): ELogger => { - const nivel: keyof typeof NivelLog = opcoes.nivelMinimo ?? NivelLog.INFORMACAO - const pesoMinimo = NivelLogDetalhes[nivel].peso - - const emitir = ( - nivelLog: keyof typeof NivelLog, - pr: { origem: string; mensagem: string; dados?: unknown }, - ) => { - const config = NivelLogDetalhes[nivelLog] - if (config.peso < pesoMinimo) return - - const entrada: EntradaLog = { - timestamp: new Date().toISOString(), - nivel: nivelLog, - app: opcoes.app, - origem: pr.origem, - mensagem: pr.mensagem, - ...(pr.dados !== undefined ? { dados: pr.dados } : {}), - } - - console[config.metodo]( - `${config.emoji} [${config.rotulo}] [${opcoes.app}] [${pr.origem}] ${pr.mensagem}`, - pr.dados !== undefined ? pr.dados : "", - ) - - if (opcoes.arquivamento) { - opcoes.arquivamento(entrada, { app: opcoes.app, nivelMinimo: nivel }) - } - } - - return { - rastreamento: (pr) => emitir(NivelLog.RASTREAMENTO, pr), - depuracao: (pr) => emitir(NivelLog.DEPURACAO, pr), - info: (pr) => emitir(NivelLog.INFORMACAO, pr), - aviso: (pr) => emitir(NivelLog.AVISO, pr), - erro: (pr) => emitir(NivelLog.ERRO, pr), - critico: (pr) => emitir(NivelLog.CRITICO, pr), - } -} - -const _log = iniciarELog({ - app: "testando", - nivelMinimo: NivelLog.INFORMACAO, - arquivamento: () => { - // - }, -}) - -//log.aviso({ origem: "teste", mensagem: "teste" }) diff --git a/src/filtroDelta.ts b/src/filtroDelta.ts deleted file mode 100644 index 3c8a839..0000000 --- a/src/filtroDelta.ts +++ /dev/null @@ -1,279 +0,0 @@ -import z from "zod" - -/** - * ============================================================================= - * FILTRO DELTA (zFiltroDelta) - * ============================================================================= - * - * OBJETIVO - * ----------------------------------------------------------------------------- - * Novo sistema de filtros projetado para maior flexibilidade e geração segura - * de instruções SQL dinâmicas (WHERE). - * - * REGRAS IMPORTANTES (PARA IA) - * ----------------------------------------------------------------------------- - * - O filtro é composto de duas partes obrigatórias: `condicoes` e `formula`. - * - Apenas referências aos `id`s das `condicoes` podem ser usadas na `formula`. - * - Não use sintaxe baseada em objetos aninhados para agrupamento (ex: { E: [], OU: [] }). Use fórmulas em string. - * - * 1) CONDIÇÕES (`condicoes`): - * Array de objetos contendo as definições isoladas de cada comparação. - * Exemplo: - * [ - * { id: "{1}", coluna: "idade", operador: ">=", valor: 18 }, - * { id: "{2}", coluna: "nome", operador: "like", valor: "%pa%" } - * ] - * - `id`: Deve SEMPRE seguir o formato {identificador}. Ex: `{c1}`, `{idade_min}`. - * - `coluna`: O nome da coluna ou um path JSONB válido (ex: `veiculo.ano`). - * - `operador`: Um dos valores do tipo `tipoOperadorFiltroDelta` (veja a constante). - * - * 2) FÓRMULA (`formula`): - * String que define a expressão lógica relacionando as condições através de seus `id`s. - * Operadores Lógicos Suportados (EM MAIÚSCULO): - * - `E` (AND) - * - `OU` (OR) - * - `NAO` (NOT) - * Suporta o agrupamento lógico usando parênteses `()` - * Exemplo válido: "({1} E NAO({2})) OU {3}" - * - * ============================================================================= - */ - -/** - * Operadores permitidos para comparação. - */ -export const zOperadorFiltroDelta = z.enum([">", "<", ">=", "<=", "=", "!=", "in", "like", "∩"]) - -export const operadorFiltroDeltaDetalhes: Record< - z.infer, - { rotulo: string; descricao: string } -> = { - ">": { - rotulo: "Maior que", - descricao: "O valor de A deve ser maior que o valor de B", - }, - "<": { - rotulo: "Menor que", - descricao: "O valor de A deve ser menor que o valor de B", - }, - ">=": { - rotulo: "Maior ou igual a", - descricao: "O valor de A deve ser maior ou igual ao valor de B", - }, - "<=": { - rotulo: "Menor ou igual a", - descricao: "O valor de A deve ser menor ou igual ao valor de B", - }, - "=": { - rotulo: "Igual a", - descricao: "O valor de A deve ser igual ao valor de B", - }, - "!=": { - rotulo: "Diferente de", - descricao: "O valor de A deve ser diferente do valor de B", - }, - in: { - rotulo: "Está em", - descricao: "O valor de A deve estar presente na coleção ou lista definida em B", - }, - like: { - rotulo: "Contém", - descricao: "O valor de A deve conter o texto informado em B", - }, - "∩": { - rotulo: "Interseção", - descricao: "A e B devem possuir pelo menos um elemento em comum", - }, -} - -/** - * Valida o identificador da condição. - * - * Formato esperado: - * {identificador} ou {identificador:sufixo} - */ -const regexIdCondicaoFiltroDelta = /^\{[\w:]+\}$/ - -/** - * Valida nomes de colunas e caminhos jsonb. - */ -const regexColunaFiltroDelta = /^\w+(\.\w+)*$/ - -/** - * Coluna simples ou caminho aninhado de jsonb. - */ -export const zColunaFiltroDelta = z - .string() - .regex(regexColunaFiltroDelta, "Coluna inválida") - .describe("nome da coluna ou caminho aninhado do jsonb") - -/** - * Estrutura individual de uma condição do filtro. - */ -export const zCondicaoFiltroDelta = z.object({ - /** - * Identificador único da condição. - * - * Exemplo: - * {1} - */ - id: z - .string() - .describe("id da condição do filtro") - .regex(regexIdCondicaoFiltroDelta, "O id deve seguir o formato {identificador}"), - - /** - * Nome da coluna ou caminho jsonb. - */ - coluna: zColunaFiltroDelta, - - /** - * Operador da comparação. - */ - operador: zOperadorFiltroDelta, - - /** - * Valor utilizado na comparação. - */ - valor: z.any().describe("valor de comparação"), -}) - -/** - * Verifica se a fórmula possui uma estrutura lógica válida. - */ -const formulaFiltroDeltaValida = (formula: string) => { - /** - * Extrai apenas os tokens permitidos: - * - referências de condição: {id} ou {id:sufixo} - * - operadores lógicos: E, OU - * - negação: NAO(...) - * - parênteses - */ - const tokensPermitidos = formula.match(/\{[\w:]+\}|\bNAO\b|\bE\b|\bOU\b|\(|\)/g) || [] - - /** - * Reconstrói a fórmula usando apenas os tokens válidos. - */ - const formulaReconstruida = tokensPermitidos.join("") - - /** - * Remove espaços para comparar o texto original com o texto reconstruído. - */ - const formulaOriginalSemEspacos = formula.replace(/\s+/g, "") - const formulaReconstruidaSemEspacos = formulaReconstruida.replace(/\s+/g, "") - - /** - * Se forem diferentes, há conteúdo não permitido na fórmula. - */ - if (formulaOriginalSemEspacos !== formulaReconstruidaSemEspacos) { - return false - } - - /** - * Converte a fórmula para uma expressão JavaScript equivalente. - * - * NAO(x) → !x - * E → && - * OU → || - */ - const expressaoLogica = formula - .replace(/\{[\w:]+\}/g, "true") - .replace(/\bNAO\b/g, "!") - .replace(/\bE\b/g, "&&") - .replace(/\bOU\b/g, "||") - - try { - /** - * Valida a ordem dos operadores, parênteses e estrutura lógica geral. - */ - new Function(`return (${expressaoLogica})`)() - - return true - } catch { - return false - } -} - -/** - * Estrutura principal do filtro delta. - */ -export const zFiltroDelta = z - .object({ - /** - * Lista de condições disponíveis. - */ - condicoes: z.array(zCondicaoFiltroDelta), - - /** - * Fórmula lógica que combina as condições. - */ - formula: z.string().refine(formulaFiltroDeltaValida, { - message: - "Fórmula inválida. Use apenas referências de condições {id} ou {id:sufixo}, operadores E/OU/NAO e parênteses.", - }), - }) - .superRefine((value, ctx) => { - /** - * IDs das condições cadastradas. - */ - const idsCondicoes = new Set(value.condicoes.map((condicao) => condicao.id)) - - /** - * Referências usadas dentro da fórmula. - */ - const referenciasFormula = value.formula.match(/\{[\w:]+\}/g) || [] - - /** - * Verifica se toda referência da fórmula existe em condicoes. - */ - for (const referencia of referenciasFormula) { - if (!idsCondicoes.has(referencia)) { - ctx.addIssue({ - code: "custom", - path: ["formula"], - message: `A referência ${referencia} não existe em condicoes.`, - }) - } - } - }) - -export type tipoOperadorFiltroDelta = z.infer -export type tipoColunaFiltroDelta = z.infer -export type tipoCondicaoFiltroDelta = z.infer -export type tipoFiltroDelta = z.infer - -export type tipoCondicaoFiltroDeltaTipado = tipoCondicaoFiltroDelta & { - coluna: T -} - -export type tipoFiltroDeltaColunaTipada = { - condicoes: tipoCondicaoFiltroDeltaTipado[] - formula: string -} - -export const criarFiltroDelta = (filtro: tipoFiltroDeltaColunaTipada) => - zFiltroDelta.parse(filtro) as tipoFiltroDeltaColunaTipada - -/** - * Fábrica para criar filtros com colunas estritamente tipadas. - * Útil para autocompletar os nomes das colunas e garantir a estrutura no TypeScript. - * - * @example - * ```ts - * const { criarFiltroDelta } = iniciarFiltroDelta<"nome" | "idade" | "jsonb.propriedade">() - * - * const filtro = criarFiltroDelta({ - * condicoes: [ - * { id: "{c1}", coluna: "idade", operador: ">", valor: 18 }, - * { id: "{c2}", coluna: "nome", operador: "=", valor: "luiz" }, - * { id: "{c3}", coluna: "jsonb.propriedade", operador: "=", valor: "valor" }, - * ], - * formula: "({c1} E {c2}) OU {c3}", - * }) - * ``` - */ -export const iniciarFiltroDelta = () => { - return { - criarFiltroDelta: criarFiltroDelta, - } -} diff --git a/src/index.ts b/src/index.ts index 28e224f..a85465f 100755 --- a/src/index.ts +++ b/src/index.ts @@ -1,14 +1,11 @@ export * from "./aleatorio" -export * from "./auditoria" export * from "./cacheMemoria" export * from "./constantes" export * from "./consulta" export * from "./dayjs26" export * from "./ecosistema" -export * from "./eLog" export * from "./extensoes" export * from "./extensoes" -export * from "./filtroDelta" export * from "./local" export * from "./postgres" export * from "./produtos" @@ -17,9 +14,7 @@ export * from "./testes-de-variaveis" export * from "./texto_busca" export * from "./tipagemRotas" export * from "./tipagemRotas" +export * from "./tipoFiltro.26" export * from "./unidades_medida" export * from "./uuid" export * from "./variaveisComuns" -export * from "./zCoordenadas" -export * from "./zDocumento" -export * from "./zodCustomizados" diff --git a/src/tipoFiltro.26.ts b/src/tipoFiltro.26.ts new file mode 100644 index 0000000..839f59a --- /dev/null +++ b/src/tipoFiltro.26.ts @@ -0,0 +1,233 @@ +import { z } from "zod" + +/** + * ============================================================================= + * tipoFiltro26 + * ============================================================================= + * + * OBJETIVO + * ----------------------------------------------------------------------------- + * Gerar automaticamente a tipagem de filtros compatíveis com operadores + * padrão do PostgreSQL, a partir de um tipo base T. + * + * Este tipo foi projetado para: + * - Construção de filtros dinâmicos + * - Geração posterior de WHERE (Knex / SQL) + * - Uso seguro por IA (evita filtros inválidos em nível de tipo) + * + * + * FORMATO DO FILTRO + * ----------------------------------------------------------------------------- + * 1) Campos simples: + * + * { + * idade: { ">=": 18 } + * } + * + * 2) Campos aninhados: + * + * { + * carro: { + * ano: { "=": 2020 } + * } + * } + * + * 3) Operador E (AND): + * + * { + * E: [ + * { idade: { ">=": 18 } }, + * { nome: { like: "%pa%" } } + * ] + * } + * + * 4) Operador OU (OR): + * + * { + * OU: [ + * { idade: { "<": 18 } }, + * { idade: { ">=": 60 } } + * ] + * } + * + * 5) Combinação complexa: + * + * { + * idade: { ">=": 18 }, + * OU: [ + * { nome: { like: "%pa%" } }, + * { + * E: [ + * { carro: { ano: { "=": 2020 } } }, + * { carro: { modelo: { in: ["Civic"] } } } + * ] + * } + * ] + * } + * + * + * REGRAS IMPORTANTES (PARA IA) + * ----------------------------------------------------------------------------- + * - Apenas campos existentes em T podem ser usados. + * - Operadores são restritos por tipo do campo. + * - Objetos são tratados recursivamente. + * - Arrays NÃO são tratados como objeto recursivo. + * - Funções NÃO são consideradas campos filtráveis. + * + * + * OPERADORES SUPORTADOS + * ----------------------------------------------------------------------------- + * number: + * =, !=, >, >=, <, <=, in + * + * string: + * =, !=, like, in + * + * boolean: + * =, !=, in + * + * Não há suporte automático a: + * - null + * - date + * - jsonb + * - arrays + * + * Essas extensões devem ser adicionadas explicitamente. + * + * ============================================================================= + */ + +/* ============================================================================= + OPERADORES POSTGRESQL POR TIPO + ============================================================================= */ + +export enum operadores26 { + "=" = "=", + "!=" = "!=", + ">" = ">", + ">=" = ">=", + "<" = "<", + "<=" = "<=", + like = "like", + in = "in", +} + +export enum agrupadores26 { + E = "E", + OU = "OU", +} + +type PgOpsNumber = { + [K in Extract" | ">=" | "<" | "<=">]?: number +} & { + [K in Extract]?: number[] +} + +type PgOpsString = { + [K in Extract]?: string +} & { + [K in Extract]?: string[] +} + +type PgOpsBoolean = { + [K in Extract]?: boolean[] +} + +/* ============================================================================= + SELEÇÃO AUTOMÁTICA DE OPERADORES BASEADA NO TIPO DO CAMPO +============================================================================= */ + +type PgOpsFor = V extends number + ? PgOpsNumber + : V extends string + ? PgOpsString + : V extends boolean + ? PgOpsBoolean + : never + +/* ============================================================================= + UTILITÁRIO: DETECTAR OBJETO PLANO +============================================================================= */ + +type IsPlainObject = T extends object + ? T extends Function + ? false + : T extends readonly any[] + ? false + : true + : false + +/* ============================================================================= + FILTRO RECURSIVO POR CAMPOS +============================================================================= */ + +type FiltroCampos = { + [K in keyof T]?: IsPlainObject extends true ? tipoFiltro26 : PgOpsFor +} + +/* ============================================================================= + TIPO PRINCIPAL EXPORTADO +============================================================================= */ + +export type tipoFiltro26 = FiltroCampos & { + /** + * E => AND lógico + * Todos os filtros dentro do array devem ser verdadeiros. + */ + E?: tipoFiltro26[] + + /** + * OU => OR lógico + * Pelo menos um filtro dentro do array deve ser verdadeiro. + */ + OU?: tipoFiltro26[] +} + +/* ============================================================================= + VALIDAÇÃO ESTRUTURAL (ZOD) +============================================================================= */ + +const zOperadores = z.nativeEnum(operadores26) +const zValor = z.any() +const zCondicao = z.record(zOperadores, zValor) + +export const zFiltro26: z.ZodType = z.lazy(() => + z + .object({ + E: z.array(zFiltro26).optional(), + OU: z.array(zFiltro26).optional(), + }) + .catchall(z.union([zCondicao, zFiltro26])), +) + +/* ============================================================================= + EXEMPLO DE USO +============================================================================= */ + +type Pessoa = { + codigo: string + nome: string + idade: number + carro: { + modelo: string + ano: number + } +} + +export const criarFiltro26 = (filtro: tipoFiltro26) => filtro + +const _filtro = criarFiltro26({ + idade: { [operadores26[">="]]: 18 }, + + [agrupadores26.OU]: [ + { nome: { [operadores26.like]: "%pa%" } }, + { + [agrupadores26.E]: [ + { carro: { ano: { [operadores26["="]]: 2020 } } }, + { carro: { modelo: { [operadores26.in]: ["Civic", "Corolla"] } } }, + ], + }, + ], +}) diff --git a/src/uuid.ts b/src/uuid.ts index d65b503..18c47d4 100755 --- a/src/uuid.ts +++ b/src/uuid.ts @@ -1,130 +1,52 @@ +import { NIL, v3, v4 } from "uuid" + /** * Valida se uma string é um UUID válido (qualquer versão). + * + * @param valor - A string que será validada. + * @returns booleano indicando se é um UUID válido. */ export const erUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i export const validarUuid = (uuid: string | number | undefined | null) => { - return erUuid.test(String(uuid || "")) -} - -// ── UUID v4 ────────────────────────────────────────────────────────────────── -// Usa Web Crypto API (globalThis.crypto), disponível em Node 19+, Bun e browsers. - -/** - * Gera um UUID v4 (aleatório, não determinístico). - * Usa `globalThis.crypto.randomUUID()` — disponível em Node 19+, Bun e browsers modernos. - */ -export const uuidV4 = (): string => globalThis.crypto.randomUUID() - -/** - * @deprecated Use uuidV4() diretamente. - */ -export const uuid = uuidV4 - -// ── UUID v3 (MD5 determinístico) ────────────────────────────────────────────── -// Implementação pura sem dependência de Node.js para compatibilidade front+back. - -const NIL_UUID = "00000000-0000-0000-0000-000000000000" - -// Rotação de 32 bits à esquerda -const rotL = (x: number, n: number) => (x << n) | (x >>> (32 - n)) - -// MD5 — implementação pura JS compatível com browser e Node -const md5 = (str: string): string => { - const msg = new TextEncoder().encode(str) - const len = msg.length - const bits = len * 8 - - // Padding - const padLen = len % 64 < 56 ? 56 - (len % 64) : 120 - (len % 64) - const padded = new Uint8Array(len + padLen + 8) - padded.set(msg) - padded[len] = 0x80 - const dv = new DataView(padded.buffer) - dv.setUint32(len + padLen, bits >>> 0, true) - dv.setUint32(len + padLen + 4, Math.floor(bits / 2 ** 32), true) - - // Tabela de senos - const T: number[] = Array.from( - { length: 64 }, - (_, i) => (Math.abs(Math.sin(i + 1)) * 2 ** 32) >>> 0, - ) - - const S = [ - 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, - 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, - 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, - 10, 15, 21, - ] - - let a0 = 0x67452301, - b0 = 0xefcdab89, - c0 = 0x98badcfe, - d0 = 0x10325476 - - for (let off = 0; off < padded.length; off += 64) { - const M: number[] = [] - for (let j = 0; j < 16; j++) M[j] = dv.getUint32(off + j * 4, true) - - let [A, B, C, D] = [a0, b0, c0, d0] - - for (let i = 0; i < 64; i++) { - let F: number, g: number - if (i < 16) { - F = (B & C) | (~B & D) - g = i - } else if (i < 32) { - F = (D & B) | (~D & C) - g = (5 * i + 1) % 16 - } else if (i < 48) { - F = B ^ C ^ D - g = (3 * i + 5) % 16 - } else { - F = C ^ (B | ~D) - g = (7 * i) % 16 - } - F = (F + A + T[i] + M[g]) >>> 0 - A = D - D = C - C = B - B = (B + rotL(F, S[i])) >>> 0 - } - - a0 = (a0 + A) >>> 0 - b0 = (b0 + B) >>> 0 - c0 = (c0 + C) >>> 0 - d0 = (d0 + D) >>> 0 - } - - const toHexLE = (n: number) => { - let s = "" - for (let i = 0; i < 4; i++) s += ((n >>> (i * 8)) & 0xff).toString(16).padStart(2, "0") - return s - } - - return toHexLE(a0) + toHexLE(b0) + toHexLE(c0) + toHexLE(d0) -} - -const formatarUuidV3 = (hash: string): string => { - const c = hash.slice(0, 32) - const v = ((Number.parseInt(c[16], 16) & 0x3) | 0x8).toString(16) - return `${c.slice(0, 8)}-${c.slice(8, 12)}-3${c.slice(13, 16)}-${v}${c.slice(17, 20)}-${c.slice(20, 32)}` + const retorno = erUuid.test(String(uuid || "")) + return retorno } /** * Gera um UUID determinístico (versão 3) com base em uma chave e um grupo (namespace). - * Implementação pura JS (MD5), sem dependência de Node.js — funciona em browser e server. * - * @param chave - Valor a serializar (string, number ou objeto). - * @param grupo - Namespace opcional; se omitido, usa UUID nil. + * - Usa o algoritmo MD5 (RFC 4122). + * - Sempre retorna o mesmo UUID para a mesma combinação chave + grupo. + * - Caso o grupo não seja informado, usa o UUID "nil" como namespace. + * + * @param chave - Qualquer valor que será convertido em string para gerar o UUID (ex: número, string ou objeto). + * @param grupo - Opcional. Namespace para separar domínios diferentes de UUIDs. + * @returns UUID v3 (determinístico) */ -export const uuidV3 = (chave: unknown, grupo?: unknown): string => { - const namespace = grupo ? uuidV3(grupo) : NIL_UUID - const input = +export const uuidV3 = (chave: any, grupo?: any): string => { + return v3( + // Converte a chave para string (de forma segura) typeof chave === "string" ? chave : typeof chave === "number" ? String(chave) - : JSON.stringify(chave) - return formatarUuidV3(md5(namespace + input)) + : JSON.stringify(chave), + + // Se um grupo foi fornecido, gera um UUID v3 recursivamente com base nele, senão usa NIL + grupo ? uuidV3(grupo) : NIL, + ) } + +/** + * Gera um UUID v4 (aleatório, não determinístico). + * + * - Usado quando unicidade é necessária, mas não se exige que seja previsível. + */ +export const uuidV4 = v4 + +/** + * @deprecated Esta variável será descontinuada em versões futuras. + * Use a função `uuidV4()` diretamente. + */ +export const uuid = uuidV4 diff --git a/src/zCoordenadas.ts b/src/zCoordenadas.ts deleted file mode 100644 index 9cf85f7..0000000 --- a/src/zCoordenadas.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * No futuro podemos melhorar este Zod para incluir mais formatos de coordenadas. - * - */ - -import z from "zod" -export const zCoordenadas = z.object({ - formato: z.literal("decimal").default("decimal"), - datum: z.literal("EPSG:4326").default("EPSG:4326"), - latitude: z.number(), - longitude: z.number(), -}) diff --git a/src/zDocumento.ts b/src/zDocumento.ts deleted file mode 100644 index 8ce2fb7..0000000 --- a/src/zDocumento.ts +++ /dev/null @@ -1,56 +0,0 @@ -import z from "zod" - -/** - Resumo – CNPJ Alfanumérico (vigência a partir de julho de 2026) - -A Receita Federal passará a emitir CNPJs alfanuméricos para novas empresas a partir de julho de 2026. O objetivo é ampliar a quantidade de combinações disponíveis e evitar o esgotamento dos números atuais. - -O que muda? -O CNPJ continuará com 14 caracteres. -Os 12 primeiros caracteres poderão conter letras (A-Z) e números (0-9). -Os 2 dígitos verificadores finais continuarão sendo numéricos. -Exemplo ilustrativo: -Atual: 00.000.000/0001-00 -Novo: A1.B2C.3D4/EF56-78 -Quem será afetado? -Empresas já existentes não terão seus CNPJs alterados. -A mudança vale apenas para novas inscrições realizadas a partir de julho de 2026. - */ - -const regexCnpjNumerico = /^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/ - -/** - Como ler o novo CNPJ (estrutura) - -Tomando como exemplo um CNPJ alfanumérico fictício: - -12.ABC.345/0001-67 - -Como ler: - - 12.ABC.345 é a raiz (identificação da empresa) - 0001 é o sufixo (estabelecimento, geralmente “0001” para matriz) - 67 são os dígitos verificadores numéricos - -Pontos de atenção: - - Letras maiúsculas (não há diferenciação entre maiúscula e minúscula no sistema, mas convenção é maiúscula) - Não usar caracteres especiais: só letras de A a Z e números de 0 a 9 - Pontos, barra e hífen mantidos como antes - - */ - -const regexCnpjAlfanumerico = /^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/[A-Z0-9]{4}-\d{2}$/i -const yyyymm = Number(new Date().toISOString().slice(0, 7).replace("-", "")) - -export const zDocCnpj = z - .string() - .regex(yyyymm < 202407 ? regexCnpjNumerico : regexCnpjAlfanumerico) - .describe("Documento (CNPJ) no formato XX.XXX.XXX/XXXX-XX") - -export const zDocCpf = z - .string() - .regex(/^\d{3}\.\d{3}\.\d{3}-\d{2}$/) - .describe("Documento (CPF) no formato XXX.XXX.XXX-XX") - -export const zDocumento = zDocCpf.or(zDocCnpj).describe("CPF ou CNPJ") diff --git a/src/zodCustomizados.ts b/src/zodCustomizados.ts deleted file mode 100644 index 5bad656..0000000 --- a/src/zodCustomizados.ts +++ /dev/null @@ -1,39 +0,0 @@ -import z from "zod" - -const zPreprocessarNumero = (p: unknown) => { - if (typeof p === "number") return p - if (typeof p !== "string") return p - - let p2 = p - - if (p2.includes(",")) { - // ponto de milhar → remove; vírgula decimal → troca por ponto - p2 = p2.replace(/\./g, "").replace(",", ".") - } - - // remove tudo que não seja dígito ou ponto decimal - p2 = p2.replace(/[^0-9.]/g, "") - - if (p2 == "") return null - - return Number(p2) -} - -/** - * Schema numérico que aceita strings legadas e normaliza para `number`. - * - * O campo **é** um número. O `preprocess` resolve compatibilidade com dados - * antigos onde o frontend enviava strings formatadas (BR ou monetária). - * - * Formatos de entrada aceitos: - * - `10` → number direto - * - `10.1` → ponto decimal - * - `10,1` → vírgula decimal (BR) - * - `1.000,1` → milhar com ponto + vírgula decimal (BR) - * - `R$ 10,01` → prefixo monetário legado - */ -export const zNumero = z.preprocess(zPreprocessarNumero, z.number()) - -export const zNumeroPositivo = z.preprocess(zPreprocessarNumero, z.number().positive()) - -export const zNumeroInteiro = z.preprocess(zPreprocessarNumero, z.number().int()) diff --git a/tsconfig.json b/tsconfig.json index 71a5e37..7990baf 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,7 @@ /* Módulos */ "moduleResolution": "bundler" /* Define como o TypeScript resolve módulos. */, + "ignoreDeprecations": "6.0" /* Ignora avisos de depreciação do TS 6.0 */, "rootDir": "./src" /* Define a pasta raiz para os arquivos de origem. */, /* Emissão */ @@ -25,9 +26,7 @@ /* Verificação de Tipos */ "strict": true /* Habilita todas as opções de verificação estrita de tipos. */, - "skipLibCheck": true /* Ignora a verificação de tipos em arquivos de declaração de bibliotecas. */, - // IA manter "ignoreDeprecations": "6.0", -"ignoreDeprecations": "6.0" + "skipLibCheck": true /* Ignora a verificação de tipos em arquivos de declaração de bibliotecas. */ }, "include": [ "src/**/*" diff --git a/tsup/tsup.config.back.ts b/tsup/tsup.config.back.ts index 3593233..912c657 100755 --- a/tsup/tsup.config.back.ts +++ b/tsup/tsup.config.back.ts @@ -24,6 +24,5 @@ export const tsup_config_back: Options = { }, } - // Exporta a configuração padrão usando defineConfig export default defineConfig(tsup_config_back)