diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index ef0cdde..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-charset = utf-8
-
-[*.js]
-quote_type = single
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 3c3629e..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 7733133..0000000
--- a/.eslintrc
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "parserOptions": {
- "ecmaVersion": 6
- },
- "env": {
- "node": true,
- "es6": true
- },
- "rules": {
- "comma-dangle": [2, "always-multiline"],
- "curly": 0,
- "radix": 2,
- "wrap-iife": 2,
- "brace-style": 0,
- "comma-style": 2,
- "consistent-this": [2, "_that"],
- "no-lonely-if": 2,
- "no-nested-ternary": 2,
- "no-process-exit": 0,
- "no-spaced-func": 2,
- "no-use-before-define": [2, "nofunc"],
- "quotes": [2, "single"],
- "keyword-spacing": [2, { "before": true, "after": true }],
- "space-before-blocks": [2, "always"],
- "space-in-parens": [2, "never"],
- "space-unary-ops": 2,
- "strict": 0
- }
-}
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..6313b56
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+* text=auto eol=lf
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cb306a3..cf5edc1 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,77 +1,23 @@
name: Test
-on:
- push:
- branches:
- - main
- pull_request:
+
+on: [push, pull_request]
+
permissions:
contents: read
+
jobs:
- full:
- name: Node.js 20 Full
- runs-on: ubuntu-latest
- steps:
- - name: Checkout the repository
- uses: actions/checkout@v4
- - name: Install pnpm
- uses: pnpm/action-setup@v2
- with:
- version: 10
- - name: Install Node.js
- uses: actions/setup-node@v3
- with:
- node-version: 20
- cache: pnpm
- - name: Install dependencies
- run: pnpm install --frozen-lockfile --ignore-scripts
- - name: Run tests
- run: pnpm test
- short:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- node-version:
- - 18
- - 16
- name: Node.js ${{ matrix.node-version }} Quick
- steps:
- - name: Checkout the repository
- uses: actions/checkout@v4
- - name: Install pnpm
- uses: pnpm/action-setup@v2
- with:
- version: 8
- - name: Install Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v3
- with:
- node-version: ${{ matrix.node-version }}
- cache: pnpm
- - name: Install dependencies
- run: pnpm install --ignore-scripts
- - name: Run unit tests
- run: pnpm unit
- old:
- runs-on: ubuntu-latest
+ test:
+ runs-on: ${{ matrix.os }}
strategy:
+ fail-fast: true
matrix:
- node-version:
- - 14
- - 12
- name: Node.js ${{ matrix.node-version }} Quick
+ os: [ubuntu-latest, windows-latest]
+ node-version: [lts/*, latest]
steps:
- - name: Checkout the repository
- uses: actions/checkout@v4
- - name: Install pnpm
- uses: pnpm/action-setup@v1
- with:
- version: 3
- env:
- ACTIONS_ALLOW_UNSECURE_COMMANDS: true
- - name: Install Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- - name: Install dependencies
- run: pnpm install --no-frozen-lockfile --ignore-scripts
- - name: Run unit tests
- run: pnpm unit
+ - run: npm ci
+ - run: npm test
diff --git a/.node-version b/.node-version
new file mode 100644
index 0000000..a45fd52
--- /dev/null
+++ b/.node-version
@@ -0,0 +1 @@
+24
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1928abe..6e7c49a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## Unreleased
+
+- Changed: dropped support for Node.js below 18.
+- Fixed: the summary now uses the singular form for a single error or warning
+ (`1 error`, not `1 errors`).
+- Fixed: the README now states that errors are logged by default too, and that
+ they always make the plugin throw.
+- Internal: maintenance taken over by @MoOx.
+- Internal: switched from pnpm to npm.
+- Internal: replaced tape with the Node.js test runner.
+- Internal: replaced ESLint with oxlint and oxfmt.
+- Internal: dropped `clean-publish`, `less`, `stylelint` and `strip-color` from
+ the development dependencies.
+
## 7.1
- Added better `error` message support (by Stéphane Goetz).
@@ -59,47 +73,61 @@
- Only log warning messages (`type: "warning"`) by default.
## 1.4.1
+
- Add `filter` option.
- Add blacklist functionality to `plugins` option with `!` prefix`.
## 1.3.3
+
- Fix regression that caused positions from sources without incoming sourcemaps not to be logged.
## 1.3.2
+
- Find more accurate positions of preprocessed files with sourcemaps.
## 1.3.1
+
- Fix Windows path bug.
## 1.3.0
+
- Check individual messages for distinct sources, then group messages by those sources,
instead of always using the PostCSS Result's source.
- Output empty string from `formatter` if there are no messages, instead of `undefined`.
## 1.2.1
+
- Handle variable and absent input sources.
## 1.2.0
+
- Add `noIcon` and `noPlugin` options to both reporter and formatter.
## 1.1.0
+
- Use PostCSS 5's line/column properties on warnings, instead of relying on the source node.
## 1.0.0
+
- Upgrade to PostCSS 5.
## 0.4.0
+
- Add `positionless` option (to both the reporter and the formatter), with default value `"first"`.
- Cleaner npm install (files specified in `package.json`).
## 0.3.1
+
- Remove leftover debugging log statement.
## 0.3.0
+
- Add `sortByPosition` option (to both the reporter and the formatter), with default value `true`.
## 0.2.0
+
- Alter `defaultFormatter` to use warning symbol and not repeat `# postcss-reporter`.
## 0.1.0
+
- First release.
diff --git a/README.md b/README.md
index c4b7040..f182735 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,10 @@
# postcss-reporter
-A PostCSS plugin to `console.log()` the messages (warnings, etc.) registered by other PostCSS plugins.
+[ ](https://www.npmjs.com/package/postcss-reporter)
+[](https://github.com/postcss/postcss-reporter/actions)
+[](https://github.com/postcss/postcss-reporter)
+
+> A PostCSS plugin to `console.log()` the messages (warnings, etc.) registered by other PostCSS plugins.
## Purpose
@@ -11,37 +15,40 @@ So this plugin exists to read the accumulated messages (or messages from only th
By default, the messages are formatted for human legibility and sorted according to the line/column positions attached to the messages. But another formatting function can be passed in with an option, and sorting can be turned off with an option.
-*By default, only warnings are logged*. If you would like to see more messages, you can change the `filter` function.
+_By default, only warnings and errors are logged_. If you would like to see more messages, you can change the `filter` function.
## Example Output
-
+
-## Installation
+## Install
-```shell
+```console
npm install --save-dev postcss postcss-reporter
```
-Version 1.0.0+ is compatible with PostCSS 5+. (Earlier versions are compatible with PostCSS 4.)
+Version 7.0.0+ is compatible with PostCSS 8+. (Versions 1.0.0 to 6.x are compatible with PostCSS 5+, earlier versions with PostCSS 4.)
## Usage
-Add it to your plugin list *after any plugins whose messages you want to log*, and optionally pass it an object of options.
+Add it to your plugin list _after any plugins whose messages you want to log_, and optionally pass it an object of options.
For example, using [gulp-postcss](https://github.com/postcss/gulp-postcss):
```js
-gulp.task('css', function() {
- return gulp.src('./src/*.css')
- .pipe(postcss([
- bemLinter(),
- customProperties(),
- calc(),
- rejectAllColors(),
- reporter(myOptions) // <------ ding
- ]))
- .pipe(gulp.dest('./dist'));
+gulp.task("css", function () {
+ return gulp
+ .src("./src/*.css")
+ .pipe(
+ postcss([
+ bemLinter(),
+ customProperties(),
+ calc(),
+ rejectAllColors(),
+ reporter(myOptions), // <------ ding
+ ]),
+ )
+ .pipe(gulp.dest("./dist"));
});
```
@@ -58,17 +65,17 @@ See also `clearAllMessages`.
By default, this reporter will format the messages for human legibility in the console.
To use another formatter, pass a function that
- - accepts an object containing a `messages` array and a `source` string
- - returns the string to report
+- accepts an object containing a `messages` array and a `source` string
+- returns the string to report
For example, you could write a formatter like this:
```js
reporter({
- formatter: function(input) {
- return input.source + ' produced ' + input.messages.length + ' messages';
- }
-})
+ formatter: function (input) {
+ return input.source + " produced " + input.messages.length + " messages";
+ },
+});
```
**plugins** (array of strings, default = `[]`)
@@ -87,7 +94,7 @@ There are 2 ways to limit output:
Provide a filter function. It receives the message object and returns a truthy or falsy value, indicating whether that particular message should be reported or not.
-By default, only messages with `type: "warning"` are logged. (These are the messages produced when the plugin author uses PostCSS's `warn()` function.)
+By default, only messages with `type: "warning"` or `type: "error"` are logged. (Warnings are the messages produced when the plugin author uses PostCSS's `warn()` function.)
For example, `function(message) { return true }` will return every message, regardless of whether or not the plugin declares it as a warning.
@@ -100,6 +107,7 @@ See also `clearReportedMessages`.
**throwError** (boolean, default = `false`)
If `true`, after the plugin logs your messages it will throw an error if it found any warnings.
+An error is always thrown when at least one `error` message is logged, regardless of this option.
**sortByPosition** (boolean, default = `true`)
@@ -128,12 +136,12 @@ If you would like no colors in the console output, simply pass `--no-colors` whe
You can also use this module's formatter as a library, with following API:
```js
-var formatter = require('postcss-reporter/lib/formatter');
-var myFormatter = formatter(myOptions);
+const formatter = require("postcss-reporter/lib/formatter");
+const myFormatter = formatter(myOptions);
// to use defaults, just pass no options: `formatter()`
-var warningLog = myFormatter({
+const warningLog = myFormatter({
messages: someMessages,
- source: someSource
+ source: someSource,
});
console.log(warningLog);
```
@@ -143,3 +151,9 @@ These are the formatter's options:
- sortByPosition (boolean, default = `true`)
- noIcon (boolean, default = `false`) - Do not print any warning exclamatory triangle icons
- noPlugin (boolean, default = `false`) - Do not print plugin names
+
+## Contributors
+
+Thanks goes to [these wonderful people](https://github.com/postcss/postcss-reporter/graphs/contributors)
+
+## [License](./LICENSE)
diff --git a/index.js b/index.js
index 01116aa..8cbfa37 100644
--- a/index.js
+++ b/index.js
@@ -1,4 +1,4 @@
-var reporter = require('./lib/reporter');
+var reporter = require("./lib/reporter");
module.exports = reporter;
module.exports.postcss = true;
diff --git a/lib/formatter.js b/lib/formatter.js
index 3a6fb72..8906dde 100644
--- a/lib/formatter.js
+++ b/lib/formatter.js
@@ -1,6 +1,6 @@
-var pico = require('picocolors');
-var path = require('path');
-var util = require('./util');
+var pico = require("picocolors");
+var path = require("path");
+var util = require("./util");
function sortBy(cb) {
return (v1, v2) => {
@@ -13,22 +13,28 @@ function sortBy(cb) {
}
function createSortFunction(positionless, sortByPosition) {
- var positionValue = 0
+ var positionValue = 0;
- if (positionless === 'any') { positionValue = 1; }
- if (positionless === 'first') { positionValue = 2; }
- if (positionless === 'last') { positionValue = 0; }
+ if (positionless === "any") {
+ positionValue = 1;
+ }
+ if (positionless === "first") {
+ positionValue = 2;
+ }
+ if (positionless === "last") {
+ positionValue = 0;
+ }
var sortFunction = sortBy((m) => {
if (!m.line) return 1;
return positionValue;
- })
+ });
if (sortByPosition) {
- return (v1, v2) => (
+ return (v1, v2) =>
sortFunction(v1, v2) ||
- sortBy((m) => m.line || '')(v1, v2) ||
- sortBy((m) => m.column || '')(v1, v2));
+ sortBy((m) => m.line || "")(v1, v2) ||
+ sortBy((m) => m.column || "")(v1, v2);
}
return sortFunction;
@@ -37,69 +43,67 @@ function createSortFunction(positionless, sortByPosition) {
module.exports = function (opts) {
var options = opts || {};
var sortByPosition =
- typeof options.sortByPosition !== 'undefined'
- ? options.sortByPosition
- : true;
- var positionless = options.positionless || 'first';
+ typeof options.sortByPosition !== "undefined" ? options.sortByPosition : true;
+ var positionless = options.positionless || "first";
var sortFunction = createSortFunction(positionless, sortByPosition);
return function (input) {
var messages = input.messages.filter(function (message) {
- return typeof message.text === 'string';
+ return typeof message.text === "string";
});
var source = input.source;
- if (!messages.length) return '';
+ if (!messages.length) return "";
var orderedMessages = messages.sort(sortFunction);
- var output = '\n';
+ var output = "\n";
if (source) {
- output += pico.bold(pico.underline(logFrom(source))) + '\n';
+ output += pico.bold(pico.underline(logFrom(source))) + "\n";
}
orderedMessages.forEach(function (w) {
- output += messageToString(w) + '\n';
+ output += messageToString(w) + "\n";
});
return output;
function messageToString(message) {
var location = util.getLocation(message);
- var str = '';
+ var str = "";
if (location.line) {
str += pico.bold(location.line);
}
if (location.column) {
- str += pico.bold(':' + location.column);
+ str += pico.bold(":" + location.column);
}
if (location.line || location.column) {
- str += '\t';
+ str += "\t";
}
if (!options.noIcon) {
- if (message.type === 'warning') {
- str += pico.yellow(util.warningSymbol + ' ');
- } else if (message.type === 'error') {
- str += pico.red(util.errorSymbol + ' ');
+ if (message.type === "warning") {
+ str += pico.yellow(util.warningSymbol + " ");
+ } else if (message.type === "error") {
+ str += pico.red(util.errorSymbol + " ");
}
}
str += message.text;
if (!options.noPlugin) {
- str += pico.yellow(' [' + message.plugin + ']');
+ str += pico.yellow(" [" + message.plugin + "]");
}
return str;
}
function logFrom(fromValue) {
- if (fromValue.charAt(0) === '<') return fromValue;
- return path.relative(process.cwd(), fromValue).split(path.sep).join('/');
+ if (fromValue.charAt(0) === "<") return fromValue;
+ return path.relative(process.cwd(), fromValue).split(path.sep).join("/");
}
};
};
diff --git a/lib/formatter.test.js b/lib/formatter.test.js
new file mode 100644
index 0000000..45c0b56
--- /dev/null
+++ b/lib/formatter.test.js
@@ -0,0 +1,214 @@
+"use strict";
+
+const test = require("node:test");
+const assert = require("node:assert/strict");
+const path = require("node:path");
+const { stripVTControlCharacters: stripColor } = require("node:util");
+const sourceMap = require("source-map");
+const postcss = require("postcss");
+const formatter = require("./formatter");
+
+const defaultFormatter = formatter();
+
+const warningIcon = "⚠";
+const errorIcon = "✖";
+
+const basicMessages = [
+ { type: "warning", plugin: "foo", text: "foo warning" },
+ { type: "warning", plugin: "bar", text: "bar warning" },
+ { type: "warning", plugin: "baz", text: "baz warning" },
+ { type: "error", plugin: "baz", text: "baz error" },
+];
+
+const complexMessages = [
+ { type: "warning", plugin: "foo", text: "foo warning", line: 3, column: 5 },
+ { type: "error", plugin: "baz", text: "baz error" },
+ { type: "warning", plugin: "bar", text: "bar warning", line: 1, column: 99 },
+ { type: "warning", plugin: "foo", text: "ha warning", line: 8, column: 13 },
+];
+
+const complexSource = path.resolve(process.cwd(), "style/rainbows/horses.css");
+
+test("default formatter with simple mock messages", () => {
+ const output = defaultFormatter({
+ messages: basicMessages,
+ source: "",
+ });
+
+ assert.equal(
+ stripColor(output),
+ [
+ "",
+ "",
+ `${warningIcon} foo warning [foo]`,
+ `${warningIcon} bar warning [bar]`,
+ `${warningIcon} baz warning [baz]`,
+ `${errorIcon} baz error [baz]`,
+ "",
+ ].join("\n"),
+ );
+});
+
+test("formatter with noIcon and noPlugin", () => {
+ const minimalFormatter = formatter({ noIcon: true, noPlugin: true });
+ const output = minimalFormatter({
+ messages: basicMessages,
+ source: "",
+ });
+
+ assert.equal(
+ stripColor(output),
+ ["", "", "foo warning", "bar warning", "baz warning", "baz error", ""].join("\n"),
+ );
+});
+
+test("default formatter sorts by position, positionless first", () => {
+ const output = defaultFormatter({
+ messages: complexMessages,
+ source: complexSource,
+ });
+
+ assert.equal(
+ stripColor(output),
+ [
+ "",
+ "style/rainbows/horses.css",
+ `${errorIcon} baz error [baz]`,
+ `1:99\t${warningIcon} bar warning [bar]`,
+ `3:5\t${warningIcon} foo warning [foo]`,
+ `8:13\t${warningIcon} ha warning [foo]`,
+ "",
+ ].join("\n"),
+ );
+});
+
+test("formatter with sortByPosition: false", () => {
+ const output = formatter({ sortByPosition: false })({
+ messages: complexMessages,
+ source: complexSource,
+ });
+
+ assert.equal(
+ stripColor(output),
+ [
+ "",
+ "style/rainbows/horses.css",
+ `${errorIcon} baz error [baz]`,
+ `3:5\t${warningIcon} foo warning [foo]`,
+ `1:99\t${warningIcon} bar warning [bar]`,
+ `8:13\t${warningIcon} ha warning [foo]`,
+ "",
+ ].join("\n"),
+ );
+});
+
+test("formatter with positionless: last", () => {
+ const output = formatter({ positionless: "last" })({
+ messages: complexMessages,
+ source: complexSource,
+ });
+
+ assert.equal(
+ stripColor(output),
+ [
+ "",
+ "style/rainbows/horses.css",
+ `1:99\t${warningIcon} bar warning [bar]`,
+ `3:5\t${warningIcon} foo warning [foo]`,
+ `8:13\t${warningIcon} ha warning [foo]`,
+ `${errorIcon} baz error [baz]`,
+ "",
+ ].join("\n"),
+ );
+});
+
+test("formatter without any sorting", () => {
+ const output = formatter({ sortByPosition: false, positionless: "any" })({
+ messages: complexMessages,
+ source: complexSource,
+ });
+
+ assert.equal(
+ stripColor(output),
+ [
+ "",
+ "style/rainbows/horses.css",
+ `3:5\t${warningIcon} foo warning [foo]`,
+ `${errorIcon} baz error [baz]`,
+ `1:99\t${warningIcon} bar warning [bar]`,
+ `8:13\t${warningIcon} ha warning [foo]`,
+ "",
+ ].join("\n"),
+ );
+});
+
+test("default formatter with a warning on root", () => {
+ const output = defaultFormatter({
+ messages: [
+ {
+ type: "warning",
+ text: "blergh",
+ plugin: "reject-root",
+ // warnings on root do not have a start position
+ node: { type: "root", source: {} },
+ },
+ ],
+ source: "",
+ });
+
+ assert.equal(
+ stripColor(output),
+ ["", "", `${warningIcon} blergh [reject-root]`, ""].join("\n"),
+ );
+});
+
+test("default formatter with undefined source", () => {
+ const output = defaultFormatter({
+ messages: [{ type: "warning", plugin: "foo", text: "foo warning" }],
+ source: undefined,
+ });
+
+ assert.equal(stripColor(output), ["", `${warningIcon} foo warning [foo]`, ""].join("\n"));
+});
+
+test("default formatter with no message", () => {
+ assert.equal(stripColor(defaultFormatter({ messages: [] })), "");
+});
+
+test("default formatter with real source maps", () => {
+ // Source map columns are 0 based, message columns are 1 based: this maps the
+ // message below (line 2, column 7) to line 102, column 107.
+ const map = new sourceMap.SourceMapGenerator({ file: "file.css" });
+ map.addMapping({
+ generated: { line: 2, column: 6 },
+ source: "file.original.css",
+ original: { line: 102, column: 106 },
+ });
+
+ const root = postcss.parse(".button { color: red; }", {
+ from: "file.css",
+ map: { prev: map.toString() },
+ });
+
+ const message = {
+ line: 2,
+ column: 7,
+ node: root.nodes[0],
+ text: "blargh",
+ plugin: "foo",
+ };
+
+ assert.equal(stripColor(defaultFormatter({ messages: [message] })), "\n102:107\tblargh [foo]\n");
+});
+
+test("default formatter skips messages without a text property", () => {
+ const output = defaultFormatter({
+ messages: [
+ { type: "warning", plugin: "foo" },
+ { type: "dependency", plugin: "bar", file: "bar file" },
+ ],
+ source: "",
+ });
+
+ assert.equal(stripColor(output), "");
+});
diff --git a/lib/reporter.js b/lib/reporter.js
index ae709c7..2de7040 100644
--- a/lib/reporter.js
+++ b/lib/reporter.js
@@ -1,6 +1,6 @@
-var defaultFormatter = require('./formatter');
-var pico = require('picocolors');
-var util = require('./util');
+var defaultFormatter = require("./formatter");
+var pico = require("picocolors");
+var util = require("./util");
module.exports = function (opts = {}) {
var formatter =
@@ -18,12 +18,12 @@ module.exports = function (opts = {}) {
};
} else if (
opts.plugins.every(function (plugin) {
- return plugin[0] === '!';
+ return plugin[0] === "!";
})
) {
// Deny list
pluginFilter = function (message) {
- return opts.plugins.indexOf('!' + message.plugin) === -1;
+ return opts.plugins.indexOf("!" + message.plugin) === -1;
};
} else {
// Allow list
@@ -32,17 +32,16 @@ module.exports = function (opts = {}) {
};
}
- var messageFilter = opts.filter || ((message) => message.type === 'warning' || message.type === 'error');
+ var messageFilter =
+ opts.filter || ((message) => message.type === "warning" || message.type === "error");
return {
- postcssPlugin: 'postcss-reporter',
+ postcssPlugin: "postcss-reporter",
OnceExit(css, { result }) {
- var messagesToLog = result.messages
- .filter(pluginFilter)
- .filter(messageFilter);
+ var messagesToLog = result.messages.filter(pluginFilter).filter(messageFilter);
var resultSource = !result.root.source
- ? ''
+ ? ""
: result.root.source.input.file || result.root.source.input.id;
let errorCount = 0;
@@ -55,9 +54,9 @@ module.exports = function (opts = {}) {
grouped[key] = [];
}
- if (message.type === 'error') {
+ if (message.type === "error") {
errorCount++;
- } else if (message.type === 'warning') {
+ } else if (message.type === "warning") {
warningCount++;
}
@@ -66,7 +65,7 @@ module.exports = function (opts = {}) {
return grouped;
}, {});
- var report = '';
+ var report = "";
for (const source in sourceGroupedMessages) {
if (sourceGroupedMessages.hasOwnProperty(source)) {
report += formatter({
@@ -77,19 +76,19 @@ module.exports = function (opts = {}) {
}
if (opts.clearReportedMessages) {
- result.messages = result.messages.filter(message => !messagesToLog.includes(message));
+ result.messages = result.messages.filter((message) => !messagesToLog.includes(message));
}
if (opts.clearAllMessages) {
var messagesToClear = result.messages.filter(pluginFilter);
- result.messages = result.messages.filter(message => !messagesToClear.includes(message));
+ result.messages = result.messages.filter((message) => !messagesToClear.includes(message));
}
if (!report) return;
- const summaryColor = errorCount > 0 ? 'red' : 'yellow';
+ const summaryColor = errorCount > 0 ? "red" : "yellow";
const summarySymbol = errorCount > 0 ? util.errorSymbol : util.warningSymbol;
- const summary = `${summarySymbol} ${messagesToLog.length} ${util.plur('problem', messagesToLog.length)} (${errorCount} ${util.plur('error')}, ${warningCount} ${util.plur('warning')})`
+ const summary = `${summarySymbol} ${messagesToLog.length} ${util.plur("problem", messagesToLog.length)} (${errorCount} ${util.plur("error", errorCount)}, ${warningCount} ${util.plur("warning", warningCount)})`;
report += `\n ${pico[summaryColor](pico.bold(summary))}\n`;
@@ -97,9 +96,7 @@ module.exports = function (opts = {}) {
if (shouldThrowError()) {
throw new Error(
- pico.red(
- pico.bold('\n** postcss-reporter: warnings or errors were found **')
- )
+ pico.red(pico.bold("\n** postcss-reporter: warnings or errors were found **")),
);
}
diff --git a/lib/reporter.test.js b/lib/reporter.test.js
new file mode 100644
index 0000000..333ed79
--- /dev/null
+++ b/lib/reporter.test.js
@@ -0,0 +1,205 @@
+"use strict";
+
+const test = require("node:test");
+const assert = require("node:assert/strict");
+const { stripVTControlCharacters: stripColor } = require("node:util");
+const reporter = require("./reporter");
+
+const simpleResult = {
+ messages: [
+ { type: "warning", plugin: "foo", text: "foo warning" },
+ { type: "warning", plugin: "bar", text: "bar warning" },
+ { type: "warning", plugin: "baz", text: "baz warning" },
+ { type: "warning", plugin: "baz", text: "baz error" },
+ ],
+ root: { source: { input: { id: "" } } },
+};
+
+function clone(value) {
+ return JSON.parse(JSON.stringify(value));
+}
+
+// Runs the reporter on a mock result, keeping its console output away from the
+// test output. Returns everything the formatter has been called with and what
+// the reporter has logged. An exception thrown by the reporter escapes and fails
+// the test, unless `expectError` is set: the reporter must then throw, and the
+// error is returned alongside the rest.
+function run(options, result, { expectError = false } = {}) {
+ const calls = [];
+ const logs = [];
+ const log = console.log;
+ let error;
+ console.log = (output) => logs.push(output);
+ try {
+ reporter({
+ ...options,
+ formatter: (input) => {
+ calls.push(input);
+ return "bogus report";
+ },
+ }).OnceExit(null, { result });
+ } catch (thrown) {
+ if (!expectError) throw thrown;
+ error = thrown;
+ } finally {
+ console.log = log;
+ }
+ if (expectError) assert.ok(error instanceof Error, "the reporter should have thrown");
+ return { calls, logs, error };
+}
+
+test("reporter with a simple mock result", () => {
+ const { calls } = run({}, simpleResult);
+ assert.deepEqual(calls, [{ messages: simpleResult.messages, source: "" }]);
+});
+
+test("reporter with a non warning typed message", () => {
+ const result = {
+ messages: [
+ { type: "dependency", plugin: "foo" },
+ { type: "warning", plugin: "foo", text: "foo warning" },
+ { type: "error", plugin: "foo", text: "foo error" },
+ ],
+ root: { source: { input: { id: "" } } },
+ };
+
+ const { calls } = run({}, result, { expectError: true });
+ assert.deepEqual(calls, [
+ {
+ messages: [
+ { type: "warning", plugin: "foo", text: "foo warning" },
+ { type: "error", plugin: "foo", text: "foo error" },
+ ],
+ source: "",
+ },
+ ]);
+});
+
+test("reporter with an allow list of plugins", () => {
+ const { calls } = run({ plugins: ["foo", "bar"] }, simpleResult);
+ assert.deepEqual(calls[0].messages, [
+ { type: "warning", plugin: "foo", text: "foo warning" },
+ { type: "warning", plugin: "bar", text: "bar warning" },
+ ]);
+ assert.equal(calls[0].source, "");
+});
+
+test("reporter with a deny list of plugins", () => {
+ const { calls } = run({ plugins: ["!foo", "!baz"] }, simpleResult);
+ assert.deepEqual(calls[0].messages, [{ type: "warning", plugin: "bar", text: "bar warning" }]);
+});
+
+test("reporter with a filter function", () => {
+ const result = clone(simpleResult);
+ result.messages.push({ type: "error", plugin: "baz", text: "baz error" });
+
+ const { calls } = run({ filter: (message) => message.type === "error" }, result, {
+ expectError: true,
+ });
+ assert.deepEqual(calls[0].messages, [{ type: "error", plugin: "baz", text: "baz error" }]);
+});
+
+test("reporter with an empty list of plugins", () => {
+ const { calls } = run({ plugins: [] }, simpleResult);
+ assert.deepEqual(calls[0].messages, simpleResult.messages);
+});
+
+test("reporter with clearReportedMessages", () => {
+ const result = clone(simpleResult);
+ run({ clearReportedMessages: true }, result);
+ assert.deepEqual(result.messages, []);
+});
+
+test("reporter with an allow list of plugins and clearReportedMessages", () => {
+ const result = clone(simpleResult);
+ run({ plugins: ["baz", "foo"], clearReportedMessages: true }, result);
+ assert.deepEqual(result.messages, [{ type: "warning", plugin: "bar", text: "bar warning" }]);
+});
+
+test("reporter with clearAllMessages", () => {
+ const result = clone(simpleResult);
+ run({ clearAllMessages: true }, result);
+ assert.deepEqual(result.messages, []);
+});
+
+test("reporter with clearAllMessages and an allow list of plugins", () => {
+ const result = clone(simpleResult);
+ run({ plugins: ["foo"], clearAllMessages: true }, result);
+ assert.deepEqual(result.messages, [
+ { type: "warning", plugin: "bar", text: "bar warning" },
+ { type: "warning", plugin: "baz", text: "baz warning" },
+ { type: "warning", plugin: "baz", text: "baz error" },
+ ]);
+});
+
+test("reporter with throwError", () => {
+ run({ throwError: true }, clone(simpleResult), { expectError: true });
+});
+
+test("reporter with a file as source", () => {
+ const { calls } = run(
+ {},
+ {
+ messages: [{ type: "warning", plugin: "baz", text: "baz warning" }],
+ root: { source: { input: { file: "/path/to/file.css" } } },
+ },
+ );
+ assert.equal(calls[0].source, "/path/to/file.css");
+});
+
+test("reporter without any source", () => {
+ const { calls } = run(
+ {},
+ {
+ messages: [{ type: "warning", plugin: "baz", text: "baz warning" }],
+ root: {},
+ },
+ );
+ assert.equal(calls[0].source, "");
+});
+
+test("reporter groups messages by the source of their node", () => {
+ const fooNode = { source: { input: { file: "foo.css" } } };
+ const barNode = { source: { input: { file: "bar.css" } } };
+ const inputNode = { source: { input: { id: "" } } };
+
+ const messages = [
+ { type: "warning", plugin: "foo", text: "foo warning", node: fooNode },
+ { type: "warning", plugin: "baz", text: "baz warning", node: barNode },
+ { type: "error", plugin: "pat", text: "pat error", node: inputNode },
+ { type: "warning", plugin: "bar", text: "bar warning", node: fooNode },
+ { type: "error", plugin: "hoo", text: "hoo error", node: inputNode },
+ { type: "error", plugin: "hah", text: "hah error" },
+ ];
+
+ const { calls } = run(
+ {},
+ { messages, root: { source: { input: { id: "" } } } },
+ { expectError: true },
+ );
+
+ assert.deepEqual(calls, [
+ { source: "foo.css", messages: [messages[0], messages[3]] },
+ { source: "bar.css", messages: [messages[1]] },
+ { source: "", messages: [messages[2], messages[4]] },
+ { source: "", messages: [messages[5]] },
+ ]);
+});
+
+test("reporter summary uses singular and plural forms", () => {
+ const singular = run(
+ {},
+ {
+ messages: [
+ { type: "warning", plugin: "foo", text: "foo warning" },
+ { type: "error", plugin: "foo", text: "foo error" },
+ ],
+ root: {},
+ },
+ { expectError: true },
+ );
+ assert.match(stripColor(singular.logs[0]), /2 problems \(1 error, 1 warning\)/);
+
+ const plural = run({}, simpleResult);
+ assert.match(stripColor(plural.logs[0]), /4 problems \(0 errors, 4 warnings\)/);
+});
diff --git a/lib/util.js b/lib/util.js
index 5433491..29b7535 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -1,7 +1,5 @@
var supportsLargeCharset =
- process.platform !== 'win32' ||
- process.env.CI ||
- process.env.TERM === 'xterm-256color';
+ process.platform !== "win32" || process.env.CI || process.env.TERM === "xterm-256color";
exports.getLocation = function (message) {
var messageNode = message.node;
@@ -15,8 +13,7 @@ exports.getLocation = function (message) {
if (!messageInput) return location;
- var originLocation =
- messageInput.origin && messageInput.origin(message.line, message.column);
+ var originLocation = messageInput.origin && messageInput.origin(message.line, message.column);
if (originLocation) return originLocation;
location.file = messageInput.file || messageInput.id;
@@ -24,8 +21,8 @@ exports.getLocation = function (message) {
};
exports.plur = function plur(word, count) {
- return (count === 1 ? word : `${word}s`);
-}
+ return count === 1 ? word : `${word}s`;
+};
-exports.warningSymbol = supportsLargeCharset ? '⚠' : '!!';
-exports.errorSymbol = supportsLargeCharset ? '✖' : 'xx';
+exports.warningSymbol = supportsLargeCharset ? "⚠" : "!!";
+exports.errorSymbol = supportsLargeCharset ? "✖" : "xx";
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..bb040ff
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,907 @@
+{
+ "name": "postcss-reporter",
+ "version": "7.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "postcss-reporter",
+ "version": "7.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^1.1.1"
+ },
+ "devDependencies": {
+ "oxfmt": "^0.53.0",
+ "oxlint": "^1.68.0",
+ "postcss": "^8.5.0",
+ "source-map": "^0.7.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-android-arm-eabi": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.53.0.tgz",
+ "integrity": "sha512-XfVM8AmIovBTKXCt14Op5wbfcoM8418nttd+nhMgM3RAVaJg1MtJc73FyWfUt0oxLyBGVwfniNVUsbV/b3VmPg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-android-arm64": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.53.0.tgz",
+ "integrity": "sha512-btHDfXckwdf9zgyAVznfZkf+GVyB0I1m1hlvaOMRx2xoyz3hphfPX97s89J3wfCN8QBETLtk4lQUaeOkrMuQOg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-darwin-arm64": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.53.0.tgz",
+ "integrity": "sha512-k2RjMcSTkHjoOlsVGbL35JVzXL+oQco3GHPl/5kjebVF4oHNfE24In8F5isqBh9LBJucycWHKDXdGrCchdWcHQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-darwin-x64": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.53.0.tgz",
+ "integrity": "sha512-65jIBE2H1l5SSs16fmv6/7b6sAx/WpvnsgDhVWK9qSjNFDUro7MPQ6q5UhpY7kl46yltfR046iAnxy/Bzqbiew==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-freebsd-x64": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.53.0.tgz",
+ "integrity": "sha512-oYe1gkz7U49PCYrS9147d2fJZj8mDI4Di6AvlsU5fu9p+Tq8S7qqOMSZjUiVTLX8bXuSA9Lk/tIxuegVjkNYRA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-arm-gnueabihf": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.53.0.tgz",
+ "integrity": "sha512-ailB2vLzGi629tymdAb2VYJyEHref7oqGxP+tRBrtRBxQrb6NV55JMT7xtGZ8uTeG2+Y9zojqW4LhJYxQnz9Pg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-arm-musleabihf": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.53.0.tgz",
+ "integrity": "sha512-abh4mWBvOvD966sobqF7r103y2yYx7Rb4WGHLOS4+5igGqLbbPxS9aK5+45D6iUY7dWMsk3Muz9a8gUtufvqJA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-arm64-gnu": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.53.0.tgz",
+ "integrity": "sha512-z73PvuhJ8qA+cDbaiqbtopHglA91U4+y5wn2sTJJrnpB957d5P33FEuyP3DQIFd7ofljmDmfVT4G0CVGHZaJWg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-arm64-musl": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.53.0.tgz",
+ "integrity": "sha512-I6bhOTroqc3ThrwZ89l2k3ivKuELhdPLbAcJhRNyjWvlgwb0vjRgEnVL1XLx5Jud04/ypNRZBykAWrSk6l/D+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-ppc64-gnu": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.53.0.tgz",
+ "integrity": "sha512-w0p3JzB/PkkQjXALMJMqP9YfP3yq4w6zGsu5kezQmUnxRkN3b/Theg2l/nDgBsOcczxS3gL6Gam5XNAVrO6QJQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-riscv64-gnu": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.53.0.tgz",
+ "integrity": "sha512-mzBhF6k1Yq1K/dqDmVe/AAafnlJfEpx7yfUiksyeWXJk5iSzZqBSxcsa02zIytYgQFRZ7h6WPZfwHg/DoOE1Kw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-riscv64-musl": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.53.0.tgz",
+ "integrity": "sha512-AlFCpnRQhogQFzZXWbO6xB6/Udy745L+eQNmDPGg7G/OeWsYmJc4jZYfUN5pQg0reOPWSED2mOQqKZOJM1U8cA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-s390x-gnu": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.53.0.tgz",
+ "integrity": "sha512-XD4ulY4f1DWbuuZXAqxhVn+gdPmrhnmojWtFN78ctVoupmS845fGhsUrk1HZXKQI+iymbaiz9vAjPsghHNQ7Ag==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-x64-gnu": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.53.0.tgz",
+ "integrity": "sha512-xg8KWX0QnxmYWRe60CgHYWXI0ZOtBbqTsXvWiWrcl2XUHJ3fht2QerOk2iWvylzX3zNT2GpvBRxGoR4d3sxPRQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-linux-x64-musl": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.53.0.tgz",
+ "integrity": "sha512-MWExpYBGvl+pIvVB/gj/CcWlN2al8AizT7rUbtaYaWNoQkhWARM6W3qpgoCr72CYSN9PborzPmM5MIRe2BrNdA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-openharmony-arm64": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.53.0.tgz",
+ "integrity": "sha512-u4sajgO4nxgmJIgc/y2AqPhkdbOkQH8WugXpA1+pW0ESQhvGZ1oGq61Q4xMbJHJU1hFgtO18QNrcFYDPYH0gwQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-win32-arm64-msvc": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.53.0.tgz",
+ "integrity": "sha512-Yq9sOZoIOJ5xPjO0qOyHJS4CiPuTkB2en9auxZz7Ar2p5RaC7BzLyVVmAA7zz9/L9YnjjY1DwNxN+ivKXimN/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-win32-ia32-msvc": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.53.0.tgz",
+ "integrity": "sha512-es1fVNZEkBqEcQtBpn19SYFgZF7FawlkCjkT/iImfEAus4gun8fBwB1E9hpV5LcR9B0DBNvRIXhW8BQk3JaE+Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxfmt/binding-win32-x64-msvc": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.53.0.tgz",
+ "integrity": "sha512-QFmJs2bEu9AO4O6qsmEaZNGi6dFq8N+rT8EHAAnZIq/B9SeJDUbc4DzVxQ48MfDsL7D3sCZzo37zuTuspcURgg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-android-arm-eabi": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.77.0.tgz",
+ "integrity": "sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-android-arm64": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.77.0.tgz",
+ "integrity": "sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-darwin-arm64": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.77.0.tgz",
+ "integrity": "sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-darwin-x64": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.77.0.tgz",
+ "integrity": "sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-freebsd-x64": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.77.0.tgz",
+ "integrity": "sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-arm-gnueabihf": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.77.0.tgz",
+ "integrity": "sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-arm-musleabihf": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.77.0.tgz",
+ "integrity": "sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-arm64-gnu": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.77.0.tgz",
+ "integrity": "sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-arm64-musl": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.77.0.tgz",
+ "integrity": "sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-ppc64-gnu": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.77.0.tgz",
+ "integrity": "sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-riscv64-gnu": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.77.0.tgz",
+ "integrity": "sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-riscv64-musl": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.77.0.tgz",
+ "integrity": "sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-s390x-gnu": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.77.0.tgz",
+ "integrity": "sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-x64-gnu": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.77.0.tgz",
+ "integrity": "sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-linux-x64-musl": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.77.0.tgz",
+ "integrity": "sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-openharmony-arm64": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.77.0.tgz",
+ "integrity": "sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-win32-arm64-msvc": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.77.0.tgz",
+ "integrity": "sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-win32-ia32-msvc": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.77.0.tgz",
+ "integrity": "sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxlint/binding-win32-x64-msvc": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.77.0.tgz",
+ "integrity": "sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.17",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz",
+ "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/oxfmt": {
+ "version": "0.53.0",
+ "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.53.0.tgz",
+ "integrity": "sha512-9cB5glS3Ip6NMuZ+6NYTao9FCWkDhRtPYCtR3QBu/NxHoFbgzzTvi41N4jxz/GqGfuLKspui1qb/LlSu2IbMcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinypool": "2.1.0"
+ },
+ "bin": {
+ "oxfmt": "bin/oxfmt"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ },
+ "optionalDependencies": {
+ "@oxfmt/binding-android-arm-eabi": "0.53.0",
+ "@oxfmt/binding-android-arm64": "0.53.0",
+ "@oxfmt/binding-darwin-arm64": "0.53.0",
+ "@oxfmt/binding-darwin-x64": "0.53.0",
+ "@oxfmt/binding-freebsd-x64": "0.53.0",
+ "@oxfmt/binding-linux-arm-gnueabihf": "0.53.0",
+ "@oxfmt/binding-linux-arm-musleabihf": "0.53.0",
+ "@oxfmt/binding-linux-arm64-gnu": "0.53.0",
+ "@oxfmt/binding-linux-arm64-musl": "0.53.0",
+ "@oxfmt/binding-linux-ppc64-gnu": "0.53.0",
+ "@oxfmt/binding-linux-riscv64-gnu": "0.53.0",
+ "@oxfmt/binding-linux-riscv64-musl": "0.53.0",
+ "@oxfmt/binding-linux-s390x-gnu": "0.53.0",
+ "@oxfmt/binding-linux-x64-gnu": "0.53.0",
+ "@oxfmt/binding-linux-x64-musl": "0.53.0",
+ "@oxfmt/binding-openharmony-arm64": "0.53.0",
+ "@oxfmt/binding-win32-arm64-msvc": "0.53.0",
+ "@oxfmt/binding-win32-ia32-msvc": "0.53.0",
+ "@oxfmt/binding-win32-x64-msvc": "0.53.0"
+ },
+ "peerDependencies": {
+ "svelte": "^5.0.0",
+ "vite-plus": "*"
+ },
+ "peerDependenciesMeta": {
+ "svelte": {
+ "optional": true
+ },
+ "vite-plus": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/oxlint": {
+ "version": "1.77.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.77.0.tgz",
+ "integrity": "sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "oxlint": "bin/oxlint"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ },
+ "optionalDependencies": {
+ "@oxlint/binding-android-arm-eabi": "1.77.0",
+ "@oxlint/binding-android-arm64": "1.77.0",
+ "@oxlint/binding-darwin-arm64": "1.77.0",
+ "@oxlint/binding-darwin-x64": "1.77.0",
+ "@oxlint/binding-freebsd-x64": "1.77.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.77.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.77.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.77.0",
+ "@oxlint/binding-linux-arm64-musl": "1.77.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.77.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.77.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.77.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.77.0",
+ "@oxlint/binding-linux-x64-gnu": "1.77.0",
+ "@oxlint/binding-linux-x64-musl": "1.77.0",
+ "@oxlint/binding-openharmony-arm64": "1.77.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.77.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.77.0",
+ "@oxlint/binding-win32-x64-msvc": "1.77.0"
+ },
+ "peerDependencies": {
+ "oxlint-tsgolint": ">=7.0.2001",
+ "vite-plus": "*"
+ },
+ "peerDependenciesMeta": {
+ "oxlint-tsgolint": {
+ "optional": true
+ },
+ "vite-plus": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/postcss": {
+ "version": "8.5.26",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz",
+ "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.17",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tinypool": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-2.1.0.tgz",
+ "integrity": "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^20.0.0 || >=22.0.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index c935f65..b260352 100644
--- a/package.json
+++ b/package.json
@@ -2,54 +2,56 @@
"name": "postcss-reporter",
"version": "7.1.0",
"description": "Log PostCSS messages in the console",
- "main": "index.js",
- "scripts": {
- "lint": "eslint .",
- "unit": "tape test",
- "test": "pnpm lint && pnpm unit && pnpm visual",
- "visual": "node test/visual.js"
- },
- "files": [
- "index.js",
- "lib"
+ "keywords": [
+ "css",
+ "postcss",
+ "postcss-plugin",
+ "reporter",
+ "warnings"
],
- "engines": {
- "node": ">=10"
- },
- "repository": "postcss/postcss-reporter",
- "author": {
- "name": "David Clark",
- "email": "david.dave.clark@gmail.com",
- "url": "https://davidtheclark.com"
- },
+ "homepage": "https://github.com/postcss/postcss-reporter",
"license": "MIT",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
+ "author": "MoOx",
+ "contributors": [
{
- "type": "github",
- "url": "https://github.com/sponsors/ai"
+ "name": "David Clark",
+ "email": "david.dave.clark@gmail.com",
+ "url": "https://davidtheclark.com"
}
],
- "peerDependencies": {
- "postcss": "^8.1.0"
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/postcss/postcss-reporter.git"
},
- "devDependencies": {
- "clean-publish": "^4.2.0",
- "eslint": "8.56.0",
- "less": "4.2.0",
- "postcss": "^8.4.33",
- "source-map": "0.7.4",
- "strip-color": "^0.1.0",
- "stylelint": "16.1.0",
- "tape": "^5.7.3"
+ "files": [
+ "LICENSE",
+ "index.js",
+ "lib/formatter.js",
+ "lib/reporter.js",
+ "lib/util.js"
+ ],
+ "main": "index.js",
+ "scripts": {
+ "format": "oxfmt",
+ "lint": "oxlint && oxfmt --check",
+ "unit": "node --test",
+ "test": "npm run lint && npm run unit",
+ "visual": "node scripts/visual.js",
+ "release": "npx npmpub"
},
"dependencies": {
- "picocolors": "^1.0.0"
+ "picocolors": "^1.1.1"
},
- "clean-publish": {
- "cleanDocs": true
+ "devDependencies": {
+ "oxfmt": "^0.53.0",
+ "oxlint": "^1.68.0",
+ "postcss": "^8.5.0",
+ "source-map": "^0.7.4"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ },
+ "engines": {
+ "node": ">=18"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index 5c76bc5..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,2659 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- picocolors:
- specifier: ^1.0.0
- version: 1.1.1
- devDependencies:
- clean-publish:
- specifier: ^4.2.0
- version: 4.4.0
- eslint:
- specifier: 8.56.0
- version: 8.56.0
- less:
- specifier: 4.2.0
- version: 4.2.0
- postcss:
- specifier: ^8.4.33
- version: 8.5.6
- source-map:
- specifier: 0.7.4
- version: 0.7.4
- strip-color:
- specifier: ^0.1.0
- version: 0.1.0
- stylelint:
- specifier: 16.1.0
- version: 16.1.0
- tape:
- specifier: ^5.7.3
- version: 5.9.0
-
-packages:
-
- '@babel/code-frame@7.27.1':
- resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.28.5':
- resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
- engines: {node: '>=6.9.0'}
-
- '@csstools/css-parser-algorithms@2.7.1':
- resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- '@csstools/css-tokenizer': ^2.4.1
-
- '@csstools/css-tokenizer@2.4.1':
- resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==}
- engines: {node: ^14 || ^16 || >=18}
-
- '@csstools/media-query-list-parser@2.1.13':
- resolution: {integrity: sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^2.7.1
- '@csstools/css-tokenizer': ^2.4.1
-
- '@csstools/selector-specificity@3.1.1':
- resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss-selector-parser: ^6.0.13
-
- '@eslint-community/eslint-utils@4.9.0':
- resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
- '@eslint-community/regexpp@4.12.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@eslint/js@8.56.0':
- resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
-
- '@ljharb/resumer@0.1.3':
- resolution: {integrity: sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==}
- engines: {node: '>= 0.4'}
-
- '@ljharb/through@2.3.14':
- resolution: {integrity: sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==}
- engines: {node: '>= 0.4'}
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@ungap/structured-clone@1.3.0':
- resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
- ajv@8.17.1:
- resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-regex@6.2.2:
- resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
- engines: {node: '>=12'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- array-buffer-byte-length@1.0.2:
- resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
- engines: {node: '>= 0.4'}
-
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
- array.prototype.every@1.1.7:
- resolution: {integrity: sha512-BIP72rKvrKd08ptbetLb4qvrlGjkv30yOKgKcTtOIbHyQt3shr/jyOzdApiCOh3LPYrpJo5M6i0zmVldOF2pUw==}
- engines: {node: '>= 0.4'}
-
- arraybuffer.prototype.slice@1.0.4:
- resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
- engines: {node: '>= 0.4'}
-
- astral-regex@2.0.0:
- resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
- engines: {node: '>=8'}
-
- async-function@1.0.0:
- resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
- engines: {node: '>= 0.4'}
-
- available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- balanced-match@2.0.0:
- resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
-
- brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
-
- call-bind@1.0.8:
- resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
- engines: {node: '>= 0.4'}
-
- call-bound@1.0.4:
- resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
- engines: {node: '>= 0.4'}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- clean-publish@4.4.0:
- resolution: {integrity: sha512-wAJxoegQKPN/BhAp1cOb7XID5Q3LBMpMUOmLjr1zWUwOOR7QDM+3zN3ViJQVAy4WbCXLI8bTJrFglIO1ldkE0g==}
- engines: {node: '>= 16.0.0'}
- hasBin: true
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- colord@2.9.3:
- resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- copy-anything@2.0.6:
- resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
-
- cosmiconfig@9.0.0:
- resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
- engines: {node: '>=14'}
- peerDependencies:
- typescript: '>=4.9.5'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- css-functions-list@3.2.3:
- resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==}
- engines: {node: '>=12 || >=16'}
-
- css-tree@2.3.1:
- resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
-
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
- data-view-buffer@1.0.2:
- resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-length@1.0.2:
- resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-offset@1.0.1:
- resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
- engines: {node: '>= 0.4'}
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-equal@2.2.3:
- resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
- engines: {node: '>= 0.4'}
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
-
- defined@1.0.1:
- resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
-
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
- doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
-
- dotignore@0.1.2:
- resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==}
- hasBin: true
-
- dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
-
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
- env-paths@2.2.1:
- resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
- engines: {node: '>=6'}
-
- errno@0.1.8:
- resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
- hasBin: true
-
- error-ex@1.3.4:
- resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
-
- es-abstract@1.24.0:
- resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
- engines: {node: '>= 0.4'}
-
- es-define-property@1.0.1:
- resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-get-iterator@1.1.3:
- resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
-
- es-object-atoms@1.1.1:
- resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.1.0:
- resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
- engines: {node: '>= 0.4'}
-
- es-to-primitive@1.3.0:
- resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
- engines: {node: '>= 0.4'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint@8.56.0:
- resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
- hasBin: true
-
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- esquery@1.6.0:
- resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-glob@3.3.3:
- resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
- engines: {node: '>=8.6.0'}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
- fast-uri@3.1.0:
- resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
-
- fastest-levenshtein@1.0.16:
- resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
- engines: {node: '>= 4.9.1'}
-
- fastq@1.19.1:
- resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
-
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
- file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
-
- flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
-
- for-each@0.3.5:
- resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
- engines: {node: '>= 0.4'}
-
- fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- function.prototype.name@1.1.8:
- resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
- engines: {node: '>= 0.4'}
-
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
- generator-function@2.0.1:
- resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
- engines: {node: '>= 0.4'}
-
- get-intrinsic@1.3.0:
- resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
- engines: {node: '>= 0.4'}
-
- get-package-type@0.1.0:
- resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
- engines: {node: '>=8.0.0'}
-
- get-proto@1.0.1:
- resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
- engines: {node: '>= 0.4'}
-
- get-symbol-description@1.1.0:
- resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
- engines: {node: '>= 0.4'}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
-
- global-modules@2.0.0:
- resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
- engines: {node: '>=6'}
-
- global-prefix@3.0.0:
- resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
- engines: {node: '>=6'}
-
- globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
-
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
- globjoin@0.1.4:
- resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
-
- gopd@1.2.0:
- resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
- engines: {node: '>= 0.4'}
-
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
- has-bigints@1.1.0:
- resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
- engines: {node: '>= 0.4'}
-
- has-dynamic-import@2.1.1:
- resolution: {integrity: sha512-DuTCn6K/RW8S27npDMumGKsjG6HE7MxzedZka5tJP+9dqfxks+UMqKBmeCijHtIhsBEZPlbMg0qMHi2nKYVtKQ==}
- engines: {node: '>= 0.4'}
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.2.0:
- resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.1.0:
- resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- html-tags@3.3.1:
- resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
- engines: {node: '>=8'}
-
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- image-size@0.5.5:
- resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
- engines: {node: '>=0.10.0'}
- hasBin: true
-
- import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- ini@1.3.8:
- resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
-
- internal-slot@1.1.0:
- resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
- engines: {node: '>= 0.4'}
-
- is-arguments@1.2.0:
- resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
- engines: {node: '>= 0.4'}
-
- is-array-buffer@3.0.5:
- resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
- engines: {node: '>= 0.4'}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-async-function@2.1.1:
- resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
- engines: {node: '>= 0.4'}
-
- is-bigint@1.1.0:
- resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
- engines: {node: '>= 0.4'}
-
- is-boolean-object@1.2.2:
- resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
- engines: {node: '>= 0.4'}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
- is-core-module@2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
- engines: {node: '>= 0.4'}
-
- is-data-view@1.0.2:
- resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.1.0:
- resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
- engines: {node: '>= 0.4'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-finalizationregistry@1.1.1:
- resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
- engines: {node: '>= 0.4'}
-
- is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-generator-function@1.1.2:
- resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
- engines: {node: '>= 0.4'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
-
- is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.1.1:
- resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
- engines: {node: '>= 0.4'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-plain-object@5.0.0:
- resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
- engines: {node: '>=0.10.0'}
-
- is-regex@1.2.1:
- resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
- engines: {node: '>= 0.4'}
-
- is-set@2.0.3:
- resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
- engines: {node: '>= 0.4'}
-
- is-shared-array-buffer@1.0.4:
- resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
- engines: {node: '>= 0.4'}
-
- is-string@1.1.1:
- resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
- engines: {node: '>= 0.4'}
-
- is-symbol@1.1.1:
- resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.15:
- resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
- engines: {node: '>= 0.4'}
-
- is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
-
- is-weakref@1.1.1:
- resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
- engines: {node: '>= 0.4'}
-
- is-weakset@2.0.4:
- resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
- engines: {node: '>= 0.4'}
-
- is-what@3.14.1:
- resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
-
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-yaml@4.1.1:
- resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-schema-traverse@1.0.0:
- resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
-
- known-css-properties@0.29.0:
- resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==}
-
- less@4.2.0:
- resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==}
- engines: {node: '>=6'}
- hasBin: true
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lilconfig@3.1.3:
- resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
- engines: {node: '>=14'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- lodash.truncate@4.4.2:
- resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
-
- make-dir@2.1.0:
- resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
- engines: {node: '>=6'}
-
- math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
-
- mathml-tag-names@2.1.3:
- resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
-
- mdn-data@2.0.30:
- resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
-
- meow@13.2.0:
- resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
- engines: {node: '>=18'}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- mime@1.6.0:
- resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
- engines: {node: '>=4'}
- hasBin: true
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
- mock-property@1.1.0:
- resolution: {integrity: sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ==}
- engines: {node: '>= 0.4'}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- needle@3.3.1:
- resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
- engines: {node: '>= 4.4.x'}
- hasBin: true
-
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
- object-inspect@1.13.4:
- resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
- engines: {node: '>= 0.4'}
-
- object-is@1.1.6:
- resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
- engines: {node: '>= 0.4'}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.7:
- resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
- engines: {node: '>= 0.4'}
-
- once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
-
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- own-keys@1.0.1:
- resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
- engines: {node: '>= 0.4'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
- parse-node-version@1.0.1:
- resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
- engines: {node: '>= 0.10'}
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pify@4.0.1:
- resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
- engines: {node: '>=6'}
-
- possible-typed-array-names@1.1.0:
- resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
- engines: {node: '>= 0.4'}
-
- postcss-resolve-nested-selector@0.1.6:
- resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==}
-
- postcss-safe-parser@7.0.1:
- resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==}
- engines: {node: '>=18.0'}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prr@1.0.1:
- resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- reflect.getprototypeof@1.0.10:
- resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
- engines: {node: '>= 0.4'}
-
- regexp.prototype.flags@1.5.4:
- resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
- engines: {node: '>= 0.4'}
-
- require-from-string@2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
-
- resolve@2.0.0-next.5:
- resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
- hasBin: true
-
- reusify@1.1.0:
- resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- deprecated: Rimraf versions prior to v4 are no longer supported
- hasBin: true
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
- engines: {node: '>=0.4'}
-
- safe-push-apply@1.0.0:
- resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
- engines: {node: '>= 0.4'}
-
- safe-regex-test@1.1.0:
- resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
- engines: {node: '>= 0.4'}
-
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- sax@1.4.3:
- resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==}
-
- semver@5.7.2:
- resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
- hasBin: true
-
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
- set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
-
- set-proto@1.0.0:
- resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
- engines: {node: '>= 0.4'}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- side-channel-list@1.0.0:
- resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
- engines: {node: '>= 0.4'}
-
- side-channel-map@1.0.1:
- resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
- engines: {node: '>= 0.4'}
-
- side-channel-weakmap@1.0.2:
- resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
- engines: {node: '>= 0.4'}
-
- side-channel@1.1.0:
- resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
- engines: {node: '>= 0.4'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
- slice-ansi@4.0.0:
- resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
- engines: {node: '>=10'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.7.4:
- resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
- engines: {node: '>= 8'}
-
- stop-iteration-iterator@1.1.0:
- resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
- engines: {node: '>= 0.4'}
-
- string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
-
- string.prototype.trim@1.2.10:
- resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.9:
- resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.2:
- resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
- engines: {node: '>=12'}
-
- strip-color@0.1.0:
- resolution: {integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==}
- engines: {node: '>=0.10.0'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- stylelint@16.1.0:
- resolution: {integrity: sha512-Sh1rRV0lN1qxz/QsuuooLWsIZ/ona7NKw/fRZd6y6PyXYdD2W0EAzJ8yJcwSx4Iw/muz0CF09VZ+z4EiTAcKmg==}
- engines: {node: '>=18.12.0'}
- hasBin: true
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- supports-hyperlinks@3.2.0:
- resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==}
- engines: {node: '>=14.18'}
-
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
- svg-tags@1.0.0:
- resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
-
- table@6.9.0:
- resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
- engines: {node: '>=10.0.0'}
-
- tape@5.9.0:
- resolution: {integrity: sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA==}
- hasBin: true
-
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
- typed-array-buffer@1.0.3:
- resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-length@1.0.3:
- resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-offset@1.0.4:
- resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.7:
- resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
- engines: {node: '>= 0.4'}
-
- unbox-primitive@1.1.0:
- resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
- engines: {node: '>= 0.4'}
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
- which-boxed-primitive@1.1.1:
- resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
- engines: {node: '>= 0.4'}
-
- which-builtin-type@1.2.1:
- resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
- engines: {node: '>= 0.4'}
-
- which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
-
- which-typed-array@1.1.19:
- resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
- engines: {node: '>= 0.4'}
-
- which@1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
- wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-
- write-file-atomic@5.0.1:
- resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
-snapshots:
-
- '@babel/code-frame@7.27.1':
- dependencies:
- '@babel/helper-validator-identifier': 7.28.5
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/helper-validator-identifier@7.28.5': {}
-
- '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)':
- dependencies:
- '@csstools/css-tokenizer': 2.4.1
-
- '@csstools/css-tokenizer@2.4.1': {}
-
- '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)':
- dependencies:
- '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
- '@csstools/css-tokenizer': 2.4.1
-
- '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.2)':
- dependencies:
- postcss-selector-parser: 6.1.2
-
- '@eslint-community/eslint-utils@4.9.0(eslint@8.56.0)':
- dependencies:
- eslint: 8.56.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.2': {}
-
- '@eslint/eslintrc@2.1.4':
- dependencies:
- ajv: 6.12.6
- debug: 4.4.3
- espree: 9.6.1
- globals: 13.24.0
- ignore: 5.3.2
- import-fresh: 3.3.1
- js-yaml: 4.1.1
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@8.56.0': {}
-
- '@humanwhocodes/config-array@0.11.14':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.4.3
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/object-schema@2.0.3': {}
-
- '@ljharb/resumer@0.1.3':
- dependencies:
- '@ljharb/through': 2.3.14
- call-bind: 1.0.8
-
- '@ljharb/through@2.3.14':
- dependencies:
- call-bind: 1.0.8
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.19.1
-
- '@ungap/structured-clone@1.3.0': {}
-
- acorn-jsx@5.3.2(acorn@8.15.0):
- dependencies:
- acorn: 8.15.0
-
- acorn@8.15.0: {}
-
- ajv@6.12.6:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- ajv@8.17.1:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-uri: 3.1.0
- json-schema-traverse: 1.0.0
- require-from-string: 2.0.2
-
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.2.2: {}
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- argparse@2.0.1: {}
-
- array-buffer-byte-length@1.0.2:
- dependencies:
- call-bound: 1.0.4
- is-array-buffer: 3.0.5
-
- array-union@2.1.0: {}
-
- array.prototype.every@1.1.7:
- dependencies:
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-object-atoms: 1.1.1
- is-string: 1.1.1
-
- arraybuffer.prototype.slice@1.0.4:
- dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- is-array-buffer: 3.0.5
-
- astral-regex@2.0.0: {}
-
- async-function@1.0.0: {}
-
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.1.0
-
- balanced-match@1.0.2: {}
-
- balanced-match@2.0.0: {}
-
- brace-expansion@1.1.12:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- call-bind-apply-helpers@1.0.2:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
-
- call-bind@1.0.8:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- get-intrinsic: 1.3.0
- set-function-length: 1.2.2
-
- call-bound@1.0.4:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- get-intrinsic: 1.3.0
-
- callsites@3.1.0: {}
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- clean-publish@4.4.0:
- dependencies:
- cross-spawn: 7.0.6
- fast-glob: 3.3.3
- lilconfig: 3.1.3
- micromatch: 4.0.8
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.4: {}
-
- colord@2.9.3: {}
-
- concat-map@0.0.1: {}
-
- copy-anything@2.0.6:
- dependencies:
- is-what: 3.14.1
-
- cosmiconfig@9.0.0:
- dependencies:
- env-paths: 2.2.1
- import-fresh: 3.3.1
- js-yaml: 4.1.1
- parse-json: 5.2.0
-
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- css-functions-list@3.2.3: {}
-
- css-tree@2.3.1:
- dependencies:
- mdn-data: 2.0.30
- source-map-js: 1.2.1
-
- cssesc@3.0.0: {}
-
- data-view-buffer@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- data-view-byte-length@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- data-view-byte-offset@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- debug@4.4.3:
- dependencies:
- ms: 2.1.3
-
- deep-equal@2.2.3:
- dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- es-get-iterator: 1.1.3
- get-intrinsic: 1.3.0
- is-arguments: 1.2.0
- is-array-buffer: 3.0.5
- is-date-object: 1.1.0
- is-regex: 1.2.1
- is-shared-array-buffer: 1.0.4
- isarray: 2.0.5
- object-is: 1.1.6
- object-keys: 1.1.1
- object.assign: 4.1.7
- regexp.prototype.flags: 1.5.4
- side-channel: 1.1.0
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.19
-
- deep-is@0.1.4: {}
-
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.1
- es-errors: 1.3.0
- gopd: 1.2.0
-
- define-properties@1.2.1:
- dependencies:
- define-data-property: 1.1.4
- has-property-descriptors: 1.0.2
- object-keys: 1.1.1
-
- defined@1.0.1: {}
-
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
- doctrine@3.0.0:
- dependencies:
- esutils: 2.0.3
-
- dotignore@0.1.2:
- dependencies:
- minimatch: 3.1.2
-
- dunder-proto@1.0.1:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-errors: 1.3.0
- gopd: 1.2.0
-
- emoji-regex@8.0.0: {}
-
- env-paths@2.2.1: {}
-
- errno@0.1.8:
- dependencies:
- prr: 1.0.1
- optional: true
-
- error-ex@1.3.4:
- dependencies:
- is-arrayish: 0.2.1
-
- es-abstract@1.24.0:
- dependencies:
- array-buffer-byte-length: 1.0.2
- arraybuffer.prototype.slice: 1.0.4
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- data-view-buffer: 1.0.2
- data-view-byte-length: 1.0.2
- data-view-byte-offset: 1.0.1
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-set-tostringtag: 2.1.0
- es-to-primitive: 1.3.0
- function.prototype.name: 1.1.8
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- get-symbol-description: 1.1.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- internal-slot: 1.1.0
- is-array-buffer: 3.0.5
- is-callable: 1.2.7
- is-data-view: 1.0.2
- is-negative-zero: 2.0.3
- is-regex: 1.2.1
- is-set: 2.0.3
- is-shared-array-buffer: 1.0.4
- is-string: 1.1.1
- is-typed-array: 1.1.15
- is-weakref: 1.1.1
- math-intrinsics: 1.1.0
- object-inspect: 1.13.4
- object-keys: 1.1.1
- object.assign: 4.1.7
- own-keys: 1.0.1
- regexp.prototype.flags: 1.5.4
- safe-array-concat: 1.1.3
- safe-push-apply: 1.0.0
- safe-regex-test: 1.1.0
- set-proto: 1.0.0
- stop-iteration-iterator: 1.1.0
- string.prototype.trim: 1.2.10
- string.prototype.trimend: 1.0.9
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.3
- typed-array-byte-length: 1.0.3
- typed-array-byte-offset: 1.0.4
- typed-array-length: 1.0.7
- unbox-primitive: 1.1.0
- which-typed-array: 1.1.19
-
- es-define-property@1.0.1: {}
-
- es-errors@1.3.0: {}
-
- es-get-iterator@1.1.3:
- dependencies:
- call-bind: 1.0.8
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- is-arguments: 1.2.0
- is-map: 2.0.3
- is-set: 2.0.3
- is-string: 1.1.1
- isarray: 2.0.5
- stop-iteration-iterator: 1.1.0
-
- es-object-atoms@1.1.1:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.1.0:
- dependencies:
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- es-to-primitive@1.3.0:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.1.0
- is-symbol: 1.1.1
-
- escape-string-regexp@4.0.0: {}
-
- eslint-scope@7.2.2:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint@8.56.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.56.0)
- '@eslint-community/regexpp': 4.12.2
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.56.0
- '@humanwhocodes/config-array': 0.11.14
- '@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.3.0
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.3
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
- esquery: 1.6.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.1
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.4
- strip-ansi: 6.0.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
-
- espree@9.6.1:
- dependencies:
- acorn: 8.15.0
- acorn-jsx: 5.3.2(acorn@8.15.0)
- eslint-visitor-keys: 3.4.3
-
- esquery@1.6.0:
- dependencies:
- estraverse: 5.3.0
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@5.3.0: {}
-
- esutils@2.0.3: {}
-
- fast-deep-equal@3.1.3: {}
-
- fast-glob@3.3.3:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-levenshtein@2.0.6: {}
-
- fast-uri@3.1.0: {}
-
- fastest-levenshtein@1.0.16: {}
-
- fastq@1.19.1:
- dependencies:
- reusify: 1.1.0
-
- file-entry-cache@6.0.1:
- dependencies:
- flat-cache: 3.2.0
-
- file-entry-cache@8.0.0:
- dependencies:
- flat-cache: 4.0.1
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- flat-cache@3.2.0:
- dependencies:
- flatted: 3.3.3
- keyv: 4.5.4
- rimraf: 3.0.2
-
- flat-cache@4.0.1:
- dependencies:
- flatted: 3.3.3
- keyv: 4.5.4
-
- flatted@3.3.3: {}
-
- for-each@0.3.5:
- dependencies:
- is-callable: 1.2.7
-
- fs.realpath@1.0.0: {}
-
- function-bind@1.1.2: {}
-
- function.prototype.name@1.1.8:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- functions-have-names: 1.2.3
- hasown: 2.0.2
- is-callable: 1.2.7
-
- functions-have-names@1.2.3: {}
-
- generator-function@2.0.1: {}
-
- get-intrinsic@1.3.0:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- function-bind: 1.1.2
- get-proto: 1.0.1
- gopd: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- math-intrinsics: 1.1.0
-
- get-package-type@0.1.0: {}
-
- get-proto@1.0.1:
- dependencies:
- dunder-proto: 1.0.1
- es-object-atoms: 1.1.1
-
- get-symbol-description@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- glob@7.2.3:
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
-
- global-modules@2.0.0:
- dependencies:
- global-prefix: 3.0.0
-
- global-prefix@3.0.0:
- dependencies:
- ini: 1.3.8
- kind-of: 6.0.3
- which: 1.3.1
-
- globals@13.24.0:
- dependencies:
- type-fest: 0.20.2
-
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.2.0
-
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.3
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
- globjoin@0.1.4: {}
-
- gopd@1.2.0: {}
-
- graceful-fs@4.2.11:
- optional: true
-
- graphemer@1.4.0: {}
-
- has-bigints@1.1.0: {}
-
- has-dynamic-import@2.1.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- has-flag@4.0.0: {}
-
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.1
-
- has-proto@1.2.0:
- dependencies:
- dunder-proto: 1.0.1
-
- has-symbols@1.1.0: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.1.0
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- html-tags@3.3.1: {}
-
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
- optional: true
-
- ignore@5.3.2: {}
-
- image-size@0.5.5:
- optional: true
-
- import-fresh@3.3.1:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- imurmurhash@0.1.4: {}
-
- inflight@1.0.6:
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
-
- inherits@2.0.4: {}
-
- ini@1.3.8: {}
-
- internal-slot@1.1.0:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.1.0
-
- is-arguments@1.2.0:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-array-buffer@3.0.5:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- is-arrayish@0.2.1: {}
-
- is-async-function@2.1.1:
- dependencies:
- async-function: 1.0.0
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
-
- is-bigint@1.1.0:
- dependencies:
- has-bigints: 1.1.0
-
- is-boolean-object@1.2.2:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-callable@1.2.7: {}
-
- is-core-module@2.16.1:
- dependencies:
- hasown: 2.0.2
-
- is-data-view@1.0.2:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- is-typed-array: 1.1.15
-
- is-date-object@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-extglob@2.1.1: {}
-
- is-finalizationregistry@1.1.1:
- dependencies:
- call-bound: 1.0.4
-
- is-fullwidth-code-point@3.0.0: {}
-
- is-generator-function@1.1.2:
- dependencies:
- call-bound: 1.0.4
- generator-function: 2.0.1
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-map@2.0.3: {}
-
- is-negative-zero@2.0.3: {}
-
- is-number-object@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-number@7.0.0: {}
-
- is-path-inside@3.0.3: {}
-
- is-plain-object@5.0.0: {}
-
- is-regex@1.2.1:
- dependencies:
- call-bound: 1.0.4
- gopd: 1.2.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- is-set@2.0.3: {}
-
- is-shared-array-buffer@1.0.4:
- dependencies:
- call-bound: 1.0.4
-
- is-string@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-symbol@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-symbols: 1.1.0
- safe-regex-test: 1.1.0
-
- is-typed-array@1.1.15:
- dependencies:
- which-typed-array: 1.1.19
-
- is-weakmap@2.0.2: {}
-
- is-weakref@1.1.1:
- dependencies:
- call-bound: 1.0.4
-
- is-weakset@2.0.4:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- is-what@3.14.1: {}
-
- isarray@2.0.5: {}
-
- isexe@2.0.0: {}
-
- js-tokens@4.0.0: {}
-
- js-yaml@4.1.1:
- dependencies:
- argparse: 2.0.1
-
- json-buffer@3.0.1: {}
-
- json-parse-even-better-errors@2.3.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-schema-traverse@1.0.0: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- kind-of@6.0.3: {}
-
- known-css-properties@0.29.0: {}
-
- less@4.2.0:
- dependencies:
- copy-anything: 2.0.6
- parse-node-version: 1.0.1
- tslib: 2.8.1
- optionalDependencies:
- errno: 0.1.8
- graceful-fs: 4.2.11
- image-size: 0.5.5
- make-dir: 2.1.0
- mime: 1.6.0
- needle: 3.3.1
- source-map: 0.6.1
-
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
- lilconfig@3.1.3: {}
-
- lines-and-columns@1.2.4: {}
-
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
- lodash.merge@4.6.2: {}
-
- lodash.truncate@4.4.2: {}
-
- make-dir@2.1.0:
- dependencies:
- pify: 4.0.1
- semver: 5.7.2
- optional: true
-
- math-intrinsics@1.1.0: {}
-
- mathml-tag-names@2.1.3: {}
-
- mdn-data@2.0.30: {}
-
- meow@13.2.0: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mime@1.6.0:
- optional: true
-
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.12
-
- minimist@1.2.8: {}
-
- mock-property@1.1.0:
- dependencies:
- define-data-property: 1.1.4
- functions-have-names: 1.2.3
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- hasown: 2.0.2
- isarray: 2.0.5
- object-inspect: 1.13.4
-
- ms@2.1.3: {}
-
- nanoid@3.3.11: {}
-
- natural-compare@1.4.0: {}
-
- needle@3.3.1:
- dependencies:
- iconv-lite: 0.6.3
- sax: 1.4.3
- optional: true
-
- normalize-path@3.0.0: {}
-
- object-inspect@1.13.4: {}
-
- object-is@1.1.6:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
-
- object-keys@1.1.1: {}
-
- object.assign@4.1.7:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
- has-symbols: 1.1.0
- object-keys: 1.1.1
-
- once@1.4.0:
- dependencies:
- wrappy: 1.0.2
-
- optionator@0.9.4:
- dependencies:
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
- word-wrap: 1.2.5
-
- own-keys@1.0.1:
- dependencies:
- get-intrinsic: 1.3.0
- object-keys: 1.1.1
- safe-push-apply: 1.0.0
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- parse-json@5.2.0:
- dependencies:
- '@babel/code-frame': 7.27.1
- error-ex: 1.3.4
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
-
- parse-node-version@1.0.1: {}
-
- path-exists@4.0.0: {}
-
- path-is-absolute@1.0.1: {}
-
- path-key@3.1.1: {}
-
- path-parse@1.0.7: {}
-
- path-type@4.0.0: {}
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
-
- pify@4.0.1:
- optional: true
-
- possible-typed-array-names@1.1.0: {}
-
- postcss-resolve-nested-selector@0.1.6: {}
-
- postcss-safe-parser@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-selector-parser@6.1.2:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-value-parser@4.2.0: {}
-
- postcss@8.5.6:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- prelude-ls@1.2.1: {}
-
- prr@1.0.1:
- optional: true
-
- punycode@2.3.1: {}
-
- queue-microtask@1.2.3: {}
-
- reflect.getprototypeof@1.0.10:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- which-builtin-type: 1.2.1
-
- regexp.prototype.flags@1.5.4:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-errors: 1.3.0
- get-proto: 1.0.1
- gopd: 1.2.0
- set-function-name: 2.0.2
-
- require-from-string@2.0.2: {}
-
- resolve-from@4.0.0: {}
-
- resolve-from@5.0.0: {}
-
- resolve@2.0.0-next.5:
- dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- reusify@1.1.0: {}
-
- rimraf@3.0.2:
- dependencies:
- glob: 7.2.3
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- safe-array-concat@1.1.3:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- isarray: 2.0.5
-
- safe-push-apply@1.0.0:
- dependencies:
- es-errors: 1.3.0
- isarray: 2.0.5
-
- safe-regex-test@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-regex: 1.2.1
-
- safer-buffer@2.1.2:
- optional: true
-
- sax@1.4.3:
- optional: true
-
- semver@5.7.2:
- optional: true
-
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
-
- set-function-name@2.0.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
-
- set-proto@1.0.0:
- dependencies:
- dunder-proto: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- side-channel-list@1.0.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-map@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-weakmap@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
- side-channel-map: 1.0.1
-
- side-channel@1.1.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
- side-channel-list: 1.0.0
- side-channel-map: 1.0.1
- side-channel-weakmap: 1.0.2
-
- signal-exit@4.1.0: {}
-
- slash@3.0.0: {}
-
- slice-ansi@4.0.0:
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
-
- source-map-js@1.2.1: {}
-
- source-map@0.6.1:
- optional: true
-
- source-map@0.7.4: {}
-
- stop-iteration-iterator@1.1.0:
- dependencies:
- es-errors: 1.3.0
- internal-slot: 1.1.0
-
- string-width@4.2.3:
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
-
- string.prototype.trim@1.2.10:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-data-property: 1.1.4
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-object-atoms: 1.1.1
- has-property-descriptors: 1.0.2
-
- string.prototype.trimend@1.0.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- strip-ansi@6.0.1:
- dependencies:
- ansi-regex: 5.0.1
-
- strip-ansi@7.1.2:
- dependencies:
- ansi-regex: 6.2.2
-
- strip-color@0.1.0: {}
-
- strip-json-comments@3.1.1: {}
-
- stylelint@16.1.0:
- dependencies:
- '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
- '@csstools/css-tokenizer': 2.4.1
- '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
- '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2)
- balanced-match: 2.0.0
- colord: 2.9.3
- cosmiconfig: 9.0.0
- css-functions-list: 3.2.3
- css-tree: 2.3.1
- debug: 4.4.3
- fast-glob: 3.3.3
- fastest-levenshtein: 1.0.16
- file-entry-cache: 8.0.0
- global-modules: 2.0.0
- globby: 11.1.0
- globjoin: 0.1.4
- html-tags: 3.3.1
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-plain-object: 5.0.0
- known-css-properties: 0.29.0
- mathml-tag-names: 2.1.3
- meow: 13.2.0
- micromatch: 4.0.8
- normalize-path: 3.0.0
- picocolors: 1.1.1
- postcss: 8.5.6
- postcss-resolve-nested-selector: 0.1.6
- postcss-safe-parser: 7.0.1(postcss@8.5.6)
- postcss-selector-parser: 6.1.2
- postcss-value-parser: 4.2.0
- resolve-from: 5.0.0
- string-width: 4.2.3
- strip-ansi: 7.1.2
- supports-hyperlinks: 3.2.0
- svg-tags: 1.0.0
- table: 6.9.0
- write-file-atomic: 5.0.1
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- supports-hyperlinks@3.2.0:
- dependencies:
- has-flag: 4.0.0
- supports-color: 7.2.0
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
- svg-tags@1.0.0: {}
-
- table@6.9.0:
- dependencies:
- ajv: 8.17.1
- lodash.truncate: 4.4.2
- slice-ansi: 4.0.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
- tape@5.9.0:
- dependencies:
- '@ljharb/resumer': 0.1.3
- '@ljharb/through': 2.3.14
- array.prototype.every: 1.1.7
- call-bind: 1.0.8
- deep-equal: 2.2.3
- defined: 1.0.1
- dotignore: 0.1.2
- for-each: 0.3.5
- get-package-type: 0.1.0
- glob: 7.2.3
- has-dynamic-import: 2.1.1
- hasown: 2.0.2
- inherits: 2.0.4
- is-regex: 1.2.1
- minimist: 1.2.8
- mock-property: 1.1.0
- object-inspect: 1.13.4
- object-is: 1.1.6
- object-keys: 1.1.1
- object.assign: 4.1.7
- resolve: 2.0.0-next.5
- string.prototype.trim: 1.2.10
-
- text-table@0.2.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- tslib@2.8.1: {}
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- type-fest@0.20.2: {}
-
- typed-array-buffer@1.0.3:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-typed-array: 1.1.15
-
- typed-array-byte-length@1.0.3:
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
-
- typed-array-byte-offset@1.0.4:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
- reflect.getprototypeof: 1.0.10
-
- typed-array-length@1.0.7:
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- is-typed-array: 1.1.15
- possible-typed-array-names: 1.1.0
- reflect.getprototypeof: 1.0.10
-
- unbox-primitive@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-bigints: 1.1.0
- has-symbols: 1.1.0
- which-boxed-primitive: 1.1.1
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- util-deprecate@1.0.2: {}
-
- which-boxed-primitive@1.1.1:
- dependencies:
- is-bigint: 1.1.0
- is-boolean-object: 1.2.2
- is-number-object: 1.1.1
- is-string: 1.1.1
- is-symbol: 1.1.1
-
- which-builtin-type@1.2.1:
- dependencies:
- call-bound: 1.0.4
- function.prototype.name: 1.1.8
- has-tostringtag: 1.0.2
- is-async-function: 2.1.1
- is-date-object: 1.1.0
- is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.2
- is-regex: 1.2.1
- is-weakref: 1.1.1
- isarray: 2.0.5
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.19
-
- which-collection@1.0.2:
- dependencies:
- is-map: 2.0.3
- is-set: 2.0.3
- is-weakmap: 2.0.2
- is-weakset: 2.0.4
-
- which-typed-array@1.1.19:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- for-each: 0.3.5
- get-proto: 1.0.1
- gopd: 1.2.0
- has-tostringtag: 1.0.2
-
- which@1.3.1:
- dependencies:
- isexe: 2.0.0
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- word-wrap@1.2.5: {}
-
- wrappy@1.0.2: {}
-
- write-file-atomic@5.0.1:
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 4.1.0
-
- yocto-queue@0.1.0: {}
diff --git a/scripts/visual.js b/scripts/visual.js
new file mode 100644
index 0000000..35e2d02
--- /dev/null
+++ b/scripts/visual.js
@@ -0,0 +1,62 @@
+"use strict";
+
+// Not a test: run `npm run visual` and look at the output to check how the
+// default formatter renders in a real terminal.
+
+const postcss = require("postcss");
+const sourceMap = require("source-map");
+const reporter = require("..");
+
+const css = [
+ ".baz {",
+ " top:0px;",
+ "}",
+ ".foo {",
+ " background: orange;",
+ "}",
+ ".bar {",
+ " color:pink;",
+ "}",
+].join("\n");
+
+// A fake linter, only here to produce a few messages to look at.
+const fakeLinter = () => ({
+ postcssPlugin: "fake-linter",
+ Once(css, { result }) {
+ result.warn("This message has no position");
+
+ css.walkDecls((decl) => {
+ if (decl.raws.between !== ": ") {
+ result.warn("Expected a single space after the colon", { node: decl });
+ }
+ if (/^0\D/.test(decl.value)) {
+ result.warn("Unexpected unit on a zero length", { node: decl });
+ }
+ });
+ },
+});
+fakeLinter.postcss = true;
+
+// Maps the `top` declaration back to another file, to exercise the position
+// remapping done by the formatter.
+function createSourceMap() {
+ const map = new sourceMap.SourceMapGenerator({ file: "visual.css" });
+ map.addMapping({
+ generated: { line: 2, column: 2 },
+ source: "visual.original.css",
+ original: { line: 102, column: 106 },
+ });
+ return map.toString();
+}
+
+postcss([fakeLinter(), reporter()])
+ .process(css, {
+ from: "scripts/visual.css",
+ map: { prev: createSourceMap() },
+ })
+ .then(() => {
+ console.log("There's your visual confirmation that it works.");
+ })
+ .catch((error) => {
+ console.log(error.stack);
+ });
diff --git a/test/fixtures/forVisual.css b/test/fixtures/forVisual.css
deleted file mode 100644
index e778dab..0000000
--- a/test/fixtures/forVisual.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.baz {
- top:0px;
-}
-.foo {
- background: orange;
-}
-.bar {
- color:pink;
-}
diff --git a/test/fixtures/less-bar.less b/test/fixtures/less-bar.less
deleted file mode 100644
index 1fc7a25..0000000
--- a/test/fixtures/less-bar.less
+++ /dev/null
@@ -1,5 +0,0 @@
-@import './less-foo';
-
-.baz {
- background: orange;
-}
diff --git a/test/fixtures/less-foo.less b/test/fixtures/less-foo.less
deleted file mode 100644
index 6417e7d..0000000
--- a/test/fixtures/less-foo.less
+++ /dev/null
@@ -1,7 +0,0 @@
-a {
- color: pink;
-}
-
-#wahoo {
- font-size: 10rem;
-}
diff --git a/test/formatter.js b/test/formatter.js
deleted file mode 100644
index 2282401..0000000
--- a/test/formatter.js
+++ /dev/null
@@ -1,284 +0,0 @@
-var test = require('tape');
-var formatter = require('../lib/formatter');
-var path = require('path');
-var sourceMap = require('source-map');
-var postcss = require('postcss');
-var stripColor = require('strip-color');
-
-var defaultFormatter = formatter();
-
-var colorlessWarning = '⚠';
-var colorlessError = '✖';
-
-var basicMessages = [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- },
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- },
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- },
- {
- type: 'error',
- plugin: 'baz',
- text: 'baz error',
- },
-];
-
-var basicOutput = '\n' +
- '\n' + colorlessWarning + ' foo warning [foo]' +
- '\n' + colorlessWarning + ' bar warning [bar]' +
- '\n' + colorlessWarning + ' baz warning [baz]' +
- '\n' + colorlessError + ' baz error [baz]' +
- '\n';
-
-var basicOutputMinimal = '\n' +
- '\nfoo warning' +
- '\nbar warning' +
- '\nbaz warning' +
- '\nbaz error' +
- '\n';
-
-test('defaultFormatter with simple mock messages', function(t) {
- t.equal(
- stripColor(defaultFormatter({
- messages: basicMessages,
- source: '',
- })),
- basicOutput,
- 'basic'
- );
-
- t.end();
-});
-
-test('defaultFormatter with noIcon and noPlugin and simple mock messages', function(t) {
- var minimalFormatter = formatter({
- noIcon: true,
- noPlugin: true,
- });
-
- t.equal(
- stripColor(minimalFormatter({
- messages: basicMessages,
- source: '',
- })),
- basicOutputMinimal,
- 'basic'
- );
-
- t.end();
-});
-
-var complexMessages = [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- line: 3,
- column: 5,
- }, {
- type: 'error',
- plugin: 'baz',
- text: 'baz error',
- }, {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- line: 1,
- column: 99,
- }, {
- type: 'warning',
- plugin: 'foo',
- text: 'ha warning',
- line: 8,
- column: 13,
- },
-];
-
-var complexOutput = '\nstyle/rainbows/horses.css' +
- '\n' + colorlessError + ' baz error [baz]' +
- '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
- '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
- '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
- '\n';
-
-var noPositionSortOutput = '\nstyle/rainbows/horses.css' +
- '\n' + colorlessError + ' baz error [baz]' +
- '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
- '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
- '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
- '\n';
-
-var positionlessLastOutput = '\nstyle/rainbows/horses.css' +
- '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
- '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
- '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
- '\n' + colorlessError + ' baz error [baz]' +
- '\n';
-
-var noSortOutput = '\nstyle/rainbows/horses.css' +
- '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
- '\n' + colorlessError + ' baz error [baz]' +
- '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
- '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
- '\n';
-
-test('defaultFormatter with complex mock', function(t) {
- t.equal(
- stripColor(defaultFormatter({
- messages: complexMessages,
- source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
- })),
- complexOutput,
- 'complex'
- );
-
- var noPositionSortFormatter = formatter({ sortByPosition: false });
-
- t.equal(
- stripColor(noPositionSortFormatter({
- messages: complexMessages,
- source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
- })),
- noPositionSortOutput,
- '`sortByPosition: false` complex'
- );
-
- var positionlessLastFormatter = formatter({ positionless: 'last' });
- t.equal(
- stripColor(positionlessLastFormatter({
- messages: complexMessages,
- source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
- })),
- positionlessLastOutput,
- '`positionless: last` complex'
- );
-
- var noSortFormatter = formatter({ sortByPosition: false, positionless: 'any' });
- t.equal(
- stripColor(noSortFormatter({
- messages: complexMessages,
- source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
- })),
- noSortOutput,
- 'unsorted complex'
- );
-
- t.end();
-});
-
-var onRootMessages = [
- {
- type: 'warning',
- text: 'blergh',
- node: {
- type: 'root',
- // warnings on root do not have start position
- source: {},
- },
- plugin: 'reject-root',
- },
-];
-
-var onRootResult = '\n' +
- '\n' + colorlessWarning + ' blergh [reject-root]\n';
-
-test('defaultFormatter with mocked warning on root', function(t) {
- t.equal(
- stripColor(defaultFormatter({
- messages: onRootMessages,
- source: '',
- })),
- onRootResult
- );
- t.end();
-});
-
-var oneMessage = [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- },
-];
-
-var oneMessageResult = '\n' + colorlessWarning + ' foo warning [foo]\n';
-
-test('defaultFormatter with undefined source', function(t) {
- t.equal(
- stripColor(defaultFormatter({
- messages: oneMessage,
- source: undefined,
- })),
- oneMessageResult
- );
- t.end();
-});
-
-test('defaultFormatter with no messages', function(t) {
- t.equal(
- stripColor(defaultFormatter({ messages: [] })),
- ''
- );
- t.end();
-});
-
-test('defaultFormatter with real sourcemaps', function(t) {
- var map = new sourceMap.SourceMapGenerator({ file: 'file.css' });
- map.addMapping({
- generated: { line: 2, column: 7 },
- source: 'file.original.css',
- original: { line: 102, column: 107 },
- });
-
- console.log(map instanceof sourceMap.SourceMapGenerator)
-
- var root = postcss.parse('.button { color: red; }', {
- from: 'file.css',
- map: { prev: map.toString() },
- });
-
- var message = { line: 2, column: 7, node: root.nodes[0], text: 'blargh', plugin: 'foo' };
-
- t.equal(
- stripColor(defaultFormatter({ messages: [message] })),
- '\n102:107\tblargh [foo]\n'
- );
- t.end();
-});
-
-var textlessMessages = [
- {
- type: 'warning',
- plugin: 'foo',
- },
- {
- type: 'dependency',
- plugin: 'bar',
- file: 'bar file',
- },
-];
-
-var textlessMessagesOutput = '';
-
-test('defaultFormatter with messages without text property', function(t) {
- t.equal(
- stripColor(defaultFormatter({
- messages: textlessMessages,
- source: '',
- })),
- textlessMessagesOutput,
- 'basic'
- );
-
- t.end();
-});
diff --git a/test/index.js b/test/index.js
deleted file mode 100644
index fca75a2..0000000
--- a/test/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-require('./formatter');
-require('./reporter');
diff --git a/test/lessIntegration.js b/test/lessIntegration.js
deleted file mode 100644
index fd70a20..0000000
--- a/test/lessIntegration.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var less = require('less');
-var postcss = require('postcss');
-var stylelint = require('stylelint');
-var reporter = require('..');
-var fs = require('fs');
-var path = require('path');
-
-var lessSource = path.join(__dirname, 'fixtures/less-bar.less');
-
-fs.readFile(lessSource, 'utf8', function(err, code) {
- if (err) throw err;
-
- var lessOptions = {
- sourceMap: { sourceMapFileInline: true },
- paths: [path.join(__dirname, 'fixtures')],
- filename: lessSource,
- };
- less.render(code, lessOptions).then(function(output) {
- return postcss()
- .use(stylelint({ rules: { 'selector-no-id': true } }))
- .use(reporter())
- .process(output.css, { from: lessSource })
- }).catch(function(err) { console.log(err.stack); });
-});
diff --git a/test/reporter.js b/test/reporter.js
deleted file mode 100644
index 1359a6a..0000000
--- a/test/reporter.js
+++ /dev/null
@@ -1,527 +0,0 @@
-var test = require('tape');
-var reporter = require('../lib/reporter');
-
-var mockSimpleResult = {
- messages: [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- },
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- },
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- },
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz error',
- },
- ],
- root: {
- source: {
- input: {
- id: '',
- },
- },
- },
-};
-
-function clone(toClone) {
- return JSON.parse(JSON.stringify(toClone));
-}
-
-test('reporter with simple mock result', function(t) {
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- });
- t.doesNotThrow(function() {
- testReporter.OnceExit(null, { result: mockSimpleResult });
- });
- t.deepEqual(tracker.messages, mockSimpleResult.messages);
- t.equal(tracker.source, '');
- t.end();
-});
-
-var mockResultContainingNonWarningMessage = {
- messages: [
- {
- type: 'dependency',
- plugin: 'foo',
- },
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- },
- {
- type: 'error',
- plugin: 'foo',
- text: 'foo error',
- },
- ],
- root: {
- source: {
- input: {
- id: '',
- },
- },
- },
-};
-
-test('reporter with simple mock result containing non warning typed message', function(t) {
- var tracker = {};
- var expectedMessages = [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- },
- {
- type: 'error',
- plugin: 'foo',
- text: 'foo error',
- },
- ];
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- });
- t.throws(function() {
- testReporter.OnceExit(null, {
- result: mockResultContainingNonWarningMessage,
- });
- });
- t.deepEqual(tracker.messages, expectedMessages);
- t.equal(tracker.source, '');
- t.end();
-});
-
-test('reporter with simple mock result and whitelisted plugins', function(t) {
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- plugins: ['foo', 'bar'],
- });
- testReporter.OnceExit(null, { result: mockSimpleResult });
- t.deepEqual(
- tracker.messages,
- [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- },
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- },
- ]
- );
- t.equal(tracker.source, '');
- t.end();
-});
-
-test('reporter with simple mock result and blacklisted plugins', function(t) {
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- plugins: ['!foo', '!baz'],
- });
- testReporter.OnceExit(null, { result: mockSimpleResult });
- t.deepEqual(
- tracker.messages,
- [
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- },
- ]
- );
- t.end();
-});
-
-test('reporter with simple mock result and function-filtered plugins', function(t) {
- var cloneResult = clone(mockSimpleResult);
- cloneResult.messages.push(
- {
- type: 'error',
- plugin: 'baz',
- text: 'baz error',
- }
- );
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- filter: function(message) { return message.type === 'error'; },
- });
- t.throws(function() {
- testReporter.OnceExit(null, {
- result: cloneResult,
- });
- });
- t.deepEqual(
- tracker.messages,
- [
- {
- type: 'error',
- plugin: 'baz',
- text: 'baz error',
- },
- ]
- );
- t.end();
-});
-
-test('reporter with simple mock result and empty plugins', function(t) {
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- plugins: [],
- });
- testReporter.OnceExit(null, { result: mockSimpleResult });
- t.deepEqual(
- tracker.messages,
- mockSimpleResult.messages
- );
- t.end();
-});
-
-test('reporter with simple mock result and clearReportedMessages', function(t) {
- var cloneResult = clone(mockSimpleResult);
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- clearReportedMessages: true,
- });
- testReporter.OnceExit(null, { result: cloneResult });
- t.deepEqual(cloneResult.messages, []);
- t.end();
-});
-
-test('reporter with simple mock result, whitelisted plugins and clearReportedMessages', function(t) {
- var cloneResult = clone(mockSimpleResult);
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- plugins: ['baz', 'foo'],
- clearReportedMessages: true,
- });
- testReporter.OnceExit(null, { result: cloneResult });
- t.deepEqual(
- cloneResult.messages,
- [
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- },
- ]
- );
- t.end();
-});
-
-test('reporter with simple mock result and clearAllMessages', function(t) {
- var cloneResult = clone(mockSimpleResult);
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- clearAllMessages: true,
- });
- testReporter.OnceExit(null, { result: cloneResult });
- t.deepEqual(cloneResult.messages, []);
- t.end();
-});
-
-test('reporter with simple mock result, clearAllMessages and whitelisted plugins', function(t) {
- var cloneResult = clone(mockSimpleResult);
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- plugins: ['foo'],
- clearAllMessages: true,
- });
- testReporter.OnceExit(null, { result: cloneResult });
- t.deepEqual(
- cloneResult.messages,
- [
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- },
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- },
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz error',
- },
- ]
- );
- t.end();
-});
-
-test('reporter with simple mock result and throwError', function(t) {
- var cloneResult = clone(mockSimpleResult);
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- throwError: true,
- });
- t.throws(function() {
- testReporter.OnceExit(null, { result: cloneResult });
- });
- t.end();
-});
-
-function mockFormatter(tracker) {
- return function(obj) {
- tracker.messages = obj.messages;
- tracker.source = obj.source;
- return 'bogus report';
- };
-}
-
-var mockResultFromFile = {
- messages: [
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- },
- ],
- root: {
- source: {
- input: {
- file: '/path/to/file.css',
- },
- },
- },
-};
-
-test('reporter with mock containing file source', function(t) {
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- });
- testReporter.OnceExit(null, { result: mockResultFromFile });
- t.equal(tracker.source, '/path/to/file.css');
- t.end();
-})
-
-var mockResultNoSource = {
- messages: [
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- },
- ],
- root: {},
-};
-
-test('reporter with mock containing no source', function(t) {
- var tracker = {};
- var testReporter = reporter({
- formatter: mockFormatter(tracker),
- });
- testReporter.OnceExit(null, { result: mockResultNoSource });
- t.equal(tracker.source, '');
- t.end();
-})
-
-var mockWarningNodeResult = {
- messages: [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- node: {
- source: {
- input: {
- file: 'foo.css',
- },
- },
- },
- },
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- node: {
- source: {
- input: {
- file: 'bar.css',
- },
- },
- },
- },
- {
- type: 'error',
- plugin: 'pat',
- text: 'pat error',
- node: {
- source: {
- input: {
- id: '',
- },
- },
- },
- },
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- node: {
- source: {
- input: {
- file: 'foo.css',
- },
- },
- },
- },
- {
- type: 'error',
- plugin: 'hoo',
- text: 'hoo error',
- node: {
- source: {
- input: {
- id: '',
- },
- },
- },
- },
- {
- type: 'error',
- plugin: 'hah',
- text: 'hah error',
- },
- ],
- root: {
- source: {
- input: {
- id: '',
- },
- },
- },
-};
-
-function mockMultiSourceFormatter(tracker) {
- return function(obj) {
- tracker.push(obj);
- return 'bogus report';
- };
-}
-
-test('reporter with warnings that messages that each have nodes', function(t) {
- var tracker = [];
- var testReporter = reporter({
- formatter: mockMultiSourceFormatter(tracker),
- });
- t.throws(function() {
- testReporter.OnceExit(null, {
- result: mockWarningNodeResult,
- });
- });
- t.deepEqual(tracker, [
- {
- source: 'foo.css',
- messages: [
- {
- type: 'warning',
- plugin: 'foo',
- text: 'foo warning',
- node: {
- source: {
- input: {
- file: 'foo.css',
- },
- },
- },
- },
- {
- type: 'warning',
- plugin: 'bar',
- text: 'bar warning',
- node: {
- source: {
- input: {
- file: 'foo.css',
- },
- },
- },
- },
- ],
- },
- {
- source: 'bar.css',
- messages: [
- {
- type: 'warning',
- plugin: 'baz',
- text: 'baz warning',
- node: {
- source: {
- input: {
- file: 'bar.css',
- },
- },
- },
- },
- ],
- },
- {
- source: '',
- messages: [
- {
- type: 'error',
- plugin: 'pat',
- text: 'pat error',
- node: {
- source: {
- input: {
- id: '',
- },
- },
- },
- },
- {
- type: 'error',
- plugin: 'hoo',
- text: 'hoo error',
- node: {
- source: {
- input: {
- id: '',
- },
- },
- },
- },
- ],
- },
- {
- source: '',
- messages: [
- {
- type: 'error',
- plugin: 'hah',
- text: 'hah error',
- },
- ],
- },
- ]);
- t.end();
-});
diff --git a/test/visual.js b/test/visual.js
deleted file mode 100644
index ec090c4..0000000
--- a/test/visual.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var postcss = require('postcss');
-var stylelint = require('stylelint');
-var reporter = require('..');
-var fs = require('fs');
-var sourceMap = require('source-map');
-
-var reporterOptions = {
- // positionless: 'last',
- // sortByPosition: true,
- // noIcon: true,
- // noPlugin: true,
- // plugins: ['stylelint'],
-};
-
-fs.readFile('test/fixtures/forVisual.css', { encoding: 'utf8' }, function(err, data) {
- if (err) throw err;
-
- var processOptions = {
- from: 'test/fixtures/forVisual.css',
- map: { prev: createSourceMap() },
- };
-
- postcss()
- .use(stylelint({
- rules: {
- 'block-opening-brace-newline-after': 'always',
- 'declaration-colon-space-after': 'always',
- 'length-zero-no-unit': true,
- 'indentation': 'tab',
- },
- }))
- .use(reporter(reporterOptions))
- .process(data, processOptions)
- .then(function() {
- console.log('There\'s your visual confirmation that it works.');
- })
- .catch(function(error) {
- console.log(error.stack);
- });
-});
-
-function createSourceMap() {
- var map = new sourceMap.SourceMapGenerator({ file: 'forVisual.css' });
- map.addMapping({
- generated: { line: 2, column: 7 },
- source: 'forVisual.original.css',
- original: { line: 102, column: 107 },
- });
- return map.toString();
-}