├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .github
├── FUNDING.yml
└── workflows
│ └── test.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── example.png
├── index.js
├── lib
├── formatter.js
├── reporter.js
└── util.js
├── package.json
├── pnpm-lock.yaml
└── test
├── fixtures
├── forVisual.css
├── less-bar.less
└── less-foo.less
├── formatter.js
├── index.js
├── lessIntegration.js
├── reporter.js
└── visual.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 | charset = utf-8
11 |
12 | [*.js]
13 | quote_type = single
14 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parserOptions": {
3 | "ecmaVersion": 6
4 | },
5 | "env": {
6 | "node": true,
7 | "es6": true
8 | },
9 | "rules": {
10 | "comma-dangle": [2, "always-multiline"],
11 | "curly": 0,
12 | "radix": 2,
13 | "wrap-iife": 2,
14 | "brace-style": 0,
15 | "comma-style": 2,
16 | "consistent-this": [2, "_that"],
17 | "no-lonely-if": 2,
18 | "no-nested-ternary": 2,
19 | "no-process-exit": 0,
20 | "no-spaced-func": 2,
21 | "no-use-before-define": [2, "nofunc"],
22 | "quotes": [2, "single"],
23 | "keyword-spacing": [2, { "before": true, "after": true }],
24 | "space-before-blocks": [2, "always"],
25 | "space-in-parens": [2, "never"],
26 | "space-unary-ops": 2,
27 | "strict": 0
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | open_collective: postcss
2 | github: ai
3 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | permissions:
8 | contents: read
9 | jobs:
10 | full:
11 | name: Node.js 20 Full
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout the repository
15 | uses: actions/checkout@v4
16 | - name: Install pnpm
17 | uses: pnpm/action-setup@v2
18 | with:
19 | version: 8
20 | - name: Install Node.js
21 | uses: actions/setup-node@v3
22 | with:
23 | node-version: 20
24 | cache: pnpm
25 | - name: Install dependencies
26 | run: pnpm install --frozen-lockfile --ignore-scripts
27 | - name: Run tests
28 | run: pnpm test
29 | short:
30 | runs-on: ubuntu-latest
31 | strategy:
32 | matrix:
33 | node-version:
34 | - 18
35 | - 16
36 | name: Node.js ${{ matrix.node-version }} Quick
37 | steps:
38 | - name: Checkout the repository
39 | uses: actions/checkout@v4
40 | - name: Install pnpm
41 | uses: pnpm/action-setup@v2
42 | with:
43 | version: 8
44 | - name: Install Node.js ${{ matrix.node-version }}
45 | uses: actions/setup-node@v3
46 | with:
47 | node-version: ${{ matrix.node-version }}
48 | cache: pnpm
49 | - name: Install dependencies
50 | run: pnpm install --frozen-lockfile --ignore-scripts
51 | - name: Run unit tests
52 | run: pnpm unit
53 | old:
54 | runs-on: ubuntu-latest
55 | strategy:
56 | matrix:
57 | node-version:
58 | - 14
59 | - 12
60 | name: Node.js ${{ matrix.node-version }} Quick
61 | steps:
62 | - name: Checkout the repository
63 | uses: actions/checkout@v4
64 | - name: Install pnpm
65 | uses: pnpm/action-setup@v1
66 | with:
67 | version: 3
68 | env:
69 | ACTIONS_ALLOW_UNSECURE_COMMANDS: true
70 | - name: Install Node.js ${{ matrix.node-version }}
71 | uses: actions/setup-node@v3
72 | with:
73 | node-version: ${{ matrix.node-version }}
74 | - name: Install dependencies
75 | run: pnpm install --no-frozen-lockfile --ignore-scripts
76 | - name: Run unit tests
77 | run: pnpm unit
78 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | *.log
3 | tmp
4 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## 7.1
4 |
5 | - Added better `error` message support (by Stéphane Goetz).
6 |
7 | ## 7.0.5
8 |
9 | - Reduced dependencies (by @onigoetz).
10 |
11 | ## 7.0.4
12 |
13 | - Replaced `nanocolors` with `picocolors`.
14 | - Reduced package size.
15 |
16 | ## 7.0.3
17 |
18 | - Replaced `colorette` with `nanocolors`.
19 |
20 | ## 7.0.2
21 |
22 | - Reduced dependencies (by @ludofischer).
23 |
24 | ## 7.0.1
25 |
26 | - Moved to PostCSS 8.1.
27 | - Added funding links.
28 |
29 | ## 7.0.0
30 |
31 | - Moved to PostCSS 8.
32 | - Moved `postcss` to `peerDependencies`.
33 |
34 | ## 6.0.1
35 |
36 | - Fix support for messages without text (by @nodaguti).
37 |
38 | ## 6.0.0
39 |
40 | - Upgrade to PostCSS 7.
41 | - Drop support for Node 4.
42 |
43 | ## 5.0.0
44 |
45 | - Move PostCSS from `peerDependencies` to `dependencies`.
46 | - Drop support for Node 0.12.
47 |
48 | ## 4.0.0
49 |
50 | - Upgrade to PostCSS v6. (If you still use PostCSS v5, stick with v3 until you can upgrade your PostCSS.)
51 | - Switched PostCSS to a peer dependency.
52 |
53 | ## 3.0.0
54 |
55 | - Replace `clearMessages` option with `clearReportedMessages` and `clearAllMessages`.
56 |
57 | ## 2.0.0
58 |
59 | - Only log warning messages (`type: "warning"`) by default.
60 |
61 | ## 1.4.1
62 | - Add `filter` option.
63 | - Add blacklist functionality to `plugins` option with `!` prefix`.
64 |
65 | ## 1.3.3
66 | - Fix regression that caused positions from sources without incoming sourcemaps not to be logged.
67 |
68 | ## 1.3.2
69 | - Find more accurate positions of preprocessed files with sourcemaps.
70 |
71 | ## 1.3.1
72 | - Fix Windows path bug.
73 |
74 | ## 1.3.0
75 | - Check individual messages for distinct sources, then group messages by those sources,
76 | instead of always using the PostCSS Result's source.
77 | - Output empty string from `formatter` if there are no messages, instead of `undefined`.
78 |
79 | ## 1.2.1
80 | - Handle variable and absent input sources.
81 |
82 | ## 1.2.0
83 | - Add `noIcon` and `noPlugin` options to both reporter and formatter.
84 |
85 | ## 1.1.0
86 | - Use PostCSS 5's line/column properties on warnings, instead of relying on the source node.
87 |
88 | ## 1.0.0
89 | - Upgrade to PostCSS 5.
90 |
91 | ## 0.4.0
92 | - Add `positionless` option (to both the reporter and the formatter), with default value `"first"`.
93 | - Cleaner npm install (files specified in `package.json`).
94 |
95 | ## 0.3.1
96 | - Remove leftover debugging log statement.
97 |
98 | ## 0.3.0
99 | - Add `sortByPosition` option (to both the reporter and the formatter), with default value `true`.
100 |
101 | ## 0.2.0
102 | - Alter `defaultFormatter` to use warning symbol and not repeat `# postcss-reporter`.
103 |
104 | ## 0.1.0
105 | - First release.
106 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 David Clark
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # postcss-reporter
2 |
3 | A PostCSS plugin to `console.log()` the messages (warnings, etc.) registered by other PostCSS plugins.
4 |
5 | ---
6 |
7 | **SEEKING A NEW MAINTAINER!** Interested in contributing to the ecosystem of PostCSS and Stylelint? Please open an issue if you'd like to take over maintenance of this package.
8 |
9 | ---
10 |
11 | ## Purpose
12 |
13 | As of PostCSS 4.1, a single PostCSS process can accumulate messages from all of the plugins it uses.
14 | Most of these messages are [warnings](https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#32-use-resultwarn-for-warnings).
15 | Presumably, plugin authors want you to see those messages.
16 | So this plugin exists to read the accumulated messages (or messages from only the plugins you've specified), format them, and print them to the console.
17 |
18 | 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.
19 |
20 | *By default, only warnings are logged*. If you would like to see more messages, you can change the `filter` function.
21 |
22 | ## Example Output
23 |
24 | 
25 |
26 | ## Installation
27 |
28 | ```shell
29 | npm install --save-dev postcss postcss-reporter
30 | ```
31 |
32 | Version 1.0.0+ is compatible with PostCSS 5+. (Earlier versions are compatible with PostCSS 4.)
33 |
34 | ## Usage
35 |
36 | Add it to your plugin list *after any plugins whose messages you want to log*, and optionally pass it an object of options.
37 |
38 | For example, using [gulp-postcss](https://github.com/postcss/gulp-postcss):
39 |
40 | ```js
41 | gulp.task('css', function() {
42 | return gulp.src('./src/*.css')
43 | .pipe(postcss([
44 | bemLinter(),
45 | customProperties(),
46 | calc(),
47 | rejectAllColors(),
48 | reporter(myOptions) // <------ ding
49 | ]))
50 | .pipe(gulp.dest('./dist'));
51 | });
52 | ```
53 |
54 | ## Options
55 |
56 | **clearReportedMessages** (boolean, default = `false`)
57 |
58 | If true, the plugin will clear the result's messages after it logs them. This prevents other plugins, or the task runner you use, from logging the same information again and causing confusion.
59 |
60 | See also `clearAllMessages`.
61 |
62 | **formatter** (function, default = the default formatter)
63 |
64 | By default, this reporter will format the messages for human legibility in the console.
65 | To use another formatter, pass a function that
66 |
67 | - accepts an object containing a `messages` array and a `source` string
68 | - returns the string to report
69 |
70 | For example, you could write a formatter like this:
71 |
72 | ```js
73 | reporter({
74 | formatter: function(input) {
75 | return input.source + ' produced ' + input.messages.length + ' messages';
76 | }
77 | })
78 | ```
79 |
80 | **plugins** (array of strings, default = `[]`)
81 |
82 | If `plugins` is empty (as it is by default), the reporter will log messages from every PostCSS plugin.
83 |
84 | There are 2 ways to limit output:
85 |
86 | - **Whitelist:** Provide an array of the plugins whose messages you would like to show.
87 | For example, `{ plugins: ['postcss-bem-linter'] }` will only log messages from the `postcss-bem-linter` plugin.
88 | - **Blacklist:** Prefix all plugins in the array with `!` to specify only those plugins whose messages you would like to hide.
89 | (All other plugins will be shown.)
90 | For example, `{ plugins: ['!postcss-bem-linter'] }` will never log messages from the `postcss-bem-linter` plugin; but will log messages from every other plugin.
91 |
92 | **filter** (function)
93 |
94 | 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.
95 |
96 | By default, only messages with `type: "warning"` are logged. (These are the messages produced when the plugin author uses PostCSS's `warn()` function.)
97 |
98 | For example, `function(message) { return true }` will return every message, regardless of whether or not the plugin declares it as a warning.
99 |
100 | **clearAllMessages** (boolean, default = `false`)
101 |
102 | If `true`, the plugin won't pass any messages into other plugins, or the task runner you use.
103 |
104 | See also `clearReportedMessages`.
105 |
106 | **throwError** (boolean, default = `false`)
107 |
108 | If `true`, after the plugin logs your messages it will throw an error if it found any warnings.
109 |
110 | **sortByPosition** (boolean, default = `true`)
111 |
112 | If `false`, messages will not be sorted by line/column position.
113 |
114 | **positionless** (`"first"|"last"|"any"`, default = `"first"`)
115 |
116 | By default, messages without line/column positions will be grouped at the beginning of the output.
117 | To put them at the end, instead, use `"last"`.
118 | To not bother sorting these, use `"any"`.
119 |
120 | **noIcon** (boolean, default = `false`)
121 |
122 | If `true`, no exclamatory triangle icons will be printed next to warnings.
123 |
124 | **noPlugin** (boolean, default = `false`)
125 |
126 | If `true`, plugin names will not be printed in brackets after messages.
127 |
128 | ## How to get output without colors
129 |
130 | If you would like no colors in the console output, simply pass `--no-colors` when you invoke whatever command runs this plugin. (This works because of [chalk](https://github.com/sindresorhus/chalk).)
131 |
132 | ## Standalone formatter
133 |
134 | You can also use this module's formatter as a library, with following API:
135 |
136 | ```js
137 | var formatter = require('postcss-reporter/lib/formatter');
138 | var myFormatter = formatter(myOptions);
139 | // to use defaults, just pass no options: `formatter()`
140 | var warningLog = myFormatter({
141 | messages: someMessages,
142 | source: someSource
143 | });
144 | console.log(warningLog);
145 | ```
146 |
147 | These are the formatter's options:
148 |
149 | - sortByPosition (boolean, default = `true`)
150 | - noIcon (boolean, default = `false`) - Do not print any warning exclamatory triangle icons
151 | - noPlugin (boolean, default = `false`) - Do not print plugin names
152 |
--------------------------------------------------------------------------------
/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/postcss/postcss-reporter/5d4a102347bf6a78365d50cb1675969cb549153f/example.png
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | var reporter = require('./lib/reporter');
2 |
3 | module.exports = reporter;
4 | module.exports.postcss = true;
5 |
--------------------------------------------------------------------------------
/lib/formatter.js:
--------------------------------------------------------------------------------
1 | var pico = require('picocolors');
2 | var path = require('path');
3 | var firstBy = require('thenby');
4 | var util = require('./util');
5 |
6 | function createSortFunction(positionless, sortByPosition) {
7 | var positionValue = 0
8 |
9 | if (positionless === 'any') { positionValue = 1; }
10 | if (positionless === 'first') { positionValue = 2; }
11 | if (positionless === 'last') { positionValue = 0; }
12 |
13 | var sortFunction = firstBy((m) => {
14 | if (!m.line) return 1;
15 | return positionValue;
16 | })
17 |
18 | if (sortByPosition) {
19 | sortFunction = sortFunction.thenBy('line').thenBy('column');
20 | }
21 |
22 | return sortFunction;
23 | }
24 |
25 | module.exports = function (opts) {
26 | var options = opts || {};
27 | var sortByPosition =
28 | typeof options.sortByPosition !== 'undefined'
29 | ? options.sortByPosition
30 | : true;
31 | var positionless = options.positionless || 'first';
32 |
33 | var sortFunction = createSortFunction(positionless, sortByPosition);
34 |
35 | return function (input) {
36 | var messages = input.messages.filter(function (message) {
37 | return typeof message.text === 'string';
38 | });
39 | var source = input.source;
40 |
41 | if (!messages.length) return '';
42 |
43 | var orderedMessages = messages.sort(sortFunction);
44 |
45 | var output = '\n';
46 |
47 | if (source) {
48 | output += pico.bold(pico.underline(logFrom(source))) + '\n';
49 | }
50 |
51 | orderedMessages.forEach(function (w) {
52 | output += messageToString(w) + '\n';
53 | });
54 |
55 | return output;
56 |
57 | function messageToString(message) {
58 | var location = util.getLocation(message);
59 | var str = '';
60 |
61 | if (location.line) {
62 | str += pico.bold(location.line);
63 | }
64 |
65 | if (location.column) {
66 | str += pico.bold(':' + location.column);
67 | }
68 |
69 | if (location.line || location.column) {
70 | str += '\t';
71 | }
72 |
73 | if (!options.noIcon) {
74 | if (message.type === 'warning') {
75 | str += pico.yellow(util.warningSymbol + ' ');
76 | } else if (message.type === 'error') {
77 | str += pico.red(util.errorSymbol + ' ');
78 | }
79 | }
80 |
81 | str += message.text;
82 | if (!options.noPlugin) {
83 | str += pico.yellow(' [' + message.plugin + ']');
84 | }
85 | return str;
86 | }
87 |
88 | function logFrom(fromValue) {
89 | if (fromValue.charAt(0) === '<') return fromValue;
90 | return path.relative(process.cwd(), fromValue).split(path.sep).join('/');
91 | }
92 | };
93 | };
94 |
--------------------------------------------------------------------------------
/lib/reporter.js:
--------------------------------------------------------------------------------
1 | var defaultFormatter = require('./formatter');
2 | var pico = require('picocolors');
3 | var util = require('./util');
4 |
5 | module.exports = function (opts = {}) {
6 | var formatter =
7 | opts.formatter ||
8 | defaultFormatter({
9 | noIcon: opts.noIcon,
10 | noPlugin: opts.noPlugin,
11 | });
12 |
13 | var pluginFilter;
14 | if (!opts.plugins) {
15 | // Every plugin
16 | pluginFilter = function () {
17 | return true;
18 | };
19 | } else if (
20 | opts.plugins.every(function (plugin) {
21 | return plugin[0] === '!';
22 | })
23 | ) {
24 | // Deny list
25 | pluginFilter = function (message) {
26 | return opts.plugins.indexOf('!' + message.plugin) === -1;
27 | };
28 | } else {
29 | // Allow list
30 | pluginFilter = function (message) {
31 | return opts.plugins.indexOf(message.plugin) !== -1;
32 | };
33 | }
34 |
35 | var messageFilter = opts.filter || ((message) => message.type === 'warning' || message.type === 'error');
36 |
37 | return {
38 | postcssPlugin: 'postcss-reporter',
39 | OnceExit(css, { result }) {
40 | var messagesToLog = result.messages
41 | .filter(pluginFilter)
42 | .filter(messageFilter);
43 |
44 | var resultSource = !result.root.source
45 | ? ''
46 | : result.root.source.input.file || result.root.source.input.id;
47 |
48 | let errorCount = 0;
49 | let warningCount = 0;
50 |
51 | var sourceGroupedMessages = messagesToLog.reduce((grouped, message) => {
52 | const key = util.getLocation(message).file || resultSource;
53 |
54 | if (!grouped.hasOwnProperty(key)) {
55 | grouped[key] = [];
56 | }
57 |
58 | if (message.type === 'error') {
59 | errorCount++;
60 | } else if (message.type === 'warning') {
61 | warningCount++;
62 | }
63 |
64 | grouped[key].push(message);
65 |
66 | return grouped;
67 | }, {});
68 |
69 | var report = '';
70 | for (const source in sourceGroupedMessages) {
71 | if (sourceGroupedMessages.hasOwnProperty(source)) {
72 | report += formatter({
73 | messages: sourceGroupedMessages[source],
74 | source: source,
75 | });
76 | }
77 | }
78 |
79 | if (opts.clearReportedMessages) {
80 | result.messages = result.messages.filter(message => !messagesToLog.includes(message));
81 | }
82 |
83 | if (opts.clearAllMessages) {
84 | var messagesToClear = result.messages.filter(pluginFilter);
85 | result.messages = result.messages.filter(message => !messagesToClear.includes(message));
86 | }
87 |
88 | if (!report) return;
89 |
90 | const summaryColor = errorCount > 0 ? 'red' : 'yellow';
91 | const summarySymbol = errorCount > 0 ? util.errorSymbol : util.warningSymbol;
92 | const summary = `${summarySymbol} ${messagesToLog.length} ${util.plur('problem', messagesToLog.length)} (${errorCount} ${util.plur('error')}, ${warningCount} ${util.plur('warning')})`
93 |
94 | report += `\n ${pico[summaryColor](pico.bold(summary))}\n`;
95 |
96 | console.log(report);
97 |
98 | if (shouldThrowError()) {
99 | throw new Error(
100 | pico.red(
101 | pico.bold('\n** postcss-reporter: warnings or errors were found **')
102 | )
103 | );
104 | }
105 |
106 | function shouldThrowError() {
107 | return opts.throwError || errorCount > 0;
108 | }
109 | },
110 | };
111 | };
112 |
--------------------------------------------------------------------------------
/lib/util.js:
--------------------------------------------------------------------------------
1 | var supportsLargeCharset =
2 | process.platform !== 'win32' ||
3 | process.env.CI ||
4 | process.env.TERM === 'xterm-256color';
5 |
6 | exports.getLocation = function (message) {
7 | var messageNode = message.node;
8 |
9 | var location = {
10 | line: message.line,
11 | column: message.column,
12 | };
13 |
14 | var messageInput = messageNode && messageNode.source && messageNode.source.input;
15 |
16 | if (!messageInput) return location;
17 |
18 | var originLocation =
19 | messageInput.origin && messageInput.origin(message.line, message.column);
20 | if (originLocation) return originLocation;
21 |
22 | location.file = messageInput.file || messageInput.id;
23 | return location;
24 | };
25 |
26 | exports.plur = function plur(word, count) {
27 | return (count === 1 ? word : `${word}s`);
28 | }
29 |
30 | exports.warningSymbol = supportsLargeCharset ? '⚠' : '!!';
31 | exports.errorSymbol = supportsLargeCharset ? '✖' : 'xx';
32 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "postcss-reporter",
3 | "version": "7.1.0",
4 | "description": "Log PostCSS messages in the console",
5 | "main": "index.js",
6 | "scripts": {
7 | "lint": "eslint .",
8 | "unit": "tape test",
9 | "test": "pnpm lint && pnpm unit && pnpm visual",
10 | "visual": "node test/visual.js"
11 | },
12 | "files": [
13 | "index.js",
14 | "lib"
15 | ],
16 | "engines": {
17 | "node": ">=10"
18 | },
19 | "repository": "postcss/postcss-reporter",
20 | "author": {
21 | "name": "David Clark",
22 | "email": "david.dave.clark@gmail.com",
23 | "url": "https://davidtheclark.com"
24 | },
25 | "license": "MIT",
26 | "funding": [
27 | {
28 | "type": "opencollective",
29 | "url": "https://opencollective.com/postcss/"
30 | },
31 | {
32 | "type": "github",
33 | "url": "https://github.com/sponsors/ai"
34 | }
35 | ],
36 | "peerDependencies": {
37 | "postcss": "^8.1.0"
38 | },
39 | "devDependencies": {
40 | "clean-publish": "^4.2.0",
41 | "eslint": "8.56.0",
42 | "less": "4.2.0",
43 | "postcss": "^8.4.33",
44 | "source-map": "0.7.4",
45 | "strip-color": "^0.1.0",
46 | "stylelint": "16.1.0",
47 | "tape": "^5.7.3"
48 | },
49 | "dependencies": {
50 | "picocolors": "^1.0.0",
51 | "thenby": "^1.3.4"
52 | },
53 | "clean-publish": {
54 | "cleanDocs": true
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | picocolors:
9 | specifier: ^1.0.0
10 | version: 1.0.0
11 | thenby:
12 | specifier: ^1.3.4
13 | version: 1.3.4
14 |
15 | devDependencies:
16 | clean-publish:
17 | specifier: ^4.2.0
18 | version: 4.2.0
19 | eslint:
20 | specifier: 8.56.0
21 | version: 8.56.0
22 | less:
23 | specifier: 4.2.0
24 | version: 4.2.0
25 | postcss:
26 | specifier: ^8.4.33
27 | version: 8.4.33
28 | source-map:
29 | specifier: 0.7.4
30 | version: 0.7.4
31 | strip-color:
32 | specifier: ^0.1.0
33 | version: 0.1.0
34 | stylelint:
35 | specifier: 16.1.0
36 | version: 16.1.0
37 | tape:
38 | specifier: ^5.7.3
39 | version: 5.7.3
40 |
41 | packages:
42 |
43 | /@aashutoshrathi/word-wrap@1.2.6:
44 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
45 | engines: {node: '>=0.10.0'}
46 | dev: true
47 |
48 | /@babel/code-frame@7.23.5:
49 | resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
50 | engines: {node: '>=6.9.0'}
51 | dependencies:
52 | '@babel/highlight': 7.23.4
53 | chalk: 2.4.2
54 | dev: true
55 |
56 | /@babel/helper-validator-identifier@7.22.20:
57 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
58 | engines: {node: '>=6.9.0'}
59 | dev: true
60 |
61 | /@babel/highlight@7.23.4:
62 | resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
63 | engines: {node: '>=6.9.0'}
64 | dependencies:
65 | '@babel/helper-validator-identifier': 7.22.20
66 | chalk: 2.4.2
67 | js-tokens: 4.0.0
68 | dev: true
69 |
70 | /@csstools/css-parser-algorithms@2.5.0(@csstools/css-tokenizer@2.2.3):
71 | resolution: {integrity: sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==}
72 | engines: {node: ^14 || ^16 || >=18}
73 | peerDependencies:
74 | '@csstools/css-tokenizer': ^2.2.3
75 | dependencies:
76 | '@csstools/css-tokenizer': 2.2.3
77 | dev: true
78 |
79 | /@csstools/css-tokenizer@2.2.3:
80 | resolution: {integrity: sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==}
81 | engines: {node: ^14 || ^16 || >=18}
82 | dev: true
83 |
84 | /@csstools/media-query-list-parser@2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3):
85 | resolution: {integrity: sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ==}
86 | engines: {node: ^14 || ^16 || >=18}
87 | peerDependencies:
88 | '@csstools/css-parser-algorithms': ^2.5.0
89 | '@csstools/css-tokenizer': ^2.2.3
90 | dependencies:
91 | '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3)
92 | '@csstools/css-tokenizer': 2.2.3
93 | dev: true
94 |
95 | /@csstools/selector-specificity@3.0.1(postcss-selector-parser@6.0.15):
96 | resolution: {integrity: sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==}
97 | engines: {node: ^14 || ^16 || >=18}
98 | peerDependencies:
99 | postcss-selector-parser: ^6.0.13
100 | dependencies:
101 | postcss-selector-parser: 6.0.15
102 | dev: true
103 |
104 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
105 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
106 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
107 | peerDependencies:
108 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
109 | dependencies:
110 | eslint: 8.56.0
111 | eslint-visitor-keys: 3.4.3
112 | dev: true
113 |
114 | /@eslint-community/regexpp@4.10.0:
115 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
116 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
117 | dev: true
118 |
119 | /@eslint/eslintrc@2.1.4:
120 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
121 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
122 | dependencies:
123 | ajv: 6.12.6
124 | debug: 4.3.4
125 | espree: 9.6.1
126 | globals: 13.24.0
127 | ignore: 5.3.0
128 | import-fresh: 3.3.0
129 | js-yaml: 4.1.0
130 | minimatch: 3.1.2
131 | strip-json-comments: 3.1.1
132 | transitivePeerDependencies:
133 | - supports-color
134 | dev: true
135 |
136 | /@eslint/js@8.56.0:
137 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
138 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
139 | dev: true
140 |
141 | /@humanwhocodes/config-array@0.11.14:
142 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
143 | engines: {node: '>=10.10.0'}
144 | dependencies:
145 | '@humanwhocodes/object-schema': 2.0.2
146 | debug: 4.3.4
147 | minimatch: 3.1.2
148 | transitivePeerDependencies:
149 | - supports-color
150 | dev: true
151 |
152 | /@humanwhocodes/module-importer@1.0.1:
153 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
154 | engines: {node: '>=12.22'}
155 | dev: true
156 |
157 | /@humanwhocodes/object-schema@2.0.2:
158 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
159 | dev: true
160 |
161 | /@isaacs/cliui@8.0.2:
162 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
163 | engines: {node: '>=12'}
164 | dependencies:
165 | string-width: 5.1.2
166 | string-width-cjs: /string-width@4.2.3
167 | strip-ansi: 7.1.0
168 | strip-ansi-cjs: /strip-ansi@6.0.1
169 | wrap-ansi: 8.1.0
170 | wrap-ansi-cjs: /wrap-ansi@7.0.0
171 | dev: true
172 |
173 | /@ljharb/resumer@0.0.1:
174 | resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==}
175 | engines: {node: '>= 0.4'}
176 | dependencies:
177 | '@ljharb/through': 2.3.11
178 | dev: true
179 |
180 | /@ljharb/through@2.3.11:
181 | resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==}
182 | engines: {node: '>= 0.4'}
183 | dependencies:
184 | call-bind: 1.0.5
185 | dev: true
186 |
187 | /@nodelib/fs.scandir@2.1.5:
188 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
189 | engines: {node: '>= 8'}
190 | dependencies:
191 | '@nodelib/fs.stat': 2.0.5
192 | run-parallel: 1.2.0
193 | dev: true
194 |
195 | /@nodelib/fs.stat@2.0.5:
196 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
197 | engines: {node: '>= 8'}
198 | dev: true
199 |
200 | /@nodelib/fs.walk@1.2.8:
201 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
202 | engines: {node: '>= 8'}
203 | dependencies:
204 | '@nodelib/fs.scandir': 2.1.5
205 | fastq: 1.16.0
206 | dev: true
207 |
208 | /@pkgjs/parseargs@0.11.0:
209 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
210 | engines: {node: '>=14'}
211 | requiresBuild: true
212 | dev: true
213 | optional: true
214 |
215 | /@ungap/structured-clone@1.2.0:
216 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
217 | dev: true
218 |
219 | /acorn-jsx@5.3.2(acorn@8.11.3):
220 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
221 | peerDependencies:
222 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
223 | dependencies:
224 | acorn: 8.11.3
225 | dev: true
226 |
227 | /acorn@8.11.3:
228 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
229 | engines: {node: '>=0.4.0'}
230 | hasBin: true
231 | dev: true
232 |
233 | /ajv@6.12.6:
234 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
235 | dependencies:
236 | fast-deep-equal: 3.1.3
237 | fast-json-stable-stringify: 2.1.0
238 | json-schema-traverse: 0.4.1
239 | uri-js: 4.4.1
240 | dev: true
241 |
242 | /ajv@8.12.0:
243 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
244 | dependencies:
245 | fast-deep-equal: 3.1.3
246 | json-schema-traverse: 1.0.0
247 | require-from-string: 2.0.2
248 | uri-js: 4.4.1
249 | dev: true
250 |
251 | /ansi-regex@5.0.1:
252 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
253 | engines: {node: '>=8'}
254 | dev: true
255 |
256 | /ansi-regex@6.0.1:
257 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
258 | engines: {node: '>=12'}
259 | dev: true
260 |
261 | /ansi-styles@3.2.1:
262 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
263 | engines: {node: '>=4'}
264 | dependencies:
265 | color-convert: 1.9.3
266 | dev: true
267 |
268 | /ansi-styles@4.3.0:
269 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
270 | engines: {node: '>=8'}
271 | dependencies:
272 | color-convert: 2.0.1
273 | dev: true
274 |
275 | /ansi-styles@6.2.1:
276 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
277 | engines: {node: '>=12'}
278 | dev: true
279 |
280 | /argparse@2.0.1:
281 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
282 | dev: true
283 |
284 | /array-buffer-byte-length@1.0.0:
285 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
286 | dependencies:
287 | call-bind: 1.0.5
288 | is-array-buffer: 3.0.2
289 | dev: true
290 |
291 | /array-union@2.1.0:
292 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
293 | engines: {node: '>=8'}
294 | dev: true
295 |
296 | /array.prototype.every@1.1.5:
297 | resolution: {integrity: sha512-FfMQJ+/joFGXpRCltbzV3znaP5QxIhLFySo0fEPn3GuoYlud9LhknMCIxdYKC2qsM/6VHoSp6YGwe3EZXrEcwQ==}
298 | engines: {node: '>= 0.4'}
299 | dependencies:
300 | call-bind: 1.0.5
301 | define-properties: 1.2.1
302 | es-abstract: 1.22.3
303 | is-string: 1.0.7
304 | dev: true
305 |
306 | /arraybuffer.prototype.slice@1.0.2:
307 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
308 | engines: {node: '>= 0.4'}
309 | dependencies:
310 | array-buffer-byte-length: 1.0.0
311 | call-bind: 1.0.5
312 | define-properties: 1.2.1
313 | es-abstract: 1.22.3
314 | get-intrinsic: 1.2.2
315 | is-array-buffer: 3.0.2
316 | is-shared-array-buffer: 1.0.2
317 | dev: true
318 |
319 | /astral-regex@2.0.0:
320 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
321 | engines: {node: '>=8'}
322 | dev: true
323 |
324 | /available-typed-arrays@1.0.5:
325 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
326 | engines: {node: '>= 0.4'}
327 | dev: true
328 |
329 | /balanced-match@1.0.2:
330 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
331 | dev: true
332 |
333 | /balanced-match@2.0.0:
334 | resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
335 | dev: true
336 |
337 | /brace-expansion@1.1.11:
338 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
339 | dependencies:
340 | balanced-match: 1.0.2
341 | concat-map: 0.0.1
342 | dev: true
343 |
344 | /brace-expansion@2.0.1:
345 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
346 | dependencies:
347 | balanced-match: 1.0.2
348 | dev: true
349 |
350 | /braces@3.0.3:
351 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
352 | engines: {node: '>=8'}
353 | dependencies:
354 | fill-range: 7.1.1
355 | dev: true
356 |
357 | /call-bind@1.0.5:
358 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
359 | dependencies:
360 | function-bind: 1.1.2
361 | get-intrinsic: 1.2.2
362 | set-function-length: 1.2.0
363 | dev: true
364 |
365 | /callsites@3.1.0:
366 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
367 | engines: {node: '>=6'}
368 | dev: true
369 |
370 | /chalk@2.4.2:
371 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
372 | engines: {node: '>=4'}
373 | dependencies:
374 | ansi-styles: 3.2.1
375 | escape-string-regexp: 1.0.5
376 | supports-color: 5.5.0
377 | dev: true
378 |
379 | /chalk@4.1.2:
380 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
381 | engines: {node: '>=10'}
382 | dependencies:
383 | ansi-styles: 4.3.0
384 | supports-color: 7.2.0
385 | dev: true
386 |
387 | /clean-publish@4.2.0:
388 | resolution: {integrity: sha512-dqZF5y6KtlkYhbnJoXiOCP4L1TPdI7HtuDysslUrbI8vLPu65ZjVO3pu5xp4qH0X2cWdDN/La04woe6fg4LNSw==}
389 | engines: {node: '>= 16.0.0'}
390 | hasBin: true
391 | dependencies:
392 | cross-spawn: 7.0.3
393 | fast-glob: 3.3.2
394 | lilconfig: 2.1.0
395 | micromatch: 4.0.5
396 | dev: true
397 |
398 | /color-convert@1.9.3:
399 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
400 | dependencies:
401 | color-name: 1.1.3
402 | dev: true
403 |
404 | /color-convert@2.0.1:
405 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
406 | engines: {node: '>=7.0.0'}
407 | dependencies:
408 | color-name: 1.1.4
409 | dev: true
410 |
411 | /color-name@1.1.3:
412 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
413 | dev: true
414 |
415 | /color-name@1.1.4:
416 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
417 | dev: true
418 |
419 | /colord@2.9.3:
420 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
421 | dev: true
422 |
423 | /concat-map@0.0.1:
424 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
425 | dev: true
426 |
427 | /copy-anything@2.0.6:
428 | resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
429 | dependencies:
430 | is-what: 3.14.1
431 | dev: true
432 |
433 | /cosmiconfig@9.0.0:
434 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
435 | engines: {node: '>=14'}
436 | peerDependencies:
437 | typescript: '>=4.9.5'
438 | peerDependenciesMeta:
439 | typescript:
440 | optional: true
441 | dependencies:
442 | env-paths: 2.2.1
443 | import-fresh: 3.3.0
444 | js-yaml: 4.1.0
445 | parse-json: 5.2.0
446 | dev: true
447 |
448 | /cross-spawn@7.0.3:
449 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
450 | engines: {node: '>= 8'}
451 | dependencies:
452 | path-key: 3.1.1
453 | shebang-command: 2.0.0
454 | which: 2.0.2
455 | dev: true
456 |
457 | /css-functions-list@3.2.1:
458 | resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==}
459 | engines: {node: '>=12 || >=16'}
460 | dev: true
461 |
462 | /css-tree@2.3.1:
463 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
464 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
465 | dependencies:
466 | mdn-data: 2.0.30
467 | source-map-js: 1.0.2
468 | dev: true
469 |
470 | /cssesc@3.0.0:
471 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
472 | engines: {node: '>=4'}
473 | hasBin: true
474 | dev: true
475 |
476 | /debug@4.3.4:
477 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
478 | engines: {node: '>=6.0'}
479 | peerDependencies:
480 | supports-color: '*'
481 | peerDependenciesMeta:
482 | supports-color:
483 | optional: true
484 | dependencies:
485 | ms: 2.1.2
486 | dev: true
487 |
488 | /deep-equal@2.2.3:
489 | resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
490 | engines: {node: '>= 0.4'}
491 | dependencies:
492 | array-buffer-byte-length: 1.0.0
493 | call-bind: 1.0.5
494 | es-get-iterator: 1.1.3
495 | get-intrinsic: 1.2.2
496 | is-arguments: 1.1.1
497 | is-array-buffer: 3.0.2
498 | is-date-object: 1.0.5
499 | is-regex: 1.1.4
500 | is-shared-array-buffer: 1.0.2
501 | isarray: 2.0.5
502 | object-is: 1.1.5
503 | object-keys: 1.1.1
504 | object.assign: 4.1.5
505 | regexp.prototype.flags: 1.5.1
506 | side-channel: 1.0.4
507 | which-boxed-primitive: 1.0.2
508 | which-collection: 1.0.1
509 | which-typed-array: 1.1.13
510 | dev: true
511 |
512 | /deep-is@0.1.4:
513 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
514 | dev: true
515 |
516 | /define-data-property@1.1.1:
517 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
518 | engines: {node: '>= 0.4'}
519 | dependencies:
520 | get-intrinsic: 1.2.2
521 | gopd: 1.0.1
522 | has-property-descriptors: 1.0.1
523 | dev: true
524 |
525 | /define-properties@1.2.1:
526 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
527 | engines: {node: '>= 0.4'}
528 | dependencies:
529 | define-data-property: 1.1.1
530 | has-property-descriptors: 1.0.1
531 | object-keys: 1.1.1
532 | dev: true
533 |
534 | /defined@1.0.1:
535 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
536 | dev: true
537 |
538 | /dir-glob@3.0.1:
539 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
540 | engines: {node: '>=8'}
541 | dependencies:
542 | path-type: 4.0.0
543 | dev: true
544 |
545 | /doctrine@3.0.0:
546 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
547 | engines: {node: '>=6.0.0'}
548 | dependencies:
549 | esutils: 2.0.3
550 | dev: true
551 |
552 | /dotignore@0.1.2:
553 | resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==}
554 | hasBin: true
555 | dependencies:
556 | minimatch: 3.1.2
557 | dev: true
558 |
559 | /eastasianwidth@0.2.0:
560 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
561 | dev: true
562 |
563 | /emoji-regex@8.0.0:
564 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
565 | dev: true
566 |
567 | /emoji-regex@9.2.2:
568 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
569 | dev: true
570 |
571 | /env-paths@2.2.1:
572 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
573 | engines: {node: '>=6'}
574 | dev: true
575 |
576 | /errno@0.1.8:
577 | resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
578 | hasBin: true
579 | requiresBuild: true
580 | dependencies:
581 | prr: 1.0.1
582 | dev: true
583 | optional: true
584 |
585 | /error-ex@1.3.2:
586 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
587 | dependencies:
588 | is-arrayish: 0.2.1
589 | dev: true
590 |
591 | /es-abstract@1.22.3:
592 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
593 | engines: {node: '>= 0.4'}
594 | dependencies:
595 | array-buffer-byte-length: 1.0.0
596 | arraybuffer.prototype.slice: 1.0.2
597 | available-typed-arrays: 1.0.5
598 | call-bind: 1.0.5
599 | es-set-tostringtag: 2.0.2
600 | es-to-primitive: 1.2.1
601 | function.prototype.name: 1.1.6
602 | get-intrinsic: 1.2.2
603 | get-symbol-description: 1.0.0
604 | globalthis: 1.0.3
605 | gopd: 1.0.1
606 | has-property-descriptors: 1.0.1
607 | has-proto: 1.0.1
608 | has-symbols: 1.0.3
609 | hasown: 2.0.0
610 | internal-slot: 1.0.6
611 | is-array-buffer: 3.0.2
612 | is-callable: 1.2.7
613 | is-negative-zero: 2.0.2
614 | is-regex: 1.1.4
615 | is-shared-array-buffer: 1.0.2
616 | is-string: 1.0.7
617 | is-typed-array: 1.1.12
618 | is-weakref: 1.0.2
619 | object-inspect: 1.13.1
620 | object-keys: 1.1.1
621 | object.assign: 4.1.5
622 | regexp.prototype.flags: 1.5.1
623 | safe-array-concat: 1.1.0
624 | safe-regex-test: 1.0.2
625 | string.prototype.trim: 1.2.8
626 | string.prototype.trimend: 1.0.7
627 | string.prototype.trimstart: 1.0.7
628 | typed-array-buffer: 1.0.0
629 | typed-array-byte-length: 1.0.0
630 | typed-array-byte-offset: 1.0.0
631 | typed-array-length: 1.0.4
632 | unbox-primitive: 1.0.2
633 | which-typed-array: 1.1.13
634 | dev: true
635 |
636 | /es-get-iterator@1.1.3:
637 | resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
638 | dependencies:
639 | call-bind: 1.0.5
640 | get-intrinsic: 1.2.2
641 | has-symbols: 1.0.3
642 | is-arguments: 1.1.1
643 | is-map: 2.0.2
644 | is-set: 2.0.2
645 | is-string: 1.0.7
646 | isarray: 2.0.5
647 | stop-iteration-iterator: 1.0.0
648 | dev: true
649 |
650 | /es-set-tostringtag@2.0.2:
651 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
652 | engines: {node: '>= 0.4'}
653 | dependencies:
654 | get-intrinsic: 1.2.2
655 | has-tostringtag: 1.0.0
656 | hasown: 2.0.0
657 | dev: true
658 |
659 | /es-to-primitive@1.2.1:
660 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
661 | engines: {node: '>= 0.4'}
662 | dependencies:
663 | is-callable: 1.2.7
664 | is-date-object: 1.0.5
665 | is-symbol: 1.0.4
666 | dev: true
667 |
668 | /escape-string-regexp@1.0.5:
669 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
670 | engines: {node: '>=0.8.0'}
671 | dev: true
672 |
673 | /escape-string-regexp@4.0.0:
674 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
675 | engines: {node: '>=10'}
676 | dev: true
677 |
678 | /eslint-scope@7.2.2:
679 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
680 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
681 | dependencies:
682 | esrecurse: 4.3.0
683 | estraverse: 5.3.0
684 | dev: true
685 |
686 | /eslint-visitor-keys@3.4.3:
687 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
688 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
689 | dev: true
690 |
691 | /eslint@8.56.0:
692 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
693 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
694 | hasBin: true
695 | dependencies:
696 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
697 | '@eslint-community/regexpp': 4.10.0
698 | '@eslint/eslintrc': 2.1.4
699 | '@eslint/js': 8.56.0
700 | '@humanwhocodes/config-array': 0.11.14
701 | '@humanwhocodes/module-importer': 1.0.1
702 | '@nodelib/fs.walk': 1.2.8
703 | '@ungap/structured-clone': 1.2.0
704 | ajv: 6.12.6
705 | chalk: 4.1.2
706 | cross-spawn: 7.0.3
707 | debug: 4.3.4
708 | doctrine: 3.0.0
709 | escape-string-regexp: 4.0.0
710 | eslint-scope: 7.2.2
711 | eslint-visitor-keys: 3.4.3
712 | espree: 9.6.1
713 | esquery: 1.5.0
714 | esutils: 2.0.3
715 | fast-deep-equal: 3.1.3
716 | file-entry-cache: 6.0.1
717 | find-up: 5.0.0
718 | glob-parent: 6.0.2
719 | globals: 13.24.0
720 | graphemer: 1.4.0
721 | ignore: 5.3.0
722 | imurmurhash: 0.1.4
723 | is-glob: 4.0.3
724 | is-path-inside: 3.0.3
725 | js-yaml: 4.1.0
726 | json-stable-stringify-without-jsonify: 1.0.1
727 | levn: 0.4.1
728 | lodash.merge: 4.6.2
729 | minimatch: 3.1.2
730 | natural-compare: 1.4.0
731 | optionator: 0.9.3
732 | strip-ansi: 6.0.1
733 | text-table: 0.2.0
734 | transitivePeerDependencies:
735 | - supports-color
736 | dev: true
737 |
738 | /espree@9.6.1:
739 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
740 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
741 | dependencies:
742 | acorn: 8.11.3
743 | acorn-jsx: 5.3.2(acorn@8.11.3)
744 | eslint-visitor-keys: 3.4.3
745 | dev: true
746 |
747 | /esquery@1.5.0:
748 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
749 | engines: {node: '>=0.10'}
750 | dependencies:
751 | estraverse: 5.3.0
752 | dev: true
753 |
754 | /esrecurse@4.3.0:
755 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
756 | engines: {node: '>=4.0'}
757 | dependencies:
758 | estraverse: 5.3.0
759 | dev: true
760 |
761 | /estraverse@5.3.0:
762 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
763 | engines: {node: '>=4.0'}
764 | dev: true
765 |
766 | /esutils@2.0.3:
767 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
768 | engines: {node: '>=0.10.0'}
769 | dev: true
770 |
771 | /fast-deep-equal@3.1.3:
772 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
773 | dev: true
774 |
775 | /fast-glob@3.3.2:
776 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
777 | engines: {node: '>=8.6.0'}
778 | dependencies:
779 | '@nodelib/fs.stat': 2.0.5
780 | '@nodelib/fs.walk': 1.2.8
781 | glob-parent: 5.1.2
782 | merge2: 1.4.1
783 | micromatch: 4.0.5
784 | dev: true
785 |
786 | /fast-json-stable-stringify@2.1.0:
787 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
788 | dev: true
789 |
790 | /fast-levenshtein@2.0.6:
791 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
792 | dev: true
793 |
794 | /fastest-levenshtein@1.0.16:
795 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
796 | engines: {node: '>= 4.9.1'}
797 | dev: true
798 |
799 | /fastq@1.16.0:
800 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==}
801 | dependencies:
802 | reusify: 1.0.4
803 | dev: true
804 |
805 | /file-entry-cache@6.0.1:
806 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
807 | engines: {node: ^10.12.0 || >=12.0.0}
808 | dependencies:
809 | flat-cache: 3.2.0
810 | dev: true
811 |
812 | /file-entry-cache@8.0.0:
813 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
814 | engines: {node: '>=16.0.0'}
815 | dependencies:
816 | flat-cache: 4.0.0
817 | dev: true
818 |
819 | /fill-range@7.1.1:
820 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
821 | engines: {node: '>=8'}
822 | dependencies:
823 | to-regex-range: 5.0.1
824 | dev: true
825 |
826 | /find-up@5.0.0:
827 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
828 | engines: {node: '>=10'}
829 | dependencies:
830 | locate-path: 6.0.0
831 | path-exists: 4.0.0
832 | dev: true
833 |
834 | /flat-cache@3.2.0:
835 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
836 | engines: {node: ^10.12.0 || >=12.0.0}
837 | dependencies:
838 | flatted: 3.2.9
839 | keyv: 4.5.4
840 | rimraf: 3.0.2
841 | dev: true
842 |
843 | /flat-cache@4.0.0:
844 | resolution: {integrity: sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==}
845 | engines: {node: '>=16'}
846 | dependencies:
847 | flatted: 3.2.9
848 | keyv: 4.5.4
849 | rimraf: 5.0.5
850 | dev: true
851 |
852 | /flatted@3.2.9:
853 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
854 | dev: true
855 |
856 | /for-each@0.3.3:
857 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
858 | dependencies:
859 | is-callable: 1.2.7
860 | dev: true
861 |
862 | /foreground-child@3.1.1:
863 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
864 | engines: {node: '>=14'}
865 | dependencies:
866 | cross-spawn: 7.0.3
867 | signal-exit: 4.1.0
868 | dev: true
869 |
870 | /fs.realpath@1.0.0:
871 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
872 | dev: true
873 |
874 | /function-bind@1.1.2:
875 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
876 | dev: true
877 |
878 | /function.prototype.name@1.1.6:
879 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
880 | engines: {node: '>= 0.4'}
881 | dependencies:
882 | call-bind: 1.0.5
883 | define-properties: 1.2.1
884 | es-abstract: 1.22.3
885 | functions-have-names: 1.2.3
886 | dev: true
887 |
888 | /functions-have-names@1.2.3:
889 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
890 | dev: true
891 |
892 | /get-intrinsic@1.2.2:
893 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
894 | dependencies:
895 | function-bind: 1.1.2
896 | has-proto: 1.0.1
897 | has-symbols: 1.0.3
898 | hasown: 2.0.0
899 | dev: true
900 |
901 | /get-package-type@0.1.0:
902 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
903 | engines: {node: '>=8.0.0'}
904 | dev: true
905 |
906 | /get-symbol-description@1.0.0:
907 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
908 | engines: {node: '>= 0.4'}
909 | dependencies:
910 | call-bind: 1.0.5
911 | get-intrinsic: 1.2.2
912 | dev: true
913 |
914 | /glob-parent@5.1.2:
915 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
916 | engines: {node: '>= 6'}
917 | dependencies:
918 | is-glob: 4.0.3
919 | dev: true
920 |
921 | /glob-parent@6.0.2:
922 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
923 | engines: {node: '>=10.13.0'}
924 | dependencies:
925 | is-glob: 4.0.3
926 | dev: true
927 |
928 | /glob@10.3.10:
929 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
930 | engines: {node: '>=16 || 14 >=14.17'}
931 | hasBin: true
932 | dependencies:
933 | foreground-child: 3.1.1
934 | jackspeak: 2.3.6
935 | minimatch: 9.0.3
936 | minipass: 7.0.4
937 | path-scurry: 1.10.1
938 | dev: true
939 |
940 | /glob@7.2.3:
941 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
942 | dependencies:
943 | fs.realpath: 1.0.0
944 | inflight: 1.0.6
945 | inherits: 2.0.4
946 | minimatch: 3.1.2
947 | once: 1.4.0
948 | path-is-absolute: 1.0.1
949 | dev: true
950 |
951 | /global-modules@2.0.0:
952 | resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
953 | engines: {node: '>=6'}
954 | dependencies:
955 | global-prefix: 3.0.0
956 | dev: true
957 |
958 | /global-prefix@3.0.0:
959 | resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
960 | engines: {node: '>=6'}
961 | dependencies:
962 | ini: 1.3.8
963 | kind-of: 6.0.3
964 | which: 1.3.1
965 | dev: true
966 |
967 | /globals@13.24.0:
968 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
969 | engines: {node: '>=8'}
970 | dependencies:
971 | type-fest: 0.20.2
972 | dev: true
973 |
974 | /globalthis@1.0.3:
975 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
976 | engines: {node: '>= 0.4'}
977 | dependencies:
978 | define-properties: 1.2.1
979 | dev: true
980 |
981 | /globby@11.1.0:
982 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
983 | engines: {node: '>=10'}
984 | dependencies:
985 | array-union: 2.1.0
986 | dir-glob: 3.0.1
987 | fast-glob: 3.3.2
988 | ignore: 5.3.0
989 | merge2: 1.4.1
990 | slash: 3.0.0
991 | dev: true
992 |
993 | /globjoin@0.1.4:
994 | resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
995 | dev: true
996 |
997 | /gopd@1.0.1:
998 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
999 | dependencies:
1000 | get-intrinsic: 1.2.2
1001 | dev: true
1002 |
1003 | /graceful-fs@4.2.11:
1004 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1005 | requiresBuild: true
1006 | dev: true
1007 | optional: true
1008 |
1009 | /graphemer@1.4.0:
1010 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1011 | dev: true
1012 |
1013 | /has-bigints@1.0.2:
1014 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1015 | dev: true
1016 |
1017 | /has-dynamic-import@2.1.0:
1018 | resolution: {integrity: sha512-su0anMkNEnJKZ/rB99jn3y6lV/J8Ro96hBJ28YAeVzj5rWxH+YL/AdCyiYYA1HDLV9YhmvqpWSJJj2KLo1MX6g==}
1019 | engines: {node: '>= 0.4'}
1020 | dependencies:
1021 | call-bind: 1.0.5
1022 | get-intrinsic: 1.2.2
1023 | dev: true
1024 |
1025 | /has-flag@3.0.0:
1026 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1027 | engines: {node: '>=4'}
1028 | dev: true
1029 |
1030 | /has-flag@4.0.0:
1031 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1032 | engines: {node: '>=8'}
1033 | dev: true
1034 |
1035 | /has-property-descriptors@1.0.1:
1036 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
1037 | dependencies:
1038 | get-intrinsic: 1.2.2
1039 | dev: true
1040 |
1041 | /has-proto@1.0.1:
1042 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1043 | engines: {node: '>= 0.4'}
1044 | dev: true
1045 |
1046 | /has-symbols@1.0.3:
1047 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1048 | engines: {node: '>= 0.4'}
1049 | dev: true
1050 |
1051 | /has-tostringtag@1.0.0:
1052 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1053 | engines: {node: '>= 0.4'}
1054 | dependencies:
1055 | has-symbols: 1.0.3
1056 | dev: true
1057 |
1058 | /hasown@2.0.0:
1059 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
1060 | engines: {node: '>= 0.4'}
1061 | dependencies:
1062 | function-bind: 1.1.2
1063 | dev: true
1064 |
1065 | /html-tags@3.3.1:
1066 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
1067 | engines: {node: '>=8'}
1068 | dev: true
1069 |
1070 | /iconv-lite@0.6.3:
1071 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1072 | engines: {node: '>=0.10.0'}
1073 | requiresBuild: true
1074 | dependencies:
1075 | safer-buffer: 2.1.2
1076 | dev: true
1077 | optional: true
1078 |
1079 | /ignore@5.3.0:
1080 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
1081 | engines: {node: '>= 4'}
1082 | dev: true
1083 |
1084 | /image-size@0.5.5:
1085 | resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
1086 | engines: {node: '>=0.10.0'}
1087 | hasBin: true
1088 | requiresBuild: true
1089 | dev: true
1090 | optional: true
1091 |
1092 | /import-fresh@3.3.0:
1093 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1094 | engines: {node: '>=6'}
1095 | dependencies:
1096 | parent-module: 1.0.1
1097 | resolve-from: 4.0.0
1098 | dev: true
1099 |
1100 | /imurmurhash@0.1.4:
1101 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1102 | engines: {node: '>=0.8.19'}
1103 | dev: true
1104 |
1105 | /inflight@1.0.6:
1106 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1107 | dependencies:
1108 | once: 1.4.0
1109 | wrappy: 1.0.2
1110 | dev: true
1111 |
1112 | /inherits@2.0.4:
1113 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1114 | dev: true
1115 |
1116 | /ini@1.3.8:
1117 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
1118 | dev: true
1119 |
1120 | /internal-slot@1.0.6:
1121 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
1122 | engines: {node: '>= 0.4'}
1123 | dependencies:
1124 | get-intrinsic: 1.2.2
1125 | hasown: 2.0.0
1126 | side-channel: 1.0.4
1127 | dev: true
1128 |
1129 | /is-arguments@1.1.1:
1130 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
1131 | engines: {node: '>= 0.4'}
1132 | dependencies:
1133 | call-bind: 1.0.5
1134 | has-tostringtag: 1.0.0
1135 | dev: true
1136 |
1137 | /is-array-buffer@3.0.2:
1138 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
1139 | dependencies:
1140 | call-bind: 1.0.5
1141 | get-intrinsic: 1.2.2
1142 | is-typed-array: 1.1.12
1143 | dev: true
1144 |
1145 | /is-arrayish@0.2.1:
1146 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1147 | dev: true
1148 |
1149 | /is-bigint@1.0.4:
1150 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1151 | dependencies:
1152 | has-bigints: 1.0.2
1153 | dev: true
1154 |
1155 | /is-boolean-object@1.1.2:
1156 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1157 | engines: {node: '>= 0.4'}
1158 | dependencies:
1159 | call-bind: 1.0.5
1160 | has-tostringtag: 1.0.0
1161 | dev: true
1162 |
1163 | /is-callable@1.2.7:
1164 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1165 | engines: {node: '>= 0.4'}
1166 | dev: true
1167 |
1168 | /is-core-module@2.13.1:
1169 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1170 | dependencies:
1171 | hasown: 2.0.0
1172 | dev: true
1173 |
1174 | /is-date-object@1.0.5:
1175 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1176 | engines: {node: '>= 0.4'}
1177 | dependencies:
1178 | has-tostringtag: 1.0.0
1179 | dev: true
1180 |
1181 | /is-extglob@2.1.1:
1182 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1183 | engines: {node: '>=0.10.0'}
1184 | dev: true
1185 |
1186 | /is-fullwidth-code-point@3.0.0:
1187 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1188 | engines: {node: '>=8'}
1189 | dev: true
1190 |
1191 | /is-glob@4.0.3:
1192 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1193 | engines: {node: '>=0.10.0'}
1194 | dependencies:
1195 | is-extglob: 2.1.1
1196 | dev: true
1197 |
1198 | /is-map@2.0.2:
1199 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
1200 | dev: true
1201 |
1202 | /is-negative-zero@2.0.2:
1203 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1204 | engines: {node: '>= 0.4'}
1205 | dev: true
1206 |
1207 | /is-number-object@1.0.7:
1208 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1209 | engines: {node: '>= 0.4'}
1210 | dependencies:
1211 | has-tostringtag: 1.0.0
1212 | dev: true
1213 |
1214 | /is-number@7.0.0:
1215 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1216 | engines: {node: '>=0.12.0'}
1217 | dev: true
1218 |
1219 | /is-path-inside@3.0.3:
1220 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1221 | engines: {node: '>=8'}
1222 | dev: true
1223 |
1224 | /is-plain-object@5.0.0:
1225 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
1226 | engines: {node: '>=0.10.0'}
1227 | dev: true
1228 |
1229 | /is-regex@1.1.4:
1230 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1231 | engines: {node: '>= 0.4'}
1232 | dependencies:
1233 | call-bind: 1.0.5
1234 | has-tostringtag: 1.0.0
1235 | dev: true
1236 |
1237 | /is-set@2.0.2:
1238 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
1239 | dev: true
1240 |
1241 | /is-shared-array-buffer@1.0.2:
1242 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1243 | dependencies:
1244 | call-bind: 1.0.5
1245 | dev: true
1246 |
1247 | /is-string@1.0.7:
1248 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1249 | engines: {node: '>= 0.4'}
1250 | dependencies:
1251 | has-tostringtag: 1.0.0
1252 | dev: true
1253 |
1254 | /is-symbol@1.0.4:
1255 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1256 | engines: {node: '>= 0.4'}
1257 | dependencies:
1258 | has-symbols: 1.0.3
1259 | dev: true
1260 |
1261 | /is-typed-array@1.1.12:
1262 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
1263 | engines: {node: '>= 0.4'}
1264 | dependencies:
1265 | which-typed-array: 1.1.13
1266 | dev: true
1267 |
1268 | /is-weakmap@2.0.1:
1269 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
1270 | dev: true
1271 |
1272 | /is-weakref@1.0.2:
1273 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1274 | dependencies:
1275 | call-bind: 1.0.5
1276 | dev: true
1277 |
1278 | /is-weakset@2.0.2:
1279 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
1280 | dependencies:
1281 | call-bind: 1.0.5
1282 | get-intrinsic: 1.2.2
1283 | dev: true
1284 |
1285 | /is-what@3.14.1:
1286 | resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
1287 | dev: true
1288 |
1289 | /isarray@2.0.5:
1290 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1291 | dev: true
1292 |
1293 | /isexe@2.0.0:
1294 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1295 | dev: true
1296 |
1297 | /jackspeak@2.3.6:
1298 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
1299 | engines: {node: '>=14'}
1300 | dependencies:
1301 | '@isaacs/cliui': 8.0.2
1302 | optionalDependencies:
1303 | '@pkgjs/parseargs': 0.11.0
1304 | dev: true
1305 |
1306 | /js-tokens@4.0.0:
1307 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1308 | dev: true
1309 |
1310 | /js-yaml@4.1.0:
1311 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1312 | hasBin: true
1313 | dependencies:
1314 | argparse: 2.0.1
1315 | dev: true
1316 |
1317 | /json-buffer@3.0.1:
1318 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1319 | dev: true
1320 |
1321 | /json-parse-even-better-errors@2.3.1:
1322 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1323 | dev: true
1324 |
1325 | /json-schema-traverse@0.4.1:
1326 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1327 | dev: true
1328 |
1329 | /json-schema-traverse@1.0.0:
1330 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
1331 | dev: true
1332 |
1333 | /json-stable-stringify-without-jsonify@1.0.1:
1334 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1335 | dev: true
1336 |
1337 | /keyv@4.5.4:
1338 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1339 | dependencies:
1340 | json-buffer: 3.0.1
1341 | dev: true
1342 |
1343 | /kind-of@6.0.3:
1344 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
1345 | engines: {node: '>=0.10.0'}
1346 | dev: true
1347 |
1348 | /known-css-properties@0.29.0:
1349 | resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==}
1350 | dev: true
1351 |
1352 | /less@4.2.0:
1353 | resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==}
1354 | engines: {node: '>=6'}
1355 | hasBin: true
1356 | dependencies:
1357 | copy-anything: 2.0.6
1358 | parse-node-version: 1.0.1
1359 | tslib: 2.6.2
1360 | optionalDependencies:
1361 | errno: 0.1.8
1362 | graceful-fs: 4.2.11
1363 | image-size: 0.5.5
1364 | make-dir: 2.1.0
1365 | mime: 1.6.0
1366 | needle: 3.3.1
1367 | source-map: 0.6.1
1368 | dev: true
1369 |
1370 | /levn@0.4.1:
1371 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1372 | engines: {node: '>= 0.8.0'}
1373 | dependencies:
1374 | prelude-ls: 1.2.1
1375 | type-check: 0.4.0
1376 | dev: true
1377 |
1378 | /lilconfig@2.1.0:
1379 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1380 | engines: {node: '>=10'}
1381 | dev: true
1382 |
1383 | /lines-and-columns@1.2.4:
1384 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1385 | dev: true
1386 |
1387 | /locate-path@6.0.0:
1388 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1389 | engines: {node: '>=10'}
1390 | dependencies:
1391 | p-locate: 5.0.0
1392 | dev: true
1393 |
1394 | /lodash.merge@4.6.2:
1395 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1396 | dev: true
1397 |
1398 | /lodash.truncate@4.4.2:
1399 | resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
1400 | dev: true
1401 |
1402 | /lru-cache@10.1.0:
1403 | resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
1404 | engines: {node: 14 || >=16.14}
1405 | dev: true
1406 |
1407 | /make-dir@2.1.0:
1408 | resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
1409 | engines: {node: '>=6'}
1410 | requiresBuild: true
1411 | dependencies:
1412 | pify: 4.0.1
1413 | semver: 5.7.2
1414 | dev: true
1415 | optional: true
1416 |
1417 | /mathml-tag-names@2.1.3:
1418 | resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
1419 | dev: true
1420 |
1421 | /mdn-data@2.0.30:
1422 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
1423 | dev: true
1424 |
1425 | /meow@13.1.0:
1426 | resolution: {integrity: sha512-o5R/R3Tzxq0PJ3v3qcQJtSvSE9nKOLSAaDuuoMzDVuGTwHdccMWcYomh9Xolng2tjT6O/Y83d+0coVGof6tqmA==}
1427 | engines: {node: '>=18'}
1428 | dev: true
1429 |
1430 | /merge2@1.4.1:
1431 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1432 | engines: {node: '>= 8'}
1433 | dev: true
1434 |
1435 | /micromatch@4.0.5:
1436 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1437 | engines: {node: '>=8.6'}
1438 | dependencies:
1439 | braces: 3.0.3
1440 | picomatch: 2.3.1
1441 | dev: true
1442 |
1443 | /mime@1.6.0:
1444 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
1445 | engines: {node: '>=4'}
1446 | hasBin: true
1447 | requiresBuild: true
1448 | dev: true
1449 | optional: true
1450 |
1451 | /minimatch@3.1.2:
1452 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1453 | dependencies:
1454 | brace-expansion: 1.1.11
1455 | dev: true
1456 |
1457 | /minimatch@9.0.3:
1458 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
1459 | engines: {node: '>=16 || 14 >=14.17'}
1460 | dependencies:
1461 | brace-expansion: 2.0.1
1462 | dev: true
1463 |
1464 | /minimist@1.2.8:
1465 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1466 | dev: true
1467 |
1468 | /minipass@7.0.4:
1469 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
1470 | engines: {node: '>=16 || 14 >=14.17'}
1471 | dev: true
1472 |
1473 | /mock-property@1.0.3:
1474 | resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==}
1475 | engines: {node: '>= 0.4'}
1476 | dependencies:
1477 | define-data-property: 1.1.1
1478 | functions-have-names: 1.2.3
1479 | gopd: 1.0.1
1480 | has-property-descriptors: 1.0.1
1481 | hasown: 2.0.0
1482 | isarray: 2.0.5
1483 | dev: true
1484 |
1485 | /ms@2.1.2:
1486 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1487 | dev: true
1488 |
1489 | /nanoid@3.3.7:
1490 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1491 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1492 | hasBin: true
1493 | dev: true
1494 |
1495 | /natural-compare@1.4.0:
1496 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1497 | dev: true
1498 |
1499 | /needle@3.3.1:
1500 | resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
1501 | engines: {node: '>= 4.4.x'}
1502 | hasBin: true
1503 | requiresBuild: true
1504 | dependencies:
1505 | iconv-lite: 0.6.3
1506 | sax: 1.3.0
1507 | dev: true
1508 | optional: true
1509 |
1510 | /normalize-path@3.0.0:
1511 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1512 | engines: {node: '>=0.10.0'}
1513 | dev: true
1514 |
1515 | /object-inspect@1.13.1:
1516 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
1517 | dev: true
1518 |
1519 | /object-is@1.1.5:
1520 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
1521 | engines: {node: '>= 0.4'}
1522 | dependencies:
1523 | call-bind: 1.0.5
1524 | define-properties: 1.2.1
1525 | dev: true
1526 |
1527 | /object-keys@1.1.1:
1528 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1529 | engines: {node: '>= 0.4'}
1530 | dev: true
1531 |
1532 | /object.assign@4.1.5:
1533 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
1534 | engines: {node: '>= 0.4'}
1535 | dependencies:
1536 | call-bind: 1.0.5
1537 | define-properties: 1.2.1
1538 | has-symbols: 1.0.3
1539 | object-keys: 1.1.1
1540 | dev: true
1541 |
1542 | /once@1.4.0:
1543 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1544 | dependencies:
1545 | wrappy: 1.0.2
1546 | dev: true
1547 |
1548 | /optionator@0.9.3:
1549 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
1550 | engines: {node: '>= 0.8.0'}
1551 | dependencies:
1552 | '@aashutoshrathi/word-wrap': 1.2.6
1553 | deep-is: 0.1.4
1554 | fast-levenshtein: 2.0.6
1555 | levn: 0.4.1
1556 | prelude-ls: 1.2.1
1557 | type-check: 0.4.0
1558 | dev: true
1559 |
1560 | /p-limit@3.1.0:
1561 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1562 | engines: {node: '>=10'}
1563 | dependencies:
1564 | yocto-queue: 0.1.0
1565 | dev: true
1566 |
1567 | /p-locate@5.0.0:
1568 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1569 | engines: {node: '>=10'}
1570 | dependencies:
1571 | p-limit: 3.1.0
1572 | dev: true
1573 |
1574 | /parent-module@1.0.1:
1575 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1576 | engines: {node: '>=6'}
1577 | dependencies:
1578 | callsites: 3.1.0
1579 | dev: true
1580 |
1581 | /parse-json@5.2.0:
1582 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1583 | engines: {node: '>=8'}
1584 | dependencies:
1585 | '@babel/code-frame': 7.23.5
1586 | error-ex: 1.3.2
1587 | json-parse-even-better-errors: 2.3.1
1588 | lines-and-columns: 1.2.4
1589 | dev: true
1590 |
1591 | /parse-node-version@1.0.1:
1592 | resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
1593 | engines: {node: '>= 0.10'}
1594 | dev: true
1595 |
1596 | /path-exists@4.0.0:
1597 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1598 | engines: {node: '>=8'}
1599 | dev: true
1600 |
1601 | /path-is-absolute@1.0.1:
1602 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1603 | engines: {node: '>=0.10.0'}
1604 | dev: true
1605 |
1606 | /path-key@3.1.1:
1607 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1608 | engines: {node: '>=8'}
1609 | dev: true
1610 |
1611 | /path-parse@1.0.7:
1612 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1613 | dev: true
1614 |
1615 | /path-scurry@1.10.1:
1616 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
1617 | engines: {node: '>=16 || 14 >=14.17'}
1618 | dependencies:
1619 | lru-cache: 10.1.0
1620 | minipass: 7.0.4
1621 | dev: true
1622 |
1623 | /path-type@4.0.0:
1624 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1625 | engines: {node: '>=8'}
1626 | dev: true
1627 |
1628 | /picocolors@1.0.0:
1629 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1630 |
1631 | /picomatch@2.3.1:
1632 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1633 | engines: {node: '>=8.6'}
1634 | dev: true
1635 |
1636 | /pify@4.0.1:
1637 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
1638 | engines: {node: '>=6'}
1639 | requiresBuild: true
1640 | dev: true
1641 | optional: true
1642 |
1643 | /postcss-resolve-nested-selector@0.1.1:
1644 | resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==}
1645 | dev: true
1646 |
1647 | /postcss-safe-parser@7.0.0(postcss@8.4.33):
1648 | resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==}
1649 | engines: {node: '>=18.0'}
1650 | peerDependencies:
1651 | postcss: ^8.4.31
1652 | dependencies:
1653 | postcss: 8.4.33
1654 | dev: true
1655 |
1656 | /postcss-selector-parser@6.0.15:
1657 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==}
1658 | engines: {node: '>=4'}
1659 | dependencies:
1660 | cssesc: 3.0.0
1661 | util-deprecate: 1.0.2
1662 | dev: true
1663 |
1664 | /postcss-value-parser@4.2.0:
1665 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1666 | dev: true
1667 |
1668 | /postcss@8.4.33:
1669 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
1670 | engines: {node: ^10 || ^12 || >=14}
1671 | dependencies:
1672 | nanoid: 3.3.7
1673 | picocolors: 1.0.0
1674 | source-map-js: 1.0.2
1675 | dev: true
1676 |
1677 | /prelude-ls@1.2.1:
1678 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1679 | engines: {node: '>= 0.8.0'}
1680 | dev: true
1681 |
1682 | /prr@1.0.1:
1683 | resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
1684 | requiresBuild: true
1685 | dev: true
1686 | optional: true
1687 |
1688 | /punycode@2.3.1:
1689 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1690 | engines: {node: '>=6'}
1691 | dev: true
1692 |
1693 | /queue-microtask@1.2.3:
1694 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1695 | dev: true
1696 |
1697 | /regexp.prototype.flags@1.5.1:
1698 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
1699 | engines: {node: '>= 0.4'}
1700 | dependencies:
1701 | call-bind: 1.0.5
1702 | define-properties: 1.2.1
1703 | set-function-name: 2.0.1
1704 | dev: true
1705 |
1706 | /require-from-string@2.0.2:
1707 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
1708 | engines: {node: '>=0.10.0'}
1709 | dev: true
1710 |
1711 | /resolve-from@4.0.0:
1712 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1713 | engines: {node: '>=4'}
1714 | dev: true
1715 |
1716 | /resolve-from@5.0.0:
1717 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1718 | engines: {node: '>=8'}
1719 | dev: true
1720 |
1721 | /resolve@2.0.0-next.5:
1722 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
1723 | hasBin: true
1724 | dependencies:
1725 | is-core-module: 2.13.1
1726 | path-parse: 1.0.7
1727 | supports-preserve-symlinks-flag: 1.0.0
1728 | dev: true
1729 |
1730 | /reusify@1.0.4:
1731 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1732 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1733 | dev: true
1734 |
1735 | /rimraf@3.0.2:
1736 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1737 | hasBin: true
1738 | dependencies:
1739 | glob: 7.2.3
1740 | dev: true
1741 |
1742 | /rimraf@5.0.5:
1743 | resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==}
1744 | engines: {node: '>=14'}
1745 | hasBin: true
1746 | dependencies:
1747 | glob: 10.3.10
1748 | dev: true
1749 |
1750 | /run-parallel@1.2.0:
1751 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1752 | dependencies:
1753 | queue-microtask: 1.2.3
1754 | dev: true
1755 |
1756 | /safe-array-concat@1.1.0:
1757 | resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
1758 | engines: {node: '>=0.4'}
1759 | dependencies:
1760 | call-bind: 1.0.5
1761 | get-intrinsic: 1.2.2
1762 | has-symbols: 1.0.3
1763 | isarray: 2.0.5
1764 | dev: true
1765 |
1766 | /safe-regex-test@1.0.2:
1767 | resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==}
1768 | engines: {node: '>= 0.4'}
1769 | dependencies:
1770 | call-bind: 1.0.5
1771 | get-intrinsic: 1.2.2
1772 | is-regex: 1.1.4
1773 | dev: true
1774 |
1775 | /safer-buffer@2.1.2:
1776 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1777 | requiresBuild: true
1778 | dev: true
1779 | optional: true
1780 |
1781 | /sax@1.3.0:
1782 | resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
1783 | requiresBuild: true
1784 | dev: true
1785 | optional: true
1786 |
1787 | /semver@5.7.2:
1788 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
1789 | hasBin: true
1790 | requiresBuild: true
1791 | dev: true
1792 | optional: true
1793 |
1794 | /set-function-length@1.2.0:
1795 | resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==}
1796 | engines: {node: '>= 0.4'}
1797 | dependencies:
1798 | define-data-property: 1.1.1
1799 | function-bind: 1.1.2
1800 | get-intrinsic: 1.2.2
1801 | gopd: 1.0.1
1802 | has-property-descriptors: 1.0.1
1803 | dev: true
1804 |
1805 | /set-function-name@2.0.1:
1806 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
1807 | engines: {node: '>= 0.4'}
1808 | dependencies:
1809 | define-data-property: 1.1.1
1810 | functions-have-names: 1.2.3
1811 | has-property-descriptors: 1.0.1
1812 | dev: true
1813 |
1814 | /shebang-command@2.0.0:
1815 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1816 | engines: {node: '>=8'}
1817 | dependencies:
1818 | shebang-regex: 3.0.0
1819 | dev: true
1820 |
1821 | /shebang-regex@3.0.0:
1822 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1823 | engines: {node: '>=8'}
1824 | dev: true
1825 |
1826 | /side-channel@1.0.4:
1827 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
1828 | dependencies:
1829 | call-bind: 1.0.5
1830 | get-intrinsic: 1.2.2
1831 | object-inspect: 1.13.1
1832 | dev: true
1833 |
1834 | /signal-exit@4.1.0:
1835 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1836 | engines: {node: '>=14'}
1837 | dev: true
1838 |
1839 | /slash@3.0.0:
1840 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1841 | engines: {node: '>=8'}
1842 | dev: true
1843 |
1844 | /slice-ansi@4.0.0:
1845 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
1846 | engines: {node: '>=10'}
1847 | dependencies:
1848 | ansi-styles: 4.3.0
1849 | astral-regex: 2.0.0
1850 | is-fullwidth-code-point: 3.0.0
1851 | dev: true
1852 |
1853 | /source-map-js@1.0.2:
1854 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1855 | engines: {node: '>=0.10.0'}
1856 | dev: true
1857 |
1858 | /source-map@0.6.1:
1859 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1860 | engines: {node: '>=0.10.0'}
1861 | requiresBuild: true
1862 | dev: true
1863 | optional: true
1864 |
1865 | /source-map@0.7.4:
1866 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
1867 | engines: {node: '>= 8'}
1868 | dev: true
1869 |
1870 | /stop-iteration-iterator@1.0.0:
1871 | resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
1872 | engines: {node: '>= 0.4'}
1873 | dependencies:
1874 | internal-slot: 1.0.6
1875 | dev: true
1876 |
1877 | /string-width@4.2.3:
1878 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1879 | engines: {node: '>=8'}
1880 | dependencies:
1881 | emoji-regex: 8.0.0
1882 | is-fullwidth-code-point: 3.0.0
1883 | strip-ansi: 6.0.1
1884 | dev: true
1885 |
1886 | /string-width@5.1.2:
1887 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1888 | engines: {node: '>=12'}
1889 | dependencies:
1890 | eastasianwidth: 0.2.0
1891 | emoji-regex: 9.2.2
1892 | strip-ansi: 7.1.0
1893 | dev: true
1894 |
1895 | /string.prototype.trim@1.2.8:
1896 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
1897 | engines: {node: '>= 0.4'}
1898 | dependencies:
1899 | call-bind: 1.0.5
1900 | define-properties: 1.2.1
1901 | es-abstract: 1.22.3
1902 | dev: true
1903 |
1904 | /string.prototype.trimend@1.0.7:
1905 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
1906 | dependencies:
1907 | call-bind: 1.0.5
1908 | define-properties: 1.2.1
1909 | es-abstract: 1.22.3
1910 | dev: true
1911 |
1912 | /string.prototype.trimstart@1.0.7:
1913 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
1914 | dependencies:
1915 | call-bind: 1.0.5
1916 | define-properties: 1.2.1
1917 | es-abstract: 1.22.3
1918 | dev: true
1919 |
1920 | /strip-ansi@6.0.1:
1921 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1922 | engines: {node: '>=8'}
1923 | dependencies:
1924 | ansi-regex: 5.0.1
1925 | dev: true
1926 |
1927 | /strip-ansi@7.1.0:
1928 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1929 | engines: {node: '>=12'}
1930 | dependencies:
1931 | ansi-regex: 6.0.1
1932 | dev: true
1933 |
1934 | /strip-color@0.1.0:
1935 | resolution: {integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==}
1936 | engines: {node: '>=0.10.0'}
1937 | dev: true
1938 |
1939 | /strip-json-comments@3.1.1:
1940 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1941 | engines: {node: '>=8'}
1942 | dev: true
1943 |
1944 | /stylelint@16.1.0:
1945 | resolution: {integrity: sha512-Sh1rRV0lN1qxz/QsuuooLWsIZ/ona7NKw/fRZd6y6PyXYdD2W0EAzJ8yJcwSx4Iw/muz0CF09VZ+z4EiTAcKmg==}
1946 | engines: {node: '>=18.12.0'}
1947 | hasBin: true
1948 | dependencies:
1949 | '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3)
1950 | '@csstools/css-tokenizer': 2.2.3
1951 | '@csstools/media-query-list-parser': 2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3)
1952 | '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.15)
1953 | balanced-match: 2.0.0
1954 | colord: 2.9.3
1955 | cosmiconfig: 9.0.0
1956 | css-functions-list: 3.2.1
1957 | css-tree: 2.3.1
1958 | debug: 4.3.4
1959 | fast-glob: 3.3.2
1960 | fastest-levenshtein: 1.0.16
1961 | file-entry-cache: 8.0.0
1962 | global-modules: 2.0.0
1963 | globby: 11.1.0
1964 | globjoin: 0.1.4
1965 | html-tags: 3.3.1
1966 | ignore: 5.3.0
1967 | imurmurhash: 0.1.4
1968 | is-plain-object: 5.0.0
1969 | known-css-properties: 0.29.0
1970 | mathml-tag-names: 2.1.3
1971 | meow: 13.1.0
1972 | micromatch: 4.0.5
1973 | normalize-path: 3.0.0
1974 | picocolors: 1.0.0
1975 | postcss: 8.4.33
1976 | postcss-resolve-nested-selector: 0.1.1
1977 | postcss-safe-parser: 7.0.0(postcss@8.4.33)
1978 | postcss-selector-parser: 6.0.15
1979 | postcss-value-parser: 4.2.0
1980 | resolve-from: 5.0.0
1981 | string-width: 4.2.3
1982 | strip-ansi: 7.1.0
1983 | supports-hyperlinks: 3.0.0
1984 | svg-tags: 1.0.0
1985 | table: 6.8.1
1986 | write-file-atomic: 5.0.1
1987 | transitivePeerDependencies:
1988 | - supports-color
1989 | - typescript
1990 | dev: true
1991 |
1992 | /supports-color@5.5.0:
1993 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1994 | engines: {node: '>=4'}
1995 | dependencies:
1996 | has-flag: 3.0.0
1997 | dev: true
1998 |
1999 | /supports-color@7.2.0:
2000 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2001 | engines: {node: '>=8'}
2002 | dependencies:
2003 | has-flag: 4.0.0
2004 | dev: true
2005 |
2006 | /supports-hyperlinks@3.0.0:
2007 | resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==}
2008 | engines: {node: '>=14.18'}
2009 | dependencies:
2010 | has-flag: 4.0.0
2011 | supports-color: 7.2.0
2012 | dev: true
2013 |
2014 | /supports-preserve-symlinks-flag@1.0.0:
2015 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2016 | engines: {node: '>= 0.4'}
2017 | dev: true
2018 |
2019 | /svg-tags@1.0.0:
2020 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
2021 | dev: true
2022 |
2023 | /table@6.8.1:
2024 | resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==}
2025 | engines: {node: '>=10.0.0'}
2026 | dependencies:
2027 | ajv: 8.12.0
2028 | lodash.truncate: 4.4.2
2029 | slice-ansi: 4.0.0
2030 | string-width: 4.2.3
2031 | strip-ansi: 6.0.1
2032 | dev: true
2033 |
2034 | /tape@5.7.3:
2035 | resolution: {integrity: sha512-un2/TkloCBIxbrLac88Z9WElQ85WLE4t+jjfgrmxrlInWGYQf9r9Wbycc/nNP3zap6GBb7qln7h85QoNBNZdHg==}
2036 | hasBin: true
2037 | dependencies:
2038 | '@ljharb/resumer': 0.0.1
2039 | '@ljharb/through': 2.3.11
2040 | array.prototype.every: 1.1.5
2041 | call-bind: 1.0.5
2042 | deep-equal: 2.2.3
2043 | defined: 1.0.1
2044 | dotignore: 0.1.2
2045 | for-each: 0.3.3
2046 | get-package-type: 0.1.0
2047 | glob: 7.2.3
2048 | has-dynamic-import: 2.1.0
2049 | hasown: 2.0.0
2050 | inherits: 2.0.4
2051 | is-regex: 1.1.4
2052 | minimist: 1.2.8
2053 | mock-property: 1.0.3
2054 | object-inspect: 1.13.1
2055 | object-is: 1.1.5
2056 | object-keys: 1.1.1
2057 | object.assign: 4.1.5
2058 | resolve: 2.0.0-next.5
2059 | string.prototype.trim: 1.2.8
2060 | dev: true
2061 |
2062 | /text-table@0.2.0:
2063 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2064 | dev: true
2065 |
2066 | /thenby@1.3.4:
2067 | resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==}
2068 | dev: false
2069 |
2070 | /to-regex-range@5.0.1:
2071 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2072 | engines: {node: '>=8.0'}
2073 | dependencies:
2074 | is-number: 7.0.0
2075 | dev: true
2076 |
2077 | /tslib@2.6.2:
2078 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
2079 | dev: true
2080 |
2081 | /type-check@0.4.0:
2082 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2083 | engines: {node: '>= 0.8.0'}
2084 | dependencies:
2085 | prelude-ls: 1.2.1
2086 | dev: true
2087 |
2088 | /type-fest@0.20.2:
2089 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2090 | engines: {node: '>=10'}
2091 | dev: true
2092 |
2093 | /typed-array-buffer@1.0.0:
2094 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
2095 | engines: {node: '>= 0.4'}
2096 | dependencies:
2097 | call-bind: 1.0.5
2098 | get-intrinsic: 1.2.2
2099 | is-typed-array: 1.1.12
2100 | dev: true
2101 |
2102 | /typed-array-byte-length@1.0.0:
2103 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
2104 | engines: {node: '>= 0.4'}
2105 | dependencies:
2106 | call-bind: 1.0.5
2107 | for-each: 0.3.3
2108 | has-proto: 1.0.1
2109 | is-typed-array: 1.1.12
2110 | dev: true
2111 |
2112 | /typed-array-byte-offset@1.0.0:
2113 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
2114 | engines: {node: '>= 0.4'}
2115 | dependencies:
2116 | available-typed-arrays: 1.0.5
2117 | call-bind: 1.0.5
2118 | for-each: 0.3.3
2119 | has-proto: 1.0.1
2120 | is-typed-array: 1.1.12
2121 | dev: true
2122 |
2123 | /typed-array-length@1.0.4:
2124 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
2125 | dependencies:
2126 | call-bind: 1.0.5
2127 | for-each: 0.3.3
2128 | is-typed-array: 1.1.12
2129 | dev: true
2130 |
2131 | /unbox-primitive@1.0.2:
2132 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2133 | dependencies:
2134 | call-bind: 1.0.5
2135 | has-bigints: 1.0.2
2136 | has-symbols: 1.0.3
2137 | which-boxed-primitive: 1.0.2
2138 | dev: true
2139 |
2140 | /uri-js@4.4.1:
2141 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2142 | dependencies:
2143 | punycode: 2.3.1
2144 | dev: true
2145 |
2146 | /util-deprecate@1.0.2:
2147 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2148 | dev: true
2149 |
2150 | /which-boxed-primitive@1.0.2:
2151 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2152 | dependencies:
2153 | is-bigint: 1.0.4
2154 | is-boolean-object: 1.1.2
2155 | is-number-object: 1.0.7
2156 | is-string: 1.0.7
2157 | is-symbol: 1.0.4
2158 | dev: true
2159 |
2160 | /which-collection@1.0.1:
2161 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
2162 | dependencies:
2163 | is-map: 2.0.2
2164 | is-set: 2.0.2
2165 | is-weakmap: 2.0.1
2166 | is-weakset: 2.0.2
2167 | dev: true
2168 |
2169 | /which-typed-array@1.1.13:
2170 | resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==}
2171 | engines: {node: '>= 0.4'}
2172 | dependencies:
2173 | available-typed-arrays: 1.0.5
2174 | call-bind: 1.0.5
2175 | for-each: 0.3.3
2176 | gopd: 1.0.1
2177 | has-tostringtag: 1.0.0
2178 | dev: true
2179 |
2180 | /which@1.3.1:
2181 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
2182 | hasBin: true
2183 | dependencies:
2184 | isexe: 2.0.0
2185 | dev: true
2186 |
2187 | /which@2.0.2:
2188 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2189 | engines: {node: '>= 8'}
2190 | hasBin: true
2191 | dependencies:
2192 | isexe: 2.0.0
2193 | dev: true
2194 |
2195 | /wrap-ansi@7.0.0:
2196 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2197 | engines: {node: '>=10'}
2198 | dependencies:
2199 | ansi-styles: 4.3.0
2200 | string-width: 4.2.3
2201 | strip-ansi: 6.0.1
2202 | dev: true
2203 |
2204 | /wrap-ansi@8.1.0:
2205 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2206 | engines: {node: '>=12'}
2207 | dependencies:
2208 | ansi-styles: 6.2.1
2209 | string-width: 5.1.2
2210 | strip-ansi: 7.1.0
2211 | dev: true
2212 |
2213 | /wrappy@1.0.2:
2214 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2215 | dev: true
2216 |
2217 | /write-file-atomic@5.0.1:
2218 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
2219 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
2220 | dependencies:
2221 | imurmurhash: 0.1.4
2222 | signal-exit: 4.1.0
2223 | dev: true
2224 |
2225 | /yocto-queue@0.1.0:
2226 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2227 | engines: {node: '>=10'}
2228 | dev: true
2229 |
--------------------------------------------------------------------------------
/test/fixtures/forVisual.css:
--------------------------------------------------------------------------------
1 | .baz {
2 | top:0px;
3 | }
4 | .foo {
5 | background: orange;
6 | }
7 | .bar {
8 | color:pink;
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixtures/less-bar.less:
--------------------------------------------------------------------------------
1 | @import './less-foo';
2 |
3 | .baz {
4 | background: orange;
5 | }
6 |
--------------------------------------------------------------------------------
/test/fixtures/less-foo.less:
--------------------------------------------------------------------------------
1 | a {
2 | color: pink;
3 | }
4 |
5 | #wahoo {
6 | font-size: 10rem;
7 | }
8 |
--------------------------------------------------------------------------------
/test/formatter.js:
--------------------------------------------------------------------------------
1 | var test = require('tape');
2 | var formatter = require('../lib/formatter');
3 | var path = require('path');
4 | var sourceMap = require('source-map');
5 | var postcss = require('postcss');
6 | var stripColor = require('strip-color');
7 |
8 | var defaultFormatter = formatter();
9 |
10 | var colorlessWarning = '⚠';
11 | var colorlessError = '✖';
12 |
13 | var basicMessages = [
14 | {
15 | type: 'warning',
16 | plugin: 'foo',
17 | text: 'foo warning',
18 | },
19 | {
20 | type: 'warning',
21 | plugin: 'bar',
22 | text: 'bar warning',
23 | },
24 | {
25 | type: 'warning',
26 | plugin: 'baz',
27 | text: 'baz warning',
28 | },
29 | {
30 | type: 'error',
31 | plugin: 'baz',
32 | text: 'baz error',
33 | },
34 | ];
35 |
36 | var basicOutput = '\n' +
37 | '\n' + colorlessWarning + ' foo warning [foo]' +
38 | '\n' + colorlessWarning + ' bar warning [bar]' +
39 | '\n' + colorlessWarning + ' baz warning [baz]' +
40 | '\n' + colorlessError + ' baz error [baz]' +
41 | '\n';
42 |
43 | var basicOutputMinimal = '\n' +
44 | '\nfoo warning' +
45 | '\nbar warning' +
46 | '\nbaz warning' +
47 | '\nbaz error' +
48 | '\n';
49 |
50 | test('defaultFormatter with simple mock messages', function(t) {
51 | t.equal(
52 | stripColor(defaultFormatter({
53 | messages: basicMessages,
54 | source: '',
55 | })),
56 | basicOutput,
57 | 'basic'
58 | );
59 |
60 | t.end();
61 | });
62 |
63 | test('defaultFormatter with noIcon and noPlugin and simple mock messages', function(t) {
64 | var minimalFormatter = formatter({
65 | noIcon: true,
66 | noPlugin: true,
67 | });
68 |
69 | t.equal(
70 | stripColor(minimalFormatter({
71 | messages: basicMessages,
72 | source: '',
73 | })),
74 | basicOutputMinimal,
75 | 'basic'
76 | );
77 |
78 | t.end();
79 | });
80 |
81 | var complexMessages = [
82 | {
83 | type: 'warning',
84 | plugin: 'foo',
85 | text: 'foo warning',
86 | line: 3,
87 | column: 5,
88 | }, {
89 | type: 'error',
90 | plugin: 'baz',
91 | text: 'baz error',
92 | }, {
93 | type: 'warning',
94 | plugin: 'bar',
95 | text: 'bar warning',
96 | line: 1,
97 | column: 99,
98 | }, {
99 | type: 'warning',
100 | plugin: 'foo',
101 | text: 'ha warning',
102 | line: 8,
103 | column: 13,
104 | },
105 | ];
106 |
107 | var complexOutput = '\nstyle/rainbows/horses.css' +
108 | '\n' + colorlessError + ' baz error [baz]' +
109 | '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
110 | '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
111 | '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
112 | '\n';
113 |
114 | var noPositionSortOutput = '\nstyle/rainbows/horses.css' +
115 | '\n' + colorlessError + ' baz error [baz]' +
116 | '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
117 | '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
118 | '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
119 | '\n';
120 |
121 | var positionlessLastOutput = '\nstyle/rainbows/horses.css' +
122 | '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
123 | '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
124 | '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
125 | '\n' + colorlessError + ' baz error [baz]' +
126 | '\n';
127 |
128 | var noSortOutput = '\nstyle/rainbows/horses.css' +
129 | '\n3:5\t' + colorlessWarning + ' foo warning [foo]' +
130 | '\n' + colorlessError + ' baz error [baz]' +
131 | '\n1:99\t' + colorlessWarning + ' bar warning [bar]' +
132 | '\n8:13\t' + colorlessWarning + ' ha warning [foo]' +
133 | '\n';
134 |
135 | test('defaultFormatter with complex mock', function(t) {
136 | t.equal(
137 | stripColor(defaultFormatter({
138 | messages: complexMessages,
139 | source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
140 | })),
141 | complexOutput,
142 | 'complex'
143 | );
144 |
145 | var noPositionSortFormatter = formatter({ sortByPosition: false });
146 |
147 | t.equal(
148 | stripColor(noPositionSortFormatter({
149 | messages: complexMessages,
150 | source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
151 | })),
152 | noPositionSortOutput,
153 | '`sortByPosition: false` complex'
154 | );
155 |
156 | var positionlessLastFormatter = formatter({ positionless: 'last' });
157 | t.equal(
158 | stripColor(positionlessLastFormatter({
159 | messages: complexMessages,
160 | source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
161 | })),
162 | positionlessLastOutput,
163 | '`positionless: last` complex'
164 | );
165 |
166 | var noSortFormatter = formatter({ sortByPosition: false, positionless: 'any' });
167 | t.equal(
168 | stripColor(noSortFormatter({
169 | messages: complexMessages,
170 | source: path.resolve(process.cwd(), 'style/rainbows/horses.css'),
171 | })),
172 | noSortOutput,
173 | 'unsorted complex'
174 | );
175 |
176 | t.end();
177 | });
178 |
179 | var onRootMessages = [
180 | {
181 | type: 'warning',
182 | text: 'blergh',
183 | node: {
184 | type: 'root',
185 | // warnings on root do not have start position
186 | source: {},
187 | },
188 | plugin: 'reject-root',
189 | },
190 | ];
191 |
192 | var onRootResult = '\n' +
193 | '\n' + colorlessWarning + ' blergh [reject-root]\n';
194 |
195 | test('defaultFormatter with mocked warning on root', function(t) {
196 | t.equal(
197 | stripColor(defaultFormatter({
198 | messages: onRootMessages,
199 | source: '',
200 | })),
201 | onRootResult
202 | );
203 | t.end();
204 | });
205 |
206 | var oneMessage = [
207 | {
208 | type: 'warning',
209 | plugin: 'foo',
210 | text: 'foo warning',
211 | },
212 | ];
213 |
214 | var oneMessageResult = '\n' + colorlessWarning + ' foo warning [foo]\n';
215 |
216 | test('defaultFormatter with undefined source', function(t) {
217 | t.equal(
218 | stripColor(defaultFormatter({
219 | messages: oneMessage,
220 | source: undefined,
221 | })),
222 | oneMessageResult
223 | );
224 | t.end();
225 | });
226 |
227 | test('defaultFormatter with no messages', function(t) {
228 | t.equal(
229 | stripColor(defaultFormatter({ messages: [] })),
230 | ''
231 | );
232 | t.end();
233 | });
234 |
235 | test('defaultFormatter with real sourcemaps', function(t) {
236 | var map = new sourceMap.SourceMapGenerator({ file: 'file.css' });
237 | map.addMapping({
238 | generated: { line: 2, column: 7 },
239 | source: 'file.original.css',
240 | original: { line: 102, column: 107 },
241 | });
242 |
243 | console.log(map instanceof sourceMap.SourceMapGenerator)
244 |
245 | var root = postcss.parse('.button { color: red; }', {
246 | from: 'file.css',
247 | map: { prev: map.toString() },
248 | });
249 |
250 | var message = { line: 2, column: 7, node: root.nodes[0], text: 'blargh', plugin: 'foo' };
251 |
252 | t.equal(
253 | stripColor(defaultFormatter({ messages: [message] })),
254 | '\n102:107\tblargh [foo]\n'
255 | );
256 | t.end();
257 | });
258 |
259 | var textlessMessages = [
260 | {
261 | type: 'warning',
262 | plugin: 'foo',
263 | },
264 | {
265 | type: 'dependency',
266 | plugin: 'bar',
267 | file: 'bar file',
268 | },
269 | ];
270 |
271 | var textlessMessagesOutput = '';
272 |
273 | test('defaultFormatter with messages without text property', function(t) {
274 | t.equal(
275 | stripColor(defaultFormatter({
276 | messages: textlessMessages,
277 | source: '',
278 | })),
279 | textlessMessagesOutput,
280 | 'basic'
281 | );
282 |
283 | t.end();
284 | });
285 |
--------------------------------------------------------------------------------
/test/index.js:
--------------------------------------------------------------------------------
1 | require('./formatter');
2 | require('./reporter');
3 |
--------------------------------------------------------------------------------
/test/lessIntegration.js:
--------------------------------------------------------------------------------
1 | var less = require('less');
2 | var postcss = require('postcss');
3 | var stylelint = require('stylelint');
4 | var reporter = require('..');
5 | var fs = require('fs');
6 | var path = require('path');
7 |
8 | var lessSource = path.join(__dirname, 'fixtures/less-bar.less');
9 |
10 | fs.readFile(lessSource, 'utf8', function(err, code) {
11 | if (err) throw err;
12 |
13 | var lessOptions = {
14 | sourceMap: { sourceMapFileInline: true },
15 | paths: [path.join(__dirname, 'fixtures')],
16 | filename: lessSource,
17 | };
18 | less.render(code, lessOptions).then(function(output) {
19 | return postcss()
20 | .use(stylelint({ rules: { 'selector-no-id': true } }))
21 | .use(reporter())
22 | .process(output.css, { from: lessSource })
23 | }).catch(function(err) { console.log(err.stack); });
24 | });
25 |
--------------------------------------------------------------------------------
/test/reporter.js:
--------------------------------------------------------------------------------
1 | var test = require('tape');
2 | var reporter = require('../lib/reporter');
3 |
4 | var mockSimpleResult = {
5 | messages: [
6 | {
7 | type: 'warning',
8 | plugin: 'foo',
9 | text: 'foo warning',
10 | },
11 | {
12 | type: 'warning',
13 | plugin: 'bar',
14 | text: 'bar warning',
15 | },
16 | {
17 | type: 'warning',
18 | plugin: 'baz',
19 | text: 'baz warning',
20 | },
21 | {
22 | type: 'warning',
23 | plugin: 'baz',
24 | text: 'baz error',
25 | },
26 | ],
27 | root: {
28 | source: {
29 | input: {
30 | id: '',
31 | },
32 | },
33 | },
34 | };
35 |
36 | function clone(toClone) {
37 | return JSON.parse(JSON.stringify(toClone));
38 | }
39 |
40 | test('reporter with simple mock result', function(t) {
41 | var tracker = {};
42 | var testReporter = reporter({
43 | formatter: mockFormatter(tracker),
44 | });
45 | t.doesNotThrow(function() {
46 | testReporter.OnceExit(null, { result: mockSimpleResult });
47 | });
48 | t.deepEqual(tracker.messages, mockSimpleResult.messages);
49 | t.equal(tracker.source, '');
50 | t.end();
51 | });
52 |
53 | var mockResultContainingNonWarningMessage = {
54 | messages: [
55 | {
56 | type: 'dependency',
57 | plugin: 'foo',
58 | },
59 | {
60 | type: 'warning',
61 | plugin: 'foo',
62 | text: 'foo warning',
63 | },
64 | {
65 | type: 'error',
66 | plugin: 'foo',
67 | text: 'foo error',
68 | },
69 | ],
70 | root: {
71 | source: {
72 | input: {
73 | id: '',
74 | },
75 | },
76 | },
77 | };
78 |
79 | test('reporter with simple mock result containing non warning typed message', function(t) {
80 | var tracker = {};
81 | var expectedMessages = [
82 | {
83 | type: 'warning',
84 | plugin: 'foo',
85 | text: 'foo warning',
86 | },
87 | {
88 | type: 'error',
89 | plugin: 'foo',
90 | text: 'foo error',
91 | },
92 | ];
93 | var testReporter = reporter({
94 | formatter: mockFormatter(tracker),
95 | });
96 | t.throws(function() {
97 | testReporter.OnceExit(null, {
98 | result: mockResultContainingNonWarningMessage,
99 | });
100 | });
101 | t.deepEqual(tracker.messages, expectedMessages);
102 | t.equal(tracker.source, '');
103 | t.end();
104 | });
105 |
106 | test('reporter with simple mock result and whitelisted plugins', function(t) {
107 | var tracker = {};
108 | var testReporter = reporter({
109 | formatter: mockFormatter(tracker),
110 | plugins: ['foo', 'bar'],
111 | });
112 | testReporter.OnceExit(null, { result: mockSimpleResult });
113 | t.deepEqual(
114 | tracker.messages,
115 | [
116 | {
117 | type: 'warning',
118 | plugin: 'foo',
119 | text: 'foo warning',
120 | },
121 | {
122 | type: 'warning',
123 | plugin: 'bar',
124 | text: 'bar warning',
125 | },
126 | ]
127 | );
128 | t.equal(tracker.source, '');
129 | t.end();
130 | });
131 |
132 | test('reporter with simple mock result and blacklisted plugins', function(t) {
133 | var tracker = {};
134 | var testReporter = reporter({
135 | formatter: mockFormatter(tracker),
136 | plugins: ['!foo', '!baz'],
137 | });
138 | testReporter.OnceExit(null, { result: mockSimpleResult });
139 | t.deepEqual(
140 | tracker.messages,
141 | [
142 | {
143 | type: 'warning',
144 | plugin: 'bar',
145 | text: 'bar warning',
146 | },
147 | ]
148 | );
149 | t.end();
150 | });
151 |
152 | test('reporter with simple mock result and function-filtered plugins', function(t) {
153 | var cloneResult = clone(mockSimpleResult);
154 | cloneResult.messages.push(
155 | {
156 | type: 'error',
157 | plugin: 'baz',
158 | text: 'baz error',
159 | }
160 | );
161 | var tracker = {};
162 | var testReporter = reporter({
163 | formatter: mockFormatter(tracker),
164 | filter: function(message) { return message.type === 'error'; },
165 | });
166 | t.throws(function() {
167 | testReporter.OnceExit(null, {
168 | result: cloneResult,
169 | });
170 | });
171 | t.deepEqual(
172 | tracker.messages,
173 | [
174 | {
175 | type: 'error',
176 | plugin: 'baz',
177 | text: 'baz error',
178 | },
179 | ]
180 | );
181 | t.end();
182 | });
183 |
184 | test('reporter with simple mock result and empty plugins', function(t) {
185 | var tracker = {};
186 | var testReporter = reporter({
187 | formatter: mockFormatter(tracker),
188 | plugins: [],
189 | });
190 | testReporter.OnceExit(null, { result: mockSimpleResult });
191 | t.deepEqual(
192 | tracker.messages,
193 | mockSimpleResult.messages
194 | );
195 | t.end();
196 | });
197 |
198 | test('reporter with simple mock result and clearReportedMessages', function(t) {
199 | var cloneResult = clone(mockSimpleResult);
200 | var tracker = {};
201 | var testReporter = reporter({
202 | formatter: mockFormatter(tracker),
203 | clearReportedMessages: true,
204 | });
205 | testReporter.OnceExit(null, { result: cloneResult });
206 | t.deepEqual(cloneResult.messages, []);
207 | t.end();
208 | });
209 |
210 | test('reporter with simple mock result, whitelisted plugins and clearReportedMessages', function(t) {
211 | var cloneResult = clone(mockSimpleResult);
212 | var tracker = {};
213 | var testReporter = reporter({
214 | formatter: mockFormatter(tracker),
215 | plugins: ['baz', 'foo'],
216 | clearReportedMessages: true,
217 | });
218 | testReporter.OnceExit(null, { result: cloneResult });
219 | t.deepEqual(
220 | cloneResult.messages,
221 | [
222 | {
223 | type: 'warning',
224 | plugin: 'bar',
225 | text: 'bar warning',
226 | },
227 | ]
228 | );
229 | t.end();
230 | });
231 |
232 | test('reporter with simple mock result and clearAllMessages', function(t) {
233 | var cloneResult = clone(mockSimpleResult);
234 | var tracker = {};
235 | var testReporter = reporter({
236 | formatter: mockFormatter(tracker),
237 | clearAllMessages: true,
238 | });
239 | testReporter.OnceExit(null, { result: cloneResult });
240 | t.deepEqual(cloneResult.messages, []);
241 | t.end();
242 | });
243 |
244 | test('reporter with simple mock result, clearAllMessages and whitelisted plugins', function(t) {
245 | var cloneResult = clone(mockSimpleResult);
246 | var tracker = {};
247 | var testReporter = reporter({
248 | formatter: mockFormatter(tracker),
249 | plugins: ['foo'],
250 | clearAllMessages: true,
251 | });
252 | testReporter.OnceExit(null, { result: cloneResult });
253 | t.deepEqual(
254 | cloneResult.messages,
255 | [
256 | {
257 | type: 'warning',
258 | plugin: 'bar',
259 | text: 'bar warning',
260 | },
261 | {
262 | type: 'warning',
263 | plugin: 'baz',
264 | text: 'baz warning',
265 | },
266 | {
267 | type: 'warning',
268 | plugin: 'baz',
269 | text: 'baz error',
270 | },
271 | ]
272 | );
273 | t.end();
274 | });
275 |
276 | test('reporter with simple mock result and throwError', function(t) {
277 | var cloneResult = clone(mockSimpleResult);
278 | var tracker = {};
279 | var testReporter = reporter({
280 | formatter: mockFormatter(tracker),
281 | throwError: true,
282 | });
283 | t.throws(function() {
284 | testReporter.OnceExit(null, { result: cloneResult });
285 | });
286 | t.end();
287 | });
288 |
289 | function mockFormatter(tracker) {
290 | return function(obj) {
291 | tracker.messages = obj.messages;
292 | tracker.source = obj.source;
293 | return 'bogus report';
294 | };
295 | }
296 |
297 | var mockResultFromFile = {
298 | messages: [
299 | {
300 | type: 'warning',
301 | plugin: 'baz',
302 | text: 'baz warning',
303 | },
304 | ],
305 | root: {
306 | source: {
307 | input: {
308 | file: '/path/to/file.css',
309 | },
310 | },
311 | },
312 | };
313 |
314 | test('reporter with mock containing file source', function(t) {
315 | var tracker = {};
316 | var testReporter = reporter({
317 | formatter: mockFormatter(tracker),
318 | });
319 | testReporter.OnceExit(null, { result: mockResultFromFile });
320 | t.equal(tracker.source, '/path/to/file.css');
321 | t.end();
322 | })
323 |
324 | var mockResultNoSource = {
325 | messages: [
326 | {
327 | type: 'warning',
328 | plugin: 'baz',
329 | text: 'baz warning',
330 | },
331 | ],
332 | root: {},
333 | };
334 |
335 | test('reporter with mock containing no source', function(t) {
336 | var tracker = {};
337 | var testReporter = reporter({
338 | formatter: mockFormatter(tracker),
339 | });
340 | testReporter.OnceExit(null, { result: mockResultNoSource });
341 | t.equal(tracker.source, '');
342 | t.end();
343 | })
344 |
345 | var mockWarningNodeResult = {
346 | messages: [
347 | {
348 | type: 'warning',
349 | plugin: 'foo',
350 | text: 'foo warning',
351 | node: {
352 | source: {
353 | input: {
354 | file: 'foo.css',
355 | },
356 | },
357 | },
358 | },
359 | {
360 | type: 'warning',
361 | plugin: 'baz',
362 | text: 'baz warning',
363 | node: {
364 | source: {
365 | input: {
366 | file: 'bar.css',
367 | },
368 | },
369 | },
370 | },
371 | {
372 | type: 'error',
373 | plugin: 'pat',
374 | text: 'pat error',
375 | node: {
376 | source: {
377 | input: {
378 | id: '',
379 | },
380 | },
381 | },
382 | },
383 | {
384 | type: 'warning',
385 | plugin: 'bar',
386 | text: 'bar warning',
387 | node: {
388 | source: {
389 | input: {
390 | file: 'foo.css',
391 | },
392 | },
393 | },
394 | },
395 | {
396 | type: 'error',
397 | plugin: 'hoo',
398 | text: 'hoo error',
399 | node: {
400 | source: {
401 | input: {
402 | id: '',
403 | },
404 | },
405 | },
406 | },
407 | {
408 | type: 'error',
409 | plugin: 'hah',
410 | text: 'hah error',
411 | },
412 | ],
413 | root: {
414 | source: {
415 | input: {
416 | id: '',
417 | },
418 | },
419 | },
420 | };
421 |
422 | function mockMultiSourceFormatter(tracker) {
423 | return function(obj) {
424 | tracker.push(obj);
425 | return 'bogus report';
426 | };
427 | }
428 |
429 | test('reporter with warnings that messages that each have nodes', function(t) {
430 | var tracker = [];
431 | var testReporter = reporter({
432 | formatter: mockMultiSourceFormatter(tracker),
433 | });
434 | t.throws(function() {
435 | testReporter.OnceExit(null, {
436 | result: mockWarningNodeResult,
437 | });
438 | });
439 | t.deepEqual(tracker, [
440 | {
441 | source: 'foo.css',
442 | messages: [
443 | {
444 | type: 'warning',
445 | plugin: 'foo',
446 | text: 'foo warning',
447 | node: {
448 | source: {
449 | input: {
450 | file: 'foo.css',
451 | },
452 | },
453 | },
454 | },
455 | {
456 | type: 'warning',
457 | plugin: 'bar',
458 | text: 'bar warning',
459 | node: {
460 | source: {
461 | input: {
462 | file: 'foo.css',
463 | },
464 | },
465 | },
466 | },
467 | ],
468 | },
469 | {
470 | source: 'bar.css',
471 | messages: [
472 | {
473 | type: 'warning',
474 | plugin: 'baz',
475 | text: 'baz warning',
476 | node: {
477 | source: {
478 | input: {
479 | file: 'bar.css',
480 | },
481 | },
482 | },
483 | },
484 | ],
485 | },
486 | {
487 | source: '',
488 | messages: [
489 | {
490 | type: 'error',
491 | plugin: 'pat',
492 | text: 'pat error',
493 | node: {
494 | source: {
495 | input: {
496 | id: '',
497 | },
498 | },
499 | },
500 | },
501 | {
502 | type: 'error',
503 | plugin: 'hoo',
504 | text: 'hoo error',
505 | node: {
506 | source: {
507 | input: {
508 | id: '',
509 | },
510 | },
511 | },
512 | },
513 | ],
514 | },
515 | {
516 | source: '',
517 | messages: [
518 | {
519 | type: 'error',
520 | plugin: 'hah',
521 | text: 'hah error',
522 | },
523 | ],
524 | },
525 | ]);
526 | t.end();
527 | });
528 |
--------------------------------------------------------------------------------
/test/visual.js:
--------------------------------------------------------------------------------
1 | var postcss = require('postcss');
2 | var stylelint = require('stylelint');
3 | var reporter = require('..');
4 | var fs = require('fs');
5 | var sourceMap = require('source-map');
6 |
7 | var reporterOptions = {
8 | // positionless: 'last',
9 | // sortByPosition: true,
10 | // noIcon: true,
11 | // noPlugin: true,
12 | // plugins: ['stylelint'],
13 | };
14 |
15 | fs.readFile('test/fixtures/forVisual.css', { encoding: 'utf8' }, function(err, data) {
16 | if (err) throw err;
17 |
18 | var processOptions = {
19 | from: 'test/fixtures/forVisual.css',
20 | map: { prev: createSourceMap() },
21 | };
22 |
23 | postcss()
24 | .use(stylelint({
25 | rules: {
26 | 'block-opening-brace-newline-after': 'always',
27 | 'declaration-colon-space-after': 'always',
28 | 'length-zero-no-unit': true,
29 | 'indentation': 'tab',
30 | },
31 | }))
32 | .use(reporter(reporterOptions))
33 | .process(data, processOptions)
34 | .then(function() {
35 | console.log('There\'s your visual confirmation that it works.');
36 | })
37 | .catch(function(error) {
38 | console.log(error.stack);
39 | });
40 | });
41 |
42 | function createSourceMap() {
43 | var map = new sourceMap.SourceMapGenerator({ file: 'forVisual.css' });
44 | map.addMapping({
45 | generated: { line: 2, column: 7 },
46 | source: 'forVisual.original.css',
47 | original: { line: 102, column: 107 },
48 | });
49 | return map.toString();
50 | }
51 |
--------------------------------------------------------------------------------