From ace070fbc284a0e84803778aa929b44a63db62b1 Mon Sep 17 00:00:00 2001 From: Jonny Gerig Meyer Date: Mon, 30 Jun 2025 18:03:43 -0400 Subject: [PATCH 1/4] Try postcss instead of @adobe/css-tools for css parsing --- jest.config.js | 2 +- package.json | 24 +- src/constants.ts | 2 +- src/index.ts | 153 ++++---- src/utils.ts | 12 +- test/main.test.js | 8 +- yarn.lock | 928 +++++++++++++++++++++++----------------------- 7 files changed, 562 insertions(+), 567 deletions(-) diff --git a/jest.config.js b/jest.config.js index 4e30027..b47f405 100644 --- a/jest.config.js +++ b/jest.config.js @@ -31,7 +31,7 @@ module.exports = { // ], // Indicates which provider should be used to instrument code for coverage - // coverageProvider: "babel", + coverageProvider: 'v8', // A list of reporter names that Jest uses when writing coverage reports coverageReporters: ['text-summary', 'html'], diff --git a/package.json b/package.json index 3d6d6b9..828fe78 100644 --- a/package.json +++ b/package.json @@ -62,9 +62,10 @@ "prepack": "yarn run release" }, "dependencies": { - "@adobe/css-tools": "^4.4.3", - "jest-diff": "^30.0.2", - "lodash": "^4.17.21" + "@prettier/sync": "^0.6.1", + "jest-diff": "^30.0.3", + "postcss": "^8.5.6", + "prettier": "^3.6.2" }, "peerDependencies": { "sass": ">=1.45.0", @@ -79,27 +80,24 @@ } }, "devDependencies": { - "@babel/core": "^7.27.4", + "@babel/core": "^7.27.7", "@babel/eslint-parser": "^7.27.5", "@babel/preset-env": "^7.27.2", "@babel/preset-typescript": "^7.27.1", - "@eslint/js": "^9.29.0", - "@types/lodash": "^4.17.18", + "@eslint/js": "^9.30.0", "babel-jest": "^30.0.2", "chai": "^4.5.0", - "eslint": "^9.29.0", + "eslint": "^9.30.0", "eslint-config-prettier": "^10.1.5", - "eslint-import-resolver-typescript": "^4.4.3", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-jest-dom": "^5.5.0", "eslint-plugin-simple-import-sort": "^12.1.1", "globals": "^16.2.0", - "jest": "^30.0.2", - "mocha": "^11.7.0", + "jest": "^30.0.3", + "mocha": "^11.7.1", "npm-run-all": "^4.1.5", - "postcss": "^8.5.6", - "prettier": "^3.6.0", "sass": "^1.89.2", "sass-embedded": "^1.89.2", "sassdoc": "^2.7.4", @@ -107,7 +105,7 @@ "stylelint": "^16.21.0", "stylelint-config-standard-scss": "^15.0.1", "typescript": "^5.8.3", - "typescript-eslint": "^8.34.1" + "typescript-eslint": "^8.35.1" }, "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/src/constants.ts b/src/constants.ts index 555ea8e..9559f1a 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -4,7 +4,7 @@ export const MODULE_NESTING_TOKEN = ' :: '; export const SUMMARY_TOKEN = '# SUMMARY '; export const END_SUMMARY_TOKEN = '----------'; export const TEST_TOKEN = 'Test: '; -export const PASS_TOKEN = '✔ '; +export const PASS_TOKEN = '✔'; export const FAIL_TOKEN = '✖ FAILED: ['; export const END_FAIL_TOKEN = ']'; export const ASSERT_TOKEN = 'ASSERT: '; diff --git a/src/index.ts b/src/index.ts index c3b67cc..d49efe6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,20 +1,19 @@ import assert from 'node:assert'; import path from 'node:path'; +import { diffStringsUnified } from 'jest-diff'; import { - type CssAtRuleAST, - type CssCommentAST, - type CssRuleAST, - CssTypes, + type AtRule as CssAtRule, + type Comment as CssComment, parse as cssParse, - stringify as cssStringify, -} from '@adobe/css-tools'; -import { diffStringsUnified } from 'jest-diff'; -import { find, forEach, last, startsWith } from 'lodash'; + type Position as NodePosition, + type Rule as CssRule, +} from 'postcss'; import * as constants from './constants'; import { cssStringToArrayOfRules, + generateCss, isCommentNode, removeNewLines, splitSelectorAndProperties, @@ -60,7 +59,7 @@ export type Context = { currentExpectedRules?: Rule[]; }; -export type Rule = CssCommentAST | CssRuleAST | CssAtRuleAST; +export type Rule = CssComment | CssRule | CssAtRule; export type Parser = (rule: Rule, ctx: Context) => Parser; @@ -118,9 +117,9 @@ export const runSass = function ( try { // try sass-embedded before sass compiler = loadSass('sass-embedded'); + /* c8 ignore next 11 */ // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e1) { - /* istanbul ignore next */ try { compiler = loadSass('sass'); // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -142,7 +141,7 @@ export const runSass = function ( const parsedCss = compiler[compilerFn](src, sassOpts).css; const modules = parse(parsedCss, trueOpts.contextLines); - forEach(modules, (module) => { + modules.forEach((module) => { describeModule(module, trueOpts.describe, trueOpts.it); }); }; @@ -166,12 +165,12 @@ const describeModule = function ( it: TrueOptions['it'], ) { describe(module.module, () => { - forEach(module.modules, (submodule) => { + module.modules?.forEach((submodule) => { describeModule(submodule, describe, it); }); - forEach(module.tests, (test) => { + module.tests?.forEach((test) => { it(test.test, () => { - forEach(test.assertions, (assertion) => { + test.assertions?.forEach((assertion) => { if (!assertion.passed) { assert.fail(formatFailureMessage(assertion)); } @@ -187,7 +186,7 @@ const finishCurrentModule = function (ctx: Context) { const paths = ctx.currentModule.module.split( constants.MODULE_NESTING_TOKEN, ); - ctx.currentModule.module = last(paths) || ''; + ctx.currentModule.module = paths[paths.length - 1] || ''; insertModule(paths, ctx.currentModule, ctx); delete ctx.currentModule; } @@ -214,7 +213,7 @@ const insertModule = function (paths: string[], module: Module, ctx: Context) { } if (paths.length > 1) { - let newCtx = find(ctx.modules, { module: paths[0] }); + let newCtx = ctx.modules.find((submod) => submod.module === paths[0]); if (!newCtx) { newCtx = { module: paths[0] }; ctx.modules.push(newCtx); @@ -238,10 +237,10 @@ const dealWithAnnoyingMediaQueries = function (rawCSS: string) { let matches = matchCSSWithinMediaQueryBlock.exec(rawCSS); let i = 0; let mediaQueryBasedSelectors: string[] = []; + /* c8 ignore start */ const mediaqueryRule = (rule: string) => (mediaqueries?.[i] || '') + rule; while (matches !== null) { // This is necessary to avoid infinite loops with zero-width matches - /* istanbul ignore if */ if (matches.index === matchCSSWithinMediaQueryBlock.lastIndex) { matchCSSWithinMediaQueryBlock.lastIndex++; } @@ -256,6 +255,7 @@ const dealWithAnnoyingMediaQueries = function (rawCSS: string) { i++; matches = matchCSSWithinMediaQueryBlock.exec(rawCSS); } + /* c8 ignore end */ return { mediaQueryBasedSelectors, @@ -316,12 +316,12 @@ export const parse = function ( const lines = rawCss.split(/\r?\n/); const parseCss = function () { - const ast = cssParse(rawCss); const ctx: Context = { modules: [] }; let handler = parseModule; - - forEach(ast.stylesheet?.rules || [], (rule) => { - handler = handler(rule, ctx); + cssParse(rawCss).each((node) => { + if (['comment', 'rule', 'atrule'].includes(node.type)) { + handler = handler(node as Rule, ctx); + } }); finishCurrentModule(ctx); @@ -332,31 +332,30 @@ export const parse = function ( const parseError = function ( msg: string, seeking: string, - pos: Rule['position'], + start?: NodePosition | undefined, ) { const unknown = ''; let errorMsg = - `Line ${pos?.start?.line ?? unknown}, ` + - `column ${pos?.start?.column ?? unknown}: ${msg}; ` + + `Line ${start?.line ?? unknown}, ` + + `column ${start?.column ?? unknown}: ${msg}; ` + `looking for ${seeking || unknown}.`; - /* istanbul ignore else */ - if (pos?.start?.line && pos?.start?.column) { + if (start?.line && start?.column) { errorMsg = `${errorMsg}\n` + `-- Context --\n${lines - .slice(Math.max(0, pos.start.line - contextLines), pos.start.line) - .join('\n')}\n${' '.repeat(pos.start.column - 1)}^\n`; + .slice(Math.max(0, start.line - contextLines), start.line) + .join('\n')}\n${' '.repeat(start.column - 1)}^\n`; } return new Error(errorMsg); }; const parseModule: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim(); + const text = rule.text.trim(); if (!text) { return parseModule; } - if (startsWith(text, constants.MODULE_TOKEN)) { + if (text.startsWith(constants.MODULE_TOKEN)) { finishCurrentModule(ctx); ctx.currentModule = { module: text.substring(constants.MODULE_TOKEN.length), @@ -364,7 +363,7 @@ export const parse = function ( }; return parseTest; } - if (startsWith(text, constants.SUMMARY_TOKEN)) { + if (text.startsWith(constants.SUMMARY_TOKEN)) { return ignoreUntilEndSummary; } // ignore un-recognized comments, keep looking for module header. @@ -377,8 +376,8 @@ export const parse = function ( // eslint-disable-next-line @typescript-eslint/no-unused-vars const ignoreUntilEndSummary: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim() || ''; - if (startsWith(text, constants.END_SUMMARY_TOKEN)) { + const text = rule.text.trim(); + if (text.startsWith(constants.END_SUMMARY_TOKEN)) { return parseModule; } return ignoreUntilEndSummary; @@ -386,20 +385,20 @@ export const parse = function ( throw parseError( `Unexpected rule type "${rule.type}"`, 'end summary', - rule.position, + rule.source?.start, ); }; const parseTest: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim(); + const text = rule.text.trim(); if (!text) { return parseTest; } if (text.match(/^-+$/)) { return parseTest; } - if (startsWith(text, constants.TEST_TOKEN)) { + if (text.startsWith(constants.TEST_TOKEN)) { finishCurrentTest(ctx); ctx.currentTest = { test: text.substring(constants.TEST_TOKEN.length), @@ -415,11 +414,11 @@ export const parse = function ( const parseAssertion: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trimStart(); + const text = rule.text.trim(); if (!text) { return parseAssertion; } - if (startsWith(text, constants.PASS_TOKEN)) { + if (text.startsWith(constants.PASS_TOKEN)) { finishCurrentAssertion(ctx); ctx.currentAssertion = { description: @@ -428,7 +427,7 @@ export const parse = function ( passed: true, }; return parseAssertion; - } else if (startsWith(text, constants.FAIL_TOKEN)) { + } else if (text.startsWith(constants.FAIL_TOKEN)) { finishCurrentAssertion(ctx); const endAssertionType = text.indexOf(constants.END_FAIL_TOKEN); ctx.currentAssertion = { @@ -439,7 +438,7 @@ export const parse = function ( .trim(), }; return parseFailureDetail; - } else if (startsWith(text, constants.ASSERT_TOKEN)) { + } else if (text.startsWith(constants.ASSERT_TOKEN)) { finishCurrentAssertion(ctx); ctx.currentAssertion = { description: text.substring(constants.ASSERT_TOKEN.length).trim(), @@ -455,11 +454,11 @@ export const parse = function ( const parseFailureDetail: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim() || ''; - if (startsWith(text, constants.FAILURE_DETAIL_TOKEN)) { + const text = rule.text.trim(); + if (text.startsWith(constants.FAILURE_DETAIL_TOKEN)) { const detail = text.substring(constants.FAILURE_DETAIL_TOKEN.length); - const isOutput = startsWith(detail, constants.OUTPUT_TOKEN); - const isExpected = startsWith(detail, constants.EXPECTED_TOKEN); + const isOutput = detail.startsWith(constants.OUTPUT_TOKEN); + const isExpected = detail.startsWith(constants.EXPECTED_TOKEN); let outputOrExpected: 'output' | 'expected' | undefined; if (isOutput) { outputOrExpected = 'output'; @@ -467,7 +466,6 @@ export const parse = function ( outputOrExpected = 'expected'; } if (outputOrExpected) { - /* istanbul ignore else */ if (ctx.currentAssertion) { const startType = text.indexOf(constants.FAILURE_TYPE_START_TOKEN); const endType = text.indexOf(constants.FAILURE_TYPE_END_TOKEN); @@ -479,7 +477,6 @@ export const parse = function ( } const splitAt = detail.indexOf(constants.DETAILS_SEPARATOR_TOKEN); if (splitAt !== -1) { - /* istanbul ignore else */ if (ctx.currentAssertion) { const key = detail.substring(0, splitAt); ctx.currentAssertion[key.toLowerCase()] = detail.substring( @@ -494,13 +491,13 @@ export const parse = function ( throw parseError( `Unexpected rule type "${rule.type}"`, 'output/expected', - rule.position, + rule.source?.start, ); }; const parseAssertionOutputStart: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim(); + const text = rule.text.trim(); if (!text) { return parseAssertionOutputStart; } @@ -508,24 +505,26 @@ export const parse = function ( ctx.currentOutputRules = []; return parseAssertionOutput; } - throw parseError(`Unexpected comment "${text}"`, 'OUTPUT', rule.position); + throw parseError( + `Unexpected comment "${text}"`, + 'OUTPUT', + rule.source?.start, + ); } throw parseError( `Unexpected rule type "${rule.type}"`, 'OUTPUT', - rule.position, + rule.source?.start, ); }; const parseAssertionOutput: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - if (rule.comment?.trim() === constants.OUTPUT_END_TOKEN) { - /* istanbul ignore else */ + if (rule.text.trim() === constants.OUTPUT_END_TOKEN) { if (ctx.currentAssertion) { - ctx.currentAssertion.output = cssStringify({ - type: CssTypes.stylesheet, - stylesheet: { rules: ctx.currentOutputRules || [] }, - }); + ctx.currentAssertion.output = generateCss( + ctx.currentOutputRules || [], + ); } delete ctx.currentOutputRules; return parseAssertionExpectedStart; @@ -537,7 +536,7 @@ export const parse = function ( const parseAssertionExpectedStart: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim(); + const text = rule.text.trim(); if (!text) { return parseAssertionExpectedStart; } @@ -557,25 +556,23 @@ export const parse = function ( throw parseError( `Unexpected comment "${text}"`, 'EXPECTED', - rule.position, + rule.source?.start, ); } throw parseError( `Unexpected rule type "${rule.type}"`, 'EXPECTED', - rule.position, + rule.source?.start, ); }; const parseAssertionExpected: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - if (rule.comment?.trim() === constants.EXPECTED_END_TOKEN) { - /* istanbul ignore else */ + if (rule.text.trim() === constants.EXPECTED_END_TOKEN) { if (ctx.currentAssertion) { - ctx.currentAssertion.expected = cssStringify({ - type: CssTypes.stylesheet, - stylesheet: { rules: ctx.currentExpectedRules || [] }, - }); + ctx.currentAssertion.expected = generateCss( + ctx.currentExpectedRules || [], + ); ctx.currentAssertion.passed = ctx.currentAssertion.output === ctx.currentAssertion.expected; } @@ -589,7 +586,7 @@ export const parse = function ( const parseEndAssertion: Parser = function (rule, ctx) { if (isCommentNode(rule)) { - const text = rule.comment?.trim(); + const text = rule.text.trim(); if (!text) { return parseEndAssertion; } @@ -600,27 +597,25 @@ export const parse = function ( throw parseError( `Unexpected comment "${text}"`, 'END_ASSERT', - rule.position, + rule.source?.start, ); } throw parseError( `Unexpected rule type "${rule.type}"`, 'END_ASSERT', - rule.position, + rule.source?.start, ); }; const parseAssertionContained: Parser = function (rule, ctx) { if ( isCommentNode(rule) && - rule.comment?.trim() === constants.CONTAINED_END_TOKEN + rule.text.trim() === constants.CONTAINED_END_TOKEN ) { - /* istanbul ignore else */ if (ctx.currentAssertion) { - ctx.currentAssertion.expected = cssStringify({ - type: CssTypes.stylesheet, - stylesheet: { rules: ctx.currentExpectedRules || [] }, - }); + ctx.currentAssertion.expected = generateCss( + ctx.currentExpectedRules || [], + ); ctx.currentAssertion.passed = contains( ctx.currentAssertion.output || '', ctx.currentAssertion.expected, @@ -637,19 +632,17 @@ export const parse = function ( const parseAssertionContainsString: Parser = function (rule, ctx) { if ( isCommentNode(rule) && - rule.comment?.trim() === constants.CONTAINS_STRING_END_TOKEN + rule.text.trim() === constants.CONTAINS_STRING_END_TOKEN ) { - /* istanbul ignore else */ if (ctx.currentAssertion) { // The string to find is wrapped in a Sass comment because it might not // always be a complete, valid CSS block on its own. These replace calls // are necessary to strip the leading `/*` and trailing `*/` characters // that enclose the string, so we're left with just the raw string to // find for accurate comparison. - ctx.currentAssertion.expected = cssStringify({ - type: CssTypes.stylesheet, - stylesheet: { rules: ctx.currentExpectedRules || [] }, - }) + ctx.currentAssertion.expected = generateCss( + ctx.currentExpectedRules || [], + ) .replace(new RegExp('^/\\*'), '') .replace(new RegExp('\\*/$'), '') .trim(); diff --git a/src/utils.ts b/src/utils.ts index 5bf0372..0fa2257 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,9 +1,12 @@ -import type { CssAllNodesAST, CssCommentAST } from '@adobe/css-tools'; +import { format } from '@prettier/sync'; +import { type ChildNode, type Comment } from 'postcss'; + +import { type Rule } from '.'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const truthyValues = (item?: any) => Boolean(item); -export const isCommentNode = (node: CssAllNodesAST): node is CssCommentAST => +export const isCommentNode = (node: ChildNode): node is Comment => node.type === 'comment'; export const removeNewLines = (cssString: string) => @@ -22,3 +25,8 @@ export const cssStringToArrayOfRules = (cssString: string) => removeNewLines(cssString) .split(/\s*}(?![\s]*["',}])/g) .filter(truthyValues); + +export const generateCss = (rules: Rule[]) => + format(rules.map((rule) => rule.toString()).join(''), { + parser: 'css', + }).trim(); diff --git a/test/main.test.js b/test/main.test.js index 0a82770..70d8f6c 100644 --- a/test/main.test.js +++ b/test/main.test.js @@ -511,9 +511,9 @@ describe('#parse', () => { assertionType: 'equal', passed: true, output: - '/* Some loud comment */\n\n.test-output {\n -property: value;\n}', + '/* Some loud comment */\n.test-output {\n -property: value;\n}', expected: - '/* Some loud comment */\n\n.test-output {\n -property: value;\n}', + '/* Some loud comment */\n.test-output {\n -property: value;\n}', }, ], }, @@ -1027,9 +1027,9 @@ describe('#parse', () => { assertionType: 'contains', passed: true, output: - '/* Some loud comment */\n\n.test-output {\n height: 10px;\n width: 20px;\n}', + '/* Some loud comment */\n.test-output {\n height: 10px;\n width: 20px;\n}', expected: - '/* Some loud comment */\n\n.test-output {\n height: 10px;\n}', + '/* Some loud comment */\n.test-output {\n height: 10px;\n}', }, ], }, diff --git a/yarn.lock b/yarn.lock index 30ad30f..6573014 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,13 +5,6 @@ __metadata: version: 8 cacheKey: 10 -"@adobe/css-tools@npm:^4.4.3": - version: 4.4.3 - resolution: "@adobe/css-tools@npm:4.4.3" - checksum: 10/701379c514b7a43ca6681705a93cd57ad79565cfef9591122e9499897550cf324a5e5bb1bc51df0e7433cf0e91b962c90f18ac459dcc98b2431daa04aa63cb20 - languageName: node - linkType: hard - "@ampproject/remapping@npm:^2.2.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" @@ -33,33 +26,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2": - version: 7.27.5 - resolution: "@babel/compat-data@npm:7.27.5" - checksum: 10/04c343b8a25955bbbe1569564c63ac481a74710eb2e7989b97bd10baf2f0f3b1aa1b6c6122749806e92d70cfc22c10c757ff62336eb10a28ea98ab2b82bc0c2c +"@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/compat-data@npm:7.27.7" + checksum: 10/e71bf453a478875e8eb11bee84229f17185eb05ccf109e6c81eea3b931eaab531f7eb8fdd45fb7dfbcba26e88de5bc3ea7f36cbd14c5f15231c2fec81503609d languageName: node linkType: hard -"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": - version: 7.27.4 - resolution: "@babel/core@npm:7.27.4" +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4, @babel/core@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/core@npm:7.27.7" dependencies: "@ampproject/remapping": "npm:^2.2.0" "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.27.3" + "@babel/generator": "npm:^7.27.5" "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-module-transforms": "npm:^7.27.3" - "@babel/helpers": "npm:^7.27.4" - "@babel/parser": "npm:^7.27.4" + "@babel/helpers": "npm:^7.27.6" + "@babel/parser": "npm:^7.27.7" "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.27.4" - "@babel/types": "npm:^7.27.3" + "@babel/traverse": "npm:^7.27.7" + "@babel/types": "npm:^7.27.7" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/28c01186d5f2599e41f92c94fd14a02cfdcf4b74429b4028a8d16e45c1b08d3924c4275e56412f30fcd2664e5ddc2200f1c06cee8bffff4bba628ff1f20c6e70 + checksum: 10/3503d575ebbf6e66d43d17bbf14c7f93466e8f44ba6f566722747ae887d6c3890ecf64447a3bae8e431ea96907180ac8618b5452d85d9951f571116122b7f66d languageName: node linkType: hard @@ -77,7 +70,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.27.3, @babel/generator@npm:^7.27.5": +"@babel/generator@npm:^7.27.5": version: 7.27.5 resolution: "@babel/generator@npm:7.27.5" dependencies: @@ -90,7 +83,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.27.1": +"@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" dependencies: @@ -99,7 +92,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: @@ -142,18 +135,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.4": - version: 0.6.4 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.4" +"@babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - debug: "npm:^4.1.1" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + debug: "npm:^4.4.1" lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" + resolve: "npm:^1.22.10" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/dc2ebdd7bc880fff8cd09a5b0bd208e53d8b7ea9070f4b562dd3135ea6cd68ef80cf4a74f40424569a00c00eabbcdff67b2137a874c4f82f3530246dad267a3b + checksum: 10/0bdd2d9654d2f650c33976caa1a2afac2c23cf07e83856acdb482423c7bf4542c499ca0bdc723f2961bb36883501f09e9f4fe061ba81c07996daacfba82a6f62 languageName: node linkType: hard @@ -199,7 +192,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.27.1 resolution: "@babel/helper-plugin-utils@npm:7.27.1" checksum: 10/96136c2428888e620e2ec493c25888f9ceb4a21099dcf3dd4508ea64b58cdedbd5a9fb6c7b352546de84d6c24edafe482318646932a22c449ebd16d16c22d864 @@ -274,7 +267,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.27.4": +"@babel/helpers@npm:^7.27.6": version: 7.27.6 resolution: "@babel/helpers@npm:7.27.6" dependencies: @@ -284,14 +277,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5": - version: 7.27.5 - resolution: "@babel/parser@npm:7.27.5" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.5, @babel/parser@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/parser@npm:7.27.7" dependencies: - "@babel/types": "npm:^7.27.3" + "@babel/types": "npm:^7.27.7" bin: parser: ./bin/babel-parser.js - checksum: 10/0ad671be7994dba7d31ec771bd70ea5090aa34faf73e93b1b072e3c0a704ab69f4a7a68ebfb9d6a7fa455e0aa03dfa65619c4df6bae1cf327cba925b1d233fc4 + checksum: 10/ed25ccfc709e77b94afebfa8377cca2ee5d0750162a6b4e7eb7b679ccdf307d1a015dee58d94afe726ed6d278a83aa348cb3a47717222ac4c3650d077f6ca4fd languageName: node linkType: hard @@ -657,18 +650,18 @@ __metadata: linkType: hard "@babel/plugin-transform-classes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-classes@npm:7.27.1" + version: 7.27.7 + resolution: "@babel/plugin-transform-classes@npm:7.27.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.7" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/4ac2224fa68b933c80b4755300d795e055f6fb18c51432e9a4c048edcd6c64cae097eb9063d25f6c7e706ecd85a4c0b89b6f89b320b5798e3139c9cc4ff99f61 + checksum: 10/60d9510ed048c52ccba41f0f306d90f1c476aa3f1288b0a894cc93e7f9e4fe5a8212130fe4fdc60ac9ce1f2a6f4fce1df5ff6b25a17d3e3c06008a881894ee98 languageName: node linkType: hard @@ -684,14 +677,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.27.1, @babel/plugin-transform-destructuring@npm:^7.27.3": - version: 7.27.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.27.3" +"@babel/plugin-transform-destructuring@npm:^7.27.1, @babel/plugin-transform-destructuring@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-destructuring@npm:7.27.7" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d5b1868d079551c0a2e923419613efe18a987548219bb378c61ab7e005d4f3ea590067f93996df6d896177c1cae1396b4aae9163c8a4ee77e9ffbc11a78fb88d + checksum: 10/c05aa4385dc8987fa3e3e2cc70117731ad724006efc809ef5a355315d0d1333fd13e77948feb5446aa8022864c04fa9dda03cad1042381420cfc2d372841d135 languageName: node linkType: hard @@ -928,16 +922,17 @@ __metadata: linkType: hard "@babel/plugin-transform-object-rest-spread@npm:^7.27.2": - version: 7.27.3 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.3" + version: 7.27.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.7" dependencies: "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.27.3" - "@babel/plugin-transform-parameters": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.27.7" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.27.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/7cc7be29a99010aac04fd78383f06d550b26460ea5367489e58ae484f0ed2f176966f0196bea0c2114a9872dd854a482bca38a9fad661c9d10d102c7195d53fd + checksum: 10/7dc90e5bc861c7d7acd5d9ab4eb4a9d9c4da683c6725727c986b74c46332071d75d93d93550d790a0f63c923697a1892c76e76a628c7ae3343da6302a4bd8398 languageName: node linkType: hard @@ -976,14 +971,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-parameters@npm:7.27.1" +"@babel/plugin-transform-parameters@npm:^7.27.1, @babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/47db574f8f3adf7a5d85933c9a2a2dee956ceda9e00fb4e03e9a9d600b559f06cba2da7c5e78a12b05dcf993cf147634edf0391f3f20a6b451830f41be47fe68 + checksum: 10/ba0aa8c977a03bf83030668f64c1d721e4e82d8cce89cdde75a2755862b79dbe9e7f58ca955e68c721fd494d6ee3826e46efad3fbf0855fcc92cb269477b4777 languageName: node linkType: hard @@ -1300,28 +1295,28 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.4": - version: 7.27.4 - resolution: "@babel/traverse@npm:7.27.4" +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/traverse@npm:7.27.7" dependencies: "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.27.3" - "@babel/parser": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/parser": "npm:^7.27.7" "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.27.3" + "@babel/types": "npm:^7.27.7" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/4debb80b9068a46e188e478272f3b6820e16d17e2651e82d0a0457176b0c3b2489994f0a0d6e8941ee90218b0a8a69fe52ba350c1aa66eb4c72570d6b2405f91 + checksum: 10/10b83c362b5c2758dbbf308c3144fa0fdcc98c8f107c2b7637e2c3c975f8b4e77a18e4b5854200f5ca3749ec3bcabd57bb9831ae8455f0701cabc6366983f379 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.4.4": - version: 7.27.6 - resolution: "@babel/types@npm:7.27.6" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.27.7, @babel/types@npm:^7.4.4": + version: 7.27.7 + resolution: "@babel/types@npm:7.27.7" dependencies: "@babel/helper-string-parser": "npm:^7.27.1" "@babel/helper-validator-identifier": "npm:^7.27.1" - checksum: 10/174741c667775680628a09117828bbeffb35ea543f59bf80649d0d60672f7815a0740ddece3cca87516199033a039166a6936434131fce2b6a820227e64f91ae + checksum: 10/39e9f05527ef0771dfb6220213a9ef2ca35c2b6d531e3310c8ffafb53aa50362e809f75af8feb28bd6abb874a00c02b05ac00e3063ee239db5c6f1653eab19c5 languageName: node linkType: hard @@ -1333,9 +1328,9 @@ __metadata: linkType: hard "@bufbuild/protobuf@npm:^2.5.0": - version: 2.5.2 - resolution: "@bufbuild/protobuf@npm:2.5.2" - checksum: 10/10bd5903675991a6d0bd9649adacfd1a57b7415269c7a49ad5883492c38028782a893d1a2e379f7a9d129521805f472fd4d66bcd172ac15b706d4094a7692384 + version: 2.6.0 + resolution: "@bufbuild/protobuf@npm:2.6.0" + checksum: 10/2a5f4e0d30c77cc9cb8e3e7d2a809decdfd746f10259fb0b6c17844186dcf17740e7f45445c64aef4e7fd17a4ab0e5084a05659c94fc7e0540cd37079c5c5a9a languageName: node linkType: hard @@ -1427,21 +1422,21 @@ __metadata: languageName: node linkType: hard -"@eslint/config-array@npm:^0.20.1": - version: 0.20.1 - resolution: "@eslint/config-array@npm:0.20.1" +"@eslint/config-array@npm:^0.21.0": + version: 0.21.0 + resolution: "@eslint/config-array@npm:0.21.0" dependencies: "@eslint/object-schema": "npm:^2.1.6" debug: "npm:^4.3.1" minimatch: "npm:^3.1.2" - checksum: 10/d72cc90f516c5730da5f37fa04aa8ba26ea0d92c7457ee77980902158f844f3483518272ccfe16f273c3313c3bfec8da713d4e51d3da49bdeccd34e919a2b903 + checksum: 10/f5a499e074ecf4b4a5efdca655418a12079d024b77d02fd35868eeb717c5bfdd8e32c6e8e1dd125330233a878026edda8062b13b4310169ba5bfee9623a67aa0 languageName: node linkType: hard -"@eslint/config-helpers@npm:^0.2.1": - version: 0.2.3 - resolution: "@eslint/config-helpers@npm:0.2.3" - checksum: 10/1f5082248f65555cc666942f7c991a2cfd6821758fb45338f43b28ea0f6b77d0c48b35097400d9b8fe1b4b10150085452e0b8f2d6d9ba17a84e16a6c7e4b341d +"@eslint/config-helpers@npm:^0.3.0": + version: 0.3.0 + resolution: "@eslint/config-helpers@npm:0.3.0" + checksum: 10/b4c188f28cb8b76d4f4b49566ec1cc9d561bc888ef66ad34587151a212ff168afcf163493c72033149181f947cb950c3cca1525d7486303aae4dfde3e5399573 languageName: node linkType: hard @@ -1454,12 +1449,12 @@ __metadata: languageName: node linkType: hard -"@eslint/core@npm:^0.15.0": - version: 0.15.0 - resolution: "@eslint/core@npm:0.15.0" +"@eslint/core@npm:^0.15.1": + version: 0.15.1 + resolution: "@eslint/core@npm:0.15.1" dependencies: "@types/json-schema": "npm:^7.0.15" - checksum: 10/27c9cb5bdc5c9dead5b06f2b2a6a66d8bbe5e2e19397e2c5ff9ea582c9d4e4478bf1bc1bdd4eaec7bb3a0d6fa53f152e595acf637354776c14bb58c321ea5aa3 + checksum: 10/f00062f0f18fbbfcf080315532340b01e18b729277245899844adb5bec3c9fe2991e1f134c633a15fdfbc4e8b631c2df167d241c49b37e02e937f8c22edfcd3a languageName: node linkType: hard @@ -1480,10 +1475,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.29.0, @eslint/js@npm:^9.29.0": - version: 9.29.0 - resolution: "@eslint/js@npm:9.29.0" - checksum: 10/7f7fd586b35bd08537dd65a9bda764f474350c36b4ccbdd342462d1a26be28f7ee0ebd0611dd4762b69829674336ba04c281b9658aeccb3e6ab1d0fec7e6d08c +"@eslint/js@npm:9.30.0, @eslint/js@npm:^9.30.0": + version: 9.30.0 + resolution: "@eslint/js@npm:9.30.0" + checksum: 10/42e3d5a9cdd5a0842f3ed078e28f81ae1cf04bd2edfd09f43e6dc148bb2e99904f09090007eb6485afd82d837771890c5a8b9ceb1e8c4e256953df4b4aa97308 languageName: node linkType: hard @@ -1495,12 +1490,12 @@ __metadata: linkType: hard "@eslint/plugin-kit@npm:^0.3.1": - version: 0.3.2 - resolution: "@eslint/plugin-kit@npm:0.3.2" + version: 0.3.3 + resolution: "@eslint/plugin-kit@npm:0.3.3" dependencies: - "@eslint/core": "npm:^0.15.0" + "@eslint/core": "npm:^0.15.1" levn: "npm:^0.4.1" - checksum: 10/26ba99936f72ca124036fbc5ca93168713fab5984117109b1447642a93725fbb75aa457622683dc8797509e40294497d74b584caa26f285373bdde17ceba8eac + checksum: 10/8d5d6ce1403a8aaae366b2c7ed2c8f0a384b80c3bc7e363e74c5048b617f43c722373507b0ba7429d1b6480c2ab0f04e742d42da1ab954d53b14e0186dd59923 languageName: node linkType: hard @@ -1608,9 +1603,9 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:30.0.2": - version: 30.0.2 - resolution: "@jest/core@npm:30.0.2" +"@jest/core@npm:30.0.3": + version: 30.0.3 + resolution: "@jest/core@npm:30.0.3" dependencies: "@jest/console": "npm:30.0.2" "@jest/pattern": "npm:30.0.1" @@ -1625,15 +1620,15 @@ __metadata: exit-x: "npm:^0.2.2" graceful-fs: "npm:^4.2.11" jest-changed-files: "npm:30.0.2" - jest-config: "npm:30.0.2" + jest-config: "npm:30.0.3" jest-haste-map: "npm:30.0.2" jest-message-util: "npm:30.0.2" jest-regex-util: "npm:30.0.1" jest-resolve: "npm:30.0.2" - jest-resolve-dependencies: "npm:30.0.2" - jest-runner: "npm:30.0.2" - jest-runtime: "npm:30.0.2" - jest-snapshot: "npm:30.0.2" + jest-resolve-dependencies: "npm:30.0.3" + jest-runner: "npm:30.0.3" + jest-runtime: "npm:30.0.3" + jest-snapshot: "npm:30.0.3" jest-util: "npm:30.0.2" jest-validate: "npm:30.0.2" jest-watcher: "npm:30.0.2" @@ -1645,7 +1640,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 10/ba28ef6aba53d3ce278bf93f6591dc262799e830f244f8164635b95984ad60b295690e949f97a70f6f704bcd01622a5cac950789c1ce700381328e85cc89fe5c + checksum: 10/1f214b3abc7aa4a469256c062b02f1237034749d4199bf90cbc4842cd14b95970a1dd9166772bebff49c81e79dbeeeb170a8346d46eebb7d5386a5bc42692017 languageName: node linkType: hard @@ -1668,22 +1663,22 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:30.0.2": - version: 30.0.2 - resolution: "@jest/expect-utils@npm:30.0.2" +"@jest/expect-utils@npm:30.0.3": + version: 30.0.3 + resolution: "@jest/expect-utils@npm:30.0.3" dependencies: "@jest/get-type": "npm:30.0.1" - checksum: 10/50ce456b023f8bb27e3acede54508c93d7a55b19cd95e556b027c0242ebb20af9c8ff9156b2c0321585964aa9d746bed51d6abc7126a8245203d2c6903f40d74 + checksum: 10/762445f363a3293d9ad5c25b2c1a4063310492429705d6dc7d28692135e380593503643eed1846b4b274c9322154c313d98bd32f2be942b10974162a572bbb37 languageName: node linkType: hard -"@jest/expect@npm:30.0.2": - version: 30.0.2 - resolution: "@jest/expect@npm:30.0.2" +"@jest/expect@npm:30.0.3": + version: 30.0.3 + resolution: "@jest/expect@npm:30.0.3" dependencies: - expect: "npm:30.0.2" - jest-snapshot: "npm:30.0.2" - checksum: 10/0e0979ea0e7a34299e440b1aba8bd6045f59dccb2f038b38fc7f81726d2f7aab21eac9ccdf6669517d7b7a11300d3429efe20fd62662d310d7c4fbe1de42e571 + expect: "npm:30.0.3" + jest-snapshot: "npm:30.0.3" + checksum: 10/96ea04e65b4bc2e4974dc88608d52f66b9347b59d06c257b37a6e9a23ba7f8f833423526a08a248ae95f992f3da04e6a7bdddbfe657252adb55be07fb749c450 languageName: node linkType: hard @@ -1708,15 +1703,15 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:30.0.2": - version: 30.0.2 - resolution: "@jest/globals@npm:30.0.2" +"@jest/globals@npm:30.0.3": + version: 30.0.3 + resolution: "@jest/globals@npm:30.0.3" dependencies: "@jest/environment": "npm:30.0.2" - "@jest/expect": "npm:30.0.2" + "@jest/expect": "npm:30.0.3" "@jest/types": "npm:30.0.1" jest-mock: "npm:30.0.2" - checksum: 10/7f553371ce0df543ed22df7677df3c1b3fd33fb7d58d800c387f457ee00467dcd80ceb26ecae44fb442eed78cb4401b71f7649540279bd6695c1141ab3542269 + checksum: 10/691ea016bc462f704313648f53dd39776e5eec648b59acbde81090048d028beefb9f3094e9512aa044bb9dc96882e914088bf97700cfbb7f7b53011fd9001508 languageName: node linkType: hard @@ -1861,13 +1856,12 @@ __metadata: linkType: hard "@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.8 - resolution: "@jridgewell/gen-mapping@npm:0.3.8" + version: 0.3.11 + resolution: "@jridgewell/gen-mapping@npm:0.3.11" dependencies: - "@jridgewell/set-array": "npm:^1.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/sourcemap-codec": "npm:^1.5.0" "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/9d3a56ab3612ab9b85d38b2a93b87f3324f11c5130859957f6500e4ac8ce35f299d5ccc3ecd1ae87597601ecf83cee29e9afd04c18777c24011073992ff946df + checksum: 10/b4d12446d4998d89e6d386151b97fc27333a5959cdc728f8d6b604fd4dcd871b8a4687dc20f3d6d661ed462f9aa914ecd293c2455e284b9d633412ea2226c552 languageName: node linkType: hard @@ -1878,27 +1872,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 10/832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd +"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.3 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.3" + checksum: 10/1cfa2deeda8c2a1bfcb9bda7016675b540d1f988798f3f3a68643c51e56d057c637c16e2b62b8c72f5b42ffd96d5c3dd7998d6d7c9768f89b9dfaf9acd311e6a languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" + version: 0.3.28 + resolution: "@jridgewell/trace-mapping@npm:0.3.28" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc + checksum: 10/e7f534b9e5218cc7e9cf35f93f6527e7a657218d5ef571a5c752bb4ca22e1f52c2284997d9365abf99b53900215cb71fa1a74fa178e49eb48abead331cd8d553 languageName: node linkType: hard @@ -2138,6 +2125,17 @@ __metadata: languageName: node linkType: hard +"@prettier/sync@npm:^0.6.1": + version: 0.6.1 + resolution: "@prettier/sync@npm:0.6.1" + dependencies: + make-synchronized: "npm:^0.8.0" + peerDependencies: + prettier: "*" + checksum: 10/2c53cd4ee718e2ebd2fb31aa5ec4773f743b9c29fcc6db6794dc3553bc87aa8fe7db47b51add6809cab655520b7550329d1cce2ca837f6f4643991eff44abad1 + languageName: node + linkType: hard + "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -2146,9 +2144,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.34.0": - version: 0.34.36 - resolution: "@sinclair/typebox@npm:0.34.36" - checksum: 10/a8bcd6cb2741c8bf759f91bdc6144cf6eaa515fb1426a77a84a564ade264b1466532dc93cfbd8daddf876ea41d1be4904704ecd50fca92706bf02bdb8245da44 + version: 0.34.37 + resolution: "@sinclair/typebox@npm:0.34.37" + checksum: 10/bd2ba20a9f7446a353719bc0e6dfab75a13e47af6470fb792e418c585a4eb3bae4f806f87e4067efe2fb0c7686de11e6cf11823a1fe13660892e51cefcfceaea languageName: node linkType: hard @@ -2291,19 +2289,12 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.17.18": - version: 4.17.18 - resolution: "@types/lodash@npm:4.17.18" - checksum: 10/54ebb15b29925112dbe9da3abd99fb80d7202bc5ba20fc1b4fc8ea835d0012f00cbd9a3e7f367b70e7c3f2d5ee635964e3920a489625647b558f02994b3dd381 - languageName: node - linkType: hard - "@types/node@npm:*": - version: 24.0.3 - resolution: "@types/node@npm:24.0.3" + version: 24.0.8 + resolution: "@types/node@npm:24.0.8" dependencies: undici-types: "npm:~7.8.0" - checksum: 10/6cce0afa9b0ff7f8eab7cb0339909c1e4ef480b824b8de5adc9cee05dac63ee3d8c7a46e1f95f13ecc94e84608118741f9949527a92fbf3f0e1f7714b37a7b61 + checksum: 10/99edcbdb1bd2c55d02d989deaccef9ff25c9094be7c7ee7c0b0ed722399bed2138e2fcee7c8fd76fe8da79e83735f3b129ee2fca7caa9bafb0f22b7418486730 languageName: node linkType: hard @@ -2339,105 +2330,105 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.34.1" +"@typescript-eslint/eslint-plugin@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.35.1" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.34.1" - "@typescript-eslint/type-utils": "npm:8.34.1" - "@typescript-eslint/utils": "npm:8.34.1" - "@typescript-eslint/visitor-keys": "npm:8.34.1" + "@typescript-eslint/scope-manager": "npm:8.35.1" + "@typescript-eslint/type-utils": "npm:8.35.1" + "@typescript-eslint/utils": "npm:8.35.1" + "@typescript-eslint/visitor-keys": "npm:8.35.1" graphemer: "npm:^1.4.0" ignore: "npm:^7.0.0" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.1.0" peerDependencies: - "@typescript-eslint/parser": ^8.34.1 + "@typescript-eslint/parser": ^8.35.1 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10/a4b1cffcb5f2b4f5f4c267cd4519d0e2df73c8017c93200d5a86df7882073f18cf4f5d0604aa8dafb6e4dc4ab391ae8e9a2161631fb1eca9bca32af063acdaf2 + checksum: 10/22c4ff7503e4919449b996453ff29ba46e5c0024fac883ac41a313482454f13d55937789f499395dc2a7dba25b1ad47ac5295d60b118f2fa54ca768228514662 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/parser@npm:8.34.1" +"@typescript-eslint/parser@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/parser@npm:8.35.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.34.1" - "@typescript-eslint/types": "npm:8.34.1" - "@typescript-eslint/typescript-estree": "npm:8.34.1" - "@typescript-eslint/visitor-keys": "npm:8.34.1" + "@typescript-eslint/scope-manager": "npm:8.35.1" + "@typescript-eslint/types": "npm:8.35.1" + "@typescript-eslint/typescript-estree": "npm:8.35.1" + "@typescript-eslint/visitor-keys": "npm:8.35.1" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10/c862baa6f5260bf4b63d79ae4d68fc09b7e094ea9f28ee461887cbb660ef1339e829119029e1e6ba40335fc9e85d134a04036965bc261f7abf4d0e605cb485ec + checksum: 10/d5e0ecdb945c90fc1fea3f7dd375e424f1a6d49a97627ad24330499d573d45f85348e05a97e3a4643aec5ad9d210073487687872bd573abd79923a12fc46e716 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/project-service@npm:8.34.1" +"@typescript-eslint/project-service@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/project-service@npm:8.35.1" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.34.1" - "@typescript-eslint/types": "npm:^8.34.1" + "@typescript-eslint/tsconfig-utils": "npm:^8.35.1" + "@typescript-eslint/types": "npm:^8.35.1" debug: "npm:^4.3.4" peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 10/5dad268397cd2d601e5e65ab9628c59c6687a79cac31e0d0eac2b434505639fd8767f1a2d5b077b158c581f5a48bb96e7da361560fb26b70b680272e39c6f976 + checksum: 10/f8ceb1c6ab7cdf2c7bc334e74d0d1cd86b5e563319c5477987a05f47af433543b281912ae0cdd875561dc2cc4d3ba4ed3bdd8d5bb6dba68bcde4f68a7d0967e7 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/scope-manager@npm:8.34.1" +"@typescript-eslint/scope-manager@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/scope-manager@npm:8.35.1" dependencies: - "@typescript-eslint/types": "npm:8.34.1" - "@typescript-eslint/visitor-keys": "npm:8.34.1" - checksum: 10/cd3f2ba811e4794c78d7f9df0ff1ad6ce33d162d87986e67c4ec409963f07384bd184dbddc613e89a5cc753a47469e7fa9d02c507b57aa9e0fdc8a97c0378353 + "@typescript-eslint/types": "npm:8.35.1" + "@typescript-eslint/visitor-keys": "npm:8.35.1" + checksum: 10/9124302c969126a50c70f9ccbefec0e5a771563b5518318d56fc6242c5cff61da74e7885832370ccd406a048edc300476b1723ad1845d41bd205879d95fbc6b6 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.34.1, @typescript-eslint/tsconfig-utils@npm:^8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.34.1" +"@typescript-eslint/tsconfig-utils@npm:8.35.1, @typescript-eslint/tsconfig-utils@npm:^8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.35.1" peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 10/81a874a433c4e91ee2509d4eda43932b8348e9404da2d11e621bf3b8bec26a6ab84bd3870215dcb09df950182e2b5e2539be30fc262c30edff0e42ca5d707465 + checksum: 10/6b6176ec7dbfbe53539bce3e7554f062ff4d220aa5cb5793d52067fe6c196d749e77557dca66f5bf1ee23972e948d5c59461fa3e11da9e34a0a27d9fb7585f5a languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/type-utils@npm:8.34.1" +"@typescript-eslint/type-utils@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/type-utils@npm:8.35.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.34.1" - "@typescript-eslint/utils": "npm:8.34.1" + "@typescript-eslint/typescript-estree": "npm:8.35.1" + "@typescript-eslint/utils": "npm:8.35.1" debug: "npm:^4.3.4" ts-api-utils: "npm:^2.1.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10/1c8153a5b1cf488b6d1642d752caba8631f183f17031660859355342d1139e4dea9e0dd9c97d6bad644a91ee26461ddd1993303d0542e6f1b7850af1ca71e96e + checksum: 10/728df75bac6960192c18436a8340ed7a0f78b472486279f673e4018d493569f2278b7fcac78c5e0f7ccdb873ead227de6d94bc7aebf5cf046c4d8e53c5569bfd languageName: node linkType: hard -"@typescript-eslint/types@npm:8.34.1, @typescript-eslint/types@npm:^8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/types@npm:8.34.1" - checksum: 10/09cb344af38e1e0f8e60968ff6038e8b27a453dea22be433b531e2b50b45448b8646f11249279d47e153f0a5299f8f621a84e81db8bcf5421bd90c94caae6416 +"@typescript-eslint/types@npm:8.35.1, @typescript-eslint/types@npm:^8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/types@npm:8.35.1" + checksum: 10/2d5b8f40b2ef0b7d439ee119d2ed12372097c4372aea7ff6d46f92fa743fc60619f8619192fbc0df3833d941be5d9bcb5129b8f6d029716ca86ba42514fbeff9 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.34.1" +"@typescript-eslint/typescript-estree@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.35.1" dependencies: - "@typescript-eslint/project-service": "npm:8.34.1" - "@typescript-eslint/tsconfig-utils": "npm:8.34.1" - "@typescript-eslint/types": "npm:8.34.1" - "@typescript-eslint/visitor-keys": "npm:8.34.1" + "@typescript-eslint/project-service": "npm:8.35.1" + "@typescript-eslint/tsconfig-utils": "npm:8.35.1" + "@typescript-eslint/types": "npm:8.35.1" + "@typescript-eslint/visitor-keys": "npm:8.35.1" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -2446,32 +2437,32 @@ __metadata: ts-api-utils: "npm:^2.1.0" peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 10/40ffa31d8005115fb8efe47eeea484ad8a32a55e8bc2e27e4ad7b89b9fb1b962254c4c4ec9c00b4a5d52c5fa45b25b69ef62a98135f478e486f51ea5ba0ad4e9 + checksum: 10/b38a891a37e1c8d76bdb3e8039482b723df590bf9d192a5480ec6777a316914542f610a1d9070bc53e0642c511ddc4ee1c3c03ac0e04a5510feefa95307f51b7 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.34.1, @typescript-eslint/utils@npm:^8.0.0": - version: 8.34.1 - resolution: "@typescript-eslint/utils@npm:8.34.1" +"@typescript-eslint/utils@npm:8.35.1, @typescript-eslint/utils@npm:^8.0.0": + version: 8.35.1 + resolution: "@typescript-eslint/utils@npm:8.35.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.34.1" - "@typescript-eslint/types": "npm:8.34.1" - "@typescript-eslint/typescript-estree": "npm:8.34.1" + "@typescript-eslint/scope-manager": "npm:8.35.1" + "@typescript-eslint/types": "npm:8.35.1" + "@typescript-eslint/typescript-estree": "npm:8.35.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10/7e14ef16222d48aa668c2b436b7eec893e8baf05a18c4bcdf353fa6ce4b5526db3d3945be5a7bd4dab0202805f205c4a904cf8646fa157f53b761c090d9c5e7b + checksum: 10/68388898dc095d7813a18049e782d90ed6500496bb68e3ea5efd7e1de24f37732b133bf88faca835b6219383f406693fdf846e16d3c48e9418388121c89dcf48 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.34.1": - version: 8.34.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.34.1" +"@typescript-eslint/visitor-keys@npm:8.35.1": + version: 8.35.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.35.1" dependencies: - "@typescript-eslint/types": "npm:8.34.1" + "@typescript-eslint/types": "npm:8.35.1" eslint-visitor-keys: "npm:^4.2.1" - checksum: 10/6fbaa838dc040c6ff6d4472b9a1480f1407eb591924fb4d371fe0224dafcb40ac5476b733fea33ad0898c3174430918b0456c5209b5b7e176cb04c0c9daacbd8 + checksum: 10/0add7a9c00e7b336797bb7378bd02b3ef31368a8e928afb2dbeec0cc4ab9f6413519e477f5c504d62b38d1dae3791f7ffda36d41b403411608628bff8dd123bd languageName: node linkType: hard @@ -2482,137 +2473,137 @@ __metadata: languageName: node linkType: hard -"@unrs/resolver-binding-android-arm-eabi@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.9.1" +"@unrs/resolver-binding-android-arm-eabi@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.9.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-android-arm64@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-android-arm64@npm:1.9.1" +"@unrs/resolver-binding-android-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.9.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-darwin-arm64@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.9.1" +"@unrs/resolver-binding-darwin-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.9.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-darwin-x64@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.9.1" +"@unrs/resolver-binding-darwin-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.9.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-freebsd-x64@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.9.1" +"@unrs/resolver-binding-freebsd-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.9.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.9.1" +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.9.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.9.1" +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.9.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.9.1" +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.9.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-musl@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.9.1" +"@unrs/resolver-binding-linux-arm64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.9.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.9.1" +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.9.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.9.1" +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.9.2" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.9.1" +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.9.2" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.9.1" +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.9.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-gnu@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.9.1" +"@unrs/resolver-binding-linux-x64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.9.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-musl@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.9.1" +"@unrs/resolver-binding-linux-x64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.9.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-wasm32-wasi@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.9.1" +"@unrs/resolver-binding-wasm32-wasi@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.9.2" dependencies: "@napi-rs/wasm-runtime": "npm:^0.2.11" conditions: cpu=wasm32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.9.1" +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.9.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.9.1" +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.9.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-x64-msvc@npm:1.9.1": - version: 1.9.1 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.9.1" +"@unrs/resolver-binding-win32-x64-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.9.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -3032,15 +3023,15 @@ __metadata: linkType: hard "babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.13 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.13" + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" dependencies: - "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + "@babel/compat-data": "npm:^7.27.7" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/e238534f345edb26471438cdef8f9182892c4a857fc1cd74d8ecb3072d5126232e299d3850027cecbcb599e721cef835b9e63aba35c2db41733635d39b76c1d8 + checksum: 10/8ec00a1b821ccbfcc432630da66e98bc417f5301f4ce665269d50d245a18ad3ce8a8af2a007f28e3defcd555bb8ce65f16b0d4b6d131bd788e2b97d8b8953332 languageName: node linkType: hard @@ -3057,13 +3048,13 @@ __metadata: linkType: hard "babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.4 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.4" + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/f4d4a803834ffa72713579d696586d8cc654c0025cbd5ec775fc5d37faa00381dcb80e5b97d4b16059443352653585596d87848b5590b1d8670c235408e73fb3 + checksum: 10/ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb languageName: node linkType: hard @@ -3219,16 +3210,16 @@ __metadata: linkType: hard "browserslist@npm:^4.24.0, browserslist@npm:^4.25.0": - version: 4.25.0 - resolution: "browserslist@npm:4.25.0" + version: 4.25.1 + resolution: "browserslist@npm:4.25.1" dependencies: - caniuse-lite: "npm:^1.0.30001718" - electron-to-chromium: "npm:^1.5.160" + caniuse-lite: "npm:^1.0.30001726" + electron-to-chromium: "npm:^1.5.173" node-releases: "npm:^2.0.19" update-browserslist-db: "npm:^1.1.3" bin: browserslist: cli.js - checksum: 10/4a5442b1a0d09c4c64454f184b8fed17d8c3e202034bf39de28f74497d7bd28dddee121b2bab4e34825fe0ed4c166d84e32a39f576c76fce73c1f8f05e4b6ee6 + checksum: 10/bfb5511b425886279bbe2ea44d10e340c8aea85866c9d45083c13491d049b6362e254018c0afbf56d41ceeb64f994957ea8ae98dbba74ef1e54ef901c8732987 languageName: node linkType: hard @@ -3307,13 +3298,13 @@ __metadata: languageName: node linkType: hard -"cacheable@npm:^1.10.0": - version: 1.10.0 - resolution: "cacheable@npm:1.10.0" +"cacheable@npm:^1.10.1": + version: 1.10.1 + resolution: "cacheable@npm:1.10.1" dependencies: - hookified: "npm:^1.8.2" - keyv: "npm:^5.3.3" - checksum: 10/463f350b31b6db2455c23e81ec178dc6f0e561aa400a2b4ad6385a8b3d6097c213914f93f50b34ff90b776431662aed3693680075e070f5bf66a12f43988c05a + hookified: "npm:^1.10.0" + keyv: "npm:^5.3.4" + checksum: 10/e52b261e4ff5fbca31fa53e6465e0765f6c4dbe6c1566cb36a7c11f23e2afa9f0821bba763e410306adde0e4b62c28eb14afa4471d4b47aace29aafe5ec212b1 languageName: node linkType: hard @@ -3380,10 +3371,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001718": - version: 1.0.30001724 - resolution: "caniuse-lite@npm:1.0.30001724" - checksum: 10/0e95811e7c33410ec458784726b97f50f07fb0f6f17b2b17789bb2d5ba1ff126daa24549d698c0a8729f5236d98fde04bb44a3def22eb4667ac15bd80f20a4f2 +"caniuse-lite@npm:^1.0.30001726": + version: 1.0.30001726 + resolution: "caniuse-lite@npm:1.0.30001726" + checksum: 10/04d4bd6be8e426199aace9b4d26402bbb043358b590136417b8a1b3888c43301256bff007b30276c37c3d56e3e97aa8f547d80ffb9ac3644937b2ba4a3f9b156 languageName: node linkType: hard @@ -3872,15 +3863,15 @@ __metadata: linkType: hard "css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" + version: 5.2.2 + resolution: "css-select@npm:5.2.2" dependencies: boolbase: "npm:^1.0.0" css-what: "npm:^6.1.0" domhandler: "npm:^5.0.2" domutils: "npm:^3.0.1" nth-check: "npm:^2.0.1" - checksum: 10/d486b1e7eb140468218a5ab5af53257e01f937d2173ac46981f6b7de9c5283d55427a36715dc8decfc0c079cf89259ac5b41ef58f6e1a422eee44ab8bfdc78da + checksum: 10/ebb6a88446433312d1a16301afd1c5f75090805b730dbbdccb0338b0d6ca7922410375f16dde06673ef7da086e2cf3b9ad91afe9a8e0d2ee3625795cb5e0170d languageName: node linkType: hard @@ -3895,9 +3886,9 @@ __metadata: linkType: hard "css-what@npm:^6.1.0": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: 10/c67a3a2d0d81843af87f8bf0a4d0845b0f952377714abbb2884e48942409d57a2110eabee003609d02ee487b054614bdfcfc59ee265728ff105bd5aa221c1d0e + version: 6.2.2 + resolution: "css-what@npm:6.2.2" + checksum: 10/3c5a53be94728089bd1716f915f7f96adde5dd8bf374610eb03982266f3d860bf1ebaf108cda30509d02ef748fe33eaa59aa75911e2c49ee05a85ef1f9fb5223 languageName: node linkType: hard @@ -4201,10 +4192,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.160": - version: 1.5.171 - resolution: "electron-to-chromium@npm:1.5.171" - checksum: 10/6d58ff50407107d7e86e7beb8d0361358f90dbc10c7d92a2ff9cdfbaf27a65165c00ae05a345ab32fa6e371ff9c7d1fef1441d57adfa8f59701c56734745c0a1 +"electron-to-chromium@npm:^1.5.173": + version: 1.5.178 + resolution: "electron-to-chromium@npm:1.5.178" + checksum: 10/9862faf63331e1923856d41c3cdf3229af075a279e1300198f56dcdd9e56c0db793d2ac09c4183a211438f30f1be4b9159c6072cb4d0edfc73665d0f6f8e4109 languageName: node linkType: hard @@ -4486,17 +4477,17 @@ __metadata: linkType: hard "eslint-import-context@npm:^0.1.8": - version: 0.1.8 - resolution: "eslint-import-context@npm:0.1.8" + version: 0.1.9 + resolution: "eslint-import-context@npm:0.1.9" dependencies: get-tsconfig: "npm:^4.10.1" - stable-hash-x: "npm:^0.1.1" + stable-hash-x: "npm:^0.2.0" peerDependencies: unrs-resolver: ^1.0.0 peerDependenciesMeta: unrs-resolver: optional: true - checksum: 10/c3a2be5320bfaf231a7fd33ffd38e33f3fbbd8a80f4e3220ca8e5c7329f0a0c0441a26a48be7fa91ec9a152871588d80f766829a9202a61b91aa8785f7fa1f51 + checksum: 10/f0778126bb3aae57c8c68946c71c4418927e9d39f72099b799d9c47a3b5712d6c9166b63ee8be58a020961dcc9216df09c856b825336af375ccbbdeedfc82a99 languageName: node linkType: hard @@ -4511,15 +4502,15 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-typescript@npm:^4.4.3": - version: 4.4.3 - resolution: "eslint-import-resolver-typescript@npm:4.4.3" +"eslint-import-resolver-typescript@npm:^4.4.4": + version: 4.4.4 + resolution: "eslint-import-resolver-typescript@npm:4.4.4" dependencies: debug: "npm:^4.4.1" eslint-import-context: "npm:^0.1.8" get-tsconfig: "npm:^4.10.1" is-bun-module: "npm:^2.0.0" - stable-hash-x: "npm:^0.1.1" + stable-hash-x: "npm:^0.2.0" tinyglobby: "npm:^0.2.14" unrs-resolver: "npm:^1.7.11" peerDependencies: @@ -4531,7 +4522,7 @@ __metadata: optional: true eslint-plugin-import-x: optional: true - checksum: 10/1811e1122213b2817363889402f461ab35542c4a728d43666a64752fa7e8712d9b40af4047aec98035e34ff57588b8d876895f435cbc32e92a10c64b02ebc072 + checksum: 10/4f871f6d1a04c55c2087c5ff1030f783a29abb59901b354d7ef58a0fc687d379dcbd08cf377cddeb7e19f26dd380d32d85ee4760e9410a059639d2b3df7d1ff3 languageName: node linkType: hard @@ -4660,17 +4651,17 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^9.29.0": - version: 9.29.0 - resolution: "eslint@npm:9.29.0" +"eslint@npm:^9.30.0": + version: 9.30.0 + resolution: "eslint@npm:9.30.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.20.1" - "@eslint/config-helpers": "npm:^0.2.1" + "@eslint/config-array": "npm:^0.21.0" + "@eslint/config-helpers": "npm:^0.3.0" "@eslint/core": "npm:^0.14.0" "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.29.0" + "@eslint/js": "npm:9.30.0" "@eslint/plugin-kit": "npm:^0.3.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" @@ -4706,7 +4697,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10/be0c8e123207c9d653fb75ddc610b85dfbf295a2bfa1cbecc78f191dcba9c421525b5befd5d499ce561eca607c9c33f455e4fff0b1c2d4202c2896dafe95094a + checksum: 10/74c11e6be5997f0de6542932795e997c1586f8f21cdeeda09c89c6c36879a9a593af84f1fd594bd8e22814c54ca0ad65513a0c91b0e8944efb51faed34b7d3b0 languageName: node linkType: hard @@ -4808,17 +4799,17 @@ __metadata: languageName: node linkType: hard -"expect@npm:30.0.2": - version: 30.0.2 - resolution: "expect@npm:30.0.2" +"expect@npm:30.0.3": + version: 30.0.3 + resolution: "expect@npm:30.0.3" dependencies: - "@jest/expect-utils": "npm:30.0.2" + "@jest/expect-utils": "npm:30.0.3" "@jest/get-type": "npm:30.0.1" - jest-matcher-utils: "npm:30.0.2" + jest-matcher-utils: "npm:30.0.3" jest-message-util: "npm:30.0.2" jest-mock: "npm:30.0.2" jest-util: "npm:30.0.2" - checksum: 10/a094ebccb7d57751c508fc92ac90e93630be310fa6cc5d09a5c78c6526056bbb02efb76289c2601cf00fe8e60876e621a6bb0a3c51dfc7b2d80b26d1bf8dfc96 + checksum: 10/4f15a21c1b6341d2dd3de78104601b2f594ee2c6b63e2f40be6e4deda589fad8b3873caa2cdb1452b87858b41964086c236e07826483127a7786c66d053dcb9f languageName: node linkType: hard @@ -5008,13 +4999,13 @@ __metadata: linkType: hard "flat-cache@npm:^6.1.10": - version: 6.1.10 - resolution: "flat-cache@npm:6.1.10" + version: 6.1.11 + resolution: "flat-cache@npm:6.1.11" dependencies: - cacheable: "npm:^1.10.0" + cacheable: "npm:^1.10.1" flatted: "npm:^3.3.3" - hookified: "npm:^1.9.1" - checksum: 10/f066310af27739d1734df8f7398a3adfe2763b47e67b77da5b5d39750fa41ffb912b88582ae90d226d6603285312a8a6175126e5c515a9f11793af1017fddd3d + hookified: "npm:^1.10.0" + checksum: 10/71be9904759a8bbb3654dd74a9fe5f05ffaa2979c978c0f3d3ed0c4614d011da4804b5468d2daf9f5ef5747d5751f7fa488cfc052e3f671fa38940398dcf7374 languageName: node linkType: hard @@ -5487,9 +5478,9 @@ __metadata: linkType: hard "gulp-rename@npm:^2.0.0": - version: 2.0.0 - resolution: "gulp-rename@npm:2.0.0" - checksum: 10/b9add0d130487dee6067206eebfc3867e4e254117edef154e8c270e3111b112335439ac1cac1519d6a32541343e04bd299484253a333b4e34c7d430039953e99 + version: 2.1.0 + resolution: "gulp-rename@npm:2.1.0" + checksum: 10/83be4ad1e8f4f8525681011695f02a9edbd50a37a08b8bdf9c0f01c67f317f8a5e50d1d693d65e3e23fb95669e7e22b4a9bbcd94eed46c3be9ad7e1be532d48b languageName: node linkType: hard @@ -5591,10 +5582,10 @@ __metadata: languageName: node linkType: hard -"hookified@npm:^1.8.2, hookified@npm:^1.9.1": - version: 1.9.1 - resolution: "hookified@npm:1.9.1" - checksum: 10/48814815af4130d49ccf351b4b56c54847d2aba0b05de440f3a8a00a283bb4c2bc295f9a2614b249c56b034c132b773d9f83cabdd0d40dea028fd64a62f7375d +"hookified@npm:^1.10.0": + version: 1.10.0 + resolution: "hookified@npm:1.10.0" + checksum: 10/b10ad739e8e12583d39e45b92ffbc02187737e5042a4c5c33dcc7a8194bface4e89f95242aa8b1b0740540e644d7c6cbb39475dfac53b237c60272af0481d7e2 languageName: node linkType: hard @@ -6372,12 +6363,12 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:30.0.2": - version: 30.0.2 - resolution: "jest-circus@npm:30.0.2" +"jest-circus@npm:30.0.3": + version: 30.0.3 + resolution: "jest-circus@npm:30.0.3" dependencies: "@jest/environment": "npm:30.0.2" - "@jest/expect": "npm:30.0.2" + "@jest/expect": "npm:30.0.3" "@jest/test-result": "npm:30.0.2" "@jest/types": "npm:30.0.1" "@types/node": "npm:*" @@ -6386,31 +6377,31 @@ __metadata: dedent: "npm:^1.6.0" is-generator-fn: "npm:^2.1.0" jest-each: "npm:30.0.2" - jest-matcher-utils: "npm:30.0.2" + jest-matcher-utils: "npm:30.0.3" jest-message-util: "npm:30.0.2" - jest-runtime: "npm:30.0.2" - jest-snapshot: "npm:30.0.2" + jest-runtime: "npm:30.0.3" + jest-snapshot: "npm:30.0.3" jest-util: "npm:30.0.2" p-limit: "npm:^3.1.0" pretty-format: "npm:30.0.2" pure-rand: "npm:^7.0.0" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.6" - checksum: 10/e56f39b3c461d14e0360a94bf180e837a61ac9a52bc4b528db242f16800e03ec5d148c2adcf1cedaf2f91e328517a57e4f3eea026577e6ee41b81e41986cd925 + checksum: 10/ea75187fcab749efa3a3912e28dbde1875efb4a2f4bfc69830b8f055b0f52c7e2be1482bbde4c9e0ae29c2b8ddf10aa677a122c1d43d8b2dada8aa7d8a3451fb languageName: node linkType: hard -"jest-cli@npm:30.0.2": - version: 30.0.2 - resolution: "jest-cli@npm:30.0.2" +"jest-cli@npm:30.0.3": + version: 30.0.3 + resolution: "jest-cli@npm:30.0.3" dependencies: - "@jest/core": "npm:30.0.2" + "@jest/core": "npm:30.0.3" "@jest/test-result": "npm:30.0.2" "@jest/types": "npm:30.0.1" chalk: "npm:^4.1.2" exit-x: "npm:^0.2.2" import-local: "npm:^3.2.0" - jest-config: "npm:30.0.2" + jest-config: "npm:30.0.3" jest-util: "npm:30.0.2" jest-validate: "npm:30.0.2" yargs: "npm:^17.7.2" @@ -6421,13 +6412,13 @@ __metadata: optional: true bin: jest: ./bin/jest.js - checksum: 10/8d094ed2c34c151e28ce5fbb347aa2770a0a6fbf7648d163e8283718b55625bf403671dbe64291cba929ede7722c1c0b6d5f9722e856ebbcfd7d3a0a034f191e + checksum: 10/39c5eb4ded4f957a29d23bc94d401f54af8947a5f12c2a4a7503412a29a0a356b66c1bcfad7fcac6cb290c81448d802088735bee2239e077472dbd45b0677629 languageName: node linkType: hard -"jest-config@npm:30.0.2": - version: 30.0.2 - resolution: "jest-config@npm:30.0.2" +"jest-config@npm:30.0.3": + version: 30.0.3 + resolution: "jest-config@npm:30.0.3" dependencies: "@babel/core": "npm:^7.27.4" "@jest/get-type": "npm:30.0.1" @@ -6440,12 +6431,12 @@ __metadata: deepmerge: "npm:^4.3.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.11" - jest-circus: "npm:30.0.2" + jest-circus: "npm:30.0.3" jest-docblock: "npm:30.0.1" jest-environment-node: "npm:30.0.2" jest-regex-util: "npm:30.0.1" jest-resolve: "npm:30.0.2" - jest-runner: "npm:30.0.2" + jest-runner: "npm:30.0.3" jest-util: "npm:30.0.2" jest-validate: "npm:30.0.2" micromatch: "npm:^4.0.8" @@ -6464,19 +6455,19 @@ __metadata: optional: true ts-node: optional: true - checksum: 10/bcd70e32550aaa841f57cd62fbd75936aae33f0561593993a29fd1d2532ee242eeca57e47dab51fde23a6c52a75180b7ce55367966eb6d9499c3da8e3f9ca563 + checksum: 10/65daec4abe466a643d1686f90e97033b76db988a54d14ead0c8853abd79213fb45cfa83f3c3d05081631eda693b2710a8a17a9f6c495860178bf8b6b3798c12f languageName: node linkType: hard -"jest-diff@npm:30.0.2, jest-diff@npm:^30.0.2": - version: 30.0.2 - resolution: "jest-diff@npm:30.0.2" +"jest-diff@npm:30.0.3, jest-diff@npm:^30.0.3": + version: 30.0.3 + resolution: "jest-diff@npm:30.0.3" dependencies: "@jest/diff-sequences": "npm:30.0.1" "@jest/get-type": "npm:30.0.1" chalk: "npm:^4.1.2" pretty-format: "npm:30.0.2" - checksum: 10/5ee0f4d705704c3babc9a0d00f95cdeb108b93232a9b611063e0b707f4dcc210adc025361735aeafa18d86adaa6a8fe17c98125460bfa26866ca1d4fa8d39a91 + checksum: 10/ee196dc58bef790ddc9c2a91dd37363442530fd416630e5a2141b3ecf4ae5f0720dd2d69bb8e36ac5a0624e153da8e06df9d16d8b374212de18748d7cba99a63 languageName: node linkType: hard @@ -6549,15 +6540,15 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:30.0.2": - version: 30.0.2 - resolution: "jest-matcher-utils@npm:30.0.2" +"jest-matcher-utils@npm:30.0.3": + version: 30.0.3 + resolution: "jest-matcher-utils@npm:30.0.3" dependencies: "@jest/get-type": "npm:30.0.1" chalk: "npm:^4.1.2" - jest-diff: "npm:30.0.2" + jest-diff: "npm:30.0.3" pretty-format: "npm:30.0.2" - checksum: 10/52fd550f7277781cc62b513fa2ae73aa06faea639dfa569b5ddb6e0f7f596a3ff6e77739f03c8ef90fe6fb3e19eeb9127441a9ccded3719767643324acba9c35 + checksum: 10/6cad6155335726d62b93c90830549bc38ef6e92d10fc353b34514c1c8ff5fb054b7d97951852dd1dbf62ce393a26a12cb6b2c9e3aa3227f8f746d8c34ceb2f03 languageName: node linkType: hard @@ -6608,13 +6599,13 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:30.0.2": - version: 30.0.2 - resolution: "jest-resolve-dependencies@npm:30.0.2" +"jest-resolve-dependencies@npm:30.0.3": + version: 30.0.3 + resolution: "jest-resolve-dependencies@npm:30.0.3" dependencies: jest-regex-util: "npm:30.0.1" - jest-snapshot: "npm:30.0.2" - checksum: 10/3d622dcee08330970c641581846053a450097a847ea8970bdca77f9cd5136690c47d43f1f1a996000b7fb45e5eecc0cde2b2ef9ca2c62454148126b9a8117ab8 + jest-snapshot: "npm:30.0.3" + checksum: 10/52720a12cce5f135794c184673d059b9420182566950c238b501117d211967e09532b7956ee76d6cc1413572de0952e39c2b0358abd3f5a4220819bf8168ea46 languageName: node linkType: hard @@ -6634,9 +6625,9 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:30.0.2": - version: 30.0.2 - resolution: "jest-runner@npm:30.0.2" +"jest-runner@npm:30.0.3": + version: 30.0.3 + resolution: "jest-runner@npm:30.0.3" dependencies: "@jest/console": "npm:30.0.2" "@jest/environment": "npm:30.0.2" @@ -6654,23 +6645,23 @@ __metadata: jest-leak-detector: "npm:30.0.2" jest-message-util: "npm:30.0.2" jest-resolve: "npm:30.0.2" - jest-runtime: "npm:30.0.2" + jest-runtime: "npm:30.0.3" jest-util: "npm:30.0.2" jest-watcher: "npm:30.0.2" jest-worker: "npm:30.0.2" p-limit: "npm:^3.1.0" source-map-support: "npm:0.5.13" - checksum: 10/ccaf45147d0ad266fcd388c82826bd1154bebe62813c56b50be6ee5f2cfa1daee732f44e5a85849a8e7b5809b487a4d1ba8e0ae65c07a2e1e21ababb28705e39 + checksum: 10/2c1485a0e1219c362ce79474355619427160dd7de6c3de9cc7c192b4554371598322086144bcd1f2334bb2ef9378b71c18a8aaef90f2ffa122a58c4a3b220528 languageName: node linkType: hard -"jest-runtime@npm:30.0.2": - version: 30.0.2 - resolution: "jest-runtime@npm:30.0.2" +"jest-runtime@npm:30.0.3": + version: 30.0.3 + resolution: "jest-runtime@npm:30.0.3" dependencies: "@jest/environment": "npm:30.0.2" "@jest/fake-timers": "npm:30.0.2" - "@jest/globals": "npm:30.0.2" + "@jest/globals": "npm:30.0.3" "@jest/source-map": "npm:30.0.1" "@jest/test-result": "npm:30.0.2" "@jest/transform": "npm:30.0.2" @@ -6686,40 +6677,40 @@ __metadata: jest-mock: "npm:30.0.2" jest-regex-util: "npm:30.0.1" jest-resolve: "npm:30.0.2" - jest-snapshot: "npm:30.0.2" + jest-snapshot: "npm:30.0.3" jest-util: "npm:30.0.2" slash: "npm:^3.0.0" strip-bom: "npm:^4.0.0" - checksum: 10/ad20258e0bed25ba8b53a2dd635e6865ee81592646e86668e54c4d86db50ef1d1b5a882219c031e1d7ad445b5ad2749787c468d221c0a8095807095ccb1c5f18 + checksum: 10/6800d3561dcb93baa881599cbce3342d283661a2be8c7cf8a425db6bc1326c80514732e98159f68df4b74e6e21b6e81ccb7fa1beb29a822ed476345e75e44093 languageName: node linkType: hard -"jest-snapshot@npm:30.0.2": - version: 30.0.2 - resolution: "jest-snapshot@npm:30.0.2" +"jest-snapshot@npm:30.0.3": + version: 30.0.3 + resolution: "jest-snapshot@npm:30.0.3" dependencies: "@babel/core": "npm:^7.27.4" "@babel/generator": "npm:^7.27.5" "@babel/plugin-syntax-jsx": "npm:^7.27.1" "@babel/plugin-syntax-typescript": "npm:^7.27.1" "@babel/types": "npm:^7.27.3" - "@jest/expect-utils": "npm:30.0.2" + "@jest/expect-utils": "npm:30.0.3" "@jest/get-type": "npm:30.0.1" "@jest/snapshot-utils": "npm:30.0.1" "@jest/transform": "npm:30.0.2" "@jest/types": "npm:30.0.1" babel-preset-current-node-syntax: "npm:^1.1.0" chalk: "npm:^4.1.2" - expect: "npm:30.0.2" + expect: "npm:30.0.3" graceful-fs: "npm:^4.2.11" - jest-diff: "npm:30.0.2" - jest-matcher-utils: "npm:30.0.2" + jest-diff: "npm:30.0.3" + jest-matcher-utils: "npm:30.0.3" jest-message-util: "npm:30.0.2" jest-util: "npm:30.0.2" pretty-format: "npm:30.0.2" semver: "npm:^7.7.2" synckit: "npm:^0.11.8" - checksum: 10/7c6b3c626c5bd0706bd7649648d5d1b304717b77e7f94ca866ca9be224771b8688d22f32efcbe8587b30023bb1fcfa81936f9451211b002c7725f3f606415b60 + checksum: 10/ca08755353b1655f6524d93ca891fbb9ae3b124ac09c66d58670b005ddaa3b9f9b8dd93054e8c8ed07c5fd2310d1f0d69c169f67e7c695806bf749a0ba0c2c59 languageName: node linkType: hard @@ -6780,14 +6771,14 @@ __metadata: languageName: node linkType: hard -"jest@npm:^30.0.2": - version: 30.0.2 - resolution: "jest@npm:30.0.2" +"jest@npm:^30.0.3": + version: 30.0.3 + resolution: "jest@npm:30.0.3" dependencies: - "@jest/core": "npm:30.0.2" + "@jest/core": "npm:30.0.3" "@jest/types": "npm:30.0.1" import-local: "npm:^3.2.0" - jest-cli: "npm:30.0.2" + jest-cli: "npm:30.0.3" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -6795,7 +6786,7 @@ __metadata: optional: true bin: jest: ./bin/jest.js - checksum: 10/d8ef77d07971ffce9a9b6c52fcf841e4c6a4c10926665a59e12e4aa94986595c4c2c5e8cfadae929fb2005f5dfd9008ea8e2addde2994aee27e2544b1e702845 + checksum: 10/69b569854a92fa8ab06d97807177323997864bd2bf2b330b504a29bb8c3cfd51a914d42ccb72987ac3763b8c055dd31b80526a2d5092e1bbf101714b37611fb6 languageName: node linkType: hard @@ -6960,7 +6951,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^5.3.3": +"keyv@npm:^5.3.4": version: 5.3.4 resolution: "keyv@npm:5.3.4" dependencies: @@ -7292,7 +7283,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.11, lodash@npm:^4.17.21": +"lodash@npm:^4.17.11": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -7399,6 +7390,13 @@ __metadata: languageName: node linkType: hard +"make-synchronized@npm:^0.8.0": + version: 0.8.0 + resolution: "make-synchronized@npm:0.8.0" + checksum: 10/e744bafcd61ee1ecabe6fb2c295ecb4b06a7bfe4e844222b80b7a5ae80a4d27ba657abc4892d1c702fa2f6ae568d8505e801c1498fe1379dd824ded5483d978c + languageName: node + linkType: hard + "makeerror@npm:1.0.12": version: 1.0.12 resolution: "makeerror@npm:1.0.12" @@ -7474,9 +7472,9 @@ __metadata: linkType: hard "mdn-data@npm:^2.21.0": - version: 2.21.0 - resolution: "mdn-data@npm:2.21.0" - checksum: 10/b1e52805eeee301479b498f3443d4148257ea0c1edf87d6350a233de9b2b9e939405c5a121246df3e3e8aed7aa729a37a9b0070fc0a849221001f6dc77aea88b + version: 2.22.0 + resolution: "mdn-data@npm:2.22.0" + checksum: 10/cb62b502322b42a313ec1447529d9469fc3b6aa185291bcaa4fb349e707063d184803defb7db0ff8f54e24236611eee5093deb7604ff54cf93642963d6263d66 languageName: node linkType: hard @@ -7679,9 +7677,9 @@ __metadata: languageName: node linkType: hard -"mocha@npm:^11.7.0": - version: 11.7.0 - resolution: "mocha@npm:11.7.0" +"mocha@npm:^11.7.1": + version: 11.7.1 + resolution: "mocha@npm:11.7.1" dependencies: browser-stdout: "npm:^1.3.1" chokidar: "npm:^4.0.1" @@ -7706,7 +7704,7 @@ __metadata: bin: _mocha: bin/_mocha mocha: bin/mocha.js - checksum: 10/00c6dd8f6cdd3b4f8c4000193057d5500bd4117d0ce441a1193bca59187f69708a64c68adfcb2b49e2fc61f36099f3c2082a93c0a062ce49d9846a85a602de15 + checksum: 10/2b376eb178c4af99a9e2562b01ef7f509be6273146c29edd15f1281fcd85ee2096c2f8404210d8f9c6a522eba81396b3fe5b27b987adf2b3d57e2dce9ef7520b languageName: node linkType: hard @@ -7736,12 +7734,12 @@ __metadata: languageName: node linkType: hard -"napi-postinstall@npm:^0.2.2": - version: 0.2.4 - resolution: "napi-postinstall@npm:0.2.4" +"napi-postinstall@npm:^0.2.4": + version: 0.2.5 + resolution: "napi-postinstall@npm:0.2.5" bin: napi-postinstall: lib/cli.js - checksum: 10/286785f884b872102fb284847ecc693101f70126b1fc7a97e19293929ce7f08802b41f89398015cce0797070ea3ce6871939a3c1e693c04cf594f7939dbe8cfb + checksum: 10/3c2887c6f8dd896fb92bda3d5ed7e6904384abf35088e1b943e68c07e4ac6edfbeb63d200a9e939e7d942966805349c9e04ca67342a7f7ef4675e78755e4144d languageName: node linkType: hard @@ -8447,12 +8445,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.6.0": - version: 3.6.0 - resolution: "prettier@npm:3.6.0" +"prettier@npm:^3.6.2": + version: 3.6.2 + resolution: "prettier@npm:3.6.2" bin: prettier: bin/prettier.cjs - checksum: 10/5c0db5a8e32d2ac9824d8bc652990dfd534bc7a7c6f26d99d50c9146a2d9befb3cd1cc86c4aee71caf6b264d421a4b4b5961e31a62dda3790b8fec2521a76eef + checksum: 10/1213691706bcef1371d16ef72773c8111106c3533b660b1cc8ec158bd109cdf1462804125f87f981f23c4a3dba053b6efafda30ab0114cc5b4a725606bb9ff26 languageName: node linkType: hard @@ -8900,7 +8898,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.22.4": +"resolve@npm:^1.10.0, resolve@npm:^1.22.10, resolve@npm:^1.22.4": version: 1.22.10 resolution: "resolve@npm:1.22.10" dependencies: @@ -8913,7 +8911,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: @@ -9257,30 +9255,28 @@ __metadata: version: 0.0.0-use.local resolution: "sass-true@workspace:." dependencies: - "@adobe/css-tools": "npm:^4.4.3" - "@babel/core": "npm:^7.27.4" + "@babel/core": "npm:^7.27.7" "@babel/eslint-parser": "npm:^7.27.5" "@babel/preset-env": "npm:^7.27.2" "@babel/preset-typescript": "npm:^7.27.1" - "@eslint/js": "npm:^9.29.0" - "@types/lodash": "npm:^4.17.18" + "@eslint/js": "npm:^9.30.0" + "@prettier/sync": "npm:^0.6.1" babel-jest: "npm:^30.0.2" chai: "npm:^4.5.0" - eslint: "npm:^9.29.0" + eslint: "npm:^9.30.0" eslint-config-prettier: "npm:^10.1.5" - eslint-import-resolver-typescript: "npm:^4.4.3" + eslint-import-resolver-typescript: "npm:^4.4.4" eslint-plugin-import: "npm:^2.32.0" eslint-plugin-jest: "npm:^29.0.1" eslint-plugin-jest-dom: "npm:^5.5.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" globals: "npm:^16.2.0" - jest: "npm:^30.0.2" - jest-diff: "npm:^30.0.2" - lodash: "npm:^4.17.21" - mocha: "npm:^11.7.0" + jest: "npm:^30.0.3" + jest-diff: "npm:^30.0.3" + mocha: "npm:^11.7.1" npm-run-all: "npm:^4.1.5" postcss: "npm:^8.5.6" - prettier: "npm:^3.6.0" + prettier: "npm:^3.6.2" sass: "npm:^1.89.2" sass-embedded: "npm:^1.89.2" sassdoc: "npm:^2.7.4" @@ -9288,7 +9284,7 @@ __metadata: stylelint: "npm:^16.21.0" stylelint-config-standard-scss: "npm:^15.0.1" typescript: "npm:^5.8.3" - typescript-eslint: "npm:^8.34.1" + typescript-eslint: "npm:^8.35.1" peerDependencies: sass: ">=1.45.0" sass-embedded: ">=1.45.0" @@ -9745,10 +9741,10 @@ __metadata: languageName: node linkType: hard -"stable-hash-x@npm:^0.1.1": - version: 0.1.1 - resolution: "stable-hash-x@npm:0.1.1" - checksum: 10/c5fc31f13a8736c46ad4ec73ae307e8378d60123b31db218008c0f0a85d047f50df09aef8517108fac0c72ee9825e81a10ba6a1bc6b87558ecc056d2684bc547 +"stable-hash-x@npm:^0.2.0": + version: 0.2.0 + resolution: "stable-hash-x@npm:0.2.0" + checksum: 10/136f05d0e4d441876012b423541476ff5b695c93b56d1959560be858b9e324ea6de6c16ecbd735a040ee8396427dd867bed0bf90b2cdb1fc422566747b91a0e5 languageName: node linkType: hard @@ -10481,17 +10477,17 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:^8.34.1": - version: 8.34.1 - resolution: "typescript-eslint@npm:8.34.1" +"typescript-eslint@npm:^8.35.1": + version: 8.35.1 + resolution: "typescript-eslint@npm:8.35.1" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.34.1" - "@typescript-eslint/parser": "npm:8.34.1" - "@typescript-eslint/utils": "npm:8.34.1" + "@typescript-eslint/eslint-plugin": "npm:8.35.1" + "@typescript-eslint/parser": "npm:8.35.1" + "@typescript-eslint/utils": "npm:8.35.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10/78088abe01b7f6ba4c6036a43eb3992dfe16dc7604db73e0b9f3c7c4adb452ab715c4d644344ef89ee52c941f7536a290b22a09b0e35dcef2cf158c99b49b17d + checksum: 10/56080cf28068e074cf6fa9f0a4002b54fe2c9ba319a7b0eccc5d0a4a76fecb8023fe83f209b983da2f0c782fbbd1c6a5fd680f9dd71e4a1f0e964fb6df4dd89e languageName: node linkType: hard @@ -10575,9 +10571,9 @@ __metadata: linkType: hard "undici@npm:^7.10.0": - version: 7.10.0 - resolution: "undici@npm:7.10.0" - checksum: 10/41d8ccd5b5e35bcd9035a5a640d9020f9ea1a2ef3dffb3e29518ff16ca01957833f1befe141b3a58db09015174681614732f9d322b0bc7f78855f51020bd744e + version: 7.11.0 + resolution: "undici@npm:7.11.0" + checksum: 10/0066fc1c0a501ba315d20fb3930f4467ab22c262ea1cd43eafb0fd3e8506b064cbcd64ab54f8d2b580240a94792a612d3fc138f3878b304f183dccfac429a782 languageName: node linkType: hard @@ -10659,29 +10655,29 @@ __metadata: linkType: hard "unrs-resolver@npm:^1.7.11": - version: 1.9.1 - resolution: "unrs-resolver@npm:1.9.1" - dependencies: - "@unrs/resolver-binding-android-arm-eabi": "npm:1.9.1" - "@unrs/resolver-binding-android-arm64": "npm:1.9.1" - "@unrs/resolver-binding-darwin-arm64": "npm:1.9.1" - "@unrs/resolver-binding-darwin-x64": "npm:1.9.1" - "@unrs/resolver-binding-freebsd-x64": "npm:1.9.1" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.9.1" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.9.1" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.9.1" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.9.1" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.9.1" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.9.1" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.9.1" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.9.1" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.9.1" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.9.1" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.9.1" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.9.1" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.9.1" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.9.1" - napi-postinstall: "npm:^0.2.2" + version: 1.9.2 + resolution: "unrs-resolver@npm:1.9.2" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.9.2" + "@unrs/resolver-binding-android-arm64": "npm:1.9.2" + "@unrs/resolver-binding-darwin-arm64": "npm:1.9.2" + "@unrs/resolver-binding-darwin-x64": "npm:1.9.2" + "@unrs/resolver-binding-freebsd-x64": "npm:1.9.2" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.9.2" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.9.2" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.9.2" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.9.2" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.9.2" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.9.2" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.9.2" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.9.2" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.9.2" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.9.2" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.9.2" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.9.2" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.9.2" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.9.2" + napi-postinstall: "npm:^0.2.4" dependenciesMeta: "@unrs/resolver-binding-android-arm-eabi": optional: true @@ -10721,7 +10717,7 @@ __metadata: optional: true "@unrs/resolver-binding-win32-x64-msvc": optional: true - checksum: 10/c051d8057c9af2d46d0dbb955fda47e3acbed25f103a3639612828b4b1bf402dd504456ff9eb9fcdfc4efaf554bb110c610cda223f8a9d07165d89e868b83915 + checksum: 10/b299c0ccf1c71f7e0607ed57ae35d887732cd60f2b5fc33dbb4ec80ea8afe707dfb0615882e27265d1d722042bef6134736caaa3a3e000155ccac712f888e110 languageName: node linkType: hard @@ -11122,9 +11118,9 @@ __metadata: linkType: hard "workerpool@npm:^9.2.0": - version: 9.3.2 - resolution: "workerpool@npm:9.3.2" - checksum: 10/3d6354bea57aa7a459400858f04e3e9f19438b2783435f35d230248aee7b8c36e49596ea7574c4d8463e854784f28c50aab0a78a515e60315573f74c82d44c82 + version: 9.3.3 + resolution: "workerpool@npm:9.3.3" + checksum: 10/8d7852c2a819f49952dd8dc71c7be7885762012d47c7dcf7b9c7751161c64b1e0714fc5d20e694cb26dbdca000ba0de688164d8a124afda26eefd5108845b656 languageName: node linkType: hard From 82f66d4faa4d61d20f3e52a6002879158569c9b0 Mon Sep 17 00:00:00 2001 From: Jonny Gerig Meyer Date: Mon, 30 Jun 2025 18:10:26 -0400 Subject: [PATCH 2/4] Add test for invalid CSS --- test/main.test.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/main.test.js b/test/main.test.js index 70d8f6c..3721563 100644 --- a/test/main.test.js +++ b/test/main.test.js @@ -274,6 +274,34 @@ describe('#parse', () => { expect(sassTrue.parse(css)).to.deep.equal(expected); }); + it('ignores invalid CSS', () => { + const css = [ + '@hello "foo";', + '/* # Module: Utilities */', + '/* ------------------- */', + '/* Test: Map Add [function] */', + '/* ✔ Returns the sum of two numeric maps */', + ].join('\n'); + const expected = [ + { + module: 'Utilities', + tests: [ + { + test: 'Map Add [function]', + assertions: [ + { + description: 'Returns the sum of two numeric maps', + passed: true, + }, + ], + }, + ], + }, + ]; + + expect(sassTrue.parse(css)).to.deep.equal(expected); + }); + it('parses a passing non-output test sans description', () => { const css = [ '/* # Module: Utilities */', From d8bbd8b816b9d6ca9fdaf36410edad9eacc468c1 Mon Sep 17 00:00:00 2001 From: Jonny Gerig Meyer Date: Tue, 1 Jul 2025 12:16:11 -0400 Subject: [PATCH 3/4] address review --- package.json | 2 +- src/utils.ts | 2 +- test/main.test.js | 2 +- yarn.lock | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 828fe78..ab3b924 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "eslint-plugin-jest": "^29.0.1", "eslint-plugin-jest-dom": "^5.5.0", "eslint-plugin-simple-import-sort": "^12.1.1", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^30.0.3", "mocha": "^11.7.1", "npm-run-all": "^4.1.5", diff --git a/src/utils.ts b/src/utils.ts index 0fa2257..81ab503 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -27,6 +27,6 @@ export const cssStringToArrayOfRules = (cssString: string) => .filter(truthyValues); export const generateCss = (rules: Rule[]) => - format(rules.map((rule) => rule.toString()).join(''), { + format(rules.map((rule) => rule.toString()).join('\n'), { parser: 'css', }).trim(); diff --git a/test/main.test.js b/test/main.test.js index 3721563..03f440a 100644 --- a/test/main.test.js +++ b/test/main.test.js @@ -274,7 +274,7 @@ describe('#parse', () => { expect(sassTrue.parse(css)).to.deep.equal(expected); }); - it('ignores invalid CSS', () => { + it('ignores invalid At Rule', () => { const css = [ '@hello "foo";', '/* # Module: Utilities */', diff --git a/yarn.lock b/yarn.lock index 6573014..ee6dbaf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5399,10 +5399,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^16.2.0": - version: 16.2.0 - resolution: "globals@npm:16.2.0" - checksum: 10/37fc33502973ebbee5a44b58939aa8574abc00ca1fc4c1d4ec0571a2c6620843ae647eff8bd082adf6bb5975ad221a887522b9a7961125764f0cb6dfab0b7483 +"globals@npm:^16.3.0": + version: 16.3.0 + resolution: "globals@npm:16.3.0" + checksum: 10/accb0939d993a1c461df8d961ce9911a9a96120929e0a61057ae8e75b7df0a8bf8089da0f4e3a476db0211156416fbd26e222a56f74b389a140b34481c0a72b0 languageName: node linkType: hard @@ -9270,7 +9270,7 @@ __metadata: eslint-plugin-jest: "npm:^29.0.1" eslint-plugin-jest-dom: "npm:^5.5.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" - globals: "npm:^16.2.0" + globals: "npm:^16.3.0" jest: "npm:^30.0.3" jest-diff: "npm:^30.0.3" mocha: "npm:^11.7.1" From bd1c8e1f8e579bab5177e07f695aea3b161fa9d6 Mon Sep 17 00:00:00 2001 From: Jonny Gerig Meyer Date: Tue, 1 Jul 2025 14:05:57 -0400 Subject: [PATCH 4/4] Fix assertion parsing --- src/constants.ts | 2 +- src/index.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 9559f1a..27d0323 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -7,7 +7,7 @@ export const TEST_TOKEN = 'Test: '; export const PASS_TOKEN = '✔'; export const FAIL_TOKEN = '✖ FAILED: ['; export const END_FAIL_TOKEN = ']'; -export const ASSERT_TOKEN = 'ASSERT: '; +export const ASSERT_TOKEN = 'ASSERT:'; export const FAILURE_DETAIL_TOKEN = '- '; export const FAILURE_TYPE_START_TOKEN = '['; export const FAILURE_TYPE_END_TOKEN = ']'; diff --git a/src/index.ts b/src/index.ts index d49efe6..944cc92 100644 --- a/src/index.ts +++ b/src/index.ts @@ -237,10 +237,10 @@ const dealWithAnnoyingMediaQueries = function (rawCSS: string) { let matches = matchCSSWithinMediaQueryBlock.exec(rawCSS); let i = 0; let mediaQueryBasedSelectors: string[] = []; - /* c8 ignore start */ const mediaqueryRule = (rule: string) => (mediaqueries?.[i] || '') + rule; while (matches !== null) { // This is necessary to avoid infinite loops with zero-width matches + /* c8 ignore next 3 */ if (matches.index === matchCSSWithinMediaQueryBlock.lastIndex) { matchCSSWithinMediaQueryBlock.lastIndex++; } @@ -255,7 +255,6 @@ const dealWithAnnoyingMediaQueries = function (rawCSS: string) { i++; matches = matchCSSWithinMediaQueryBlock.exec(rawCSS); } - /* c8 ignore end */ return { mediaQueryBasedSelectors,